Vous êtes sur la page 1sur 6

Vixepti À propos Catégories

Contrôler un relais en bluetooth


avec un Raspberry Pi
Feb 2, 2020 • Vixepti

Controler un relais depuis un Raspberry Pi, en utilisant le bluetooth. C’est ce que nous
allons rapidement voir dans cet article.

Matériel requis
Raspberry Pi (peu importe la version)
Arduino (peu importe le modèle)
Module bluetooth HC-06
Dongle USB Bluetooth
Relais

Les programmes dont on va avoir besoin sont sur mon github : Par ici.

Vidéo
La réalisation de ce mini projet en vidéo :

Contrôler un RELAIS en BLUETOOTH avec un RASPBERRY PI


Raspberry Pi
Le raspberry pi doit être installé avec un linux (j’utilise raspbian). Je ne détaillerai pas
l’installation dans ce tuto.

Il est préférable qu’il ait une adresse IP fixe.

L’activation du serveur SSH est vivement conseillé pour pouvoir copier/coller les
commandes.

Il faut que le dongle Bluetooth soit branché.

Installation des logiciels


On va avoir besoin de quelques logiciels, on les installes donc :

sudo apt update && apt upgrade -y


sudo apt install bluetooth bluez bluez-utils apache2 php7.1

Montage de l’arduino
L’arduino doit être monté selon le schéma suivant :
Paramétrage du module HC-06
Il faut paramétrer le module HC-06 pour changer son nom et le code PIN de connexion.
Pour cela, il faut téléverser le programme suivant sur l’arduino :

#include <SoftwareSerial.h>

SoftwareSerial hc06(2,3);

void setup(){
//Initialize Serial Monitor

Serial.begin(9600);
Serial.println("ENTER AT Commands:");
//Initialize Bluetooth Serial Port

hc06.begin(9600);
}

void loop(){
//Write data from HC06 to Serial Monitor

if (hc06.available()){
Serial.write(hc06.read());
}

//Write from Serial Monitor to HC06

if (Serial.available()){
hc06.write(Serial.read());
}
}

Puis se connecter au moniteur série pour lui envoyer les commandes AT suivante :

AT+NAMEnouveau_nom : Changement du nom visible en bluetooth.


AT+PINxxxx : Changement du code PIN de connexion.

Ici j’ai fais :

AT+NAMEhc-06
AT+PIN1234

Création de la liaison bluetooth


L’appairage avec le module bluetooth ne se fait qu’une fois. Au redémarrage, la liaison
devrait persister.

On démarre le service bluetooth

systemctl start bluetooth

On fait l’appairage avec bluetoothctl:

power on
agent on
scan on
... wait ...
scan off
pair <addr>

On créé la liaison série :

rfcomm bind 0 <addr>

Ici, j’utilise 0 car c’est la première connexion série bluetooth que je paramètre. Si on en
ajoute une deuxième on notera rfcomm bind 1 <addr> et on utilisera ensuite
/dev/rfcomm1.

Exemple avec mon appairage :

root@raspberrypi:~# bluetoothctl
Agent registered
[bluetooth]# power on
Changing power on succeeded
[bluetooth]# agent on
Agent is already registered
[bluetooth]# scan on
Discovery started
[CHG] Controller 00:19:0E:0B:F8:90 Discovering: yes
[NEW] Device 20:15:10:09:66:56 20-15-10-09-66-56
[CHG] Device 20:15:10:09:66:56 LegacyPairing: no
[CHG] Device 20:15:10:09:66:56 Name: HC06.module

[CHG] Device 20:15:10:09:66:56 Alias: HC06.module

[bluetooth]# scan off


[CHG] Device 20:15:10:09:66:56 RSSI is nil
[CHG] Controller 00:19:0E:0B:F8:90 Discovering: no
Discovery stopped
[bluetooth]# pair 20:15:10:09:66:56
Attempting to pair with 20:15:10:09:66:56
[HC06.module
[CHG] Device 20:15:10:09:66:56 Connected: yes
[HC06.module
Request PIN code
[HC06.module
[agent] Enter PIN code: 1234
[HC06.module
[CHG] Device 20:15:10:09:66:56 UUIDs: 00001101-0000-1000-8000-00805f9b34fb
[HC06.module
[CHG] Device 20:15:10:09:66:56 ServicesResolved: yes
[HC06.module
[CHG] Device 20:15:10:09:66:56 Paired: yes
[HC06.module
Pairing successful
[HC06.module
[CHG] Device 20:15:10:09:66:56 ServicesResolved: no
[HC06.module
[CHG] Device 20:15:10:09:66:56 Connected: no
[bluetooth]# exit
root@raspberrypi:~# rfcomm bind 0 20:15:10:09:66:56

Paramétrage du serveur web


L’interface de pilotage est minimaliste, j’ai réutilisé un code que j’avais écrit il y a 6 ~ 7
ans. L’intéret ici est simplement de démontrer le fonctionenment d’une liaison série à
travers une communication bluetooth.

On créé un fichier /var/www/html/index.php :

rm /var/www/html/index.html
nano /var/www/html/index.php

Et on colle le contenu de ce code.

Il est ensuite nécessaire d’ajouter l’utilisateur www-data (qui gère le serveur web)
au groupe dialout (qui gère les ports série) pour que notre application puisse
communiquer via /dev/rfcomm0 :

sudo adduser www-data dialout


sudo systemctl restart apache2.service

Test
A présent, tout devrait être opérationnel. On peut donc se connecter à notre application
web dans un navigateur en entrant l’adresse IP du Raspberry PI :
Si on clique sur le boutton allumer ou éteindre, la liaison avec l’arduino doit se faire et le
relais doit agir en fonction. Si la communication ne se fait pas, un message pas de
comm avec l’arduino devrait apparaître. Enfin, si le message d’erreur n’apparait pas mais
que le relais ne réagit pas, il peut s’agir d’un problème de branchement de ce dernier, ou
d’un problème de paramétrage du message envoyé (“h” ou “l”).

J’espère que cet article vous aura plu. La méthode est simpliste et ce n’est certainement
pas la meilleure façon de faire, mais ça peut donner des idées. A +

Tags : raspberry pi arduino bluetooth

Vixepti

Vixepti vixepti Administration systèmes et réseaux,


contact@vixepti.fr vixepti Sécurité informatique, Hacking,
Bricolage et autres joyeusetés...
vixepti

Vous aimerez peut-être aussi