Arduino et microcontrôleur, quelques informations.

Liens vers d'autres pages de ce site Web

Table des matières   Liens internes à cette page

1) Qu'est-ce qu'un micro contrôleur ?
2) Le langage de programmation de l'Arduino
3) Installation de l'environnement de programmation de l'Arduino.
4) Des vidéos sur l'Arduino
5) D'autres cartes electroniques

1) Qu'est-ce qu'un micro contrôleur ?   TOP

Ce qui suit décrira surtout le micro contrôleur Arduino qui a la particularité d'être basée sur des schémas électroniques libres. Cela signifie que toute personne compétente peut construire une telle carte, la vendre et même modifier le schéma, tant qu'il publie les modifications.
Il existe donc plusieurs variantes d'Arduino. Voici les principales :
° Arduino Uno ;
° Arduino Nano qui est particulièrement petit ;
° Arduino Mega ayant plus de mémoire et plus d'entrées-sorties ;
° Arduino Due encore plus développé que la Mega, mais incompatible, car fonctionne en 3,3 V.
Pour une liste et description plus complète, c.f. le lien "Arduino" ci-dessus.

www.arduino.cc est le site officiel de référence concernant l'Arduino. En anglais.
Depuis ce site Web, on peut télécharger gratuitement le logiciel permettant de programmer un Arduino.

Je travaille principalement sous GNU/Linux, donc mes informations concernent plus ce système d'exploitation. Mais Arduino et son environnement de développement fonctionnent sur tous les systèmes d'exploitations courants.

Installaition de librairies.
Custom Character Generator for HD4478 LCD modules
Exemples de caractères pour le HD4478 LCD modules
Jeu de caractères du HD4478 LCD module. Il y a le jeu asiatique et européen.
Autre lien concernant le HD4478 LCD module.


2) Langage de programmation de l'Arduino. TOP
Il ressemble au langage C.

° Language Reference, en anglais, liste de toutes les instructions.

° Language Reference, ancienne version, que je préfère.

° Exemples de codes, Arduino, avec schémas associés.

Quelques instructions de bases.
Pour définir des fonctions qui permettent de sélectionner une partie d'un mot :
Se place généralement avant la fonction "setup()", lorsqu'on en a besoin.
#define LoWord(w) ((w) &0xffff)
#define HiWord(w) ((w) >> 16)
#define LoByte(w) ((w) &0x00ff)  //  Mieux, c.f.  lowByte(variable de n'importe quel type)
#define HiByte(w) ((w) >> 8)         //  Mieux, c.f.  highByte(variable de n'importe quel type)
// voir aussi la fonction  word(bHigh, bLow) qui convertit deux bytes en un word
bitRead(x, n)  permet de lire le nième bit de la variable x.

// Déclaration de variables
byte bEtat = 0; // un byte, nombre non signé sur 8 bits, compris entre 0 et 255
char cCaractere = 'a'; // un caractère codé sur 8 bits, correspond à un nombre signé sur 8 bits
short nBrightness = 0;  // Un entier signé sur 16 bits, compris entre -32768 et 32767
int nVal = 0;  // Un entier signé sur 16 bits sur l'Arduino Uno et sur 32 bits sur l'Arduino Due
unsigned int nwBrightness = 0;  // Un entier non signé sur 16 bits, compris entre 0 et 65535
word wValeur = 0;     // Un entier non signé sur 16 bits sur l'Arduino Uno et sur 32 bits sur l'Arduino Due
long lGrandNombre = 0; // Un entier signé sur 64 bits
unsigned long lwTimeStart = 0; // Un entier positif sur 64 bits, valeur maximale = 2^64 - 1 = 1.84467447 x 10^19
float vVirgule = 1.0; // Un nombre à virgule codé sur 32 bits. À éviter si possible, car gourmand en place.
double vVirgule = 1.0; // Un nombre à virgule codé sur 64 bits. À éviter si possible, car gourmand en place.
string :
char acTable[5] = {'a', 'b', 'c', 'd', 'e'}; // un tableau de caractères
char* acMieux[] = {"abcde"}; // Autre manière de déclarer un tableau de caractères
String strS = "Un objet qui traite mieux des chaînes de caractères";

