Raspberry Pi - Bluetooth

Deze tutorial legt uit hoe u de Raspberry Pi gebruikt om een Bluetooth HC-05 Module aan te sturen. We zullen in detail leren:

Raspberry Pi Bluetooth

Doel van deze tutorial:

Deze tutorial gaat over het gebruik van Classic Bluetooth (Bluetooth 2.0). Als u op zoek bent naar Bluetooth Low Energy - BLE (Bluetooth 4.0), verwijzen wij u naar deze vergelijkbare tutorial: Raspberry Pi - Bluetooth Low Energy

Hardware Benodigd

1×Raspberry Pi 5
1×HC-05 Bluetooth-Module
1×Jumper Wire set
1×(Aanbevolen) Schroefklem Block Shield voor Raspberry Pi
1×(Aanbevolen) Raspberry Pi Prototyping Basisplaat & Breadboard Kit
1×(Aanbevolen) HDMI-Touchscreen-Monitor voor Raspberry Pi

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 HC-05 Bluetooth Module

HC-05 is een seriële Bluetooth module die functioneert als een Serial to Bluetooth Converter. Het kan:

  • Data ontvangen van de serial RX pin en deze verzenden naar het gekoppelde apparaat (bijvoorbeeld een smartphone) via Bluetooth
  • Data ontvangen via Bluetooth (van het gekoppelde apparaat) en deze doorsturen naar de serial TX pin

Specifiek voor communicatie tussen Raspberry Pi en een smartphone-app (Android/iOS):

  • De Raspberry Pi is aangesloten op een HC-05 Bluetooth Module via de serial pinnen.
  • De HC-05 Bluetooth Module is gekoppeld met de smartphone-app.
  • Raspberry Pi stuurt data naar de smartphone-app door het simpelweg naar de serial poort te verzenden.
  • Raspberry Pi ontvangt data van de smartphone-app door het gewoon van de serial poort te lezen.
  • Er is geen speciale Bluetooth code nodig op de Raspberry Pi zelf.

De Bluetooth HC-05 Module Pinout

Bluetooth pinout

De HC-05 Bluetooth Module heeft 6 pinnen:

  • Enable/Key pin: Deze pin wordt gebruikt om te schakelen tussen Data Mode (laag/LOW) en Command Mode (hoog/HIGH). Als deze niet is aangesloten, staat de module standaard in Data Mode.
  • VCC pin: voedingspin, deze moet worden verbonden met +5V van de voedingsbron.
  • GND pin: aardingspin, deze moet worden verbonden met GND van de voeding.
  • TX pin: seriële datapin, deze moet worden verbonden met de RX pin van de Raspberry Pi. De via Bluetooth ontvangen data wordt via deze pin als seriële data verzonden.
  • RX pin: seriële datapin, deze moet worden verbonden met de TX pin van de Raspberry Pi. Data die via deze pin wordt ontvangen wordt verstuurd naar Bluetooth.
  • State pin: deze pin is verbonden met de onboard LED en kan gebruikt worden als feedback om te bepalen of Bluetooth correct functioneert.

Voor de basiswerking zijn alleen 4 pinnen van de HC-05 Bluetooth Module vereist om met Raspberry Pi verbonden te worden.

De HC-05 Bluetooth Module bevat daarnaast twee ingebouwde componenten:

  • Een LED: die de status van de module aangeeft
    • Eén keer per twee seconden knipperen: de module is in Command Mode
    • Herhaald knipperen: de module wacht op verbinding in Data Mode
    • Twee keer per seconde knipperen: succesvolle verbinding in Data Mode
  • Een knop: wordt gebruikt om de Key/Enable pin te bedienen voor het selecteren van de modus (Data of Command Mode)

Hoe Het Werkt

De HC-05 Bluetooth module heeft twee bedrijfsmodi:

  • Data Mode: voor het uitwisselen van data met het gekoppelde apparaat
  • Command Mode: voor het configureren van parameters

Gelukkig werkt de HC-05 Bluetooth module standaard klaar voor gebruik met Raspberry Pi, zonder extra configuratie.

HC-05 Standaardinstellingen

Standaard Bluetooth Naam “HC-05”
Standaard Wachtwoord 1234 of 0000
Standaard Communicatie Slave
Standaard Modus Data Mode
Standaard Baudrate Data Mode 9600, 8, N, 1
Standaard Baudrate Command Mode 38400, 8, N, 1

Over de Bluetooth Serial Monitor App

De Bluetooth Serial Monitor App maakt communicatie met Raspberry Pi mogelijk via Bluetooth zonder dat u extra code hoeft te schrijven voor de Bluetooth module in de Raspberry Pi-code. Volg hiervoor de volgende stappen:

  • Verbind Raspberry Pi met de HC-05 Bluetooth module
  • Installeer de Bluetooth Serial Monitor App op uw smartphone
  • Open de app en koppel deze met de HC-05 Bluetooth module

Nu kunt u data verzenden en ontvangen vanaf de Raspberry Pi.

Aansluitschema

Raspberry Pi Bluetooth wiring diagram

This image is created using Fritzing. Click to enlarge image

Tabel met aansluitingen. Bedradingsschema. Overzicht van verbindingen

Raspberry Pi Pins HC-05 Bluetooth Pins
RX (GPIO15) TX
TX (GPIO14) RX
5V VCC
GND GND
Enable/Key (NIET aangesloten)
State (NIET aangesloten)

Raspberry Pi stuurt data naar Bluetooth App op smartphone

Om data vanuit Raspberry Pi naar een Bluetooth App op een smartphone te verzenden, moet de volgende code worden gebruikt op de Raspberry Pi:

In dit voorbeeld zal de Raspberry Pi elke seconde de tekst “Raspberry Pi here, command me!” sturen naar de Bluetooth App op de smartphone.

