- Vereiste pakketten voor Bluetooth-communicatie installeren:
- Apparaten koppelen met Raspberry Pi via Bluetooth:
- Schakelschema:
- AC-apparaat bedienen met Android App BlueTerm:
- Programmering Toelichting:
Raspberry Pi is erg populair voor IoT-projecten vanwege het naadloze vermogen van draadloze communicatie via internet. Raspberry Pi 3 heeft ingebouwde Wi-Fi en Bluetooth, en Bluetooth is een zeer populair protocol voor draadloze communicatie. Dus vandaag gaan we huishoudelijke apparaten bedienen via Smart Phone met Raspberry Pi 3 en Bluetooth.
Hier gebruiken we Raspberry Pi 3 met ingebouwde Bluetooth, dus we hoeven geen externe USB Bluetooth-dongle te gebruiken. Daarnaast hebben we alleen relaismodules nodig voor dit Wireless Home Automation Project. Hier gebruiken we het RFCOMM Bluetooth-protocol voor draadloze communicatie.
Programmering voor Bluetooth in Python volgt het programmeermodel van de socket en de communicatie tussen de Bluetooth-apparaten verloopt via de RFCOMM-aansluiting. RFCOMM (Radio Frequency Communication) is een Bluetooth-protocol dat voorziet in geëmuleerde RS-232 seriële poorten en wordt ook wel seriële poortemulatie genoemd. Het Bluetooth-seriële poortprofiel is gebaseerd op dit protocol. RFCOMM is erg populair in Bluetooth-toepassingen vanwege de brede ondersteuning en openbaar beschikbare API. Het is gebonden aan het L2CAP-protocol.
Als je Raspberry Pi 2 hebt, moet je ofwel een externe Bluetooth-dongle of Bluetooth-module HC-06 gebruiken. Bekijk onze vorige projecten voor het gebruik van deze externe Bluetooth-apparaten: Raspberry Pi GPIO bedienen met Android-app via Bluetooth en spraakgestuurde LED's met Raspberry Pi. Bekijk ook onze eerdere Raspberry Pi-projecten samen met enkele goede IoT-projecten.
Vereiste pakketten voor Bluetooth-communicatie installeren:
Voordat we beginnen, moeten we wat software installeren voor het instellen van Bluetooth-communicatie in Raspberry Pi. Je zou een Raspbian Jessie-geheugenkaart moeten hebben die klaar is voor de Raspberry Pi. Bekijk dit artikel om het Raspbian-besturingssysteem te installeren en aan de slag te gaan met Raspberry Pi. Dus nu moeten we eerst de Raspbian bijwerken met behulp van onderstaande opdrachten:
sudo apt-get update sudo apt-get upgrade
Dan moeten we enkele Bluetooth-gerelateerde pakketten installeren:
sudo apt-get installeer bluetooth blueman bluez
Start vervolgens de Raspberry Pi opnieuw op:
sudo opnieuw opstarten
BlueZ is een open source-project en een officiële Linux Bluetooth-protocolstack. Het ondersteunt alle Bluetooth-kernprotocollen en wordt nu onderdeel van de officiële Linux Kernel.
Blueman biedt de desktopinterface om de Bluetooth-apparaten te beheren en te bedienen.
Ten slotte hebben we Python Library nodig voor Bluetooth-communicatie, zodat we gegevens kunnen verzenden en ontvangen via RFCOMM met behulp van Python-taal:
sudo apt-get install python-bluetooth
Installeer ook de GPIO-ondersteuningsbibliotheken voor Raspberry Pi:
sudo apt-get install python-rpi.gpio
Nu zijn we klaar met het installeren van de vereiste pakketten voor Bluetooth-communicatie in Raspberry Pi.
Apparaten koppelen met Raspberry Pi via Bluetooth:
Het koppelen van Bluetooth-apparaten, zoals een mobiele telefoon, met Raspberry Pi is heel eenvoudig. Hier hebben we onze Android-smartphone met Raspberry Pi gekoppeld. We hebben eerder BlueZ in Pi geïnstalleerd, dat een opdrachtregelhulpprogramma biedt genaamd "bluetoothctl" om onze Bluetooth-apparaten te beheren.
Open nu het bluetoothctl- hulpprogramma met de onderstaande opdracht:
sudo bluetoothctl
U kunt alle opdrachten van het hulpprogramma bluetoothctl controleren door 'help' te typen. Voorlopig moeten we onderstaande opdrachten in de opgegeven volgorde invoeren:
# stroom aan # agent aan # detecteerbaar aan # koppelbaar aan # scan aan
Na het laatste commando "scan on", ziet u uw Bluetooth-apparaat (mobiele telefoon) in de lijst. Zorg ervoor dat Bluetooth op uw mobiel is ingeschakeld en zichtbaar is voor apparaten in de buurt. Kopieer vervolgens het MAC-adres van uw apparaat en koppel het met de gegeven opdracht:
paar-
Vervolgens wordt u gevraagd om een toegangscode of pincode in uw Terminal-console, typ vervolgens de toegangscode daar en druk op enter. Typ vervolgens dezelfde toegangscode in uw mobiele telefoon wanneer daarom wordt gevraagd en u bent nu met succes gekoppeld aan de Raspberry Pi. We hebben dit hele proces ook uitgelegd in de video die in de vorige GPIO-besturingstutorial is gegeven. Hier is de directe YouTube-link.
Zoals eerder verteld, kunt u ook de desktopinterface gebruiken om de mobiele telefoon te koppelen. Na het installeren van Blueman, ziet u een Bluetooth-pictogram aan de rechterkant van uw Raspberry Pi-bureaublad, zoals hieronder weergegeven, waarmee u eenvoudig kunt koppelen.
Schakelschema:
Het schakelschema voor deze op Raspberry Pi gebaseerde Bluetooth-gestuurde huisautomatisering is heel eenvoudig, we hebben zojuist het ingangssignaal van de relaismodule Pin aangesloten op PIN 40 (GPIO 21) van Raspberry Pi en andere twee Pin (Vcc en GND van relaismodule) op Pin 2 en 6 van Raspberry Pi 3. Vervolgens hebben we een AC CFL-lamp op het relais aangesloten, zoals weergegeven in het schakelschema:
Als je nieuw bent bij Relay en je wilt meer weten over Relay en de verbindingen met AC-apparaten, bekijk dan dit artikel.
AC-apparaat bedienen met Android App BlueTerm:
Nu we de mobiele telefoon hebben gekoppeld, moeten we een Android-app installeren om met de Raspberry Pi te communiceren via een seriële Bluetooth-adapter, zodat we de GPIO-pinnen van de Raspberry Pi kunnen bedienen. Zoals eerder verteld, emuleert het RFCOMM / SPP-protocol seriële communicatie via Bluetooth, dus we hebben hier de BlueTerm-app geïnstalleerd die dit protocol ondersteunt.
U kunt ook elke andere Bluetooth Terminal-app gebruiken die communicatie via een RFCOMM-aansluiting ondersteunt.
Nu, na het downloaden en installeren van de BlueTerm-app, voert u het onderstaande Python-programma uit vanaf de terminal en verbindt u tegelijkertijd het gekoppelde Raspberrypi- apparaat vanuit de BlueTerm-app.
Na een succesvolle verbinding ziet u verbonden: raspberrypi in de rechterbovenhoek van de app, zoals hieronder weergegeven:
Nu kunt u gewoon '1' of '0' invoeren vanuit de BlueTerm-app om de GPIO-pin respectievelijk HOOG en LAAG te maken, wat op zijn beurt de relaismodule activeert die op deze pin is aangesloten, die de AC-lamp die op het relais is aangesloten verder bestuurt. Druk op 'q' om het programma te verlaten. U kunt Google Voice Typing Keyboard gebruiken om de GPIO met uw stem te bedienen. Bekijk de volledige demo in de video aan het einde.
Dit is dus hoe u de AC Appliance draadloos kunt bedienen met een Android-app via Bluetooth. Bekijk ook Hoe Bluetooth te gebruiken met Arduino.
Programmering Toelichting:
Python-programma voor het besturen van Raspberry Pi GPIO met Android-app is heel eenvoudig en spreekt voor zich. Alleen moeten we een klein beetje leren over de code met betrekking tot Bluetooth RFCOMM-communicatie. Eerst moeten we de Bluetooth-socketbibliotheek importeren waarmee we Bluetooth kunnen besturen met Python-taal; we hebben de bibliotheek hiervoor in de vorige sectie geïnstalleerd.
Bluetooth importeren
Hieronder staat de code die verantwoordelijk is voor Bluetooth-communicatie:
server_socket = bluetooth.BluetoothSocket (bluetooth.RFCOMM) poort = 1 server_socket.bind (("", poort)) server_socket.listen (1) client_socket, adres = server_socket.accept () print "Geaccepteerde verbinding van", adres terwijl 1: data = client_socket.recv (1024)
Hier kunnen we ze regel voor regel begrijpen:
server_socket = bluetooth.BluetoothSocket (bluetooth.RFCOMM): Aansluiting creëren voor Bluetooth RFCOMM-communicatie.
server_socket.bind (("", port): - Server bindt het script op host '' aan poort.
server_socket.listen (1) : Server luistert om één verbinding tegelijk te accepteren.
client_socket, address = server_socket.accept () : Server accepteert het verbindingsverzoek van de klant en wijst het mac-adres toe aan het variabele adres, client_socket is de socket van de klant
data = client_socket.recv (1024): ontvang data via de client socket client_socket en wijs deze toe aan de variabele data . Er kunnen maximaal 1024 tekens per keer worden ontvangen.
Sluit tenslotte na al het programmeren de client- en serververbinding met onderstaande code:
client_socket.close () server_socket.close ()
Alle andere code is eenvoudig en spreekt voor zich. Controleer de volledige code hieronder. Probeer dit project aan te passen en je kunt het gebruiken om veel andere dingen draadloos te besturen, Robotauto via Android-telefoon of je kunt je stem gebruiken om de lichten te bedienen.
Bekijk ook onze vele soorten huisautomatiseringsprojecten met verschillende technologieën en microcontrollers zoals: