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

Arduino en HC-05 Bluetooth-module Volledige zelfstudie

In deze Arduino Bluetooth-zelfstudie leren we hoe we de HC-05-module gebruiken voor het besturen van Arduino via Bluetooth-communicatie. Je kunt de volgende video bekijken of de schriftelijke tutorial hieronder lezen voor meer details.

Overzicht

Voor deze tutorial heb ik twee voorbeelden gemaakt, de Arduino besturen met een smartphone en de Arduino besturen met een laptop of een pc. Om deze tutorial niet te overbelasten, zullen we in mijn volgende tutorial leren hoe we de HC-05 Bluetooth-module kunnen configureren en een Bluetooth-communicatie kunnen maken tussen twee afzonderlijke Arduino-boards als master- en slave-apparaten.

Voordat we beginnen met het eerste voorbeeld, het besturen van een Arduino met een smartphone, laten we de HC-05 Bluetooth-module eens nader bekijken. In vergelijking met de HC-06-module, die alleen als slave kan worden ingesteld, kan de HC-05 ook als master worden ingesteld, waardoor communicatie tussen twee afzonderlijke Arduino-boards mogelijk is. Er zijn verschillende versies van deze module, maar ik raad degene aan die op een breakout-bord komt, omdat het op die manier veel gemakkelijker te verbinden is. De HC-05-module is een Bluetooth SPP-module (Serial Port Protocol), wat betekent dat deze via seriële communicatie met de Arduino communiceert.

U kunt de componenten die nodig zijn voor deze Arduino-tutorial downloaden van een van de onderstaande sites:

  • HC-05 Bluetooth-module …………….
  • Arduino-bord …………………………
  • Broodplank en springdraden ……… 

Circuitschema's


Hier is hoe we de module op het Arduino-bord moeten aansluiten.

De specifieke module die ik heb, kan worden gevoed van 3,6 tot 6 volt, omdat deze op een breakout-bord komt dat een spanningsregelaar bevat. Het logische spanningsniveau van de datapinnen is echter 3,3V. Dus de lijn tussen de Arduino TX (Transmit Pin, die 5V-uitgang heeft) en de Bluetooth-module RX (Receive Pin, die slechts 3,3V ondersteunt) moet via een spanningsdeler worden aangesloten om de module niet te verbranden. Aan de andere kant kan de lijn tussen de Bluetooth-module TX-pin en de Arduino RX-pin direct worden aangesloten omdat het 3,3V-signaal van de Bluetooth-module voldoende is om als een hoge logica op het Arduino-bord te worden geaccepteerd.

Arduino Bluetooth-communicatie voorbeeld broncode

Dus nu zijn we klaar om de Arduino-code te maken om de communicatie tussen het Arduino-bord en de smartphone mogelijk te maken. We zullen een eenvoudig voorbeeld geven, gewoon een LED aan- en uitzetten, maar het zal goed genoeg zijn om de communicatie te begrijpen.

#define ledPin 7
int state = 0;

void setup() {
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, LOW);
  Serial.begin(38400); // Default communication rate of the Bluetooth module
}

void loop() {
  if(Serial.available() > 0){ // Checks whether data is comming from the serial port
    state = Serial.read(); // Reads the data from the serial port
 }

 if (state == '0') {
  digitalWrite(ledPin, LOW); // Turn LED OFF
  Serial.println("LED: OFF"); // Send back, to the phone, the String "LED: ON"
  state = 0;
 }
 else if (state == '1') {
  digitalWrite(ledPin, HIGH);
  Serial.println("LED: ON");;
  state = 0;
 } 
}Code language: Arduino (arduino)

Beschrijving: Eerst moeten we de pin definiëren waarmee onze LED zal worden verbonden en een variabele waarin we de gegevens van de smartphone zullen opslaan. In de setup-sectie moeten we de LED-pin als output definiëren en deze meteen laag instellen. Zoals eerder vermeld, zullen we de seriële communicatie gebruiken, dus we moeten de seriële communicatie beginnen met een baudrate van 38400, wat de standaard baudrate van de Bluetooth-module is. In de loop-sectie met de functie Serial.available() zullen we controleren of er gegevens beschikbaar zijn in de seriële poort om uit te lezen. Dit betekent dat wanneer we gegevens naar de Bluetooth-module sturen, deze verklaring waar zal zijn, dus met behulp van de functie Serial.read() zullen we die gegevens lezen en in de "state" -variabele plaatsen. Dus als de Arduino het teken '0' ontvangt, schakelt hij de LED uit en gebruikt hij de functie Serial.println() om via de seriële poort de string "LED:OFF" terug te sturen naar de smartphone. Bovendien zullen we de variabele "state" opnieuw instellen op 0, zodat de twee bovenstaande regels slechts één keer worden uitgevoerd. Merk op dat de variabele "state" een geheel getal is, dus wanneer we het teken '0' ontvangen dat van de smartphone komt, is de werkelijke waarde van de variabele "state" 48, wat overeenkomt met teken '0', volgens de ASCII table.. Daarom vergelijken we in het “if” statement de “state” variabele met een karakter '0'. Aan de andere kant, als het ontvangen teken '1' is, gaat de LED branden en wordt de string "LED:ON" teruggestuurd.

