Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2022:sionescu:petfeeder [2022/05/27 16:27]
iuliana.mihaila [Descriere generală]
pm:prj2022:sionescu:petfeeder [2022/06/01 23:40] (current)
iuliana.mihaila [Software Design]
Line 18: Line 18:
  
 1. Animalul de companie apasă pe un buton, acționând servo-motorul,​ iar utilizatorul primește o notificare pe telefon pentru a fi înștiințat de acest lucru 1. Animalul de companie apasă pe un buton, acționând servo-motorul,​ iar utilizatorul primește o notificare pe telefon pentru a fi înștiințat de acest lucru
 +
 2. Utilizatorul trimite comanda /feed pe telefon, cu ajutorul unui bot de Telegram, servo-motorul fiind acționat de un server (serializarea si deserializarea unui byte) 2. Utilizatorul trimite comanda /feed pe telefon, cu ajutorul unui bot de Telegram, servo-motorul fiind acționat de un server (serializarea si deserializarea unui byte)
 +
 3. Utilizatorul trimite comanda /photo pe telefon, ce va determina trimiterea unei poze, pe server cu starea actuala a feeder-ului 3. Utilizatorul trimite comanda /photo pe telefon, ce va determina trimiterea unei poze, pe server cu starea actuala a feeder-ului
  
 === Schema bloc: === === Schema bloc: ===
  
-{{:​pm:​prj2022:​sionescu:​image_2022-05-11_213416038.png?600|}}+{{:​pm:​prj2022:​sionescu:​image_2022-05-27_171307161.png?600|}}
  
  
Line 29: Line 31:
  
 === Componentele utilizate pentru construirea dispenserului:​ === === Componentele utilizate pentru construirea dispenserului:​ ===
-  * Placă de dezvoltare UNO R3 compatibil Arduino+  * Placă de dezvoltare UNO R3 compatibil Arduino ​x 2 
   * Servomotor SG90    * Servomotor SG90 
   * Fire pentru conexiune   * Fire pentru conexiune
Line 35: Line 37:
   * Mini-breadboard   * Mini-breadboard
   * Shield rețea ENC28j60 ethernet ​   * Shield rețea ENC28j60 ethernet ​
 +  * ESP-32 camera
  
 Materiale reciclabile folosite: Materiale reciclabile folosite:
Line 54: Line 57:
 Așadar, va fi necesar un router care se va conecta prin intermediul unui cablu de ethernet la modulul ​ Așadar, va fi necesar un router care se va conecta prin intermediul unui cablu de ethernet la modulul ​
 Wi-Fi, conexiunea cu laptopul fiind posibilă și prin wireless. Wi-Fi, conexiunea cu laptopul fiind posibilă și prin wireless.
 +Totodată, codul de Arduino conține o funcție de reconectare automată, reconnect(),​ în cazul în care nu se mai face conexiunea la master server, prevenind astfel comportamentul imprevizibil generat de potențialele erori sau de fluctuații ale vitezei cu care se transmit datele prin internet.
  
-{{:​pm:​prj2022:​sionescu:​image_2022-05-11_093754394.png?600|}}+{{:​pm:​prj2022:​sionescu:​image_2022-05-27_164642205.png?500|}}
  
-=== Conectarea shield-ului ​de ethernet === +Inițializare botului ​de Telegram se face prin intermediul unui BotFather cu comanda /newbot, astfel ​, utilizatorul trimite niște comenzi pe această aplicație pentru a-și configura propriul chatbot care, va căpăta sens + utilitate practică in momentul in care va fi programat pe calculator. 
-- Având în vedere faptul ​că shield-ul nu este original Arduinose va folosi biblioteca ​ +Odată ce botul de Telegram a fost inițializat,​ vom folosi biblioteca ​Telegraf împreună cu NodeJS care este un framework pentru siteuri, servicii și aplicații scrise in Javascript.
-UIPEthernet.h de pe github: https://​github.com/​UIPEthernet/​UIPEthernet+
  
-Pentru monatarea acestei componente se folosește schema urmatoare:+Comenzile trimise de pe Telegram acționeaza callback-uri lambda pe serverul realizat prin protocolul TCP. Comanda de hrănire, de exemplu, verifică dacă feederul este conectat la serverul 
 +de control și ii trimite un byte pentru a determina actionarea servomotorului. Totodată, utilizatorul primește un mesaj pe telefon pentru a fi inștiințat dacă nu au fost erori.
  
