Project A-caT
Cel Projektu
Project A-caT – Interaktywny organizer na biurko 🐱📻
Project A-caT to z pozoru uroczy, wydrukowany w 3D przybornik na biurko w kształcie kota. Służy do organizacji długopisów, a dzięki wbudowanemu ekranowi OLED wyświetla datę, godzinę oraz parametry środowiskowe (temperaturę, ciśnienie, wysokość n.p.m.).
Przybornik posiada jednak kilka dodatkowych funkcji. Nos kota to główny guzik, który po wciśnięciu odtwarza wylosowaną piosenkę z karty SD, wyświetla na ekranie motywacyjny cytat i... wysyła dyskretny sygnał radiowy do drugiego, bliźniaczego modułu odbiorczego. Odbiornik reaguje zmianą koloru oświetlenia LED, informując o akcji użytkownika.
🛒 Lista komponentów
Nadajnik - Kot:
- 1x Raspberry Pi Pico 2
- 1x Ekran OLED SH1106 (1.3 cala, I2C)
- 1x Moduł RTC DS3231 (Zegar czasu rzeczywistego)
- 1x Czujnik środowiskowy BMP280 (Temperatura, ciśnienie)
- 1x Moduł Audio MP3 - DFPlayer Mini + Głośnik i karta micro SD
- 1x Pierścień LED NeoPixel
- 1x Przycisk typu Tact Switch z kwadratową nasadką (Nos kota)
- Filament do druku 3D
Interfejs (Odbiornik - Baza):
- 1x Raspberry Pi Pico (Standard)
- 1x Ekran OLED SH1106
- 1x Pierścień LED NeoPixel
💻 Krótko o kodzie (CircuitPython)
Program został napisany w CircuitPythonie. Pudełka wykorzystują trwałą pamięć mikrokontrolera (microcontroller.nvm) do zapisywania licznika kliknięć, co chroni dane przed utratą po odłączeniu zasilania.
import microcontroller
def zapisz_licznik(val):
# Zapis licznika do nieulotnej pamięci NVM (2 bajty)
microcontroller.nvm[0] = val // 256 # starszy bajt
microcontroller.nvm[1] = val % 256 # młodszy bajt
def wczytaj_licznik():
# Odczyt licznika z pamięci NVM
val = microcontroller.nvm[0] * 256 + microcontroller.nvm[1]
if val > 60000: # zabezpieczenie przed uszkodzonymi danymi
return 0
return val
📚 Biblioteki i Kompatybilność
Do poprawnego działania kodu wymagane są biblioteki CircuitPython (pliki .mpy), które należy umieścić w folderze lib na mikrokontrolerze.
⚠️ Ważna uwaga dotycząca architektury rdzeni (Pico vs Pico 2)
Raspberry Pi Pico (standardowe) wykorzystuje architekturę RP2040, natomiast Pico 2 opiera się na nowszym układzie RP2350. Ze względu na różnice w rdzeniach, biblioteki muszą być zgodne z daną architekturą.
- Dla Nadajnika (Pico 2) pobierz paczkę bibliotek dedykowaną dla układów RP2350.
- Dla Odbiornika (Pico 1) pobierz standardową paczkę dla układów RP2040.
Wszystkie niezbędne biblioteki (m.in. adafruit_bmp280, adafruit_ds3231, neopixel) można pobrać z oficjalnej strony: CircuitPython.org/libraries.
🔌 Schemat połączeń (Pinout)
Aby ułatwić montaż, przygotowałem tabele połączeń dla obu modułów. Odpowiadają one dokładnie konfiguracji w dołączonym kodzie źródłowym. Pamiętaj o uwzględnieniu odpowiedniego zasilania dla komponentów.
Moduł 1: Nadajnik (Kot - Pico 2)
| Komponent | Pin Pico | Uwagi |
|---|---|---|
| Wspólna Masa (GND) | GND | Wszystkie piny masy połączone razem |
| Zasilanie 5V | VBUS (5V) | Zasilanie DFPlayer, Radia i NeoPixel |
| Zasilanie 3.3V | 3V3 (OUT) | Zasilanie OLED, RTC, BMP280 |
| OLED / RTC / BMP280 | GP0 (SDA), GP1 (SCL) | Wspólna magistrala I2C |
| DFPlayer Mini (Audio) | GP8 (TX), GP9 (RX), GP10 (BUSY) | Komunikacja UART Audio + Pin stanu |
| Radio HC-12 | GP12 (TX), GP13 (RX) | Komunikacja UART Radio (Nadawanie sygnału) |
| NeoPixel (LED) | GP15 | Sygnał sterujący diodami |
| Przycisk (Nos kota) | GP14 | Wejście Tact Switch (zamykane do masy GND) |
Moduł 2: Odbiornik (Baza - Pico)
| Komponent | Pin Pico | Uwagi |
|---|---|---|
| Wspólna Masa (GND) | GND | Wszystkie piny masy połączone razem |
| Zasilanie 5V | VBUS (5V) | Zasilanie dla Radia i paska NeoPixel |
| Zasilanie 3.3V | 3V3 (OUT) | Zasilanie wyświetlacza OLED |
| Ekran OLED | GP0 (SDA), GP1 (SCL) | Magistrala I2C (Status) |
| Radio HC-12 | GP4 (TX), GP5 (RX) | UART Radio (Odbiór sygnałów) |
| NeoPixel (LED) | GP15 | Powiadomienie LED |
🛠️ Proces budowy krok po kroku
Proces tworzenia projektu od pomysłu po prototyp na płytce stykowej aż po finalny przybornik w kształcie kota:
1. Projektowanie obudowy w CAD
Wszystko zaczęło się od szkicu i modelu 3D. Obudowa składa się z dwóch głównych modułów – głownej bazy z miejscem na ekranik OLED (wyświetlający parametry) oraz górnej części "wkładki", będącej właściwym przybornikiem. Otwór na nos kota został idealnie zwymiarowany pod fizyczny przycisk.
2. Pierwsze przymiarki i montaż frontu
Podczas wielogodzinnego wydruku w międzyczasie trwały pierwsze testy elektroniki na płytce prototypowej.
3. Upakowanie elektroniki ("Bebechy")
Największym wyzwaniem inżynieryjnym było zmieszczenie wszystkich modułów wewnątrz górnej sekcji. Raspberry Pi Pico, moduł MP3, radio, RTC i masa kabli musiały zostać bezpiecznie połączone, aby nie blokowały miejsca na długopisy. Na zdjęciu widać trwające testy wyświetlacza i pierwsze uruchomienie kodu.
4. Odbiornik – Centrum Dowodzenia
To moduł, który zostaje u „konstruktora”. Na razie jest w formie "pająka" na biurku, ale spełnia swoje zadanie w 100%. Na ekranie widać aktualny status połączenia ("ONLINE"), informację o nasłuchiwaniu i zliczony licznik sygnałów. Dioda NeoPixel informuje o stanie systemu.
5. Finalny efekt i testy
Project A-caT w pełnej okazałości! Po złożeniu obu części, podłączeniu zasilania (5V) i wgraniu kodu, system ożył. Na ekranie widać podstawowe dane, a całość prezentuje się po prostu rewelacyjnie. Wciśnięcie nosa natychmiastowo wyzwala utwór muzyczny wraz z komplementem i wysyła sygnał do odbiornika.
WSKAZÓWKI
Wydruk 3D wykonaj na dobrej drukarce z użyciem wysokiej jakości filamentu, co zwiększy estetykę obudowy.
Ogonem kota jest jednocześnie przewód zasilający, dlatego zalecam użycie czarnego przewodu.
