This shows you the differences between two versions of the page.
priot:laboratoare:01 [2024/10/06 20:44] jan.vaduva [Microcontroler] |
priot:laboratoare:01 [2024/10/15 02:08] (current) alexandru.bala [Microcontroler] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ===== Simulator Wowki, introducere în RP2040 ===== | + | ===== Laboratorul 01: Simulator Wowki, introducere în RP2040 ===== |
Line 10: | Line 10: | ||
| {{ :eap:laboratoare:rpi-pico.jpg?nolink&200 |Raspberry Pi Pico board}} | {{ :eap:laboratoare:marble-pico.jpg?nolink&400 |Marble Pico board}} | | | {{ :eap:laboratoare:rpi-pico.jpg?nolink&200 |Raspberry Pi Pico board}} | {{ :eap:laboratoare:marble-pico.jpg?nolink&400 |Marble Pico board}} | | ||
- | Pentru a debloca potențialul RP2040, Raspberry Pi Foundation a creat Pico-SDK. Acest kit de dezvoltare software (SDK) gratuit și open-source vă oferă instrumentele și bibliotecile necesare pentru a programa RP2040 în C și C++. | + | Raspberry Pi Pico oferă o flexibilitate remarcabilă în ceea ce privește programarea. Alegerea metodei potrivite depinde de nevoile și preferințele tale. Indiferent de metoda aleasă, Pico-SDK oferă o bază solidă pentru dezvoltarea de aplicații embedded. |
+ | Pentru a debloca potențialul microcontroller-ului RP2040, Raspberry Pi Foundation a creat Pico-SDK. Acest kit de dezvoltare software (SDK) gratuit și open-source vă oferă instrumentele și bibliotecile necesare pentru a programa RP2040 în C și C++. | ||
+ | |||
+ | Pe lângă Pico-SDK, există și alte metode eficiente pentru a programa Raspberry Pi Pico, fiecare având propriile avantaje și dezavantaje: | ||
+ | |||
+ | 1. **MicroPython** este o implementare a limbajului Python pentru microcontrolere și sisteme embedded. Oferă avantajele Python-ului, cum ar fi dezvoltarea rapidă și sintaxa simplă, păstrând în același timp o amprentă mică potrivită pentru dispozitive cu resurse limitate. Este ideal pentru prototipuri rapide și proiecte educaționale, deși poate avea performanțe ușor mai scăzute decât C/C++ pentru aplicații care necesită calcule intensive. | ||
+ | |||
+ | 2. **CircuitPython** este o variantă a Python-ului optimizată pentru microcontrolere, cu accent pe ușurința utilizării și integrarea hardware. Este similar cu MicroPython, dar se remarcă prin integrarea superioară cu plăci precum Raspberry Pi Pico și o comunitate în expansiune. Deși excelent pentru proiecte educaționale și de dimensiuni mici spre medii, poate avea unele limitări în comparație cu MicroPython în ceea ce privește gama de biblioteci și funcționalități disponibile. | ||
+ | |||
+ | 3. Alte limbaje: | ||
+ | * **Rust**: Un limbaj de programare modern, sigur și performant, care devine din ce în ce mai popular în dezvoltarea embedded. | ||
+ | * **Assembly**: Pentru aplicații foarte specifice și optimizate, dar necesită o înțelegere profundă a arhitecturii procesorului. | ||
+ | |||
+ | IDE-uri și medii de dezvoltare: | ||
+ | |||
+ | * Thonny: Simplu, ideal pentru începători și MicroPython. | ||
+ | * Visual Studio Code: Versatil, cu extensii pentru C/C++, MicroPython și CircuitPython. | ||
+ | * Arduino IDE: Familiar utilizatorilor de Arduino, configurabil pentru Pico. | ||
+ | * Linia de comandă: Control complet pentru utilizatori avansați. | ||
+ | * Platform IO: Platformă unificată pentru proiecte IoT, inclusiv Pico. | ||
+ | |||
+ | Opțiuni pentru programare cu SDK-ul C: | ||
+ | |||
+ | * VSCode cu extensia oficială Raspberry Pi, de aici:https://github.com/raspberrypi/pico-vscode (vă îndeamnă să citiți PDF-ul pentru instrucțiuni de instalare / utilizare -- so do it!) | ||
+ | * Arduino IDE cu extensie specifică: https://arduino-pico.readthedocs.io/en/latest/install.html (read the docs) | ||
+ | * Pentru Linux: Clonare SDK (https://github.com/raspberrypi/pico-sdk) și instalare pachete necesare, e.g.**gcc-arm-none-eabi build-essential cmake ninja-build** pe Ubuntu>=22.04. | ||
+ | |||
+ | |||
+ | Desi marea majoritatea a proiectelor experimentate in cadrul laboratorului pot fi realizate cu MicroPython sau CircuitPython pentru proiectele mai complexe recomandam utilizarea C/C++ in special din considerente de performanta. De asemenea recomandam sa verificati disponibilitatea bibliotecilor, pentru a va asigura că există biblioteci disponibile pentru limbajul și proiectul dvs. | ||
==== RP2040 ==== | ==== RP2040 ==== | ||
Line 28: | Line 56: | ||
* Memorie: | * Memorie: | ||
* Suport pentru memorie externă: Codul poate fi executat direct din memoria flash externă folosind interfețele SPI, DSPI sau QSPI. O mică cache internă îmbunătățește performanța pentru datele accesate frecvent. | * Suport pentru memorie externă: Codul poate fi executat direct din memoria flash externă folosind interfețele SPI, DSPI sau QSPI. O mică cache internă îmbunătățește performanța pentru datele accesate frecvent. | ||
- | * SRAM internă: Memoria internă (264 kB) poate stoca cod sau date și este accesibilă simultan de diferite părți ale cipului. | + | * SRAM internă: Memoria internă (256 kB) poate stoca cod sau date și este accesibilă simultan de diferite părți ale cipului. |
* Procesare: | * Procesare: | ||
* **DMA**: Canalele DMA (Direct Memory Access) dedicate descarcă sarcinile repetitive de mutare a datelor de la procesoare, îmbunătățind eficiența. | * **DMA**: Canalele DMA (Direct Memory Access) dedicate descarcă sarcinile repetitive de mutare a datelor de la procesoare, îmbunătățind eficiența. | ||
Line 38: | Line 66: | ||
* **I2C**: Pentru comunicație serială multi-master | * **I2C**: Pentru comunicație serială multi-master | ||
* I/O programabil (PIO): Controlierele PIO flexibile pot fi configurate pentru diverse funcții de I/O personalizate. | * I/O programabil (PIO): Controlierele PIO flexibile pot fi configurate pentru diverse funcții de I/O personalizate. | ||
- | * USB - poate fi utilizată atât pentru programarea microcontrolerului, cât și pentru comunicația cu alte dispozitive: | + | * **USB** - poate fi utilizată atât pentru programarea microcontrolerului, cât și pentru comunicația cu alte dispozitive: |
* Controler USB integrat: Oferă funcționalitate USB host sau device sub control software (Full Speed/Low Speed). | * Controler USB integrat: Oferă funcționalitate USB host sau device sub control software (Full Speed/Low Speed). | ||
* Convertor analog-digital (**ADC** - pentru conversia analog-digitală): Patru canale ADC pot fi folosite pentru a converti semnalele analogice în date digitale. | * Convertor analog-digital (**ADC** - pentru conversia analog-digitală): Patru canale ADC pot fi folosite pentru a converti semnalele analogice în date digitale. | ||
- | * Ceasuri - pentru măsurarea timpului și generarea de întreruperi: | + | * **PWM**: Pentru generarea de semnale PWM (Pulse Width Modulation) |
+ | * **Ceasuri** - pentru măsurarea timpului și generarea de întreruperi: | ||
* Două bucle cu fază blocată (PLL): Generează ceasuri pentru funcții specifice precum USB (48MHz) și sistemul (până la 133MHz). | * Două bucle cu fază blocată (PLL): Generează ceasuri pentru funcții specifice precum USB (48MHz) și sistemul (până la 133MHz). | ||
* Gestionarea puterii: | * Gestionarea puterii: | ||
Line 107: | Line 136: | ||
- Proiectați și implementați un program pentru un microcontroler Raspberry Pi Pico (RP2040) care incrementează un contor de la 0 la 9 și afișează numărul curent pe un display cu 7 segmente. Programul ar trebui să includă și un buton de resetare care, atunci când este apăsat, resetează contorul înapoi la 0. | - Proiectați și implementați un program pentru un microcontroler Raspberry Pi Pico (RP2040) care incrementează un contor de la 0 la 9 și afișează numărul curent pe un display cu 7 segmente. Programul ar trebui să includă și un buton de resetare care, atunci când este apăsat, resetează contorul înapoi la 0. | ||
* [[https://wokwi.com/projects/403561096139405313|Folositi template-ul disponibil]] | * [[https://wokwi.com/projects/403561096139405313|Folositi template-ul disponibil]] | ||
+ | - Rescrieti aplicatia de la punctul 2 in MicroPython si observati diferentele de implementare. | ||
==== Bibliografie ==== | ==== Bibliografie ==== | ||
Line 114: | Line 144: | ||
- [[https://www.raspberrypi.com/documentation/microcontrollers/c_sdk.html|Pico-SDK]] | - [[https://www.raspberrypi.com/documentation/microcontrollers/c_sdk.html|Pico-SDK]] | ||
- [[https://www.raspberrypi.com/documentation/pico-sdk/hardware.html#ga71d35b29e897b9bb4fc881b587b08cab|Documentatie Pico-SDK]] | - [[https://www.raspberrypi.com/documentation/pico-sdk/hardware.html#ga71d35b29e897b9bb4fc881b587b08cab|Documentatie Pico-SDK]] | ||
+ | - [[https://proto-pic.co.uk/content/RPI-PICO-R3-PUBLIC-SCHEMATIC.pdf|Schematic Raspberry Pi Pico]] | ||
<hidden> | <hidden> |