A világon minden nap egyre népszerűbb a robottisztítók körében. Az ilyen kicsi segítőknek köszönhetően a ház sokkal tisztább lesz, és sokkal kevesebb erőfeszítést igényel a takarítás. A robotok nagyon sokféle modifikációja létezik, mind funkcionálisan, méretben és egyéb paraméterekben különböznek egymástól.
Pontosabban, ez a cikk megvizsgál egy példát erre
csináld magad Készíthet egy egyszerű robotot, amely szükség esetén porszívózza a helyiséget. A vezérlő itt „agy”
Arduino.
Anyagok és eszközök a robot gyártásához:- a motorok működését ellenőrző tábla (Arduino motorvédő pajzs);
- Arduino tábla;
- két hajtóműves motor (3 voltos motorok és körülbelül 100 fordulat / perc fordulatszámú motorok);
- kerekek (alumínium kannákból készülhetnek;
- hűtő a számítógép tápegységéből (lehetséges mind 5 V, mind 12 V);
- 5 V-os tápegység (akkumulátor);
- vezetékek és lemezek rádióelemek beszereléséhez;
- a tok készítéséhez műanyag tartályra lesz szüksége;
- Egy másik kis konténer a szeméttároló létrehozásához;
- forró ragasztó;
- mágnesek;
- karton.
A robot gyártási folyamata:
Első lépés. A robot és a vázlat szoftver része:
A robot szíve az Arduino vezérlő. A programozáshoz számítógépre és speciális szoftverre van szüksége.
A vázlatnak a táblára történő letöltéséhez szüksége lesz az Arduino IDE programra. Az alábbiakban átveheti a robot programkódját és megnézheti a fő áramkört.
/*
Két motoros robot vezérlésére szolgáló program.
A robot megfordul, amikor a motorok megváltoztatják a sebességet és az irányt.
Az első lökhárítók a bal és a jobb oldalon észlelik az akadályokat.
Az ultrahangos hangszórók csatlakoztathatók az analóg bemenetekhez (LV-MaxSonar-EZ1 tesztelve):
- helyezzen csapokat a tömb szonárberendezésbe a következő sorrendben: bal, jobb, elülső, egyéb.
Példák:
1. csak a 2. és a 3. tűhöz csatlakoztatott bal és jobb oldali szonár: sonarPins [] = {2,3}
2. bal, jobb és elülső szonárok a 2., 3. és 5. érintkezőkhöz csatlakoztatva: sonarPins [] = {2,3,5}
3. csak az 5. érintkezőhöz csatlakoztatott első szonár: sonarPins [] = {-1, -1.5}
4. csak a 2. érintkezőhöz csatlakoztatott szonár: sonarPins [] = {2}
5. csak a 3-as érintkezőhöz csatlakoztatott jobb szonár: sonarPins [] = {-1,3}
6,5 szonár, csatlakoztatva az 1,2,3,4,5 csapokhoz: sonarPins [] = {1,2,3,4,5}
A motorvédő pajzsot a motorok működtetésére használják.
*/
const int Baud = 9600; // UART port sebesség
// Szonár tulajdonságai
int sonarPins [] = {1, 2}; // Analóg PIN-számok a szonár-érzékelő AN-hez
const long MinLeftDistance = 20; // Legkisebb megengedett bal távolság
állandó hosszú MinRightDistance = 20; // Legkisebb megengedett távolság
állandó hosszú MinFrontDistance = 15; // A legkisebb elülső távolság
const int SamplesAmount = 15; // további minták - simább mérés és nagyobb késés
const int SonarDisplayFrequency = 10; // a sorok közül csak egyet jelenít meg - nem mindegyiket
int sonarDisplayFrequencyCount = 0;
const hosszú tényező = 2,54 / 2;
hosszú minták [méret (sonarPins)] [SamplesAmount];
int mintaIndex [méret (sonarPins)];
// jobb oldal
const int pinRightMotorDirection = 4; // ezt a motor pajzsán "DIR A" jelzéssel lehet megjelölni
const int pinRightMotorSpeed = 3; // ezt a motor pajzsán "PWM A" jelzéssel lehet megjelölni
const int pinRightBumper = 2; // ahol a jobb ütköző csatlakozik
// bal oldal
const int pinLeftMotorDirection = 7; // ezt a motor pajzsán "DIR B" jelzéssel lehet megjelölni
const int pinLeftMotorSpeed = 6; // ezt a motor pajzsán "PWM B" jelzéssel lehet megjelölni
const int pinLeftBumper = 8; // ahol a jobb ütköző csatlakozik
// törölje a következő 2 sort, ha a Motor Shield szünetek
// const int pinRightMotorBreak = PUT_BREAK_PIN_HERE; // ezt a motor pajzsán "BREAKE" jelzéssel lehet megjelölni
// const int pinLeftMotorBreak = PUT_BREAK_PIN_HERE; // ezt a motor pajzsán "BREAKE B" -vel lehet megjelölni
// mezők
const int turnRightTimeout = 100;
const int turnLeftTimeout = 150;
// állítsa be a motor visszatérő hosszát: N / 10 (milliszekundumban)
int countDownWhileMovingToRight;
int countDownWhileMovingToLeft;
// Inicializálás
érvénytelen beállítás () {
Serial.begin (Baud);
initPins ();
// törölje a következő 4 sort, ha a Motor Shield szünetek
// pinMode (pinLeftMotorBreak, OUTPUT);
// pinMode (pinRightMotorBreak, OUTPUT);
// digitalWrite (pinLeftMotorBreak, LOW); // szünetek kikapcsolása
// digitalWrite (pinRightMotorBreak, LOW); // szünetek kikapcsolása
runRightMotorForward ();
runLeftMotorForward ();
startMotors ();
}
// Fő hurok
void loop () {
checkAndSetRightSide ();
checkAndSetLeftSide ();
processRightSide ();
processLeftSide ();
késleltetés (10); // ismételje meg minden 10 milliszekundumot
}
//---------------------------------------------------
érvénytelen initPins () {
pinMode (pinRightMotorDirection, OUTPUT);
pinMode (pinRightMotorSpeed, OUTPUT);
pinMode (pinRightBumper, INPUT);
pinMode (pinLeftMotorDirection, OUTPUT);
pinMode (pinLeftMotorSpeed, OUTPUT);
pinMode (pinLeftBumper, INPUT);
mert (int i = 0; i pinMode (sonarPins [i], INPUT);
}
void startMotors () {
setMotorSpeed (pinRightMotorSpeed, 255);
setMotorSpeed (pinLeftMotorSpeed, 255);
}
void waitWhileAnyBumperIsPressed () {
míg (checkBumperIsNotPressed (pinRightBumper)
&& checkBumperIsNotPressed (pinLeftBumper)) {
késleltetés (20); // ellenőrizze minden 20 milliszekundumonként
}
}
void processRightSide () {
if (countDownWhileMovingToRight MinFrontDistance) // ellenőrzi, hogy nem sikerült-e elérni a minimálisan megengedett első távolságot
return;
if (checkCounterIsNotSet (countDownWhileMovingToLeft)) // ha a számláló még nem számol le
runLeftMotorBackward (); // futtassa a jobb motort hátra
countDownWhileMovingToLeft = turnLeftTimeout; // állítsa be a számlálót a maximális értékre, hogy visszaszámlálást indítson
}
bool checkCounterIsNotSet (int számláló) {
visszaszámláló = SamplesAmount)
sampleIndex [pinIndex] = 0;
minták [pinIndex] [sampleIndex [pinIndex]] = érték;
visszatér igaz;
}
hosszú calcAvarageDistance (int pinIndex) {
hosszú átlag = 0;
for (int i = 0; i átlag + = minták [pinIndex] [i];
visszatérési átlag / SamplesAmount;
}
Második lépés A robot alapelemeinek előkészítése
A karton alapul szolgál a robot összes alkatrészének rögzítéséhez, beleértve az akkumulátort, a vezérlő táblákat és a motorokat.
A turbinát megfelelően kell ragasztani vagy más módon rögzíteni egy kis műanyag tartályra, amelybe lyukat kell tenni a szennyeződések felszívására. Ezt követően ezt a kialakítást ragasztják a karton alapra. Ezenkívül a tartálynak további lyukkal kell rendelkeznie, amelyen keresztül a levegő kijuthat. Szűrőnek kell lennie, a szerző úgy döntött, hogy szintetikus szövetet használ erre a célra.
A következő szakaszban a hűtőt szervóval kell ragasztani, majd ezt a kialakítást egy karton alapra kell felszerelni.
Harmadik lépés Készítünk kerekeket a robotnak
A kerekek elkészítéséhez alumínium kannákat kell vennie, és levágni tőlük a felső és alsó részeket. Ezután ezeket az elemeket összeragasztják. Most csak a kerekek megfelelő rögzítése a szervomotorokhoz melegen olvadt ragasztóval. Fontos megérteni, hogy a kerekeket egyértelműen rögzíteni kell a szervótengelyek közepén. egyébként a robot ferde módon halad és energiát fog felhasználni.
Negyedik lépés A robot összeszerelési folyamata
Az elem behelyezése és a robot összes elemének csatlakoztatása után a szerkezetet tartós tokba kell helyezni. A nagy műanyag tartály nagyszerűen használható erre a célra. Mindenekelőtt a robottest orrában lyukakat kell létrehozni, amelyeken keresztül érintkezők jönnek ki, amelyek jelet adnak elektronika amikor a robot akadályba ütközik.
Annak érdekében, hogy az ügy gyorsan és könnyen eltávolítható legyen, a mágneseket rögzítik, ebben az esetben nyolc van. A mágneseket ragasztják a porszívó belsejébe és maga a tartályba, egyenként 4 darab.
Ez minden. Most a robot összeszerelt, és kipróbálható a gyakorlatban. Annak ellenére, hogy a robot önmagában nem képes újratölteni, és meglehetősen korlátozott képességei vannak a navigáció szempontjából, fél óra alatt képes tisztítani a szemetet a konyhában vagy a kis szobában. A robot előnye, hogy minden alkatrész könnyen megtalálható és nem túl drága. Nem kétséges házi Finomíthatja új érzékelők és egyéb elemek hozzáadásával.