În lume, în fiecare zi din ce în ce mai popular printre curățătorii robotici. Datorită unor astfel de ajutoare mici, casa devine mult mai curată și se depun eforturi mai puține în curățare. Există o mulțime de modificări diferite ale roboților, toate diferă în funcționalitate, dimensiune și alți parametri.
Mai exact, acest articol va lua în considerare un exemplu despre cum
fă-o singur Puteți face un robot simplu, care în sine va aspira camera când este necesar. Controlerul este folosit aici ca „creier”
Arduino.
Materiale și instrumente pentru fabricarea robotului:- placa care controlează funcționarea motoarelor (scutul motorului Arduino);
- bord Arduino;
- două motoare cu angrenaje (motoare la 3 volți și o viteză de rotație de aproximativ 100 rpm.);
- roți (pot fi fabricate din cutii de aluminiu;
- un cooler de la o sursă de alimentare a calculatorului (posibil atât la 5V cât și la 12V);
- alimentare 5V (baterie);
- fire și placă pentru instalarea elementelor radio;
- pentru a face carcasa veți avea nevoie de un recipient de plastic;
- Un alt recipient mic pentru crearea unei coșuri de gunoi;
- lipici fierbinte;
- magneți;
- carton.
Procesul de fabricație al robotului:
Primul pas. Parte software a robotului și schiță:
Inima robotului este controlorul Arduino. Pentru a-l programa, veți avea nevoie de un computer și de un software special.
Pentru a descărca schița pe tablă, veți avea nevoie de programul Arduino IDE. Mai jos puteți lua codul programului robotului și puteți vedea circuitul principal.
/*
Program pentru controlul unui robot cu două motoare.
Robotul se transformă atunci când motoarele își schimbă viteza și direcția.
Barele frontale din partea stângă și din dreapta detectează obstacole.
Sunetele cu ultrasunete pot fi conectate la intrări analogice (testate pe LV-MaxSonar-EZ1):
- puneți știfturile în rândul sonarPins în ordinea următoare: stânga, dreapta, față, altele ..
Exemple:
1. numai sunete stânga și dreapta conectate la pinii 2 și 3: sonarPins [] = {2,3}
2. Sonars stânga, dreapta și față conectate la pinii 2, 3 și 5: sonarPins [] = {2,3,5}
3. numai sonar frontal conectat la pinul 5: sonarPins [] = {-1, -1,5}
4. doar sonar stânga conectat la pinul 2: sonarPins [] = {2}
5. doar sonar drept conectat la pinii 3: sonarPins [] = {-1,3}
6,5 sunete conectate la pinii 1,2,3,4,5: sonarPins [] = {1,2,3,4,5}
Scutul motorului este utilizat pentru rularea motoarelor.
*/
const int Baud = 9600; // Viteza portului UART
// Proprietăți sonore
int sonarPins [] = {1, 2}; // Numerele PIN analogice pentru senzorul sonar Pin AN
const long MinLeftDistance = 20; // Distanța minimă permisă la stânga
const long MinRightDistance = 20; // Distanța minimă permisă
const long MinFrontDistance = 15; // Distanța minimă admisă față
const int SamplesAmount = 15; // mai multe probe - măsurare mai lină și lag mai mare
const int SonarDisplayFrequency = 10; // afișează doar una dintre aceste linii - nu toate
int sonarDisplayFrequencyCount = 0;
const lung Factor = 2,54 / 2;
mostre lungi [sizeof (sonarPins)] [SamplesAmount];
int sampleIndex [sizeof (sonarPins)];
// partea dreapta
const int pinRightMotorDirection = 4; // acest lucru poate fi marcat pe scutul motorului drept "DIR A"
const int pinRightMotorSpeed = 3; // acest lucru poate fi marcat pe scutul motorului ca "PWM A"
const int pinRightBumper = 2; // unde este conectat bara de protecție dreapta
// partea stanga
const int pinLeftMotorDirection = 7; // acest lucru poate fi marcat pe scutul motorului drept "DIR B"
const int pinLeftMotorSpeed = 6; // acest lucru poate fi marcat pe scutul motorului ca "PWM B"
const int pinLeftBumper = 8; // unde este conectat bara de protecție dreapta
// dezacord următoarele 2 linii dacă Motor Shield are pauze
// const int pinRightMotorBreak = PUT_BREAK_PIN_HERE; // acest lucru poate fi marcat pe scutul motorului ca "BREAKE A"
// const int pinLeftMotorBreak = PUT_BREAK_PIN_HERE; // acest lucru poate fi marcat pe scutul motorului ca "BREAKE B"
// câmpuri
const int turnRightTimeout = 100;
const int turnLeftTimeout = 150;
// setează în contorizarea timpului în care un motor funcționează înapoi: N / 10 (în milisecunde)
int countDownWhileMovingToRight;
int countDownWhileMovingToLeft;
// Inițializare
void setup () {
Serial.begin (Baud);
initPins ();
// dezacord următoarele 4 linii dacă Motor Shield are pauze
// pinMode (pinLeftMotorBreak, OUTPUT);
// pinMode (pinRightMotorBreak, OUTPUT);
// digitalWrite (pinLeftMotorBreak, LOW); // opri pauzele
// digitalWrite (pinRightMotorBreak, LOW); // opri pauzele
runRightMotorForward ();
runLeftMotorForward ();
startMotors ();
}
// Bucla principală
void loop () {
verifyAndSetRightSide ();
verifyAndSetLeftSide ();
processRightSide ();
processLeftSide ();
întârziere (10); // repetați la fiecare 10 milisecunde
}
//---------------------------------------------------
void initPins () {
pinMode (pinRightMotorDirection, OUTPUT);
pinMode (pinRightMotorSpeed, OUTPUT);
pinMode (pinRightBumper, INPUT);
pinMode (pinLeftMotorDirection, OUTPUT);
pinMode (pinLeftMotorSpeed, OUTPUT);
pinMode (pinLeftBumper, INPUT);
for (int i = 0; i pinMode (sonarPins [i], INPUT);
}
void startMotors () {
setMotorSpeed (pinRightMotorSpeed, 255);
setMotorSpeed (pinLeftMotorSpeed, 255);
}
void waitWhileAnyBumperIsPressed () {
while (checkBumperIsNotPressed (pinRightBumper)
&& checkBumperIsNotPressed (pinLeftBumper)) {
întârziere (20); // verificați la fiecare 20 de milisecunde
}
}
void processRightSide () {
if (countDownWhileMovingToRight MinFrontDistance) // verifică dacă distanța minimă admisă nu este atinsă
return;
if (checkCounterIsNotSet (countDownWhileMovingToLeft)) // dacă contorul nu contează încă
runLeftMotorBackward (); // rulați motorul drept înapoi
countDownWhileMovingToLeft = turnLeftTimeout; // setați contorul la valoarea maximă pentru a-l începe să numere în jos
}
bool checkCounterIsNotSet (int counter) {
contor retur = SamplesAmount)
sampleIndex [pinIndex] = 0;
mostre [pinIndex] [sampleIndex [pinIndex]] = valoare;
întoarce-te adevărat;
}
lung calculAvarageDistance (int pinIndex) {
medie lungă = 0;
for (int i = 0; i medie + = mostre [pinIndex] [i];
rentabilitate medie / SamplesAmount;
}
Pasul doi Pregătirea elementelor de bază ale robotului
Cartonul este folosit ca bază pentru fixarea tuturor componentelor robotului, inclusiv bateria, plăcile de control și motoarele.
Turbina trebuie lipită corespunzător sau fixată altfel pe un recipient mic de plastic în care să facă o gaură pentru absorbția murdăriei. Ulterior, acest design este lipit de baza de carton. În plus, containerul trebuie să aibă o gaură suplimentară prin care va ieși aer. Ar trebui să existe un filtru, autorul a decis să folosească țesături sintetice în aceste scopuri.
La următoarea etapă, răcitorul trebuie să fie lipit cu servos, apoi acest design este instalat pe o bază de carton.
Pasul trei Facem roți pentru robot
Pentru a face roțile, trebuie să luați cutii de aluminiu și să tăiați părțile superioare și inferioare de la ele. Apoi aceste elemente sunt lipite între ele. Acum rămâne doar să atașați corect roțile la servomotoare cu adeziv topit la cald. Este important să înțelegeți că roțile trebuie fixate clar în centrul arborelor servosului. altfel robotul va conduce strâmb și va folosi energie.
Pasul patru Procesul final de asamblare a robotului
După ce bateria este instalată și toate elementele robotului sunt conectate, rămâne să plasați structura într-un caz rezistent. Un recipient mare de plastic este excelent în aceste scopuri. În primul rând, trebuie făcute găuri în nasul corpului robotului, prin intermediul căruia vor fi emise contacte care vor da un semnal electronică când robotul se ciocnește cu un obstacol.
Pentru ca cazul să poată fi îndepărtat rapid și ușor, se folosesc magneți pentru a-l repara, în acest caz există opt. Magneții sunt lipiți de interiorul aspiratorului și de recipientul în sine, câte 4 bucăți.
Aceasta este totul. Acum robotul este asamblat și poate fi încercat în practică. În ciuda faptului că robotul nu este capabil să se reîncarce singur și are o capacitate destul de limitată în ceea ce privește navigația, într-o jumătate de oră va putea curăța gunoiul din bucătărie sau camera mică. Avantajele robotului sunt că toate componentele pot fi găsite cu ușurință și nu sunt foarte scumpe. Fără îndoială home-made Puteți perfecționa adăugând senzori noi și alte elemente.