Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Verbindungen über Bluetooth / Android / Arduino

Komponenten und Verbrauchsmaterialien

Arduino UNO
× 1
LED (generisch)
× 1

Apps und Onlinedienste

Arduino-IDE
MIT App Inventor 2

Über dieses Projekt

Ein sehr gutes drahtloses lokales (und persönliches) Netzwerk ist zweifellos das Bluetooth (BT). Heute in unserem Alltag ist es üblich, uns mit Handys, Stereoanlagen, Kameras usw. zu finden, die mit Hilfe des berühmten "blauen Lichts" verbunden sind.

In der Welt des IoT und der Automatisierung im Allgemeinen ist es sehr üblich, Fernbedienungen über Mobiltelefone mit BT-Technologie zu finden. Dies liegt an zwei grundlegenden Komponenten, die jedoch sehr wichtig sind:

  • Einfache Entwicklungsplattformen für ANDROID-Apps (wie MIT AppInventor2) und
  • Erschwingliche BT-Module (wie HC-06)

In diesem Tutorial werde ich einige Ideen zur Steuerung der Arduino-Ausgaben über ein mobiles Gerät entwickeln, um einen Roboter zu bewegen, Lampen an einem Haus einzuschalten usw.

Schritt 1:Das Bluetooth-Modul und das Arduino

Auf dem Markt findet man sehr häufig "Master-Slave" BT 3.0 Module als HC-05 und "Slave" als HC-06. In jüngerer Zeit erschienen die HC-08 und HC-10, die mit der Technologie BT 4.0 oder BLE ("Bluetooth Low Energy") arbeiten. Die BLE-Module sind die einzigen, die an ein iPhone angeschlossen werden können, da Apple BT 3.0 leider nicht unterstützt.

Für die hier besprochenen Projekte werde ich ein HC-06 verwenden, das sehr beliebt und günstig ist (Tschüss, Tschüss, iPhone! Androids sind hier Könige!). Das BT-Modul wird mit 5V gespeist, wodurch es beispielsweise problemlos an ein Arduino UNO angeschlossen werden kann. Seine Sende- (Tx) und Empfangs- (Rx) Pins können direkt mit dem UNO verbunden werden, ohne dass Spannungsteiler benötigt werden, wie wir im Fall des ESP8266 sehen. Normalerweise sollte der HC-06 direkt an die Pins 0 und 1 Arduino („Serial 0“) angeschlossen werden:

  • HC06-Tx an Arduino-Pin 0 (Rx)
  • HC06-Rx an Arduino Pin 1 (Tx)

Bei der Verwendung von "Serial 0"-Eingängen (der einzige HW-Serial-Port bei UNO) ist unbedingt zu beachten, dass der HC-06 während des Programmladens nicht physikalisch mit den Pins 0 und 1 verbunden sein darf, da der USB-Port auch die gleiche serie. Eine einfache Möglichkeit, dieses kleine Problem zu umgehen (wenn Ihr Projekt nicht viele GPIOs UNO verwendet) besteht darin, einen „SW Serial Port“ über die Bibliothek SoftwareSerial zu verwenden. In unserem Fall hier verwenden wir die Pins 10 und 11 von UNO (Tx bzw. Rx).

Schritt 2:Testen und Konfigurieren des HC-06

Der nächste Schritt besteht darin, einen einfachen Code zu schreiben, um den HC-O6 zu testen, zu programmieren und zu initialisieren:Fügen Sie zunächst die Bibliothekssoftware Serial ein und setzen Sie die Variable "BT" auf den neuen seriellen Port.

#include SoftwareSerial BT (10, 11); // RX, TXString-Befehl =""; // Speichert die Antwort des Bluetooth-Gerätevoid-Setups () {Serial.begin (9600); Serial.println ("AT-Befehle eingeben"); BT.Beginn (9600); // HC-06 Normalerweise Standard-Baudrate} 

Dann kommt der Hauptteil des Codes, der einfach auf Daten wartet, die vom BT kommen. Wenn die Daten angekommen sind, werden sie in den Serial Monitor geschrieben. Ebenso können AT-Befehle vom seriellen Monitor an das HC-06-Modul gesendet werden.

