LinkedIn YouTube Facebook
Szukaj

Newsletter

Proszę czekać.

Dziękujemy za zgłoszenie!

Wstecz
SoM / SBC

KAmodRPi Pico Extension – płytka rozszerzająca do Raspberry Pico RP2040

Moduł Raspberry Pi Pico to coraz popularniejsza płytka rozwojowa z mikrokontrolerem RP2040. Zarówno moduł, jak i mikrokontroler jest produkowany przez Fundację Raspberry Pi, znanej dotąd z produkcji popularnych komputerów jednopłytkowych. Moduł został dobrze przyjęty przez amatorów elektroniki na całym świecie, co spowodowało rozwój ekosystemu związanego z platformą.

Raspberry Pi Pico to płytka w formacie DIP, w którym podłużna, wąska płytka ma po bokach szereg wyprowadzeń, do których zazwyczaj dolutowane są listwy goldpin skierowane do dołu. Taki format utrudnia podłączanie modułów rozszerzeniowych bezpośrednio do płytki. W związku z tym zazwyczaj w procesie prototypowania moduły tego typu są umieszczane w płytkach stykowych.

Rys. 1. Płytka Raspberry Pi Pico

Tym niemniej jakiś czas po premierze Raspberry Pi Pico można było zaobserwować pojawienie się na rynku płytek prototypowych specjalizowanych dla tej platformy. Ich wspólną cechą jest złącze 2×20, w którym można umieścić płytkę. Piny Raspberry Pi Pico są wyprowadzone na złącza goldpin, a także w zależności od modelu na inne złącza dodatkowe.

KAmodRPi Pico Extension

Jedną z takich płytek jest moduł rozszerzający KAmodRPi Pico Extension z oferty sklepu Kamami.pl. Płytka umożliwia wygodne wyprowadzenie pinów Pico, np. na złącza goldpin. Pozwala to na szybsze dołączenie do płytki modułów rozszerzeniowych, np. z czujnikiem lub wyświetlaczem.

Rys. 2. Moduł KAmodRPi Pico Extension

Drugim złączem, w które wyposażono płytkę rozszerzającą jest 40-pinowe złącze rozszerzeniowe służące do podłączenia nakładek na Raspberry Pi. Jest kompatybilna z większością dostępnych na rynku modułów i zapewnia dostęp do interfejsów SPI, I2C UART oraz licznych pinów GPIO.

Rys. 3. Zbliżenie na złącze rozszerzeniowe na nakładki Raspberry Pi

Oto pinout złącza Raspberry Pi HAT zamontowanego na KamodRPi Pico Extension:

Tab. 1. Pinout złącza Raspberry Pi HAT na płytce KAmodRPi Pico Extension

Raspberry Pi Pico Złącze HAT Złącze HAT Raspberry Pi Pico
3V3 1 2 5V
GPIO20 3 4 5V
GPIO21 5 6 GND
GPIO6 7 8 GPIO0
GND 9 10 GPIO1
GPIO7 11 12 GPIO28
GPIO8 13 14 GND
GPIO9 15 16 GPIO27
3V3 17 18 GPIO26
GPIO3 19 20 GND
GPIO4 21 22 GPIO22
GPIO2 23 24 GPIO5
GND 25 26 GPIO19
27 28
GPIO10 29 30 GND
GPIO11 31 32 GPIO18
GPIO12 33 34 GND
GPIO13 35 36 GPIO17
GPIO14 37 38 GPIO16
GND 39 40 GPIO15

Złącze KAmod

Kolejnym złączem, który pozwala na podłączenie modułu zewnętrznego do Raspberry Pi Pico jest złącze KAMAMI I2C. Umożliwia ono dołączenie modułu z serii KAmod produkowanego przez Kamami.pl, zarówno tych nowszych, gdzie to złącze jest montowane równolegle ze złączem Pmod, np. KAmodMC3536, jak i tych starszych takich, jak KAmodMEMS2. Wyprowadzenia są połączone z interfejsem I2C0 na pinach GPIO0 oraz GPIO1.

