[Electronique] Retour d'expérience sur la programmation du Airboard (Partie 1. initialisation)

Pour un projet de R&D, nous utilisons l'Airboard www.theairboard.cc qui est une mini carte compatible Arduino. Retour sur les premiers instants avec ce produit et son initialisation qui s'est avérée plus difficile que prévu.

Attention, cet article date de plus de 2 ans maintenant... Il est possible que les infos publiées ne soient plus correctes aujourd'hui...

Le projet pour lequel nous allons utiliser l'airboard, est un périphérique qui devra être capable de communiquer en temps réel via bluetooth les données d'un accéléromètre embarqué sur la board.

Disclaimer sur ces premiers pas avec l'Airboard

Malgré une formation technique, l’électronique est pour moi un domaine totalement nouveau, il est donc très possible que les mots utilisés ne soit pas les bons ;-) En tout cas, la bonne nouvelle c'est que la programmation d'Airboard est accessible à un simple développeur (dev web qui plus est).

Liste de courses autour de l'Airboard

Pour ce projet, nous avons acheté :

  • 3 airboards chez seedstudio
  • 3 modules BLE-LINK chez dfrobot
  • 3 modules 9 axes (accelerometre, magnetometre, gyroscope) chez amazon

Unboxing de l'Airboard

Déjà on est frappé par le poids du colis (quelques grammes) et la taille des boards :

  • taille : 41x25x9mm
  • Poids (batterie incluse) : 10g

Airboard Boxed

Le packaging est minimaliste, un petit autocollant est glissé dans la boite (sympa!)

Airboard Unboxed

Premier Avertissement pour démarrer avec l'Airboard

Sur le quickstart de l'Airboard, un bout de code est proposé pour faire clignoter la LED (petite diode) de l'Airboard (voir ici). Je branche donc le port usb de la board et le relie à mon pc (sous linux)

Problème #1 : rien ne se passe (lsusb ne me renvoie rien), aucun son ne vient m'indiquer que j'ai branché quelque chose. Bon, ok pas de découragement, je passe sur windows... Même soucis, rien ne se passe...

J'ai voulu aller trop vite, un tour sur la FAQ me confirme bien le point : le port usb de la board ne sert qu'à recharger la batterie :)

Conclusion #1: N'achetez pas un airboard seul !! il faut le programmer soit en Bluetooth, soit en XBee, soit en câble FTDI donc avoir le matériel correspondant ;), on a trop tendance à avoir des trucs plug&play donc on n'imagine pas trop ! #excusebidon

Heureusement nous avions acheté des modules Bluetooth pour faire de la transmission de data, nous allons donc pouvoir programmer directement avec ces modules. (Pour info les composants électroniques mettent une quinzaine de jours à arriver, donc mieux vaut avoir tout le matériel et donc lire avant les documentations techniques)

Programmation de l'Airboard via module Bluetooth BLE-LINK

Après la "douloureuse" étape de l'installation (comparable à un puzzle 2 pièces... faut pas se tromper de sens quand meme :p ) Meme chose que précédemment, je relie via usb, le module bluetooth à mon pc.

Cette fois, il se passe quelque chose (hourra !) : lsusb renvoie bien un truc qui ressemble à ce qu'on peut attendre : "Arduino UNO serial port"

Sur cette bonne lancée, je démarre Arduino IDE (préalablement installé via "apt-get install arduino" sous linux) je sélectionne ma carte comme indiqué sur le site airboard : "arduino FIO" mon port (qui est automatiquement reconnu) et je téléverse l'exemple proposé dans le quickstart airboard :

/*
Blink LED
- turn an LED on for one second, then off for one second, repeatedly.

The AirBoard is a thumb-size, Arduino-compatible, wireless, low-power,
ubiquitous computer designed to sketch Internet-of-Things, fast!
Visit http://www.theairboard.cc
Upload your first sketch in seconds from https://codebender.cc?referral_code=Ub56L825Qb
Check README.txt and license.txt for more information.
All text above must be included in any redistribution.
*/