Nu is de code klaar om te worden geüpload, maar om dat te doen, moeten we de TX- en RX-lijnen loskoppelen, omdat bij het uploaden de Arduino de seriële communicatie gebruikt, zodat de pinnen RX (digitale pin 0) en TX (digitale pin1) bezet zijn. We kunnen deze stap vermijden als we de andere TX- en RX-pinnen van het Arduino-bord gebruiken, maar in dat geval zullen we de SoftwareSerial.h-bibliotheek moeten gebruiken voor de seriële communicatie.

Gerelateerd:Twee HC-05 Bluetooth-modules configureren en koppelen als master en slave | AT-opdrachten

De smartphone verbinden met de HC-05 Bluetooth-module en de Arduino

Nu zijn we klaar om de smartphone te verbinden met de Bluetooth-module en de Arduino. Wat we hier moeten doen, is Bluetooth activeren en de smartphone zal de HC-05 Bluetooth-module vinden.

Vervolgens moeten we de apparaten koppelen en het standaardwachtwoord van de HC-05-module is 1234. Nadat we de apparaten hebben gekoppeld, hebben we een applicatie nodig om de Arduino te besturen. Er zijn voor dit doel veel applicaties in de Play Store die zullen werken met de Arduino-code die we hebben geschreven. Ik heb echter mijn eigen aangepaste applicatie voor deze tutorial gemaakt met behulp van de online applicatie MIT App Inventor. Dit is een geweldige en gemakkelijk te gebruiken applicatie voor het bouwen van een Android-applicatie en in mijn volgende tutorial kun je een gedetailleerde stapsgewijze handleiding vinden hoe je je eigen aangepaste Android-applicatie voor je Arduino-project kunt bouwen.

Je kunt de app die ik voor dit voorbeeld heb gemaakt hier downloaden:

Arduino Bluetooth-zelfstudievoorbeeld Android-app

1 bestand(en) 1,38 MB downloaden

Met de connect-knop verbinden we de smartphone met de Bluetooth-module en de statustekst onder de knop vertelt ons of we succesvol zijn verbonden. Met behulp van de knoppen "Turn ON" en "Turn OFF" kunnen we de LED in- en uitschakelen. De tekst boven de knoppen is degene die de Arduino terugstuurt naar de smartphone wanneer een bepaalde knop wordt ingedrukt.

Arduino besturen met een laptop of pc via Bluetooth-communicatie

Laten we eens kijken hoe we de Arduino via Bluetooth kunnen besturen met een laptop of een pc. Dus eerst moeten we onze laptop koppelen aan de HC-05 Bluetooth-module en dat kunnen we doen via de Bluetooth-instellingen van de laptop. De laptop zal de HC-05-module ontdekken en met het '1234'-wachtwoord zullen we de apparaten koppelen.

Zodra we de apparaten hebben gekoppeld in de Laptop Device Manager, onder Poorten (COM &LPT), verschijnen er twee nieuwe entiteiten met de naam "Standaard serieel via Bluetooth-link". Vanaf hier kunnen we het COM-poortnummer zien van de seriële poort waarmee de apparaten zullen communiceren.

We blijven bij hetzelfde voorbeeld als eerder, een LED in- en uitschakelen en een string terugsturen naar de laptop, dus we zullen dezelfde Arduino-code gebruiken als eerder beschreven.

IDE-broncode verwerken

Met behulp van de Processing IDE gaan we een programma maken voor het besturen van de Arduino. Hier is de broncode.

import processing.serial.*;
Serial myPort;
String ledStatus="LED: OFF";

void setup(){
  size(450, 500);
  myPort = new Serial(this, "COM5", 38400); // Starts the serial communication
  myPort.bufferUntil('\n'); // Defines up to which character the data from the serial port will be read. The character '\n' or 'New Line'
}
void serialEvent (Serial myPort){ // Checks for available data in the Serial Port
  ledStatus = myPort.readStringUntil('\n'); //Reads the data sent from the Arduino (the String "LED: OFF/ON) and it puts into the "ledStatus" variable
}

