Laboratorul 04: Introducere in Raspberry Pi Pico, MicroPython si utilizarea senzorilor (BMP280 si LDR)

Obiective:

Acest laborator ii va invata pe studenti sa:

  • Inteleaga ce este Raspberry Pi Pico si cum functioneaza.
  • Invete despre senzorii BMP280 (temperatura si presiune) si LDR (lumina).
  • Inteleaga ce este MicroPython, cum functioneaza si de ce este folosit.
  • Configureze Raspberry Pi Pico in VS Code folosind extensia MicroPico.
  • Gaseasca adresa I2C a senzorului BMP280.
  • Conecteze si sa programeze senzorii pentru a citi date de la acestia.
  • Invete cum sa adune informatiile necesare pentru a scrie codul care citeste date de la senzori.

Partea I: Introducere teoretica

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.

Caracteristici principale:

  • Procesor dual-core ARM Cortex-M0+ la 133 MHz.
  • 264 KB RAM.
  • 26 pini GPIO care permit conectarea diverselor senzori si dispozitive externe.
  • Suport pentru comunicatii I2C, SPI, UART, PWM si ADC.

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.

Partea II: Configurarea mediului de dezvoltare in VS Code

Instalarea si configurarea VS Code cu extensia MicroPico

Pas 1: Descarca si instaleaza VS Code:

Pas 2: Instaleaza extensia MicroPico

  • Deschide VS Code.
  • 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

  • Conecteaza Pico la computer tinand apasat butonul BOOTSEL.
  • 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

  • In VS Code, deschide un terminal nou (Ctrl + `) si apasa Ctrl + Shift + P pentru a deschide Command Palette.
  • Selecteaza MicroPico: List Serial Ports si asigura-te ca portul corect pentru Pico este selectat.
  • Daca totul este corect configurat, poti incepe sa rulezi cod pe Raspberry Pi Pico din VS Code.

Exercitii

Exercitiu 1: Utilizarea senzorilor BMP280 si LDR

1. Conectarea senzorilor la Raspberry Pi Pico

  • 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).

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:

Ce trebuie sa stii:

  • ADC (Analog to Digital Converter) este folosit pentru a converti semnalele analogice in valori numerice pe care Pico le poate procesa.
  • In cazul unui LDR, poti citi intensitatea luminii prin intermediul unui pin ADC de pe Pico.

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.

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.

Ce trebuie sa stii:

  • I2C este un protocol de comunicatie utilizat pentru a conecta senzori si alte componente la un microcontroler.
  • In Raspberry Pi Pico, poti utiliza biblioteca machine din MicroPython pentru a comunica cu dispozitivele I2C.
  • 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:

  • Foloseste functia scan() din obiectul I2C pentru a obtine o lista cu adresele dispozitivelor conectate.

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:

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.
  • Registrele importante pentru acest proiect sunt:
    • 0xFA pana la 0xFC: Temperatura.
    • 0xF7 pana la 0xF9: Presiune.

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.
  • Acesti coeficienti se gasesc in registrele de calibrare care incep de la 0x88.

3. Cum sa scrii functii pentru a citi datele

  • Citeste datele brute din registre.
  • Foloseste coeficientii de calibrare pentru a compensa valorile brute.
  • Afiseaza rezultatele finale.

Etape:

  • 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.
  • 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 valorile brute de temperatura si presiune: Scrie functii pentru a citi datele brute din registrele 0xF7-0xFC.
  • Compenseaza datele: Foloseste formulele de calibrare specificate in documentatia BMP280 pentru a corecta valorile brute.

Bibliografie

priot/laboratoare/04.txt · Last modified: 2024/11/05 15:26 by alexandru.bala
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