Raspberry pi pico projekt #2 - csengő

írta: saja, 10 hónapja

Feleségem szeretett volna egy csengőt a mi lakásunkhoz a házban.
Megint remek alkalom a gyakorláshoz :K . Az alap most is a pi pico. Ezt próbáltam a lehető legegyszerűbbre megcsinálni. Utánajártam hogyan lehet audio-t lejátszani ezzel az rp2040 alapú mikrovezérlővel. Szerencsére a circuitpython jól kezeli a hang lejátszását, ráadásul MP3 playback is van! Remek!

Kellett egy hangszóró.
Kezdetben ilyen kis gyenge, mini hangszóróval teszteltem, hogy működik-e a lejátszás. Csak nagyon közel tartva a fülemhez hallottam, hogy szól. Szóval vagy rakok rá egy erősítőt, vagy kitalálok valami mást. Volt otthon egy forrasztható 3,5mm csatlakozó alljzat és rengeteg használaton kívüli hangszóró.

Akkor elkezdtem kigondolni, hogyan legyen meg nagyjából a kapcsolási rajz.

Nosza, próbáljuk meg összerakni!

Rendeltem egy szilárdtest relét, ezt használom arra, hogy a hangszórót ki-bekapcsoljam. Nem akartam szétszedni a hangszóró elektronikáját, az remekül működött.
Az ajtó kinti oldalára került a doboz a vezérlővel és a gombbal.

Lehet megint elborzadni a látványtól.


Azóta kicsit át lett alakítva. Például lett a gombnak megfelelő rugalmas alátámasztása, miután párom tesztelte és teljes erővel benyomta :D

A visszajelző led addig világít, amíg a csengő szól.

Hozzávalók:
- pi pico
- szilárdtest relé (1A 230V AC, 5v DC, magas aktív)
- forrasztható 3,5mm jack alljzat
- nyomógomb
- egy valamelyest szebb doboz
- vezetékek, NYÁK, stb.
- opcionálisan egy darab LED a visszajelzéshez

Itt a forráskód, amit ez az eszköz használ:

# SPDX-FileCopyrightText: 2021 Kattni Rembor for Adafruit Industries
#
# SPDX-License-Identifier: MIT

"""
CircuitPython single MP3 playback example for Raspberry Pi Pico.
Plays a single MP3 once.
"""
import board
import time
import audiomp3
import audiopwmio
import digitalio

# Simple doorbell script with mp3 playback

# button for the doorbell
button = digitalio.DigitalInOut(board.GP16)
button.switch_to_input(pull=digitalio.Pull.DOWN)
# switch 230V~ for the speaker with a solid state relay
relay = digitalio.DigitalInOut(board.GP18)
relay.direction = digitalio.Direction.OUTPUT
# button led
led = digitalio.DigitalInOut(board.GP21)
led.direction = digitalio.Direction.OUTPUT
# 3,5mm audio output
audio = audiopwmio.PWMAudioOut(board.GP15)

decoder = audiomp3.MP3Decoder(open("doorbell-1.mp3", "rb"))

while True:
if (button.value):
led.value = True
relay.value = True
audio.play(decoder)
while audio.playing:
time.sleep(5)
relay.value = False
pass
print("Done playing!")
led.value = False
relay.value = False

Plusz poén, hogy a pico a tápfeszültséget egy router-től kapja USB-n keresztül. Azon a routeren OpenWrt fut, amire feltettem fájlrendszer kezelésre alkalmas kiegészítőt. Most már ssh-n keresztül tudom módosítani a pico-n lévő fájlokat (kódok, hangok).