I verden bliver hver dag mere og mere populær blandt robotrensere. Takket være sådanne små hjælpere bliver huset meget renere, og der gøres meget mindre kræfter i rengøring. Der er mange forskellige ændringer af robotter, de er alle forskellige i funktionalitet, størrelse og andre parametre.
Specifikt vil denne artikel overveje et eksempel på, hvordan
gør det selv Du kan lave en simpel robot, som selv støvsuger rummet, når det er nødvendigt. Controlleren bruges her som ”hjernen”
Arduino.
Materialer og værktøjer til fremstilling af roboten:- kort, der kontrollerer driften af motorer (Arduino motorskærm);
- Arduino bord
- to motorer med gear (motorer ved 3 volt og en omdrejningshastighed på ca. 100 o / min.);
- hjul (kan fremstilles af aluminium dåser;
- en køler fra en computer strømforsyning (mulig både på 5V og 12V);
- 5V strømforsyning (batteri);
- ledninger og plade til installation af radioelementer;
- For at gøre sagen skal du bruge en plastbeholder;
- En anden lille container til oprettelse af en affaldsspand;
- varm lim;
- magneter;
- pap.
Robotens fremstillingsproces:
Første trin. Softwaredel af roboten og skitsen:
Robotens hjerte er Arduino-controlleren. For at programmere det skal du bruge en computer og speciel software.
For at downloade skitsen til tavlen skal du bruge Arduino IDE-programmet. Nedenfor kan du tage robotprogramkoden og se hovedkredsløbet.
/*
Program til styring af en robot med to motorer.
Robotten drejer, når motorer ændrer hastighed og retning.
Frontfangere på venstre og højre side registrerer forhindringer.
Ultrasoniske sonarer kan tilsluttes analoge indgange (testet på LV-MaxSonar-EZ1):
- sæt stifter i matrix sonarPins i følgende rækkefølge: venstre, højre, foran, andre ..
Eksempler:
1. kun venstre og højre sonarer, der er forbundet med ben 2 og 3: sonarPins [] = {2,3}
2. venstre, højre og forreste sonar, der er forbundet med ben 2, 3 og 5: sonarPins [] = {2,3,5}
3. kun forreste sonar, der er tilsluttet pin 5: sonarPins [] = {-1, -1.5}
4. kun venstre ekkolodd tilsluttet pin 2: sonarPins [] = {2}
5. kun højre ekkolod tilsluttet stifter 3: sonarPins [] = {-1,3}
6,5 sonarer forbundet til stifter 1,2,3,4,5: sonarPins [] = {1,2,3,4,5}
Motorskærm bruges til at køre motorer.
*/
const int Baud = 9600; // UART-porthastighed
// Ekkolodsegenskaber
int sonarPins [] = {1, 2}; // Analog Pin Nums to sonar sensor Pin AN
const lang MinLeftDistance = 20; // Minimum tilladt venstre afstand
const lang MinRightDistance = 20; // Minimum tilladt højre afstand
const lang MinFrontDistance = 15; // Minimum tilladt frontafstand
const int SamplesAmount = 15; // flere prøver - jævnere måling og større forsinkelse
const int SonarDisplayFrequency = 10; // Vis kun en af disse linjer - ikke alle
int sonarDisplayFrequencyCount = 0;
konst lang faktor = 2,54 / 2;
lange prøver [sizeof (sonarPins)] [SamplesAmount];
int sampleIndex [størrelse af (sonarPins)];
// højre side
const int pinRightMotorDirection = 4; // dette kan markeres på motorskærmen som "DIR A"
const int pinRightMotorSpeed = 3; // dette kan markeres på motorskærmen som "PWM A"
const int pinRightBumper = 2; // hvor den højre kofanger er tilsluttet
// venstre side
const int pinLeftMotorDirection = 7; // dette kan markeres på motorskærmen som "DIR B"
const int pinLeftMotorSpeed = 6; // dette kan markeres på motorskærmen som "PWM B"
const int pinLeftBumper = 8; // hvor den højre kofanger er tilsluttet
// afdæk næste 2 linjer, hvis Motorskærm har pauser
// const int pinRightMotorBreak = PUT_BREAK_PIN_HERE; // dette kan markeres på motorskærmen som "BREAKE A"
// const int pinLeftMotorBreak = PUT_BREAK_PIN_HERE; // dette kan markeres på motorskærmen som "BREAKE B"
// felter
const int turnRightTimeout = 100;
const int turnLeftTimeout = 150;
// sæt i tælleren, hvor længe en motor kører tilbage: N / 10 (i millisekunder)
int countDownWhileMovingToRight;
int countDownWhileMovingToLeft;
// Initialisering
ugyldig opsætning () {
Serial.begin (Baud);
initPins ();
// afbryde de næste 4 linjer, hvis Motorskærm har pauser
// pinMode (pinLeftMotorBreak, OUTPUT);
// pinMode (pinRightMotorBreak, OUTPUT);
// digitalWrite (pinLeftMotorBreak, LOW); // sluk pauserne
// digitalWrite (pinRightMotorBreak, LOW); // sluk pauserne
runRightMotorForward ();
runLeftMotorForward ();
startMotors ();
}
// Hovedsløjfe
void loop () {
verificere og sætRightSide ();
verificere og sæt LeftSide ();
processRightSide ();
processLeftSide ();
forsinkelse (10); // gentag 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 waitWhileAnyBumperIsPression () {
mens (checkBumperIsNotPressed (pinRightBumper)
&& checkBumperIsNotPression (pinLeftBumper)) {
forsinkelse (20); // Kontroller hvert 20. millisekund
}
}
void processRightSide () {
if (countDownWhileMovingToRight MinFrontDistance) // kontrollerer, om den mindst tilladte frontafstand ikke er nået
vende tilbage;
if (checkCounterIsNotSet (countDownWhileMovingToLeft)) // hvis tælleren endnu ikke tæller ned
runLeftMotorBackward (); // kør højre motor bagud
countDownWhileMovingToLeft = turnLeftTimeout; // sæt tælleren til maksimal værdi for at starte den med at tælle
}
bool checkCounterIsNotSet (int-tæller) {
returtæller = SamplesAmount)
sampleIndex [pinIndex] = 0;
sampler [pinIndex] [sampleIndex [pinIndex]] = værdi;
vende tilbage sandt;
}
lang beregningAvarageDistance (int pinIndex) {
langt gennemsnit = 0;
for (int i = 0; i gennemsnit + = prøver [pinIndex] [i];
returnere gennemsnit / prøverAmount;
}
Trin to Forberedelse af robotens grundlæggende elementer
Karton bruges som base til fastgørelse af robotens komponenter, inklusive batteri, kontroltavler og motorer.
Turbinen skal limes korrekt eller på anden måde fastgøres på en lille plastbeholder, hvor du skal lave et hul til optagelse af snavs. Efterfølgende limes dette design på papbasen. Derudover skal beholderen have et ekstra hul, gennem hvilket luft kommer ud. Der skulle være et filter, forfatteren besluttede at bruge syntetisk stof til disse formål.
I det næste trin skal køleren limes med servoer, og derefter installeres dette design på en papbase.
Trin tre Vi laver hjul til roboten
For at gøre hjulene nødt til at tage aluminium dåser og afskære de øverste og nedre dele fra dem. Derefter limes disse elementer sammen. Nu gjenstår det kun at ordentligt fastgøre hjulene til servomotorerne med smeltelim. Det er vigtigt at forstå, at hjulene skal fastgøres tydeligt i midten af servos-akslerne. ellers roboten vil køre skævt og bruge energi.
Trin fire Den sidste robotmonteringsproces
Når batteriet er installeret, og alle robotens elementer er tilsluttet, er det stadig at placere strukturen i en holdbar sag. En stor plastbeholder er fantastisk til disse formål. Først og fremmest skal der laves huller i næsen på robotlegemet, gennem hvilke der sendes kontakter, der giver et signal elektronik når roboten kolliderer med en forhindring.
For at sagen hurtigt og nemt kan fjernes, bruges magneter til at fikse den, i dette tilfælde er der otte. Magneter limes på indersiden af støvsugeren og på selve beholderen, 4 stykker hver.
Det er alt. Nu er roboten samlet, og den kan prøves i praksis. På trods af det faktum, at roboten ikke er i stand til at oplade alene og har en ret begrænset evne med hensyn til navigation, vil den inden for en halv time kunne rydde op i skraldet i køkkenet eller i det lille rum. Fordelene ved roboten er, at alle komponenter let kan findes, og at de ikke er meget dyre. Ingen tvivl hjemmelavet Du kan finjustere ved at tilføje nye sensorer og andre elementer.