void draw(){
  background(237, 240, 241);
  fill(20, 160, 133); // Green Color
  stroke(33);
  strokeWeight(1);
  rect(50, 100, 150, 50, 10);  // Turn ON Button
  rect(250, 100, 150, 50, 10); // Turn OFF Button
  fill(255);
  
  textSize(32);
  text("Turn ON",60, 135);
  text("Turn OFF", 255, 135);
  textSize(24);
  fill(33);
  text("Status:", 180, 200);
  textSize(30);
  textSize(16);
  text("Program made by Dejan Nedelkovski,\n     www.HowToMechatronics.com", 80, 320);

  text(ledStatus, 155, 240); // Prints the string comming from the Arduino
  
  // If the button "Turn ON" is pressed
  if(mousePressed && mouseX>50 && mouseX<200 && mouseY>100 && mouseY<150){
    myPort.write('1'); // Sends the character '1' and that will turn on the LED
    // Highlighs the buttons in red color when pressed
    stroke(255,0,0);
    strokeWeight(2);
    noFill();
    rect(50, 100, 150, 50, 10);
  }
  // If the button "Turn OFF" is pressed
  if(mousePressed && mouseX>250 && mouseX<400 && mouseY>100 && mouseY<150){
    myPort.write('0'); // Sends the character '0' and that will turn on the LED
    stroke(255,0,0);
    strokeWeight(2);
    noFill();
    rect(250, 100, 150, 50, 10);
  }
}Code language: Arduino (arduino)

Beschrijving:  We moeten de seriële bibliotheek opnemen en een serieel object maken om de seriële communicatie mogelijk te maken, evenals een String-variabele voor de led-status definiëren. In de setup-sectie moeten we de venstergrootte van het programma instellen en de seriële communicatie starten. Wat betreft het COM-poortnummer hier moeten we een van de twee COM-poortnummers proberen die we eerder in Apparaatbeheer hebben opgemerkt. De volgende regel definieert de buffering van de seriële poort en in ons geval is dat totdat er een nieuwe regel is en eigenlijk is er een nieuwe regel elke keer dat de Arduino de String "LED:OFF" of "LED ON" verzendt vanwege de println( ) functie. Vervolgens controleren we met behulp van de functie serialEvent() of er gegevens beschikbaar zijn in de seriële poort om uit te lezen. Als dat zo is, zullen we met behulp van de readStringUntil()-functie die gegevens lezen van de seriële poort die door de Arduino is verzonden en in ons geval is dat de String "LED:OFF" of "LED:ON".

In de hoofdfunctie draw(), die constant wordt herhaald, maken we alle afbeeldingen en functies van het programma. Dus eerst moeten we de achtergrondkleur, de vulkleur, de lijngrootte en kleur instellen en met de functie rect() tekenen we de twee knoppen. Met behulp van de functie text() printen we alle tekst, inclusief de ledStatus-string die van de Arduino komt. Wat nu overblijft is om de knoppen functioneel te maken. Dus met behulp van de eerste "if" -instructie beperken we het gebied van de "Turn ON" -knop, dus wanneer de knop wordt ingedrukt, wordt het teken '1' over de seriële poort naar de Arduino gestuurd en dat zal de LED inschakelen. De volgende voor regels worden gebruikt om de knop te markeren wanneer deze wordt ingedrukt. Dezelfde procedure geldt voor de “Turn OFF”-knop.

Nu is het programma klaar, dus wanneer we op de run-knop klikken, activeert het programma automatisch de Bluetooth-communicatie tussen de laptop en de Arduino. De HC-05 Bluetooth-module begint elke twee seconden te knipperen, wat aangeeft dat de module is aangesloten en dat we de LED kunnen bedienen met onze laptop.

Dat is alles voor deze tutorial, maar vergeet niet om mijn volgende tutorial te bekijken, waar we zullen leren hoe we de HC-05 Bluetooth-module kunnen configureren en een Bluetooth-communicatie kunnen maken tussen twee afzonderlijke Arduino-boards als master- en slave-apparaten.

Stel ook gerust een vraag in de opmerkingen hieronder en vergeet niet mijn verzameling Arduino-projecten te bekijken.


Productieproces

  1. Arduino RFID Lock-zelfstudie
  2. JX Wave Generator
  3. u-blox LEA-6H 02 GPS-module met Arduino en Python
  4. Een valdetectiesysteem op basis van Arduino, Windows en Azure
  5. Autobesturing met Arduino Uno en Bluetooth
  6. Tutorial Arduino-vingerafdruksensor
  7. ArduRadio AlarmClock
  8. Smart Coffee Machine met Arduino en Bluetooth
  9. Raspberry Pi en Arduino-laptop
  10. rDUINOScope
  11. Slimme thermostaat, lucht- en verlichtingsregeling met Bluetooth