Snelle stappen

  • Zorg dat u Raspbian of een ander compatibel besturingssysteem op uw Raspberry Pi heeft geïnstalleerd.
  • Zorg dat uw Raspberry Pi is verbonden met hetzelfde lokale netwerk als uw pc.
  • Zorg dat uw Raspberry Pi internettoegang heeft indien u libraries moet installeren.
  • Bent u nieuw met de Raspberry Pi? Raadpleeg dan eerst onze Raspberry Pi aan de slag gids
  • Verbind uw pc met de Raspberry Pi via SSH, bijvoorbeeld met de ingebouwde SSH-client op Linux/macOS of PuTTY op Windows. Zie onze handleiding hoe u uw pc met Raspberry Pi verbindt via SSH.
  • Zorg dat de RPi.GPIO library is geïnstalleerd. Is dit niet het geval, installeer deze dan met:
sudo apt-get update sudo apt-get install python3-rpi.gpio
pip install pyserial
  • Maak een Python scriptbestand aan met de naam bluetooth_send.py en voeg onderstaande code toe:
# Deze Raspberry Pi code is ontwikkeld door newbiely.nl # Deze Raspberry Pi code wordt zonder enige beperking aan het publiek beschikbaar gesteld. # Voor volledige instructies en schema's, bezoek: # https://newbiely.nl/tutorials/raspberry-pi/raspberry-pi-bluetooth import serial from time import sleep # Define serial port for communication bluetooth = serial.Serial('/dev/ttyS0', baudrate=9600, timeout=1) # Main program try: while True: bluetooth.write(b"Raspberry Pi here, command me!\n") sleep(1) except KeyboardInterrupt: pass finally: bluetooth.close()
  • Sla het bestand op en start het script door de volgende opdracht in de terminal uit te voeren:
python3 bluetooth_send.py

Het script draait in een oneindige lus totdat u Ctrl + C in de terminal indrukt.

  • Installeer de Bluetooth Serial Monitor App op uw smartphone.
  • Sluit de HC-05 Bluetooth module aan op de Raspberry Pi volgens het bedradingsschema.
  • Open de Bluetooth Serial Monitor App op uw smartphone en selecteer de Classic Bluetooth modus.
Bluetooth Serial Monitor App
  • Verbind de app met de HC-05 Bluetooth module.
Bluetooth Serial Monitor pairing
  • Bekijk het resultaat in de Android App.
Bluetooth Serial Monitor App
  • Bekijk de output in de Terminal.
PuTTY - Raspberry Pi
Raspberry Pi here, command me! Raspberry Pi here, command me! Raspberry Pi here, command me! Raspberry Pi here, command me! Raspberry Pi here, command me!

Bluetooth App verstuurt data naar Raspberry Pi

De volgende code:

  • Maakt het mogelijk dat een Bluetooth app data kan versturen naar een Raspberry Pi
  • Maakt het mogelijk dat de Raspberry Pi deze data leest en een antwoord terugstuurt naar de Bluetooth app

Snelle stappen

  • Maak een Python scriptbestand aan met de naam bluetooth_send_receive.py en voeg de volgende code toe:
# Deze Raspberry Pi code is ontwikkeld door newbiely.nl # Deze Raspberry Pi code wordt zonder enige beperking aan het publiek beschikbaar gesteld. # Voor volledige instructies en schema's, bezoek: # https://newbiely.nl/tutorials/raspberry-pi/raspberry-pi-bluetooth import serial from time import sleep # Define serial port for Bluetooth communication bluetooth = serial.Serial('/dev/ttyS0', baudrate=9600, timeout=1) # Main program try: bluetooth.flushInput() # Clear any existing data in the input buffer while True: bluetooth.write(b"Raspberry Pi here, command me!\n") if bluetooth.inWaiting() > 0: command = bluetooth.readline().decode('utf-8').strip() # Read until newline character if command == "LED OFF": print("LED is turned OFF") # Report action to console # TODO: Control your LED here elif command == "LED ON": print("LED is turned ON") # Report action to console # TODO: Control your LED here # Add a delay to avoid excessive looping sleep(0.5) except KeyboardInterrupt: pass finally: bluetooth.close()
  • Sla het bestand op en start het script door de volgende opdracht in de terminal uit te voeren:
python3 bluetooth_send_receive.py
  • Verbind de Android App met de HC-05 Bluetooth module zoals eerder beschreven.
  • Zodra verbonden, typ in de Android App “LED ON” of “LED OFF” en druk op de knop “SEND”.
Bluetooth Serial Monitor App
  • Raspberry Pi ontvangt de data en toont een reactie op de seriële poort.
  • Deze reactie wordt vervolgens naar de Bluetooth app teruggestuurd.
  • Het resultaat is zichtbaar in de Android App.
Bluetooth Serial Monitor App
  • Bekijk de output in de Terminal.
PuTTY - Raspberry Pi
Raspberry Pi here, command me! Raspberry Pi here, command me! Raspberry Pi here, command me! Raspberry Pi here, command me! Raspberry Pi here, command me! Raspberry Pi here, command me! LED ON LED is turned ON Raspberry Pi here, command me! Raspberry Pi here, command me! Raspberry Pi here, command me! LED OFF LED is turned OFF Raspberry Pi here, command me! Raspberry Pi here, command me!

U zult zien dat de informatie die op de Android App wordt weergegeven identiek is.

Raspberry Pi Code - LED bedienen via smartphone App via Bluetooth

Raadpleeg de tutorial Raspberry Pi bestuurt LED via Bluetooth.

Raspberry Pi Code - Servomotor bedienen via smartphone App via Bluetooth

Raadpleeg de tutorial Raspberry Pi bestuurt servomotor via Bluetooth.

※ 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!