Qu’est-ce qu’Arduino Uno ?

  • Microcontrôleur éducatif : Carte électronique open-source, idéale pour apprendre l’interaction entre logiciel et matériel.
  • Cœur du système : Basée sur un microcontrôleur ATmega328P (architecture 8-bit AVR).
  • Simplicité : Conçue pour les débutants, avec une communauté active et des ressources abondantes.

Caractéristiques Techniques Clés

ComposantDétails
ProcesseurATmega328P @ 16 MHz (puissance équivalente à un ordinateur des années 80 !)
Mémoire32 KB Flash (programmes), 2 KB RAM (données), 1 KB EEPROM (stockage persistant)
Entrées/Sorties– 14 broches digitales (dont 6 PWM pour contrôler moteurs/LED)
– 6 entrées analogiques (capteurs)
ConnectivitéPort USB (transfert de programmes + alimentation), broches ICSP (programmation avancée)
Alimentation5V via USB ou fiche jack (7-12V recommandé)

Pourquoi Arduino en Informatique ?

  • Pont logiciel-matériel : Apprendre à piloter des capteurs, moteurs, LEDs depuis le code.
  • Langage accessible : Programmation en C/C++ simplifié (avec bibliothèques dédiées).
  • Prototypage rapide : Idéal pour valider des concepts IoT, robotique, ou systèmes embarqués.
  • Écosystème étendu : Capteurs (température, mouvement), modules (Wi-Fi, Bluetooth), afficheurs…

Exemples d’Applications

  • Domotique : Station météo avec capteurs d’humidité/température.
  • Robotique : Contrôle de moteurs pour un robot éviteur d’obstacles.
  • IoT : Envoyer des données de capteurs sur Internet (via module ESP8266).
  • Interactivité : Commander des LEDs par smartphone ou créer un mini-synthétiseur.

Environnement de Développement

  • IDE Arduino : Logiciel gratuit (Windows/macOS/Linux), avec :
    • Éditeur de code + moniteur série.
    • Bibliothèques intégrées (ex: Servo.h pour les moteurs).
    • Compilation et upload en un clic.
  • Code exemple (Blink LED) 
void setup() {
  pinMode(13, OUTPUT); // Broche 13 (LED intégrée) en sortie
}

void loop() {
  digitalWrite(13, HIGH); // Allumer la LED
  delay(1000);            // Attendre 1 seconde
  digitalWrite(13, LOW);  // Éteindre la LED
  delay(1000);            // Attendre 1 seconde
}

  • Apprentissage concret : Comprendre les interruptions, la gestion du temps réel, l’ADC (conversion analogique-numérique).
  • Debugging matériel : Utilisation du moniteur série pour suivre l’exécution.
  • Projets collaboratifs : Intégration facile avec Python, Processing, ou des APIs web.

Ressources Recommandées

Conclusion :
L’Arduino Uno est un outil essentiel pour explorer l’informatique physique. Il transforme des concepts abstraits (algorithmes, structures de données) en applications tangibles, tout en développant des compétences en électronique et prototypage. Un investissement idéal pour s’initier à l’embarqué et à l’IoT ! 🚀


On voit sur ce schéma que l’arduino Uno il y a 2 ATMEGA 328P

un en boitier DIP que vous utilisez , et un autre en circuit cms (composant monté en surface) pour la communication PC / Arduino UNO et la programmation de l’autre

DIP 28 Broches / CMS 32 broches

on retrouve des alimentations 3.3V , 5 V , des GND (0V)

Aref pour entrer une tension de référence analogique max sur 10 bits (2^10)

~ permettent de repérer les broches capable de générer de la PWM

A0 à A5 6 entrée analogique sur 10 bits (1024) 2^10

LOGICIEL Arduino IDE 1.8.19

Dans le monde Arduino, un programme est appelé un « sketch » (esquisse en français). Ce terme vient de l’idée que programmer un microcontrôleur, c’est comme dessiner une idée rapidement, sans la complexité des gros projets logiciels. C’est une approche minimaliste et artistique, comme un brouillon qui devient fonctionnel.

organigramme d’un sketch arduino

https://www.arduino.cc/en/software

la version 1.8.19 est plus facile à installer au lycée

Le plus simple au lycée et d’installer arduino ide version 1.8.19 (dernière avant la 2.0)

sudo apt update && sudo apt install arduino

Le fichier main caché est ici sous linux avec notre installation Arduino 1.8.19

/usr/share/arduino/hardware/arduino/avr/cores/arduino/main.cpp

main.cpp
/*
  main.cpp - Main loop for Arduino sketches
  Copyright (c) 2005-2013 Arduino Team.  All right reserved.

  This library is free software; you can redistribute it and/or
  modify it under the terms of the GNU Lesser General Public
  License as published by the Free Software Foundation; either
  version 2.1 of the License, or (at your option) any later version.

  This library is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  Lesser General Public License for more details.

  You should have received a copy of the GNU Lesser General Public
  License along with this library; if not, write to the Free Software
  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
*/

