HC-05 Bluetooth Module

Een robot besturen met je telefoon, de lampen en de verwarming aan laten gaan zodra je het huis binnenloopt of verschillende sensoren draadloos met elkaar laten communiceren; als je bluetooth toevoegt aan je project gaat het aantal mogelijkheden meteen enorm omhoog.
De HC-05 is een goedkope en veelgebruikte module, die vanaf de Arduino makkelijk aan te spreken is.
Het aansluiten van de module op de Arduino en het laten communiceren van de HC-05 met, bijvoorbeeld, een Android-telefoon kan complex lijken, maar met onderstaande uitleg wordt het een stuk makkelijker.

HC-05 of HC-06

Wie een beetje op zoek gaat naar bluetooth-modules die werken met de Arduino, komt al snel twee versies tegen; de HC-05 en de HC-06.
Anders dan je gewend bent, is de versie met het laagste nummer degene die je wilt hebben.
Beide bordjes zijn identiek, maar hebben een andere firmware. De software van de HC-06 is enkel in slave-mode te gebruiken, de HC-05 kan ook in master-mode (meer informatie op Wikipedia).
Gezien het kleine prijsverschil tussen de twee en de betere mogelijkheden van de HC-05, verkoopt Next In Order enkel dit model.

Aansluiten

De HC-05 heeft zes pinnen, waarvan je er twee nodig hebt om de module van stroom te voorzien en twee om te communiceren met de Arduino. Van de laatste twee pinnen, state en wakeup, weet niemand de functie*.
De communicatie met de Arduino gaat via de seriële poorten. Dit is een protocol om data mee heen en weer te sturen, je kent het waarschijnlijk wel van de Serial-console in de Arduino IDE.
Kortgezegd werkt seriele communicatie door het heen en were sturen van signalen over twee pinnen, TX en RX. TX verzend, RX ontvangt. Dus moet de TX-pin van de verzender worden aangesloten op de RX-pin van de ontvanger.

* Dit is slechts een klein beetje overdreven. Je kunt prima leven zonder deze pinnen ooit te gebruiken.
Omdat de HC-05 op 3.3 volt draait en de Arduino op 5 volt, moeten we een kleine truc uithalen om de seriële signalen tussen de twee op hetzelfde niveau te krijgen. De Arduino verstuurt signalen van 5 volt, en de HC-05 verwacht signalen van 3.3 volt. Hoewel het voor een korte test niet erg veel uit lijkt te maken, kan het langdurig aansluiten van de ontvangende RX-pin van de HC-05 voor beschadigingen zorgen.
Hier kunnen we een voltage divider voor maken, waarmee we met gebruik van twee weerstanden een binnenkomend signaal kunnen omzetten naar een lager voltage.
Klinkt ingewikkelder dan het is, onderstaand schema maakt het duidelijk.
De oranje draad is aan de kant van de Arduino aangesloten op de TX poort, en stuurt een signaal van vijf volt uit.
Door de voltage divider wordt dit teruggebracht naar drie volt, wat veilig is voor de bluetooth module.
De TX-pin van de HC-05 stuurt 3.3 volt uit, maar gelukkig kan de Arduino hier prima mee overweg (vooral gelukkig omdat voltage divider enkel spanning omlaag kunnen brengen, een signaal van drie volt omzetten naar vijf volt is op deze manier onmogelijk).

HC-05 aansluiten op de telefoon

Om de HC-05 te laten communiceren met je telefoon, moet je deze pairen met de telefoon. Dit komt erop neer dat je deze moet toevoegen aan de bluetooth-apparaten waarmee de telefoon contact mag maken.
De module heet standaard HC-05, en het wachtwoord is 1234.
Als dit gedaan is, hebben we alleen nog een programma nodig wat in staat is seriële data te verzenden en te ontvangen. Hier zijn meerdere programma's voor geschikt, ik heb gekozen voor het gratis programma BlueTerm, wat in de PlayStore van Android is te downloaden.
Als je dit hebt geïnstalleerd kun je in het menu via Connect device verbinding maken met de HC-05.

Arduino-sketch laden

De communicatie vanaf de telefoon werkt nu, de apparaten zijn gekoppeld en dus is het enige wat we moeten doen het laden van de juiste sketch op de Arduino.
De sketch die op CodeBender staat leest simpelweg de seriële data van de HC-05 uit, en print deze naar de Serial Monitor van de Arduino. Data die verzonden wordt via de Arduino, komt in de Serial Monitor van BlueTerm terecht.

Klaar!

In dit voorbeeld zit je een beetje met jezelf te chatten, maar je kan er erg veel mee. Denk aan een zelf-rondrijdende robot, die zijn beslissingen (links, rechts, naar de kroeg) via bluetooth naar je telefoon stuurt, zodat je weet wat het ding denkt.
Ook kun je nu zelf ingrijpen als de robot wat fout doen, en hem laten draaien (of uit de kroeg naar huis laten komen).
Of denk aan een Arduino die af en toe verbinding maakt met je telefoon, en merkt dat je thuis komt en alvast wat lampen aanzet.
Op Instructables staan projecten van garagedeuren, handschoenen, deursloten en talloze andere dingen.
Laat het weten als je wat leuks hebt gemaakt!

Problemen?

Helaas blijkt bluetooth-communicatie redelijk complex te zijn.
Er is een kans dat het bij jou allemaal niet zo vlekkeloos werkt als in deze tutorial staat omschreven.
Geen paniek, de meeste problemen zijn op te lossen.
* Zorg dat de baudrate van de twee serials goed staat. Als je beide op 9600 zet zou het goed moeten gaan.
* In BlueTerm zitten in het menu wat opties over line endings. Hier wat verschillende combinaties proberen kan een verschil maken.
Bij andere problemen (en de oplossingen) hoor ik het graag, zodat het hier te documenteren is.
© 2014 - 2019 NextInOrder.nl