This shows you the differences between two versions of the page.
si:iot2025:lab01 [2025/08/09 20:34] robert_ionut.alexa |
si:iot2025:lab01 [2025/08/11 12:50] (current) dan.tudose |
||
---|---|---|---|
Line 3: | Line 3: | ||
Bine ați venit la școala de vară IoT Summer School! | Bine ați venit la școala de vară IoT Summer School! | ||
- | În cadrul școlii de vară, ne propunem să vă familiarizăm cu sisteme de operare RTOS (Real time operating system) - NuttX - care se pretează mai degrabă microcontrollerelor decât sistemelor de tip desktop. | + | În cadrul școlii de vară, ne propunem să vă familiarizăm cu sisteme de operare RTOS (Real time operating system) - NuttX - care se pretează mai degrabă microcontrolerelor decât sistemelor de tip desktop. |
- | În acest laborator veți învăța cum să compilați și să încărcați sistemul de operare NuttX pe smartwatch-ul [[https://github.com/dantudose/open-smartwatch|Hector Watch]], dezvoltat în facultate și bazat pe un modul **ESP32 S3 mini** la care au fost adăugate: | + | În acest laborator veți învăța cum să compilați și să încărcați sistemul de operare NuttX pe smartwatch-ul [[https://github.com/dantudose/Hacktor-Watch-2.0/|Hacktor Watch]], dezvoltat în facultate și bazat pe un microprocesor **ESP32 S3** la care au fost adăugate: |
- | * patru butoane externe | + | * doua butoane externe |
- | * un step counter | + | |
* un display cu touch | * un display cu touch | ||
* un senzor de haptics | * un senzor de haptics | ||
- | * un accelerometru | + | * un accelerometru si giroscop |
- | * un cititor de carduri microSD | + | |
- | Mai jos puteți vedea și o poză cu PCB-ul ceasului: | + | Mai jos puteți vedea diagrama hardware a ceasului: |
- | [[https://github.com/radupascale/smartwatch-licenta|{{ si:laboratoare:pcb2_no_bg.png?500 }}]] | + | {{ :si:iot2025:hacktor_watch_2.0.jpg?600 }} |
- | Pentru a putea fi folosit pe microcontrollere, NuttX are un memory-footprint foarte scăzut (de ordinul câtorva sute de kilobytes). Un alt feature care îl face potrivit sistemelor low-end este faptul că nu folosește mecanismele de memorie virtuală (mai costisitoare atât din punct de vedere hardware, cât și software) în mod implicit, acest mod de operare numindu-se flat-mode addressing. | + | Pentru a putea fi folosit pe microcontrolere, NuttX are un memory-footprint foarte scăzut (de ordinul câtorva sute de kilobytes). Un alt feature care îl face potrivit sistemelor low-end este faptul că nu folosește mecanismele de memorie virtuală (mai costisitoare atât din punct de vedere hardware, cât și software) în mod implicit, acest mod de operare numindu-se flat-mode addressing. |
===== Setup ===== | ===== Setup ===== | ||
Line 116: | Line 114: | ||
</code> | </code> | ||
- | În functie de tipul de placă pe care rulați, este posibil să fie nevoie să apăsați un buton de ''BOOT'' (''IO0'') atunci când încărcați NuttX. Astfel, placa intră în modul de "Download" - în mod normal, placa este în starea de "Boot". Butonul trebuie apăsat doar atunci când se încearcă stabilirea conexiunii cu firmware-ul de pe ESP32. În cazul smartwatch-ului nostru, aveți mai jos o poză atașată care vă arată ce rol are fiecare buton: | + | În functie de tipul de placă pe care rulați, este posibil să fie nevoie să apăsați un buton de ''BOOT'' (''IO0'') atunci când încărcați NuttX. Astfel, placa intră în modul de "Download" - în mod normal, placa este în starea de "Boot". Butonul trebuie apăsat doar atunci când se încearcă stabilirea conexiunii cu firmware-ul de pe ESP32. În cazul smartwatch-ului nostru, aveți mai jos o poză atașată care vă arată ce rol au cele doua butoane disponibile pe carcasa: |
- | {{ :si:laboratoare:hacktor_buttons.jpg |}} | + | {{ :si:iot2025:hacktor_buttons.jpg?300 }} |
Dacă vrem să încărcăm NuttX pe un ESP32S3 (microcontroller-ul care stă la baza ceasului nostru), pentru a comuta din "Boot" in "Download" nu este suficient să apăsați un singur buton, ci trebuie să urmați o secvență de operații: ''Țineți apăsat BOOT'' -> ''apăsați RESET **o singură dată**'' -> ''ridicați degetul de pe BOOT''. Acum puteți să flash-uiți microcontroller-ul folosind comanda ''make flash ESPTOOL_PORT=/dev/ttyACM0 ESPTOOL_BAUD=115200 ESPTOOL_BINDIR=../esp32s3-bins''. | Dacă vrem să încărcăm NuttX pe un ESP32S3 (microcontroller-ul care stă la baza ceasului nostru), pentru a comuta din "Boot" in "Download" nu este suficient să apăsați un singur buton, ci trebuie să urmați o secvență de operații: ''Țineți apăsat BOOT'' -> ''apăsați RESET **o singură dată**'' -> ''ridicați degetul de pe BOOT''. Acum puteți să flash-uiți microcontroller-ul folosind comanda ''make flash ESPTOOL_PORT=/dev/ttyACM0 ESPTOOL_BAUD=115200 ESPTOOL_BINDIR=../esp32s3-bins''. | ||
Line 169: | Line 167: | ||
* [[https://en.wikipedia.org/wiki/Cross_compiler| What is a cross-compiler?]] | * [[https://en.wikipedia.org/wiki/Cross_compiler| What is a cross-compiler?]] | ||
* [[https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/tools/idf-tools.html| ESP32 toolchain]] | * [[https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/tools/idf-tools.html| ESP32 toolchain]] | ||
+ | * [[https://developer.espressif.com/blog/nuttx-adding-porting-an-app/| Building Applications on NuttX]] |