void loop (){ if (BT.available ()) // Daten empfangen, falls verfügbar. { while (BT.available ()) // "Weiter empfangen". { Verzögerung (10); // Verzögerung hinzugefügt, um die Sache stabil zu machen char c =BT.read (); // Führen Sie den seriellen Lesebefehl aus + =c; // Erstellen Sie die Zeichenfolge. } Serial.println (Befehl); Befehl =""; // Keine Wiederholungen} if (Serial.available ()) { Verzögerung (10); BT.write (Seriell.lesen ()); }} 

Sobald das Programm geladen ist, führen Sie mit dem Serial Monitor einige grundlegende Tests durch, zum Beispiel:

  • Sende "AT", das Modul sollte mit "OK" antworten.
  • Firmware-Version abfragen:" T + VERSION", das Modul muss antworten, zB:"linvorV1.8".
  • Mit HC-06 können Sie einen Namen für das Modul definieren, zum Beispiel:"The T + NAMEMJRoBot_BT_HC06". Im Gegensatz zu anderen Modulen können Sie jedoch nicht wissen, wie der Name für das Modul festgelegt ist. Beim Senden des vorherigen Befehls antwortet der HC-06 einfach:"OKsetname" .

Im Allgemeinen wird der HC-O6 standardmäßig mit dem Passwort (oder PIN) geliefert:1234. Sie können mit dem AT-Befehl ein neues setzen:

  • AT + PIN xxxx, wobei 'xxxx' aus 4 Ziffern besteht.

Unten den Arduino-Code für den HC-06-Test:

F08H931IL8LGG7U.ino

Schritt 3:Das Android-Gerät

OK! Modul an UNO angeschlossen und läuft. Es ist an der Zeit, das Android-Gerät vorzustellen.

Es gibt viele Apps im Google Store, die verwendet werden können. Ich werde eine App verwenden, die von mir mit dem MIT Application2 Tool entwickelt wurde und kostenlos im Google Store erhältlich ist:MJRoBot BT Digital Analog Voice Control

Die App sendet digitale Befehle (über Tasten oder Sprache) und analoge Befehle, um PWMs-Geräte wie Servos zu steuern (sendet Daten im Bereich von 0 bis 255).

  • Laden Sie die App herunter
  • Gehen Sie in die Einrichtung des Android-Geräts und suchen Sie nach dem BT-Modul und stellen Sie die Verbindung her (geben Sie PIN 1234 oder eine andere von Ihnen definierte ein). Dies sollte einmal durchgeführt werden, da das Gerät die Verbindungsdaten behält.
  • Sobald das Gerät und der HC-06 miteinander kommunizieren, starten Sie die App. Beim zweiten Start der App sollte das BT-Modul automatisch verbunden werden.
  • Wählen Sie den Modulnamen aus (in meinem Fall der mit dem HC-06 am Ende).

Die App zeigt dann „VERBUNDEN“ an und informiert Sie darüber, dass sie mit dem HC-06 „gekoppelt“ ist. Testen Sie an dieser Stelle die App-Tasten und beobachten Sie auf Ihrem PC Serial Monitor, welche Daten die App sendet. Wenn Sie beispielsweise nacheinander die Tasten "ON" und "OFF" für die 4 Geräte drücken, wäre das Ergebnis:

dev1ondev1offdev2ondev2offdev3ondev3offdev4ondev4off 

Da wir jetzt eine App für Android haben, die mit dem BT-Modul spricht, können wir etwas Nützliches erstellen!.

Schritt 4:Arduino-Ausgänge steuern.

Bauen wir die Schaltung wie oben gezeigt auf. Die Idee ist, mit der App die LEDs ein- und auszuschalten und auch ihre Intensität zu steuern.

Anschlüsse:

  • Gerät 1:"dev1on / dev1off" ==> LED Rot ==> Pin 3 UNO
  • Gerät 2:"dev2on / dev2off" ==> LED Gelb ==> Pin 5 UNO
  • Gerät 3:"dev3on / dev3off" ==> LED Grün ==> Pin 6 UNO
  • Gerät 4:"dev4on / dev4off" ==> LED Blau ==> Pin 9 UNO

Das heißt, um den "ON"-Button für "Device 1" auszulösen, wird die Textnachricht "dev1on" an den Arduino gesendet. Nach Erhalt dieser Nachricht sollte die rote LED aufleuchten usw.

Beachten Sie, dass die 4 Pins die Pins sind, die PWM erzeugen können (nicht alle digitalen UNO-Pins können dies tun. Suchen Sie nach dem Markt mit "~ .". “. Dies ist wichtig für die Verwendung von "Schiebereglern" in der App, um numerische Daten zu senden, um die Intensität der LEDs per PWM zu steuern:

  • Dev A0:"r / 0-255" ==> LED Rot ==> Pin 3 UNO
  • Dev A1:"y / 0-255" ==> LED Gelb ==> Pin 5 UNO
  • Dev A2:"g / 0-255" ==> LED Grün ==> Pin 6 UNO
  • Dev A3:"b / 0-255" ==> LED Blau ==> Pin 9 UNO

Bei Schiebereglern wird vor dem PWM-Datenwert (0 bis 255) ein Zeichen an den Arduino gesendet, um ihn darüber zu informieren, dass ein "Schieberegler"-Befehl kommt.

Im Video unten eine Demonstration des oben genannten Programms (Buttons &Slider):

Unterhalb des vollständigen Arduino-Codes:

FA44NBUIL8LGGAY.ino

Schritt 5:IoT-Geräte über Sprachbefehle steuern

Für die Steuerung von IoT-Geräten ist Sprache heutzutage ein Trend. Diese Art der Steuerung mit Arduino / HC-06 / Android zu erhalten, ist extrem einfach. Android-Geräte haben diese Funktion bereits ab "Factory". In der von mir entwickelten App wurde eine Schaltfläche hinzugefügt, die Android dazu bringt, einen Befehl zu "hören" und ihn im Textformat zu senden zum Arduino. Der Code ist für das "Lesen" der kommenden Zeichenfolge verantwortlich.

Ich habe einige Beispiele in meinem Code hinzugefügt. Wenn der Arduino beispielsweise einen "Connect TV"-Befehl empfängt, leuchtet die grüne LED (entsprechend dem Gerät 3) auf (anstelle der LED könnten Sie ein Relais haben, das den Fernseher verbindet).

Sie sollten die Strings im Loop-Teil des Codes mit Befehlen in Ihrer Sprache ändern. Ich habe Portugiesisch verwendet, da dies meine Muttersprache ist und bei Google aufgrund des unterschiedlichen Akzents mit meinem Englisch einfacher zu handhaben war. Sie sollten dort kurze Sätze oder nur Wörter verwenden. Wichtig ist eine perfekte Übereinstimmung zwischen dem, was Sie geschrieben haben, und dem, was die Google-Spracherkennungs-App zurückgibt.

Hier finden Sie einen Link zur .aia-Datei, die direkt auf MIT AppInventor2 ausgeführt werden kann. Im Video unten eine kleine Demonstration der Sprachsteuerung:

Schritt 6:Fazit

Nun, ich glaube, dass es Ihnen mit diesem Tutorial möglich ist, das enorme Potenzial der Steuerung von "Dingen" mit BT / Android / Arduino zu erkennen. Wie immer hoffe ich, dass dieses Projekt anderen helfen kann, sich in der spannenden Welt der Elektronik zurechtzufinden , Robotik und IoT! Weitere Projekte finden Sie in meinem Blog:MJRoBot.org

Saludos aus dem Süden der Welt!

Wir sehen uns bei meinem nächsten Tutorial!

Danke

Marcelo

Code

  • Code-Snippet Nr. 1
  • Code-Snippet 2
  • Code-Snippet #3
Code-Snippet Nr. 1Nur-Text
#include SoftwareSerial BT (10, 11); // RX, TXString-Befehl =""; // Speichert die Antwort des Bluetooth-Gerätevoid-Setups () {Serial.begin (9600); Serial.println ("AT-Befehle eingeben"); BT.Beginn (9600); // HC-06 Normalerweise Standard-Baudrate}
Code-Snippet #2Klartext
void loop (){ if (BT.available ()) // Daten empfangen, falls verfügbar. { while (BT.available ()) // "Weiter empfangen". { Verzögerung (10); // Verzögerung hinzugefügt, um die Sache stabil zu machen char c =BT.read (); // Führen Sie den seriellen Lesebefehl aus + =c; // Erstellen Sie die Zeichenfolge. } Serial.println (Befehl); Befehl =""; // Keine Wiederholungen} if (Serial.available ()) { Verzögerung (10); BT.write (Seriell.lesen ()); }}
Code-Snippet #3Kurztext
dev1ondev1offdev2ondev2offdev3ondev3offdev4ondev4off

Herstellungsprozess

  1. Raspberry Pi Roboter über Bluetooth gesteuert
  2. Programmieren der Atmel AT89-Serie über Arduino
  3. Universelle Fernbedienung mit Arduino, 1Sheeld und Android
  4. Android-gesteuertes Spielzeug mit Raspberry Motor Shield
  5. Arduino mit Bluetooth zur Steuerung einer LED!
  6. Sprachgesteuerte Bluetooth-Geräte mit OK Google
  7. Arduino - Temperatur über eine serielle Schnittstelle an das Web senden
  8. Bewegungsempfindliche Schaltungssteuerung über Intel Curie
  9. Blinkende LEDs auf Arduino von iOS und Android
  10. Arduino Uno + Elektrogerät (Glühbirne) + Android-Telefon