- Installation des packages requis pour la communication Bluetooth:
- Couplage d'appareils avec Raspberry Pi via Bluetooth:
- Sélection de la voiture jouet:
- Schéma de circuit et explication:
- Contrôler la voiture à distance avec l'application Android BlueTerm:
- Programmation Python:
Raspberry Pi est très populaire pour les projets IoT en raison de sa capacité transparente de communication sans fil sur Internet. Raspberry Pi 3 intègre Wi-Fi et Bluetooth, et Bluetooth est un protocole de communication sans fil très populaire. Aujourd'hui, nous allons construire une voiture télécommandée utilisant Raspberry Pi 3 et Bluetooth, ici nous utiliserons Smart Phone comme télécommande pour contrôler la voiture. Nous avons déjà construit cette voiture RC en utilisant Arduino.
Ici, nous utilisons Raspberry Pi 3 qui a Bluetooth intégré, nous n'avons donc pas besoin d'utiliser de clé USB Bluetooth externe. Ici, nous utilisons le protocole Bluetooth RFCOMM pour la communication sans fil.
La programmation pour Bluetooth en Python suit le modèle de programmation de socket et les communications entre les appareils Bluetooth se font via la prise RFCOMM. RFCOMM (Radio Frequency Communication) est un protocole Bluetooth qui fournit des ports série RS-232 émulés et également appelé émulation de port série. Le profil du port série Bluetooth est basé sur ce protocole. RFCOMM est très populaire dans les applications Bluetooth en raison de sa large prise en charge et de son API accessible au public. Il est lié au protocole L2CAP.
Si vous avez Raspberry Pi 2, vous devez soit utiliser un dongle Bluetooth externe ou un module Bluetooth HC-06. Consultez nos projets précédents pour l'utilisation de ces appareils Bluetooth externes: Contrôle du Raspberry Pi GPIO à l'aide de l'application Android via Bluetooth et des appareils ménagers contrôlés par Raspberry Pi.
Installation des packages requis pour la communication Bluetooth:
Avant de commencer, nous devons installer un logiciel pour configurer la communication Bluetooth dans Raspberry Pi. Vous devriez avoir une carte mémoire installée Raspbian Jessie prête avec Raspberry Pi. Consultez cet article pour installer le système d'exploitation Raspbian et démarrer avec Raspberry Pi. Alors maintenant, nous devons d'abord mettre à jour le Raspbian en utilisant les commandes ci-dessous:
sudo apt-get mise à jour sudo apt-get mise à jour
Ensuite, nous devons installer quelques packages liés à Bluetooth:
sudo apt-get installer bluetooth blueman bluez
Ensuite, redémarrez le Raspberry Pi:
redémarrage sudo
BlueZ est un projet open source et une pile de protocoles officielle Linux Bluetooth. Il prend en charge tous les protocoles Bluetooth de base et fait désormais partie du noyau Linux officiel.
Blueman fournit l'interface de bureau pour gérer et contrôler les appareils Bluetooth.
Enfin, nous avons besoin de la bibliothèque python pour la communication Bluetooth afin que nous puissions envoyer et recevoir des données via RFCOMM en utilisant le langage Python:
sudo apt-get installer python-bluetooth
Installez également les bibliothèques de support GPIO pour Raspberry Pi:
sudo apt-get installer python-rpi.gpio
Nous avons maintenant terminé l'installation des packages requis pour la communication Bluetooth dans Raspberry Pi.
Couplage d'appareils avec Raspberry Pi via Bluetooth:
Coupler des appareils Bluetooth, comme un téléphone mobile, avec Raspberry Pi est très simple. Ici, nous avons couplé notre téléphone intelligent Android avec Raspberry Pi. Nous avons précédemment installé BlueZ dans Pi, qui fournit un utilitaire de ligne de commande appelé «bluetoothctl» pour gérer nos appareils Bluetooth.
Ouvrez maintenant l' utilitaire bluetoothctl avec la commande ci-dessous:
sudo bluetoothctl
Vous pouvez vérifier toutes les commandes de l' utilitaire bluetoothctl en tapant «aide» . Pour l'instant, nous devons entrer les commandes ci-dessous dans l'ordre donné:
# allumer # agent sur # découvrable sur # appariable sur # scan activé
Après la dernière commande «scan on», vous verrez votre appareil Bluetooth (téléphone portable) dans la liste. Assurez-vous que Bluetooth est activé sur votre mobile et visible par les appareils à proximité. Copiez ensuite l'adresse MAC de votre appareil et associez-le en utilisant la commande donnée:
paire
Ensuite, vous serez invité à saisir le code d'accès ou le code PIN dans la console de votre terminal, puis tapez le code d'accès et appuyez sur Entrée. Tapez ensuite le même mot de passe dans votre téléphone mobile lorsque vous y êtes invité et vous êtes maintenant couplé avec Raspberry Pi. Nous avons également expliqué tout ce processus dans la vidéo donnée dans le précédent tutoriel de contrôle GPIO. Voici le lien direct YouTube.
Comme indiqué précédemment, vous pouvez également utiliser l' interface de bureau pour coupler le téléphone mobile. Après avoir installé Blueman, vous verrez une icône Bluetooth sur le côté droit de votre bureau Raspberry Pi, comme indiqué ci-dessous, à l'aide de laquelle vous pouvez facilement effectuer le couplage.
Sélection de la voiture jouet:
Dans ce projet de voiture contrôlée Raspberry Pi, nous avons utilisé une voiture jouet pour la démonstration. Ici, nous avons sélectionné une voiture jouet RF avec fonction de direction mobile gauche-droite. Après avoir acheté cette voiture, nous avons remplacé son circuit RF par notre circuit Raspberry. Cette voiture a deux moteurs à courant continu, l'un pour faire tourner deux roues avant et l'autre pour faire tourner deux roues arrière. Le moteur avant est utilisé pour donner la direction à la voiture, c'est-à-dire tourner à gauche ou à droite (comme une vraie fonction de direction de voiture). Et le moteur arrière est utilisé pour conduire la voiture en avant et en arrière. Un Bluetooth de Raspberry est utilisé pour recevoir la commande sans fil du téléphone Android pour contrôler la voiture.
Vous pouvez utiliser n'importe quelle voiture miniature dotée de deux moteurs à courant continu pour faire tourner les roues avant et arrière.
Schéma de circuit et explication:
Dans cette voiture télécommandée, il suffit de connecter Raspberry Pi avec deux moteurs à l'aide du module L293D. Pour alimenter le Raspberry Pi et la voiture, nous avons utilisé une banque d'alimentation mobile. La banque d'alimentation mobile est suffisante pour alimenter le Raspberry Pi et les moteurs de la voiture, mais lorsque nous mettons la banque d'alimentation sur la voiture, en raison du poids élevé de la banque d'alimentation mobile, la voiture ne pourrait pas se déplacer correctement. Nous vous recommandons donc d'utiliser le bloc d'alimentation de faible poids ou des batteries au lithium pour alimenter le système. Toutes les connexions sont illustrées dans le schéma ci-dessous. Consultez également notre section Robotique pour en savoir plus sur le contrôle des moteurs avec différentes technologies.
Remarque: ne mettez pas plus de 5v sur le raspberry pi.
Ce circuit a été réalisé sur Perf Board pour ce projet, afin qu'il y ait moins de poids sur la voiture.
Contrôler la voiture à distance avec l'application Android BlueTerm:
Maintenant, après avoir configuré toutes les choses et essayé avec succès de coupler le téléphone intelligent via Bluetooth, nous devons installer une application Android pour communiquer avec Raspberry Pi à l'aide d'un adaptateur série Bluetooth, afin que nous puissions contrôler les broches GPIO de Raspberry Pi. Comme indiqué précédemment, le protocole RFCOMM / SPP émule la communication série via Bluetooth, nous avons donc installé ici l' application BlueTerm qui prend en charge ce protocole.
Vous pouvez également utiliser toute autre application de terminal Bluetooth prenant en charge la communication via la prise RFCOMM.
Maintenant, après avoir téléchargé et installé l'application BlueTerm, exécutez le programme Python ci-dessous à partir du terminal et connectez l'appareil raspberrypi couplé à partir de l'application BlueTerm en même temps.
Après une connexion réussie, vous verrez connecté: raspberrypi dans le coin supérieur droit de l'application, comme indiqué ci-dessous:
Maintenant, vous pouvez simplement entrer les commandes suivantes à partir de l'application BlueTerm pour faire avancer la voiture dans la direction souhaitée. Appuyez sur «q» pour quitter le programme. Vous pouvez utiliser le clavier de saisie Google Voice pour contrôler cette voiture à l'aide de votre voix. Vérifiez la démo complète dans la vidéo donnée à la fin.
Commandes:
F - Avancer
B - Déplacement vers l'arrière
S - Arrêt
L - Déplacement avant gauche
R - Avancer à droite
A - Déplacement arrière gauche
P - Déplacement arrière droit
Q - Quitter
Programmation Python:
Le programme Python pour contrôler le GPIO Raspberry Pi avec l'application Android est très simple et explicite. Seulement, nous devons en apprendre un peu plus sur le code lié à la communication Bluetooth RFCOMM. Sinon, c'est la même chose que de contrôler n'importe quel robot ou voiture en rendant la broche du moteur haute ou basse. Le programme complet est donné ci-dessous dans la section Code.
Tout d'abord, nous devons importer la bibliothèque de sockets Bluetooth qui nous permet de contrôler Bluetooth avec le langage Python; nous avons installé la bibliothèque pour la même chose dans la section précédente.
importer Bluetooth
Ensuite, nous avons inclus d'autres fichiers d'en-tête et définir des broches pour les moteurs, les mettant par défaut à un niveau bas.
importation de l'heure d'importation Bluetooth importation RPi.GPIO en tant que GPIO m11 = 18 m12 = 23 m21 = 24 m22 = 25 GPIO.setwarnings (False) GPIO.setmode (GPIO.BCM) GPIO.setup (m11, GPIO.OUT) GPIO.setup (m12, GPIO.OUT) GPIO.setup (m21, GPIO.OUT) GPIO.setup (m22, GPIO.OUT) GPIO.output (m11, 0) GPIO.output (m12, 0) GPIO.output (m21, 0) Sortie GPIO (m22, 0)
Voici le code responsable de la communication Bluetooth:
server_socket = bluetooth.BluetoothSocket (bluetooth.RFCOMM) port = 1 server_socket.bind (("", port)) server_socket.listen (1) client_socket, address = server_socket.accept () print "Connexion acceptée de", adresse
Ici, nous pouvons les comprendre ligne par ligne:
server_socket = bluetooth.BluetoothSocket (bluetooth.RFCOMM): Création de socket pour la communication Bluetooth RFCOMM.
server_socket.bind (("", port): - Le serveur lie le script de l'hôte '' au port.
server_socket.listen (1): Le serveur écoute pour accepter une connexion à la fois.
client_socket, address = server_socket.accept (): Le serveur accepte la demande de connexion du client et attribue l'adresse mac à l'adresse variable, client_socket est le socket du client
Après cela, nous avons créé quelques fonctions responsables du déplacement de la voiture dans la direction souhaitée: def left_side_forward (), def right_side_forward (), def forward (), def left_side_reverse (), def right_side_reverse (), def reverse () def stop (). Ces fonctions seront appelées respectivement lorsque nous appuierons sur L, R, F, A, P, B, S depuis l'application Mobile blueTerm et la voiture se déplacera en conséquence.
data = "" while 1: data = client_socket.recv (1024) print "Reçu:% s"% data if (data == "F"): forward () elif (data == "L"): left_side_forward () elif (data == "R"): right_side_forward () elif (data == "B"): reverse () elif (data == "A"): left_side_reverse () elif (data == "P"): right_side_reverse () elif data == "S": stop () elif (data == "Q"): print ("Quitter") break client_socket.close () server_socket.close ()
data = client_socket.recv (1024): Recevez des données via le socket client client_socket et affectez-les aux données variables. Un maximum de 1024 caractères peut être reçu à la fois.
Enfin, après toute la programmation, fermez la connexion client et serveur en utilisant le code ci-dessous:
client_socket.close () server_socket.close ()