This shows you the differences between two versions of the page.
priot:laboratoare:04 [2024/10/15 11:19] vlad.radulescu2901 |
priot:laboratoare:04 [2024/11/05 15:26] (current) alexandru.bala [Bibliografie] |
||
---|---|---|---|
Line 4: | Line 4: | ||
Acest laborator ii va invata pe studenti sa: | Acest laborator ii va invata pe studenti sa: | ||
- | 1. Inteleaga ce este Raspberry Pi Pico si cum functioneaza. | + | * Inteleaga ce este Raspberry Pi Pico si cum functioneaza. |
- | 2. Invete despre senzorii BMP280 (temperatura si presiune) si LDR (lumina). | + | * Invete despre senzorii BMP280 (temperatura si presiune) si LDR (lumina). |
- | 3. Inteleaga ce este MicroPython, cum functioneaza si de ce este folosit. | + | * Inteleaga ce este MicroPython, cum functioneaza si de ce este folosit. |
- | 4. Configureze Raspberry Pi Pico in VS Code folosind extensia MicroPico. | + | * Configureze Raspberry Pi Pico in VS Code folosind extensia MicroPico. |
- | 5. Gaseasca adresa I2C a senzorului BMP280. | + | * Gaseasca adresa I2C a senzorului BMP280. |
- | 6. Conecteze si sa programeze senzorii pentru a citi date de la acestia. | + | * Conecteze si sa programeze senzorii pentru a citi date de la acestia. |
- | 7. Invete cum sa adune informatiile necesare pentru a scrie codul care citeste date de la senzori. | + | * Invete cum sa adune informatiile necesare pentru a scrie codul care citeste date de la senzori. |
Line 16: | Line 16: | ||
1. Ce este Raspberry Pi Pico? | 1. Ce este Raspberry Pi Pico? | ||
+ | |||
Raspberry Pi Pico este un microcontroler bazat pe cipul RP2040 dezvoltat de Raspberry Pi. Este ideal pentru proiecte de IoT, automatizari si roboti, fiind conceput pentru a interactiona cu senzori si alte componente electronice. | Raspberry Pi Pico este un microcontroler bazat pe cipul RP2040 dezvoltat de Raspberry Pi. Este ideal pentru proiecte de IoT, automatizari si roboti, fiind conceput pentru a interactiona cu senzori si alte componente electronice. | ||
Caracteristici principale: | Caracteristici principale: | ||
- | - Procesor dual-core ARM Cortex-M0+ la 133 MHz. | + | * Procesor dual-core ARM Cortex-M0+ la 133 MHz. |
- | - 264 KB RAM. | + | * 264 KB RAM. |
- | - 26 pini GPIO care permit conectarea diverselor senzori si dispozitive externe. | + | * 26 pini GPIO care permit conectarea diverselor senzori si dispozitive externe. |
- | - Suport pentru comunicatii I2C, SPI, UART, PWM si ADC. | + | * Suport pentru comunicatii I2C, SPI, UART, PWM si ADC. |
2. Ce este MicroPython? | 2. Ce este MicroPython? | ||
+ | |||
MicroPython este o implementare usoara a Python, conceputa special pentru microcontrolere. Este eficienta si usor de utilizat, permitand dezvoltatorilor sa controleze senzori si alte componente hardware utilizand un limbaj de nivel inalt. | MicroPython este o implementare usoara a Python, conceputa special pentru microcontrolere. Este eficienta si usor de utilizat, permitand dezvoltatorilor sa controleze senzori si alte componente hardware utilizand un limbaj de nivel inalt. | ||
Line 31: | Line 33: | ||
====Partea II: Configurarea mediului de dezvoltare in VS Code==== | ====Partea II: Configurarea mediului de dezvoltare in VS Code==== | ||
- | 1. Instalarea si configurarea VS Code cu extensia MicroPico | + | ==Instalarea si configurarea VS Code cu extensia MicroPico== |
- | + | Pas 1: Descarca si instaleaza VS Code: | |
- | Pas 1: Descarca si instaleaza VS Code | + | *Acceseaza https://code.visualstudio.com/ si descarca Visual Studio Code pentru sistemul tau de operare. |
- | - Acceseaza https://code.visualstudio.com/ si descarca Visual Studio Code pentru sistemul tau de operare. | + | |
Pas 2: Instaleaza extensia MicroPico | Pas 2: Instaleaza extensia MicroPico | ||
- | 1. Deschide VS Code. | + | |
- | 2. Acceseaza Extensions (Ctrl+Shift+X) si cauta MicroPico. | + | * Deschide VS Code. |
- | 3. Instaleaza extensia si urmeaza instructiunile pentru configurarea mediului de dezvoltare pentru Raspberry Pi Pico. | + | |
+ | * Acceseaza Extensions (Ctrl+Shift+X) si cauta MicroPico. | ||
+ | |||
+ | * Instaleaza extensia si urmeaza instructiunile pentru configurarea mediului de dezvoltare pentru Raspberry Pi Pico. | ||
Pas 3: Instalarea MicroPython pe Raspberry Pi Pico | Pas 3: Instalarea MicroPython pe Raspberry Pi Pico | ||
- | 1. Conecteaza Pico la computer tinand apasat butonul BOOTSEL. | + | |
- | 2. Descarca fisierul MicroPython UF2 pentru Raspberry Pi Pico de pe https://micropython.org/download/rp2-pico/. | + | * Conecteaza Pico la computer tinand apasat butonul BOOTSEL. |
- | 3. Copiaza fisierul .uf2 in unitatea USB care apare in sistemul tau dupa conectarea Pico. | + | |
- | 4. Pico va reporni automat cu MicroPython instalat. | + | * Descarca fisierul MicroPython UF2 pentru Raspberry Pi Pico de pe https://micropython.org/download/rp2-pico/. |
+ | |||
+ | * Copiaza fisierul .uf2 in unitatea USB care apare in sistemul tau dupa conectarea Pico. | ||
+ | |||
+ | * Pico va reporni automat cu MicroPython instalat. | ||
Pas 4: Testarea conexiunii in VS Code | Pas 4: Testarea conexiunii in VS Code | ||
- | 1. In VS Code, deschide un terminal nou (Ctrl + `) si apasa Ctrl + Shift + P pentru a deschide Command Palette. | ||
- | 2. Selecteaza MicroPico: List Serial Ports si asigura-te ca portul corect pentru Pico este selectat. | ||
- | 3. Daca totul este corect configurat, poti incepe sa rulezi cod pe Raspberry Pi Pico din VS Code. | ||
+ | * In VS Code, deschide un terminal nou (Ctrl + `) si apasa Ctrl + Shift + P pentru a deschide Command Palette. | ||
- | ====Tasks==== | + | * Selecteaza MicroPico: List Serial Ports si asigura-te ca portul corect pentru Pico este selectat. |
- | ===Task 1: Utilizarea senzorilor BMP280 si LDR=== | + | * Daca totul este corect configurat, poti incepe sa rulezi cod pe Raspberry Pi Pico din VS Code. |
- | 1. Conectarea senzorilor la Raspberry Pi Pico | ||
- | - Senzorul BMP280 (I2C): | + | ====Exercitii==== |
- | - SCL -> pin GP21. | + | |
- | - SDA -> pin GP20. | + | |
- | - VCC -> 3.3V. | + | |
- | - GND -> GND. | + | |
- | - Senzorul LDR: | + | ===Exercitiu 1: Utilizarea senzorilor BMP280 si LDR=== |
- | - Un pin al LDR conectat la 3.3V si celalalt la pinul GP26 (ADC0). | + | |
+ | 1. Conectarea senzorilor la Raspberry Pi Pico | ||
- | ===Task 2: Citirea senzorului de lumina (LDR)=== | + | * Senzorul BMP280 (I2C): |
+ | * SCL -> pin GP21. | ||
+ | * SDA -> pin GP20. | ||
+ | * VCC -> 3.3V. | ||
+ | * GND -> GND. | ||
+ | |||
+ | * Senzorul LDR: | ||
+ | * Un pin al LDR conectat la 3.3V si celalalt la pinul GP26 (ADC0). | ||
+ | {{:priot:laboratoare:conexiuni_raspberry_1.jpeg?600|}}{{:priot:laboratoare:conexiuni_raspberry_2.jpeg?600|}} | ||
+ | |||
+ | |||
+ | ===Exercitiu 2: Citirea senzorului de lumina (LDR)=== | ||
Pentru senzorul LDR, trebuie sa citesti o valoare analogica folosind ADC-ul de pe Raspberry Pi Pico. Urmatorii pasi te vor ajuta sa construiesti codul: | Pentru senzorul LDR, trebuie sa citesti o valoare analogica folosind ADC-ul de pe Raspberry Pi Pico. Urmatorii pasi te vor ajuta sa construiesti codul: | ||
Ce trebuie sa stii: | Ce trebuie sa stii: | ||
- | 1. ADC (Analog to Digital Converter) este folosit pentru a converti semnalele analogice in valori numerice pe care Pico le poate procesa. | + | * ADC (Analog to Digital Converter) este folosit pentru a converti semnalele analogice in valori numerice pe care Pico le poate procesa. |
- | 2. In cazul unui LDR, poti citi intensitatea luminii prin intermediul unui pin ADC de pe Pico. | + | * In cazul unui LDR, poti citi intensitatea luminii prin intermediul unui pin ADC de pe Pico. |
- | ===Task 3: Gasirea adresei senzorului I2C=== | + | ===Exercitiu 3: Gasirea adresei senzorului I2C=== |
Inainte de a putea citi date de la senzorul BMP280, trebuie sa afli adresa I2C a acestuia. Adresele I2C sunt unice pentru fiecare dispozitiv si pot varia. Procesul de a gasi adresa este esential pentru a comunica corect cu senzorul. | Inainte de a putea citi date de la senzorul BMP280, trebuie sa afli adresa I2C a acestuia. Adresele I2C sunt unice pentru fiecare dispozitiv si pot varia. Procesul de a gasi adresa este esential pentru a comunica corect cu senzorul. | ||
Pasul 1: Scrierea codului pentru scanarea dispozitivelor I2C | Pasul 1: Scrierea codului pentru scanarea dispozitivelor I2C | ||
- | - Pentru a gasi adresa senzorului, trebuie sa scrii un cod care sa scaneze dispozitivele I2C conectate la Raspberry Pi Pico. | + | |
+ | Pentru a gasi adresa senzorului, trebuie sa scrii un cod care sa scaneze dispozitivele I2C conectate la Raspberry Pi Pico. | ||
Ce trebuie sa stii: | Ce trebuie sa stii: | ||
- | 1. I2C este un protocol de comunicatie utilizat pentru a conecta senzori si alte componente la un microcontroler. | + | * I2C este un protocol de comunicatie utilizat pentru a conecta senzori si alte componente la un microcontroler. |
- | 2. In Raspberry Pi Pico, poti utiliza biblioteca machine din MicroPython pentru a comunica cu dispozitivele I2C. | + | * In Raspberry Pi Pico, poti utiliza biblioteca machine din MicroPython pentru a comunica cu dispozitivele I2C. |
- | 3. Pinul SCL (Serial Clock) si pinul SDA (Serial Data) sunt necesare pentru comunicatia I2C. In acest laborator, vei folosi GP21 pentru SCL si GP20 pentru SDA. | + | * Pinul SCL (Serial Clock) si pinul SDA (Serial Data) sunt necesare pentru comunicatia I2C. In acest laborator, vei folosi GP21 pentru SCL si GP20 pentru SDA. |
Informatia necesara pentru a scrie codul: | Informatia necesara pentru a scrie codul: | ||
- | - Foloseste functia scan() din obiectul I2C pentru a obtine o lista cu adresele dispozitivelor conectate. | + | * Foloseste functia scan() din obiectul I2C pentru a obtine o lista cu adresele dispozitivelor conectate. |
- | ===Task 4: Citirea senzorului de temperatura=== | + | ===Exercitiu 4: Citirea senzorului de temperatura=== |
Acum ca ai gasit adresa senzorului BMP280, este timpul sa scrii codul care citeste datele de temperatura si presiune de la acesta. Pentru a face asta, trebuie sa intelegi urmatoarele concepte: | Acum ca ai gasit adresa senzorului BMP280, este timpul sa scrii codul care citeste datele de temperatura si presiune de la acesta. Pentru a face asta, trebuie sa intelegi urmatoarele concepte: | ||
1. Structura registrului BMP280 | 1. Structura registrului BMP280 | ||
- | - BMP280 comunica printr-un set de registre. Datele de temperatura si presiune sunt stocate in aceste registre si trebuie citite in format brut. | + | * BMP280 comunica printr-un set de registre. Datele de temperatura si presiune sunt stocate in aceste registre si trebuie citite in format brut. |
- | - Registrele importante pentru acest proiect sunt: | + | * Registrele importante pentru acest proiect sunt: |
- | - 0xFA pana la 0xFC: Temperatura. | + | * 0xFA pana la 0xFC: Temperatura. |
- | - 0xF7 pana la 0xF9: Presiune. | + | * 0xF7 pana la 0xF9: Presiune. |
2. Citirea coeficientilor de calibrare | 2. Citirea coeficientilor de calibrare | ||
- | - Senzorul BMP280 furnizeaza coeficienti de calibrare care sunt esentiali pentru a converti datele brute in valori corecte de temperatura si presiune. | + | * Senzorul BMP280 furnizeaza coeficienti de calibrare care sunt esentiali pentru a converti datele brute in valori corecte de temperatura si presiune. |
- | - Acesti coeficienti se gasesc in registrele de calibrare care incep de la 0x88. | + | * Acesti coeficienti se gasesc in registrele de calibrare care incep de la 0x88. |
3. Cum sa scrii functii pentru a citi datele | 3. Cum sa scrii functii pentru a citi datele | ||
- | - Pasul 1: Citeste datele brute din registre. | + | * Citeste datele brute din registre. |
- | - Pasul 2: Foloseste coeficientii de calibrare pentru a compensa valorile brute. | + | * Foloseste coeficientii de calibrare pentru a compensa valorile brute. |
- | - Pasul 3: Afiseaza rezultatele finale. | + | * Afiseaza rezultatele finale. |
Etape: | Etape: | ||
- | 1. Initiaza senzorul: Scrie o functie pentru a seta senzorul in modul de operare normal. Acest lucru se face prin scrierea unei valori in registrul de control al senzorului. | + | * Initiaza senzorul: Scrie o functie pentru a seta senzorul in modul de operare normal. Acest lucru se face prin scrierea unei valori in registrul de control al senzorului. |
- | 2. Citeste coeficientii de calibrare: Aceasta este o alta functie care citeste datele de calibrare de la senzor. Foloseste functia readfrom_mem() pentru a citi din registrele respective. | + | * Citeste coeficientii de calibrare: Aceasta este o alta functie care citeste datele de calibrare de la senzor. Foloseste functia readfrom_mem() pentru a citi din registrele respective. |
- | 3. Citeste valorile brute de temperatura si presiune: Scrie functii pentru a citi datele brute din registrele 0xF7-0xFC. | + | * Citeste valorile brute de temperatura si presiune: Scrie functii pentru a citi datele brute din registrele 0xF7-0xFC. |
- | 4. Compenseaza datele: Foloseste formulele de calibrare specificate in documentatia BMP280 pentru a corecta valorile brute. | + | * Compenseaza datele: Foloseste formulele de calibrare specificate in documentatia BMP280 pentru a corecta valorile brute. |
==== Bibliografie ==== | ==== Bibliografie ==== | ||
Line 122: | Line 135: | ||
- [[https://datasheets.raspberrypi.com/rp2040/rp2040-datasheet.pdf|Datasheet microcontroller RP2040]] | - [[https://datasheets.raspberrypi.com/rp2040/rp2040-datasheet.pdf|Datasheet microcontroller RP2040]] | ||
- [[https://datasheets.raspberrypi.com/pico/pico-datasheet.pdf|Datasheet Raspberry Pi Pico]] | - [[https://datasheets.raspberrypi.com/pico/pico-datasheet.pdf|Datasheet Raspberry Pi Pico]] | ||
+ | - [[https://www.mouser.com/datasheet/2/783/BST-BME280-DS002-1509607.pdf?srsltid=AfmBOooMjmGwE224Ybw2eDvbuBsEsAHlDV7tL5KBk68xMOQx-3LOMppJ| Datasheet BME280]] | ||
- [[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]] |