Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Dingen aansluiten via Bluetooth / Android / Arduino

Componenten en benodigdheden

Arduino UNO
× 1
LED (generiek)
× 1

Apps en online services

Arduino IDE
MIT App Inventor 2

Over dit project

Een zeer goed draadloos lokaal (en persoonlijk) netwerk is ongetwijfeld Bluetooth (BT). Tegenwoordig is het gebruikelijk dat we ons vinden met behulp van mobiele telefoons, stereo's, camera's, enz., die met elkaar verbonden zijn met behulp van het beroemde "blauwe kleine licht".

In de wereld van IoT en automatisering in het algemeen is het heel gebruikelijk om afstandsbedieningen via mobiele telefoons te vinden die BT-technologie gebruiken. Dit komt door twee basiscomponenten, maar erg belangrijk:

  • Eenvoudige ontwikkelplatforms voor ANDROID-apps (zoals MIT AppInventor2) en
  • Betaalbare BT-modules (zoals HC-06)

In deze tutorial zal ik enkele ideeën ontwikkelen over het besturen van Arduino-uitgangen via een mobiel apparaat om een ​​robot te verplaatsen, lampen in een huis aan te doen, enz.

Stap 1:De Bluetooth-module en de Arduino

In de markt is het heel gebruikelijk om "Master-Slave" BT 3.0-modules te vinden als de HC-05 en "Slave" als de HC-06. Meer recent verschenen de HC-08 en HC-10 die werken met technologie BT 4.0 of BLE ("Bluetooth Low Energy"). De BLE-modules zijn de enige die kunnen worden aangesloten op een iPhone, omdat Apple helaas geen ondersteuning biedt voor BT 3.0.

Voor de projecten die hier worden besproken, zal ik een HC-06 gebruiken die erg populair en goedkoop is (Bye, bye, iPhone! Androids zijn koningen hier!). De BT-module wordt gevoed met 5V, waardoor deze eenvoudig kan worden aangesloten op bijvoorbeeld een Arduino UNO. Zijn zend- (Tx) en ontvangst (Rx) pinnen kunnen rechtstreeks op de UNO worden aangesloten, zonder dat er spanningsdelers nodig zijn, zoals we zien in het geval van ESP8266. Gewoonlijk moet de HC-06 rechtstreeks worden aangesloten op pinnen 0 en 1 Arduino (“Serial 0”):

  • HC06-Tx naar Arduino pin 0 (Rx)
  • HC06-Rx naar Arduino pin 1 (Tx)

