Anthias
mail
3 connectés     # # #

a

Arduino et Processing
1/2

Page très ancienne ...

arduino


Introduction
Qu'est-ce qu'un Arduino ?
Quelle carte Arduino choisir ?
Environnement Processing
Liens

Maj : 19/06/2024

Abstract :
After several decades of programming exclusively in assembly language on various microcontroller families, I switched to the Arduino development to ensure the sustainability of my projects. I will introduce gradually some that have an educational value. (Next 2/2)

Résumé :
Après plusieurs décades de programmation exclusivement en assembleur sur diverses familles de microcontrôleurs, j'ai basculé vers le développement Arduino pour assurer la pérennité de mes projets. Je vais vous en présenter peu à peu certains qui ont un intérêt pédagogique. (Suite 2/2)

arduino  Introduction

J'ai pratiqué sans discontinuer le langage machine depuis l'Apple 2 (1977), les premières calculatrices scientifiques Hewlett Packard (HP 28 en 1987),  puis tous les microcontrôleurs du marché. Je me suis retrouvé avec des boîtes pleines de prototypes utilisant tous les types de microcontrôleurs du marché (mais principalement sur famille 8051 et un peu de Pic). Tout avait été développé avec de nombreux langages assembleurs et compilateurs variés, ce qui rend impossible de ressortir une ancienne carte et l'associer à son bon environnement de l'époque pour reprendre le développement.
Je suis arrivé à des situations bloquantes pour lesquelles l'assembleur montrait ses limites. Il devenait extrêmement pénible de gérer les cartes SD, les disques durs, l'Ethernet, l'Internet, le Wi-Fi, le Bluetooth, le Xbee...
Pour sortir de cette impasse et changer de stratégie, il n'y avait d'autre solution que de tout jeter et de repartir sur de nouvelles bases.
Après de longues réflexions, j'ai définitivement basculé sur Arduino, pour diverses raisons :

° L'environnement Arduino est totalement ouvert, toutes les sources et hardwares sont parfaitement bien documentés.
° Il existe une multitude de bibliothèques qui facilitent le développement d'innombrables périphériques.
° La communauté Arduino est très active,  la diffusion est très grande.
° Il est possible de développer son code source capable de tourner à la fois sur une carte très puissante (DUE, AT Mega 2560, Pic32,...) et sur un très petit circuit 8 pattes (ATtiny85). Il suffit de déclarer sa cible au compilateur et évidemment de n'utiliser que ce dont dispose le contrôleur choisi.
° Le langage principal est le très classique C (et C++), universel et rigoureusement indémodable, ce qui assurera la pérennité des développements.

Vous trouverez ici plus de détails : Choisir entre le C et l'assembleur casm

 Haut de page

arduino  Qu'est-ce qu'un Arduino ?

-Partie hardware

Une carte Arduino est tout simplement constituée d'un microcontrôleur monté sur un circuit imprimé qui comporte des dizaines de petites prises directement reliées à tous les ports disponibles du circuit. L'environnement minimal est implanté :
° Alimentation par un régulateur acceptant de 6 à 20 V, découplage et quartz.
° Interface USB permettant le dialogue avec le PC, avec un terminal natif et le chargement du logiciel.

Les premières cartes utilisaient la famille AVR, mais la société Expressif a créé une révolution en lançant les familles ESP32 qui sont beaucoup plus puissantes et apportent le WiFi et le Bluetooth.
Ce sont maintenant des circuits incontournables en développement Arduino. Il en existe de très variés et Expressif documente très bien ces produits complexes.
Vous trouverez tous les autres détails sur les site officiels Arduino et Expressif.

-Partie software IDE

Pour débuter, le plus simple est d’utiliser l’IDE de base contenu dans Arduino.
Il est toutefois limité et il faut faire l’effort de passer sous PlatformIO qui est un peu déroutant les premiers temps, mais s’avère bien plus performant et agréable pour du développement sérieux.

-Firmware implanté

Tous les outils sont fournis pour permettre de démarrer très vite en s'inspirant des exemples.
Le circuit est simplement programmé définitivement avec un "loader", petit morceau de logiciel résident permettant de charger son programme.

 Haut de page

arduino  Quelle carte Arduino choisir ?

Quand on débute en Arduino, le choix de la première carte se pose.

Bien que cela n'ait pas grande importance car il sera toujours possible d'évoluer par la suite, mais autant prendre la plus puissante pour quelques dizaines d'Euros. Il n'y a pas de gros écarts de prix entre les modèles.