#include <Arduino.h>

// Declared weak in Arduino.h to allow user redefinitions.
int atexit(void (* /*func*/ )()) { return 0; }

// Weak empty variant initialization function.
// May be redefined by variant files.
void initVariant() __attribute__((weak));
void initVariant() { }

void setupUSB() __attribute__((weak));
void setupUSB() { }

int main(void)
{
	init();

	initVariant();

#if defined(USBCON)
	USBDevice.attach();
#endif
	
	setup();
    
	for (;;) {
		loop();
		if (serialEventRun) serialEventRun();
	}
        
	return 0;
}

ARDUINO CLI

CLI = Command Line Interface

installation

cd
sudo apt update
sudo apt  install curl
cd Softs #il doit exister 
mkdir arduino-cli
cd arduino-cli
curl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | sh
export PATH=$PATH:$HOME/Softs/arduino-cli/bin  # Ajoute le CLI au PATH

ajouter cette ligne à la fin du fichier ~/bashrc

export PATH=$PATH:$HOME/Softs/arduino-cli/bin

depuis un terminal vérifier que arduino-cli est accessible

sudo apt update && sudo apt install -y git avrdude avr-libc gcc-avr
arduino-cli config init
arduino-cli core update-index
arduino-cli core install arduino:avr

dans Works/arduino-cli/

mkdir ~/blink && cd ~/blink
cat > blink.ino <<EOF
void setup() { pinMode(13, OUTPUT); }
void loop() {
  digitalWrite(13, HIGH); delay(1000);
  digitalWrite(13, LOW); delay(1000);
}
EOF
arduino-cli compile   --fqbn arduino:avr:uno   --build-path ~/Works/arduino-cli/blink/build   ~/Works/arduino-cli/blink

L’option –fqbn (Fully Qualified Board Name) est un paramètre clé dans Arduino CLI qui spécifie exactement quelle carte Arduino vous ciblez, y compris l’architecture et les options spécifiques.

on peut voir ensuite ce qui est généré

etudiant@ordi:~/Works/arduino-cli/blink/build$ ls -l
total 112
-rw-rw-r-- 1 etudiant etudiant    13 août  10 17:06 blink.ino.eep
-rwxrwxr-x 1 etudiant etudiant 14148 août  10 17:06 blink.ino.elf
-rw-rw-r-- 1 etudiant etudiant  2615 août  10 17:06 blink.ino.hex
-rw-r--r-- 1 etudiant etudiant 32768 août  10 17:06 blink.ino.with_bootloader.bin
-rw-rw-r-- 1 etudiant etudiant  3972 août  10 17:06 blink.ino.with_bootloader.hex
-rw-r--r-- 1 etudiant etudiant   337 août  10 17:06 build.options.json
-rw-r--r-- 1 etudiant etudiant 24889 août  10 17:06 compile_commands.json
drwxr-xr-x 2 etudiant etudiant  4096 août  10 17:01 core
-rw-r--r-- 1 etudiant etudiant   443 août  10 17:06 includes.cache
drwxr-xr-x 2 etudiant etudiant  4096 août  10 17:01 libraries
-rw-r--r-- 1 etudiant etudiant   161 août  10 17:06 libraries.cache
drwxr-xr-x 2 etudiant etudiant  4096 août  10 17:06 sketch
etudiant@ordi:~/Works/arduino-cli/blink/build$ 

download

arduino-cli upload \
  -p /dev/ttyACM0 \
  --fqbn arduino:avr:uno \
  ~/Works/arduino-cli/blink

ARDUINO 2 et plus

Dans votre répertoire utilisateur , il faut un répertoire , à l’installation de la IDE 2.XX

Arduino2 au lycée.

cd ~ #répertoire utilisateur
ls -la
.arduinoIDE .....

il faut y mettre ce fichier qui va permettre d’utiliser la version 2 de arduinoIDE a travers le proxy du lycée.

arduino-cli.yaml
board_manager:
  additional_urls: []
build_cache:
  compilations_before_purge: 10
  ttl: 720h0m0s
daemon:
  port: "50051"
directories:
  builtin:
    libraries: /home/bruno/.arduino15/libraries
  data: /home/bruno/.arduino15
  downloads: /home/bruno/.arduino15/staging
  user: /home/bruno/Arduino
library:
  enable_unsafe_install: false
locale: fr
logging:
  file: ""
  format: text
  level: info
metrics:
  addr: :9090
  enabled: true
network:
  proxy: http://10.0.0.1:3128/
  user_agent_ext: daemon
output:
  no_color: false
sketch:
  always_export_binaries: false
updater:
  enable_notification: true
network:
  proxy:
    address: "http://user:password@proxyhost:port"