Automatul alege o anumita cantitate din diferite bauturi si le pune intr-un pahar. Cantitatea se poate selecta pe un display cu ajutorul unor butoane dar si de pe un server web. Daca nu se selecteaza nicio bautura pentru a fi preparata, atunci automatul pune apa intr-un pahar pe baza unui senzor de proximitate. Tot proiectul a plecat de la functionalitatea unei pompe si a ajuns pana la folosirea protoculului mqtt pentru a transmite date prin Wi-Fi catre un server web cu ajutorul bibliotecii Flask.
Exista 3 butoane pentru a naviga in meniul de pe LCD: “SELECT”, “NEXT”, “BACK”. Cu acestea se poate alege ce pompa sa actioneze cat timp este apasat butonul “SELECT”. Exista in meniu optiunea de a verifica starea fiecarui lichid. Daca meniul se afla in stand-by si se apropie un pahar de senzorul amplasat orizontal atunci va incepe sa curga apa pana cand se indeparteaza paharul sau pana cand senzorul amplasat deasupra, langa tubul prin care curge apa, detecteaza umplerea paharului. Pentru partea de server web, va fi un meniu cu combinatii de lichide care pot fi programate la o ora data.
Exemplu de schemă bloc: http://www.robs-projects.com/mp3proj/newplayer.html
Arduino Uno
Pompe submersibile x4
Senzori nivel apa x2
Senzor de proximitate
Rezistori
Breadboard
Nokia 5110 Display
Butoane x4
Modul Wi-Fi ESP8266
Bibliotecile folosite consta in controlul display-ului (SPI, Adafruit_GFX, Adafruit_PCD8544) si receptia de date prin mqtt (ArduinoMqttClient). Dupa declararea varibilelor globale si initializarea acestora si a pinilor in setup, porneste loop-ul in care la o apasare de buton se schimba ecranul cu cel care trebuie sa urmeze sau se schimba selectia din meniu prin setarea unui flag. Am incercat de a ingloba in variabile mai multi pini sau ecrane diferite pentru a fi mai usor de a extinde aplicatia.
GitHub
Din punctul meu de vedere proiectul a fost hardware complicat din cauza releelor care nu separa cum trebuie circuitele intre ele si am stat foarte mult depanad acest lucru, incercand o multime de metode nestiind exact problema. De asemenea, firele care nu faceau contact cum trebuie, in special cele de la pompe, ar trebuit lipite insa sunt foarte subtiri. De asemenea, senzorii de nivel de apa nu pot fi mapati direct deoarece nu sunt liniari. Pe plan software, a fost epuizanta cautarea despre flask si mqtt si implementarea in arduino, dar si activarea unor intreruperi de alti pini random cand mergeau pompele. Ca output pot sa zic ca poate fi folositor mai ales atunci cand ai musafiri.
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.
First try
https://www.espressif.com/sites/default/files/documentation/4a-esp8266_at_instruction_set_en.pdf