Au début du siècle, les choix se portaient sur la Uno puis sur la AT Mega 2560 , originale italienne, plutôt qu'un clone chinois approximatif; l'écart de prix ne justifie pas le risque d'une carte douteuse pour débuter. Pour les cartes suivantes, la loterie est jouable.

Par la suite j'ai complété par tous les modèles existants,  Uno, Mini, micro et ATtiny85 seul, DUE.
L'arduino est aussi ouvert aux Pic de Microchip, en particulier les très puissants 32

Vous rajouterez ensuite de nombreux périphériques sur des cartes séparées ou empilées (shields) pour étendre le système. Le marché propose beaucoup de "shields" tout faits pour les débutants qui n'ont pas la pratique de la soudure.

2560

Il existe (Ebay.com) de multiples clones des cartes Arduino/Genuino officielles à des prix plusieurs fois inférieurs aux originaux. J’en ai testé beaucoup  et eu de nombreux problèmes de compatibilité en particulier avec l’interface USB. Les faussaires ne payent pas la licence au fondeur FTDI et montent n’importe quoi à la place. La carte est vue de manière aléatoire et si l’on n’a pas d’original sous la main pour identifier la cause du plantage on ne comprend plus rien.
Si vous avez déjà plusieurs vraies cartes, il est tentant de pendre des faux en complément, mais en ayant conscience du risque. J’ai un petit tas de cartes chinoises pas chères abandonnées …
Après avoir programmé plusieurs années sur les cartes Arduino AVR du début, Mega Uno, Mini et Tiny, puis DUE, je les ai abandonné, j'en ai de pleins cartons...
Il vaut mieux maintenant oublier les cartes Arduino AVR du d ébut et se lancer directement sur l'ESP32!
Exemple: Carte ESP32 vers Nextion arduino

e

 Haut de page

arduino  Mes projets

Le problème de cette page est que depuis que le l’ai commencée, j’ai développé une centaine d’applications Arduino mais que je n’ai pas le courage de présenter sous forme d’une page Web exploitable, ce qui prend beaucoup de temps que je préfère consacrer au développement.
Je n’ai mis pour le moment ici que me premiers exercices de débutant qui me font sourire aujourd’hui, car on peut faire beaucoup mieux. J’espère trouver la motivation de lâcher de temps en temps mon addiction au C pout compléter ce chapitre par des sujets plus pointus.
Tout ce qui est décrit est dans le fichier zip. Je n'introduirai de futures pages qu'à doses homéopathiques...

- Radar ultrasons

L'idée est de faire un système de vision pour un robot avec une présentation du résultat sur écran PC simulant un vrai demi-écran radar (vision vers l'avant à 180 degrés).
Dans cette phase la liaison vers le PC se fait par le câble USB, le graphisme est réalisé sous Processing.
En exploitation, la liaison se fait par un module radio vers PC et smartphone.

Page Arduino 2/2 : "radar" à ultrasons

level2

-Datalogger sur carte SD avec fichiers datés

Les exemples de la bibliothèque SD de base permettent très vite d'écrire un fichier de base sur carte SD et de lire la directorie.
L'affaire se complique quand il s'agit de créer un nom codant la date et surtout de sauver le fichier avec la vraie date et heure récupérée sur l'horloge temps réel.
Ce logiciel crée des fichiers de données, de type datalogger, pour archiver des données de mesures (Exemple : centrale météo), exploitables ensuite en Excel sur PC.
Les noms et les datations des fichiers sont uniques.

page et source

à venir...

-Liaison radio bidirectionnelle entre deux cartes Arduino

Par de simples circuits radio à quelques dollars, puis via Wi-Fi et Xbee nettement plus onéreux.

page et source

à venir...

-Serveur Ethernet

Utilisation d'un shield Ethernet pour liaison à une box et accès depuis l'Internet à un serveur Arduino protégé. Pilotage du serveur par un Iphone.

page et source

à venir...

-Utilisation mémoire avec structure " Array "

Ce programme avec sortie série sur la console, montre les adresses et l'occupation mémoire d'une structure Array en deux dimensions.
Faites varier la taille par un seul paramètre, mais attention au crash si vous dépassez. Sur l'ATMega 2560, vous pouvez aller jusqu'à 40*40.
Remarquez à quelles adresses les valeurs sont stockées.

array

-Clavier matriciel 4*4

Programme de palpation d'un clavier à $5, 4 lignes, 4 colonnes, en I2C par un PCF8574.
Rien d'original sauf qu'il est minimaliste et rapide. Cette version est sans interruption.

4x4

-Autre petits programmes

° Divers tests de sons sur le haut-parleur
° Extension du programme RTC (Real Time Clock) PCF8583 montrant les aléas de lecture.