#define GREEN   5               // GREEN dimmable LED
#define BLUE   6               // BLUE dimmable LED
#define RED      9               // RED dimmable LED

// the setup routine runs once when you switch on the board:
void setup() {                
  pinMode(RED, OUTPUT);       // initialize the digital pin as an output
}

// the loop routine runs over and over again forever:
void loop() {
  analogWrite(RED, 50);     // turn the LED on and adjust the LED brightness between 1 and 255
  delay(500);                 // wait for a second
  digitalWrite(RED, 0);      // turn the LED off
  delay(500);                 // wait for a second
}

faisons clignoter la led !

Problème #2

Réponse aussi sec de la console :

avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x1c

Hmmm, ok ! Ça n'a pas l'air bon ! Mes connaissances d'arduino IDE étant assez limitées, je me dirige vers mon moteur de recherche préféré avec ce message. Je tombe plus ou moins sur toujours les mêmes solutions :

  • Soit le port n'est pas le bon
  • Soit la carte sélectionnée n'est pas la bonne
  • Soit il y a un problème dans le bootloader (0.1% des cas)

Après relecture de la doc sur le site d'airboard, port et cartes étaient bien ok, je ne croyais pas trop être dans le 0.1% du bootloader, mais me rappelle d'un mail envoyé après ma commande d'airboard:

Dear The Airboard Customers, You have been receiving The Airboard and we realized that a few boards have a wrong factory configuration.

Note that the USB connector is for charging only: a wireless module (XBee, BLE) or an FTDI cable is required for uploading your >sketches. If you have been able to upload at least one sketch, then you can skip the rest of this email.

However, if you still cannot upload your sketch after trying all fixes proposed in our FAQ www.theairboard.cc/FAQ, using an Arduino >UNO board as an AVR ISP programmer -as described in the Rescue Procedure- will definetely fix it. If you neither have knowledge of Arduino nor an actual Arduino UNO board, please contact our customer service for return and we will fix the problem for you.

Sorry for any inconvenience.

Hmm ok, on se retrousse les manches et on va voir cette fameuse Rescue Procedure !

Heureusement pour nous, nous avions déjà eu des (petits) projets électroniques chez wanadev (imprimante 3D, R&D..) et il nous restait une Arduino qui traînait, des fils, des résistances, et même une planche de tests ce qui m'a permis de réaliser en 10min le montage rescue.

montage rescue airboard arduino montage rescue airboard arduino montage rescue airboard arduino

Petite subtilité, on doit maintenir le fil sur la borne "reset" pendant la gravure

C'est par ailleurs parfaitement bien détaillé sur le site et les photos montrent bien les choses. En suivant naïvement les étapes, la remise à zéro du bootloader fonctionne donc parfaitement.

Conclusion #2 : l'équipe et le site d'airboard proposent de bonne ressources pour se sortir de ce problème ;)

Problème #3. Fort de cette petite victoire, je refais mon puzzle 2 pièces et plaçant le module bluetooth sur la Airboard. et je rebranche en usb le module vers mon pc et je retente un upload de schéma via arduino IDE et nouvelle déception, un problème similaire au précédent se produit : La console m'informe qu'il y a un problème de synchronisation et qu'elle ne peut pas téléverser.

grrrr

no way

Solution #3: Une fois encore nous sommes sauvés par la FAQ du site d'airboard avec ce paragraphe: "I bought BLE-LINK from DFRobot and I can't upload my sketch". Mais mais mais, c'est exactement notre cas :) !!

Là les choses se corsent, car les étapes indiquent :

  • Remove R7
  • Connect J1 pin 9 to pin 12
  • If necessary, check that AT+ROLE=? returns ROLE_PERIPHERAL for the shield and ROLE_CENTRAL for the USB dongle (factory default)

=> "Remove R7" hein ? quoi ? mais je n'ai jamais touché un composant électronique, comment faire ça ?

En fait c'est assez simple, une photo montre ce qu'il faut retirer ;) vous prenez une pince (petite) et vous tirez dessus

