Gadżet weselny z Raspberry Pi

Jakiś czas temu trafiło do mnie dość specyficzne zlecenie na gadżet weselny. Sam dobrze pamiętam jeszcze swoje wesele i temat bardzo mi się spodobał. Chodzi o telefon na życzenia. Zamiast standardowej książki, gdzie wpisują się goście, postawiony jest telefon, najlepiej w jakiejś oldschoolowej obudowie, na który, jak na automatyczną sekretarkę, można nagrać życzenia dla nowożeńców w formie audio.

Pomysł na Projekt

W skrócie, zadanie dla urządzenia jest proste: po podniesieniu słuchawki odtwarza się powitanie, potem rozpoczyna się nagrywanie, które kończy się po odłożeniu słuchawki lub po osiągnięciu limitu czasowego. Dodatkowo LED informuje o nagrywaniu, zasilanie jest z powerbanku, a nagrania można łatwo zgrywać najlepiej przez WiFi, bez otwierania urządzenia.

Projekt wydaje się przydatny także do innych zastosowań, jak np. robienie notatek głosowych, dlatego postanowiłem go opublikować w formie open source. Link do repozytorium. Powstał także film, który możecie zobaczyć poniżej. Cieszył się on zainteresowaniem, dlatego według obietnicy o powstaniu wersji 1.1, przygotowałem ją.

Proces Budowy

Klient miał już wybraną obudowę, więc pozostało wybrać elektronikę, jakoś to tam upchać i przygotować oprogramowanie. Mógłbym to zrobić na wiele sposobów, ale miałem wolną Raspberry Pi, a termin był bardzo bliski, więc poszedłem na może nie najbardziej optymalne rozwiązanie, ale spełniające potrzeby.

Do budowy tego urządzenia potrzebne są: Raspberry Pi, czujnik do podniesienia słuchawki (może to być zwykła krańcówka), LED + rezystor, zestaw słuchawka z mikrofonem na USB, powerbank, trochę przewodów.

Wszystko dość ciasno, ale udało się zmieścić do obudowy według poniższego schematu.

Słuchawkę z mikrofonem musiałem rozłożyć na części pierwsze, aby je zaadaptować. Udało się wykorzystać wtyczki i kabel do słuchawki z telefonu, który był podstawą. Głośnik i mikrofon w słuchawce musiałem wymienić, ponieważ miały inną rezystancję niż to, co było w zestawie na USB. Do mocowania użyłem niezastąpionego kleju na ciepło, w który też musiałem zatopić trochę złomu, aby dociążyć słuchawkę. Oryginalny mikrofon i głośnik były znacznie cięższe, bez tego ciężaru nie mógłbym poprawnie odłożyć słuchawki.

W telefonie została tarcza, można by pomyśleć nad jej potencjalnym użyciem. Dość śmieszna sprawa, bo były to przyciski, oryginalnie w takich telefonach tarcza była obracana. Ja jestem z tego pokolenia, które jeszcze korzystało z takich telefonów, ale pewnie z czasem coraz mniej gości weselnych będzie znało taki telefon z życia i wiedziało, jak działał oryginał 😋

Oprogramowanie

Na Raspberry Pi wystarczył skrypt w Pythonie, głównie pomagał mi wtedy ChatGPT przy pierwszej wersji. Do wersji 1.1 przyłożyłem się bardziej sam oraz użyłem narzędzia AI trochę bardziej skrojonego na zadania programistyczne – Codium, o którym nagrałem niedawno short.

Jeśli jeszcze nie korzystaliście z Raspberry Pi, warto zobaczyć playlistę z Raspberry na moim kanale.

Podczas instalacji kolejny raz miałem mały problem z korzystaniem z funkcji wykrywającej podniesienie słuchawki:

GPIO.wait_for_edge(button_pin, GPIO.RISING)

Musiałem zmienić bibliotekę do obsługi GPIO (z tym AI nie potrafiło pomóc i reserach trzeba było robić konwencjonalnymi metodami). Jeśli też macie z tym problem wsytarczą poniższe komendy:

pip uninstall rpi.gpio
pip install rpi-lgpio

Aby urządzenie działało bezobsługowo, konieczne było dodanie skryptu do autostartu. Skorzystałem tutaj z pliku:

/etc/xdg/lxsession/LXDE-pi/autostart

Trzeba tam dodać linię z ścieżką do Pythona i głównego skryptu w projekcie, czyli np.:

@/usr/bin/python /home/pi/voice_mail_Pi/main.py

Inne formy dodania do autostartu, jak np. crontab, mają problem z poprawnym działaniem funkcji biblioteki pygame.

Żeby łatwo ściągnąć nagrania lub zmienić pliki powitalne, zainstalowałem serwer FTP na Raspberry Pi z pomocą poniższej komendy:

arecord -l

Po zainstalowaniu można się łączyć z Raspberry Pi np. za pomocą FileZilli.

Użytkownik i hasło są takie jak ustawiliśmy do Raspberry Pi.

Jeśli chodzi o zmiany, np. plik powitania, sygnał lub limit czasowy nagrania (na wypadek gdyby ktoś zapomniał odłożyć słuchawkę), są w pliku config.txt.

Nagrania audio trafiają do folderu records, a ich nazwy to po prostu kolejne timestampy, czyli data i godzina nagrania.

Jeśli macie jakieś pomysły na rozwinięcie projektu, problemy, lub po prostu odtworzyliście go i chcecie się pochwalić swoim efektem, piszcie 🙂

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *