Inhaltsverzeichnis:
- Lieferungen
- Schritt 1: Richten Sie Ihren Raspberry Pi ein
- Schritt 2: Bringen Sie Ihr Soundsystem zum Laufen
- Schritt 3: Testen Sie die Wiedergabe von Klingeltönen und / oder erstellen Sie neue Töne
- Schritt 4: Installieren Sie den Code und legen Sie Ihren Zeitplan fest
- Schritt 5: Automatisieren Sie das Laufen mit Crond
- Schritt 6: Anpassen und genießen
Video: Schulglocke für Fernstudenten - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:15
Aufgrund der COVID-19-Pandemie sind viele Kinderschulen auf Fernlieferung umgestiegen. Diese Klingel für die Heimschule ist eine unterhaltsame Möglichkeit, den Zeitplan einzuhalten, indem ein Raspberry Pi und ein USB-Lautsprecher verwendet werden. Sie können es mit Ihrem Kind schaffen und es kann Programmieren lernen und "die Glocke läuten". Ich habe dies für meine Tochter gebaut, die in die 7. Klasse geht (derzeit per Fernlieferung), und es funktioniert gut, um uns pünktlich zu halten.
Lieferungen
Für dieses Projekt benötigen Sie:
- Ein Raspberry Pi-Computer - Am besten funktioniert es, wenn Sie WLAN haben. Ich habe einen RPi 3B aus einem Kano-Kit verwendet
- Ein Lautsprecher – ich habe einen USB-Lautsprecher verwendet
Der Code könnte problemlos auf dem Linux-Computer Ihres Schülers oder sogar auf einem Mikrocontroller ausgeführt werden, auf dem Micropython ausgeführt wird, solange der Mikrocontroller über einen Mechanismus verfügt, um das aktuelle Datum / die aktuelle Uhrzeit abzurufen. Auch jeder verstärkte Lautsprecher, oder noch cooler eine Relais-/Analogklingel, könnte verwendet werden.
Schritt 1: Richten Sie Ihren Raspberry Pi ein
Es gibt eine große Anzahl von Ressourcen zum Einrichten eines Raspberry Pi-Computers, daher verweise ich Sie auf eine, die Google findet. Wichtig ist, dass Ihr Computer das richtige Datum und die richtige Uhrzeit abrufen kann. Die meisten modernen WiFi-fähigen Raspberry Pi-Computer verwenden das NTP-Protokoll, um die Uhrzeit aus dem Internet einzustellen, so habe ich die richtige Uhrzeit erhalten. Ich habe mein RPi so eingerichtet, dass es "headless" ist, d.h. es hat keine Tastatur oder keinen Monitor, ist aber per Secure Shell (SSH) über das Internet zugänglich. Wenn Sie mit RPi gut sind, können Sie dieses Setup ohne Tastatur / Video / Maus durchführen, aber es ist einfacher, den Pi einfach mit diesem Zubehör einzurichten.
Beachten Sie, dass ich die grafische Benutzeroberfläche nicht verwenden musste, also habe ich gerade das "Raspberry Pi OS (32-bit) Lite" heruntergeladen, das kleiner und schneller herunterzuladen ist und schneller bootet.
Konfigurieren Sie das Netzwerk und die Schnittstellenoptionen des Raspberry Pi
$ sudo raspi-config
Gehen Sie in der Konfiguration wie folgt vor:
- Ändern Sie das Passwort - tun Sie dies zuerst, hoffentlich bevor Sie online gehen!
-
Unter "Netzwerkoptionen"
- Ändern Sie den Hostnamen. Ich habe den Hostnamen verwendet: "schoolbell".
- Stellen Sie eine Verbindung zu Ihrem WLAN her (falls Sie dies bei der Einrichtung nicht getan haben)
- Aktivieren Sie unter "Schnittstellenoptionen" den SSH-Zugriff
- Es ist immer gut, die Option "Update" auszuführen
Nachdem Sie dies getan und neu gestartet haben, sollten Sie sich von einem anderen Computer im selben lokalen Netzwerk mit einem SSH-Client mit dem Raspberry Pi verbinden können. Verbinden Sie sich mit den folgenden Anmeldeinformationen:
Hostname: schoolbell.local
Benutzer: pi Passwort: was auch immeryousetitas
Von einer Linux-Box aus ist dies so einfach wie die Eingabe dieser Befehlszeile an der $-Eingabeaufforderung:
$ ssh [email protected]
… Passwort bei Aufforderung eingeben
Damit loggen Sie sich ein und Sie können überprüfen, ob die Uhrzeit auf dem Raspberry Pi korrekt ist. Geben Sie in der Befehlszeile den Datumsbefehl ein und überprüfen Sie die Antwort:
pi@schoolbell:~ $ Datum
Do 3 Sep 20:44:34 AKDT 2020
Hoffentlich ist dies die aktuelle Zeit. Wenn es nicht richtig ist, googeln Sie nach der Einrichtung von NTP auf dem Raspberry Pi.
Schritt 2: Bringen Sie Ihr Soundsystem zum Laufen
Wir werden MP3-Dateien für die Glocken abspielen, also müssen wir Software herunterladen, um diese Audiodateien zu dekodieren. Ich habe das mpg321-Paket durch Eingabe dieses Befehls erhalten:
pi@schoolbell:~ $ sudo apt-get install mpg321
Folgen Sie den Anweisungen, um diese Software zu installieren.
Ich habe einen alten USB-Lautsprecher verwendet, der einen seltsamen Treiber hatte und nicht vollständig automatisch als Standard-Soundkarte konfiguriert wurde. Nach dem Anschließen des Lautsprechers habe ich den Befehl 'aplay -l' verwendet, um Audiogeräte aufzulisten:
pi@schoolbell:~ $ aplay -l
**** Liste der WIEDERGABE-Hardwaregeräte **** Karte 0: Kopfhörer [bcm2835 Kopfhörer], Gerät 0: bcm2835 Kopfhörer [bcm2835 Kopfhörer] Untergeräte: Untergerät #0: Untergerät #0 Untergerät #1: Untergerät #1 Untergerät #2: Subdevice #2 Subdevice #3: Subdevice #3 Subdevice #4: Subdevice #4 Subdevice #5: Subdevice #5 Subdevice #6: Subdevice #6 Subdevice #7: Subdevice #7 Karte 1: CODEC [USB Audio CODEC], Gerät 0: USB-Audio [USB-Audio] Untergeräte: Untergerät #0: Untergerät #0
Das Gerät, das ich möchte, ist das untere, Karte 1, Gerät 0.
Ich habe den Lautsprecher mit "speaker-test" getestet, mit dem Gerät "hw:1, 0", also Hardwarekarte 1, Gerät 0
pi@schoolbell:~ $ Lautsprechertest -D hw:1, 0
Dieses Programm gibt Geräusche aus den Lautsprechern aus. Genießen Sie das Rauschen und geben Sie Control-C ein, wenn Sie sich ärgern. Wenn Sie kein Geräusch hören, versuchen Sie es mit Google.
Jetzt haben Sie Ton!
Schritt 3: Testen Sie die Wiedergabe von Klingeltönen und / oder erstellen Sie neue Töne
Für meine Glocke habe ich den "bing-bong"-Sound von "freesound.org" heruntergeladen. Danke an Benboncan für die Bereitstellung dieses Sounds:
freesound.org/people/Benboncan/sounds/93646/
Sie können den Ton direkt abspielen. Ich könnte direkt eine MP3-Version dieser Datei herunterladen, indem ich diesen Befehl auf dem Raspberry Pi-Computer eintippe (vorausgesetzt, er ist über WLAN):
pi@schoolbell:~ $ wget
Ich habe diese Datei dann umbenannt:
pi@schoolbell:~ $ mv 93646_634166-hq.mp3 bing-bong-chime-hq.mp3
Ich habe dann getestet, dass ich mit diesem Befehl (mit Ausgabe) die Glocke läuten kann:
pi@schoolbell:~ $ mpg321 -a hw:1, 0 bing-bong-chime-hq.mp3
Hochleistungs-MPEG 1.0/2.0/2.5 Audioplayer für Layer 1, 2 und 3. Version 0.3.2-1 (2012/03/25). Geschrieben und urheberrechtlich geschützt von Joe Drew, jetzt verwaltet von Nanakos Chrysostomos und anderen. Verwendet Code von verschiedenen Leuten. Siehe 'README' für mehr! DIESE SOFTWARE KOMMT OHNE GARANTIE! BENUTZUNG AUF EIGENE GEFAHR! MPEG-Stream von bing-bong-chime-hq.mp3 abspielen … MPEG 1.0 Layer III, 128 kbit/s, 44100 Hz mono [0:02] Dekodierung von bing-bong-chime-hq.mp3 beendet.
Herzlichen Glückwunsch! Sie haben Audio.
Mit dem Sound-Editing-Code "audacity" auf meinem Laptop teile ich die Datei für mehr Spaß in "bing" und "bong" auf. Sie können beliebige MP3- oder andere Formate (andere habe ich nicht getestet) verwenden.
Schritt 4: Installieren Sie den Code und legen Sie Ihren Zeitplan fest
Der Code ist ein Python-Skript, das das aktuelle Datum / die aktuelle Uhrzeit abruft. Wenn das Datum ein Wochentag und kein Feiertag ist, überprüft es, ob die Uhrzeit mit einer Glockenzeit übereinstimmt, und läutet, wenn es sollte.
Zuerst werden Sie es zum Laufen bringen, dann werden Sie es automatisieren, damit es jede Minute ausgeführt wird.
Laden Sie den Code von Github herunter:
gist.github.com/BillSimpson/d7a1a531995c8b63492bb47ef8872618
Ich finde es einfach, dies zu tun, indem ich die Datei auf einem lokalen Computer speichere und sie dann mit Secure Copy (scp) auf den Raspberry Pi lege.
Kopieren Sie auf Ihrem lokalen Computer den Code aus Ihrem Browser, fügen Sie ihn in eine Textdatei ein und speichern Sie ihn unter dem Dateinamen "schoolbell.py". Dann scp die Datei über:
local-machine:~ $ scp schoolbell.py [email protected]:~/
Sie werden aufgefordert, das Passwort für den Benutzer pi auf schoolbell.local einzugeben -- geben Sie das Passwort ein und die Datei wird sicher kopiert. Dieser Befehl sollte im selben Verzeichnis ausgeführt werden, in dem das Python-Skript gespeichert wurde, und kopiert es in das Home-Verzeichnis des pi-Benutzers. Sie können zu schoolbell.local ssh rüber und der Code sollte dort sein:
local-machine:~ $ ssh [email protected]
Listen Sie dann auf schoolbell.local die Dateien auf (möglicherweise sehen Sie weitere Dateien):
pi@schoolbell:~ $ ls
bing-bong-chime-hq.mp3 schoolbell.py
Bearbeiten Sie nun den Code, um Ihren Klingelplan zu erstellen, indem Sie einen Editor wie pico verwenden:
pi@schoolbell:~ $ pico schoolbell.py
Der Code hat drei "Wörterbücher", die die abzuspielenden Klingeltöne, die Zeiten zum Abspielen und die zu vermeidenden Feiertage definieren. Glocken am Wochenende werden automatisch übersprungen.
Das Klingelton-Wörterbuch lautet beispielsweise:
Klingeltöne = {
'warn': 'bing-bong-chime-hq.mp3', 'start': 'bing-bong-chime-hq.mp3', 'end': 'bing-bong-chime-hq.mp3' }
Dies definiert drei Arten von Glocken, eine Warnglocke, einen Unterrichtsbeginn und ein Ende. Da wir nur einen Klingelton haben, verweisen alle auf dieselbe Datei, aber wenn Sie unterschiedliche Töne erstellen, können Sie diese ändern. Sie können sogar andere Arten von Klingeltönen hinzufügen. Ich habe auch mit einem Sprachsynthesizer gespielt, um die Glocken zu sprechen, aber das wurde von anderen im Haus nicht positiv aufgenommen.
Das Glockenschema-Wörterbuch ist ähnlich, aber der "Schlüssel" ist jetzt die Zeit für die Glocke. Sie müssen das Format HH:MM mit führenden Nullen und 24-Stunden-Zeit (Militärzeit) verwenden.
Glockenplan = {
'09:00': 'start', # 'Bus'-Glocke um sich fertig zu machen '09:28': 'warn', ….. '13:58': 'warn', # für Periode 4 '14:00 ': 'Anfang', '15:00': 'Ende' }
Der Wert in diesem Schlüssel:Wert-Paar ist der zu verwendende Klingeltontyp und muss mit einem der oben definierten Klingeltöne übereinstimmen.
Zuletzt listet das Feiertagswörterbuch die Feiertagsdaten auf. Das Format ist YYYY-mm-dd, mit führenden Nullen wie gezeigt.
Feiertage = {
'2020-09-07', …. '2021-03-11', '2021-03-12' }
Wenn Sie mit der Bearbeitung fertig sind, speichern Sie die Datei, indem Sie den Editor verlassen und Strg-X eingeben, wenn Sie pico verwenden.
Machen Sie den Python-Code ausführbar, indem Sie:
pi@schoolbell:~ $ chmod a+x schoolbell.py
Dadurch können alle Benutzer den Code ausführen, "a" für alle, "+" für die Berechtigung zum Hinzufügen und "x" für die Ausführung.
Führen Sie nun den Code testweise aus und beobachten Sie die Ausgabe. Beachten Sie, dass Sie die Datei ausführen können, indem Sie den Dateinamen eingeben, aber angeben müssen, dass sie sich im aktuellen Verzeichnis befindet, indem Sie ein "./" vor dem Dateinamen eingeben:
pi@schoolbell:~ $./schoolbell.py
Es ist Schultag, Kontrollzeit 21:35
Der Code sagt Ihnen, ob es ein Schultag ist (z. B. kein Feiertag oder Wochenende) und sieht, ob die Uhrzeit mit einer Glockenzeit übereinstimmt. In diesem Fall war es keine Klingelzeit, also ging es einfach sauber aus. Wenn es eine Klingelzeit wäre, hätte es geläutet.
Um zu testen, ob Ihr Code Glocken spielen kann, verwenden Sie die Befehlszeilenoption einer Datei zum Abspielen. Wir verwenden unsere Bing-Bong-Datei:
pi@schoolbell:~/schoolbell $./schoolbell.py bing-bong-chime-hq.mp3
Es ist Schultag, Prüfzeit 21:38 High Performance MPEG 1.0/2.0/2.5 Audio Player für Layer 1, 2 und 3. Version 0.3.2-1 (2012/03/25). Geschrieben und urheberrechtlich geschützt von Joe Drew, jetzt verwaltet von Nanakos Chrysostomos und anderen. …. mehr Leistung ….
Du hättest die Glocke hören sollen.
Testen Sie nun den Code mit einer Zeit als Argument. Denken Sie daran, die Zeit mit führenden Nullen einzugeben. Um zum Beispiel meine "Schulbus"-Klingel um 9 Uhr morgens zu testen, tippe ich:
pi@schoolbell:~ $./schoolbell.py 09:00
Dies sollte Ihre Glocke zum Klingeln bringen! Sie können auch testen, ob es außerhalb der Klingelzeiten nicht klingelt.
Schritt 5: Automatisieren Sie das Laufen mit Crond
Der Cron-'Daemon' ist ein Scheduler, der sich wiederholende Aufgaben auf einem Linux-System ausführt. Es überprüft, ob das Datum/die Uhrzeit mit einem Muster in der Cron-Tabelle (crontab) übereinstimmt, und führt dann Code aus, wenn dies der Fall ist. Sie können es mit dem Befehl "crontab -e" bearbeiten:
pi@schoolbell:~ $ crontab -e
Dadurch wird ein Dateieditor geöffnet und am Ende dieser Datei fügen Sie die folgende Zeile hinzu:
* * * * * python3 /home/pi/schoolbell.py
Dieser Befehl weist cron an, Python3 auszuführen, um Ihr Skript im normalen Home-Verzeichnis (/home/pi) auszuführen. Die fünf * sagen, dass dies jede Minute (erster *), jede Stunde (nächster * …), jeden Tag des Monats, jeden Monat und jeden Tag der Woche laufen soll.
Jetzt wird jede Minute das Skript schoolbell.py ausgeführt. Während der meisten Minuten wird der Code ausgeführt und stellt fest, dass er einfach ohne Glockenspiel beendet werden sollte, aber wenn sich herausstellt, dass eine Glockenzeit erreicht wird, klingelt es.
Beachten Sie, dass Sie die Glocken nicht granularer als auf die Minute einstellen können, da cron nur jede Minute ausgeführt wird. Ich denke, es ist theoretisch möglich, dass cron nach Ablauf der Minute möglicherweise für einige Sekunden nicht ausgeführt wird, wenn Ihr System ins Stocken gerät, wodurch die Glocke spät wird. Wenn cron irgendwie nicht die volle Minute lief, würde die Glocke verpasst werden.
Tipp: Für längere Feiertage (z. B. Sommer) können Sie an das erste Zeichen dieser Zeile einen Hashtag (#) anhängen, der daraus einen Kommentar macht und somit die Ausführung ignoriert. Wenn die Schule wieder in Betrieb ist, entfernen Sie einfach das # und sie wird wieder ausgeführt.
Schritt 6: Anpassen und genießen
Jetzt sollten Sie ein funktionierendes Schulklingelsystem haben und Ihr Schüler sollte nie zu spät zum Unterricht kommen.
Sie können dieses Projekt anpassen, indem Sie die Klingeltöne ändern.
- Sie könnten Big Ben klingeln lassen, mit viertelstündlichen Glockenschlägen und die Stunden läuten.
- Du könntest den Freestyle deines Lieblingsrappers probieren.
- Sie könnten unterschwellige Botschaften machen, um sich auf das Lernen zu konzentrieren.
Bleiben Sie sicher in dieser Zeit von COVID.
Zweiter im Familienwettbewerb "Can't Touch This"
Empfohlen:
Arduino Auto-Rückfahrwarnsystem - Schritt für Schritt: 4 Schritte
Arduino Auto-Rückfahrwarnsystem | Schritt für Schritt: In diesem Projekt entwerfe ich eine einfache Arduino-Auto-Rückwärts-Parksensorschaltung mit Arduino UNO und dem Ultraschallsensor HC-SR04. Dieses Arduino-basierte Car-Reverse-Warnsystem kann für eine autonome Navigation, Roboter-Ranging und andere Entfernungsr
So deaktivieren Sie die Autokorrektur für nur ein Wort (iOS): 3 Schritte
So deaktivieren Sie die Autokorrektur für nur ein Wort (iOS): Manchmal korrigiert die Autokorrektur möglicherweise etwas, das Sie nicht korrigieren möchten, z. Textabkürzungen beginnen sich in Großbuchstaben zu setzen (imo korrigieren zum Beispiel zu IMO). So erzwingen Sie, dass die Korrektur eines Wortes oder einer Phrase beendet wird, ohne aut zu deaktivieren
Interessante Programmieranleitung für Designer - Bringen Sie Ihr Bild zum Laufen (Teil 2): 8 Schritte
Interessante Programmieranleitung für Designer – Bringen Sie Ihr Bild zum Laufen (Teil 2): Mathematik scheint für die meisten von Ihnen nutzlos zu sein. Die in unserem täglichen Leben am häufigsten verwendete ist einfach Addieren, Subtrahieren, Multiplizieren und Dividieren. Es ist jedoch ganz anders, wenn Sie mit Programm erstellen können. Je mehr Sie wissen, desto mehr wundervolle Ergebnisse werden Sie erhalten
Installieren des Windows-Subsystems für Linux (WSL): 3 Schritte
Installieren des Windows-Subsystems für Linux (WSL): Diese Anleitung soll Benutzern helfen, das Windows-Subsystem für Linux auf ihrem Windows 10-Computer zu installieren. Die spezifische Linux-Distribution, die dieser Befehlssatz verwendet, heißt Ubuntu. Schauen Sie hier für eine Übersicht über die verschiedenen Linux
So erstellen Sie eine UML für Java in Microsoft Visio: 4 Schritte
So erstellen Sie eine UML für Java in Microsoft Visio: Das Erstellen einer UML kann zunächst etwas einschüchternd wirken. Es gibt viele komplizierte Notationsstile, und es kann sich anfühlen, als gäbe es keine guten Ressourcen, um eine lesbare und genaue UML zu formatieren. Microsoft Visio macht jedoch das Erstellen einer UML-Qu