I verden blir hver dag mer og mer populær blant robotrensere. Takket være så små hjelpere blir huset mye renere, og mye mindre krefter blir lagt ned i rengjøring. Det er mange forskjellige endringer av roboter, de er forskjellige i funksjonalitet, størrelse og andre parametere.
Nærmere bestemt vil denne artikkelen vurdere et eksempel på hvordan
gjør det selv Du kan lage en enkel robot, som selv vil støvsuge rommet når det er nødvendig. Kontrolleren brukes her som "hjernen"
Arduino.
Materialer og verktøy for produksjon av roboten:- brett som kontrollerer driften av motorer (Arduino motorskjold);
- Arduino styre;
- to motorer med gir (motorer på 3 volt og en rotasjonshastighet på ca. 100 o / min.);
- hjul (kan være laget av aluminiumsbokser;
- en kjøligere fra datamaskinens strømforsyning (mulig både på 5V og 12V);
- 5V strømforsyning (batteri);
- ledninger og plate for installasjon av radioelementer;
- for å lage saken trenger du en plastbeholder;
- En annen liten beholder for å lage en søppelbøtte;
- varmt lim;
- magneter;
- papp.
Produksjonsprosessen til roboten:
Første trinn. Programvaredel av roboten og skissen:
Hjertet til roboten er Arduino-kontrolleren. For å programmere den trenger du en datamaskin og spesiell programvare.
For å laste ned skissen til brettet trenger du Arduino IDE-programmet. Nedenfor kan du ta programkoden til roboten og se hovedkretsen.
/*
Program for styring av en robot med to motorer.
Roboten snur når motorene endrer hastighet og retning.
Støtfangere foran på venstre og høyre side oppdager hindringer.
Ultrasoniske ekkolodd kan kobles til analoge innganger (testet på LV-MaxSonar-EZ1):
- legg pinner i rekke sonarPins i følgende rekkefølge: venstre, høyre, foran, andre ..
eksempler:
1. bare venstre og høyre ekkolodd koblet til pinne 2 og 3: sonarPins [] = {2,3}
2. ekkolodd til venstre, høyre og foran koblet til pinne 2, 3 og 5: sonarPins [] = {2,3,5}
3. bare ekkolodd foran koblet til pinne 5: sonarPins [] = {-1, -1.5}
4. bare venstre ekkolodd koblet til pinne 2: sonarPins [] = {2}
5. bare høyre ekkolodd koblet til pinner 3: sonarPins [] = {-1,3}
6,5 ekkolodder koblet til pinner 1,2,3,4,5: sonarPins [] = {1,2,3,4,5}
Motorskjerm brukes til å kjøre motorer.
*/
const int Baud = 9600; // UART-porthastighet
// Egenskaper for ekkolodd
int sonarPins [] = {1, 2}; // Analog Pin Nums to sonar sensor Pin AN
const lang MinLeftDistance = 20; // Minimum tillatt venstre avstand
const lang MinRightDistance = 20; // Minimum tillatt høyre avstand
const lang MinFrontDistance = 15; // Minimum tillatt frontavstand
const int SamplesAmount = 15; // flere prøver - jevnere måling og større etterslep
const int SonarDisplayFrequency = 10; // vis bare en av disse linjene - ikke alle
int sonarDisplayFrequencyCount = 0;
const long Factor = 2,54 / 2;
lange prøver [sizeof (sonarPins)] [SamplesAmount];
int sampleIndex [sizeof (sonarPins)];
// høyre side
const int pinRightMotorDirection = 4; // dette kan merkes på motorskjerm som "DIR A"
const int pinRightMotorSpeed = 3; // dette kan merkes på motorskjerm som "PWM A"
const int pinRightBumper = 2; // der høyre støtfanger er tilkoblet
// venstre side
const int pinLeftMotorDirection = 7; // dette kan merkes på motorskjerm som "DIR B"
const int pinLeftMotorSpeed = 6; // dette kan merkes på motorskjerm som "PWM B"
const int pinLeftBumper = 8; // der høyre støtfanger er tilkoblet
// uncomment neste 2 linjer hvis Motor Shield har pauser
// const int pinRightMotorBreak = PUT_BREAK_PIN_HERE; // dette kan merkes på motorskjerm som "BREAKE A"
// const int pinLeftMotorBreak = PUT_BREAK_PIN_HERE; // dette kan merkes på motorskjerm som "BREAKE B"
// felt
const int turnRightTimeout = 100;
const int turnLeftTimeout = 150;
// stille i teller hvor lenge en motor kjører tilbake: N / 10 (i millisekunder)
int countDownWhileMovingToRight;
int countDownWhileMovingToLeft;
// Initialisering
ugyldig oppsett () {
Serial.begin (Baud);
initPins ();
// uncomment neste 4 linjer hvis Motor Shield har pauser
// pinMode (pinLeftMotorBreak, OUTPUT);
// pinMode (pinRightMotorBreak, OUTPUT);
// digitalWrite (pinLeftMotorBreak, LOW); // slå av pauser
// digitalWrite (pinRightMotorBreak, LOW); // slå av pauser
runRightMotorForward ();
runLeftMotorForward ();
startMotors ();
}
// Hovedsløyfe
void loop () {
VerifiedAndSetRightSide ();
VerifiedAndSetLeftSide ();
processRightSide ();
processLeftSide ();
forsinkelse (10); // gjenta hvert 10. millisekund
}
//---------------------------------------------------
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 () {
mens (checkBumperIsNotPressed (pinRightBumper))
&& checkBumperIsNotPressed (pinLeftBumper)) {
forsinkelse (20); // sjekk hvert 20. millisekund
}
}
void processRightSide () {
if (countDownWhileMovingToRight MinFrontDistance) // sjekker om minste tillatte frontavstand ikke er nådd
tilbake;
if (checkCounterIsNotSet (countDownWhileMovingToLeft)) // hvis telleren ennå ikke er å telle ned
runLeftMotorBackward (); // kjør høyre motor bakover
countDownWhileMovingToLeft = turnLeftTimeout; // sett telleren til maksimal verdi for å starte den med å telle ned
}
bool checkCounterIsNotSet (int-teller) {
returteller = SamplesAmount)
sampleIndex [pinIndex] = 0;
sampler [pinIndex] [sampleIndex [pinIndex]] = verdi;
return true;
}
lang calculAvarageDistance (int pinIndex) {
langt gjennomsnitt = 0;
for (int i = 0; i gjennomsnitt + = prøver [pinIndex] [i];
retur gjennomsnitt / prøver Antall;
}
Trinn to Forberedelse av grunnelementene i roboten
Papp brukes som base for feste av alle komponenter i roboten, inkludert batteri, kontrolltavler og motorer.
Turbinen må limes ordentlig på eller på annen måte festes på en liten plastbeholder for å lage et hull for opptak av smuss. Deretter limes denne designen på pappunderlaget. I tillegg må beholderen ha et ekstra hull som luft kommer ut gjennom. Det skulle være et filter, forfatteren bestemte seg for å bruke syntetisk stoff til disse formålene.
I neste trinn må kjøleren limes med servoer, og deretter installeres denne designen på en pappunderlag.
Trinn tre Vi lager hjul til roboten
For å lage hjulene må du ta aluminiumsbokser og kutte av de øvre og nedre delene fra dem. Så limes disse elementene sammen. Nå gjenstår det bare å feste hjulene ordentlig til servomotorene med smeltlim. Det er viktig å forstå at hjulene må festes tydelig i midten av servo-akslene. ellers roboten vil kjøre skjevt, og vil bruke opp energi.
Trinn fire Den endelige robotmonteringsprosessen
Etter at batteriet er installert og alle elementene til roboten er koblet til, gjenstår det å plassere strukturen i et holdbart etui. En stor plastbeholder er flott til disse formålene. Først av alt må det lages hull i nesen til robotlegemet, gjennom hvilke det vil bli sendt ut kontakter som gir signal elektronikk når roboten kolliderer med et hinder.
For at saken skal fjernes raskt og enkelt, brukes magneter for å fikse den, i dette tilfellet er det åtte av dem. Magneter limes på innsiden av støvsugeren og på selve beholderen, 4 stk hver.
Det er alt. Nå er roboten satt sammen, og den kan prøves i praksis. Til tross for at roboten ikke er i stand til å lade opp på egen hånd og har en ganske begrenset evne med tanke på navigasjon, vil den på en halv time kunne rydde opp i søppel på kjøkkenet eller i det lille rommet. Fordelene med roboten er at alle komponenter lett kan bli funnet, og at de ikke er veldig dyre. Ingen tvil hjemmelaget Du kan avgrense ved å legge til nye sensorer og andre elementer.