Arduino - BLE

In deze handleiding leert u:

Arduino BLE

De reikwijdte van deze handleiding:

Het is belangrijk om te vermelden dat deze handleiding specifiek Bluetooth Low Energy (BLE, Bluetooth 4.0) behandelt. Als u op zoek bent naar informatie over Classic Bluetooth (Bluetooth 2.0), raadpleeg dan een vergelijkbare tutorial Arduino - Bluetooth.

Hardware Benodigd

1×Arduino UNO of Genuino UNO
1×USB 2.0 kabel type A/B
1×HM-10 BLE Bluetooth-Module
1×Jumperkabels
1×(Aanbevolen) Schroefklem Block Shield voor Arduino Uno
1×(Aanbevolen) Breadboard-Shield voor Arduino Uno
1×(Aanbevolen) Behuizing voor Arduino Uno
1×(Aanbevolen) Prototyping Basisplaat & Breadboard Kit voor Arduino Uno

Of u kunt de volgende kits kopen:

1×DIYables Sensorkit (30 sensoren/displays)
1×DIYables Sensorkit (18 sensoren/displays)
Openbaarmaking: Sommige van de links in deze sectie zijn Amazon-affiliate links. We kunnen een commissie ontvangen voor aankopen die via deze links worden gedaan, zonder extra kosten voor u. We waarderen uw steun.

Over HM-10 Bluetooth Module

De HM-10 is een Serial BLE-module die functioneert als een Serial naar Bluetooth Low Energy converter. Het voert de volgende acties uit:

  • Ontvangt data via de Serial RX-pin en verzendt deze via BLE naar een gekoppeld apparaat zoals een smartphone
  • Ontvangt data van BLE (van het gekoppelde apparaat) en stuurt deze naar de Serial TX-pin.

Meer specifiek, bij gebruik van een Arduino om te communiceren met een smartphone-app (Android/iOS), gebeurt het volgende:

  • De Arduino verbindt met de HM-10 Bluetooth module via de Serial/SoftwareSerial pins
  • De HM-10 Bluetooth module wordt gekoppeld aan een smartphone-app
  • De Arduino verzendt data naar de smartphone-app door deze naar de Serial/SoftwareSerial te sturen
  • De Arduino ontvangt data van de smartphone-app door deze vanaf de Serial/SoftwareSerial te lezen
  • Er is geen extra BLE-code nodig op de Arduino.

Pinout

BLE Pinout

De HM-10 BLE Module heeft 6 pins:

  • BKR-pin: voor het aansturen van het gedrag van de module. Negeer deze pin als u beginner bent.
  • RX-pin: seriële datapin, verbind deze met de TX-pin van de Arduino. Data die via deze pin wordt ontvangen, wordt via Bluetooth verzonden.
  • TX-pin: seriële datapin, verbind deze met de RX-pin van de Arduino. Data die via BLE wordt ontvangen, wordt via deze pin als seriële data verstuurd.
  • GND-pin: voedingspin, verbind deze met de GND van de voedingsbron.
  • VCC-pin: voedingspin, verbind deze met 3.3V van de voeding
  • STATE-pin: geeft de werkstatus aan:
    • Knippert in standby modus - herhaalde pulsen van 500ms;
    • Aan in verbindingsstatus - high-level.

    ※ Notiz:

    • We gebruiken slechts 4 pins: VCC, GND, RX, TX
    • Sommige fabrikanten leveren de HM-10 met slechts vier pins.

Over Bluetooth Serial Monitor App

De Bluetooth Serial Monitor app is een mobiele applicatie die het uiterlijk van de Serial Monitor in de Arduino IDE nabootst. Het maakt communicatie met een Arduino bord via Bluetooth mogelijk zonder extra code in de Arduino sketch. Volg de volgende stappen om het te gebruiken:

  • Verbind de Arduino met een HM-10 Bluetooth module
  • Download en installeer de Bluetooth Serial Monitor App op uw smartphone
  • Open de app en verbind deze met de HM-10 Bluetooth module

