Inhaltsverzeichnis:

Farbpi: 9 Schritte
Farbpi: 9 Schritte

Video: Farbpi: 9 Schritte

Video: Farbpi: 9 Schritte
Video: Wie funktioniert die Photosynthese - REMAKE! 2024, November
Anonim
Farbe-pi
Farbe-pi

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

  1. 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
  2. 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
  3. Barrel Jack Connector - Ich habe einen von meinem örtlichen Elektronikladen gekauft, etwa so. Stellen Sie nur sicher, ob Ihr Netzteil passt
  4. Jumper-Anschlüsse / Draht - Ich hatte einige Buchse-zu-Stecker-Anschlusskabel und einige 22-Gauge-Festanschlusskabel herumliegen
  5. Breadboard Solderless Prototype PCB Board - so ähnlich
  6. 3 x 10kΩ Widerstände
  7. 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
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

Verdrahten der Schaltung
Verdrahten der Schaltung
Verdrahten der Schaltung
Verdrahten der Schaltung
Verdrahten der Schaltung
Verdrahten der Schaltung
Verdrahten der Schaltung
Verdrahten 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

  1. Setzen Sie einen der Transistoren in das Steckbrett ein, wie in der Abbildung gezeigt
  2. Fügen Sie einen der 10kΩ-Widerstände über die Drain- und Source-Pins des Transistors ein. Dies ist der erste und letzte Pin
  3. Verwenden Sie etwas Draht, um den Source-Pin (letzter Pin) mit der Masse auf dem Steckbrett zu verbinden
  4. 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

  1. Verbinden Sie Pin 16 mit dem Gate-Pin (erster Pin) des ersten Transistors - Dies ist der blaue LED-Kanal
  2. Verbinden Sie Pin 18 mit dem Gate-Pin (erster Pin) des ersten Transistors - Dies ist der rote LED-Kanal
  3. Verbinden Sie Pin 20 mit einer der Masseleitungen an der Seite des Steckbretts
  4. 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

  1. Schließen Sie ein weißes Kabel an das + Ende der Fassbuchse an
  2. Schließen Sie ein schwarzes Kabel an das - Ende der Fassbuchse an
  3. Verbinden Sie das schwarze Kabel mit der gleichen Masseleitung auf dem Steckbrett, mit der der RPi Pin 20 verbunden war
  4. 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.

  1. 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
  2. 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

  3. 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

  4. 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

Serverseitiger Code
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

Website-Code
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

Image
Image

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: