Arduino Nano - BLE

Deze handleiding legt uit hoe u een Arduino Nano gebruikt om het BLE HM-10-module te besturen. We behandelen in detail:

Arduino Nano BLE

Het doel van deze handleiding is:

Het is belangrijk om te weten dat deze handleiding zich richt op Bluetooth Low Energy (BLE, Bluetooth 4.0). Als u informatie zoekt over Classic Bluetooth (Bluetooth 2.0), raadpleeg dan de gelijksoortige tutorial Arduino Nano - Bluetooth.

Hardware Benodigd

1×Official Arduino Nano
1×Alternatief: DIYables ATMEGA328P Nano Development Board
1×USB A naar Mini-B USB kabel
1×HM-10 BLE Bluetooth-Module
1×Jumperdraden
1×(Aanbevolen) Schroefklem Uitbreidingsboard voor Arduino Nano
1×(Aanbevolen) Breakout Uitbreidingsboard voor Arduino Nano
1×(Aanbevolen) Stromsplitter voor Arduino Nano

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 de HM-10 Bluetooth Module

De HM-10 is een seriële BLE-module die fungeert als een omzetter van seriële data naar Bluetooth Low Energy. Hij kan het volgende:

  • Gegevens ontvangen via de seriële RX-pin en deze versturen naar een gekoppeld apparaat, zoals een smartphone, via BLE
  • Gegevens ontvangen via BLE (van het gekoppelde apparaat) en deze doorsturen naar de seriële TX-pin

Wanneer een Arduino Nano wordt gebruikt om te communiceren met een smartphone-app (Android/iOS), verlopen de stappen als volgt:

  • De Arduino Nano is verbonden met de HM-10 Bluetooth module via de seriële/SoftwareSerial-pinnen
  • De HM-10 Bluetooth module wordt gekoppeld aan de smartphone-app
  • Gegevens worden vanaf Arduino Nano naar de smartphone-app verstuurd door ze naar de seriële/SoftwareSerial-verbinding te sturen
  • Gegevens worden vanuit de smartphone-app ontvangen door de Arduino Nano door ze te lezen vanuit de seriële/SoftwareSerial-verbinding
  • Er is geen extra BLE-code nodig op de Arduino Nano

Pinout van de BLE HM-10 Module

BLE pinout

De HM-10 BLE module heeft 6 pinnen:

  • BKR pin: Deze pin wordt gebruikt voor het regelen van het gedrag van de module. Beginners kunnen deze pin negeren.
  • RX pin: Dit is een seriële dataprin, deze moet verbonden worden met de TX pin van de Arduino Nano. Data die via deze pin wordt ontvangen, wordt via Bluetooth verzonden.
  • TX pin: Dit is een seriële dataprin, deze moet verbonden worden met de RX pin van de Arduino Nano. Data die via BLE wordt ontvangen, wordt via deze pin als seriële data verstuurd.
  • GND pin: Dit is de aarde (ground) pin, die verbonden moet worden met de GND van de voedingsbron.
  • VCC pin: Dit is de voedingspin, die verbonden moet worden met 3.3V voedingsspanning.
  • STATE pin: Deze pin geeft de werkstatus van de module aan:
    • Knippert in standby-modus - herhaalt elke 500ms een puls;
    • Aan in verbindingstoestand - hoog niveau.

    ...NOOT

    • Er zijn slechts vier pinnen nodig voor de HM-10, namelijk VCC, GND, RX en TX.
    • Sommige fabrikanten maken de HM-10 met alleen deze vier pinnen.

    ...NOOT

Over de Bluetooth Serial Monitor App

Om de Bluetooth Serial Monitor App te gebruiken, moet u eerst uw Arduino Nano bord verbinden met een HM-10 Bluetooth module. Vervolgens download en installeert u de app op uw smartphone. Tot slot opent u de app en maakt u verbinding met de HM-10 Bluetooth module.

Als deze stappen voltooid zijn, kunt u data verzenden en ontvangen van de Arduino Nano alsof u de Serial Monitor in de Arduino IDE gebruikt, zonder dat u code hoeft aan te passen of Bluetooth-specifieke code hoeft toe te voegen aan uw Arduino Nano programma.

Aansluitschema

Arduino Nano BLE wiring diagram

This image is created using Fritzing. Click to enlarge image

Tabel met verbindingen

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

...NOOT

De Arduino Nano code kan andere pinnen gebruiken door het Seriële object te vervangen door een alternatief zoals Serial1, Serial2, of SoftwareSerial (indien beschikbaar).

...NOOT

Hoe te programmeren voor Bluetooth

Er is geen specifieke Bluetooth-programmering nodig, alleen seriële communicatie-programmering is vereist.

Arduino Nano verstuurt data naar Bluetooth-app op smartphone

Om data te versturen van een Arduino Nano bord naar een Bluetooth-app op een smartphone, kan onderstaande Arduino Nano code worden gebruikt. Dit voorbeeld toont hoe de boodschap “Arduino here, command me!” elke seconde wordt verzonden van de Arduino Nano naar de smartphone-app.

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

Snelstappen

  • Zoek beschikbare apparaten en selecteer de HM-10 module.

Om de code te gebruiken en een verbinding tot stand te brengen tussen een Arduino Nano en een smartphone via BLE, volgt u deze stappen:

  • Download en installeer de Bluetooth Serial Monitor App op uw smartphone.
  • Verbind volgens het aansluitschema de HM-10 Bluetooth module met de Arduino Nano.
  • Open de Arduino IDE, kopieer de meegeleverde code en upload deze naar de Arduino Nano. Als u problemen ondervindt bij het uploaden, koppel dan de TX en RX pinnen los van de Bluetooth module, upload de code, en sluit vervolgens de RX/TX pinnen weer aan.
  • Start de Serial Monitor in de Arduino IDE.
  • Open op uw smartphone de Bluetooth Serial Monitor app en schakel over naar de BLE-modus.
  • Zoek naar beschikbare apparaten en selecteer de HM-10 module.
