Differences

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

Link to this comparison view

si:iot2025:lab03 [2025/08/10 13:48]
robert_ionut.alexa
si:iot2025:lab03 [2025/08/10 16:15] (current)
robert_ionut.alexa
Line 1: Line 1:
 ===== Laboratorul 03. Wi-Fi, NimBLE ===== ===== Laboratorul 03. Wi-Fi, NimBLE =====
  
-În laboratorul de astăzi vom configura smartwatch-ul Hacktorwatch să acceseze internetul prin intermediul Wi-Fi-ului (denumit station mode), iar prin NimBLE (o biblioteca care implementeaza BLE - Bluetooth Low Energy) vom trimite date si alerte legat de starea bateriei catre smartphone.+În laboratorul de astăzi vom configura smartwatch-ul Hacktorwatch să acceseze internetul prin intermediul Wi-Fi-ului (denumit station mode), iar prin NimBLE (o biblioteca care implementeaza BLE - Bluetooth Low Energy) vom trimite date si alerte legat de starea bateriei catre smartphone, iar in final vom configura ceasul sa functioneze ca un mini-router la care ne vom conecta laptopul.
  
 ==== Wi-Fi ==== ==== Wi-Fi ====
Line 16: Line 16:
 </​note>​ </​note>​
  
-În NuttX, ESP32-ul poate rula atât ca un station, cât și ca un access point (software access point - SoftAP - deoarece managementul comunicației se întâmplă în cadrul sistemului de operare, nu în hardware). ​Cu toate acestea, ​+În NuttX, ESP32-ul poate rula atât ca un station, cât și ca un access point (software access point - SoftAP - deoarece managementul comunicației se întâmplă în cadrul sistemului de operare, nu în hardware).
  
 Pentru a putea conecta smartwatch-ul la o rețea Wi-Fi existentă identificată prin <​myssid>:<​mypasswd>,​ se pot folosi comenzile de mai jos: Pentru a putea conecta smartwatch-ul la o rețea Wi-Fi existentă identificată prin <​myssid>:<​mypasswd>,​ se pot folosi comenzile de mai jos:
Line 34: Line 34:
  
 Deoarece wapi essid doar setează intern numele rețelei, pentru conectarea efectivă la rețea și obținerea unei adrese IP este nevoie de o comandă explicită - ''​renew wlan0''​. Deoarece wapi essid doar setează intern numele rețelei, pentru conectarea efectivă la rețea și obținerea unei adrese IP este nevoie de o comandă explicită - ''​renew wlan0''​.
 +
 +Pentru a putea configura ESP32 să ruleze ca un SoftAP (prin a doua interfață de rețea disponibilă - ''​wlan1''​),​ e nevoie de un set asemănător de comenzi:
 +
 +<​code>​
 +ifup wlan1
 +dhcpd_start wlan1
 +wapi psk wlan1 <​mypasswd>​ 3
 +wapi essid wlan1 nuttxapp 1
 +</​code>​
 +
 +Astfel, se creează rețeaua ''​nuttxapp'',​ protejată tot prin WPA2 si CCMP, având parola <​mypasswd>​. Prin ''​dhcpd_start''​ se pornește daemon-ul ''​dhcpd''​ care va rula un server de DHCP și va asigna un IP tuturor device-urile conectate.
 +
 +De asemenea, o altă comandă utilă pentru a investiga starea interfețelor de rețea este ''​ifconfig'',​ asemănătoare cu cea din Linux.
  
 O descriere mai detaliată a API-ului expus prin WAPI (de exemplu, ''​wapi show wlan0''​),​ precum și cum te poți conecta la o rețea nesecurizată (denumita open network), poate fi consultată [[https://​nuttx.incubator.apache.org/​docs/​12.3.0/​applications/​wapi/​index.html|aici]] O descriere mai detaliată a API-ului expus prin WAPI (de exemplu, ''​wapi show wlan0''​),​ precum și cum te poți conecta la o rețea nesecurizată (denumita open network), poate fi consultată [[https://​nuttx.incubator.apache.org/​docs/​12.3.0/​applications/​wapi/​index.html|aici]]
Line 50: Line 63:
  
 De cele mai multe ori, un smartphone este BLE central, iar smartwatch-urile sunt BLE peripherals,​ insa nu este obligatoriu. In realitate, smartwatch-urile moderne se pot conecta la diverse accesorii de la care pot citi date (de exemplu, smartwatch-urile Garmin se pot conecta la anumite heart rate monitors pentru a masura pulsul cat mai exact). De cele mai multe ori, un smartphone este BLE central, iar smartwatch-urile sunt BLE peripherals,​ insa nu este obligatoriu. In realitate, smartwatch-urile moderne se pot conecta la diverse accesorii de la care pot citi date (de exemplu, smartwatch-urile Garmin se pot conecta la anumite heart rate monitors pentru a masura pulsul cat mai exact).
 +
 +Pe de alta parte, GATT defineste rolurile de Server - Client pentru dispozitivele conectate prin BLE. Intr-o arhitectura de tipul smartphone - smartwatch, smartphone-ul este BLE central dar in acelasi timp este si client, deoarece citeste datele de pe smartwatch.
  
 Asa cum am explicat deja, GATT ofera o modalitate ierarhica de a propaga datele prin impartirea acestora in servicii (categorii de date) si caracteristici (date efective). Atat serviciile, cat si caracteristicile sunt identificabile printr-un UUID unic, care este un numar pe 128 de octeti. Asa cum am explicat deja, GATT ofera o modalitate ierarhica de a propaga datele prin impartirea acestora in servicii (categorii de date) si caracteristici (date efective). Atat serviciile, cat si caracteristicile sunt identificabile printr-un UUID unic, care este un numar pe 128 de octeti.
Line 74: Line 89:
  
 **1.** Conectați smartwatch-ul la rețeaua facultății și testați cu ''​ping 8.8.8.8''​ că aveți acces la internet. **1.** Conectați smartwatch-ul la rețeaua facultății și testați cu ''​ping 8.8.8.8''​ că aveți acces la internet.
-  * Dupa ce ati configurat ceasul folosind comenzile din laborator, incercati ''​ping 8.8.8.8''​. Observati ca nu se trimite niciun pachet.+  * Dupa ce ati configurat ceasul folosind comenzile din laborator, incercati ''​ping 8.8.8.8''​. Observati ca nu se trimite niciun pachet. In unele cazuri este posibil chiar ca unele din comenzi sa va returneze eroare.
   * Asa cum am precizat anterior, NuttX nu ofera support pentru time division multiplexing intre BLE si Wi-Fi, iar build-urile noastre sunt configurate sa foloseasca in mod implicit interfata de BLE.   * Asa cum am precizat anterior, NuttX nu ofera support pentru time division multiplexing intre BLE si Wi-Fi, iar build-urile noastre sunt configurate sa foloseasca in mod implicit interfata de BLE.
   * Va trebui sa rulati ''​ifconfig''​ pentru a determina numele interfetei de BLE, iar mai apoi ''​ifdown <​interfata>''​ pentru a o opri.   * Va trebui sa rulati ''​ifconfig''​ pentru a determina numele interfetei de BLE, iar mai apoi ''​ifdown <​interfata>''​ pentru a o opri.
Line 95: Line 110:
 Numele device-ului va fi exportat prin ''​g_gap_name''​. Ideal, acesta trebuie modificat pentru a nu va confunda device-ul cu cel al colegilor. Numele device-ului va fi exportat prin ''​g_gap_name''​. Ideal, acesta trebuie modificat pentru a nu va confunda device-ul cu cel al colegilor.
 </​note>​ </​note>​
 +
 +**3. (Bonus)** Ne dorim sa configuram smartwatch-ul sa functioneze ca un mini-router cu doua interfete:
 +  * ''​wlan0''​ va fi conectata la internet in urma exercitiului 1.
 +  * ''​wlan1''​ va rula un server de dhcp si va accepta cereri de conectarea din partea altor dispozitive (laptopul vostru), iar orice pachet primit pe wlan1 trebuie rutat spre wlan0.
 +
 +Pentru a face asta trebuie sa rulati comenzile din laborator, la care se adauga inca doua comenzi extra:
 +  - Trebuie sa setati regula implicită de rutare folosind comanda ''​addroute default 192.168.0.1 wlan0''​.
 +  - Trebuie sa adaugati o noua regula in iptables pentru a aplica NAT pe fiecare pachet rutat: ''​iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE''​.
si/iot2025/lab03.1754822913.txt.gz · Last modified: 2025/08/10 13:48 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