In data de 21 ianuarie 2021 fundatia Raspberry Pi a lansat un nou produs, Raspberry Pi Pico, acesta fiind prima placa bazata pe un microcontroller din aceasta gama.
Ce prezinta articolul?
In acest articol va vom prezenta avantajele si dezavantajele acestui nou microcontroler, si schimbarile ce le aduce fata de versiunile anterioare. De asemenea se prezinta si un proiect de masurare a temperaturii folosind senzorul de temperatura intern.
Specificatiile noului Raspberry Pi Pico
- Dimensiuni: 21 mm × 51 mm;
- Microcontrolerul RP2040 proiectat in Marea Britanie de catre Raspberry Pi;
- Procesor Arm Cortex-M0+ cu 2 nuclee ce ruleaza pana la frecventa de 133MHz;
- 264KB RAM;
- 2MB Memorie Flash QSPI (interna);
- 26 Pini GPIO (+3 pini analogici);
- 2 × UART, 2 × controlere SPI, 2 × controlere I2C, 16 × canale PWM;
- Senzor Temperatura;
- Librarii pentru accelerarea operatiilor cu numere intregi si numere fractionare;
- Un timer precis;
Avantajele noului Raspberry Pi Pico fata de alte microcontrolere
Ca orice produs nou aparut pe piata, si acest nou microcontroler dispune de o serie de avantaje. Primul avantaj ce il are aceasta placa de dezvoltare este comunitatea din jurul fundatiei Raspberry PI si forumul in care puteti posta orice problema intampinati.
Un al doilea avantaj ce il ofera noua placa este pretul, 5.5$, destul de mic pentru un microcontroler cu 2 nuclee ARM si care dispune de multe periferice. O noua aparitie in lumea microcontroalerelor pentru entuziasti o reprezinta cele 8 periferice I/O programabile (PIO).
Dezavantajele noului Raspberry Pi Pico
Un prim dezavantaj a acestei noi placi de dezvoltare il reprezinta faptul ca nu exista conectivitate Bluetooth / Wi-Fi pentru a putea realiza proiecte mai complexe sau proiecte de tip IOT. Un alt dezavantaj il reprezinta cei doar 2MB de memorie flash.
Cum programam noul Raspberry Pi Pico?
Pentru a programa acest nou microcontroller sunt disponibile 2 limbaje de programare: MicroPython sau C++.
Tutoriale pentru utilizarea si instalarea ambelor optiuni le puteti gasi pe website-ul https://www.raspberrypi.org/
Daca nu ati avut tangenta cu lumea microcontroller-elor si programarii acestora si daca doriti cat mai rapid sa puteti programa un Raspberry Pi Pico, va recomandam sa utilizati MicroPython. In urmatoarele exemple de proiecte vom folosi MicroPython.
Diagrama de conexiuni a placii de dezvoltare Raspberry Pi Pico
Cum incarcam cod pe Raspberry Pi Pico?
Partea de incarcare a codului pe Raspberry Pi Pico este putin mai diferita fata de o placa de dezvoltare precum Arduino.
Pentru a incarca un program, trebuie sa tineti apasat putonul „BOOTSEL” de pe Raspberry Pi Pico in timp ce o conectati la portul USB al computerului dvs.
Daca totul este in regula, sistemul dvs. de operare va va afisa placa de dezvoltare ca spatiu de stocare.
Aici veti incarca fisierul „.uf2” in care aveti codul compilat, sau daca doriti sa folositi MicroPython, trebuie sa incarcati urmatorul fisier: rp2-pico-20210202-v1.14.uf2, de pe https://www.raspberrypi.org/.
Indicator de temperatura cu Raspberry Pi Pico
Deoarece noul Raspberry Pi Pico dispune de un senzor de temperatura intern, este relativ usor de implementat un program pentru masurarea temperaturii.
Pentru acest proiect am folosit urmatorul cod:
import machine
import utime
# Get the temperature from the internal RP2040 temperature sensor.
sensor_temp = machine.ADC(4)
# See Raspberry Pi Pico datasheet for the conversion factor.
CONVERSION_FACTOR = 3.3 / (65535)
# Set up LEDs.
led_onboard = machine.Pin(25, machine.Pin.OUT)
led_green = machine.Pin(15, machine.Pin.OUT)
led_red = machine.Pin(14, machine.Pin.OUT)
led_blue = machine.Pin(13, machine.Pin.OUT)
def leds_off():
„””Turn off all the LEDs.”””
led_onboard.value(0)
led_green.value(0)
led_red.value(0)
led_blue.value(0)
def leds_on():
„””Turn on all the LEDs.”””
led_onboard.value(1)
led_green.value(1)
led_red.value(1)
led_blue.value(1)
# Flash all the LEDs on startup.
leds_off()
leds_on()
utime.sleep(1)
leds_off()
# Go into a loop.
while True:
# Get a temperature reading.
reading = sensor_temp.read_u16() * CONVERSION_FACTOR
# Convert the temperature into degrees celsius.
temperature = 27 – (reading – 0.706)/0.001721
# If a safe temperature, light the green LED.
if 20.00 <= temperature <= 22.20: leds_off() led_green.value(1) /# If too hot, light the red LED. elif temperature > 22.20:
leds_off()
led_red.value(1)
# If too cold, light the blue LED.
elif temperature < 20.00:
leds_off()
led_blue.value(1)
# If no condition met, we’re in an error state, light ‘em up!
else:
leds_on()
print(temperature)
# Sleep for 5 seconds.
utime.sleep(5)
Acest cod, odata la 5 secunde va citi temperatura, iar in caz ca aceasta este sub 20C, va aprinde LED-ul albastru; daca temperatura este peste 22.2C, va aprinde LED-ul rosu iar daca este intre cele doua valori, LED-ul verde.
Asamblarea proiectului pe breadboard
Mai multe detalii despre acest proiect puteti gasi aici: https://github.com/
In concluzie, noul Raspberry Pi Pico este un microcontroler foarte versatil si dotat cu multe functionalitati pentru pretul sau scazut.
Apreciez efortul, dar ai zis ca discuti „avantaje si dezavantaje” si… am plecat cum am venit…
Dezavantaj: Nu are FPU
Avantaj: Doua Nuclee, cu unul poti face citirea senzorilor, iar cu celalalt poti lua decizii si executa operatii:
https://youtu.be/9vvobRfFOwk
Comparatie ESP vs Pi Pico:
https://youtu.be/cVHCllbN3bQ
Am luat unul si intentionez sa-l folosesc pentru a controla o montura ecuatoriala pentru telescop, cat de precis este ceasul fata de cel al lui Arduino? Ma pot baza pe el sau mai bine pun un ceas de timp real? Va functiona in permanenta legat la un calculator, nu de sine statator asadar voi putea verifica pozitia monturii si daca se ia curentul (observator robotizat).
Mai bine GPS. Am experiente ciudate cu Module RTC. Actualul cea a luat inainte cu 5 minute in doua luni de functionare. GPS sau sincronizare BT periodica cu ceva ce se poate sincroniza cu un NTP.