Met deze stappen voltooid, kunt u nu data verzenden en ontvangen van Arduino alsof u de Serial Monitor in Arduino IDE gebruikt, zonder uw bestaande Arduino code te wijzigen of Bluetooth-specifieke code toe te voegen.

Aansluitschema

Arduino BLE Aansluitschema

This image is created using Fritzing. Click to enlarge image

De aansluit-tabel

Arduino Pins HM-10 Bluetooth Pins
RX (Pin 0) TX
TX (Pin 1) RX
5V VCC
GND GND
BKR (NIET aangesloten)
STATE (NIET aangesloten)

※ Notiz:

De Arduino code kan andere pins gebruiken door het Serial object te vervangen door een alternatief zoals Serial1, Serial2 of SoftwareSerial (indien beschikbaar).

Hoe te programmeren voor Bluetooth

Er is geen speciale Bluetooth-code nodig, alleen seriële code is vereist.

Arduino stuurt data naar Bluetooth App op smartphone

Om data te verzenden van een Arduino bord naar een Bluetooth app op een smartphone kan onderstaande Arduino code gebruikt worden. Dit voorbeeld laat zien hoe het bericht “Arduino here, command me!” elke seconde wordt verzonden van Arduino naar de smartphone app.

/* * Deze Arduino code is ontwikkeld door newbiely.nl * Deze Arduino code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino/arduino-ble */ void setup() { Serial.begin(9600); } void loop() { Serial.println("Arduino here, command me!"); delay(1000); }

Snelle Stappen

Volg deze stappen om de code te gebruiken en een Arduino bord te verbinden met een smartphone via BLE:

  • Installeer de Bluetooth Serial Monitor App op uw smartphone.
  • Verbind de HM-10 Bluetooth module met het Arduino bord volgens het aansluitschema.
  • Open de Arduino IDE, kopieer de bovenstaande code en upload deze naar het Arduino bord. Lukt het uploaden niet, dan kunt u de TX en RX pins van de Bluetooth module loskoppelen, uploaden en daarna de RX/TX pins weer aansluiten.
  • Open de Serial Monitor in Arduino IDE.
  • Open op uw smartphone de Bluetooth Serial Monitor App en kies de BLE modus.
Bluetooth Serial Monitor App
  • Koppel de smartphone met de HM-10 Bluetooth module.
Bluetooth Serial Monitor pairing
  • Observeer het resultaat op de Android App.
Bluetooth Serial Monitor App
  • Bekijk het resultaat in de Serial Monitor van Arduino IDE.
COM6
Send
Arduino here, command me! Arduino here, command me! Arduino here, command me! Arduino here, command me! Arduino here, command me!
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Als u de stappen volgt en de code uitvoert, ziet u dat de data weergegeven in de Serial Monitor van Arduino IDE en op de Android app overeenkomen.

Bluetooth App stuurt data naar Arduino

De onderstaande code voert de volgende acties uit:

  • Stuurt data van de Bluetooth app naar het Arduino bord
  • Het Arduino bord leest de binnenkomende data en stuurt een respons terug naar het Bluetooth apparaat.
/* * Deze Arduino code is ontwikkeld door newbiely.nl * Deze Arduino code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino/arduino-ble */ // NOTE: change the Serial to other Serial/Software Serial if you connects Bluetooth module to other pins void setup() { Serial.begin(9600); } void loop() { Serial.println(F("Arduino here, command me!")); if (Serial.available()) { // if there is data comming String command = Serial.readStringUntil('\n'); // read string until meet newline character if (command == "LED OFF") { Serial.println("LED is turned OFF"); // reports action to smartphone app // TODO: control your LED here } else if (command == "LED ON") { Serial.println("LED is turned ON"); // reports action to smartphone app // TODO: control your LED here } } delay(500); }

Snelle Stappen

Volg de onderstaande stappen om de code te gebruiken met Arduino en een Android app:

  • Open de Arduino IDE en plak de bovenstaande code.
  • Klik op de Upload knop om de code naar het Arduino bord te uploaden.
  • Open de Serial Monitor in de Arduino IDE.
  • Open de Android app en koppel deze met de HM-10 Bluetooth module zoals eerder beschreven.
  • Zodra verbonden, typ "LED ON" of "LED OFF" in de Android app en druk op de "SEND" knop.
