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

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

In deze Arduino-tutorial leren we hoe u twee HC-05 Bluetooth-modules configureert en koppelt als master- en slave-apparaten. U kunt de volgende video bekijken of de schriftelijke tutorial hieronder lezen.

Overzicht

In mijn vorige twee tutorials hebben we al geleerd hoe je de HC-05 Bluetooth-module op de Arduino kunt aansluiten en een communicatie kunt maken tussen een Android-smartphone en de Arduino. In die tutorials gebruikten we de HC-05 Bluetooth-module met zijn standaardconfiguratie, als een slave-apparaat.

De HC-05 Bluetooth-module configureren - AT-opdrachten

Voor deze tutorial moeten we beide modules configureren. Om dat te doen, moeten we overschakelen naar de AT-opdrachtmodus en hier is hoe we dat zullen doen. Eerst moeten we de Bluetooth-module op de Arduino aansluiten zoals de circuitschema's uitgelegd in de vorige tutorials. Wat we bovendien moeten doen, is de "EN"-pin van de Bluetooth-module verbinden met 5 volt en ook de TX- en RX-pinnen op het Arduino-bord schakelen.

Dus de RX-pin van de Arduino moet worden aangesloten op de RX-pin van de Bluetooth-module, via de spanningsdeler, en de TX-pin van de Arduino op de TX-pin van de Bluetooth-module. Terwijl we de kleine knop boven de "EN" -pin houden, moeten we de module van stroom voorzien en zo gaan we naar de opdrachtmodus. Als de led van de Bluetooth-module elke 2 seconden knippert, betekent dit dat we met succes de AT-opdrachtmodus hebben ingevoerd.

Hierna moeten we een lege schets uploaden naar de Arduino, maar vergeet niet om de RX- en TX-lijnen los te koppelen tijdens het uploaden. Vervolgens moeten we de seriële monitor uitvoeren en daar "Zowel NL als CR" selecteren, evenals de "38400 baud" -snelheid, de standaard baudsnelheid van de Bluetooth-module. Nu zijn we klaar om commando's te verzenden en hun formaat is als volgt.

Alle opdrachten beginnen met "AT", gevolgd door het "+"-teken, dan een en ze eindigen ofwel met de "?" teken dat de huidige waarde van de parameter retourneert of het teken "=" wanneer we een nieuwe waarde voor die parameter willen invoeren.

Slaveconfiguratie

Dus als we bijvoorbeeld gewoon "AT" typen, wat een testopdracht is, zouden we het bericht "OK" moeten terugkrijgen. Als we dan "AT+UART?" we zouden de massage terug moeten krijgen met de standaard baudrate die 38400 is. Als we dan "AT+ROLE?" we krijgen een massage "+ROLE=0" terug, wat betekent dat het Bluetooth-apparaat in de slave-modus staat. Als we "AT+ADDR?" we zullen het adres van de Bluetooth-module terugkrijgen en het zou er ongeveer zo uit moeten zien:98d3:34:905d3f.

Nu moeten we dit adres opschrijven omdat we het nodig hebben bij het configureren van het masterapparaat. Eigenlijk is dat alles wat we nodig hebben bij het configureren van het slave-apparaat, om het adres te krijgen, hoewel we veel verschillende parameters kunnen wijzigen, zoals de naam, baudrate, het koppelingswachtwoord enzovoort, maar dat zullen we niet doen voor dit voorbeeld.

Hoofdconfiguratie

Oké, laten we nu verder gaan en de andere Bluetooth-module configureren als een masterapparaat. Eerst zullen we de baudrate controleren om er zeker van te zijn dat deze dezelfde 38400 is als het slave-apparaat. Door vervolgens "AT+ROLE=1" te typen, stellen we de Bluetooth-module in als een masterapparaat. Hierna zullen we met behulp van de "AT+CMODE=0" de verbindingsmodus instellen op "vast adres" en met behulp van de "AT+BIND="-opdracht zullen we het adres van het slave-apparaat instellen dat we eerder hebben opgeschreven.

Merk hier op dat we bij het schrijven van het adres komma's moeten gebruiken in plaats van dubbele punten. Merk ook op dat we de vorige stap hadden kunnen overslaan als we "1" hadden ingevoerd in plaats van "0" bij de opdracht "AT+CMODE", waardoor de master verbinding kan maken met elk apparaat in zijn transmissiebereik, maar dat is een minder veilige configuratie. Hier vindt u een volledige lijst met opdrachten en parameters:HC-05 AT-opdrachtenlijst

Desalniettemin is dat alles wat we nodig hebben om een ​​basisconfiguratie van de Bluetooth-modules te laten werken als master- en slave-apparaten en als we ze nu opnieuw verbinden in de normale datamodus en de modules opnieuw van stroom voorzien, zal de master binnen enkele seconden verbinding maken naar de slaaf. Beide modules beginnen elke 2 seconden te knipperen om aan te geven dat er een succesvolle verbinding is gemaakt.

