Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
rfid [2022/06/21 21:41] – [LCD-Display (Liquid Crystal Display)] student | rfid [2023/07/03 10:16] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ======Musikplayer ===== | ||
+ | |||
+ | ---- | ||
+ | Im Mittelpunkt des Projekts " | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ===1. Schritt=== | ||
+ | Als erstes wurden die Bibliotheken für den RFID Scanner installiert, | ||
+ | Um den unten stehenden Beispiel Code habe habe ich dann eine while True Schleife gebastelt, die darauf wartet das eine Karte gescannt wird. Hierbei wird direkt auch die Karten ID ausgegeben. Zum Testen kann man mit //print// die Nummer in der Konsole ausgeben. Der //try// Befehl kann mit //Str + C// beendet werden. | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ===2. Schritt=== | ||
+ | Wenn das lesen der Karten einwandfrei funktioniert kann man sich im Internet einen Musikplayer installieren der die mp3-Dateien abspielt. In diesem Projekt wurde der vcl.Mediaplayer verwendet. Wenn der Mediaplayer funktioniert kann man beides zusammenfügen. Also mit einer //if// Anweisung die Kartennummer mit der eingescannten Karte vergleichen. In die //if// Bedingung können dann verschiedene Aktionen hinzugefügt werden. Hier werden Titel und Interpret einmal auf dem Display und einmal per Audio ausgegeben. | ||
+ | Hinweis: Es ist wichtig den Player in der Schleife zu schließen(// | ||
+ | |||
+ | ---- | ||
+ | ===3. Schritt === | ||
+ | Display: {{ :: | ||
+ | So können dann alle Notwendigen Sachen auf dem Display ausgegeben werden. Hinweis: Auch hier sollte man das Display immer wieder // | ||
+ | ---- | ||
+ | ===4. Schritt === | ||
+ | Als letztes muss der PIR Sensor angeschlossen werden. Mit dem Beispiel Code sollte man vorher die Senilität und die Zeit einstellen. Mit der Bibliothek GPIOzero kann man den Sensor ganz einfach ins Programm einbinden. Sonst kann man ihn auch ganz einfach über den GPIO.Pin ansprechen und mit dem Input arbeiten. Mit einer weiteren while Schleife und einer if Bedingung wartet der das Programm jetzt auf eine Bewegung bis es die zweite while Schleife startet. So lange sich nichts bewegt würde eine Meldung auf dem Display ausgegeben. | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ===5. Schritt === | ||
+ | Am Ende kann man zum Beispiel ein paar Pausen mit // | ||
+ | |||
+ | ===== Bauteile: ===== | ||
+ | ======PIR „Passiv Infra Red Sensor ====== | ||
+ | |||
+ | ---- | ||
+ | |||
+ | - erkennt bestimmte Menge an Infrarotstrahlen/ | ||
+ | |||
+ | ---- | ||
+ | |||
+ | - Sensor reagiert nur auf Bewegung | ||
+ | |||
+ | ---- | ||
+ | |||
+ | -> dafür extra Fesnel-Linse damit nicht statische Wärmequellen auslösen | ||
+ | |||
+ | ---- | ||
+ | |||
+ | - max 7 Meter , max. Ca. 120G mit 3,3V | ||
+ | |||
+ | ---- | ||
+ | |||
+ | - verstellbare sind Potenziometer Time(Tx) & Sensitive (Ti) | ||
+ | |||
+ | ---- | ||
+ | - Bibliothek -> von gpiozero MotionSensor | ||
+ | |||
+ | ---- | ||
+ | === Beispie um das Bauteil zu test: === | ||
+ | <file c Code.c> | ||
+ | from gpiozero import MotionSensor | ||
+ | pir = MotionSensor(4) | ||
+ | while True: | ||
+ | if pir.motion_detected: | ||
+ | print(" | ||
+ | </ | ||
+ | {{ : | ||
+ | |||
+ | ===== RFID (Radio- Frequency Identification) Sensor ===== | ||
+ | |||
+ | ---- | ||
+ | |||
+ | - erzeugt magnetisches oder elektronisches Feld | ||
+ | |||
+ | ---- | ||
+ | - RFID-Transponder wird dann passiv mit Energie versorgt | ||
+ | |||
+ | ---- | ||
+ | |||
+ | -> solang der Transponder in dem Feld ist, kann Datentransport stattfinden | ||
+ | |||
+ | ---- | ||
+ | - Bibliotheken -> aus mfrc522 SimpleMFRC522 | ||
+ | |||
+ | ---- | ||
+ | === Beispiel um das Bauteil zu testen: === | ||
+ | <file c Code.c> | ||
+ | |||
+ | import RPi.GPIO as GPIO | ||
+ | from mfrc522 import SimpleMFRC522 | ||
+ | |||
+ | reader = SimpleMFRC522() | ||
+ | |||
+ | try: | ||
+ | print(" | ||
+ | id = reader.read()[0] | ||
+ | print(" | ||
+ | | ||
+ | finally: | ||
+ | GPIO.cleanup() | ||
+ | </ | ||
+ | |||
+ | =====LCD-Display (Liquid Crystal Display)===== | ||
+ | - 4x20 Zeichen | ||
+ | |||
+ | ---- | ||
+ | |||
+ | - senden linear polarisiertes Licht aus | ||
+ | |||
+ | ---- | ||
+ | - nutzen Polifilter, zwischen zwei gekreuzten Filtern befinden sich Flüssigkristalle, | ||
+ | |||
+ | ---- | ||
+ | - wird über das HD44780 Controller angesteuerter | ||
+ | |||
+ | ---- | ||
+ | - mit den I2C Datenbus müssen nur zwei GPIOs belegt werden | ||
+ | |||
+ | ---- | ||
+ | - Bibliotheken -> lcddriver | ||
+ | |||
+ | ---- | ||
+ | ===Beispiel um das Bauteil zu testen:=== | ||
+ | <file c Code.c> | ||
+ | | ||
+ | from time import * | ||
+ | lcd = lcddriver.lcd() | ||
+ | | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== Quellcode ===== | ||
+ | |||
+ | ---- | ||
+ | <file c Code.c> | ||
+ | |||
+ | |||
+ | # | ||
+ | import os # | ||
+ | import time | ||
+ | import vlc | ||
+ | from mfrc522 import SimpleMFRC522 | ||
+ | import lcddriver | ||
+ | from gpiozero import MotionSensor | ||
+ | |||
+ | lcd = lcddriver.lcd() | ||
+ | lcd.lcd_clear() | ||
+ | |||
+ | p = vlc.MediaPlayer() | ||
+ | |||
+ | reader = SimpleMFRC522() | ||
+ | |||
+ | pir = MotionSensor(23) | ||
+ | try: | ||
+ | while True: # Endlosschleife die auf Bewegung wartet | ||
+ | if pir.motion_detected: | ||
+ | p = vlc.MediaPlayer(" | ||
+ | p.play() | ||
+ | lcd.lcd_clear() | ||
+ | lcd.lcd_display_string(" | ||
+ | lcd.lcd_display_string(" | ||
+ | time.sleep(5) | ||
+ | lcd.lcd_clear() | ||
+ | lcd.lcd_display_string(" | ||
+ | lcd.lcd_display_string(" | ||
+ | |||
+ | while True: # Endlosschleife die darauf wartet das eine Karte gescannt wird | ||
+ | id = reader.read()[0] | ||
+ | lcd.lcd_clear() | ||
+ | print(" | ||
+ | lcd.lcd_display_string(" | ||
+ | lcd.lcd_display_string(' | ||
+ | p.stop() | ||
+ | time.sleep(2) | ||
+ | | ||
+ | if (id == 129095266764): | ||
+ | p = vlc.MediaPlayer(" | ||
+ | p.play() | ||
+ | time.sleep(3) | ||
+ | lcd.lcd_display_string(" | ||
+ | lcd.lcd_display_string(" | ||
+ | p = vlc.MediaPlayer(" | ||
+ | p.play() | ||
+ | time.sleep (2) | ||
+ | | ||
+ | elif (id == 164276487417): | ||
+ | p = vlc.MediaPlayer(" | ||
+ | p.play() | ||
+ | time.sleep(4) | ||
+ | lcd.lcd_display_string(" | ||
+ | lcd.lcd_display_string(" | ||
+ | p = vlc.MediaPlayer(" | ||
+ | p.play() | ||
+ | time.sleep(2) | ||
+ | | ||
+ | elif (id ==613034193387): | ||
+ | p = vlc.MediaPlayer(" | ||
+ | p.play() | ||
+ | time.sleep(3) | ||
+ | lcd.lcd_display_string(" | ||
+ | lcd.lcd_display_string(" | ||
+ | p = vlc.MediaPlayer(" | ||
+ | p.play() | ||
+ | time.sleep(2) | ||
+ | | ||
+ | elif (id == 611859984696): | ||
+ | p = vlc.MediaPlayer(" | ||
+ | p.play() | ||
+ | lcd.lcd_display_string(" | ||
+ | lcd.lcd_display_string(" | ||
+ | time.sleep(2) | ||
+ | | ||
+ | elif (id != 611859984696 or 613034193387 or 164276487417 or 129095266764): | ||
+ | lcd.lcd_clear() | ||
+ | lcd.lcd_display_string(" | ||
+ | lcd.lcd_display_string(" | ||
+ | lcd.lcd_display_string(" | ||
+ | lcd.lcd_display_string(" | ||
+ | | ||
+ | else: | ||
+ | lcd.lcd_clear() | ||
+ | p.stop() | ||
+ | lcd.lcd_display_string(" | ||
+ | lcd.lcd_display_string(" | ||
+ | lcd.lcd_display_string(" | ||
+ | lcd.lcd_display_string(" | ||
+ | time.sleep(10) | ||
+ | |||
+ | except KeyboardInterrupt: | ||
+ | p.stop() | ||
+ | print ("Das Programm wird jetzt beendet" | ||
+ | lcd.lcd_clear() | ||
+ | lcd.lcd_display_string(" | ||
+ | lcd.lcd_display_string(" | ||
+ | lcd.lcd_display_string("", | ||
+ | lcd.lcd_display_string(" | ||
+ | time.sleep(5) | ||
+ | | ||
+ | lcd.lcd_clear() | ||
+ | GPIO.cleanup() | ||
+ | | ||
+ | |||
+ | } | ||
+ | |||
+ | </ | ||
+ | |||
+ | ===== Schaltplan ===== | ||
+ | |||
+ | {{ : | ||
+ | |||