Differences

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

Link to this comparison view

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 ​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 ​configura ​NuttX cu suport pentru aplicatia ​''​mqttc_pub''​, vom folosi urmatoarea comanda: <​code>​ +
-./​tools/​configure.sh esp32-sparrow-kit:​mqttc +
-</​code>​ +
-  * Compilati ​NuttXfolositi ''​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 ====
si/iot2025/lab04.1752397897.txt.gz · Last modified: 2025/07/13 12:11 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