=> "Connect pin 9 to pin 12" une photo montre parfaitement les endroits à connecter, il faut faire une petite soudure (et donc avoir le materiel adequat!!)

=> je passe sur la dernière ligne qui est du chinois pour moi (on en reparle plus bas)

Enfin le module modifié est fait !

Avant/Après Avant/Après

Voici le avant/après (notez R7 qui est bien retiré sous la connexion à droite du câble)

Conclusion #3: Même si ça parait effrayant au premier abord, les manipulations à faire sont assez simples, et bien expliquées sur le site du fabricant

problème #4

Avec cette configuration, le schema s'upload correctement

yes

mais, passée la satisfaction ultime de voir clignoter ma LED, je décide de changer la couleur et donc de remplacer RED par BLUE dans le code pour renvoyer un autre schema sur la board... et là c'est le drame, la console arduino me refuse de nouveau l’accès !

why

passée la désillusion ultime, je m’aperçois que si je refais la procédure de rescue (avec le branchement arduino cf. plus haut) je peux de nouveau uploader un schema.

C'est bien mais quand même pas top (nous les dev web on fait F5 et ça repart, je me voyais mal débrancher le module bluetooth, rebrancher tous les fils, re-graver le bootloader, débrancher les fils puis rebrancher le bluetooth à chaque modif de code...

À ce moment la petite phrase qu'on a laissé en suspens plus haut me revient dans la tête :

"* If necessary, check that AT+ROLE=? returns ROLE_PERIPHERAL for the shield and ROLE_CENTRAL for the USB dongle (factory default)"

aaaah mais en fait, il faut un dongle usb pour communiquer avec le module bluetooth ( non en branchant simplement le module bluetooth en usb directement sur le pc) !

N'ayant pas acheté de dongle avec le module, j'essaie d'appairer le module bluetooth et de piper l'appairage sur un port série de l'ordinateur. Je ne vais pas rentrer dans les détails, ce n'est pas comme ça qu'il faut faire ;) n'essayez juste pas cette solution, elle ne marche pas !

Heureusement il existe une solution parfaitement bien détaillée ici :

http://www.dfrobot.com/wiki/index.php/Bluno_SKU:DFR0267#Wireless_Programming_via_BLE qui permet de transformer un module bluetooth en transmetteur (role_central) et qui, une fois branché en usb se chargera d'envoyer au module blueetooth receiver (role_peripheral) le code.

NB. plus bas dans la page : ici est expliqué comment configurer avec des commandes AT (pour info il faut aussi passer l’interrupteur AT sur le module bluetooth - et non ce n’était pas un on/off ;) )

Final

Victoire, ça marche enfin !

success

Tags de
l'article

airboard arduino

Catégories de l'article

Recherche et développement Tuto

Commentaires

Claudio

Il y a 3 ans Répondre

Bonjour,

merci pour ce post ! Enfin j'ai pu établir moi aussi la connexion entre l'Airboard et un Mac par la BLE-Link. J'utilise un accelerometer et gyroscope et j'arrive à bien recevoir les données. Par contre l'USB dongle marche à une distance réduite (10 mètres maximum). L'interface BLE-Link, en champ libre, est vendue pour 60 mètres. Savez-vous s'il y a un moyen, une fois programmée la carte, de la connecter directement au Bluethoot du MAC qui devrait (j'espère) avoir une portée plus importante ? Sinon il faut que je change de USB dongle pour améliorer la distance  ? Merci

Claudio

Côme

Il y a 3 ans

Bonjour Claudio,

merci pour le commentaire

le dongle ne sert pour moi qu'à programmer l'airboard via BLE-LINK, on peut bien sûr connecter le BLE-LINK directement sur le BT d'un mac ou d'un pc et benficier d'une connectivité plus lointaine :)

je ferais un article la dessus prochainement :) 

Claudio

Il y a 3 ans Répondre

Merci Côme,

je vais guetter donc l'arrivé du post !

Affaire à suivre ...

Claudio

Articles liés