Steun onze actie WeGoSTEM

Voor onze actie WeGoSTEM zoeken we nog vrijwilligers. Doe mee via WeGoSTEM.be/meedoen

Communicatie via Bluetooth

In deze tutorial leer je hoe je draadloos kan communiceren met het Dwenguino-bord via de Dwengo-bluetooth-module. Na deze tutorial zal je draadloze communicatie kunnen gebruiken in al jouw projecten.

Erkenning: deze tutorial is gebaseerd op een gelijkaardige tutorial van Dawn Robotics.


Benodigdheden

  1. Een Dwenguino-bord
  2. De bijgeleverde USB-kabel
  3. Een Dwengo-bluetooth-module
  4. Een computer met bluetooth-communicatie

De bluetooth-module aansluiten

Het is erg gemakkelijk om draadloos met het Dwenguino-bord te communiceren. We gebruiken de Dwengo-bluetooth-module die werkt via een seriële aansluiting. Allereerst sluit je de bluetooth-module aan op het Dwenguino-bord. Deze bluetooth-module heeft 4 pinnen: twee voor de voeding (grond en 5 V) en twee voor de seriële communicatie (1 voor het zenden (TXD) en 1 voor het ontvangen van gegevens (RXD) ). Zie onderstaande figuur:

bluetooth pins

Verbind deze module met de UART-connector op het bord (zie het overzicht van het Dwenguinobord) en zorg ervoor dat de RXD-pin van de module overeenkomt met de TXD-pin van de UART-connector.

Getallen optellen via bluetooth

We gaan het Dwenguino-bord gebruiken om twee getallen op te tellen die door de PC worden doorgestuurd. Eerst declareren we ons variabelen en objecten. Daarna bereiden we het bord voor met de "setup"-functie.

  1. #include <LiquidCrystal.h>
  2. #include <Wire.h>
  3. #include <Dwenguino.h>
  4.  
  5. void setup()
  6. {
  7. initDwenguino();
  8. Serial1.begin(9600); // Serial1 oepn communication with the Bluetooth module
  9. // at 9600 baud rate.
  10.  
  11. // Write the messages to show to the user.
  12. dwenguinoLCD.setCursor(0,0);
  13. dwenguinoLCD.print("Input: ");
  14. dwenguinoLCD.setCursor(0,1);
  15. dwenguinoLCD.print("Sum: ");
  16. }

We initialiseren de communicatie met de klasse Serial1 (let op de "1" na "Serial", als je dit getal niet gebruikt dan gaat de data over de USB-kabel en niet over de bluetooth-module).

We initialiseren ook het LCB-scherm zodat we het resultaat op het bord kunnen zien. We schrijven ook twee titels zodat het resultaat gemakkelijk en duidelijk leesbaar is. Op de eerste rij van het LCD-scherm schrijven we de inputs en op de tweede rij schrijven we de som van beide.

Vervolgens schrijven we de "loop" functie die voortdurend zal blijven lopen.

  1. void loop()
  2. {
  3. // Listen for data on the serial connection
  4. if ( Serial1.available() > 0 )
  5. {
  6. // Read in 2 real numbers
  7. float a = Serial1.parseFloat();
  8. float b = Serial1.parseFloat();
  9. // Print them to the screen after "Input"
  10. dwenguinoLCD.setCursor(6,0);
  11. dwenguinoLCD.print(a);
  12. dwenguinoLCD.print("+");
  13. dwenguinoLCD.print(b);
  14.  
  15. // Add them together and return the result
  16. float sum = a + b;
  17. Serial1.println( sum );
  18. // Print the result to the LCD after "Sum"
  19. dwenguinoLCD.setCursor(5,1);
  20. dwenguinoLCD.print(sum);
  21. }
  22. }

De "if" conditie controleert of er data is aan de seriële poort met de functie ilable](http://arduino.cc/en/Serial/available). Wanneer er data beschikbaar is in de poort, dan lezen we die als twee opeenvolgende reële getallen met de functie parseFloat. De resultaten worden opgeslagen in de variabelen a en b. Meteen nadat we de waarden gelezen hebben, schrijven we ze naar het LCD-scherm.

De volgende stappen berekenen de "som" van "a" en "b" en sturen we het resultaat over de seriële poort en schrijven de som op het LCD-scherm. Om de som over de seriële poort te versturen gebruiken we de functie println die data als gewoon leesbare ASCII-tekst doorstuurt gevolgd door een return-karakter.

En we zijn klaar! We moeten enkel nog de data vanuit de PC naar het bord doorsturen. Voor die laatste stap gebruiken we de Serial monitor die is ingebouwd in de Arduino IDE.

Je vindt de code als Arduino-schets bij de Dwenguino-voorbeelden in Arduino IDE.

Data doorsturen vanuit jouw computer

De bluetooth-apparaten koppelen

Linux

Als jouw PC bluetooth heeft, dan kan je onderstaand commando starten in de terminal.

hciconfig

Het zou iets als 'hci0' moeten zijn.

Zorg ervoor dat het Dwenguino-bord aan staat en dat de Dwengo-bluetooth-module correct is aangesloten. Vervolgens start je onderstaand commando om het adres van de bluetooth-module op te zoeken.

hcitool scan

Even later geeft dit commando het adres van de bluetooth-apparaten in de buurt. De Dwengo-bluetooth-module heeft een naam als linvor.

Voor bluetooth-apparaten kunnen communiceren, moeten ze eerst aan elkaar gekoppeld worden. Dit kan via onderstaand commando.

sudo bluez-simple-agent hci<n> xx:xx:xx:xx:xx:xx

waarin het nummer is van jouw apparaat (wellicht hci0) en xx:xx:xx:xx:xx:xx het adres van de Dwengo-bluetooth-module. Na een pauze zal het programma jou vragen naar de pin-code van de Dwengo-bluetooth-module. Standaard is die pin-code 1234.

Nu hebben we twee bluetooth-apparaten die met elkaar kunnen communiceren. Daarop kunnen we de verbinding opzetten en kunnen we data doorsturen. Start onderstaand commando.

rfcomm connect 0  xx:xx:xx:xx:xx:xx

Dit commando zal je vertellen welk apparaat verbonden is met het communicatie-kanaal (bijvoorbeeld /dev/rfcomm0).

Mac OS X

Schakel jouw bluetooth aan en zorg ervoor dat je het nieuwe apparaat vindt en koppelt via Open Bluetooth Preferences. Daarna zou je de bluetooth-module moeten kunnen vinden.

Windows

Serial Monitor

Van zodra je de apparaten gekoppeld hebt, zorg je ervoor dat de overeenstemmende poort geselecteerd is in Arduino IDE (Tools > Port). Bijvoorbeeld op mijn Linux-machine is het bluetooth-module apparaat /dev/rfcomm0. In Windows zal dit PortX met X het nummer van jouw gekoppelde Dwenguino.

arduino IDE Ports

Nu ben je klaar om de Serial Monitor op te starten.

arduino IDE serial monitor