This shows you the differences between two versions of the page.
si:iot2025:lab04 [2025/07/13 12:11] robert_ionut.alexa |
si:iot2025:lab04 [2025/07/13 12:24] (current) robert_ionut.alexa |
||
---|---|---|---|
Line 40: | Line 40: | ||
**1.** Folosind sistemul de build al NuttX, vom compila aplicatia ''mqttc_pub''. Codul sursa a acesteia il puteti gasi in ''apps/examples/mqttc''. | **1.** Folosind sistemul de build al NuttX, vom compila aplicatia ''mqttc_pub''. Codul sursa a acesteia il puteti gasi in ''apps/examples/mqttc''. | ||
- | * Pentru a compila aplicatia, revizuiti [[si:laboratoare/01|Laboratorul 01]]. Va trebui sa descarcati toolchain-ul, repository-urile //nuttx// si //nuttx-apps//, tabela de partitii si bootloader-ul. | + | * Pentru a compila aplicatia, revizuiti [[si:iot2025/lab01|Laboratorul 01]]. ''hacktorwatch:usbnsh'' are deja activate toate configuratiile necesare pentru bibilioteca de MQTT. |
- | + | * Activati ''CONFIG_EXAMPLES_MQTTC'' folosind ''make menuconfig'' pentru a putea rula exemplul default din NuttX, ''mqttc_pub''. | |
- | <note important> | + | * Compilati, incarcati pe ceas noul binar si conectati-va la seriala folosind utilitarul picocom. |
- | Vom folosi o versiune diferita a toolchain-ului. Adaptati comenzile din primul laborator pentru numele acestui toolchain. | + | * Verificati ca aplicatia e instalata, folosind comanda: ''?''. |
- | <code> | + | |
- | wget https://github.com/espressif/crosstool-NG/releases/download/esp-14.2.0_20240906/xtensa-esp-elf-14.2.0_20240906-x86_64-linux-gnu.tar.xz | + | |
- | </code> | + | |
- | + | ||
- | De asemenea, vom clona //nuttx// si //nuttx-apps// folosind urmatoarele comenzi: | + | |
- | + | ||
- | <code> | + | |
- | git clone --branch=si-lab-11 https://github.com/andreeaThePenguin/nuttx.git nuttx --depth 1 | + | |
- | git clone --branch=releases/12.7 https://github.com/andreeaThePenguin/nuttx-apps.git apps | + | |
- | </code> | + | |
- | + | ||
- | </note> | + | |
- | + | ||
- | * Pentru a configura NuttX cu suport pentru aplicatia ''mqttc_pub'', vom folosi urmatoarea comanda: <code> | + | |
- | ./tools/configure.sh esp32-sparrow-kit:mqttc | + | |
- | </code> | + | |
- | * Compilati NuttX, folositi ''esptool'' pentru a sterge continutul memoriei flash a placii, si scrieti imaginea pe aceasta (vedeti [[si:laboratoare/01|Laboratorul 1]]). | + | |
- | * Conectati-va la seriala placii folosind utilitarul picocom: <code> | + | |
- | picocom /dev/ttyUSB0 -b 115200 </code> | + | |
- | * Verificati ca aplicatia e instalata, folosind comanda: ''?'', care va afiseaza toate aplicatiile disponibile pe versiunea de NuttX compilata si incarcata anterior. | + | |
**2.** Pentru a putea testa aplicatia, ne dorim sa cream un setup de tipul //Publisher-Subscriber//. Pentru aceasta, vom crea un MQTT subscriber care sa primeasca datele trimise de MQTT publisher (reprezentat de placa). | **2.** Pentru a putea testa aplicatia, ne dorim sa cream un setup de tipul //Publisher-Subscriber//. Pentru aceasta, vom crea un MQTT subscriber care sa primeasca datele trimise de MQTT publisher (reprezentat de placa). | ||
- | * Instalati libraria ''paho-mqtt'' pe masina virtuala: <code> | + | * Instalati libraria ''paho-mqtt'' pe masina virtuala: ''pip3 install paho-mqtt''. |
- | pip3 install paho-mqtt | + | * Folositi scriptul Python 3 de mai jos, si plasati-l pe masina virtuala; acest script joaca rolul de MQTT subscriber din figura prezentata in laborator. Pregatiti un terminal separat (ideal: pe care sa il puteti vedea in paralel cu primul) din care veti rula la finalul exercitiului acest script. |
- | </code> | + | |
- | * Preluati scriptul Python 3 de mai jos, si plasati-l pe masina virtuala; acest script joaca rolul de MQTT subscriber din figura prezentata in laborator. Pregatiti un terminal separat (ideal: pe care sa il puteti vedea in paralel cu primul) din care veti rula la finalul exercitiului acest script. | + | |
<file python mqtt_subscriber.py> | <file python mqtt_subscriber.py> | ||
Line 109: | Line 87: | ||
</code> | </code> | ||
- | * In final, veti avea deschise 2 terminale: unul ce ruleaza scriptul Python (MQTT subscriber), si altul ce afiseaza seriala placii, pe care se afla MQTT publisher-ul. Pentru a publica date, folosim comanda: <code> | + | * In final, veti avea deschise 2 terminale: unul ce ruleaza scriptul Python (MQTT subscriber), si altul ce afiseaza seriala placii, pe care se afla MQTT publisher-ul. Pentru a publica date, folosim comanda: ''mqttc_pub -t si-labs -m <message>'' |
- | mqttc_pub -t si-labs -m <message> | + | |
- | </code> | + | |
* Trimiteti mai multe date modificand topic-ul si valoarea. | * Trimiteti mai multe date modificand topic-ul si valoarea. | ||
Line 117: | Line 93: | ||
Schimbati numele topic-ului atat in scriptul Python, cat si in comanda de mai sus (altfel, veti primi si mesajele de la ceilalti colegi). | Schimbati numele topic-ului atat in scriptul Python, cat si in comanda de mai sus (altfel, veti primi si mesajele de la ceilalti colegi). | ||
</note> | </note> | ||
- | |||
- | **3.** Dorim sa trimitem date mai utile catre script-ul nostru de Python, pentru a simula un scenariu real de transmisie a datelor. Mai exact, vom prelua date de la senzorul LTR308, ce capteaza intensitatea luminoasa, apoi vom repeta setup-ul de la exercitiul 2. | ||
- | |||
- | * Inspectati exemplul ''apps/examples/ltr308'' pentru a vedea cum se utilizeaza senzorul LTR308 (optional, puteti sa il si compilati si testati). Pornind de la acest exemplu, veti modifica aplicatia ''apps/examples/mqttc_pub''. | ||
- | * Pentru a modifica aplicatia, vom folosi scheletul prezent pe branch-ul ''si-lab-11'' din ''nuttx-apps'' repo. Din directorul //apps//, schimbati branch-ul folosind: <code> | ||
- | git checkout si-lab-11 | ||
- | </code> | ||
- | |||
- | <note tip> | ||
- | Puteti verifica ca lucrati pe branch-ul corect folosind comanda ''git branch''. | ||
- | </note> | ||
- | |||
- | * Urmati TODO-urile marcate cu **(3)** din ''apps/examples/mqttc_pub''. | ||
- | * Dupa completarea codului, revenim in directorul //nuttx//. Pentru a putea folosi senzorul LTR308, aplicam urmatoarele configuratii la rularea ''make menuconfig'', peste configuratia folosita initial, de ''mqttc'': | ||
- | * ''CONFIG_SENSORS=y'' | ||
- | * ''CONFIG_SENSORS_LTR308=y'' | ||
- | * Compilati NuttX si incarcati-l pe placa. Folosind setup-ul de la exercitiul 2, cu cele 2 terminale deschise in paralel, transmiteti date folosind aplicatia ''mqttc_pub'' si captati-le folosind scriptul Python. | ||
- | <note important> | ||
- | Deoarece mesajul transmis este preluat de la senzor, rulam aplicatia folosim comanda: <code> | ||
- | mqttc_pub -t si-labs</code> | ||
- | </note> | ||
==== Resurse ==== | ==== Resurse ==== |