pinMode(13, OUTPUT); // Initialise le PIN digital 13 comme OUTPUT
pinMode(12, INPUT);  // Initialise le PIN digital 12 comme INPUT
digitalWrite(bPin, bEtat); // écrit dans la PIN bPin (byte) l'état bEtat, qui est LOW ou HIGH.
byte = digitalRead(nPin); // Lecture de l'état d'une PIN. Soit 0 soit 1.
analogWrite(nPin, nIntensite); // Ecriture d'une valeur entre 0 et 255 faisant varier la durée à l'état HIGH d'une PIN oscillante
word = analogRead(analogInPin); // alanogInPin vaut A0 ou A1 ou A2 ou ... A5.  Lecture d'une PIN analogique en entrée.
delay(wTime) // attente de wTime millisecondes. wTime est un (word).
Serial.begin(9600); // Initialise la communication série à une vitesse de 9600 bps
   // Se place généralement dans le "setup()"
Serial.print(string ou un nombre) envoie par le port série une chaîne de caractères.
Serial.println(string ou un nombre) idem, avec un retour de ligne à la fin.
byte = Serial.available() indique s'il y a de l'information envoyée à la carte Arduino par le port série.
byte = Serial.read() lecture de l'information envoyée à la carte Arduino par le port série.
lwTimeStart = micros() // lecture du temps en micro secondes écoulé depuis la mise en marche de l'Arduino.

Conversion dans un strig
c.f. StringObject
char acStr[20]; // Pour conversion de nombre en un string.
String strS = "";
dtostrf(lwFrequ1/1000.0, 8, 3, acStr);
strS = acStr;
sprintf(acStr, "%4d ", sensorValue);
strS = strS + acStr;
sprintf(acStr, "%8ld ", lwValue);
strS = strS + acStr;

Il est possible de communiquer par le port série entre un Arduino et un programme en Python.
Exemple à venir---

En 2016, j'ai pu établir une communication entre un Arduino et un programme en javascript dans le navigateur Firefox. Pour cela, j'ai utilisé le plugin UART.
Mais en septembre 2017, cela ne fonctionnait plus.

Voici un programme minimaliste, qui fait clignoter la LED connectée à la pin 13.
/* Clignote
  Fait clignoter la LED de la pine 13, avec une période d'environ 2 secondes.
  La LED reste allumée 1 seconde, puis éteinte une seconde, puis recommence
 */

void setup() {
//============
// La fonction "setup()" est appelée une fois à la connexion de la carte
// ou au reset de la carte.
// Sur la plupart des cartes Arduino, la PIN 13 est connectée
// à une petite LED sur la carte.
pinMode(13, OUTPUT);  // Initialise la PIN 13 en mode "SORTIE"
} // setup

void loop() {
//===========
// La fonction "loop()" est appelée en boucle,
// juste après que la fonction "setup()" ait été exécutée.
digitalWrite(13, HIGH);   // Allume la LED de la PIN 13
delay(1000);              // attend une seconde
digitalWrite(13, LOW);    // Éteint la LED de la PIN 13
delay(1000);              // attend une seconde
} // loop
Les PINs 0 et 1 sont utilisés lors du transfert du programme de l'ordinateur à l'Arduino.


3) Installation de l'environnement de programmation de l'Arduino. TOP

Sous GNU/Linux, après l'installation, il faut taper depuis un Terminal :
sudo adduser bg dialout
Cela a pour effet d'ajouter l'utilisateur "bg" au groupe "dialout" et de permettre une communication entre l'ordinateur et l'Arduino.
Il faut ensuite redémarrer le système.

Pour transférer le programme de l'ordinateur à l'Arduino, il faut :
° Sélectionner le bon "Type de carte" : "Outils" > "Type de carte"
La liste qui suit dépend de la version installée.
° Sélectionner le bon port Série : "Outils" > "Port Série"
Chez moi le port série est : "/dev/ttyACM0"