Communicatie tussen twee HC-05 Bluetooth-modules Voorbeeld

Oké, nu zijn we klaar om het praktische voorbeeld voor deze tutorial te maken. Hier zijn de circuitschema's. We zullen een potentiometer gebruiken, bij de master, om een ​​servomotor bij de slave aan te sturen. En omgekeerd gebruiken we een drukknop, bij de slave, om een ​​LED aan te sturen bij de master.

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

  • HC-05 Bluetooth-module …………….
  • Arduino-bord …………………………
  • Servomotor………………………….….
  • Potentiometer…………..…………..…….
  • 3x 220 Ohm weerstanden………………
  • Broodplank en springdraden ……….

Arduino-broncodes

Beschrijving: Dus eerst moeten we de pinnen en enkele variabelen definiëren die nodig zijn voor het programma. In de setup-sectie, bij de master, stellen we de LED-pin in als uitgang en zetten deze meteen laag, en starten we de seriële communicatie op 38400 baudrate. Op dezelfde manier stellen we bij de slave de knoppin in als invoer, definiëren we de servo waarop de pin is aangesloten en starten we de seriële communicatie met dezelfde baudrate.

In de lussectie, in beide code, zullen we met de functie Serial.available() controleren of er gegevens beschikbaar zijn in de seriële poort om te worden gelezen en met de functie Serial.read() zullen we de gegevens lezen en opslaan in de variabele "staat". Dus als de master het teken '1' ontvangt dat door de slave wordt verzonden wanneer de knopstatus hoog is, of als de knop wordt ingedrukt, gaat de LED branden. Anders is de LED uit als het teken '0' is.

Wat betreft de servomotorbesturing, eerst bij de master, lezen we de waarde van de potentiometer en brengen deze in een geschikt bereik voor de servo van 0 tot 255. Deze waarde wordt verzonden naar de slave die deze gebruikt om de servomotor dienovereenkomstig te roteren. Dat is alles wat we nodig hebben en hier is de demonstratie van het voorbeeld.

Hoofdcode:

/*
 * How to configure and pair two HC-05 Bluetooth Modules
 * by Dejan Nedelkovski, www.HowToMechatronics.com
 * 
 *                 == MASTER CODE ==
 */

#define ledPin 9

int state = 0;
int potValue = 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
 }
 // Controlling the LED
 if (state == '1') {
  digitalWrite(ledPin, HIGH); // LED ON
  state = 0;
 }
 else if (state == '0') {
  digitalWrite(ledPin, LOW); // LED ON
  state = 0;
 }
 // Reading the potentiometer
 potValue = analogRead(A0);
 int potValueMapped = map(potValue, 0, 1023, 0, 255);
 Serial.write(potValueMapped); // Sends potValue to servo motor
 delay(10);
}Code language: Arduino (arduino)

Slaafcode:

/*
 * How to configure and pair two HC-05 Bluetooth Modules
 * by Dejan Nedelkovski, www.HowToMechatronics.com
 * 
 *                 == SLAVE CODE ==
 */
 
#include <Servo.h>
#define button 8

Servo myServo;
int state = 20;
int buttonState = 0;

void setup() {
  pinMode(button, INPUT);
  myServo.attach(9);
  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
 }
 // Controlling the servo motor
 myServo.write(state);
 delay(10);
 
 // Reading the button
 buttonState = digitalRead(button);
 if (buttonState == HIGH) {
   Serial.write('1'); // Sends '1' to the master to turn on LED
 }
 else {
   Serial.write('0');
 }  
}Code language: Arduino (arduino)

Dat is alles en als je problemen hebt, kun je om hulp vragen in de opmerkingen hieronder.


Productieproces

  1. Recap:hoe Bluetooth LE en XLE de toekomst zijn van het volgen en monitoren van bedrijfsmiddelen
  2. Hoe Bluetooth + Ultrasound =Betere RTLS-nauwkeurigheid en lagere kosten
  3. Een vochtigheidssensor controleren en kalibreren
  4. Hoe maak je een Arduino Bluetooth-gestuurde auto
  5. Smart Coffee Machine met Arduino en Bluetooth
  6. Bluetooth-gestuurde pick-and-place-robot
  7. NeoPixels configureren met Vixen Lights en Arduino
  8. Oriëntatie volgen met Arduino en ADXL345 Accelerometer
  9. Arduino Robot Car Wireless Control met behulp van HC-05 Bluetooth, NRF24L01 en HC-12 Transceiver Modules
  10. Gereedschapsstaal begrijpen en hoe het wordt gemaakt
  11. Hoe onderscheid te maken tussen lintzaag en cirkelzaag?