Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Hva du finner her og generell info

Her kan du lese om veldig enkel oppkobling av bluetooth (og BLE) for de HC-06 modulene dere har. HM-10 modulene (BLE) som dere kan få kobles opp akkurat likt (de har seks bein, men vi bruker bare de fire som har samme navn som HC-06 modulene). All kode vi bruker er lik for begge enhetene.

For å forenkle kommunikasjonen litt har vi lagd et eget bibliotek for å forenkle mottak av beskjeder fra bluetooth.

PLab bibliotek

GitHub kontoen vår, under plab-library, kan dere finne PLabBT, et bibliotek for å forenkle mottak av beskjeder. Dette biblioteket inneholder tre klasser: PLabBTSerial, PLabBTCallback og PLabBTLEController.

PLabBTSerial

Denne arver fra Arduinos SoftwareSerial, og har derfor de samme begrensningene som det. Hovedbegrensningen vi har merka, er nok bare at om du bruker flere enheter som bruker det, kan du bare motta data fra en av dem. Så lenge du bare kobler til en bluetooth enhet tror vi ikke dette har noe å si.

...

Se eksempel 2 for å se det i bruk.

AT kommandoer

AT kommandoer trenger generelt å bare kjøres en gang. Etter de er kjørt lagres resultatet på chipen. Derfor fungerer det helt fint å bare bruke eksempel 1 under, og skrive AT kommandoene dere vil kjøre manuelt fra konsollvinduet.

Eksempel 1: Oppkobling og basis

Siden biblioteket vi bruker baserer seg på SoftwareSerial, gir vi først det mest grunnleggende eksempelet som kan gies med dette. Det er bare beregnet til å se i konsollvinduet alt som kommer inn fra enheten, og for å sende tekst til enheten. Dette kan brukes til for eksempel å sende AT kommandoer til enheten.

Oppkobling viser HC-05 enhet, men føttene er like som BLE enheten, og de fire tilkoblede føttene er like som HC-06 enheten du kan bruke.

Image Removed

Legg merke til en viktig detalj: Det som er RX i kode er TX på enheten, og motsatt. RX står for motta (Receive) og TX står for send (Transmit). Det du sender fra Arduino blir mottatt av enheten, og det du mottar på Arduino blir sendt fra enheten.

Koden for dette eksempelet er bare eksempelkoden for SoftwareSerial, og kan finnes her, eller i menyen under File->Examples->SoftwareSerial->SoftwareSerialExample. Er det noe problem med dette, prøv å endre hastigheten på kommunikasjonen til 9600.

Eksempel 2: Ekko fra Arduino

Dette eksempelet er Arduino koden fra et litt større eksempel som inkluderer Processing kode, både for datamaskin og for mobil.

Eksempelet mottar data fra bluetooth enhet, og returnerer et ekko til senderen. I tillegg er det mulig å skrive i konsollvinduet for å sende beskjeder til tilkoblet bluetooth enhet. Husk å sette på newline som linjeskift om du vil prøve det!

Image Removed

Oppkoblingen av dette eksempelet er nesten lik som eksempelet over. Eneste forskjellen er et send og motta pinnene er tilkoblet andre utganger på Arduinoen.

...

PLabBTCallback

Denne klassen er helt egen. Den bruker PLabBTSerial internt, men dette har liten innvirkning for deg.

Constructor:

MetodeArgumenter
PLabBTCallback

uint8_t receivePin - Pinne som brukes for å motta på

uint8_t transmitPin - Pinne som brukes for å sende til

char divider = ':' - Tegnet som skiller kommando og argument. Standard er ':

bool inverse_logic = false - Hvorvidt enheten er styrt av aktivt lavt signal. Standard er aktiv høy

uint8_t bufferSize = 50 - Hvor lang en kommando og argument kan være tilsammen

Metoder:

MetodeArgumenterForklaring
void beginlong speed - Hvor raskt kommunikasjonen skal foregå. 9600 fungerer bra for dette. Må kalles før update()Starter kommunikasjon med bluetooth enheten
void update Oppdaterer alle interne strukturer. Forårsaker callback kall
void registerCallback

char *command - Tekst kommandoen callback skal reagere på

void(*callback)(char *arg) - Callback funksjonen. Må ta et char * argument (c-streng)

Registrerer en callback funksjon som blir kalt når den gitte kommandoen kommer inn.Flere callbacks kan registreres på samme kommando.

void registerNoCommandCallbackvoid(*callback)(char *arg) - Callback funksjonen. Må ta et char * argument (c-streng)Registrerer en callback funksjon som blir kalt hvis delingstegnet ikke er tilstede i mottatt beskjed. Kun en slik vil registreres.

PLabBTLEController

