Android et arduino

De Wikidebrouillard.

Article incomplet en cours de rédaction
La vidéo "Android et arduino"


Sommaire

Présentation de l'expérience

Vous venez de réaliser les tutoriels d'arduino, et vous etes à la recherche d'un nouveau "truc" à faire avec cette petite carte. Dans cette page, nous vous proposons de connecter votre arduino à un téléphone android. Ainsi votre carte favorite aura acces à votre téléphone, donc aux SMS, au GPS, aux capteurs Acceleromètres etc ... et surtout aux services Web.


Matériel

  • un arduino
  • un smartphone sous android et avec l'option bluetooth - avoir activé "sources inconnues" dans les parametres
  • un grove shield (pas indispensable)
  • une carte bluetooth (indispensable)
  • un ordinateur connecté à internet

L'expérience

La manipulation

Tout d'abord ici l'idée n'est pas d'apprendre à programmer Arduino mais de comprendre comment interfacer celui-ci avec un téléphone sous Android.


I préparation de l'Arduino :

Donc dans un premier temps, chargez le programme ci-dessous dans votre arduino.

/*
Programme de reception Bluetooth via le logiciel APP Inventor

- connectez une led sur la sortie digitale 11
- connecter le module bluetooth sur les broches 0 et 1 , puis l'alim GND 5V (une fois le programme uploadé)

Attention, avant d'uploader ce programme, veillez à débrancher le module bluetooth
car celui-ci utilise les broches 0 et 1 utilisées aussi pour uploader
un programme dans arduino

Les Petits Débrouillards 2013 GNU-GPL
*/

const int ledPin = 13;      // la led sera fixée à la broche 13
byte serialA; // variable de reception de donnée via RX

void setup()
{

  Serial.begin(115200); // initialisation de la connexion série (avec le module bluetooth)

  setupBlueToothConnection(); // démarrage liason série bluetooth cf fonction en bas

  pinMode(ledPin, OUTPUT); // fixe la pin "ledpin" en sortie
}

void loop() {

  switch (serialA) {
  case 1: // si arduino reçois le chiffre 1 alors
    digitalWrite(ledPin, HIGH); // allume sur la broche "ledpin"
    break;
  case 2: // si arduino reçois le chiffre 2 alors
    digitalWrite(ledPin, LOW); // eteins la led sur la broche "ledpin"
    break;
  case 3: // si arduino reçois le chiffre 3 alors clignote
    digitalWrite(ledPin, HIGH);
    delay(100);
    digitalWrite(ledPin, LOW);
    delay(100);


  }
}
void serialEvent(){ // si arduino reçois quelquechose en sur l'entrée RX
  serialA = Serial.read(); // stocker la valeur reçue dans la variable SerialA
}
void setupBlueToothConnection() // fonction de configuration du module bluetooth
{
  Serial.begin(115200); //vitesse de bluetooth
  Serial.print("\r\n+STBD=115200\r\n"); // fixe la vitesse du bluetooth
  Serial.print("\r\n+STWMOD=0\r\n"); //bluetooth en mode esclave
  Serial.print("\r\n+STNA=Arduino"); //nom de l'appareil
  Serial.print("\r\n+STPIN=0000\r\n");//code pin "0000"
  Serial.print("\r\n+STOAUT=1\r\n"); // Permit Paired device to connect me
  Serial.print("\r\n+STAUTO=0\r\n"); // Auto-connection should be forbidden here
  delay(2000); // This delay is required.
  Serial.print("\r\n+INQ=1\r\n"); //make the slave bluetooth inquirable 
  delay(2000); // This delay is required.
  Serial.flush();
}  

Une fois le programme uploadé connectez le module bluetooth et la led comme ci-dessous :

II App Inventor

1. créez-vous un compte google (ou un compte bidon si vous ne voulez pas être tracké par google)

2. rendez vous à cette adresse : http://beta.appinventor.mit.edu

3. connectez-vous et cliquez sur le bouton "INVENT"

4. créez un nouveau projet (bouton "NEW") et nommez le

5. ajoutez les modules suivants à votre projet

Onglet à gauche "basic"

  • Listpicker
  • boutton1
  • boutton2
  • boutton3
  • clock1

Onglet "other stuff"

  • bluetoothClient1
  • speechRecognizer1


Le screencast pas à pas : screencast

Une fois les boutons placés, nous allons programmer le tout !

Cliquez en haut à droite sur le bouton "open the blocks editor", à se moment ci, une application java va être téléchargée. L'ordinateur va vous demander d'ouvrir celle-ci avec java.

D'autres questions vont vous être posées mais là cliquez sur annuler ou ok.

