- Material som krävs
- Kretsschema
- Första konfigurationen av HC05-modulerna
- Arduino till Arduino Bluetooth-kommunikationstest
HC-05 Bluetooth-moduler är Bluetooth-modulerna för alla Arduino-projekt! Det är lätt att ansluta och koda i Arduino IDE. I de flesta projekt ansluter vi vanligtvis till HC05 till en Arduino och använder den för att trådlöst kommunicera med en annan smart enhet som en mobiltelefon. Detta är ganska enkelt och vi har byggt många intressanta projekt med det som Bluetooth-kontrollerad robot, Bluetooth Voice Control, Bluetooth Home Automation, etc. Har du dock någonsin behövt ansluta två HC-05 tillsammans? Det är inte lika enkelt att ansluta en HC05 till en smartphone, det finns några ytterligare steg inblandade. Denna handledning guidar dig genom denna process. Låt oss hoppa direkt in!
Material som krävs
- 2x Arduino (vilken modell som helst, jag använder en Arduino Uno R3 och en Arduino Nano)
- 2x HC05 Bluetooth-moduler
- Bakbord
- Bygeltrådar
- 2x 1kΩ motstånd
- 2x 2,2 kΩ motstånd
Kretsschema
Detta är det grundläggande kretsschemat. Anslut två av dessa kretsar, en för mästare och en för slaven. För anslutningarna är allt vi gör här att ansluta HC05 till Arduino. Mottagarens (Rx) stift på HC05 arbetar i intervallet 0V till 3,3V och Arduino arbetar i intervallet 0V till 5V. Så vi kommer att använda motstånd (R1 och R2) för att skapa en spänningsdelare för att minska 5V-utgången från Arduino till 3,3V, för att inte skada HC05-modulen.
Jag använder 1kΩ för R1 och 2.2KΩ för R2 men du kan använda vilket motståndsvärde som helst så länge R2 är ungefär dubbelt så stort som R1 (R2 ≈ 2R1). På samma sätt upprepar du kretsen för både master och slave, Arduino Master Bluetooth Circuit och Arduino Slave Bluetooth Circuit visas nedan.
Första konfigurationen av HC05-modulerna
Detta är det ytterligare steg som krävs för att ansluta två HC05-moduler tillsammans. Vi måste ändra några inställningar inuti HC05 Bluetooth-modulen, för att göra detta måste vi gå in i HC05-modulens AT-kommandoläge och skicka kommandon till den via Arduino IDEs seriella bildskärm. För att göra detta måste vi skriva en Arduino-kod för att skicka kommandon genom den seriella bildskärmen till HC05.
Den kod för att konfigurera HC05 modulen finns längst ner på denna sida, är förklaringen till koden enligt följande
Lägg till SoftwareSerial-biblioteket i den här koden.
#include < SoftwareSerial.h>
Definiera sändningsnummer (Tx) och Mottagning (Rx). Jag använder stift 2 för Tx och stift 3 för Rx.
#define tx 2 #define rx 3
Ge Bluetooth-anslutningen ett namn (här använder jag configBt) och berätta sedan för SoftwareSerial-biblioteket vilken stift som är Tx och vilken stift som är Rx. Syntaxen är bluetoothName (Rx, Tx);
SoftwareSerial configBt (rx, tx); // RX, TX
För att konfigurera Bluetooth-modulen måste Arduino skicka kommandon till den med en baudhastighet på 38400 baud. På samma sätt ställer vi överföringshastigheten för Bluetooth-anslutningen till 38400 baud. Ställ in sändningen (Tx) på utgångsstiftet och mottagning (Rx) på ingångsstiftet
ogiltig installation () { Seriell.begin (38400); configBt.begin (38400); pinMode (tx, OUTPUT); pinMode (rx, INPUT); }
Inuti den eviga slingan har vi kodens huvuddel. Tanken här är att skicka vad som helst som skrivs i textrutan i den seriella bildskärmen till HC05 genom Arduinos Tx-stift. Visa sedan vad som matas ut av HC05 i den seriella skärmen.
void loop () {if (configBt.available ()) // om HC05 skickar något… { Serial.print (configBt.readString ()); // skriv ut i seriell bildskärm} om (Serial.available ()) // om seriell bildskärm matar ut något… {configBt.write (Serial.read ()); // skriv till Arduinos Tx-stift}}
Ladda upp den här koden till Arduino som är ansluten till master HC05-modulen först. När du har laddat upp koden, koppla ur Arduino-strömkabeln. Tryck och håll knappen på HC05. Anslut nu Arduino-strömkabeln medan du fortfarande håller ned knappen på HC05. Okej, nu kan du släppa knappen på HC05. Så här går du in i AT-läget för HC05. För att kontrollera om du har gjort detta rätt, se till att den röda lampan på HC05 blinkar ungefär var sekund (långsamt blinkande!). Normalt innan HC05 ansluts till någon Bluetooth-enhet blinkar det röda ljuset mycket snabbt (snabbt blinkande!).
Öppna sedan den seriella bildskärmen (den seriella bildskärmsknappen finns längst upp till höger på Arduino IDE). Om du inte redan har gjort det i det nedre högra hörnet av Serial monitor-fönstret, se till att du ställer in linjens slutinställning till “Både NL och CL” och baudhastighet till 38400. Skriv nu AT i den seriella bildskärmen, om allt går bra får du ett “OK” från HC05 som visas i det seriella bildskärmsfönstret. Grattis! Du har framgångsrikt loggat in på HC05-modulens AT-kommandoläge.
Ange nu följande kommandon i tabellen nedan för att konfigurera master HC05-modulen:
COMMAND (skriv in detta i den seriella bildskärmen och tryck på enter) |
SVAR (svar från HC05, visas i seriell bildskärm) |
Funktion (Vad gör detta kommando?) |
PÅ |
OK |
Testa |
AT + CMODE? |
OK |
Kontrollera CMODE eller anslutningsläge ----------------------------- CMOD: 0 är slaven 1 är mästare |
AT + CMODE = 1 |
OK |
Ställ in CMODE till 1 när vi konfigurerar master HC05 |
AT + ADDR? |
+ ADDR: FCA8: 9A: 58D5 OK * Det här är adressen till min master HC05. Din adress kommer att vara annorlunda! |
Returnerar adressen till HC05, notera detta eftersom vi kommer att behöva det senare! |
Anslut sedan din dator till din andra HC05, slaven:
COMMAND (skriv in detta i den seriella bildskärmen och tryck på enter) |
SVAR (svar från HC05, visas i seriell bildskärm) |
Funktion (Vad gör detta kommando?) |
PÅ |
OK |
Testa |
AT + CMODE? |
OK |
Kontrollera CMODE eller anslutningsläge ----------------------------- CMOD: 0 är en slav 1 är mästare |
AT + CMODE = 0 |
OK |
Ställ in CMODE på 0 när vi konfigurerar slaven HC05 |
AT + BIND = FCA8,9A, 58D5 * Byt ut “:” i master HC05-adressen med “,” * Här använder jag adressen till master HC05 som jag noterade från föregående tabell. Du bör använda adressen till din master HC05! |
OK |
Ställer in adressen till master HC05 som denna slav HC05 automatiskt kommer att ansluta till vid uppstart |
PÅ + BIND? |
+ BIND: FCA8: 9A: 58D5 OK * Det här är adressen till min master HC05. Din adress kommer att vara annorlunda! |
Kontrollera din slavs bindningsadress. Om det matchar adressen till din master HC05 är du redo att gå! |
Arduino till Arduino Bluetooth-kommunikationstest
Först och främst driver både master- och slav-HC05-modulerna. När strömmen är på och några sekunder har gått, titta på det röda ljuset på HC05-modulerna.
Blinkande hastighet för det röda ljuset |
Vad det betyder |
Blinkar med mycket hög frekvens (snabbt blinkande!) |
Inte bra! Det betyder att dina HC05-moduler inte ansluter till varandra! Dags att felsöka! |
Blinkar med låg frekvens (blinkar långsamt!) |
Trevlig! Du har gjort det! Men vi måste ändå göra en kontroll till för att vara helt säkra på att den här installationen fungerar! Gå vidare! |
När dina röda lampor blinkar med låg frekvens (långsamt blinkande!) Kan du vara säker på att båda dina HC05-enheter är anslutna till varandra, men vi har inte testat om data kan skickas fram och tillbaka mellan master och slav. Det är trots allt huvudsyftet här.
Ladda upp koden nedan till en av Arduinos, detta är koden för att testa sändaren (Tx), återigen kan hela koden för både sändare och mottagare hittas längst ner på denna sida.
Efter den föregående koden lägger vi till SoftwareSerial-biblioteket i den här koden och definierar sändningsnummer (Tx) och Mottagning (Rx). Sedan heter vi Bluetooth-anslutningen och skickar Tx- och Rx-stiftnumren till biblioteket.
#include < SoftwareSerial.h> #define tx 2 #define rx 3 SoftwareSerial bt (rx, tx); // RX, TX
I installationsfunktionen ställer vi in baudhastigheten för Arduino seriell bildskärm och Bluetooth igen. Ser du skillnaden här jämfört med föregående kod? Vi använder en baudhastighet på 9600 baud. Detta är standard förinställd kommunikations baudhastigheten för HC05 Bluetooth-modul vid kommunikation med andra Bluetooth-enheter. Så notera att 38400 baud är för att konfigurera HC05 med AT-kommandon och 9600 baud är standard baudhastighet för HC05-modulen. Slutligen, precis som tidigare konfigurerar vi Tx-stiftet som utgång och Rx-stiftet som ingång.
ogiltig installation () { Seriell.begin (9600); bt.begin (9600); pinMode (tx, OUTPUT); pinMode (rx, INPUT); }
Inuti den eviga slingan är allt vi gör att överföra ett slumpmässigt värde på "123" genom HC05.
ogiltig slinga () {bt.write (123); }
Ladda upp den här koden till den andra Arduino, detta är koden för att testa mottagning (Rx):
Exakt samma som tidigare koder, vi konfigurerar SoftwareSerial-biblioteket.
#include < SoftwareSerial.h> #define tx 2 #define rx 3 SoftwareSerial bt (rx, tx); // RX, TX
Koden i installationsfunktionen är exakt densamma som koden som ska testas sända (Tx).
ogiltig installation () { Seriell.begin (9600); bt.begin (9600); pinMode (tx, OUTPUT); pinMode (rx, INPUT); }
I den eviga slingan behöver vi bara ta emot det vi skickar från den sändande Arduino. Om mottagningsbufferten har fått data från HC05, visa vad som tas emot i den seriella bildskärmen.
void loop () {if (bt.available ()> 0) { Serial.println (bt.read ()); }}
När du har laddat upp respektive koder till varje Arduino öppnar du den seriella bildskärmen för den mottagande Arduino. Se till att du väljer överföringshastighet till 9600 och linjen som slutar som Newline i den seriella bildskärmen. Om allt fungerar bra bör du se 123.
Obs: Om du har anslutit både sändande och mottagande Arduinos till samma bärbara dator, se till att du väljer rätt COM-port under VERKTYG> PORT. Du bör vara ansluten till den mottagande Arduinos COM-porten.
Om allt går bra byter du HC05-modulerna så att kommunikationen kan ske i båda riktningar och vi är klara!