Tutoriel : Faites communiquer un Arduino avec un iPhone grâce au Bluetooth
Vous allez démarrer un projet Arduino et vous souhaitez que ce projet puisse communiquer en Bluetooth avec un iPhone ou un iPad ? Voici un tutoriel accompagné d'astuces pour réaliser votre montage.
Tout d'abord, oubliez tous les adaptateurs Bluetooth pour Arduino autre que les adaptateurs compatibles BLE (Bluetooth 4.0). Apple limite la compatibilité des périphériques Bluetooth non BLE seulement aux partenaires du programme MFi.
J'ai personnellement opté pour un SH-HC-08 que l'on peut trouver sur Amazon au prix de 8€ environ après avoir échoué avec une puce HC-06 non compatible BLE.
Le montage de la puce se fait très simplement, sur un Arduino MKRFOX1200 compatible Sigfox, il suffit de connecter le VCC, GND, TX, RX en faisant bien attention d'inverser le RX/TX lors du branchement avec l'Arduino. Le TX de la puce doit être connecté au RX de l'Arduino et le RX au TX de la puce de l'Arduino.
Sur des Arduino UNO, l'utilisation de la sortie série TX/RX n'est pas nécessaire via l'utilisation de la librairie "SoftwareSerial" qui permet d'émuler une sortie série. Sur le MKRFOX1200, la librairie "SoftwareSerial" n'est pas compatible, l'utilisation des PIN TX/RX est donc la manière la plus simple d'interfacer ce type de périphérique série.
Le programme de test pour valider la communication est très simple, il s'agit d'un programme qui recopie le contenu reçu en Bluetooth sur la sortie du moniteur série et qui transmet ce qui est écrit au moniteur série en Bluetooth.
String readString; // this string contains the response from the BT module
void setup() {
Serial.begin(9600);
Serial1.begin(9600);
delay(1000);
Serial.println("READY");
}
void loop(){
if (Serial1.available()){
Serial.write(Serial1.read());
}
if (Serial.available()){
Serial1.write(Serial.read());
}
}
Dans ce programme :
- La sortie "Serial" correspond au moniteur série de l'Arduino disponible depuis "Outils -> Moniteur Série" de l'IDE Arduino.
- La sortie "Serial1" correspond aux PIN RX/TX de l'Arduino MKRFOX1200.
Une fois le logiciel téléversé sur l'Arduino, vous devriez voir la LED de la puce Bluetooth clignoter, cela signifie que la puce est en attente d'un appairage.
Il vous suffit maintenant de télécharger le logiciel "LightBlue Explorer" depuis l'Apple Store et de le lancer.
Vous devriez voir apparaître un terminal Bluetooth au nom de SH-HC-08 qui correspond dans mon cas au nom de la puce utilisée.
Sélectionnez ce périphérique pour vous appairer avec celui-ci.
La LED de la puce Bluetooth ne devrait plus clignoter et vous devriez ensuite voir le détail de la puce (firmware, constructeur ...) :
Sélectionnez tout en bas de cette liste "Characteristic 1" et appuyez sur le bouton "Write new value" :
Entrez le texte au format hexadécimal que vous souhaitez transmettre à votre Arduino, dans mon cas j'ai utilisé "676565656b" qui correspond à "geeek". Vous pouvez vous aider d'un convertisseur en ligne pour transformer une chaîne en hexa. Appuyez sur "Done" une fois la chaîne en hexadécimale saisie dans l'application mobile.
Vous devriez voir apparaître instantanément le texte dans le moniteur série de votre Arduino :
Pour tester l'émission du moniteur série vers votre terminal iOS, vous devez activer l'écoute en appuyant sur l'item "Listen for notifications". Une fois l'écoute active, il vous suffit d'entrer une chaîne de caractère depuis le moniteur série de l'IDE Arduino pour le voir apparaître dans l'application LightBlue sur votre terminal iOS.
Vous voilà avec un Arduino capable d'échanger des chaînes de caractères en Bluetooth avec des terminaux mobiles iOS et Android. Il vous reste maintenant à définir un protocole de communication qui permettra à votre future application mobile de déclencher des actions sur votre Arduino et vice-versa.
Rendez-vous dans un prochain épisode !