Configuration chez moi, avec la version 1.0.5 :
Ne change pas fondamentalement avec la version 1.8.5 (avril 2018)
Pour télécharger sur un Arduino UNO :
Type de carte : Arduino UNO
Port série : /dev/ttyACM1
Programmeur : AVRISP mkll
Pour télécharger sur un Arduino MEGA :
Type de carte : Arduino MEGA 2560 or MEGA ADK
Port série : /dev/ttyACM1
Programmeur : AVRISP mkll
Pour le téléversement sur un chip ATmega328, utiliser :
Type de carte : Arduino mini w/ATmega328
Port série : /dev/ttyUSB1
Programmeur : AVRISP mkll
Pour le téléversement avec le chip CP2102 (FTDI 1412-G B8908572)
sur un chip ATmega328, utiliser :
Type de carte : Arduino mini w/ATmega328
Port série : /dev/ttyUSB1
Programmeur : AVRISP mkll
Connection :
USB (CP2101)
Converter     ATmega328
3V3 pin 1  --- NC  non connectée
Gnd pin 2  --- GND pin8 (et 22)
+5V pin 3  --- VCC pin7 (et 20 et 21)
TX  pin 4  --- Rdx pin2
RX  pin 5  --- Tdx pin3
DTR pin 6  --- Rst pin1  en série à traver un condensateur de 100 nF
Pour ajouter le "type de carte" "Arduino Due", aller dans :
Outils > Type de carte > Gestionnaire de Carte. Sélectionner : "Arduino SAM Boards (32-bits ARM Cortex-M3)


?) À ranger TOP

Des questions se posent :
1) Comment réduire la consommation d'un ATmega 328 ? (C'est le coeur de l'Arduino)
2) Comment faire fonctionner l'ATmega 328 sans quartz externe ? (Cela réduira la consommation.
3) Comment mettre dans un état de veille durant des minutes ou des heures un ATmega 328 ?

Running Atmega 328P without external quartz
Power saving techniques for microprocessors
AtMega328P, ISP and Internal Oscillator
Standalone ATmega328p

C.f. : "Arduino horloge temps réel"
Utiliser un module horloge temps réel DS1307 avec une carte Arduino / Genuino
[FR] Arduino et le DS3231 Horloge temps réel, une vidéo.


Un simulateur sous Tinkercad, bien pour s'initier à l'Arduino.
Allez dans "Circuits". Vous devrez créer un compte.





4) Des vidéos sur l'Arduino. TOP

Vidéo sur youtube présentant divers modèls d'Arduino. Fait par la société Sparkfun, en anglais.
Arduino Buying Guide 2017: Shawn's Picks, une autre présentation de Sparkfun, en anglais.
A comparison of many common Arduino types and their uses, en anglais.
The Arduino Family - Uno - Mega - Nano - Pro Mini -ATtiny85
180520 Using Servo Motors with Arduino, par exemple le MG 996R.
    L'article qui va avec la vidéo, où le code peut être téléchargé.
120611 Brushless DC Motors & Control - How it Works (Part 1 of 2)
Très clair, très bien expliqué.
120611 Brushless DC Motors & Control - How it Works (Part 2 of 2)
Suite très claire de la vidéo précédente.
120213 Introduction to InstaSPIN™-BLDC Motor Control Solution
170806 Make your own ESC || BLDC Motor Driver (Part 1)
Comment piloter un moteur Brushless avec un arduino.
170813 Make your own ESC || BLDC Motor Driver (Part 2)
190202 How Brushless Motor and ESC Work and How To Control them using Arduino
Très bien, expliqué le principe de feedback sur la position du moteur. Montre comment l'utiliser avec un Arduino.
How to connect a FT232RL programmer to the Arduino ATMEGA328 for uploading sketches
1-Day Project: Build Your Own Arduino Uno for $5


Publié sur Youtube par GreatScott!
140531 Electronic Basics #6: Standalone Arduino Circuit
150327 Electronic Basics #11: Sending SMS with Arduino || TC 35 GSM Module
190519 Utiliser un SIM800L facilement avec n'importe quel Arduino. (Module GSM)
Easy & Powerful Arduino Alternative? #3 Teensy Beginner's Guide
Montre une utilisation du DAC, pour générer un sinus.



