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
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 ! |
Très intéressant. Merci!!!!!
RépondreSupprimer