Differences

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

Link to this comparison view

si:iot2025:lab04 [2025/07/13 12:10]
robert_ionut.alexa created
si:iot2025:lab04 [2025/08/10 16:42] (current)
robert_ionut.alexa
Line 1: Line 1:
-===== Laboratorul ​11NuttX - MQTT =====+===== Laboratorul ​04. MQTT =====
  
 ==== Despre IoT ==== ==== Despre IoT ====
Line 39: Line 39:
  
 **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''​.
 +  * Activati ''​CONFIG_EXAMPLES_MQTTC''​ folosind ''​make menuconfig''​ pentru a putea rula exemplul default din NuttX, ''​mqttc_pub''​.
 +  * Compilati, incarcati pe ceas noul binar si conectati-va la seriala folosind utilitarul picocom.
 +  * Verificati ca aplicatia e instalata, folosind comanda: ''?''​.
  
-  ​* 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.+**2.** Pentru a putea testa aplicatia, ​ne dorim sa cream un setup de tipul //Publisher-Subscriber//. Pentru aceastavom crea un MQTT subscriber care sa primeasca datele trimise ​de MQTT publisher (reprezentat de placa). 
 + 
 +  * Instalati libraria ''​paho-mqtt''​ pe masina virtuala: ''​pip3 install paho-mqtt''​.
  
 <note important>​ <note important>​
-Vom folosi o versiune diferita a toolchain-ului. Adaptati comenzile din primul laborator pentru numele acestui toolchain. +Daca nu reusiti sa instalati paho-mqtt, puteti incerca sa creeati un virtual environment de python''​python3 ​-m venv venv && source venv/bin/activate''​Dupa aceea ar trebui sa va mearga ​si instalarea ''​paho-mqtt''​.
-<​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>​ </​note>​
  
-  * Pentru a configura NuttX cu suport pentru aplicatia ''​mqttc_pub'',​ vom folosi urmatoarea comanda: <​code>​ +  * 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.
-./​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). +
- +
-  * Instalati libraria ''​paho-mqtt''​ pe masina virtuala: <​code>​ +
-pip3 install paho-mqtt +
-</​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 90:
 </​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 118: Line 97:
 </​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. +**3.** Pornind de la ''​nuttx-apps/​examples/lsm6dsl-reader''​ din [[lab02|Laborator 02]]cititi valorile accelerometrului ​si publicati-le prin MQTT.
- +
-  * 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 coduluirevenim 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 ====
si/iot2025/lab04.1752397833.txt.gz · Last modified: 2025/07/13 12:10 by robert_ionut.alexa
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