Moduł zawiera również uniwersalną płytkę prototypową składającą się z 328 otworów. Pozwala ona na zlutowanie układu prototypowego, który ma współpracować z mikrokontrolerem RP2040.

Rys. 4. Zbliżenie na płytkę uniwersalną wbudowaną w KAmodRPi Pico Extension

Ostatnim elementem płytki jest przycisk umożliwiający resetowanie Raspberry Pi Pico. Przycisk zwiera wyprowadzenie RUN płytki do masy.

Sam laminat zawiera także dokładny opis wszystkich złącz, co pozwala na szybką orientację których wyprowadzeń aktualnie używamy.

Przykład wykorzystania płytki KamodRPi Pico Extension

W dalszej części artykułu zaprezentuję prosty przykład wykorzystania modułu. Skorzystam tu z możliwości podłączenia nakładki Raspberry Pi do Raspberry Pi Pico. Do przykładu wybrałem nakładkę Enviro, którą jakiś czas temu opisywałem już na łamach portalu w artykule Enviro – moduł z wyświetlaczem i czujnikami środowiskowymi dla Raspberry Pi.

Enviro to nakładka na Raspberry Pi wyposażona w czujniki środowiskowe oraz wyświetlacz LCD 160×80 pikseli. Wśród sensorów znajdziemy czujnik temperatury, ciśnienia i wilgotności BME280, czujnik światła oraz odległości LTR-559, a także mikrofon MEMS SPH0645LM4H-B.

Połączenie wszystkich elementów jest bardzo proste – wystarczy umieścić moduł Pico w odpowiednim złączu, a także nakładkę Enviro w złączu na nakładki Raspberry Pi. Można to obejrzeć na poniższej fotografii.

Rys. 5. KAmodRPi Pico Extension z dołączonymi modułami Raspberry Pi Pico oraz Enviro

Przykład będzie korzystał z wbudowanego w nakładkę czujnika BME280. Jest to scalony sensor ciśnienia, wilgotności oraz temperatury. Ważną cechą sensora jest niski pobór mocy – średnio 3,6 µA – co dodatkowo można obniżyć wyłączając nieużywane bloki układu lub wykorzystując tryb uśpienia (pobór jedynie 0,1 µA). Udostępnia komunikację SPI oraz I2C, ale nakładka Enviro udostępnia jedynie komunikację I2C.

Szersze omówienie cech sensora BME280 wraz z przykładem znajdziesz w artykułach BME280 – czujnik temperatury, wilgotności oraz ciśnienia.

Instalacja płytki Raspberry Pi Pico w środowisku Arduino

W przykładzie wykorzystamy fakt, że już od jakiegoś czasu dostępna jest obsługa płytek z RP2040 przez platformę Arduino. Aby pobrać pakiet służący do tego celu, należy otworzyć okienko preferencje (menu Plik -> Preferencje) i w polu Dodatkowe adresu URL do menedżera płytek wkleić adres:

https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json

Rys. 6. Dodawanie do biblioteki dodatkowych adresów z listą pakietów dla płytek

Jeśli wcześniej już wklejano dodatkowe adresy w to pole, należy oddzielić je przecinkiem.

Następnie należy wejść do menu Narzędzia -> Płytka -> Menedżer płytek. W oknie trzeba wyszukać RP2040 i zainstalować pakiet Raspberry Pi Pico/RP2040. Pakiet, oprócz Raspberry Pi Pico, obsługuje także inne płytki z mikrokontrolerem RP2040, np. firm Adafruit, SparkFun, a także płytkę Arduino Nano RP2040 Connect.

Rys. 7. Instalacja pakietu dla płytek z RP2040

Po instalacji można już ustawić płytkę na Raspberry Pi Pico w menu Narzędzia -> Płytka. Reszta parametrów powinna pozostać domyślna, chociaż w zależności od potrzeb można je zmienić.

Rys. 8. Ustawienie płytki na Raspberry Pi Pico

W tym momencie można już programować w Arduino, a także wgrać kod na mikrokontroler RP2040. Pakiet współpracuje z większością bibliotek standardowych Arduino.

