This shows you the differences between two versions of the page.
priot:laboratoare:06 [2024/11/13 14:18] cristian.contasel [Extragerea Datelor de la Open-Meteo API] |
priot:laboratoare:06 [2024/11/19 02:49] (current) alexandru.bala [Exemplu de cod pentru Abonare pe Laptop utilizând paho-mqtt] |
||
---|---|---|---|
Line 69: | Line 69: | ||
</code> | </code> | ||
- | ====Vizualizarea Datelor==== | + | ===== Vizualizarea Datelor ===== |
Codul pentru Vizualizare - Tipuri Multiple de Grafice: | Codul pentru Vizualizare - Tipuri Multiple de Grafice: | ||
- | <code view_data.py> | + | <code python view_data.py> |
import matplotlib.pyplot as plt | import matplotlib.pyplot as plt | ||
Line 87: | Line 87: | ||
</code> | </code> | ||
- | ====Trimiterea și Recepționarea Mesajelor „Hello World” folosind MQTT==== | + | ===== Trimiterea și Recepționarea Mesajelor „Hello World” folosind MQTT ===== |
Pentru a trimite și primi mesaje „Hello World” folosind MQTT, vom folosi `umqtt` pentru publicare pe Raspberry Pi și `paho-mqtt` pentru abonare pe laptop. | Pentru a trimite și primi mesaje „Hello World” folosind MQTT, vom folosi `umqtt` pentru publicare pe Raspberry Pi și `paho-mqtt` pentru abonare pe laptop. | ||
- | ===Cod pentru Publicare pe Raspberry Pi (umqtt)=== | + | |
- | <code hello.py> | + | ==== Exemplu de cod pentru Publicare pe Raspberry Pi utilizând umqtt ==== |
+ | <code python hello.py> | ||
import network | import network | ||
import time | import time | ||
Line 99: | Line 100: | ||
password = 'Parola_Retelei' | password = 'Parola_Retelei' | ||
mqtt_server = 'IP-ul_Brokerului' | mqtt_server = 'IP-ul_Brokerului' | ||
- | topic = b"test/topic" | + | topic = "test/topic" |
client_id = "pico_publisher" | client_id = "pico_publisher" | ||
Line 121: | Line 122: | ||
</code> | </code> | ||
- | ===Cod pentru Abonare pe Laptop (paho-mqtt)=== | + | ==== Exemplu de cod pentru Abonare pe Laptop utilizând paho-mqtt ==== |
- | <code subscribe.py> | + | <code python subscribe.py> |
from paho.mqtt import client as mqtt_client | from paho.mqtt import client as mqtt_client | ||
Line 147: | Line 148: | ||
</code> | </code> | ||
- | ====Interacțiunea cu platforma Nordic Thingy:52==== | + | <note>In case you experience issues with Paho MQTT Client Callback Version, try the following approach: |
+ | <code> | ||
+ | client = mqtt_client.Client(client_id = client_id, callback_api_version = mqtt_client.CallbackAPIVersion.VERSION1) | ||
+ | </code> | ||
+ | </note> | ||
+ | |||
+ | ===== Comunicații BLE - platforma Nordic Thingy:52 ====== | ||
Acest ghid vă oferă un punct de pornire pentru conectarea și utilizarea dispozitivului Nordic Thingy:52. | Acest ghid vă oferă un punct de pornire pentru conectarea și utilizarea dispozitivului Nordic Thingy:52. | ||
Line 157: | Line 164: | ||
Instrucțiunile de mai jos acoperă configurarea BLE și utilizarea uneltelor software de la Nordic. | Instrucțiunile de mai jos acoperă configurarea BLE și utilizarea uneltelor software de la Nordic. | ||
- | ===Cerințe:=== | + | == Echipamente necesare: == |
* Dispozitiv **Nordic Thingy:52** | * Dispozitiv **Nordic Thingy:52** | ||
* **Smartphone sau computer** cu suport Bluetooth | * **Smartphone sau computer** cu suport Bluetooth | ||
* **Aplicația nRF Connect** (disponibilă pentru iOS, Android, Windows, MacOS și Linux) | * **Aplicația nRF Connect** (disponibilă pentru iOS, Android, Windows, MacOS și Linux) | ||
- | * **SDK Nordic Thingy:52** (opțional, când intenționați să programați dispozitivul) | + | * **SDK Nordic Thingy:52** (opțional, utilizat pentru programarea în mod custom a dispozitivului) - nu este în scopul laboratorului |
- | + | ||
- | ===Porniți Thingy:52=== | + | |
- | + | ||
- | Apăsați butonul de pornire de pe Thingy:52.\\ | + | |
- | LED-ul ar trebui să înceapă să clipească, indicând că dispozitivul este gata de conectare prin BLE. | + | |
- | ===Conectare prin Aplicația nRF Connect=== | + | == Etape: == |
+ | == 1. Porniți Thingy:52 == | ||
- | Descărcați și instalați aplicația nRF Connect pe smartphone ([[https://play.google.com/store/apps/details?id=no.nordicsemi.android.mcp&hl=en|nRF-Connect-for-Android]] or [[https://apps.apple.com/us/app/nrf-connect-for-mobile/id1054362403|nRF-Connect-for-iPhone]]) sau computer ([[https://www.nordicsemi.com/Products/Development-tools/nRF-Connect-for-Desktop|nRF-Connect-for-Desktop]]).\\ | + | <note tip>Apăsați butonul de pornire de pe Thingy:52.\\ |
- | Deschideți aplicația și asigurați-vă că Bluetooth-ul este activat.\\ | + | LED-ul ar trebui să înceapă să clipească, indicând că dispozitivul este gata de conectare prin BLE.</note> |
- | În nRF Connect, scanați dispozitivele disponibile.\\ | + | |
- | Thingy:52 ar trebui să apară în listă cu un nume asemănător cu Thingy.\\ | + | |
- | Selectați Thingy:52 pentru a vă conecta. După conectare, veți putea vedea serviciile și caracteristicile acestuia.\\ | + | |
- | ===Accesarea Senzorilor și Funcțiilor=== | + | == 2. Conectarea la dispozitiv == |
+ | <note tip> | ||
+ | - Descărcați și instalați aplicația nRF Connect: | ||
+ | * pentru smartphone - [[https://play.google.com/store/apps/details?id=no.nordicsemi.android.mcp&hl=en|nRF-Connect-for-Android]] or [[https://apps.apple.com/us/app/nrf-connect-for-mobile/id1054362403|nRF-Connect-for-iPhone]]) | ||
+ | * pentru computer ([[https://www.nordicsemi.com/Products/Development-tools/nRF-Connect-for-Desktop|nRF-Connect-for-Desktop]]).\\ | ||
+ | - Deschideți aplicația și asigurați-vă că Bluetooth-ul este activat și aplicația are acordate permisiunile necesare utilizării Bluetooth.\\ | ||
+ | - În aplicația **nRF Connect**, scanați dispozitivele disponibile.\\ | ||
+ | - Thingy:52 ar trebui să apară în listă cu un nume asemănător cu Thingy.\\ | ||
+ | - Selectați Thingy:52 pentru a vă conecta. | ||
+ | - După conectare, veți putea vedea serviciile și caracteristicile acestuia.\\ | ||
+ | </note> | ||
+ | == 3. Accesarea Senzorilor și Funcțiilor == | ||
- | Odată ce Thingy:52 este conectat, puteți începe să accesați senzorii și funcțiile sale prin aplicația nRF Connect sau programatic prin BLE. | + | Odată ce Thingy:52 este conectat, puteți începe să accesați senzorii și funcțiile sale prin aplicația nRF Connect sau dezvoltând o aplicație proprie capabilă să comunice prin BLE. |
* **Senzorii de Mediu**: | * **Senzorii de Mediu**: | ||
Line 194: | Line 205: | ||
- | ===Opriți Thingy:52=== | + | == 4. Opriți Thingy:52 == |
Pentru a opri Thingy:52, apăsați și țineți apăsat butonul de pornire până când LED-ul se stinge. | Pentru a opri Thingy:52, apăsați și țineți apăsat butonul de pornire până când LED-ul se stinge. | ||
- | ====Exercitii==== | + | ===== Exercitii ===== |
- | Exercitiile aceastea se ruleaza pe Raspberry Pi Pico, intr-un setup similar cu ce am avut si laboratoarele trecute | + | <note warning>**Nu incercati exercitiile pe Thingy:52**</note> |
- | <note important>Nu incercati exercitiile pe Thingy:52</note> | ||
- | ===Exercitiu 1:=== | + | <note>**Task 0:** Exercitiile de mai jos se bazează pe implementarea bazată pe Raspberry Pi Pico. Setup-ul este similar celui din laboratorul precedent. |
- | Configurați un topic nou, cum ar fi `senzori/temperatura`, și modificați codul pentru a trimite valori de temperatură. | + | * //Etapa 1// - porniți Mosquitto cu configurarea realizata anterior: |
- | ===Exercitiu 2:=== | + | <code bash>mosquitto -v -c "C:\Program Files\mosquitto\mosquitto.conf" </code> |
- | Testați trimiterea și recepția datelor prin MQTT. | + | * //Etapa 2// - rulați pe Raspberry Pi Pico codul **hello.py** |
- | ===Exercitiu 3:=== | + | * //Etapa 3// - rulați pe computer utilizând Python codul **subscribe.py** |
- | Vizualizați datele primite de la senzor într-un grafic folosind Matplotlib. | + | </note> |
+ | <note>**Task 1:** | ||
+ | Configurați un topic nou, cum ar fi `senzori/temperatura`, și modificați codul de Raspberry Pi Pico pentru a trimite valori preluate de la senzorul temperatură. | ||
+ | </note> | ||
+ | <note>**Task 2:** | ||
+ | Testați trimiterea și recepția datelor prin MQTT folosind utilitarul **mosquitto_sub** | ||
+ | </note> | ||
+ | <note>**Task 3:** | ||
+ | Modificați codul de subscriber prezentat în cadrul **subscribe.py** pentru a vizualiza datele primite de la Raspberry Pi Pico într-un grafic folosind librăria Matplotlib.</note> |