This shows you the differences between two versions of the page.
pm:prj2022:sionescu:gps_tracker [2022/05/04 10:40] lcumpanasoiu created |
pm:prj2022:sionescu:gps_tracker [2022/05/27 15:48] (current) lcumpanasoiu |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== GPS Tracker ====== | ====== GPS Tracker ====== | ||
- | ===== Introducere ===== | ||
+ | ====== Autor ====== | ||
+ | Cumpanasoiu Laurentiu | ||
+ | |||
+ | ===== Introducere ===== | ||
<note tip> | <note tip> | ||
- | Prezentarea pe scurt a proiectului vostru: | + | Proiectul de fata urmareste obtinerea unui GPS Tracker care sa poata atinge urmatoarele obiective: |
- | * ce face | + | * conectare dispozitive la placa de dezvoltare |
- | * care este scopul lui | + | * afisarea coordonatelor pe un ecran |
- | * care a fost ideea de la care aţi pornit | + | * trimiterea datelor în retea |
- | * de ce credeţi că este util pentru alţii şi pentru voi | + | * afisare data si timpul cand au fost preluate coordonatele |
+ | * afisarea datelor pe o harta | ||
</note> | </note> | ||
- | ===== Descriere generală ===== | ||
+ | ===== Descriere generală ===== | ||
<note tip> | <note tip> | ||
- | O schemă bloc cu toate modulele proiectului vostru, atât software cât şi hardware însoţită de o descriere a acestora precum şi a modului în care interacţionează. | + | Proiectul de GPS Tracker, pentru inceput, preia cu ajutorul senzorului de GPS Module adresa sub formă de latitudine si longitudine, dar si data si timpul curent. GPS Module comunica serial prin UART cu NodeMCU si ii transmite aceste informatii. NodeMCU are incorporat in el un ESP8266 pentru conectare pe WiFi si se ocupa de partea de interconectare a componentelor si partea de calcul. De la el, datele sunt transmise prin I2C la Arduino Plusivo (care este compatibil cu Arduino Uno) si la un server web prin WiFi. Pe laptop, pe o pagina creata cu html pe care o accesez cu adresa IP, voi afisa atat latitudinea si longitudinea, cat si data si ora respectiva, dupa care pot apasa pe un buton care imi va arata locatia de pe o harta, folosind google maps. De pe Arduino, voi afisa pe un ecran LCD latitudinea si longitudinea provenite de la GPS. |
- | + | ||
- | Exemplu de schemă bloc: http://www.robs-projects.com/mp3proj/newplayer.html | + | |
</note> | </note> | ||
- | ===== Hardware Design ===== | ||
+ | ===== Hardware Design ===== | ||
<note tip> | <note tip> | ||
- | Aici puneţi tot ce ţine de hardware design: | + | Componentele utlizate pentru partea de hardware sunt urmatoarele: |
- | * listă de piese | + | * GY-NEO6MV2 GPS Module |
- | * scheme electrice (se pot lua şi de pe Internet şi din datasheet-uri, e.g. http://www.captain.at/electronic-atmega16-mmc-schematic.png) | + | * NodeMcu ESP8266 |
- | * diagrame de semnal | + | * Placuta de dezvoltare Arduino Plusivo |
- | * rezultatele simulării | + | * Ecran LCD 16×2 |
+ | * Breadboard | ||
+ | * Fire pentru conexiune | ||
+ | * Potentiometru | ||
+ | * Rezistenta 220 ohmi | ||
+ | |||
+ | Schema bloc principala este urmatoarea: | ||
+ | {{ :pm:prj2022:sionescu:bloc_schem.jpg |}} | ||
+ | |||
+ | Schema comunicarii dintre GPS si NodeMCU: | ||
+ | {{ :pm:prj2022:sionescu:gps_nodemcu.jpg |}} | ||
+ | |||
+ | Schema comunicarii dintre NodeMCU si Arduino: | ||
+ | {{ :pm:prj2022:sionescu:arduino_nodemcu.jpg?300 |}} | ||
+ | |||
+ | Simularea din Tinkercad cu Arduino si LCD: | ||
+ | {{ :pm:prj2022:sionescu:tinkercad.jpg?300 |}} | ||
+ | |||
</note> | </note> | ||
===== Software Design ===== | ===== Software Design ===== | ||
+ | <note tip> | ||
+ | Ca biblioteci, am folosit pentru codul de pe NodeMCU TinyGPS++.h, SoftwareSerial.h si ESP8266WiFi.h, iar pentru Arduino SoftwareSerial.h si LiquidCrystal.h. | ||
+ | Nu exista nevoie de configurare, deoarece se foloseste un web server care ruleaza pe NodeMcu. | ||
+ | Am folosit Google Maps pentru afisarea hartilor. | ||
+ | Comunicarea client-server se face prin intermediul HTML. | ||
- | <note tip> | + | In functia loop() de pe NodeMCU, verificam ca locatia, data si ora sunt valide. Daca da, atunci luam aceste date si le trimitem server-ului web care le afiseaza pe o pagina html, al carei cod de creare este mai jos: |
- | Descrierea codului aplicaţiei (firmware): | + | String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n <!DOCTYPE html> <html> <head> <title>GPS Tracker project</title> <style>"; |
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | s += "a:link {background-color: YELLOW;text-decoration: none;}"; |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | s += "table, th, td {border: 1px solid black;} </style> </head> <body> <h1 style="; |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | s += "font-size:300%;"; |
- | * (etapa 3) surse şi funcţii implementate | + | s += " ALIGN=CENTER> GPS Tracker project</h1>"; |
- | </note> | + | s += "<p ALIGN=CENTER style=""font-size:150%;"""; |
+ | s += "> <b>Location and Time Details</b></p> <table ALIGN=CENTER style="; | ||
+ | s += "width:50%"; | ||
+ | s += "> <tr> <th>Latitude</th>"; | ||
+ | s += "<td ALIGN=CENTER >"; | ||
+ | s += lat_str; | ||
+ | s += "</td> </tr> <tr> <th>Longitude</th> <td ALIGN=CENTER >"; | ||
+ | s += lng_str; | ||
+ | s += "</td> </tr> <tr> <th>Date</th> <td ALIGN=CENTER >"; | ||
+ | s += date_str; | ||
+ | s += "</td></tr> <tr> <th>Time</th> <td ALIGN=CENTER >"; | ||
+ | s += time_str; | ||
+ | s += "</td> </tr> </table> "; | ||
+ | |||
+ | if (gps.location.isValid()) | ||
+ | { | ||
+ | s += "<p align=center><a style=""color:RED;font-size:125%;"" href=""http://maps.google.com/maps?&z=15&mrt=yp&t=k&q="; | ||
+ | s += lat_str; | ||
+ | s += "+"; | ||
+ | s += lng_str; | ||
+ | s += """ target=""_top"">Click here!</a> To check your location in Google maps.</p>"; | ||
+ | } | ||
+ | |||
+ | s += "</body> </html> \n"; | ||
- | ===== Rezultate Obţinute ===== | ||
- | <note tip> | ||
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | ||
</note> | </note> | ||
+ | |||
+ | |||
+ | ===== Rezultate ===== | ||
+ | Imaginea cu montajul realizat: | ||
+ | {{ :pm:prj2022:sionescu:imaginea_montaj.jpeg?300 |}} | ||
+ | |||
===== Concluzii ===== | ===== Concluzii ===== | ||
+ | <note tip> | ||
+ | Acest proiect este foarte util la orientarea in spatiu, stiind in orice moment de timp locatia exacta unde te gasesti. | ||
+ | Ca realizare, partea cea mai grea pentru mine a fost aceea de conectare a placutei de NodeMCU cu Arduino. Intrucat exista doar doi pini pentru comunicare I2C, D1 si D2 (acestia ii foloseam initial pentru conectarea cu GPS), a fost nevoie sa ma documentez foarte mult pentru a putea face legatura cu succes dintre cele placute. In final am folosit alti 2 pini de pe NodeMCU pentru conectarea cu GPS. | ||
- | ===== Download ===== | + | O problema majora pe care o are proiectul de GPS Tracker este aceea de preluare corecta a locatiei si a timpului. In interiorul cladirilor, senzorul nu face fata si nu poate lua coordonatele, astfel ca este nevoie de un spatiu in exteriorul cladirilor (unde locatia este preluata cu exactitate) sau langa o fereastra deschisa (unde locatia este data ca fiind cladirea de vizavi). |
+ | </note> | ||
+ | ===== Download ===== | ||
<note warning> | <note warning> | ||
- | O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-). | + | {{:pm:prj2022:sionescu:gps_tracker.rar|}} |
- | + | ||
- | 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**. | + | |
</note> | </note> | ||
+ | |||
===== Jurnal ===== | ===== Jurnal ===== | ||
+ | <note> | ||
+ | * **martie 2022** - Ideea inițială de GPS Tracker\\ | ||
+ | * **25 aprilie 2022** - Alegere proiect\\ | ||
+ | * **26 aprilie 2022** - Schema proiect, lista de piese, documentare pe internet\\ | ||
+ | * **28 aprilie 2022** - Cumparare si obtinere piese\\ | ||
+ | * **11 mai 2022** - Milestone 1 si inceput documentație\\ | ||
+ | * **25 mai 2022** - Finalizare construcție proiect\\ | ||
+ | * **27 mai 2022** - Milestone 2 si finalizare documentație\\ | ||
- | <note tip> | ||
- | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | ||
</note> | </note> | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
- | <note> | + | Resurse Hardware: |
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | * https://components101.com/development-boards/nodemcu-esp8266-pinout-features-and-datasheet |
- | </note> | + | * https://www.etechnophiles.com/nodemcu-esp8266-pinout-specs-board-layout/ |
+ | * https://www.electronicwings.com/nodemcu/basics | ||
+ | * https://diyi0t.com/i2c-tutorial-for-arduino-and-esp8266/ | ||
+ | * https://components101.com/modules/neo-6mv2-gps-module | ||
+ | * https://docs.arduino.cc/resources/datasheets/A000066-datasheet.pdf | ||
+ | |||
+ | Resurse Software: | ||
+ | * https://tttapa.github.io/ESP8266/Chap07%20-%20Wi-Fi%20Connections.html | ||
+ | | ||
<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">Export to PDF</a></html> | ||