*

-Dataloger (développement en cours, description à suivre)
Enregistrement de tous les paramètres utiles dans un camping-car.
Le projet évolue vers un vrai datalogger qui enregistre et affiche tout en graphiques, décrit en pages domotique.

Un Arduino est équipé d’une horloge (RTC DS3231).
Il est réveillé toutes le 4 minutes par timer pour lire et enregistrer sur EEPROM 512ko et carte SD :
Tension cellule + moteur / Courant cellule + solaire + chauffage / Température ext + int + gaine chauffage / Eclairement solaire /…
Tous les minuits, les données de la journée sont sauvées sur la SD.
La carte SD stocke plusieurs années de données, elle est retirée pour être lue sur PC et afficher les courbes sous Excel.
Un bouton rotatif active l’afficheur qui montre en local tous les paramètres.

401d

-Complément CNC
Adjonction de fonctions pour une machine à graver du commerce.
Pilotage de vitesse de broche
Contrôle du refroidissement par mesure (et affichage) de diverses températures et régulation de la pompe.
C’est un projet facile.

 Haut de page

arduino  Le châssis d'expérimentation

-Vue extérieure

J'utilisais au début de l'Arduino, un châssis bricolé avec deux vieux tiroirs de disque durs (version 2012 abandonnée).
Sur le dessus : Clavier, LCD 2*24, carte ATMega 2560.
Face avant : Trois potentiomètres, un pour le volume, deux pour les réglages analogiques (mais il m'en faudrait deux de plus !).
Face arrière : Nombreuses prises pour périphériques, alimentation 12 V, sortie 6 V pour puissance servo,...

ext

-Vue intérieure

Les deux cartes sont en cours de peuplement.

-Carte supérieure
Tous les périphériques en bus I2C : ports parallèles PCF8574 pour clavier, LCD..., Horloge temps réel PCF8583,..., module rétro-éclairage LCD
Régulateur réglable pour alimentation périphériques (servo) ,...
One Wire Dallas DS18s20 (température), ...

-Carte inférieure
Tous les périphériques en bus SPI :
Lecteur carte SD, Interface Ethernet, modules radio, ...

int

 Haut de page

arduino  L'environnement Processing

En première approximation Processing est indépendant d'Arduino. Il s'agit d'un langage de programmation ouvert pour les plate-formes Windows, Linux et Mac OSX.
Il est d'une puissance considérable et dispose d'une très grande collection de bibliothèques orientées en particulier graphismes et sons.
Il s'interface parfaitement avec l'Arduino au travers de la liaison série USB.
Découvrez le site Processing, il contient de nombreux exemples pour débuter simplement, vous serez vite conquis et épatés !
J'utilisais auparavant Visual Studio pour interfacer mes automates au PC, mais mon premier projet "radar" m'a fait découvrir la puissance de Processing et l'adopter définitivement.
Il utilise aussi le langage C. Dans mon application, je me suis efforcé d'utiliser variables et portions de code identiques sur Processing et Arduino.

Essayer Processing, c'est l'adopter !

 Haut de page

-  Liens Arduino

Choisir entre le C et l'assembleur casm

En fouinant vous trouverez une infinité de liens Arduino, mais il faut commencer par les incontournables !

Le point d'entrée en français : arduino.cc

Le forum : Vous y trouverez réponses à vos questions, pourvu qu'elles ne soient ni débiles ni formulées en charabia SMS bourré de fautes d'orthographe

Il vous sera facile ensuite de trouver les vendeurs de cartes en France est pour les moins pressés et les plus économes sur eBay ou chez les chinois.
Attention, il y a de très mauvaises imitations, ce n'est pas cher mais les délais de livraison depuis la Chine sont variables.
J'en ai de plein cartons plus ou moins en en panne.

Mon analyseur logique, parfaitement bien adapté à l'Arduino : Salae Logic 8 channels

Du côté ordinateur, l'indispensable site qui vous fera découvrir un nouvel univers : processing.org

Réaliser simplement des shields de qualité : fritzing.org

Un des nombreux sites à explorer dans l'immense univers Arduino : dangerousprototypes...arduino

- Mes applications de débutant

Page Arduino 2/2 : "radar" à ultrasons arduino

Centrale d'acquisition Arduino / Bluetooth<arduino

Toutes mes sources sont disponibles dans ce fichier zippé d'archives :

-

© Christian Couderc 1999-2024     Toute reproduction interdite sans mon autorisation


* Page vue   19657   fois       IP : 3.138.121.79

 Haut de page         Dernière retouche le 19 Juin 2024 à 20 h         Retour page précédente

   Collector