Sa mundo, araw-araw higit pa at mas sikat sa mga robotic cleaner. Salamat sa mga maliliit na katulong, ang bahay ay nagiging mas malinis, at ang mas kaunting pagsisikap ay inilalagay sa paglilinis. Mayroong maraming iba't ibang mga pagbabago ng mga robot, lahat sila ay naiiba sa pag-andar, laki at iba pang mga parameter.
Partikular, isasaalang-alang ng artikulong ito ang isang halimbawa ng kung paano
gawin mo mismo Maaari kang gumawa ng isang simpleng robot, na mismo ay mag-vacuum sa silid kung kinakailangan. Ang magsusupil ay ginagamit dito bilang "utak"
Arduino.
Mga materyales at tool para sa paggawa ng robot:- board na kumokontrol sa pagpapatakbo ng mga makina (Arduino motor shield);
- Lupon ng Arduino;
- dalawang motor na may mga gears (motor sa 3 volts at isang bilis ng pag-ikot ng halos 100 rpm.);
- mga gulong (maaaring gawin ng mga lata ng aluminyo;
- isang palamigan mula sa isang suplay ng kuryente sa computer (posible kapwa sa 5V at 12V);
- 5V power supply (baterya);
- mga wire at plate para sa pag-install ng mga elemento ng radyo;
- upang gawin ang kaso kakailanganin mo ang isang lalagyan ng plastik;
- Ang isa pang maliit na lalagyan para sa paglikha ng isang basurang basura;
- mainit na pandikit;
- magneto;
- karton.
Ang proseso ng pagmamanupaktura ng robot:
Unang hakbang. Bahagi ng software ng robot at sketsa:
Ang puso ng robot ay ang Arduino controller. Upang ma-program ito kakailanganin mo ang isang computer at espesyal na software.
Upang i-download ang sketch sa board, kakailanganin mo ang programa ng Arduino IDE. Sa ibaba maaari mong kunin ang code ng programa ng robot at makita ang pangunahing circuit.
/*
Program para sa pagkontrol ng isang robot na may dalawang motor.
Lumiko ang robot kapag binabago ng motorsiklo ang kanilang bilis at direksyon.
Ang mga front ng mga bumpers sa kaliwa at kanang panig ay nakakakita ng mga hadlang.
Ang mga ultrasonic sonars ay maaaring konektado sa mga pag-input ng analog (nasubok sa LV-MaxSonar-EZ1):
- ilagay ang mga pin sa array sonarPins sa sumusunod na pagkakasunud-sunod: kaliwa, kanan, harap, iba pa ..
Mga halimbawa:
1. lamang sa kaliwa at kanang sonars na konektado sa mga pin 2 at 3: sonarPins [] = {2,3}
2. kaliwa, kanan at harap sonars na konektado sa mga pin 2, 3 at 5: sonarPins [] = {2,3,5}
3. lamang sa harap sonar na konektado sa pin 5: sonarPins [] = {-1, -1.5}
4. naiwan lamang ang sonar na nakakonekta sa pin 2: sonarPins [] = {2}
5. tanging tama sonar na nakakonekta sa mga pin 3: sonarPins [] = {-1,3}
6.5 sonars na konektado sa mga pin 1,2,3,4,5: sonarPins [] = {1,2,3,4,5}
Ang motor na kalasag ay ginagamit upang magpatakbo ng mga motor.
*/
const int Baud = 9600; // bilis ng UART port
// Mga katangian ng Sonar
int sonarPins [] = {1, 2}; // Analog Pin Mga Num sa sonar sensor Pin AN
const long MinLeftDistance = 20; // Pinakamaliit na pinapayagan na kaliwang distansya
const mahaba MinRightDistance = 20; // Minimum na pinapayagan na tamang distansya
const mahaba MinFrontDistance = 15; // Minimum na pinapayagan ang distansya sa harap
const int SamplesAmount = 15; // higit pang mga halimbawa - mas maayos na pagsukat at mas malaking lag
const int SonarDisplayFrequency = 10; // Ipakita lamang ang isa sa mga linyang ito - hindi lahat
int sonarDisplayFrequencyCount = 0;
const long Factor = 2.54 / 2;
mahahabang sampol [sizeof (sonarPins)] [SamplesAmount];
int sampleIndex [sizeof (sonarPins)];
// kanang bahagi
const int pinRightMotorDirection = 4; // ito ay maaaring mamarkahan sa kalasag ng motor bilang "DIR A"
const int pinRightMotorSpeed = 3; // ito ay maaaring markahan sa kalasag ng motor bilang "PWM A"
const int pinRightBumper = 2; // kung saan konektado ang tamang bumper
// kaliwang bahagi
const int pinLeftMotorDirection = 7; // ito ay maaaring mamarkahan sa kalasag ng motor bilang "DIR B"
const int pinLeftMotorSpeed = 6; // maaari itong markahan sa kalasag ng motor bilang "PWM B"
const int pinLeftBumper = 8; // kung saan konektado ang tamang bumper
// uncomment sa susunod na 2 linya kung pumutok ang Motor Shield
// const int pinRightMotorBreak = PUT_BREAK_PIN_HERE; // ito ay maaaring mamarkahan sa kalasag ng motor bilang "BREAKE A"
// const int pinLeftMotorBreak = PUT_BREAK_PIN_HERE; // ito ay maaaring mamarkahan sa kalasag ng motor bilang "BREAKE B"
// mga patlang
const int turnRightTimeout = 100;
const int turnLeftTimeout = 150;
// set sa counter kung gaano katagal ang isang motor na tumatakbo pabalik: N / 10 (sa millisecond)
int countDownWhileMovingToRight;
int countDownWhileMovingToLeft;
// Initialization
walang pag-setup () {
Serial.begin (Baud);
initPins ();
// uncomment sa susunod na 4 na linya kung may pahinga ang Motor Shield
// pinMode (pinLeftMotorBreak, OUTPUT);
// pinMode (pinRightMotorBreak, OUTPUT);
// digitalWrite (pinLeftMotorBreak, LOW); // patayin ang mga break
// digitalWrite (pinRightMotorBreak, LOW); // patayin ang mga break
runRightMotorBago ();
runLeftMotorBago ();
startMotors ();
}
// Main loop
walang bisa na loop () {
i-verifyAndSetRightSide ();
i-verifyAndSetLeftSide ();
processRightSide ();
prosesoLeftSide ();
pagkaantala (10); // ulitin ang bawat 10 millisecond
}
//---------------------------------------------------
walang bisa initPins () {
pinMode (pinRightMotorDirection, OUTPUT);
pinMode (pinRightMotorSpeed, OUTPUT);
pinMode (pinRightBumper, INPUT);
pinMode (pinLeftMotorDirection, OUTPUT);
pinMode (pinLeftMotorSpeed, OUTPUT);
pinMode (pinLeftBumper, INPUT);
para sa (int i = 0; i pinMode (sonarPins [i], INPUT);
}
walang bisa pagsisimulaMotors () {
setMotorSpeed (pinRightMotorSpeed, 255);
setMotorSpeed (pinLeftMotorSpeed, 255);
}
walang bisa maghintayWhileAnyBumperIsPressed () {
habang (tsekBumperIsNotPressed (pinRightBumper)
&& checkBumperIsNotPressed (pinLeftBumper)) {
pagkaantala (20); // suriin ang bawat 20 millisecond
}
}
walang bisa na prosesoRightSide () {
kung (countDownWhileMovingToRight MinFrontDistance) // tseke kung hindi naabot ang minimum na pinapayagan na distansya sa unahan
bumalik
kung (checkCounterIsNotSet (countDownWhileMovingToLeft)) // kung hindi pa binibilang ang counter
runLeftMotorBackward (); // patakbuhin ang kanang motor paatras
countDownWhileMovingToLeft = turnLeftTimeout; // itakda ang counter sa maximum na halaga upang simulan itong mabilang
}
bool checkCounterIsNotSet (int counter) {
return counter = SamplesAmount)
sampleIndex [pinIndex] = 0;
mga halimbawa [pinIndex] [sampleIndex [pinIndex]] = halaga;
bumalik totoo;
}
mahaba ang pagkalkulaAvarageDistance (int pinIndex) {
mahabang average = 0;
para sa (int i = 0; i average + = halimbawa [pinIndex] [i];
average na bumalik / SamplesAmount;
}
Hakbang Dalawang Paghahanda ng mga pangunahing elemento ng robot
Ginagamit ang karton bilang isang batayan para sa pag-fasten ng lahat ng mga sangkap ng robot, kabilang ang baterya, mga control board at motors.
Ang turbine ay dapat na maayos na nakadikit o kung hindi man ay naayos sa isang maliit na lalagyan ng plastik kung saan gumawa ng isang butas para sa pagsipsip ng dumi. Kasunod nito, ang disenyo na ito ay nakadikit sa base ng karton. Bilang karagdagan, ang lalagyan ay dapat magkaroon ng karagdagang butas kung saan lalabas ang hangin. Dapat mayroong isang filter, nagpasya ang may-akda na gumamit ng sintetiko na tela para sa mga layuning ito.
Sa susunod na yugto, ang palamigan ay kailangang nakadikit ng mga servo, at pagkatapos ang disenyo na ito ay naka-install sa isang base ng karton.
Hakbang Tatlong Gumagawa kami ng mga gulong para sa robot
Upang gawin ang mga gulong kailangan mong kumuha ng mga lata ng aluminyo at putulin ang itaas at mas mababang mga bahagi mula sa kanila. Pagkatapos ang mga elementong ito ay nakadikit nang magkasama. Ngayon ay nananatili lamang ito upang maayos na ilakip ang mga gulong sa mga servomotor na may mainit na matunaw na malagkit. Mahalagang maunawaan na ang mga gulong ay dapat na maayos na naayos sa gitna ng mga shaft ng servos. Kung hindi man ang robot ay magmaneho ng baluktot, at gagamit ng lakas.
Hakbang Apat Ang panghuling proseso ng pagpupulong ng robot
Matapos mai-install ang baterya at ang lahat ng mga elemento ng robot ay konektado, nananatili itong ilagay ang istraktura sa isang matibay na kaso. Ang isang malaking lalagyan ng plastik ay mahusay para sa mga layuning ito. Una sa lahat, ang mga butas ay dapat gawin sa ilong ng robot ng katawan, kung saan ang mga contact ay magiging output na magbibigay ng signal elektronika nang bumangga ang robot ng isang balakid.
Upang ang kaso ay mabilis at madaling matanggal, ang mga magnet ay ginagamit upang ayusin ito, sa kasong ito mayroong walong sa kanila. Ang mga magneto ay nakadikit sa loob ng vacuum cleaner at sa lalagyan mismo, 4 na piraso bawat isa.
Iyon lang. Ngayon ang robot ay natipon, at maaari itong masubukan sa pagsasanay. Sa kabila ng katotohanan na ang robot ay hindi magagawang muling magkarga at may isang medyo limitadong kakayahan sa mga tuntunin ng pag-navigate, sa kalahating oras ay malilinis nito ang basura sa kusina o maliit na silid. Ang bentahe ng robot ay ang lahat ng mga sangkap ay madaling matagpuan at hindi sila masyadong mahal. Walang duda gawang bahay Maaari mong pinuhin sa pamamagitan ng pagdaragdag ng mga bagong sensor at iba pang mga elemento.