Inhaltsverzeichnis:
- Schritt 1: Ausrüstung
- Schritt 2: Einrichten des Raspberry Pi
- Schritt 3: Pi-Blaster
- Schritt 4: Einrichten des Beispielcodes
- Schritt 5: Erstellen Sie ein selbstsigniertes SSL-Zertifikat
- Schritt 6: Verdrahtung der Schaltung
- Schritt 7: Serverseitiger Code
- Schritt 8: Website-Code
- Schritt 9: Endlich
Video: Farbpi: 9 Schritte
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:21
Dieses anweisbare zeigt, wie man einen Raspberry Pi zur Sprachsteuerung eines RGB-LED-Streifens über eine Website mit den Web Speech API-Schnittstellen für SpeechRecognition und SpeechSynthesis verwendet.
Dieses Beispiel zeigt, wie man
- Erstellen Sie eine einfache Website mit Node.js über
- Verwenden Sie die Web Speech API-Schnittstellen für SpeechRecognition und SpeechSynthesis.
- Verwenden Sie das Cylon.js-Framework, um einen RGB-LED-Streifen auf einem Raspberry Pi zu steuern
- Kommunizieren Sie über WSS (Secure Web Sockets) von der Webseite zu Cylon.js, um die Farbe für die LED zu steuern
Notiz
- Sie benötigen Lautsprecher oder Kopfhörer, um den Sprachsynthesizer zu hören
- Sie müssen Zugriff auf Ihr Mikrofon gewähren, damit die Spracherkennung funktioniert
- Da dieser Zugriff auf Ihr Mikrofon hat, muss die Site unter HTTPS betrieben werden
- Die Bibliothek cylon-api-socketio unterstützt derzeit kein https. Ich habe eine Pull-Anfrage, die darauf wartet, zusammengeführt zu werden, aber bis dahin müssen Sie /node_modules/cylon-api-socketio/lib/api.js durch die Datei in diesem Repository ersetzen
- pi-blaster wird benötigt, damit dies funktioniert.
Schritt 1: Ausrüstung
- Raspberry Pi - Ich habe einen Raspberry Pi 2B verwendet, den ich herumgelegt hatte, aber Sie können ein Raspberry Pi 3 Starter Kit für ca. 100 CAD bekommen
- RGB LED Strip Light - Ich habe mit Minger LED Strip Light 32.8ft/10M 600leds RGB SMD 5050 gespielt. Dies kommt mit einem Controller und einem Netzteil für ca. CAD 40
- Barrel Jack Connector - Ich habe einen von meinem örtlichen Elektronikladen gekauft, etwa so. Stellen Sie nur sicher, ob Ihr Netzteil passt
- Jumper-Anschlüsse / Draht - Ich hatte einige Buchse-zu-Stecker-Anschlusskabel und einige 22-Gauge-Festanschlusskabel herumliegen
- Breadboard Solderless Prototype PCB Board - so ähnlich
- 3 x 10kΩ Widerstände
- 3 x N-Kanal-MOSFETs zur Steuerung der LEDs - Ich habe einige IRL3303 von meinem örtlichen Elektronikladen gekauft. Es ist wichtig, dass die Schwellenspannung des Gates max. 3,3 V, damit es von den RPi-Pins angesteuert werden kann; normalerweise durch ein 'L' (Logic-Level) im Namen gekennzeichnet.
Schritt 2: Einrichten des Raspberry Pi
Betriebssystem
Normalerweise verwende ich die neueste Raspbian-Version. Laden Sie das Bild herunter und schreiben Sie es auf die SD-Karte. Wenn Sie einen Windows-Computer verwenden, können Sie Win32 Disk Imager verwenden, um das Image auf die SD-Karte zu schreiben.
Node.js
Installieren Sie die neueste Version von Node.js. Zum Zeitpunkt des Schreibens verwende ich 8.9.1
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install nodejs
Git. installieren
sudo apt-get install git
Schritt 3: Pi-Blaster
pi-blaster aktiviert PWM an den GPIO-Pins, die Sie von einem Raspberry Pi anfordern. Die verwendete Technik ist äußerst effizient: verbraucht die CPU nicht und liefert sehr stabile Impulse.
Mit dieser Pulsweitenmodulation kann der Raspberry Pi steuern, wie hell jeder der roten, grünen und blauen Kanäle für den LED-Streifen ist.
Klonen Sie zuerst das Repository
CD /opt/
sudo git clone https://github.com/sarfata/pi-blaster.git sudo chown -R pi:pi pi-blaster
Dann bauen und installieren
cd /opt/pi-blaster./autogen.sh &&./configure && make && sudo make install
Konfigurieren Sie abschließend, welche Pins Sie verwenden möchten
Erstellen und bearbeiten Sie die Datei unter dem Root-Konto oder mit sudo.
/etc/default/pi-blaster
Füge die folgenden Zeilen hinzu
DAEMON_OPTS=--gpio 23, 24, 25
Diese gpio-Pins müssen mit den Pins übereinstimmen, die Sie mit Ihrem LED-Streifen verbinden.
HINWEIS: Es gibt einen Unterschied zwischen GPIO und Pin-Nummer. In diesem Beispiel wird Folgendes verwendet
LED - Blau, GPIO-23, Pin - 16
LED - Rot, GPIO-24, Pin - 18 LED - Grün, GPIO-25, Pin - 22
Zusätzliche Optimierungen
Pi-Blaster starten
sudo service pi-blaster starten
Pi-blaster neu starten
sudo service pi-blaster neu starten
Pi-Blaster stoppen
sudo service pi-blaster stop
Pi-blaster automatisch beim Booten starten
sudo systemctl aktivieren pi-blaster
Warnungen und andere Vorbehalte
Pins, die von pi-blaster verwendet werden, werden als Ausgänge konfiguriert. Stecken Sie nichts an einen Eingang, sonst könnten Sie ihn zerstören! Dieser Daemon verwendet den Hardware-PWM-Generator des Himbeer-Pi, um genaue Timings zu erhalten. Dies könnte die Ausgabe Ihrer Soundkarte stören.
Schritt 4: Einrichten des Beispielcodes
Klonen Sie den Beispielcode
1. Richten Sie einen Basisordner für die Installation ein
cd /opt
sudo mkdir com.jonhaydock sudo chown pi:pi com.jonhaydockcd com.jonhaydock
2. Klonen Sie das Beispiel-Git-Repository
git-Klon
oder
git clone [email protected]:haydockjp/colour-pi.git
3. Installieren Sie die Abhängigkeiten
cd farbe-pi
npm installieren
Dies kann 2-3 Minuten dauern
4. Dieses Projekt muss über HTTPS und WSS kommunizieren. Derzeit unterstützt cylon-api-socketio keine SSL-Verbindungen. Es gibt eine offene Pull-Anfrage, um diese Unterstützung hinzuzufügen, aber bis diese zusammengeführt wird, befindet sich eine Patch-Datei in diesem Repository. Führen Sie den folgenden Befehl nach der npm-Installation aus
git checkout node_modules/cylon-api-socketio/lib/api.js
Schritt 5: Erstellen Sie ein selbstsigniertes SSL-Zertifikat
1. Erstellen Sie eine private Schlüsseldatei
cd /opt/com.jonhaydock/colour-pi/certs
openssl genrsa -out colour-pi-key.pem 2048
2. Erstellen Sie einen CSR (Certificate Signing Request)
openssl req -new -key colour-pi-key.pem -out colour-pi-csr.pem
An dieser Stelle werden Sie nach einigen Informationen für die Zertifikatsanforderung gefragt. Da es sich um ein selbstsigniertes Zertifikat handelt, liegt es an Ihnen, wie genau Sie die Angaben machen. Hier ist ein Beispiel
Ländername (2-Buchstaben-Code) [AU]:CA
Name des Bundesstaates oder der Provinz (vollständiger Name) [Some-State]:British Columbia Locality Name (z. B. Stadt) :Vancouver Organization Name (z. B. Firma) [Internet Widgits Pty Ltd]: Farbe Pi Name der Organisationseinheit (z. B. Abschnitt) : Allgemeiner Name (zB Server-FQDN oder IHR Name) :colour-pi E-Mail-Adresse :[email protected]
Ein Challenge-Passwort :
Ein optionaler Firmenname :
In diesem Beispiel drücken Sie einfach die Eingabetaste, um das Challenge-Passwort leer zu lassen
3. Generieren Sie das Zertifikat
openssl x509 -req -days 1095 -in color-pi-csr.pem -signkey color-pi-key.pem -out color-pi-cert.pem
4. Für zusätzliche Sicherheit erstellen wir auch eine Diffie Hellman Parameters-Datei
openssl dhparam -out dh_2048.pem 2048
Dies kann 15-20 Minuten dauern
Schritt 6: Verdrahtung der Schaltung
Stromversorgung des LED-Streifens
Der LED-Streifen wird mit 12 Volt betrieben. Der Raspberry Pi kann nur 3,3 V oder 5 V ausgeben und kann nicht annähernd die Ampere ausgeben, die zum Antreiben so vieler LEDs erforderlich sind.
Es ist wichtig, das 12-Volt-Netzteil nicht an den Raspberry Pi anzuschließen. N-Kanal-MOSFET-Transistoren werden verwendet, um die 3,3 V an den RPi-Pins und die 12 V der LED-Stromversorgung zu trennen.
Der MOSFET hat drei Pins Gate, Drain und Source. Wenn Sie sich nicht sicher sind, welches Google für das Datenblatt des von Ihnen verwendeten Transistors ist, z. IRL3303
Wir werden den Raspberry Pi Pin mit dem Gate, das LED-Kabel mit dem Drain und eine gemeinsame Masse mit der Quelle verbinden. Wenn der Pin hoch geht, aktiviert die Spannung zwischen Drain und Source das Gate und verbindet das Gate mit der Source.
Wir werden auch 10kΩ-Widerstände über das Gate und die Quelle legen, so dass wir, wenn der RPi-Pin hoch ist, den Pin schützen können, indem wir den durch ihn fließenden Strom reduzieren.
Führen Sie die nächsten Schritte auf eigene Gefahr durch. Ich übernehme keine Verantwortung für alles, was schief gehen könnte
Es gibt ein Fritzing-Bild und ein Foto der tatsächlichen Schaltung oben.
Ich würde empfehlen, dies bei ausgeschaltetem RPi und dem LED-Streifen zu tun
Richten Sie die Transistorschaltungen ein, eine pro Farbkanal
- Setzen Sie einen der Transistoren in das Steckbrett ein, wie in der Abbildung gezeigt
- Fügen Sie einen der 10kΩ-Widerstände über die Drain- und Source-Pins des Transistors ein. Dies ist der erste und letzte Pin
- Verwenden Sie etwas Draht, um den Source-Pin (letzter Pin) mit der Masse auf dem Steckbrett zu verbinden
- Wiederholen Sie die Schritte 1 - 3 noch zweimal, so dass Sie drei Sets haben - eines pro Farbe (Rot, Grün und Blau)
Verbinden Sie die RPi-Pins mit der Platine
- Verbinden Sie Pin 16 mit dem Gate-Pin (erster Pin) des ersten Transistors - Dies ist der blaue LED-Kanal
- Verbinden Sie Pin 18 mit dem Gate-Pin (erster Pin) des ersten Transistors - Dies ist der rote LED-Kanal
- Verbinden Sie Pin 20 mit einer der Masseleitungen an der Seite des Steckbretts
- Verbinden Sie Pin 22 mit dem Gate-Pin (erster Pin) des ersten Transistors - Dies ist der grüne LED-Kanal
Ich habe passende Drahtfarben zu den LEDs verwendet: Blau, Rot und Grün. Ich habe Schwarz für den Boden verwendet
Schließen Sie die Fassbuchse an
- Schließen Sie ein weißes Kabel an das + Ende der Fassbuchse an
- Schließen Sie ein schwarzes Kabel an das - Ende der Fassbuchse an
- Verbinden Sie das schwarze Kabel mit der gleichen Masseleitung auf dem Steckbrett, mit der der RPi Pin 20 verbunden war
- Verbinden Sie das weiße Kabel mit der + Leitung auf dem Steckbrett
Anschließen des LED-Streifens
Mein LED-Streifen wurde mit einem Stecker geliefert, der eine ausreichende Größe hatte, um vorübergehend in das Steckbrett eingesteckt zu werden. Ich schob den Stecker in das Steckbrett und verdrahtete ihn zum Test der Schaltung.
- Der erste Transistor, der an Pin 16 angeschlossen ist. Ich habe ein blaues Kabel vom Drain-Pin (mittlerer Pin) zum blauen Draht am LED-Streifenanschluss geführt
-
Der zweite Transistor, der an Pin 18 angeschlossen ist. Ich habe ein rotes Kabel von der geführt
Ablassen
Stift (mittlerer Stift) an das rote Kabel am LED-Streifenanschluss
-
Der dritte Transistor, der mit Pin 22 verbunden ist. Ich habe ein grünes Kabel von der geführt
Ablassen
Stift (mittlerer Stift) an den grünen Draht am LED-Streifenanschluss
- Schließlich führte ich ein weißes Kabel von der + Leitung auf dem Steckbrett, das mit der Fassbuchse verbunden war, zum weißen Kabel am LED-Streifenanschluss.
Leistung
Nachdem Sie die Schaltung überprüft haben, sollten Sie den Raspberry Pi einschalten und die 12-V-Versorgung an die Barrel-Buchse anschließen.
Schritt 7: Serverseitiger Code
Ausführen des serverseitigen Codes
cd /opt/com.jonhaydock/colour-pi
sudo npm start
Dadurch wird der Webserver gestartet und auf HTTPS- und WSS-Anforderungen gewartet.
HINWEIS: Denken Sie daran, zuerst den Pi-Blaster laufen zu lassen
Umgebungsvariablen
Der Standard-Website-Port ist 443, aber Sie können dies überschreiben, indem Sie eine Umgebungsvariable festlegen, bevor Sie den Code starten. Zum Beispiel
export COLOUR_PI_PORT=2443
Der Standard-Web-Socket-Port ist 1443, aber Sie können dies überschreiben, indem Sie eine Umgebungsvariable festlegen, bevor Sie den Code starten. Zum Beispiel
export COLOUR_PI_WSS_PORT=3443
Hinweis: Da der Web-Socket von cylon.js und nicht von der Hauptwebsite verwaltet wird, müssen diese auf verschiedenen Ports liegen
Die Pins, die für Blau (Pin 16), Grün (Pin 18) und Rot (Pin 22) verwendet werden, können ebenfalls überschrieben werden. Zum Beispiel
exportieren COLOUR_PI_PIN_BLUE=36
export COLOUR_PI_PIN_RED=38 export COLOUR_PI_PIN_GREEN=40
Hinweis: Diese müssen mit den von Ihnen verwendeten physischen Pins übereinstimmen. Wenn Sie diese ändern, müssen Sie auch die in der Datei /etc/default/pi-blaster definierten GPIOs aktualisieren. Zum Beispiel
DAEMON_OPTS=--gpio 16, 20, 21
Den Hauptservercode finden Sie in der Datei app.js. Diese Datei startet den HTTPS-Webserver und verwendet über das Cylon.js-Framework auch socket.io, um auf einem separaten Port auf Web-Socket-Anfragen zu lauschen.
Um auf die Website zuzugreifen, sollten Sie auf Ihrem Hauptrechner einen Webbrowser öffnen (ich habe dies nur in Chrome getestet) und die IP-Adresse des Raspberry Pi verwenden, z. B.
10.0.1.2/
Sie können Ihre IP-Adresse über die Befehlszeile des Raspberry Pi herausfinden.
ifconfig
Der Webserver stellt alle Inhalte im öffentlichen Ordner bereit. Standardmäßig wird die Seite index.html angezeigt.
Cylon.js erstellt einen Endpunkt, mit dem Sie Socket.io verbinden können.
10.0.1.2:1443/api/robots/colour-pi
Sie können über den Socket eine set_colour-Nachricht senden, um die Werte für Rot, Grün und Blau einzustellen
device.emit('set_colour', r, g, b)
Dies ruft den Befehl set_colour auf, der die Funktion setColour in app.js aufruft. Diese Funktion stellt die Helligkeitsstufen für jeden der R-, G- und B-Werte zwischen 0 und 255 ein. Dabei ist 0 ausgeschaltet und 255 vollständig eingeschaltet.
z. B.
Rot r=255, g=0, b=0
Grün r=0, g=255, b=0 Blau r=0, g=0, b=255 Weiß r=255, g=255, b=255 Schwarz / Aus r=0, g=0, b=0
Schritt 8: Website-Code
Allgemein
Die Website verwendet die Spracherkennung, um Farben aus einer vordefinierten Liste auszuwählen. Um der Liste eine Farbe hinzuzufügen, bearbeiten Sie die Datei auf dem Server: public/data/colours.json
z. B.
"red":"#FF0000", Wenn eine Farbe gefunden oder aus dem Dropdown-Menü ausgewählt wird, wird das Ausgabefeld auf diese Farbe eingestellt und eine Nachricht wird über socket.io an den Raspnerry Pi gesendet, der die LEDs auf dieselbe Farbe setzt.
HINWEIS: Je nachdem, wie gut Ihre LEDs sind, können Sie eine ähnliche Farbe sehen oder nicht. Einige sind einfacher zu duplizieren als andere
Da Sie ein selbstsigniertes SSL-Zertifikat verwenden, müssen Sie dies beim ersten Laden der Website im Browser bestätigen. Sie sollten eine Sicherheitswarnung zum Zertifikat sehen.
Spracherkennung
Dieses Feld hat ein Mikrofonsymbol. Wenn Sie auf das grüne Symbol klicken, wird nach Farben gesucht. Während es zuhört, wird es rot. Es hört kurz zu und hört dann auf. Wenn Sie auf das Mikrofonsymbol klicken, wenn es rot ist, wird es ebenfalls nicht mehr zuhören.
Da diese Site auf Ihr Mikrofon zugreifen muss, müssen Sie ihr die Erlaubnis erteilen, wenn Sie dazu aufgefordert werden
HINWEIS: Für diesen Teil benötigen Sie ein Mikrofon. Ich benutze das auf meiner Webkamera.
Zwischenabschrift
Dieses Feld verfolgt die Vermutungen der Wörter, die Sie sagen, während Sie sie sagen.
Endgültiges Transkript
Diese Box verfolgt die endgültige Vermutung, was Sie gesagt haben.
Bekannte Farben
Dies ist eine Liste aller Farben, die die Seite kennt. Es wird aus der Datei colors.json erstellt. Wenn Sie eine dieser Farben auswählen, spricht die Seite die Farbe und stellt die Ausgabefarbe ein.
HINWEIS: Sie benötigen Lautsprecher oder Kopfhörer, um die Sprache zu hören
Gefundene Farben
Diese Webseite unterstützt derzeit nur das Anpassen der Farbe. Wenn das Wort oder die Wörter, die Sie in das Mikrofon gesprochen haben, mit dem Namen einer bekannten Farbe übereinstimmen oder Sie eine Farbe aus der Liste Bekannte Farbe auswählen, wird sie hier als Protokoll hinzugefügt.
Ausgabe
Hier wird die zuletzt gefundene Farbe angezeigt. Der Farb-Hex-Wert (z. B. #7cb9e8) und der RGB-Wert (z. B. 124, 185, 232) werden als Text angezeigt und der Hintergrund des mittleren Felds wird auf die aktuelle Farbe gesetzt.
Diese Farbe wird auch an den Raspberry Pi gesendet und Sie sollten sehen, wie sich die Farbe des LED-Streifens ändert.
HINWEIS: Wenn sich die LED-Farbe nicht ändert, versuchen Sie, pi-blaster und/oder die node.js-App neu zu starten
sudo service pi-blaster neu starten
sudo npm start
Bekannte Stimmen
Dieses Feld zeigt eine Liste der "Bekannten Stimmen" aus der unterstützten SpeechSynthesis an. Wenn Sie eine dieser Stimmen auswählen, werden die Stimme und die Sprache, die Sie hören, geändert und der Name der Stimme wird gesprochen.
Außerdem wird die Sprache der Spracherkennung so geändert, dass sie mit der in der Liste ausgewählten übereinstimmt.
Schritt 9: Endlich
Hier ist ein Beispiel für das, was Sie sehen sollten.
Bitte lassen Sie es mich wissen, wenn Sie ein Problem haben, und ich kann bei Bedarf aktualisieren.
Empfohlen:
Erste Schritte mit Amara: 7 Schritte
Erste Schritte mit Amara: Amara ist ein kostenloser Untertitel-Editor, mit dem Sie ganz einfach Untertitel zu Videos hinzufügen können – vom Unterricht bis zum persönlichen Gebrauch. Diese Anweisungen helfen Ihnen, ein Amara-Konto einzurichten, damit Sie schnell und einfach Untertitel hinzufügen können
Erste Schritte mit der Heimautomatisierung: Home Assistant installieren: 3 Schritte
Erste Schritte mit der Hausautomation: Home Assistant installieren: Wir starten jetzt die Hausautomationsserie, in der wir ein Smart Home erstellen, das es uns ermöglicht, Dinge wie Licht, Lautsprecher, Sensoren usw. über einen zentralen Hub zusammen mit einem Sprachassistent. In diesem Beitrag erfahren Sie, wie Sie in
Erste Schritte mit dem SkiiiD-Editor: 11 Schritte
Erste Schritte mit dem SkiiiD-Editor: skiiiD-Editor, Entwicklungsboard-Firmware IDEskiiiD-Editor basiert auf skiiiD (Firmware Development Engine). Jetzt ist es mit Arduino UNO, MEGA und NANO mit 70+ Komponenten kompatibel.BetriebssystemmacOS / WindowsInstallierenBesuchen Sie die Website https:
Erste Schritte mit Python: 7 Schritte (mit Bildern)
Erste Schritte mit Python: Programmieren ist großartig! Es ist kreativ, macht Spaß und gibt Ihrem Gehirn ein mentales Training. Viele von uns wollen etwas über Programmieren lernen, aber überzeugen sich selbst davon, dass wir es nicht können. Vielleicht hat es zu viel Mathematik, vielleicht der Jargon, der erschreckend herumgeworfen wird
Raspbian in Raspberry Pi 3 B ohne HDMI installieren - Erste Schritte mit Raspberry Pi 3B - Einrichten Ihres Raspberry Pi 3: 6 Schritte
Raspbian in Raspberry Pi 3 B ohne HDMI installieren | Erste Schritte mit Raspberry Pi 3B | Einrichten Ihres Raspberry Pi 3: Wie einige von Ihnen wissen, sind Raspberry Pi-Computer ziemlich großartig und Sie können den gesamten Computer nur auf einer einzigen winzigen Platine bekommen. Das Raspberry Pi 3 Model B verfügt über einen Quad-Core 64-Bit ARM Cortex A53 mit 1,2 GHz getaktet. Damit ist der Pi 3 ungefähr 50