Kobler bluetooth hc 05 til arduino. Arduino-leksjoner: kontrollere enheter fra en smarttelefon for dummies. Koble til fra en smarttelefon med Bluetooth-terminal

Bluetooth-fløyte for datamaskin: http://ali.pub/2jfj3y

Først, la oss finne ut hva bluetooth er.

blåtann(fra de engelske ordene blue - blue og tooth - tooth; uttales /bluːtuːθ/), blåtann- Spesifikasjoner for produksjon av trådløst personlig områdenettverk ( Trådløst personlig nettverk, WPAN). Bluetooth muliggjør utveksling av informasjon mellom enheter som f.eks personlige datamaskiner(skrivebord, lomme, bærbare datamaskiner), Mobil, skrivere, digitale kameraer, mus, tastaturer, styrespaker, hodetelefoner, hodesett på en pålitelig, gratis, universelt tilgjengelig radiofrekvens for kommunikasjon over kort avstand. Bluetooth gjør at disse enhetene kan kommunisere når de er innenfor en radius på opptil 10 m fra hverandre (rekkevidden varierer mye avhengig av hindringer og forstyrrelser), selv i forskjellige rom.

Når vi nå vet at bluetooth brukes til å bygge nettverk og utveksle data mellom enheter, vil vi bruke den til å koble til en CNC (CNC) maskin og en datamaskin eller en telefon eller et nettbrett og en bærbar datamaskin.

Siden jeg bruker grbl-firmwaren på arduino-plattformen for å styre CNC, vil vi koble en bluetooth-modul som passer for arduino til maskinen, nemlig HC-06 bluetooth-modulen.

Før du kobler Bluetooth-modulen til Arduino, må du sørge for at Bluetooth-modulen og Arduino fungerer med samme hastighet som COM-porten.

Hvis du bruker grbl 0.8 firmware, trenger du ikke å endre noe, men hvis grbl 0.9 og høyere, vil hastigheten på Arduino COM-porten bli 115200, og standardhastigheten på modulen er 9600.

Så vi må endre porthastigheten på selve Bluetooth-modulen.

For å konfigurere Bluetooth-moduler, er det spesielle AT-kommandoer, som vi kan sette de nødvendige modulparametrene med.

Ved å bruke AT-kommandoer kan vi endre hastigheten på COM-porten eller endre navnet Bluetooth-enheter eller finn ut eller endre PIN-koden for sammenkobling.

For å koble Bluetooth-modulen til datamaskinen for å legge inn AT-kommandoer, trenger vi en FTDI-programmerer (lenke til den i begynnelsen av artikkelen). Jeg synes koblingsskjemaet er unødvendig her. Du må koble gnd til gnd, 5v til 5v, rx til tx og tx til rx.

Etter tilkobling trenger vi HMComAssistant-programmet for å legge inn AT-kommandoer og programmere modulen vår. Last ned: https://yadi.sk/d/eVzPmnh63Wab5R

Vel, her vil jeg gi noen AT-kommandoer for å endre innstillingene til Bluetooth-modulen:

AT kommando Modulrespons En kommentar
OK Brukes til å teste kommunikasjon, som regel, før du utfører noen operasjoner, denne kommandoen brukes først til å teste kommunikasjon.
AT+BAUD1 OK eller OK1200 Setter dataoverføringshastigheten til 1200 baud
AT+BAUD2 OK eller OK2400 Setter baudhastigheten til 2400 baud
AT+BAUD3 OK eller OK4800 Setter baudhastigheten til 4800 baud
AT+BAUD4 OK eller OK9600 Setter baudhastigheten til 9600 baud
AT+BAUD5 OK eller OK19200 Setter baudhastigheten til 19200 baud
AT+BAUD6 OK eller OK38400 Setter baudhastigheten til 38400 baud
AT+BAUD7 OK eller OK57600 Setter baudhastigheten til 57600 baud
AT+BAUD8 OK eller OK115200 Setter baudhastigheten til 115200 baud
AT+BAUD9 OK eller OK230400 Setter baudhastigheten til 230400 baud
AT+BAUDA OK eller OK460800 Setter baudhastigheten til 460800 baud
AT+BAUDB OK eller OK921600 Setter baudhastigheten til 921600 baud
AT+BAUDC OK eller OK1382400 Setter baudhastigheten til 1382400 baud
AT+NAME +NAVN=test Returnerer gjeldende modulnavn
AT+NAMEiarduino_BLU +NAVN=test OK Setter et nytt modulnavn "test"
AT+PIN +PIN=000000 Returnerer gjeldende passord, i dette tilfellet er passordet "000000"
AT+PIN123456 +PIN=123456 OK Angi et nytt passord, i dette tilfellet er passordet "123456"
AT+VERSJON +VERSJON=Firmware V3.0.6,Bluetooth V4.0 LE Returnerer fastvareversjonen, i dette tilfellet er passordet "Firmware V3.0.6,Bluetooth V4.0 LE"
AT+RESET +RESET OK
PÅ+HJELP ——– Returnerer en liste over alle tilgjengelige AT-kommandoer