Une fois ces embûches passées vous devriez avoir la fenêtre suivante :

A l'aide de la technique dite du glisser déposer, recopiez le programme suivant :


Le screencast pas à pas : screencast

A cette étape, il ne reste juste qu'a compiler et envoyer sur votre téléphone.

Le plus simple à mon goût est de télecharger un scanneur de qrcode sur sont téléphone, puis de scanner le qrcode de l'application.

Pour se faire, revenez à la page de création d'interface, et cliquez en haut à droite sur "package for phone" puis "show barcode".

Fichier:compileapp.png

il ne vous reste plus qu'à scanner le qrcode qui apparaîtra sur votre écran.


Fichier:barecodeapp.png

Que voit-on ?

Une fois l'application lancée, vous connectez arduino à l'aide du bonton prévu à cet effet.

  • Un appuie sur le bouton "Led ON", allume la led
  • Le bouton "Led OFF" eteint la led
  • Le bouton reconnaissance vocale" vous invite à piloter par la voix le clignotement de la led en disant "clignote"

Vous venez de réaliser une télécommande sans fil pour votre arduino !

Explications

De manière simple

I - la connexion bluetooth

Au lancement de l'application, et avant de sélectionner le périphérique (ListPicker.beforepicking), le programme charge la liste des appareils associés au téléphone (BluetoothClient.adressesandNames)

Fichier:beforepick.png

Lorsque l'on appuie sur le bouton "connecter arduino", une liste remplie des périphériques apparaît. On vous demande de choisir le périphérique. celui-ci est récupéré par la fonction suivante. Celle-ci récupère le nom de l'appareil (listpicker1.selection) et connecte le téléphone (BluetoothClient1.Connect) sur celui-ci :

Fichier:afterpick.png

II - l'envoie de données en bluetooth

Le premier bouton "Led ON" va envoyer via bluetooth (BluetoothClient1.Send1ByteNumber) le chiffre "1" à l'appareil connecté lorsqu'il sera cliqué (button1.Click). Ici c'est Arduino qui va recevoir 1.

Fichier:bt1.png


Regardons maintenant ce qu'il se passe du coté d'Arduino :

 switch (serialA) {
  case 1: // si arduino reçois le chiffre 1 alors
    digitalWrite(ledPin, HIGH); // allume sur la broche "ledpin"
    break;
  case 2: // si arduino reçois le chiffre 2 alors
    digitalWrite(ledPin, LOW); // eteins la led sur la broche "ledpin"
    break;
  case 3: // si arduino reçois le chiffre 3 alors clignotte
    digitalWrite(ledPin, HIGH);
    delay(100);
    digitalWrite(ledPin, LOW);
    delay(100);
  }

Si arduino reçois 1 (case 1): digitalWrite(ledPin, HIGH); // allume sur la broche "ledpin"

héhé ! vous commencez à comprendre ? pour le second bouton c'est la même chose !


III - la reconnaissance vocale

Le bouton "reconnaissance vocale" appelle la fonction "reconnaissance vocale" (SpeechRecognize.gettext)


Fichier:bt3.png

Une fois la reconnaissance vocale appelée, la fonction de récupération (SpeechRecognizer1.AfterGettingText) et de traitement est lancée ! La phrase reconnue est contenue dans la variable "result".

Il ne reste plus qu'à tester ce texte avec le mot clef que l'on souhaite ici c'est "clignotte"

Si le mot correspond, alors on envoi le chiffre 3 via bluetooth (BluetoothClient1.Send1ByteNumber)

Fichier:recognize.png

Liens avec d'autres expériences

Expériences sur Wikidébrouillard

vous pouvez utiliser ce programme et le "mixer" avec les autres fiches wikidebrouillards sur les Arduinos

Applications : liens avec le quotidien

Cette fiche peut être le début d'une invention plus complexe, si vous explorez les possibilités de APP inventor, vous pourrez par exemple :

  • piloter arduino lorsqu'il reçois un SMS
  • créer une voiture télécommandée en utilisant le gyroscope de votre téléphone
  • faire un notificateur d'emails !

et bien d'autres "trucs" encore !

les domaines d'applications sont multiples !

  • domotique
  • handicaps

etc....

Lieux propices à sa réalisation

partout !

Catégories

Portail des ExplorateursWikidébrouillardLéon DitFLOGPhoto mystèreJ'ai FaitPortraitsAnnuaire
AR
EX

Android et arduino

Rechercher

Page Discussion Historique
Powered by MediaWiki
Creative Commons - Paternite Partage a l

© Graphisme : Les Petits Débrouillards Grand Ouest (Patrice Guinche - Jessica Romero) | Développement web : Libre Informatique