Project A-caT

Raspberry Pi Pico Python (CircuitPython) Druk 3D / CAD Komunikacja Radiowa
Gotowy Project A-caT na biurku

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)

KomponentPin PicoUwagi
Wspólna Masa (GND)GNDWszystkie piny masy połączone razem
Zasilanie 5VVBUS (5V)Zasilanie DFPlayer, Radia i NeoPixel
Zasilanie 3.3V3V3 (OUT)Zasilanie OLED, RTC, BMP280
OLED / RTC / BMP280GP0 (SDA), GP1 (SCL)Wspólna magistrala I2C
DFPlayer Mini (Audio)GP8 (TX), GP9 (RX), GP10 (BUSY)Komunikacja UART Audio + Pin stanu
Radio HC-12GP12 (TX), GP13 (RX)Komunikacja UART Radio (Nadawanie sygnału)
NeoPixel (LED)GP15Sygnał sterujący diodami
Przycisk (Nos kota)GP14Wejście Tact Switch (zamykane do masy GND)

Moduł 2: Odbiornik (Baza - Pico)

KomponentPin PicoUwagi
Wspólna Masa (GND)GNDWszystkie piny masy połączone razem
Zasilanie 5VVBUS (5V)Zasilanie dla Radia i paska NeoPixel
Zasilanie 3.3V3V3 (OUT)Zasilanie wyświetlacza OLED
Ekran OLEDGP0 (SDA), GP1 (SCL)Magistrala I2C (Status)
Radio HC-12GP4 (TX), GP5 (RX)UART Radio (Odbiór sygnałów)
NeoPixel (LED)GP15Powiadomienie 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.

Model CAD

2. Pierwsze przymiarki i montaż frontu

Podczas wielogodzinnego wydruku w międzyczasie trwały pierwsze testy elektroniki na płytce prototypowej.

Montaż frontu

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.

Wnętrze urządzenia

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.

Moduł odbiorczy

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.

Gotowe urządzenie

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.


PLIKI DO POBRANIA:

← Wróć do projektów
Podpis autora Y.A.M.I. Odręczny podpis Y.A.M.I.