Bij gebruik van "Serial 0"-ingangen (de enige HW Serial-poort bij UNO), is het erg belangrijk om te onthouden dat de HC-06 tijdens het laden van het programma mogelijk niet fysiek is aangesloten op pinnen 0 en 1, omdat de USB-poort ook de dezelfde serie. Een eenvoudige manier om dit kleine probleem te omzeilen (als uw project niet veel GPIO's UNO gebruikt) is door een "SW seriële poort" te gebruiken via de bibliotheek SoftwareSerial. In ons geval gebruiken we pinnen 10 en 11 van UNO (respectievelijk Tx, Rx).

Stap 2:Testen en configureren van de HC-06

De volgende stap is het schrijven van een eenvoudige code om de HC-O6 te testen, programmeren en initialiseren:Voeg om te beginnen de Library Software Serial toe en stel de variabele "BT" in op de nieuwe seriële poort.

#include SoftwareSerial BT (10, 11); // RX, TXString-opdracht =""; // Slaat reactie van bluetooth devicevoid setup (){ Serial.begin (9600); Serial.println ("Type AT-commando's"); BT.begin (9600); // HC-06 Meestal standaard baudrate} 

Dan komt het hoofdgedeelte van de code die eenvoudig wacht op gegevens die van de BT komen. Bij aankomst worden de gegevens in de seriële monitor geschreven. Evenzo kunnen AT-commando's worden verzonden van de seriële monitor naar de HC-06-module.

void loop (){ if (BT.available ()) // ontvang data indien beschikbaar. { while (BT.available ()) // "blijf ontvangen". { vertraging (10); // Vertraging toegevoegd om het ding stabiel te maken char c =BT.read (); // Voer een seriële leesopdracht uit + =c; // Bouw de string. } Serial.println (opdracht); commando =""; // Geen herhalingen } if (Serial.available ()) { delay (10); BT.schrijven (Serial.lezen ()); }} 

Nadat het programma is geladen, kunt u met behulp van de seriële monitor enkele basistests uitvoeren, bijvoorbeeld:

  • Stuur "AT", de module moet "OK" antwoorden.
  • Vraag firmwareversie:" T + VERSION", de module moet reageren, bijvoorbeeld:"linvorV1.8".
  • Met HC-06 kun je een naam voor de module definiëren, bijvoorbeeld:"The T + NAMEMJRoBot_BT_HC06". Maar in tegenstelling tot andere modules, kunt u niet weten wat de naam is die voor de module is ingesteld. Bij het verzenden van het vorige commando antwoordt de HC-06 eenvoudig:"OKsetname" .

Over het algemeen wordt de HC-O6 standaard geleverd met het wachtwoord (of PIN):1234. U kunt een nieuwe instellen met het AT-commando:

  • AT + PIN xxxx waarbij 'xxxx' 4 cijfers zijn.

Blaas de Arduino-code voor HC-06-test:

F08H931IL8LGG7U.ino

Stap 3:Het Android-apparaat

OKE! Module aangesloten op UNO en actief. Het is tijd om het Android-apparaat te introduceren.

Er zijn veel apps in de Google Store die kunnen worden gebruikt. Ik zal een app gebruiken die door mij is ontwikkeld met behulp van de MIT Application2-tool en die gratis verkrijgbaar is in de Google Store:MJRoBot BT Digital Analog Voice Control

De app verzendt digitale commando's (via knoppen of spraak) en analoge commando's om PWM-apparaten zoals servo's te bedienen (verzend gegevens variërend van 0 tot 255).

  • Download de app
  • Ga naar de instellingen van het Android-apparaat en zoek naar de BT-module en maak de verbinding (voer PIN 1234 of een andere door u gedefinieerde pincode in). Dit moet één keer worden gedaan, omdat het apparaat de verbindingsgegevens bewaart.
  • Zodra het apparaat en de HC-06 met elkaar praten, start je de app. Bij een tweede keer, bij het starten van de app, moet de BT-module automatisch worden verbonden.
  • Selecteer de modulenaam (in mijn geval is dat degene met de HC-06 aan het einde).

De app zal dan "CONNECTED" tonen, met de mededeling dat hij "gepareerd" is met de HC-06. Test nu de app-knoppen en kijk op de seriële monitor van uw pc welke gegevens de app verzendt. Als u bijvoorbeeld achtereenvolgens op de knoppen "AAN" en "UIT" drukt voor de 4 apparaten, zou het resultaat zijn:

dev1ondev1offdev2ondev2offdev3ondev3offdev4ondev4off 

Nu we een app voor Android hebben die met de BT-module praat, gaan we iets nuttigs maken!

Stap 4:Arduino-uitgangen besturen.

Laten we het circuit bouwen zoals hierboven weergegeven. Het idee is om de app te gebruiken om de LED's AAN en UIT te zetten en ook om hun intensiteit te regelen.

Verbindingen:

  • Apparaat 1:"dev1on / dev1off" ==> LED Rood ==> Pin 3 UNO
  • Apparaat 2:"dev2on / dev2off" ==> LED Geel ==> Pin 5 UNO
  • Apparaat 3:"dev3on / dev3off" ==> LED Groen ==> Pin 6 UNO
  • Apparaat 4:"dev4on / dev4off" ==> LED Blauw ==> Pin 9 UNO

Dat wil zeggen, om de "ON" gerelateerd aan de knop "Device 1" te activeren, wordt het sms-bericht "dev1on" naar de Arduino verzonden. Bij ontvangst van dit bericht moet de rode LED gaan branden, enzovoort.

Merk op dat de 4 pinnen de pinnen zijn die PWM kunnen genereren (niet alle digitale UNO-pinnen kunnen dit. Zoek naar degenen die op de markt zijn met "~ ”. Dit is belangrijk voor het gebruik van "sliders" bij de app, om numerieke gegevens te verzenden om de intensiteit van de LED's via PWM te regelen:

  • Dev A0:"r / 0-255" ==> LED Rood ==> Pin 3 UNO
  • Dev A1:"y / 0-255" ==> LED Geel ==> Pin 5 UNO
  • Dev A2:"g / 0-255" ==> LED Groen ==> Pin 6 UNO
  • Dev A3:"b / 0-255" ==> LED Blauw ==> Pin 9 UNO

In het geval van schuifregelaars wordt vóór de PWM-gegevenswaarde (0 tot 255) een teken naar de Arduino gestuurd om hem te informeren dat er een "schuifregelaar" -commando komt.

In de video hieronder, een demonstratie van het gedeelte boven het programma (knoppen en schuifregelaar):

Hieronder de volledige Arduino-code:

FA44NBUIL8LGGAY.ino

Stap 5:Bedien IoT-apparaten met spraakcommando's

Voor de besturing van IoT-apparaten is spraak tegenwoordig een trend. Het verkrijgen van dit type besturing met Arduino / HC-06 / Android is uiterst eenvoudig. Android-apparaten hebben deze functie al door "fabriek". In de app die ik heb ontwikkeld, is een knop toegevoegd waarmee Android een commando "luistert" en verzendt in tekstformaat naar de Arduino. De code is verantwoordelijk voor het "lezen" van de string die komt.

Ik heb enkele voorbeelden in mijn code toegevoegd. Wanneer de Arduino bijvoorbeeld een "Connect TV"-opdracht ontvangt, gaat de groene LED (die overeenkomt met het apparaat 3) AAN (in plaats van de LED, zou je een relais kunnen hebben dat de tv zou verbinden).

U moet de tekenreeksen die in het Loop-gedeelte van de code staan, wijzigen met opdrachten in uw taal. Ik gebruikte Portugees dat het mijn moedertaal is en was gemakkelijker te beheren bij Google vanwege het andere accent met mijn Engels. Gebruik daar korte zinnen of alleen woorden. Het belangrijkste is een perfecte match tussen wat je hebt geschreven en wat de Google-app voor spraakherkenning teruggeeft.

Hier vindt u een link naar een .aia-bestand dat rechtstreeks op MIT AppInventor2 kan worden uitgevoerd. In de onderstaande video een kleine demonstratie van de spraakbesturing:

Stap 6:Conclusie

Welnu, ik geloof dat je met deze tutorial het enorme potentieel kunt realiseren van het besturen van "dingen" met behulp van BT / Android / Arduino. Zoals altijd hoop ik dat dit project anderen kan helpen hun weg te vinden in de opwindende wereld van elektronica , robotica en IoT! Bezoek mijn blog voor meer projecten:MJRoBot.org

Saludos uit het zuiden van de wereld!

Tot ziens bij mijn volgende tutorial!

Dank je

Marcelo

Code

  • Codefragment #1
  • Codefragment #2
  • Codefragment #3
Codefragment #1Platte tekst
#include SoftwareSerial BT (10, 11); // RX, TXString-opdracht =""; // Slaat reactie van bluetooth devicevoid setup (){ Serial.begin (9600); Serial.println ("Type AT-commando's"); BT.begin (9600); // HC-06 Meestal standaard baudrate}
Codefragment #2Platte tekst
void loop (){ if (BT.available ()) // ontvang data indien beschikbaar. { while (BT.available ()) // "blijf ontvangen". { vertraging (10); // Vertraging toegevoegd om het ding stabiel te maken char c =BT.read (); // Voer een seriële leesopdracht uit + =c; // Bouw de string. } Serial.println (opdracht); commando =""; // Geen herhalingen } if (Serial.available ()) { delay (10); BT.schrijven (Serial.lezen ()); }}
Codefragment #3Platte tekst
dev1ondev1offdev2ondev2offdev3ondev3offdev4ondev4off

Productieproces

  1. Raspberry Pi-robot bestuurd via Bluetooth
  2. Atmel AT89-serie programmeren via Arduino
  3. Universele afstandsbediening met Arduino, 1Sheeld en Android
  4. Android bestuurd speelgoed met Raspberry Motor Shield
  5. Arduino met Bluetooth om een ​​LED te bedienen!
  6. Bluetooth spraakgestuurde apparaten met OK Google
  7. Arduino - Stuur temperatuur naar internet via serieel
  8. Bewegingsgevoelige circuitbesturing via Intel Curie
  9. Knipperende LED's op Arduino vanaf iOS en Android
  10. Arduino Uno + elektrisch apparaat (lamp) + Android-telefoon
  11. Bedien de Arduino-robotarm met Android-app