This is an old revision of the document!
Componenta sistemului consta in 2 senzori de distanta conectati la Arduino UNO si un modul de conexiune WiFi.
Dupa indeplinirea criteriului de detectie a masinii care ocupa zona de interes, Arduino va stabili starea in care se afla cei doi senzori:
In cazul in care se ajunge in stare blocata sau libera se va trimite o notificare corespunzatoare pe telefonul proprietarului prin IFTTT.
Am folosit Arduino IDE ca mediu de dezvoltare.
Biblioteci folosite in implementare sunt urmatoarele:
In realizarea proiectului am implementat codul pentru Arduino UNO si codul pentru modului de wifi Wemos D1 mini.
Modulul Wemos D1 mini se conecteaza la internet prin intermediul ssid-ului (Service Set Identifier) si a parolei date. In variabila INPUT_state retin starea primita de la Arduino si verific daca aceasta s-a modificat folosind o variabila last_INPUT_state ce retine fosta stare a sistemului. Astfel, daca starea sistemului se schimba (din liber in blocat sau invers) atunci trimit catre google o cerere de tip request catre serverul de IFTTT. Astfel serviciul de IFTTT va trimite notificarea corespunzatoare cererii pe telefonul proprietarului. Cererile au fost realizate cu ajutorul aplicatiei IFTTT prin creerea a doua evenimente denumite astfel: “Iot_Event_01” pentru garaj blocat si “Iot_Event_02” pentru garaj liber. Evenimentele folosesc serviciul Webhook.
Modulul Arduino UNO seteaza pinii de trigger pentru cei doi senzori de distanta pe HIGH timp de 10 microsecunde si masoara cu pulseIn durata de timp a impulsului Echo. Distanta se calculeaza cu ajutorul urmatoarei formule: distanta = durata * 0.034 / 2.
Avand amandoua distante calculate am hotarat o zona de interes (cea in care doresc sa primesc notificari, zona din fata garajului ce exclude trotuarul si strada pe care circula masini). Astfel, daca senzorii detecteaza ceva in zona de interes afiseaza la seriala distanta calculata si modifica contorii asociati acestora astfel: incrementeaza contorii daca au detectat ceva in zona de interes sau ii decrementeaza in caz contrar. Contorii nu pot fi incrementati sau decrementati in afara intervalului [-lim_cnt, lim_cnt] (care in cazul implementarii curente este 3, caz in care timpul permis realizarii unei manevre este de 7 secunde). Astfel, daca cel putin un contor a atins valoarea lim_cnt se va seta pinul de output pe HIGH (de unde rezulta o notificare de tipul “Garaj blocat!”) iar daca amandoi contorii au ajuns la valoarea –lim_cnt se va seta OutPin pe LOW (de unde rezulta o notificare de tipul “Garaj liber!”).
Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.