StackyPi

Verbinde Raspberry Pi HATs mit dem Pi Pico

StackyPi ist ein kompaktes auf dem RP2040-Mikrocontroller aufbauendes Board mit einer Raspberry Pi-kompatiblen Stiftleiste (Header), die den Anschluss der sogenannten Raspberry Pi HATs (HAT – Hardware Attached on Top) ermöglicht. Dadurch erschliessen sich dem Anwender weitere, im Raspberry Pi-Umfeld bereits etablierte Peripherie-Erweiterungen.

Einige willkürlich ausgewählte pHATs zeigt die folgende Galerie. Ich werde im folgenden das Coral Environmental Sensor Board als Beispiel einer Integration eines pHATs in eine RP2040 Arduino Umgebung verwenden.

Für die Verbindung mit einem pHAT ist die Belegung der Stiftleiste und die Zuordnung der Pins des RP2040 besonders wichtig.

Weitere Informationen finden Sie auf der SB-Components Website. Wichtig ist ausserdem, die Zuordnung der Pins an Hand des Schemas zu verifizieren.

Das Board weist die folgenden Komponenten auf:

● 128×32 OLED Display
● Umgebungslichtsensor OPT3002
● Drucksensor BMP280
● Temperatur- und Feuchtesensor HDC2010
● Cryptoprocessor ( ATECC608A) with Google keys
● Grove connectors: 1x UART, 1x I2C, 1x PWM, 1x 3.3/5V analog
● General purpose button
● General purpose LED

Ein Datenblatt finden Sie hier.

Mit einer Reihe von kleinen Arduino Programmen werde ich die peripheren Komponenten in Betrieb nehmen. Die dokumentierten Quelltexte finden Sie auf Github.

OLED Display

Das OLED Display hat eine Auflösung von 128 x 32 Pixeln und wird mit einem SSD1306 Controller über SPI0 betrieben.

Unter Verwendung der Libraries von Adafruit und der im Quelltextausschnitt gezeigten Initialiserung erzeugt das Programm StackyPi_ESB_OLED.ino die folgenden Ausgaben auf dem OLED Display.

#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

// Coral ESB Pin Definitions
#define DC 26
#define RST 22
#define CS 5
#define MOSI 3
#define CLK 2

#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 32

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, MOSI, CLK, DC, RST, CS);

I2C Bus Scan

Ich habe das beklannt I2C Scanprogramm auf die beiden I2C-Busse des RP2040 angepasst und kann damit die angeschlossenen Sensoren ermittel. Das Programm StackyPi_ESB_I2C.ino findet fünf an I2C0 angeschlossene I2C Devices. An I2C1 ist keine Device angeschlossen.

Die ermittelten Adressen sind wie folgt den I2C-Bus-Devices zugeordnet:

I2C AddrDevice
0x30Crypto Chip ATECC608
0x40Temperatur-/Feuchtesensor HDC2010
0x45Lichtsensor OPT3002
0x49Analog/Digital-Umsetzer TLA2021
0x76Barometrischer Drucksensor BMP280

Temperatur-/Feuchtesensor HDC2010

Das auf der sSense-HDC2010 Library aufbauenden Programm StackyPi_ESB_HDC2010.ino fragt den Low Power Humidity and Temperature Digital Sensor HDC2010 von TI ab und bringt die Messwerte zur Anzeige gebracht.

Lichtsensor OPT3002

Mit dem auf der ClosedCube OPT3002 Library aufbauenden Programm StackyPi_ESB_OPT3002.ino wird der
Light-to-Digital Sensor OPT3002 von TI abgefragt und die erhobenen Messwerte zur Anzeige gebracht.

Barometrischer Drucksensor BMP280

Mit dem auf der BMx280IM Library aufbauenden Programm StackyPi_ESB_BMP280.ino wird der Drucksensor BMP280 von Bosch abgefragt und die erhobenen Messwerte zur Anzeige gebracht.

Analog/Digital-Umsetzer TLA2021

Mit dem auf der Adafruit_TLA202x Library aufbauenden Programm StackyPi_ESB_ADC.ino wird der Kanal 0 des ADC TLA2021 von TI abgefragt und die erhobenen Messwerte zur Anzeige gebracht. Der Kanaol 0 des ADC ist auf den Grove Konnektor auf der rechten Seite herausgeführt. Der Jumper ist auf VDD_A = 3.3 V zusetzen.

Coral ESB Wetterstation

Mit den vorhandenen Sensoren kann nun leicht eine mit externen Sensoren erweiterbare Wetterstation aufgebaut werden.

Sensorerfasste Grössen
HDC2010Temperatur, relative Luftfeuchtigkeit
BMP280Barometrischer Druck, Temperatur
OPT3002Umgebungshelligkeit

Aufbauend auf den bislang vorgestellten Softwarekomponenten habe ich das Programm StackyPi_ESB_Weather.ino zusammengestellt.

Nach der umgangreicheren Initialisierung der Sensoren und des OLED Display beginnt die zyklische Abfrage der Sensoren und die Ausgabe der Messwerte über die serielle Schnittstelle.

Wegen der recht geringen Auflösung des OLED Display erfolgt im Abstand von zwei Sekunden stets nur die Ausgabe eines Messwertes. Sie können das auch im Video verfolgen.


2022-05-10/CK

Veröffentlicht von ckuehnel

Mein aktuelles Profil ist unter https://www.linkedin.com/in/ckuehnel zu finden.

Kommentar verfassen

Bitte logge dich mit einer dieser Methoden ein, um deinen Kommentar zu veröffentlichen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

Verbinde mit %s

%d Bloggern gefällt das: