- Nødvendig materiale
- Kretsdiagram
- Innledende konfigurasjon av HC05-modulene
- Arduino til Arduino Bluetooth-kommunikasjonstesting
HC-05 Bluetooth-moduler er Go-to Bluetooth-modulene for ethvert Arduino-prosjekt! Det er enkelt å koble til og kode i Arduino IDE. I de fleste prosjekter kobler vi vanligvis til HC05 til en Arduino og bruker den til å kommunisere trådløst med en annen smartenhet som en mobiltelefon. Dette er ganske enkelt, og vi har bygget mange interessante prosjekter med det som Bluetooth-kontrollert robot, Bluetooth stemmekontroll, Bluetooth hjemmeautomatisering, etc. Har du noen gang trengt å koble to HC-05 sammen? Det er ikke så enkelt å koble en HC05 til en smarttelefon, det er noen ekstra trinn involvert. Denne opplæringen vil guide deg gjennom denne prosessen. La oss hoppe rett inn!
Nødvendig materiale
- 2x Arduino (En hvilken som helst modell vil gjøre; jeg bruker en Arduino Uno R3 og en Arduino Nano)
- 2x HC05 Bluetooth-moduler
- Brettbrett
- Jumper Wires
- 2x 1kΩ motstand
- 2x 2,2 kΩ motstand
Kretsdiagram
Dette er det grunnleggende kretsskjemaet. Koble til to av disse kretsene, en for mester og en for slaven. For tilkoblingene er alt vi gjør her å koble HC05 til Arduino. Mottaker (Rx) -pinnen på HC05 fungerer i området 0V til 3,3V, og Arduino opererer i området 0V til 5V. Så vi vil bruke motstander (R1 og R2) for å lage en spenningsdeler for å redusere 5V-utgangen fra Arduino til 3.3V, for ikke å skade HC05-modulen.
Jeg bruker 1kΩ for R1 og 2.2KΩ for R2, men du kan bruke hvilken som helst motstandsverdi så lenge R2 er omtrent det dobbelte av verdien til R1 (R2 ≈ 2R1). Tilsvarende gjentar du kretsen for både master og slave, Arduino Master Bluetooth Circuit og Arduino Slave Bluetooth Circuit er vist nedenfor.
Innledende konfigurasjon av HC05-modulene
Dette er det ekstra trinnet som kreves for å koble to HC05-moduler sammen. Vi må endre noen innstillinger inne i HC05 Bluetooth-modulen, for å gjøre dette må vi gå inn i HC05-modulens AT Command Mode og sende kommandoer til den gjennom Arduino IDEs serielle skjerm. For å gjøre dette må vi skrive en Arduino-kode for å sende kommandoer gjennom den serielle skjermen til HC05.
Den koden for å konfigurere HC05 modulen kan bli funnet på bunnen av denne siden, er forklaringen på koden som følger
Legg til SoftwareSerial-biblioteket i denne koden.
#include < SoftwareSerial.h>
Definer sending (Tx) og Motta (Rx) pin nummer. Jeg bruker pin 2 for Tx og pin 3 for Rx.
#define tx 2 #define rx 3
Gi Bluetooth-tilkoblingen noe navn (her bruker jeg configBt), og fortell deretter SoftwareSerial-biblioteket hvilken pin som er Tx og hvilken pin som er Rx. Syntaksen er bluetoothName (Rx, Tx);
SoftwareSerial configBt (rx, tx); // RX, TX
For å konfigurere Bluetooth-modulen, må Arduino sende kommandoer til den med en overføringshastighet på 38400 baud. På samme måte setter vi også overføringshastigheten til Bluetooth-tilkoblingen til 38400 baud. Sett Send (Tx) til utgangsstiften og Mottak (Rx) til inngangsstiften
ugyldig oppsett () { Seriell.begin (38400); configBt.begin (38400); pinMode (tx, OUTPUT); pinMode (rx, INPUT); }
Inne i den evige sløyfen har vi hoveddelen av koden. Tanken her er å sende det som er skrevet i tekstboksen i seriell skjerm til HC05 gjennom Arduinos Tx-pin. Vis deretter hva som kommer ut av HC05 i den serielle skjermen.
ugyldig loop () {if (configBt.available ()) // hvis HC05 sender noe… { Serial.print (configBt.readString ()); // skriv ut i seriell skjerm} hvis (Serial.available ()) // hvis seriell skjerm gir ut noe… {configBt.write (Serial.read ()); // skriv til Arduinos Tx-pin}}
Last opp denne koden i Arduino som er koblet til master HC05-modulen først. Etter at du har lastet opp koden, kobler du til Arduino-strømkabelen. Trykk og hold inne knappen på HC05. Koble nå til Arduino-strømkabelen mens du fortsatt holder inne knappen på HC05. OK, nå kan du slippe knappen på HC05. Slik går du inn i AT-modus på HC05. For å kontrollere om du har gjort dette riktig, må du sørge for at det røde lyset på HC05 blinker omtrent hvert sekund (sakte blinking!). Normalt før HC05 er koblet til en hvilken som helst Bluetooth-enhet, blinker det røde lyset veldig høyt (blinker raskt!).
Deretter åpner du den serielle skjermen (den serielle skjermknappen er øverst til høyre på Arduino IDE). Hvis du ikke allerede har gjort det nederst til høyre i Serial monitor-vinduet, må du sørge for at du stiller innstillingen for linjeavslutning til “Både NL og CL” og overføringshastighet til 38400. Nå skriver du inn AT i den serielle skjermen. Hvis alt går bra, får du et “OK” fra HC05 som vises i det serielle skjermvinduet. Gratulerer! Du er logget inn på HC05-modulens AT-kommandomodus.
Skriv inn følgende kommandoer i tabellen nedenfor for å konfigurere master HC05-modulen:
KOMMANDO (skriv dette inn i den serielle skjermen og trykk enter) |
SVAR (svar fra HC05, vises i seriell skjerm) |
Funksjon (Hva gjør denne kommandoen?) |
PÅ |
OK |
Test |
PÅ + CMODE? |
OK |
Kontroller CMODE eller tilkoblingsmodus ----------------------------- CMODE: 0 er slaven 1 er mester |
AT + CMODE = 1 |
OK |
Sett CMODE til 1 når vi konfigurerer master HC05 |
AT + ADDR? |
+ ADDR: FCA8: 9A: 58D5 OK * Dette er adressen til mesteren min HC05. Adressen din vil være annerledes! |
Returnerer adressen til HC05, noter dette da vi trenger det senere! |
Koble deretter datamaskinen til den andre HC05, slaven:
KOMMANDO (skriv dette inn i den serielle skjermen og trykk enter) |
SVAR (svar fra HC05, vises i seriell skjerm) |
Funksjon (Hva gjør denne kommandoen?) |
PÅ |
OK |
Test |
PÅ + CMODE? |
OK |
Kontroller CMODE eller tilkoblingsmodus ----------------------------- CMODE: 0 er en slave 1 er mester |
AT + CMODE = 0 |
OK |
Sett CMODE til 0 når vi konfigurerer slaven HC05 |
AT + BIND = FCA8,9A, 58D5 * Erstatt “:” i master HC05-adressen med “,” * Her bruker jeg adressen til master HC05 jeg noterte fra forrige tabell. Du bør bruke adressen til master HC05! |
OK |
Angi adressen til master HC05 som denne slaven HC05 automatisk kobles til ved oppstart |
PÅ + BIND? |
+ BIND: FCA8: 9A: 58D5 OK * Dette er adressen til mesteren min HC05. Adressen din vil være annerledes! |
Sjekk bindingsadressen til din slave. Hvis den samsvarer med adressen til master HC05, er du god å gå! |
Arduino til Arduino Bluetooth-kommunikasjonstesting
Først og fremst både master- og slave-HC05-modulene. Etter at strømmen er på og noen sekunder har gått, se på det røde lyset på HC05-modulene.
Blinkende hastighet på det røde lyset |
Hva det betyr |
Blinker veldig høyt (blinker raskt!) |
Ikke bra! Det betyr at HC05-modulene ikke kobles til hverandre! På tide å feilsøke! |
Blinker lavt (blinker sakte!) |
Hyggelig! Du har gjort det! Men vi må fortsatt gjøre en sjekk til for å være veldig sikre på at dette oppsettet fungerer! Gå videre! |
Når de røde lampene dine blinker med lav frekvens (sakte blinking!), Kan du være sikker på at begge HC05-ene dine er koblet til hverandre, men vi har ikke testet om data kan sendes frem og tilbake mellom master og slave. Det er tross alt hovedformålet her.
Last opp koden nedenfor til en av Arduinos, dette er koden for å teste sender (Tx), igjen kan den komplette koden for både sender og mottaker finnes nederst på denne siden.
Etter den forrige koden, legger vi til SoftwareSerial-biblioteket i denne koden og definerer overføringsnummer (Tx) og Mottak (Rx). Deretter navngir vi Bluetooth-tilkoblingen og sender Tx- og Rx-pin-numrene til biblioteket.
# inkluderer < SoftwareSerial.h> #define tx 2 #define rx 3 SoftwareSerial bt (rx, tx); // RX, TX
I oppsettfunksjonen setter vi overføringshastigheten for Arduino seriell skjerm og Bluetooth igjen. Ser du forskjellen her sammenlignet med forrige kode? Vi bruker en baudrate på 9600 baud. Dette er den standard forhåndsinnstilte kommunikasjonsoverføringshastigheten til HC05 Bluetooth-modulen når du kommuniserer med andre Bluetooth-enheter. Så vær oppmerksom på at 38400 baud er for å konfigurere HC05 med AT-kommandoer, og 9600 baud er standard baudrate for HC05-modulen. Til slutt, akkurat som før vi konfigurerer Tx-pinnen som utgang og Rx-pinnen som en inngang.
ugyldig oppsett () { Seriell.begin (9600); bt.begin (9600); pinMode (tx, OUTPUT); pinMode (rx, INPUT); }
Inne i den evige sløyfen er alt vi gjør å overføre en tilfeldig verdi på “123” gjennom HC05.
ugyldig sløyfe () {bt.write (123); }
Last opp denne koden til den andre Arduino, dette er koden for å teste mottak (Rx):
Nøyaktig det samme som de forrige kodene, konfigurerer vi SoftwareSerial-biblioteket.
# inkluderer < SoftwareSerial.h> #define tx 2 #define rx 3 SoftwareSerial bt (rx, tx); // RX, TX
Koden i oppsettfunksjonen er nøyaktig den samme som koden som skal sendes (Tx).
ugyldig oppsett () { Seriell.begin (9600); bt.begin (9600); pinMode (tx, OUTPUT); pinMode (rx, INPUT); }
I evig sløyfe trenger vi bare å motta det vi sender fra den sendende Arduino. Hvis mottaksbufferen har mottatt noen data fra HC05, så vis hva som er mottatt i den serielle skjermen.
ugyldig sløyfe () {if (bt.available ()> 0) { Serial.println (bt.read ()); }}
Etter at du har lastet opp de respektive kodene til hver Arduino, åpner du seriell skjerm til den mottakende Arduino. Forsikre deg om at du velger overføringshastighet som 9600 og linjen som slutter som Newline i den serielle skjermen. Hvis alt fungerer bra, bør du se 123.
Merk: Hvis du har koblet både den sendende og mottakende Arduinos til den samme bærbare datamaskinen, må du velge riktig COM-port under VERKTØY> PORT. Du bør være koblet til den mottakende Arduinos COM-porten.
Hvis alt går bra, bytter du HC05-modulene for å sikre at kommunikasjon kan skje i begge retninger, og VI ER FERDIG!