Bluetooth Serial Monitor App
  • Maak verbinding tussen de smartphone en de HM-10 Bluetooth module.
Bluetooth Serial Monitor pairing
  • Bekijk het resultaat op de Android app.
Bluetooth Serial Monitor App
  • Bekijk de output 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!
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Als u deze stappen volgt en de code uitvoert, zal de data die op de Serial Monitor van de Arduino IDE en op de Android-app verschijnt identiek zijn.

Bluetooth App verstuurt data naar Arduino Nano

De onderstaande code voert het volgende uit:

  • Data versturen van de Bluetooth-app naar het Arduino Nano bord
  • Het Arduino Nano bord leest de binnenkomende data en stuurt vervolgens een reactie terug naar het Bluetooth-apparaat.
/* * Deze Arduino Nano code is ontwikkeld door newbiely.nl * Deze Arduino Nano code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino-nano/arduino-nano-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); }

Snelstappen

Hieronder staan de stappen om deze code te gebruiken met Arduino Nano en een Android app:

  • Start de Arduino IDE en kopieer de bijgeleverde code.
  • Klik op de Upload-knop om de code naar het Arduino Nano bord te sturen.
  • Open de Serial Monitor in de Arduino IDE.
  • Start de Android app en koppel deze met de HM-10 Bluetooth module volgens de instructies uit het vorige voorbeeld.
  • Typ na het verbinden “LED ON” of “LED OFF” in de Android app en druk op de “SEND”-knop.
Bluetooth Serial Monitor App
  • Het Arduino Nano bord ontvangt de data en print een reactie naar de seriële poort. Daarna wordt deze data naar de Bluetooth app gezonden. Het resultaat kunt u op de Android app bekijken.
Bluetooth Serial Monitor App
  • Bekijk de output 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  

Nadat u de bovenstaande stappen hebt uitgevoerd, zult u zien dat de data die op de Serial Monitor van de Arduino IDE en in de Android app wordt weergegeven, overeenkomen.

Arduino Nano Code – LED bedienen met smartphone app via BLE

De volgende voorbeeldcode voor Arduino Nano gebruikt de commando’s “ON” en “OFF” die via de Bluetooth Serial Monitor app worden ontvangen om een geïntegreerde LED aan en uit te zetten.

/* * Deze Arduino Nano code is ontwikkeld door newbiely.nl * Deze Arduino Nano code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino-nano/arduino-nano-ble */ #include <SoftwareSerial.h> #define SOFT_RX 4 // The Arduino Nano pin connected to the TX of the bluetooth module #define SOFT_TX 5 // The Arduino Nano pin connected to the RX of the bluetooth module #define LED_PIN 12 // The Arduino Nano pin connected to the LED SoftwareSerial bluetooth(SOFT_RX, SOFT_TX); void setup() { Serial.begin(9600); bluetooth.begin(9600); pinMode(LED_PIN, OUTPUT); // set the digital pin as output: } void loop() { if (bluetooth.available()) { // if there is data comming String command = bluetooth.readStringUntil('\n'); // read string until meet newline character if (command == "LED OFF") { digitalWrite(LED_PIN, LOW); // turn off LED bluetooth.println("LED is turned OFF"); // reports action to smartphone app } else if (command == "LED ON") { digitalWrite(LED_PIN, HIGH); // turn on LED bluetooth.println("LED is turned ON"); // reports action to smartphone app } } }

Meer informatie over deze instructies vindt u in de tutorial Arduino Nano controls LED via Bluetooth/BLE. Voor een uitgebreidere uitleg raadpleeg de tutorial Arduino Nano controls LED via Bluetooth/BLE.

Arduino Nano Code – Servomotor bedienen met smartphone app via BLE

  1. De onderstaande Arduino Nano code ontvangt een hoekwaarde van de Bluetooth Serial Monitor App.
  2. Met deze hoekwaarde wordt vervolgens de hoek van een servomotor geregeld.
/* * Deze Arduino Nano code is ontwikkeld door newbiely.nl * Deze Arduino Nano code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino-nano/arduino-nano-ble */ #include <Servo.h> #include <SoftwareSerial.h> #define SOFT_RX 4 // The Arduino Nano pin connected to the TX of the bluetooth module #define SOFT_TX 5 // The Arduino Nano pin connected to the RX of the bluetooth module #define SERVO_PIN 12 // The Arduino Nano pin connected to the servo motor SoftwareSerial bluetooth(SOFT_RX, SOFT_TX); Servo servo; // create servo object to control a servo int pos = 0; // variable to store the servo position void setup() { Serial.begin(9600); bluetooth.begin(9600); servo.attach(SERVO_PIN); } void loop() { if (bluetooth.available()) { // if there is data comming int angle = bluetooth.parseInt(); if (angle >= 0 && angle <= 180) { servo.write(angle); // rotate servo bluetooth.print("Rotated servo to angle: ");// reports action to smartphone app bluetooth.println(angle); } else { bluetooth.print("Invalid angle: ");// reports invalid value to smartphone app bluetooth.println(angle); } } }

Een gedetailleerdere uitleg vindt u in de tutorial Arduino Nano controls Servo Motor via Bluetooth/BLE. Voor een nadere toelichting zie de tutorial Arduino Nano controls Servo Motor via Bluetooth/BLE.

Als u de Bluetooth Serial Monitor app nuttig vindt, geef deze dan alstublieft 5 sterren in de Play Store. Uw waardering wordt zeer op prijs gesteld!

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.

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!