Kod przykładu

Teraz zaprezentuję kod przykładu umożliwiającego odczyt danych z czujnika BME280. Przykład jest oparty o bibliotekę firmy Adafruit – Adafruit BME280 Library.

Na początku należy zaimportować niezbędne biblioteki – Wire do obsługi I2C oraz biblioteki do obsługi czujnika. Następnie definiowane są stałe – poziom ciśnienia na poziomie morza, co posłuży do obliczenia wysokości z ze zmierzonego ciśnienia, a także piny do których podłączono interfejs I2C czujnika.

#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>

#define SEALEVELPRESSURE_HPA (1013.25)
 
#define BME_SCL 21
#define BME_SDA 20

Następnie inicjalizowany jest obiekt klasy Adafruit_BME280. Ten sposób inicjalizacji – bez parametrów – oznacza, że kod będzie komunikował się przez I2C (możliwa jest także komunikacja SPI 3- lub 4-przewodowa). Inicjalizujemy także zmienną delayTime przechowującą czas pomiędzy pobraniem i wyświetleniem danych.

Adafruit_BME280 bme;
unsigned long delayTime;

W funkcji setup uruchamiamy i testujemy port szeregowy, a także inicjalizujemy zmienną status, która przechowuje status inicjalizacji czujnika.

Serial.begin(9600);

while(!Serial);
  Serial.println("BME280 test");

unsigned status;

Następne komendy mają za zadanie zmienić ustawione piny interfejsu I2C funkcjami setSDA oraz setSCL. W następnym poleceniu inicjalizujemy obsługę czujnika dostarczając w parametrach adres układu oraz wskaźnik na obiekt interfejsu I2C. W ten sposób jesteśmy w stanie przekazać do obiektu informacje o niestandardowych ustawieniach pinów I2C.

Wire.setSDA(BME_SDA);
Wire.setSCL(BME_SCL);

status = bme.begin(0x76, &Wire);

Na koniec funkcji setup ustalamy czas pomiędzy iteracjami pomiaru i wyświetlania danych na 1 sekundę (1000 ms).

  delayTime = 1000;

}

W pętli loop wykonujemy jedynie funkcję printValues, a następnie odczekujemy czas delayTime (1 s).

void loop() {

  printValues();
  delay(delayTime);
}

Funkcja printValues ma za zadanie pobranie danych z czujnika, a także wyświetlenie ich na porcie szeregowym. Funkcje odpowiedzialne za pobranie odczytów z sensora to readTemperature, readHumidity, readPressure i readAltitude obiektu biblioteki bme. Następnie są one wypisywane na port szeregowy.

void printValues() {

  Serial.print("Temperatura = ");
  Serial.print(bme.readTemperature());
  Serial.println(" °C");

  Serial.print("Cisnienie = ");
  Serial.print(bme.readPressure() / 100.0F);
  Serial.println(" hPa");

  Serial.print("Wysokość n.p.m = ");
  Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA));
  Serial.println(" m");

  Serial.print("Wilgotnosc = ");
  Serial.print(bme.readHumidity());
  Serial.println(" %");

  Serial.println();
}

Pełen kod programu jest dostępny w sekcji Do pobrania.

Efekt działania programu widać na poniższym obrazie.

Rys. 9. Efekt działania kodu

Podsumowanie

Moduł KAmodRPi Pico Extension to płytka prototypowa umożliwiająca wygodne dołączanie rozszerzeń do Raspberry Pi Pico. Pozwalają na wyprowadzenie pinów modułu na złącze goldpin. Płytka zawiera także złącza umożliwiające podłączenie modułów w innych standardach – nakładek na Raspberry Pi oraz modułów KAmod z interfejsem I2C. Ostatnim ważnym elementem jest wbudowana płytka prototypowa umożliwiająca samodzielne zlutowanie układów współpracujących z Pico.

Moduł KAmodRPi Pico Extension oraz Raspberry Pi Pico są dostępne w ofercie Kamami.pl

Do pobrania