Publié sur Youtube par eHaJo, en allemand
170731 Wie programmiert man einen Mikrocontroller, Arduino, Bootloader und co.
Neuprodukte / Newsletter_eHaJo-News
Donne des informations sur la plaque : aTeVaL v2.0.1, en particulier comment l'utiliser pour programmer un chip ATmega328, sans bootloader et comment charger un bootloader dans un ATmega328.
Montage et soudure du module aTeVal 2.0.



Voir aussi : Wolles Elektronikkiste, divers projets avec l'Arduino, utilisant divers capteurs.
et
aTeVaL 2.0 – The Universal Tool, Des informations sur cette superbe carte.

À VOIR ...
Top 10 Arduino-Sensors with Projects for Beginners
Sensors - which one to use
What is a Breakout Board for Arduino
You can learn Arduino in 15 minutes.
LA DOMOTIQUE À 2€ : ARDUINO, RELAIS 230V, DOMOTIQUE ET SÉCURITÉ
Prise 230V commandée par Internet (Arduino + relais)
Domotique : pilotez une lampe grâce aux relais, de openclassrooms.

J'ai recherché : "arduino weak up" :
Very LOW Power Arduino - Precise Time Interval Wakeup! using an RTC
#115 Put your Arduino to Sleep (using wake up INTERRUPT)
Tutorial:A guide to putting your Arduino to sleep



Arduino - Blockly.
Tutoriel simple pour créer un programme sur Arduino sans savoir coder grâce à Blockly@rduino
Premier programme Blockly@rduino v2.
Fiche 1 - Blockly@rduino
Fiche 3 - Blockly@rduino
Fiche 4 - Blockly@rduino, installation et branchement à l'ordinateur.
Fiche 5 - Blockly@rduino. Installation de plugin pour téléverser dans l'Arduino depuis le navigateur.
De Frédéric Picard.
Blockly-Arduino, génération de code arduino, avec des blocs de Blockly.
Blockly-Arduino, page d'accueil du site Web précédent.


Arduino - Raspberry Pi.
Arduino vs. Raspberry Pi - Which is best? | AddOhms #7
Raspberry Pi or Arduino Uno? One Simple Rule to Choose the Right Board
Arduino vs. Raspberry Pi
Arduino vs Raspberry Pi: A Detailed Comparison





Raspberry Pi et cartes similaires.
Asus Tinker Board
Asus Tinker Board : Découverte
Raspberry Pi 4 : Est-il Devenu un Bon PC ?
Tinker Board S, la Plus Petite Carte Mère Asus !
Tinker Board Forum, les systèmes d'exploitations supportés.

Codebender.cc, pour accéder à l'Arduino depuis la page Web.




browser.tabs.insertRelatedAfterCurrent -> false
view_source.editor.external -> true
view_source.editor.path -> /usr/bin/geany
security.fileuri.strict_origin_policy -> false
??? plugins.load_appdir_plugins -> true, est-ce utile ???
Pour google-chrome, à taper dans un terminal :
/usr/bin/google-chrome --disable-web-security --allow-file-access-from-files

Divers à voir.
TOR : the dark WEB - Monsieur Bidouille
Le VPN, la protection ultime ? - Monsieur Bidouille
7 RAISONS POUR UTILISER UN VPN dès MAINTENANT
TOP 3 : Meilleure Imprimante 3D 2019 / 2020
Quelle est mon imprimante 3D préférée ? De Tommy Desrochers.

Communicating with Arduino over Ethernet using Node.js
c.f. recherche : Arduino Ethernet node.js
#059 The Teensy 3.5: Bigger on the inside. // Review
Les 6 meilleures alimentaion stabilitée

Using a PCA9685 module with Arduino
Pour contrôler 16 servo-moteurs, avec juste deux sorties de l'Arduino.
Il est également possible de contrôler 16 LED avec ce module.
Utilisation d’un module PCA9685 avec Arduino
Page équivalente à la précédente, en français.


5) D'autres cartes electroniques. TOP

5 Microchips Every Geek Must Have!





Plan du Site : Home   arrow   microcontroleur.html ( = http://www.juggling.ch/gisin/microcontroleur/microcontroleur.html )


Page mise à jour le 26 mars 2021 par Bernard Gisin     ( Envoyer un e-mail )
Hébergement par : www.infomaniak.ch