7.8 RFID-Musikplayer

In unserem vorherigen Projekt, 6.5 Funkfrequenz-Identifikation, haben wir gelernt, dass das MFRC522-Modul uns erlaubt, bis zu 48 Zeichen Informationen auf die Karte (oder den Schlüssel) zu schreiben. Dies schließt sowohl den Schlüssel als auch die Identitätsinformationen ein, sowie die Noten für die Musik.

Zum Beispiel, wenn Sie EEFGGFEDCCDEEDD EEFGGFEDCCDEDCC schreiben, wird der Summer die Melodie spielen, wenn die Karte (oder der Schlüssel) erneut gelesen wird. Es kann auch mit einem WS2812 ausgestattet werden, um beeindruckende Effekte darzustellen.

Sie können weitere Notenblätter im Internet finden oder sogar Ihre eigene Musik schreiben, diese auf die Karte (oder den Schlüssel) übertragen und sie mit Ihren Freunden teilen!

rfid_player

Benötigte Bauteile

Für dieses Projekt benötigen wir die folgenden Komponenten.

Es ist definitiv praktisch, ein komplettes Set zu kaufen. Hier ist der Link:

Bezeichnung

KOMPONENTEN IN DIESEM KIT

LINK

Kepler-Kit

450+

Kepler Kit

Sie können die Bauteile auch einzeln über die unten stehenden Links erwerben.

SN

KOMPONENTE

ANZAHL

LINK

1

Raspberry Pi Pico W

1

BUY

2

Micro-USB-Kabel

1

3

Steckbrett

1

BUY

4

Jumperkabel

Mehrere

BUY

5

Transistor

1(S8050)

BUY

6

Widerstand

1(1KΩ)

BUY

7

Passiver Summer

1

BUY

8

MFRC522 Modul

1

BUY

9

WS2812 RGB 8-LED-Streifen

1

BUY

Schaltplan

sch_music_player

Verdrahtung

wiring_rfid_music_player

Code

  1. Öffnen Sie die Datei 6.5_rfid_write.py im Verzeichnis kepler-kit-main/micropython und klicken Sie dann auf „Aktuelles Skript ausführen“ oder drücken Sie einfach F5.

  2. Nach dem Ausführen geben Sie EEFGGFEDCCDEEDD EEFGGFEDCCDEDCC im Shell ein und halten Sie dann die Karte (oder den Schlüssel) nahe am MFRC522-Modul. Auf diese Weise wird die Partitur der Ode an die Freude gespeichert.

  3. Öffnen Sie die Datei 7.8_rfid_music_player.py im Verzeichnis kepler-kit-main/micropython oder kopieren Sie diesen Code in Thonny, und klicken Sie dann auf „Aktuelles Skript ausführen“ oder drücken Sie einfach F5.

    from mfrc522 import SimpleMFRC522
    import machine
    import time
    from ws2812 import WS2812
    import urandom
    
    # ws2812
    ws = WS2812(machine.Pin(16),8)
    
    # mfrc522
    reader = SimpleMFRC522(spi_id=0,sck=2,miso=4,mosi=3,cs=5,rst=0)
    
    # buzzer
    NOTE_C4 = 262
    NOTE_D4 = 294
    NOTE_E4 = 330
    NOTE_F4 = 349
    NOTE_G4 = 392
    NOTE_A4 = 440
    NOTE_B4 = 494
    NOTE_C5 = 523
    
    buzzer = machine.PWM(machine.Pin(15))
    note=[NOTE_C4,NOTE_D4,NOTE_E4,NOTE_F4,NOTE_G4,NOTE_A4,NOTE_B4,NOTE_C5]
    
    def tone(pin,frequency,duration):
        pin.freq(frequency)
        pin.duty_u16(30000)
        time.sleep_ms(duration)
        pin.duty_u16(0)
    
    
    # lightup
    def lumi(index):
        for i in range(8):
            ws[i] = 0x0000FF
        ws[index] = 0xFF0000 # int(urandom.uniform(0, 0xFFFFFF))
        ws.write()
    
    
    # encode text to index
    words=["C","D","E","F","G","A","B","N"]
    def take_text(text):
        string=text.replace(' ','').upper()
        while len(string)>0:
            index=words.index(string[0])
            tone(buzzer,note[index],250)
            lumi(index)
            new_str=""
            for i in range(0, len(string)):
                if i != 0:
                    new_str = new_str + string[i]
            string=new_str
    
    # read card
    def read():
        print("Reading...Please place the card...")
        id, text = reader.read()
        print("ID: %s\nText: %s" % (id,text))
        take_text(text)
    
    read()
    
  4. Wenn Sie die Karte (oder den Schlüssel) erneut nahe am MFRC522-Modul platzieren, wird der Summer die auf der Karte (oder dem Schlüssel) gespeicherte Musik abspielen und der RGB-Streifen wird in einer zufälligen Farbe leuchten.