Tableaux Maths
Slogan du site

Des cours, des exercices et des vidéos réalisées par des élèves.
Outils numériques en classe et découverte de la programmation.

Piloter un robot en Bluetooth (EDR ou BLE) avec Android : Kivy

Piloter un ShieldBot Arduino avec une tablette Android en Bluetooth (EDR ou BLE).

Article mis en ligne le 11 avril 2016
dernière modification le 31 mai 2019

Projets et matériels :

Dans cet article, vous pourrez voir deux types de connexion Bluetooth vers le robot :

  • Une connexion en mode classique : EDR (p.1)
  • Une connexion en mode Low Energy : BLE (Plus compliquée) (p.2)

Matériels :

Pour la connexion Bluetooth, deux possibilités (mais préférez le mode EDR, c’est plus simple) :

  • Une carte bluetooth HC-06 (ou HC-05) pour une connexion en mode EDR
  • Un Grove BLE_v1 pour une connexion en mode BLE.
    (Il existe des cartes bluetooth dual-mode...)

Librairies Arduino :

Il vous faudra une version récente d’ardublock et des librairies augmentées (0.57 de mars 2016) : ici

Python-Kivy :

Côté Android, l’appilcation est développée en Python (Kivy). Voir ici pour des installations et exemples.

Les codes sources donnés ici ne fonctionnent que sur des périphériques Android...

Un exemple de jeu graphique en Python (Kivy)

Connexion Bluetooth EDR

L’ensemble du projet :

  • Le fichier buildozer.spec (avec permissions Bluetooth)
  • Le code source (main.py)
  • L’application Android (.apk)
  • Le code ardublock (.abp)
  • Le code Arduino correspondant (.ino)
Projet robot EDR
Tous les fichiers pour piloter un robot Arduino avec une application Android Kivy en bluetooth EDR.

Une vidéo du résultat :

Matériels :

  • Un ShieldBot v1.1
  • Une carte bluetooth classique (mode EDR) HC-06
  • Une tablette ou un smarphone Android

Remarques :

  • Il faut appairer votre carte Bluetooth avec votre tablette avant (code=1234)
  • Si vous avez un autre nom pour votre carte Bluetooth vous pouvez la renommer "HC-06" sur votre tablette ou changer le nom dans le code source.
  • Le mieux serait de créer sur l’application un bouton offrant une liste de périphériques bluetooth pour choisir le bon.

L’idée vient d’ici : https://gist.github.com/tito/7432757

Le code source à compiler avec Buildozer (ou autre) :

Le code ardublock en image :

Blocs Ardublock du robot

Le code Arduino correspondant :

++++

Connexion Bluetooth BLE

La connexion BLE est plus compliquée. Il vous faudra implémenter la classe BluetoothGattCallback et renseigner ce fichier java dans le buildozer.spec.

Vous trouverez un résumé de ce fonctionnement : ici

L’ensemble du projet dans un zip :

  • Le fichier buildozer.spec
  • Le main.py
  • Le fichier BluetoothGattImplem.java
  • L’application Android (.apk)
  • Le code Arduino (.ino)
Robot_BLE
Piloter un Robot Arduino avec une application Android (Kivy) en Bluetooth Low Energy

Voici le résultat en vidéo :

On créé l’application Android avec Python-Kivy. (Evidemment, le code ne fonctionne que sur Android...)

Remarques :

  • Le fichier buildozer.spec contient le nom de l’application, les droits BLUETOOTH et BLUETOOTH_ADMIN ainsi que le lien vers le fichier .java
  • La carte bluetooth s’appelle "HMSoft" donc, si vous avez une autre carte, vous pouvez changer ce nom dans le code Python puis repackager votre application avec buildozer oubien simplement changer le nom de votre carte en "HMSoft" sur la tablette.
  • Vous pouvez améliorer cette application en proposant dans votre interface utilisateur une liste de tous les périphériques bluetooth appairés sur la tablette afin que l’utilisateur choisisse le bon. (Cela permet de se passer du nom "HMSoft" figé).
    La liste paired_devices dans le code Python est la liste de tous les périphériques bluetooth appairés sur la tablette... Ce n’est pas très compliqué de lister les noms...
  • Pour appairer la carte "HMSoft" avec la tablette, il faut entrer le code "000000".

Le code Python Kivy :

Le code Arduino :