Denne klassen arver fra SofwareSerial og pakker inn AT kommandoer for å styre HM-10/11. Den kan gjøre det enklere å konfigurere disse enhetene, for eksempel for å sette dem opp i nettverk.

Constructor

MetodeArgumenter
PLabBTLEController

rx - Samme som SoftwareSerial rx

tx - Samme som SoftwareSerial tx

Operatorer:

OperatorBeskrivelse
[size_t index]Elementtilgang. Hent ut oppdaget enhet etter index.

Metoder:

MetodeArgumenterBeskrivelse
void update Oppdaterer indre datastrukturer. Må kalles ofte, anbefalt i begynnelsen på loop().
bool isReady Forteller om enheten er klar for å motta instruksjoner
void setNamechar *name - Nytt navnSetter nytt synlig navn på Bluetooth LE enheten.
char *getName Henter navnet på Bluetooth LE enheten.
Role getRole Forteller hvilken rolle Bluetooth LE enheten har (central/peripheral).
void setRoleRole r - Ny rolleSetter ny rolle for Bluetooth LE enheten (central/peripheral).
bool isPeripheral Forteller om Bluetooth LE enheten har peripheral rolle.
bool isCentral Forteller om Bluetooth LE enheten har central rolle. Enheten må ha central rolle for å initiere nettverk med andre enheter.
bool isDiscoveringNames Forteller om Bluetooth LE enheten oppdager navnene til enheter når den søker.
void setDiscoveringNamesbool disc - Om navn skal oppdagesSetter om enheten skal oppdage navn på andre enheter eller ikke.
bool isWorkingImmediately Forteller om enheten skal starte tilkobling ved første mulighet.
void setWorkingImmediatelybool wi - Om enheten skal jobbe umiddelbartSetter om enheten skal starte tilkobling ved første mulighet. Anbefales av under tilkobling til andre enheter når denne enheten har central rolle.
void discoverDevices Starter søk etter andre enheter. Krever central rolle.
bool isDiscoveringDevices Forteller om enheten holder på å søke etter andre enheter akkurat nå.
int devices Forteller hvor mange enheter i nærheten som er oppdaget.
void clearDiscoveredDevices Sletter listen med oppdagede enheter.
void connectDeviceint id - identifikator/ indeks i device liste.Koble til enhet etter id. Krever at enheten har oppdaget den andre enheten.
void connectDevicePLabBTLEDevice device - Oppdaget enhetKoble til den angitte oppdagede enheten.
void connectDevicechar *address - Addresse å koble tilKoble til enhet med angitt addresse
void connectLastDevice Koble til forrige enhet som vellykket tilkobling ble oppnådd.
bool connectionFailed Forteller om tilkoblingsforsøk feilet
bool isConnecting Forteller om enheten holder på å koble til.
bool isConnected Forteller om enheten er tilkoblet akkurat nå.
void disconnect Kobler fra sammenkoblet enhet.
void reset Starter enheten på nytt
void factoryReset Gjenoppretter enhetens fabrikkinnstillinger.

 

AT kommandoer

AT kommandoer trenger generelt å bare kjøres en gang. Etter de er kjørt lagres resultatet på chipen. Derfor fungerer det helt fint å bare kjøre terminal eksempelet og skrive AT kommandoer direkte i konsollvinduet når du bruker HC06 eller HM10 enheten.

Eksempler i biblioteket

I biblioteket har vi en del eksempler som demonstrerer bruk av de ulike klassene, og som kan hjelpe til med sammenkobling av enheter.

Alle disse eksemplene finnes i PLabExamples/examples/13.Bluetooth/.

EksempelForklaring
ButtonTestLeser en knapp, og sender en beskjed når knappens tilstand endres.
HC05_BindingSetter opp en HC05 enhet til å koble til en annen enhet. Etter tilkobling kommer enheten til å gjenoppta tilkoblingen når den andre enheten er i nærheten. Tilkobling huskes etter strømbrudd.
HM10_ConnectViser hvordan en HM10 enhet kan konfigureres til å koble til en annen enhet ved hjelp av PLabBTLEController klassen.
HM10_ConnectAndStayConnectedViser hvordan en HM10 enhet kan konfigureres til å koble til en annen enhet ved hjelp av PLabBTLEController klassen. Tilkoblingen gjenopptas med en gang enhetene er i nærheten av hverandre. Tilkobling huskes etter strømbrudd.
HM10_ControllerTestViser hvordan PLabBTLEController klassen virker. Kan brukes for konfigurasjon av HM10/11 enheter.
PLabBTCallbackAdvancedEchoViser avansert bruk av PLabBTCallback klassen.
PLabBTCallbackEchoViser bruk av PLabBTCallback klassen med ekko.
PLabBTSerialEchoViser bruk av PLabBTSerial klassen med ekko.
TerminalGrunnleggende terminalbruk med Bluetooth enheter.