-{{:​pm:​prj2022:​sionescu:​image_2022-05-11_094846601.png?400|}}+{{:​pm:​prj2022:​sionescu:​untitled1.png?​400|}} 
 + 
 +Atunci când feederul primește un byte, acționează servo motorul, iar când serverul primește un byte de la feeder, știm că pisica a apăsat pe butonul fizic, hrăndindu-se singură. 
 +Pentru pornirea efectiva a serverului se dă comanda node index.js. 
 +Codul de pe placa de dezvoltare Arduino presupune conectarea la server cu ajutorul IP-ului local al laptopului si al adresei MAC precum și implementarea celor două scenarii. 
 + 
 +Pentru implementarea functionalitatii camerei ESP32 CAM, ce presupune conectarea acesteia la bot-ul de Telegram, am folosit biblioteca Universal Arduino-Telegram Bot. 
 + 
 +{{:​pm:​prj2022:​sionescu:​surv2.jpg?400|}} 
 + 
 +==== Comenzile botului de Telegram ==== 
 + 
 +  * start - short intro (scurta descriere) 
 +  * help - show all the commands available (afișarea tuturor acestor comenzi) 
 +  * details - show all the components used 
 +  * feed - feed my Kara (hrănirea pisicii) 
 +  * credits - and the 1st prize goes to ... 
 +  * photo - take a photo of the current state of the feeder 
 +  * flash - toggles the flash of the camera
  
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
 +
 +Testarea solutiei s-a realizat prin intermediul robotului fizic conectat la calculator prin intermediul unui cablu de ethernet. Asigurându-ne de faptul că avem o conexiune Wi-Fi stabilă, am pornit serverul cu ajutorul comenzii node index.js. De mentionat este faptul ca ESP32 CAM dispune de un modul Wi-Fi, conectarea acesteia la bot-ul de Telegram realizându-se wireless.
 +
 +{{:​pm:​prj2022:​sionescu:​image_2022-05-27_163300189.png?​500|}}
 +
 +În prima instanță, s-a verificat funcționalitatea de acționare prin apăsare pe buton, eveniment ce produce transmiterea unui anumit tip de date (un byte) către server, ca mai apoi să fie preluat si transformat într-o comandă ce prevede evacuarea mâncării.
 +
 +{{:​pm:​prj2022:​sionescu:​image_2022-05-27_164350668.png?​500|}}
 +
 +Funcționalitatea ce are ca subiect conectarea la aplicația de Telegram prin intermediul API-ului open source, a fost testată, cu serverul pornit, comunicând cu botul pe care l-am creat. Astfel, după ce am setat lista de comenzi (/​setcommands) prin BotFather si după ce le-am atribuit câte o semantică (primirea unui mesaj text ca raspuns), am testat comanda /feed ce acționează motorul în mod instant.
 +Codul ce presupune redarea pozei a fost implementat in fisierul TelegramCamera. Acesta primeste token-ul corespunzator bot-ului de Telegram, informatii despre conexiunea Wi-Fi si se foloseste de un client TCP pentru a transmite reda poza, respectiv pentru a porni flash-ul camerei.
 +
 +
 +
  
 ===== Concluzii ===== ===== Concluzii =====
  
 +Proiectul a fost o experiență plăcută și interesantă în care am aprofundat mai bine anumite noțiuni, am întâmpinat probleme și am încercat să găsesc soluții. Printre problemele pe care le-am întâmpinat,​ montarea shieldului de Ethernet a prezentat dificultăți deoarece nu am putut folosi o bibliotecă standard. Având în vedere faptul că s-a folosit un shield care nu este original Arduino, am folosit biblioteca UIPEthernet.h de pe github: https://​github.com/​UIPEthernet/​UIPEthernet. În ceea ce privește implementarea camerei ESP-32, nu am reușit să programez pe aceeași plăcuță și partea care ține de feeder și transmiterea pozei prin Telegram, motivul fiind insuficiența pinilor.
 ===== Download ===== ===== Download =====
 +{{:​pm:​prj2022:​sionescu:​feeder-bot.zip|}}
 ===== Jurnal ===== ===== Jurnal =====
   * 18.04.2022 - Alegerea temei proiectului   * 18.04.2022 - Alegerea temei proiectului
 +  * 21.04.2022 - 20.05.2022 - Realizarea proiectului
 +  * 26.06.2021 - Intocmirea documentatiei
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
  
 <​note>​ <​note>​
-Control Servo motor with Arduino Uno and Pushbutton:+https://​www.youtube.com/​watch?​v=5MHisFC-_dE
  
-https://create.arduino.cc/​projecthub/​akshayjoseph666/control-servo-motor-with-arduino-uno-and-pushbutton-18613f+https://how2electronics.com/interface-enc28j60-ethernet-module-with-arduino/
  
-How to connect the ENC28J60 to an Arduino:+https://​www.youtube.com/​watch?​v=hCvOzzDa1ms&​t=124s
  
-https://​www.youtube.com/​watch?​v=5MHisFC-_dE+https://​www.youtube.com/​watch?​v=kEG8cd32fb0
  
-Interface ENC28J60 Ethernet Module with Arduino Webserver:+https://​www.chatcompose.com/​ro/​telegram.html
  
-https://how2electronics.com/interface-enc28j60-ethernet-module-with-arduino/+https://randomnerdtutorials.com/telegram-esp32-cam-photo-arduino/
  
 </​note>​ </​note>​
  
-<​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​+<​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​dispenser_de_mancare_pentru_animale.pdf</​a></​html>​
  
pm/prj2022/sionescu/petfeeder.1653658056.txt.gz · Last modified: 2022/05/27 16:27 by iuliana.mihaila
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0