Etter å ha endret hastigheten på com-porten og angitt PIN-koden for sammenkobling. (standard pin-kode for sammenkobling er "1234", la oss koble modulen til Arduino.

Og siden jeg bruker CNC shield v 3.0. Jeg vil også gi et koblingsskjema for det.

Jeg vil ikke lage mitt eget diagram, men vil ta det fra en artikkel. Måtte skaperen tilgi meg.

Diagrammet er absolutt ikke veldig jevnt, men etter min mening er det ganske forståelig.

Så hvorfor brukes motstander i en krets? Arduino har 5-volts logikk, som betyr at Arduino sender en spenning på 5V til alle utgangene. Men modulen sier LEVEL 3.3v, som betyr at Bluetooth krever 3.3V, men ikke 5V. Derfor er motstander koblet til for å senke spenningen og forhindre svikt i Bluetooth-modulen.

Men jeg bestemte meg for å bruke den direkte uten motstander, la oss se hvor lenge modulen varer, vi skal gjøre en slags kollisjonstest.

For å styre CNC (CNC) maskinen fra en telefon eller nettbrett brukte jeg programmet "Grbl controller", det er gratis og ganske multifunksjonelt. I videoen under viste jeg kort hvordan maskinen styres fra dette programmet.

Men hvis du kobler til fra en datamaskin, er det en nyanse når du parer tilkoblingen med modulen, to ny COM havn. For meg er det COM6 og COM7. Så en av dem brukes til å sende data, og den andre brukes til å motta. Derfor er det ingen grunn til å være redd og bare prøve å koble til en hvis ingenting skjer, så koble til en annen.

Men hvis noe ikke er klart, viste jeg det tydelig i videoen:

Svært ofte i prosjektene dine er det behov for fjernkontroll eller dataoverføring fra telefoninnretningene dine.

En av de mest populære og utbredte metodene for datautveksling via Bluetooth .

I dag skal vi se enkle eksempler hvordan koble til bluetooth modul til Arduino og konfigurer fjernkontroll fra telefonen.

Vi trenger:

  • Sett med MALE-MAMA ledninger
  • HC-06 Bluetooth

Koble til Bluetooth Modulen til Arduino-mikrokontrolleren er mest praktisk med MALE-MAMALE ledninger.

Arduino blåtann
Pin 1 (TX) RXD
Pinne 0 (RX) TXD
GND GND
5V VCC

Vær forsiktig, du må koble til TX -> RXD ,RX -> TXD .

Nå må du skrive ned testkoden til programmet:

Når du laster skissen, er det nødvendig at Bluetooth-modulen er koblet fra arduino-mikrokontrolleren. Ellers vil ikke skissen bli tatt opp på grunn av tilkoblingen med Bluetooth Modulen kommuniserer via de samme RX- og TX-portene som USB.

Int val; int LED = 13; void setup() ( Serial.begin(9600); pinMode(LED, OUTPUT); digitalWrite(LED, HIGH); ) void loop() (if (Serial.available()) ( val = Serial.read(); / / Når tegnet er "1", slå på LED hvis (val == "1") ( digitalWrite(LED, HIGH); ) // Når tegnet er "0", slå av LED hvis (val == "0") ( digitalWrite(LED, LAV ); ) ) )

Etter at skissen er tatt opp og Bluetooth Modulen er koblet til Arduino, du kan gå videre til neste trinn.

Kobler Bluetooth til telefonen

Det anbefales å ikke bruke USB som strømkilde for arduino, men en ekstern 9 V strømforsyning.

  1. Slå på Bluetooth på telefonen og se etter nye enheter
  2. Vi finner i listen over lidelser " HC-06" og koble til den.
  3. Telefonen vil be om en PIN-kode. du må skrive inn " 1234 "eller" 0000 "
  4. Hurra. Enheten er tilkoblet.

Nå må du laste ned bluetooth-terminalen til telefonen. Vi skal se på eksemplet med Android-plattformen.



Du kan installere forskjellige bluetooth-terminaler, som regel er de bare forskjellige i forskjellige design, funksjonaliteten endres ikke. Du kan også finne en terminal for iOS-produkter.

Etter at vi har installert terminalen, starter vi den, velger vår bluetooth-modul HC-06 og kobler til den.

Det er på tide å prøve prosjektet i aksjon. Vi skriver tallet "0" i terminalen og sender. LED L som er plassert på arduino-kortet ved siden av pinne 13 skal slukke. Nå sender vi tallet "1" gjennom terminalen og L LED skal lyse.

Demonstrasjon av arbeid:


Hjemmelekser:

  • Endre skissen slik at LED-en lyser og slukker med samme kommando, for eksempel "G".
  • Fullfør skissen og lær den å konvertere tekstdata som kommer via bluetooth til digitale data og implementer en dimer, tenn en LED ved hjelp av PWM, ved en gitt lysstyrke fra 0 til 254 som kommer via bluetooth.

I dag skal vi bli kjent med en rimelig modul for trådløs dataoverføring via blåtann.

blåtann er en bransjespesifikasjon for trådløse personlige nettverk som muliggjør trådløs overføring av data mellom mange enheter.

Vår modul heter HC-05. Dette er en av representantene for linjen med lignende moduler HC-03 - HC-09.

Disse modulene lar deg overføre data trådløst, uten å tenke på hvordan Bluetooth-protokollen generelt fungerer, på feltene og andre finesser. Disse modulene er riktige innstillinger gi dataoverføring på en slik måte at programmereren som skriver koden skriver algoritmen som om han jobbet med et kablet UART-grensesnitt. Derfor blir det så praktisk som mulig å skrive kode, og det er derfor denne linjen med moduler har fått så enorm popularitet blant nybegynnere og ikke bare.

Så du og jeg, la oss heller ikke ligge bak dem og ta en liten pause fra nettverksprotokoller og studere en slik modul. Det var også mange personlige forespørsler, så vel som i offentlige chatter, slik at jeg ikke ville omgå slike moduler og skrive noen leksjoner ved å bruke dem.

Modulene har følgende hovedegenskaper:

  • Bluetooth-brikke – BC417143 produksjon CSR-selskap,
  • dataoverføringsprotokoll - Bluetooth 2.0+EDR,
  • klasse 2, som tilsvarer dataoverføring innenfor en radius på opptil 10 m,
  • Støtte for seriell portprofil ( SPP), som sikrer kompatibilitet med alle enheter som støtter denne profilen,
  • ikke-flyktig flash-minne med en kapasitet på 8 MB,
  • radiokanal med en frekvens på 2,4 - 2,4835 MHz,
  • USB Host 1.1/2.0-grensesnitt,
  • UART-grensesnitt med justerbar overføringshastighet.

Også, sammen med disse egenskapene, er det verdt å merke seg at modulen har mange ben om bord, noe som gjør at den kan brukes i et bredere spekter. La oss se på modulpinout-diagrammet

Vi ser her GPIO, SPI, USB, PCM pinnene.

Riktignok vil vi foreløpig bare jobbe med USART-grensesnittet, ved hjelp av hvilket vi ikke bare vil overføre noen nyttige data, men også konfigurere modulen vår.

Vi vil gjøre dette for det første fordi modulene våre vil være av samme type (jeg har så mange som 4 av dem!), der HC-05-modulen er loddet på et annet kort, hvor kun 6 kontakter er ført utover. Dette er hvordan jeg har dem alle (ovenfra og nedenfra)

Hensikten med bena er angitt på bunnen av brettet, vi finner dem ut når vi kobler til modulen.

For det andre vil vi ikke jobbe med resten av de mange kontaktene fordi ikke hver fastvare lar deg gjøre dette.

Generelt falt valget på HC-05 også pga denne modulen Perfekt konfigurerbar for både master- og slavedrift.

Modulen er konfigurert for videre arbeid med data ved hjelp av AT-kommandoer. Jeg tror vi alle er mer eller mindre kjent med hva disse kommandoene er, vi ble litt kjent med dem da vi jobbet med Wi-Fi-modulen. Disse kommandoene er selvfølgelig forskjellige for alle enheter og derfor vil jeg legge ved et dokument med en komplett liste over kommandoer nederst på siden. Det er også lett å finne ressurser på Internett der beskrivelsen av disse kommandoene er oversatt til russisk, og det er til og med noen eksempler på bruken av dem. Vi vil ikke engasjere oss i fullstendig oversettelse av kommandoer her, vi vil kun studere de kommandoene vi må bruke. Foreløpig vil listen deres ikke være så bred, men senere vil vi komme tilbake til disse modulene, håper jeg, mer enn én gang, og da vil vi utvide horisonten vår i kunnskap om denne modulen. I mellomtiden gir vi kun en kort omvisning i modulen. Selvfølgelig vil vi prøve det på jobben, ikke uten det.

For nå, la oss koble modulen vår til TTL-USB-adapteren, som vi igjen kobler til PC-en.

Vi kobler til i henhold til følgende diagram

TTL-USB adapter Modul HC-05

VCC VCC

GND GND

TXD RXD

RXD TXD

I praksis vil det se omtrent slik ut

La oss koble adapteren til datamaskinen. Jeg vil ikke fortelle deg hvordan du jobber med adaptere av denne typen, vi jobber allerede med dem hele tiden. La oss lansere et terminalprogram, jeg skal bruke CoolTerm-programmet, siden det har mer fleksible innstillinger for overføring av data fra tastaturet, og for å legge inn kommandoer trenger vi at hver linje under overføringen avsluttes med en linjemating og vognreturkode.

La oss gå til programinnstillingene og først konfigurere porten

Denne hastigheten på 38400 ble valgt fordi modulen opererer med nøyaktig denne hastigheten når den mottar AT-kommandoer.

Velg nå elementet til venstre Motta og slå på en knapp der og slå på den andre

Den første knappen er for å avslutte overførte kommandoer med linjeskift og vognreturtegn, og den andre er slik at vi også kan se våre innlagte kommandoer etter å ha lagt dem inn i mottaksterminalvinduet.

La oss lagre innstillingene og prøve å koble til. Hvis alt er vellykket, kobler vi fra, siden modulen vår nå er i dataoverføringsmodus, og hvis den ennå ikke er konfigurert, vet vi mest sannsynlig ikke engang adressen eller innstillingene. Om å finne modulen i denne modusen Dette indikeres ved at den blå LED-en blinker raskt. Derfor må vi på en eller annen måte sette modulen i tilstanden for overføring av AT-kommandoer.

For å gjøre dette, kobler vi nå adapteren fra USB-porten og kobler ledningen til benet på HC-05-modulen NØKKEL. For noen kan det ha et annet navn, men jeg tror ikke du kan forveksle det. La oss koble ledningen slik og slik

La oss koble denne ledningen til den positive (med VCC-benet)

Og uten å slippe kontakten, koble adapteren til USB-port datamaskin og etter en stund (om et sekund eller to) kobler vi NØKKELkontakten fra VCC-kontakten ved å fjerne ledningen. Modulen må bytte til modus for mottak av AT-kommandoer, noe som indikeres av en veldig langsom blinkende hastighet på LED-en.

La oss gå til terminalprogrammet, koble til porten og prøve å sende en kommando , som modulen skal svare oss på "OK"

Modulen svarte, noe som betyr at alt er riktig.

For ikke å bli forvirret med innstillingene som en gang ble gjort av noen, la oss samle alle innstillingene ved å skrive inn kommandoen " AT+ORGL". Innstillingene må tilbakestilles til følgende parametere:

  • Enhetstype: 0
  • Forespørselskode: 0x009e8b33
  • Modularbeidsmodus: Slavemodus
  • Tilkoblingsmodus: Koble til den spesifiserte Bluetooth-enheten
  • Seriell parameter: Baudhastighet: 38400 bits/s; Stoppbit: 1 bit; Paritetsbit: Ingen.
  • Adgangsnøkkel: "1234"
  • Enhetsnavn: "H-C-2010-06-01"

Bare innstillingene vil ikke bli brukt umiddelbart. Du må laste inn modulen på nytt. Det er praktisk å gjøre dette ved å skrive inn kommandoen " AT+RESET", som svar på at modulen vil starte på nytt og gå tilbake til dataoverføringsmodus og vil ikke kunne motta kommandoer for øyeblikket. For at den skal godta dem, vil vi utføre de samme handlingene som ovenfor, slik at modulen igjen bytter til modusen for å motta AT-kommandoer. Det er en annen måte, men vi vil ikke bruke den foreløpig.

La oss nå sjekke noen parametere for modulen vår.

For å finne ut fastvareversjonen, skriv inn kommandoen " AT+VERSJON?", som modulen må svare noe slikt på

Hvis fastvaren ikke er lavere enn denne versjonen, kan vi være sikre på at denne modulen med slik fastvare er i stand til å fungere i mastermodus.

Finn ut enhetsadressen ved å bruke kommandoen " AT+ADDR?«

Vi vil bruke denne adressen til å identifisere enheten vår på hovedenheten. Vi tar den mest vanlige smarttelefonen som hovedenhet, men det kommer litt senere. Vi må fortsatt spille godt med lagene.

La oss også be om enhetsnavnet ved å bruke kommandoen " AT+NAME?", som mange moduler, inkludert mine, reagerer bare på hvis det er et høyt nivå på KEY-benet, det vil si når ledningen er koblet til. La oss gjøre det

La oss prøve å endre dette navnet også, siden det ikke er veldig praktisk å gjøre dette, skriv inn kommandoen "AT+NAME: Desired_name". Denne kommandoen kan legges inn uten et høyt nivå på KEY-pinnen

La oss sjekke at navnet har endret seg, bare ikke glem det høye nivået på KEY-benet

Navnet er godt brukt.

La oss sjekke passordet med kommandoen " AT+ PSWD?«

På samme måte som navnet kan du endre passordet.

Nå finner vi ut typen enhet (slave eller master) ved å bruke kommandoen " AT+ ROLLE?«

0 betyr slave. Typen kan også endres når som helst. Men vi trenger ikke dette for nå, siden vi vil jobbe med enheten som en slave.

Tilbakestill de sammenkoblede enhetene med kommandoen " AT+RMAAD«

La oss nå finne ut USART-grensesnittinnstillingene med kommandoen " AT+ UART?«

Disse innstillingene betyr: 38400 kbps, 1 stoppbit og ingen paritet.

Denne tabellen inneholder mulige alternativer USART-innstillinger

La oss endre for eksempel overføringshastigheten med kommandoen " AT+UART=115200,0,0«

Bare disse innstillingene vil tre i kraft etter at modulen er startet på nytt og vil bare være relevante for dataoverføringsmodusen for overføring av AT-kommandoer til modulen, de samme innstillingene vil forbli på en hastighet på 38400.

La oss laste modulen på nytt med kommandoen " AT+RESET“, hvoretter modulen vil bytte til dataoverføringsmodus.

La oss konfigurere porten i terminalprogrammet til gitt hastighet og få kontakt med ham

La oss prøve å skrive inn en kommando som vår modul ikke vil svare på, siden modusen ikke er den samme

Men la oss ikke fortvile. Det viser seg at for å sende kommandoer til modulen, er det ikke nødvendig å sette den i denne modusen. Du kan aktivere støtte for overføring av AT-kommandoer i datamodus. I en kort stund (mindre enn et sekund er nok), berører vi ledningen som er koblet til NØKKELkontakten til den positive bussen til modulen, og modulen vil bytte til AT-kommandostøttemodus. Riktignok kan vi ikke bestemme dette ved at LED-en blinker like raskt. Dessuten, i vi kommando-støttemodus, vil ikke masterenheten kunne koble til oss. Men likevel trenger vi ikke hele tiden å fjerne ledningen fra USB-kontakt og rekonfigurer porten i terminalprogrammet. Dette er allerede bra. La oss gjøre dette og sørge for at modulen også godtar kommandoer, som i kommandomottaksmodus

For å fjerne denne støtten og for at modulen skal kunne koble til, start den på nytt med kommandoen " AT+RESET". La oss gjøre det

Flott! Vi vet allerede noe. I utgangspunktet har vi konfigurert modulen til å overføre data i mastermodus.

Nå vil smarttelefonen vi har i dag fungere som en hovedenhet. Alle med en Android vil gjøre det, så lenge de har et slags terminalprogram for Bluetooth. Jeg installerte denne. Jeg fant det behagelig

For det første er det gratis, krever ikke å opprette en forbindelse på forhånd, og har også flere knapper med strenger vi har lagret på forhånd.

La oss laste ned og installere programmet og kjøre det. Trykk på SCAN-knappen og vår modul skal vises i listen over funnet enheter

La oss velge denne enheten og vi vil bli tatt til dialogboksen for opprettelse av par, der du må skrive inn et passord (vi har "1234") og godta ved å klikke på "OK"-knappen

Noen gang tenkt på å administrere noen elektroniske enheter bruke en smarttelefon? Enig, det ville vært veldig kult å kontrollere en robot eller andre enheter fra smarttelefonen din. Vi tilbyr en enkel leksjon for nybegynnere og dummies om hvordan man kontrollerer en smarttelefon ved hjelp av Arduino via Bluetooth. Hvis du etter denne leksjonen ønsker å bli bedre kjent med Arduino, kan du finne bøker om det.

Trinn 1. Hva vi trenger

Enheter

Modul - Bluetooth-modul HC 05/06
Styre - Arduino
Lysdiode (LED)
Motstand - 220Ω
Android-enhet

Programvare

Arduino IDE
Android Studio (faktisk ikke nødvendig, fordi du finner Android-applikasjonen nedenfor)

Trinn 2. Hvordan det fungerer

Vanligvis gjør vi dette trinnet på slutten, men slik at du forstår hva vi må oppnå, se på resultatet på dette mellomtrinnet. Vi har også publisert en trinn-for-trinn videoopplæring nedenfor.

Trinn 3. Vi begynner å sette sammen kretsen

Kretsen i opplæringen vår er så enkel og liten at vi bare trenger å lage noen få tilkoblinger:

Arduino Pins___________Bluetooth Module Pins
RX (Pin 0)__________________________TX
TX (Pin 1)__________________________RX
5V__________________________VCC
GND_______________________GND

Koble det negative til LED-en til GND på Arduino, og det positive til pinne 13 gjennom en motstand på 220 Ohm - 1 kOhm. Generelt, i figuren vår nedenfor er alt ganske klart.

Ikke koble RX til RX og TX til TX Bluetooth-utganger til Arduino-utganger, du vil ikke motta noen data, her betyr TX overføring, RX betyr mottak.

Trinn 4: Last opp programmet til Arduino

Nå må vi skrive et program og laste det opp til Arduinoen vår. Hvis du ikke vet hvordan du gjør dette ennå, last ned bøker. Koden nedenfor er akkurat det vi trenger for å laste inn i Arduino.

/* Bluetooh Basic: LED PÅ AV * Koder - Mayoogh Girish * Nettsted - http://bit.do/Avishkar * Last ned appen: https://github.com/Mayoogh/Arduino-Bluetooth-Basic * Dette programmet lar deg å kontrollere en LED på pinne 13 til arduino ved hjelp av en bluetooth-modul */ char data = 0; //Variabel for lagring av mottatte data void setup() ( Serial.begin(9600); //Setter baud for seriell dataoverføring pinMode(13, OUTPUT); //Setter digital pin 13 som utgangspinne ) void loop() ( if(Serial.available() > 0) // Send data kun når du mottar data: ( data = Serial.read(); //Les de innkommende dataene og lagre dem i variable data Serial.print(data); // Print Value inside data in Serial monitor Serial.print("\n"); //New line if(data == "1") // Sjekker om verdien av data er lik 1 digitalWrite(13, HIGH If-verdi). er 1 så slås LED PÅ else if(data == "0") // Sjekker om verdien av data er lik 0 digitalWrite(13, LAV //Hvis verdien er 0 så slås LED AV ) )

Trinn 5. Hvordan prosessen fungerer

HC 05/06-modulen opererer via en seriell kommunikasjonskanal. Android-appen sender data sekvensielt til Bluetooth-modulen når du trykker på en bestemt tast. Bluetooth på den andre enden mottar dataene og sender dem til Arduino via Bluetooth-modulens TX-tilkobling (Arduino RX-tilkobling).

Koden som er lastet inn i Arduino sjekker de mottatte dataene og sammenligner dem. Hvis en "1" mottas, slås LED-en på og slås av når en "0" mottas. Åpne serieportmonitoren og observer de mottatte dataene.

Trinn 6. Søknad for Android-enheter

I denne opplæringen vil vi ikke berøre å lage applikasjoner for Android-enheter. Du kan laste ned applikasjonen på GitHub.

Hvordan bruke applikasjonen?

Etter at vi har koblet til via Bluetooth, må vi laste ned og installere en applikasjon som ved hjelp av en smarttelefon :) vil kontrollere LED-en vår på avstand. Du kan laste ned programmet gratis på Amazon.com. Vi kobler smarttelefonen til Bluetooth-modulen HC 05/06:

  1. Slå på HC 05/0-modulen
  2. Ser etter en enhet
  3. Vi kobler til HC 05/06 ved å skrive inn standardpassordet "1234" eller "0000" (fire nuller).

Etter det installerer vi applikasjonen på smarttelefonen vår. La oss åpne den. Velg en enhet - velg Bluetooth-modulen fra listen (HC 05/06). Etter vellykket tilkobling, trykk på PÅ-knappen for å slå på LED-en og AV-knappen for å slå av LED-en. Deretter kan du klikke på "Koble fra"-knappen for å koble fra Bluetooth-modulen.

Dette var en guide for dummies og nybegynnere om hvordan du kobler en Bluetooth-modul til Arduino. Dette prosjektet kan forbedres og tas til et høyere nivå for for eksempel hjemmeautomatisering gjennom smarttelefonstyring, kontrollert robot og mye mer.

Gjennomgang av Bluetooth-modul HC-05

Arduino-kontrolleren støtter ikke trådløs kommunikasjon, og ofte er dette rett og slett nødvendig. For eksempel, fjernkontroll robot på Arduino, sender data fra værstasjonen til Arudino til Internett eller til hjemmeserver, kommunikasjon av flere enheter med hverandre. Her, for å hjelpe enhetsutviklere, er det mange eksterne moduler for å organisere ulike teknologier. trådløs kommunikasjon: WiFi-moduler, GSM/GPRS, IR, Bluetooth, radiomoduler for drift i ulike frekvensområder.

Bluetooth-teknologi brukes til å overføre data mellom to enheter som er i umiddelbar nærhet av hverandre, uten å kreve direkte siktlinje. Bluetooth-teknologi gir god motstand mot bredbåndsinterferens, slik at flere enheter på samme sted kan kommunisere samtidig uten å forstyrre hverandre. Veldig vid denne teknologien brukes i telefoner, nettbrett, bærbare datamaskiner.

En av beste løsninger for å organisere toveis Bluetooth-kommunikasjon mellom din Arduino-enhet og et nettbrett, bærbar PC eller annen Bluetooth-enhet - Bluetooth-modul HC-05, som kan fungere som både en master (søk etter Bluetooth-enheter og start kommunikasjon) og en slave (slave-enhet) ).

Tekniske egenskaper for HC05-modulen

  • Bluetooth-brikke: HC-05(BC417143)
  • Radiofrekvensområde: 2,4 - 2,48 GHz
  • Sendeeffekt: 0,25–2,5 mW
  • Følsomhet: –80 dBm
  • Forsyningsspenning: 3,3–5 V
  • Strømforbruk: 50 mA
  • Rekkevidde: opptil 10 meter
  • Grensesnitt: seriell port
  • Modi: master, slave
  • Lagringstemperatur: –40…85 °C
  • Driftstemperaturområde: –25…75 °C
  • Mål: 27 x 13 x 2,2 mm

Forbindelse

Sensoren har 6 2,54 mm standardstifter:

  • VCC - (strømforsyning 3,6 – 6 V);
  • GND - (bakke).
  • TXD, RXD - UART-grensesnitt;
  • STATE - statusindikator;
  • NØKKEL - kontakt for å gå inn i programmeringsmodus.

Modulen konfigureres i programmeringsmodus ved å sende AT-kommandoer via seriell port. For å gå inn i programmeringsmodus, må du påføre et høynivåsignal til KEY-kontakten. På noen moduler er det ingen KEY-pin, og i stedet er det en EN-pin:

  • NO - slå på/av modulen;


I dette tilfellet, for å gå inn i programmeringsmodus, må du bruke et høynivåsignal til pin 34:


For modul k Arduino-brett vi vil bruke serieporten fra siden Arduino programvare UART. Tilkoblingsskjema i figuren:


Du bør få noe sånt som følgende:


Programmering av Bluetooth HC05-modulen

Modulen konfigureres i programmeringsmodus ved å sende AT-kommandoer via den serielle porten. La oss koble HC05-modulen til Arduino-kortet i henhold til koblingsskjemaet i figur 5. Påfør 3,3V på KEY-pinnen til modulen (eller pin 34 på kortet). Vi vil sende AT-kommandoer fra Arduino IDE seriell portmonitor. La oss laste opp skissen fra Listing 1 til Arduino. Vi trenger Arduino SoftwareSerial-biblioteket. Hastigheten til UART-modulen i programmeringsmodus er 38400 baud, men den kan variere, i dette tilfellet bør den velges.

Inkludere SoftwareSerial mySerial(2, 3); // spesifiser rx- og tx-pinnene henholdsvis void setup() ( pinMode(2,INPUT); pinMode(3,OUTPUT); Serial.begin(9600); mySerial.begin(38400); Serial.println("start prg" ) ; ) void loop() ( if (mySerial.available()) ( char c = mySerial.read(); // les fra programvareporten Serial.print(c); // skriv til maskinvareporten ) if ( Serial .available()) ( char c = Serial.read(); // les fra maskinvareporten mySerial.write(c); // skriv til programvareporten ) )

Etter å ha lastet ned skissen, åpne Arduino IDE seriell portmonitor og begynn å sende AT-kommandoer:


Liste over grunnleggende AT-kommandoer:

  • AT - testkommando.

Det er ingen parametere.

Modulrespons: OK

  • AT+VERSJON? - få modulens fastvareversjon.

Det er ingen parametere.

Modulrespons: +VERSJON:

Hvor Bluetooth-modulens fastvareversjon.

  • AT+RESET - tilbakestill innstillinger.

Det er ingen parametere.

Modulrespons: OK

  • AT+ORGL - angi egendefinerte modulinnstillinger.

Det er ingen parametere.

Modulrespons: OK

  • AT+ADDR? - få moduladressen.

Det er ingen parametere.

Modulrespons: +ADDR:

Hvor Bluetooth-moduladresse NAP: UAP: LAP.

  • AT+NAME? - få modulnavnet.

Det er ingen parametere.

Modulsvar: +NAME:

Hvor Bluetooth-modulnavn.

  • AT+NAVN= Angi et nytt modulnavn.

Parameter: Bluetooth-modulnavn.

Modulsvar: +NAME:

OK (eller FAIL)

  • AT+PSWD? - få en PIN-kode for tilgang til Bluetooth-modulen.

Det er ingen parametere.

Modulrespons: + PSWD:

Hvor Pin. Standard er 1234.

  • AT+PSWD= Still inn tilgangskoden for Bluetooth-modulen.

Parameter: Modultilgangskode.

Modulrespons: OK (eller FAIL)

  • AT+KLASSE= Still inn driftsmodusen til Bluetooth-modulen.

Parameter: Klasse. Moduldokumentasjonen gir ikke mulige verdier denne parameteren. Som standard er den satt til 0. Hvis du har tenkt å bruke modulen i mastermodus, trenger du ikke endre verdien. Hvis du bruker modulen i slavemodus, med parameterverdien lik 0, er den usynlig for enheter med drift Android-system. For synlighet må du sette parameterverdien til 7936.

Modulrespons: OK

  • PÅ+KLASSE? - få modulklassen.

Det er ingen parametere.

Modulrespons: +KLASSE:

Hvor Modulklasse.

  • AT+IAC - få tilgangskoden til GIAC-forespørselen (General Inquire Access Code).

De forskjellige fysiske kommunikasjonskanalene som brukes i har forskjellige kanaltilgangskoder. I pollingkanaler, med unntak av dedikerte kanaler, brukes den samme generelle spørringstilgangskoden for alle enheter.

Det er ingen parametere.

Modulrespons: + IAC:

Hvor Be om tilgangskode.

  • AT+IAC= Still inn forespørselstilgangskoden.

Parameter: Be om tilgangskode. Standardverdien er 9e8b33.

Modulrespons: OK (eller FAIL)

  • AT+ROLE? - få driftsmodusen til modulen.

Det er ingen parametere.

Modulrespons: +ROLE:

Hvor Bluetooth-modulens driftsmodus:

  • 0 - slave. I denne modusen kan en annen master koble til modulen;
  • 1 - mester. I denne modusen kan modulen selv koble til en hvilken som helst Bluetooth-enhet;
  • 2 - slave-løkke. Modulen sender tilbake alle bytene som ble sendt til den.
  • AT+ROLE= Still inn driftsmodus for Bluetooth-modulen.

Parameter: Bluetooth-modulens driftsmodus:

  • 0 - slave;
  • 1 - mester;
  • 2 - slave-

Modulrespons: OK

  • AT+UART= ,,Installer modulen for serieporten.

Alternativer:

  • Stopp bit:
  • 0 - nei;
  • 1 - ja;
  • Paritetsbit:
  • 0 - nei;
  • 1 - ja.

Modulrespons: OK (eller FAIL).

  • AT+UART? - få modulutvekslingsparametere.

Det er ingen parametere.

Modulrespons: +UART: ,,

  • Baudhastighet (9600,19200,38400,57600,115200);
  • Stopp bit;
  • Paritetsbit.
  • AT+CMODE= Still inn Bluetooth-modulens tilkoblingsmodus.

Parameter:

  • 2 - slavesløyfemodus.

Modulrespons: OK

  • AT+CMODE? - få modultilkoblingsmodus.

Det er ingen parametere.

Modulrespons: +CMODE:

Hvor Bluetooth-modul tilkoblingsmodus:

  • 0 - modulen kan bare koble til Bluetooth-enheten spesifisert av AT+BIND-kommandoen;
  • 1 - modulen kan kobles til hvilken som helst Bluetooth-enhet;
  • 2 - slavesløyfemodus.
  • AT+INQM= ,,Angi alternativer for å be om et søk etter Bluetooth-enheter.

Alternativer:

  • :
  • 0 - standard forespørselsmodus;
  • 1 - forespørsel i RSSI-modus;
  • Maksimalt antall enheter som svarer på en forespørsel;
  • Ventetid (1–48: 1,28 sek til 61,44 sek).

Modulrespons: OK (eller FAIL).

  • AT+INQM? - få parametere for å be om et søk etter Bluetooth-enheter.

Det er ingen parametere.

Modulrespons: +UART: ,,

  • AT+INQ - begynn å søke etter Bluetooth-enheter.

Det er ingen parametere.

Modulens svar er en liste over funnet enheter.

  • AT+BIND= Koble en Bluetooth-modul til en annen modul.

Modulrespons: OK (eller FAIL).

  • AT+BIND? - få adressen til enheten knyttet til Bluetooth-modulen.

Det er ingen parametere.

Modulrespons: Adressen til enheten tilknyttet Bluetooth-modulen.

  • AT+FSAD=

    Modulrespons: OK (eller FAIL).

    • AT+RMSAD=

      Modulrespons: OK (eller FAIL).

      • AT+RMAAD - tøm listen over autoriserte enheter for vår Bluetooth-modul.

      Modulrespons: OK (eller FAIL).

      • AT+LINK= Koble til en Bluetooth-enhet.

      Parameter: Bluetooth-enhetsadresse.

      Modulrespons: OK (eller FAIL).

      Du finner en fullstendig liste over AT-kommandoer.

      Eksempel på bruk

      La oss vurdere et eksempel på mottak av luftfuktighet og temperaturdata fra en DHT11-sensor koblet til Arduino på en Android-enhet (telefon, smarttelefon, nettbrett). Arduino mottar data fra DHT11-sensoren hvert 10. sekund og sender det gjennom HC05-modulen til Android-enheten.

      Vi trenger følgende deler:

      • Arduino-brett
      • prototyping bord
      • DHT11 sensor
      • Bluetooth-modul HC05
      • tilkoblingsledninger
      • Android-telefon eller nettbrett

      La oss sette sammen kretsen vist i figuren:


      Vi får:


      La oss laste opp en skisse til Arduino-kortet (se nedenfor) - motta fuktighets- og temperaturdata fra DHT11-sensoren og sende ut dataene til serieporten (maskinvare) gjennom HC05-modulen på Android-enheten.

      H" // konstanter #define DHTPIN 8 // pin for tilkobling av DATA-kontakten #define DHTTYPE DHT11 // sensor DHT 11 #define INTERVAL_GET_DATA 2000 // måleintervall, ms // oppretter en forekomst av DHT-objektet DHT dht(DHTPIN, DHTTYPE); // variabel for måleintervallet unsigned long millis_int1=0; // kobler til SoftwareSerial.h-biblioteket #include SoftwareSerial mySerial(2, 3); // spesifiser rx- og tx-pinner henholdsvis void setup() ( Serial.begin(9600); // start serieporten mySerial.begin(9600); dht.begin(); // start DHT Serial.println("start prg " ); ) void loop() ( if(millis()-millis_int1 >= INTERVAL_GET_DATA) ( pos=1-pos; if(pos==0)​( // henter fuktighetsdata fra DHT11 int fuktighet = dht.readHumidity (); // utgang til seriell portmonitor Serial.print("humidity=");Serial.println(humidity("H=");mySerial.println(humidity); fuktighetsdata c DHT11 int temp = dht.readTemperature(); // utgang til seriell portmonitor Serial.print("temperatur=");Serial.println("T=");mySerial. println(temp) ) // start av telleintervall millis_int1=millis();

      La oss sjekke mottaket av data sendt av Arduino på Android-enheten via HC05 bluetooth-modulen. La oss installere Bluetooth Terminal-programmet på Android-enheten. I programmet vil vi etablere en forbindelse med HC05-modulen:


      Og vi observerer mottak av data som kommer fra Arduino gjennom HC05-modulen:


      Og sender ut data til Arduino IDE seriell portmonitor:


      Vanlige spørsmål FAQ

      1. Det er ingen respons fra modulen på AT-kommandoer
      • Kontroller at modulen er riktig tilkoblet;
      • Kontroller koblingene til modulens KEY-pin (eller pin 34) til 3,3V;
      • Sjekk innstillingene for serieporten (hastighet 38400 baud, kanskje for moduler forskjellige produsenter skru av).
      2. Android-enhet kan ikke koble til bluetooth-modulenHC05
      • Kontroller modulens tilkobling til strømforsyningen LED-en på modulen skal blinke raskt (nettverkssøk);
      • Kontroller at modulens KEY-pin (eller pin 34) er koblet fra 3,3V;
      • Angi slaverollen ved å bruke AT-kommandoer (AT+ROLE=0).
      3. Data overføres ikke tilAndroid-enhet
      • Sjekk at HC05 bluetooth-modulen er riktig koblet til Arduino-kortet;
      • Baud rate Arduino-data og HC05 må samsvare med det som er satt med AT+UART AT-kommandoen.