
Orodha ya maudhui:
2025 Mwandishi: John Day | [email protected]. Mwisho uliobadilishwa: 2025-01-23 15:11

Kikundi hicho kinaundwa na Wahandisi 2 wa Utengenezaji kutoka UCN, ambao walikuja na wazo nzuri ambalo tunachochewa kufanya na kukuza. Wazo linategemea bodi ya Arduino inayodhibiti mkono wa roboti. Bodi ya Arduino ni akili ya operesheni na kisha mshawishi wa operesheni, mkono wa Robotic, atafanya kile inachohitaji. Maelezo ya kina zaidi yatakuja baadaye.
Hatua ya 1: Vifaa

Mkono wa Robot:
Phantomx Pincher Robot Arm Kit Maek II (https://learn.trossenrobotics.com/38-interbotix-ro …….)
Programu ya roboti- https://www.arduino.cc/en/Main/OldSoftwareRelease ……. Kamera ya kugundua rangi:
Kamera ya Pixy ya CMUcam5 - (https://charmedlabs.com/default/pixy-cmucam5/)
Programu - PixyMon (https://cmucam.org/projects/cmucam5/wiki/Install_PixyMon_on_Windows_Vista_7_8)
Hatua ya 2: Usanidi wa Arduino

Unaweza kuona usanidi kwenye ubao hapa, ambayo ni rahisi sana.
Kushoto ni Ugavi wa Umeme.
Ya kati ni ya servo ya kwanza, ambayo baadaye imeunganishwa na servos zingine, servo na servo.
Ya chini ni mahali tunapodhibiti bodi kutoka kwa PC au Laptop, ambayo ina pembejeo la USB upande mwingine.
Hatua ya 3: Mpango wa Mwisho
||| PROGRAM |||
# pamoja
# pamoja na # pamoja na "pozi.h" # pamoja na // Pixy Library # pamoja
#fafanua POSECOUNT 5
BioloidController bioloid = BioloidController (1000000);
const int SERVOCOUNT = 5; id id; int pos; ID ya boolean Angalia; Run Run ya kuangalia;
kuanzisha batili () {pinMode (0, OUTPUT); ax12SetRegister2 (1, 32, 50);; 32 kuharakisha 100. // Anzisha vigezo id = 1; pos = 0; Angalia = 1; RunCheck = 0; // bandari wazi ya serial Serial.begin (9600); kuchelewesha (500); Serial.println ("# # # # # # # # #" #; Serial.println ("Mawasiliano ya Siri Imesimamishwa.");
// Angalia Lipo Voltage CheckVoltage ();
// Scan Servos, nafasi ya kurudi MoveTest (); Hoja ya Nyumbani (); MenyuOptions (); RunCheck = 1; }
kitanzi batili () {// soma sensor: int inByte = Serial.read ();
kubadili (inByte) {
kesi '1': MovePose1 (); kuvunja;
kesi '2': MovePose2 (); kuvunja; kesi '3': MovePose3 (); kuvunja;
kesi '4': MovePose4 (); kuvunja;
kesi '5': MoveHome (); kuvunja; kesi '6': Kunyakua (); kuvunja;
kesi '7': LEDTest (); kuvunja;
kesi '8': RelaxServos (); kuvunja; }}
batili CheckVoltage () {// subiri, kisha angalia voltage (usalama wa LiPO) voltage ya kuelea = (ax12GetRegister (1, AX_PRESENT_VOLTAGE, 1)) / 10.0; Serial.println ("# # # # # # # # # #" #; Serial.print ("Voltage ya Mfumo:"); Printa ya serial (voltage); Serial.println ("volts."); ikiwa (voltage 10.0) {Serial.println ("Viwango vya Voltage hutajwa."); } ikiwa (RunCheck == 1) {MenuOptions (); } Serial.println ("# # # # # # # # # #" #; }
batili MoveHome () {kuchelewesha (100); // ilipendekeza pause bioloid. Pakia (Nyumbani); // pakia pozi kutoka kwa FLASH, kwenye bafu inayofuata ya Poose bioloid.readPose (); // soma katika nafasi za sasa za servo kwa bafa ya Pera Serial.println ("# # # # # # # # # # #" #; Serial.println ("Kuhamisha servos kwenda kwa nafasi ya Nyumbani"); Serial.println ("# # # # # # # # # #" #; kuchelewesha (1000); bioloid.interpolateSetup (1000); // usanidi wa kuingiliana kutoka kwa sasa-> ijayo zaidi ya 1/2 kwa sekunde wakati (bioloid.interpolating> 0) {// fanya hivi wakati hatujafikia poolo yetu mpya ya bioloid.interpolateStep (); // songa servos, ikiwa ni lazima. kuchelewesha (3); } ikiwa (RunCheck == 1) {MenuOptions (); }}
batili MovePose1 () {kuchelewesha (100); // ilipendekeza pause bioloid. LoosePose (Pose1); // pakia pozi kutoka kwa FLASH, kwenye bafu inayofuata ya Poose bioloid.readPose (); // soma katika nafasi za sasa za servo kwa bafa ya Pera Serial.println ("# # # # # # # # # # # # # # # Serial.println ("Kuhamisha servos hadi nafasi ya 1"); Serial.println ("# # # # # # # # # #" #; kuchelewesha (1000); bioloid.interpolateSetup (1000); // usanidi wa kuingiliana kutoka kwa sasa-> ijayo zaidi ya 1/2 kwa sekunde wakati (bioloid.interpolating> 0) {// fanya hivi wakati hatujafikia poolo yetu mpya ya bioloid.interpolateStep (); // songa servos, ikiwa ni lazima. kuchelewesha (3); } Mpangilio wa Kuweka (3, 291); // weka nafasi ya ucheleweshaji wa pamoja wa 3 hadi '0' (100); // subiri kwa pamoja kusonga ikiwa (RunCheck == 1) {MenuOptions (); }}
batili MovePose2 () {kuchelewesha (100); // ilipendekeza pause bioloid. LoosePose (Pose2); // pakia pozi kutoka kwa FLASH, kwenye bafu inayofuata ya Poose bioloid.readPose (); // soma katika nafasi za sasa za servo kwa bafa ya Pera Serial.println ("# # # # # # # # # # #" #; Serial.println ("Kuhamisha servos kwenda nafasi ya 2"); Serial.println ("# # # # # # # # # #" #; kuchelewesha (1000); bioloid.interpolateSetup (1000); // usanidi wa kuingiliana kutoka kwa sasa-> ijayo zaidi ya 1/2 kwa sekunde wakati (bioloid.interpolating> 0) {// fanya hivi wakati hatujafikia poolo yetu mpya ya bioloid.interpolateStep (); // songa servos, ikiwa ni lazima. kuchelewesha (3); } Mpangilio wa Kuweka (3, 291); // weka nafasi ya ucheleweshaji wa pamoja wa 3 hadi '0' (100); // subiri kwa pamoja kusonga ikiwa (RunCheck == 1) {MenuOptions (); }} batili MovePose3 () {kuchelewesha (100); // ilipendekeza pause bioloid. LoosePose (Pose3); // pakia pozi kutoka kwa FLASH, kwenye bafu inayofuata ya Poose bioloid.readPose (); // soma katika nafasi za sasa za servo kwa bafa ya Pera Serial.println ("# # # # # # # # # # # # # # # Serial.println ("Kuhamisha servos hadi nafasi ya 3"); Serial.println ("# # # # # # # # # #" #; kuchelewesha (1000); bioloid.interpolateSetup (1000); // usanidi wa kuingiliana kutoka kwa sasa-> ijayo zaidi ya 1/2 kwa sekunde wakati (bioloid.interpolating> 0) {// fanya hivi wakati hatujafikia poolo yetu mpya ya bioloid.interpolateStep (); // songa servos, ikiwa ni lazima. kuchelewesha (3); } Mpangilio wa Kuweka (3, 291); // weka nafasi ya ucheleweshaji wa pamoja wa 3 hadi '0' (100); // subiri kwa pamoja kusonga ikiwa (RunCheck == 1) {MenuOptions (); }}
batili MovePose4 () {kuchelewesha (100); // ilipendekeza pause bioloid. LoosePose (Pose4); // pakia pozi kutoka kwa FLASH, kwenye bafu inayofuata ya Poose bioloid.readPose (); // soma katika nafasi za sasa za servo kwa bafa ya Pera Serial.println ("# # # # # # # # # # # # # # # Serial.println ("Kuhamisha servos hadi nafasi ya 4"); Serial.println ("# # # # # # # # #" #; kuchelewesha (1000); bioloid.interpolateSetup (1000); // usanidi wa kuingiliana kutoka kwa sasa-> ijayo zaidi ya 1/2 kwa sekunde wakati (bioloid.interpolating> 0) {// fanya hivi wakati hatujafikia poolo yetu mpya ya bioloid.interpolateStep (); // songa servos, ikiwa ni lazima. kuchelewesha (3); } Mpangilio wa Kuweka (3, 291); // weka nafasi ya ucheleweshaji wa pamoja wa 3 hadi '0' (100); // subiri kwa pamoja kusonga ikiwa (RunCheck == 1) {MenuOptions (); }}
batili MoveTest () {Serial.println ("# # # # # # # # # # # #" #; Serial.println ("Kuanzisha Jaribio la Ishara ya Harakati"); Serial.println ("# # # # # # # # #" #; kuchelewesha (500); id = 1; pos = 512; wakati (id <= SERVOCOUNT) {Serial.print ("Kusonga Kitambulisho cha Servo:"); Serial.println (id);
wakati (pos> = 312) {SetPosition (id, pos); pos = pos--; kuchelewesha (10); }
wakati (pos <= 512) {SetPosition (id, pos); pos = pos ++; kuchelewesha (10); }
// iterate hadi ijayo servo ID id = id ++;
} ikiwa (RunCheck == 1) {MenuOptions (); }}
batili MenyuOptions () {Serial.println ("# # # # # # # # # Serial.println ("Tafadhali ingiza chaguo 1-5 ili kuendesha majaribio ya kibinafsi tena."); Serial.println ("1) Nafasi ya 1"); Serial.println ("2) Nafasi ya 2"); Serial.println ("3) Nafasi ya 3"); Serial.println ("4) Nafasi ya 4"); Serial.println ("5) Nafasi ya Nyumbani"); Serial.println ("6) Angalia Voltage ya Mfumo"); Serial.println ("7) Fanya Mtihani wa LED"); Serial.println ("8) Pumzika Servos"); Serial.println ("# # # # # # # # #" #; }
utupu RelaxServos () {id = 1; Serial.println ("# # # # # # # # # #" #; Serial.println ("Kupumzika Servos."); Serial.println ("# # # # # # # # # #" #; wakati (id <= SERVOCOUNT) {Pumzika (id); id = (id ++)% SERVOCOUNT; kuchelewesha (50); } ikiwa (RunCheck == 1) {MenuOptions (); }}
Tupu ya LEDTest () {id = 1; Serial.println ("# # # # # # # # # #" #; Serial.println ("Running LED Test"); Serial.println ("# # # # # # # # # #" #; wakati (id <= SERVOCOUNT) {ax12SetRegister (id, 25, 1); Serial.print ("LED ON - Kitambulisho cha Servo:"); Serial.println (id); kuchelewesha (3000); ax12SetRegister (id, 25, 0); Serial.print ("LED OFF - Kitambulisho cha Servo:"); Serial.println (id); kuchelewesha (3000); id = id ++; } ikiwa (RunCheck == 1) {MenuOptions (); }}
Kunyakua batili () {SetPosition (5, 800); // weka nafasi ya ucheleweshaji wa pamoja wa 1 hadi '0' (100); // subiri kwa pamoja kusonga
}
Tumeweka mpango wetu kwenye mpango wa wazalishaji wa PincherTest na viboreshaji kadhaa katika hali ya kuweka nafasi. Tulitumia pozi.h kwa roboti kuwa na nafasi kwenye kumbukumbu. Kwanza tulijaribu kuunda mkono wetu wa kucheza na Pixycam kuwa otomatiki, lakini kwa sababu ya shida nyepesi na ndogo za skrini, hiyo haikuweza kutokea. Roboti ina nafasi ya msingi ya nyumbani, baada ya kupakia programu hiyo, itajaribu servos zote zinazopatikana kwenye roboti. Tumeweka pozi kwa vifungo 1-4, kwa hivyo itakuwa rahisi kukumbuka. Jisikie huru kutumia programu.
Hatua ya 4: Mwongozo wa Video
Hatua ya 5: Hitimisho
Kwa kumalizia, roboti ni mradi mdogo wa kufurahisha kwetu na wizi wa kufurahisha kucheza karibu na kujaribu. Ninakuhimiza ujaribu na uibadilishe pia.
Ilipendekeza:
Uuzaji-mkono wa kuchekesha Villain ya Vipengee vya Elektroniki vya Bodi ya Mzunguko: Hatua 7

Uuzaji-mkono wa kuchekesha wa Villain wa Vipengee vya Bodi ya Mzunguko wa chakavu: Bodi za mzunguko wa elektroniki (kompyuta za zamani au vifaa vya nyumbani chakavu) chuma cha kutengeneza, kibano cha solder, koleo, mkasi
Vito vya Pendant vya Pendant vya Umeme wa jua vya jua: Hatua 11 (na Picha)

Vito vya Pendant vya Pendant vya Moyo wa jua: Hii inaweza kufundishwa ni kwa moyo unaotumiwa na jua na mwangaza wa nyekundu wa LED. Inapima 2 " na 1.25 ", pamoja na kichupo cha USB. Ina shimo moja kupitia juu ya ubao, na kufanya kunyongwa iwe rahisi. Vaa kama mkufu, vipuli, dhamana kwenye pini
Vichungi vya kupita vya juu na vya kati vya LED: Hatua 4

Vichungi vya kupita vya juu na vya kati vya LED: Tuliunda vichungi vya kupita vya juu na vya kati ili kusababisha LED kung'aa na kufifia kulingana na mzunguko uliowekwa kwenye mzunguko. Wakati masafa ya juu yamewekwa kwenye mzunguko, ni LED tu ya kijani itakayowaka. Wakati mzunguko umewekwa kwenye mzunguko i
Pedi nyeti za Shinikizo la kucheza (kwa Viwanja vya kuchezea vya Dijiti - na Zaidi): Hatua 11 (na Picha)

Pedi nyeti za Shinikizo la kucheza (kwa Viwanja vya kuchezea vya Dijiti - na Zaidi): Hii ni ya Kufundishwa kukuonyesha jinsi ya kutengeneza pedi nyeti ya shinikizo - ambayo inaweza kutumika kuunda vitu vya kuchezea au michezo ya dijiti. Inaweza kutumiwa kama kontena nyeti la nguvu kubwa, na ingawa ni ya kucheza, inaweza kutumika kwa miradi mikubwa zaidi
VYOMBO VYA HABARI VYA BUUU VYA MABADILIKO VYA KIUME VYA 3D: Hatua 14 (zenye Picha)

DIY 3D iliyochapishwa wasemaji BLUETOOTH: Halo kila mtu, hii ni Maagizo yangu ya kwanza kabisa. Niliamua kuifanya iwe rahisi. Kwa hivyo katika mafunzo haya, nitawaonyesha nyinyi jinsi nilivyotengeneza spika hii rahisi na rahisi ya Bluetooth ambayo kila mtu angeweza kutengeneza kwa urahisi.Mwili wa spika ni 3D pr