Bluetooth Serial Monitor App
  • Het Arduino bord ontvangt de data, print een respons naar de seriële poort. Deze data wordt naar de Bluetooth app verzonden.
  • Controleer het resultaat op de Android app.
Bluetooth Serial Monitor App
  • Controleer het resultaat in de Serial Monitor van de Arduino IDE.
COM6
Send
Arduino here, command me! Arduino here, command me! Arduino here, command me! Arduino here, command me! Arduino here, command me! Arduino here, command me! LED ON LED is turned ON Arduino here, command me! Arduino here, command me! Arduino here, command me! LED OFF LED is turned OFF Arduino here, command me! Arduino here, command me!
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Na het voltooien van bovenstaande stappen zult u merken dat de getoonde informatie in de Serial Monitor van Arduino IDE en op de Android app hetzelfde is.

Arduino Code - LED besturen via smartphone App via BLE

De volgende Arduino voorbeeldcode gebruikt de commando’s “ON” en “OFF” ontvangen via de Bluetooth Serial Monitor App om een ingebouwde LED aan of uit te zetten.

/* * Deze Arduino code is ontwikkeld door newbiely.nl * Deze Arduino code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino/arduino-ble */ // NOTE: change the Serial to other Serial/Software Serial if you connects Bluetooth module to other pins #define LED_PIN 8 void setup() { Serial.begin(9600); pinMode(LED_PIN, OUTPUT); // set the digital pin as output: } void loop() { if (Serial.available()) { // if there is data comming String command = Serial.readStringUntil('\n'); // read string until meet newline character if (command == "OFF") { digitalWrite(LED_PIN, LOW); // turn off LED Serial.println("LED is turned OFF"); // reports action to smartphone app } else if (command == "ON") { digitalWrite(LED_PIN, HIGH); // turn on LED Serial.println("LED is turned ON"); // reports action to smartphone app } } }

De instructies vindt u gedetailleerd in de tutorial Arduino bestuurt LED via Bluetooth/BLE.

Arduino Code - Servo motor besturen via smartphone App via BLE

De volgende Arduino code ontvangt een hoekwaarde van de Bluetooth Serial Monitor App om de hoek van een servo motor te regelen.

/* * Deze Arduino code is ontwikkeld door newbiely.nl * Deze Arduino code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino/arduino-ble */ // NOTE: change the Serial to other Serial/Software Serial if you connects Bluetooth module to other pins #include <Servo.h> Servo servo; // create servo object to control a servo int pos = 0; // variable to store the servo position void setup() { Serial.begin(9600); servo.attach(11); // attaches the servo on pin 11 to the servo object } void loop() { if (Serial.available()) { // if there is data comming int angle = Serial.parseInt(); if (angle >= 0 && angle <= 180) { servo.write(angle); // rotate servo Serial.print("Rotated servo to angle: ");// reports action to smartphone app Serial.println(angle); } else { Serial.print("Invalid angle: ");// reports invalid value to smartphone app Serial.println(angle); } } }

Meer details over deze instructies vindt u in Arduino bestuurt Servo Motor via Bluetooth/BLE.

Als de Bluetooth Serial Monitor app nuttig voor u is, geef dan alstublieft een 5-sterren waardering op de Play Store. Dank u!

Video Tutorial

We overwegen het maken van videotutorials. Als u videotutorials belangrijk vindt, abonneer u dan op ons YouTube-kanaal om ons te motiveren de video's te maken.

Bekijk onze video-tutorial voor een visuele begeleiding bij dit project! De video biedt extra inzichten en maakt het starten met Bluetooth Low Energy op Arduino nog makkelijker.

Functiereferenties

※ ONZE BERICHTEN

  • U bent welkom om de link naar deze tutorial te delen. Gebruik onze inhoud echter niet op andere websites. We hebben veel moeite en tijd gestoken in het maken van de inhoud, respecteer alstublieft ons werk!