RobaCar – amicul meu inteligent

Posted by

Declaratie de dragoste: Arduino, te iubesc!

Bun, acum ca am expus dragostea mea fata de Arduino, restul va veni de la sine. Vezi tu, Arduino e super. Stie sa gandeasca repede, destul de stabil, iar cu piese electronice relativ ieftine poate sa tina in frau sisteme mult mai "tensionate" decat el, si asta fara sa se forteze.

Pentru ca am depasit situatia in care tineam un singur Arduino, mai mult pe post de obiect de venerat, si pentru ca nu finalizam nici un proiect ioT din cauza ca imi doream ca micul meu creieras electronic sa fie pus bine inapoi la locul lui, iata-ma acum finalizand unul dintre proiectele propuse pe anul acesta si fiind mai fericit decat un copil de gradinita care a fost laudat de educatoare in fata clasei.

Proiectul pe care am sa ti-l prezint se numeste 'RobaCar', numele rezultand dintr-o greseala de scriere atunci cand am exportat aplicatia pentru mobil. Initial am crezut ca-l voi numi "RoboCar", dar merg pe ideea ca noua denumire ofera mai multa personalitate proiectului. Cine stie, poate ajung sa rezerv cuvantul, candva...

Masinuta din imagine contine cateva elemente care fac sistemul sa devina independent din punct de vedere al dinamicii si destul de simpatic privit prin perechea mea de ochi de copil.

Am sa le enumar si am sa detaliez putin rolul pe care fiecare element il are in acest sistem:
  • Microcontroller Arduino Mega
  • NodeMCU - ESP8266
  • 2 x modul driver de motor dual
  • 4 x motor DC
  • 2 x baterie Li-Ion 3.7 v (2500 mAh)
  • Senzor de distanta ultrasonic - HC-SR04
  • Servomotor
  • 3 x LED
  • Incarcator TP4056 cu Micro USB
Dar pana sa iti prezint fiecare piesa in parte, zic sa vezi cat de amuzanta este jucaria mea.

Arduino

Cedam locul de cea mai importanta piesa a sistemului catre Arduino, acesta avand rolul de a controla si de a integra toate celelalte piese. Folosind pinii sai GPIO si un algoritm dezvoltat de mine, micul creier electronic este capabil sa primesca mesaje, sa le proceseze, sa controleze miscarile masinii sau sa decida cand este prea aproape de un obiect si ce trebuie sa faca ca sa il evite catre o alta cale libera. A, era sa uit, tot el controleaza si cand masinuta intra in modul "pom de Craciun". Gasesti mai multe informatii despre Arduino aici: https://www.arduino.cc/en/Guide/Introduction

NodeMCU - ESP8266

In esenta, acest modul se conecteaza la reteaua Wireless dorita, se transforma intr-un mic server UDP si primeste mesaje din Internet pe care le transmite catre Arduino. Nu pierd aceasta ocazie sa ma declar uluit de aceasta mica interfata Wireless si de multimea de functionalitati pe care o ofera. Am testat cu succes protocoale ca TCP, UDP sau MQTT. Am hostat un mic server web pe el si chiar am folosit interfata pe post de hostspot. Dar nu ma crede pe cuvant, ce zici de documentatia oficiala: https://nodemcu.readthedocs.io/en/master/

Modul driver de motor dual

Ca in viata reala, degeaba ai creier bun daca nu ai muschi care sa ii duca intentiile la capat. Exact acesta este rolul driverelor de motor. Si mai exact de atat, prin Arduino nu trec curenti mari, si de aceea avem nevoie mici componente electronice care sa faca posibila aplicarea unui curent diferit de el, oferit de o sursa externa. In cazul de fata cel al uneia dintre baterii, catre motoare. Asadar, driverul de motor se conecteaza la una din baterii si in masura in care Arduino ii comunica printr-un port de semnal cat curent sa aplice, acesta imparte valoarea comunicata de controller la curentul pe care bateria il ofera. Si astfel, ca in cazul in care vrei sa iti misti mana si te folosesti de muchi pentru acest lucru, si in situatia de fata masina foloseste driverul de motor pe post de muschi pentru a realiza miscarea mecanica. Nu cred ca mai e cazul sa ofer detalii despre motor  si baterii. Poate doar ca bateriile provin de la telefoane si ca le-am cumparat cu 2, maxim 3 lei din targ din Calarasi. 🙂

Senzor de distanta ultrasonic - HC-SR04

Piesa asta face posibila transformarea unei jucarii monotone intr-un mic animalut cablat. Si asta pentru ca acest senzor citeste distanta masinutei pana la obstacolul din fata. Odata ce Arduino cunoaste faptul ca are un obstacol in fara, cu ajutorul servo-motorului afla daca in stanga sau in dreapta masinutei este liber si se deplaseaza catre zona fara obstacol. In caz contrar, se intoarce 180 de grade si isi continua drumul. Putin sumar sistemul de evitat obstacole, dar indeajuns cat sa te amuze. Incarcator TP4056 cu Micro USB Ghici, ciuperca, ce-i? Cu el incarc bateriile masinii si comunic cu extraterestrii. 😉
Cateva imagini cu cablarea elementelor.
Aplicatia Android  consta in cateva butoane care transmit catre IP-ul introdus si portul selectat mesajele pe care NodeMCU le transmite mai departe catre Arduino. Am folosit protocolul UDP pentru ca, fata de TCP, nu presupune si confirmarea de primire a mesajului, ceea ce ofera un timp de raspuns aproape in timp real. Masina reuseste sa raspuna in interval de 100 milisecunde. Daca ai pareri sau intrebari legate de acest proiect, lasa-le in comentarii. Incerc sa raspund. Chiar incerc... Cu urari de evitat obstacole, Alex.

2 comments

Leave a Reply

Your email address will not be published. Required fields are marked *