En pleine séance de veille technologique, je suis tombé sur ce site : http://www.annikken.com/
« Mobile integration made simple » ? il n’en faut pas plus pour exciter ma curiosité…
J’ai donc fait l’acquisition, d’une de leur carte miracle, et je vais présentement vous faire part de mes premiers contacts avec la bête.
La carte se présente comme cela : (ici montée sur un Arduino Leonardo) :
Il faut avant tout télécharger les librairies pour l’Arduino :
http://www.annikken.com/getstarted/
Et l’appli Android depuis le Google Playstore.
Ensuite, en reliant cette carte à une carte Arduino (Leonardo dans mon cas), il est possible de programmer des applications en lien avec un périphérique Android (via Bluetooh), en utilisant la syntaxe C++ Arduino.
Forcément, le premier test qui me vient à l’idée, après avoir fait quelques tutos fournis par le site du fabriquant, est de mettre cela dans mon fameux Hollandais Vollant.
Voici le code, fortement inspiré des exemples fournis par Annikken :
#include <SPI.h>
#include <Andee.h>
#include <Servo.h>
AndeeHelper displaybox;
AndeeHelper sliderAvance;
AndeeHelper sliderDirection;
// declaration des « servos »
Servo servoAvance;
Servo servoDir;
int currentPosition1, currentPosition2; // memorise la position courante du servo
const int servoAvancePin = 5; // pin’s des servos
const int servoDirPin = 3;
void setup()
{
Andee.begin(); // Demarre la communication entre Arduino et Andee
Andee.clear(); // Efface l’ecran
currentPosition1, currentPosition2 = 90; // Initialise position a 90
servoAvance.attach(servoAvancePin); // on attribue les sorties aux servos
servoDir.attach(servoDirPin);
setInitialData(); // Fonction definissant l’affichage (aparence) sur le peripherique Android
}
// Ici sont definits les types d’objets et leur apparence sur le peripherique Android
void setInitialData()
{
displaybox.setId(0);
displaybox.setType(DATA_OUT); // definit l’objet comme un « text input button »
displaybox.setLocation(0,0,FULL); // position
displaybox.setTitle(« Le Hollandais Vollant »);
// displaybox.setData(« Viens avec moi… »);
// Dessin du slider pour la commande d’avancement
sliderAvance.setId(1);
sliderAvance.setType(SLIDER_IN); // c’est un slider
sliderAvance.setLocation(1, 0, FULL);
sliderAvance.setTitle(« Controle d’avancement »);
sliderAvance.setSliderMinMax(0, 180); // valeurs mini et maxi
sliderAvance.setSliderInitialValue(90); //valeur d’init
sliderAvance.setSliderNumIntervals(181);
sliderAvance.setSliderReportMode(ON_VALUE_CHANGE); // on met a jour les valeurs lorsque le slider bouge
// Dessin du slider pour la commande de direction
sliderDirection.setId(2);
sliderDirection.setType(SLIDER_IN);
sliderDirection.setLocation(2, 0, FULL);
sliderDirection.setTitle(« Controle de direction »);
sliderDirection.setSliderMinMax(0, 180);
sliderDirection.setSliderInitialValue(90);
sliderDirection.setSliderNumIntervals(181);
sliderDirection.setSliderReportMode(ON_VALUE_CHANGE);
}
void loop()
{
currentPosition1 = sliderAvance.getSliderValue(INT); // on récupere la valeur courante du slider d’avancement (INT)
servoAvance.write(currentPosition1); // et on la communique au servo concerne
currentPosition2 = sliderDirection.getSliderValue(INT); // idem pour le servo de direction
servoDir.write(currentPosition2);
displaybox.update(); // on met a jour l’affichage
sliderAvance.update();
sliderDirection.update();
delay(100); // Un delais pour la communication bluetooh et les servos
}
C’est vrai que une fois assimilé le principe, cela simplifie grandement la création d’interfaces Android. Avec cependant les limites inhérentes à ce type d’applications : on est obligé de rester dans le design général défini par Annikken. Ceci dit, à mon avis, ce n’est pas forcément un problème, car les possibilités de configurations sont nombreuses, et cela permet d’avoir des interfaces fonctionnelles.
Ce qui donne sur le téléphone (Android 4.04, Sony Xperia U) :
Le test : réalisé pour le moment au bureau (3° dehors et pluie, cela n’incite pas vraiment à aller au bord de l’eau…). La réactivité semble bonne, la portée correcte pour du bluetooh (j’évalue à 10 m mini, avec 1 mur entre l’émetteur et le récepteur). Pour le test sur le terrain, c’est dès que possible…
Comme toujours, pour me joindre, c’est ici :