jeudi 4 janvier 2018

premiers pas avec arduino

Lorsqu'à la fin de mon DEUG de science je me suis orienté vers une licence de mathématiques je savais que les sciences expérimentales allaient me manquer. C'est probablement pour compenser ce manque que par la suite je me suis lancé dans la pratique de l'astronomie, de l'astrophotographie ou de la programmation informatique. Mais jusqu'ici il y a un domaine dans lequel je n'ai jamais réussi à me lancer : l'électronique. Pourtant depuis quelques années plusieurs innovations ont permis de faciliter l'apprentissage de l'électronique en s'appuyant sur la démocratisation des outils informatiques. C'est ainsi que des projets comme RaspberryPi  et Arduino permettent au plus grand nombre de se lancer en électronique. A mon tour d'essayer ...

Préparation


La première chose à faire c'est d'acheter une carte arduino  il y en a sur tous les sites de ecommerce (Amazon, Conrad, ...)  certaines sont vendues seules (pour 10 ou 20 €  suivant le modèle et le fabricant) d'autres avec un kit de démarrage (solution à privilégier si vous n'avez aucun matériel d'électronique). Si vous voulez vraiment mener à bien de petits projets d'électronique  il faudra certainement en plus investir dans un voltmètre, un fer à souder, des connecteurs, des moteurs ou des composants plus évolués .

Il est bon aussi de vous munir d'une documentation pour démarrer pas à pas. Même si on trouve beaucoup d'informations sur internet j'ai utilisé le hors série de Hackable magazine dédié à Arduino. Agréable à lire et bien illustré, concis mais pas incomplet, ce guide permet de se mettre le pied à l'étrier  en quelques jours .

Installation de l'IDE

Pour programmer une carte Arduino  il faut  écrire des programmes en langage C, les compiler et les téléverser dans la mémoire de la carte. Pour faire tout cela il est pratique d'utiliser une IDE (environnement  de développement intégré ou en anglais Integrated Developpment Environment) qui va gérer toutes ces étapes. Étant sous ubuntu  j'ai commencé par installer l'IDE  disponible dans la logithèque d'ubuntu. A première vue tout va bien , le logiciel s'installe en quelques secondes, l'interface s'ouvre, mais quand je veux compiler le premier exemple  j'obtiens un message d'erreur :

/snap/arduino-mhall119/3/hardware/tools/avr/bin/../lib/gcc/avr/4.9.2/../../../../avr/bin/ar 
terminated with signal 31 [Bad system call] 
exit status 1 Error compiling for board Arduino/Genuino Uno.

pas de panique, après quelques recherches sur internet je découvre  que ce paquet snap pose de nombreux problèmes et qu'il vaut mieux installer l'IDE arduino en téléchargeant directement les sources depuis le site https://www.arduino.cc/ (ce que je fais immédiatement après avoir supprimé la version snap avec sudo snap remove arduino-mhall119 ). Après avoir téléchargé le fichier adapté à ma machine arduino-1.8.5-linux64.tar.xz  deuxième problème : comment décompresse-t-on un fichier d'extension *.xz ??? Là encore après quelques recherches je finis pas trouver la bonne option à appliquer à tar (je crois que je n'arriverai jamais à comprendre la logique des options de tar  ...) et j'en profite pour installer proprement l'IDE  dans /usr/share  avec un raccourci "arduino" dans /usr/bin pour lancer l'IDE en ligne de commandes

tar -xJf arduino-1.8.5-linux64.tar.xz       #décompression
sudo mkdir /usr/share/arduino               # création du répertoire dans /usr/share
sudo mv arduino-1.8.5/ /usr/share/arduino/  # déplacement vers /usr/share
cd /usr/share/arduino/arduino-1.8.5/       
sudo ./install.sh                           #installation
cd /usr/bin                                 # création du raccourci
ln -s /usr/share/arduino/arduino-1.8.5/arduino arduino  
cd                                          # retour dans mon répertoire personnel
arduino                                     # lancement de l'IDE

Au démarrage du logiciel Arduino l'image de gauche apparaît avant de donner accès à l'IDE avec:
1. ligne de menus, fichiers, édition ...
2. les boutons :compiler, téléverser,...
3. zone d'écriture des programmes (en blanc),
4.e zone avec les messages d'information ou d'erreurs (en noir)

Premier programme

Je peux enfin lancer  l'IDE et créer mon premier sketch (c'est comme ça qu'on appelle les programme pour l'arduino), pour faire simple je commence avec le traditionnel programme qui fait clignoter la led de test de la carte arduino. Il fait parti des exemples disponible directement dans le logieiciel via  le menu fichiers->exemples->basics->blink :

void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED_BUILTIN, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);                       // wait for a second
}


cette fois le code compile du premier coup (cliquer sur le premier bouton en forme de croix dans l'IDE), Je vais donc pouvoir transférer le programme dans la carte. Pour cela il faut raccorder la carte  au PC par une liaison USB (le cable est souvent fourni avec la carte, si vous achetez d'autres cartes pas besoin de nouveau câble ...). Normalement le logiciel reconnaît tout seul le port USB et le type de carte  connecté mais on peut aussi vérifier cela dans le menu outils de l'IDE. Il ne reste plus qu'à téléverser le programme (en cliquant sur le deuxième bouton en forme de flêche dans l'IDE) mais  j'ai un nouveau message d'erreur :

avrdude: ser_open(): can't open device "/dev/ttyACM0": Permission denied
Problème de téléversement vers la carte. Voir http://www.arduino.cc/en/Guide/Troubleshooting

pourtant j'ai bien vérifié le port d'entré  sur lequel  ma carte  est connecté à l'ordinateur (menu outils->ports) et le type de carte mais je n'ai pas les droits d'accès et d'écriture  sur le port auquel est connecté la carte!  pour cela j'aurai du lancer l'IDE en mode administrateur :

sudo arduino

maintenant tout marche, je suis prêt pour modifier le programme de base et réaliser mon premier "sketch" à moi. Mon idée moduler la fréquence d'allumage de la diode de test : la faire s'allumer une seconde puis l'éteindre une seconde , la rallumer 1/10ième de seconde , puis l'éteindre une seconde, tout cela adlib. Il suffit juste de modifier la fonction loop()  en rajoutant deux instructions pour allumer et éteindre la diode :


void setup() {
  // put your setup code here, to run once:
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
  digitalWrite(LED_BUILTIN, HIGH);
  delay(1000);
  digitalWrite(LED_BUILTIN, LOW);
  delay(1000);
  digitalWrite(LED_BUILTIN, HIGH);
  delay(100);
  digitalWrite(LED_BUILTIN, LOW);
  delay(1000);
}


bon voilà c'est pas grand chose mais ça marche!


la led clignote !



1 commentaire:

Pour écrire des formules mathématiques vous pouvez utiliser la syntaxe latex en mettant vos formules entre des "dollars" $ \$....\$ $ par exemple :
- $\sum_{n=1}^\infty {1\over n^2}={\pi^2\over 6}$ s'obtient avec \sum_{n=1}^\infty {1\over n^2}={\pi^2\over 6}
- $\mathbb R$ s'obtient avec {\mathbb R} et $\mathcal D$ s'obtient avec {\mathcal D}
- pour les crochets $\langle .,. \rangle$ dans les commentaires utilisez \langle .,. \rangle
vous pouvez écrire du html dans les commentaires :
- italique <i> ... </i> gras <b> ... </b>
- lien <a href="http://adresse "> .... </a>