Mes projets Arduino DiY
Logo Institution Saint-Jean
Institution Saint-Jean — Colmar
Filière CIEL d'Électronique
Informatique et Réseau
Biechy Jean-Marc
Professeur Certifié
Éducation Nationale
IoToS — Internet of Things micro-Operating System
Embedded multi-service cooperative shell for Arduino UNO R4 — ESP32 / 8266
Présentation

J'ai écrit un petit système d'exploitation en partant de zéro et fonctionnant sur un Arduino ou un ESP32. Il me permet de faire de la programmation et des projets DIY avec mes élèves. Il a une ligne de commande qui ressemble à MS-DOS ou à Linux… mais sinon c'est codé en C++ en utilisant l'IDE Arduino et ses librairies.

IoToS — Internet of Things micro Operating System

Pour créer l'OS, je suis parti de libs (lib LittleFS, ping, FTP, dir…) et d'exemples que j'ai rassemblés petit à petit pour les faire discuter ensemble.

Mon but… voir si c'était possible d'en écrire un tout seul… Et environ 2000 heures de codage et de tests plus tard, je l'utilise avec mes élèves pour créer des systèmes :

Prise IP — allumer ou éteindre un appareil depuis un navigateur web ou en ligne de commande

Caméra IP — LilyGo pour surveillance à distance connectée au réseau WiFi et photo déclenchée par un détecteur de mouvement

Station météo web — capteurs de température, d'humidité, de pression, consultables en ligne

Alarme capteur mouvement PIR — détection de mouvement avec envoi d'e-mail automatique

GTB — Gestion technique de bâtiment, commande de chauffage à distance

Projecteur DMX ou guirlande de LED RVB — commande de LED par Ethernet

Mais aussi, ce micro-OS permet d'expliquer aux élèves le fonctionnement d'un « OS » et ses limites.

En effet, l'Arduino est un microcontrôleur qui exécute un setup (une fois) et une loop qui tourne sans fin : c'est un automate !

Je voulais faire la liaison entre un automate sans OS et… un vrai petit OS. Mais entre les deux il n'y a rien :

Soit c'est trop limité, pas de ligne de commande (OS temps réel : RTOS)

Soit c'est trop gros ou écrit en assembleur…

Ici le code source est commenté et il est séparé en parties distinctes :

Un Boot Firmware (avant le setup)

Un Load Driver : le setup() : connexion réseau ou WiFi, portail captif, gestion du LCD…

Un Kernel : le loop()

Un CLI : shell_Cmdline.h

Des Apps : serveur web, FTP…

Grâce à l'IoToS, on a un petit OS : on peut voir le chaînon manquant entre l'automate et un vrai petit « OS ».

Ce micro OS permet d'avoir un support de service pour ses projets, je diffuse le code source pour que d'autres puissent l'utiliser et continuer à s'amuser en programmant, pour le nouveau Arduino R4 Minima et le Shield Ethernet v2, mais aussi l'ESP32 / 8266.

Système : Prise IP sous IoToS sans écran v72 Arduino UNO R4
Fichier source : PriseIP_UNOR4_jsWEB_SD_FTP_LogCmdLine_IDE2_v72
Télécharger .rar

Les services disponibles :

Un CLI (Command Line Interface) en Serial ou Telnet offre un shell cmdLine interactif de type MS-DOS / UNIX.

Les commandes disponibles couvrent la configuration réseau (ip subnet gateway dhcp port web).

La gestion des fichiers SD (dir type del rename copie).

Les outils réseau (ping tracert netstat).

Ainsi que la sauvegarde en EEPROM de la configuration (save reload defaults reset).

IoToS embarque également un serveur WEB AJAX avec pages HTML stockées sur carte MicroSD (sur l'Ethernet Shield v2).

Un serveur FTP pour un accès aux fichiers de la carte MicroSD depuis le réseau.

Une synchronisation NTP, un datalogger CSV horodaté.

Un afficheur LCD ou un écran LCD TFT avec menu et boutons de configuration (selon version).

Le tout sur un ARM Cortex-M4 ou ESP32/8266 sans système d'exploitation temps réel, selon un modèle de noyau coopératif.

L'IoToS vient en soutien au système pour lequel l'Arduino est câblé (prise IP, station Météo, caméra IP, DMX, Alarme PIR…)

Le code métier est compilé avec IoToS dans le même firmware.

La prise IP (commande de LED par page WEB) constitue le système minimal de référence.

Pour intégrer votre propre système DIY, IoToS est conçu pour être étendu : ajoutez vos commandes CLI, vos pages WEB et vos drivers dans les fichiers .h prévus à cet effet.

Licence : GNU LGPL v2.1 — usage libre y compris commercial, code applicatif propriétaire autorisé.

Fichiers
NomDescriptionType / TailleModifié
libraries/Librairies tierces modifiéesDossier22/05/2026
Arduino-MemoryFree/RAM libre — BeerwareDossier
CmdLineTelnetAuto_UNOR4_v20/CLI Serial/Telnet (modifiée)Dossier
Ethernet/Ethernet W5500 v1.5.3 / 2.0.2Dossier
EthernetICMP/Ping complet RA4M1 (modifiée)Dossier
NTPClient_v3/Horloge Internet NTP (modifiée)Dossier
SdFat/FAT32 noms longs v2.3.1 — MITDossier
SimpleFTPServer/Serveur FTP FileZilla (modifiée)Dossier
data/Fichiers MicroSD (pages WEB + logs)Dossier09/04/2026
index.htmPage Système — commande LED AJAXHTML · 27 Ko27/03/2026
ConfIP.htmPage Configuration IP réseauHTML · 66 Ko27/03/2026
ConfIP_original.htmBackup page Config IPHTML · 11 Ko24/02/2026
datalogger.csvJournal horodaté NTP (Excel)CSV · 1 Ko17/03/2026
data.csv / datalogger_vierge.csvTemplates DataloggerCSV · 1 Ko24/02/2026
confBI / confCEPAZ / confCEPAZoldFichiers de configuration réseau1 Ko17/03/2026
PriseIP_UNOR4_jsWEB_SD_FTP_LogCmdLine_IDE2_v72.inoFichier source principal ArduinoINO · 82 Ko25/05/2026
Shell_CmdLine_SD.hShell CLI — Serial / Telnet.h · 137 Ko23/05/2026
ServeurWEB.hServeur HTTP AJAX.h · 42 Ko02/04/2026
Driver_Ethernet_Reseau.hDriver Ethernet W5500.h · 11 Ko19/05/2026
utils.hUtilitaires système.h · 18 Ko22/05/2026
README.mdDocumentation principaleMD · 26 Ko25/05/2026
__DOC Version Arduino uno rev4 minima et shield ethernet v2 (A000024 W5500).txtNotes de versionTXT · 1 Ko25/05/2026
Vidéos 4
IoToS — Ligne de commande Serial & Telnet
CLI · Login · TAB Autocomplétion · Historique ↑↓
IoToS_system_fichiers.mp4
Tuto — Configuration IP de l'IoToS
IP · Passerelle · Masque · EEPROM save / reload
IoToS_configuration_IP.mp4
Connexion FTP avec FileZilla
Accès fichiers MicroSD · Login · Transfert
FileZilla.mp4
Défilement du code source de l'IoToS
Arduino IDE 2 · Revue complète du .ino (82 Ko)
video_source.mp4
Documentation IoToS
NomDescriptionType / Taille
DOC IoToS - Arduino UNO R4 Minima v10.pdf Documentation complète IoToS PDF Ouvrir
Photos
Arduino UNO R4 Minima
Arduino UNO R4 Minima — Renesas RA4M1 / ARM Cortex-M4
Ethernet Shield v2 W5500
Ethernet Shield v2 (W5500) — Port SD intégré
Page WEB IoToS — Système
Page WEB — Système & commande LED
Page WEB IoToS — Configuration IP
Page WEB — Configuration IP réseau
Boot IoToS
boot_IoToS.jpg
Help IoToS
help_IoToS.png
Print IoToS
print_IoToS.png
Gestionnaire fichiers IoToS
Gestionnaire_fichier_IoToS.png
Documentation

IoToS — Internet of Things Operating System

Micro OS pour Arduino UNO R4 Minima (Renesas RA4M1 / ARM Cortex-M4) + Ethernet Shield v2 (W5500).
Transforme la carte en nœud réseau complet : CLI Serial/Telnet, serveur WEB AJAX, FTP, Datalogger NTP, ping/tracert/netstat, EEPROM.

Arduino UNO R4 Minima Ethernet Shield W5500 Arduino IDE 2.3.7 MicroSD FAT32 GNU LGPL v2.1

📦 Occupation mémoire

  • Programme : 142 980 octets — 54 % des 262 144 octets disponibles
  • RAM globale : 13 820 octets — 42 % des 32 768 (18 948 libres)

🔌 Câblage

  • D2 / D3 — Boutons (+) et (−) sur interruptions
  • D5 — Module LED Grove (sortie)
  • D8 — Bouton OK
  • LED_BUILTIN — Allumé pendant le boot de l'IoToS
  • Ethernet Shield v2 — SPI + port SD intégré

⚠️ Notes IDE

  • Arduino IDE 2.3.8 requis (IDE 1.x.x : bug Ethernet IP fixe)
  • Librairies : Ethernet 1.5.3 / Ethernet@2.0.2 — copier dans \Mes Documents\Arduino\libraries\
  • Carte MicroSD : FAT32, noms longs (MSDOS)
  • Double appui rapide sur RESET → active le bootloader
CLI — Commandes disponibles

Système général

CommandeArgumentDescription
printAffiche la configuration complète (IP, services, état)
nameChanger le nom du système
LEDon/offAllumer / éteindre la LED
WEBon/offDémarrer / arrêter le serveur WEB
FTPon/offDémarrer / arrêter le serveur FTP
ramRAM disponible
pingxx.xx.xx.xxPing complet ICMP
tracert<URL>Traceroute réseau
netstatÉtat des connexions réseau
versionVersion et infos debug

Fichiers MicroSD (Mini MS-DOS)

CommandeArgumentDescription
dirListe les fichiers sur la MicroSD
type<nom.ext>Affiche le contenu d'un fichier
del<nom>Supprime un fichier
rename<old> <new>Renomme un fichier
copie<src> <dst>Copie un fichier
edit<texte>Ajoute une ligne (max 100 car.)
create<nom.ext>Crée un fichier avec en-tête Excel
select<nom.ext>Sélectionne le fichier Datalogger actif
dataloggeron/offActive / désactive l'enregistrement

Configuration réseau IP

CommandeArgumentDescription
ip192.168.0.xDéfinir l'adresse IP
subnet255.255.255.0Masque de sous-réseau
gateway192.168.0.xPasserelle
macDE:AD:BE:EF:FE:EDAdresse MAC
dhcpon/offActiver / désactiver le DHCP
port0–65535Port du serveur WEB (défaut 80)

EEPROM & Redémarrage

CommandeDescription
saveSauvegarde la configuration en EEPROM
reloadRecharge la configuration depuis l'EEPROM
defaultsRemet la config d'usine (192.168.0.10)
resetRedémarre l'Arduino avec la config EEPROM

WEB & FTP

CommandeArgumentDescription
loginWEBon/offActiver / désactiver l'auth sur le site WEB
login-passWEBChanger Login:Password (base64 — base64encode.org)
loginFTPChanger le login FTP
passwordFTPChanger le password FTP

Connexions

Serial : 115200 bps · NL+CR · Putty Flow control → None

Telnet : Host = IP Arduino · Port 23 · Décocher "Return key sends Telnet New Line"

FTP (FileZilla) : Auth type = Compte · Limiter à 1 connexion simultanée · Login/pass par défaut : arduino / arduino

Licence

GNU LGPL v2.1

✅ Droits accordés

  • Usage libre y compris commercial
  • Modification des fichiers IoToS
  • Intégration dans un firmware propriétaire
  • Code applicatif (.ino) reste votre propriété

⚠️ Obligations (redistribution)

  • Distribuer les sources IoToS modifiées
  • Conserver les en-têtes de copyright
  • Mentionner l'usage d'IoToS et sa licence
  • Ne pas ajouter de restrictions supplémentaires

Bibliothèques tierces

BibliothèqueVersionLicenceModifiéeObligation principale
Arduino-MemoryFreeBeerwareNonAucune
EthernetICMPLGPL v2.1OUIDistribuer .h/.cpp modifiés
NTPClient2MITOUIConserver copyright
SdFatv2.3.1MITNonConserver copyright
SimpleFTPServerMITOUIConserver copyright
U8g2 (code)2.35.30BSD 2-ClauseNonConserver copyright
U8g2 (polices)2.35.30OFL/MIT/BSDNonVérifier par police
CmdLineTelnetv20OUIVoir dépôt d'origine

Auteur : Jean-Marc Biechy — Institution Saint-Jean, École d'Électronique Informatique et Réseau — Colmar, France — 01/03/2026
Contact : radiobiechy@gmail.com — Fourni en l'état sans garantie.

Système : Prise IP sous IoToS avec écran d'affichage LCD 128×64 et menu 3 boutons v72 Arduino UNO R4
Fichier source : PriseIP_UNOR4_jsWEB_SD_FTP_LogCmdLine_LCDiMenu_IDE2_v72
Télécharger .rar
IoToS — Internet of Things Operating System
Fichiers
NomDescriptionType / TailleModifié
data/Fichiers MicroSD (pages WEB + logs)Dossier24/04/2026
libraries/Librairies tierces + U8g2 v2.35.30 (ST7567S)Dossier25/05/2026
__DOC Version -- Arduino uno rev4 minima et shield ethernet v2 (A000024 W…Notes de version ArduinoTXT · 1 Ko31/03/2026
__DOC Version -- LCD TFT I2C GM12864-59N VER 2.0 (ST7567S) Lib U8g2-2.35…Notes de version LCD U8g2TXT · 0 Ko27/02/2026
Driver_Ethernet_Reseau.hDriver Ethernet W5500.h · 11 Ko19/05/2026
LCD_GM12864_64x128.hDriver écran LCD TFT ST7567S — U8g2.h · 79 Ko08/04/2026
PriseIP_UNOR4_jsWEB_SD_FTP_LogCmdLine_LCDiMenu_IDE2_v72.inoFichier source principal ArduinoINO · 127 Ko25/05/2026
README.mdDocumentation principaleMD · 29 Ko25/05/2026
ServeurWEB.hServeur HTTP AJAX.h · 42 Ko02/04/2026
Shell_CmdLine_SD.hShell CLI — Serial / Telnet.h · 140 Ko22/05/2026
utils.hUtilitaires système.h · 25 Ko24/05/2026
Photos
Logo IoToS
logo
Ecran LCD TFT I2C 128x64 GM12864-59N VER2.0 ST7567S
Ecran LCD TFT I2C 128x64 -- GM12864-59N -- VER2.0 (ST7567S)
Diagramme de fonctionnement de l'IoToS
Diagramme de fonctionnement de l'IoToS
Configuration avec le Menu LCD
configuration avec le Menu LCD
Documentation

IoToS — LCD 128×64 avec menu 3 boutons

Version d'IoToS avec écran LCD TFT I2C GM12864-59N VER 2.0 (ST7567S) via librairie U8g2 v2.35.30.
Menu rotatif 5 lignes navigable avec 3 boutons sur interruptions : (−)   (OK)   (+).

Arduino UNO R4 Minima Ethernet Shield W5500 LCD 128×64 ST7567S U8g2 v2.35.30 Arduino IDE 2.3.8 MicroSD FAT32

🖥️ Écran LCD

  • Modèle : GM12864-59N VER 2.0 — contrôleur ST7567S
  • Interface : I2C — adresse 0x3F × 2
  • Résolution : 128 × 64 pixels
  • Menu 5 lignes rotatif — navigation par interruptions
  • Bouton (−) sur D2 · Bouton (OK) sur D8 · Bouton (+) sur D3
  • Librairie : U8G2_ST7567_ENH_DG128064I_F_SW_I2C
  • Boot : ordre SPI → SD → Wire → LCD → ETH (PROGMEM logo)

📦 Occupation mémoire

  • Programme : 163 844 octets — 62 % des 262 144 octets disponibles
  • RAM globale : 16 276 octets — 49 % des 32 768 (16 492 libres)

🔌 Câblage

  • D2 — Bouton (−) sur interruption
  • D3 — Bouton (+) sur interruption
  • D5 — Module LED Grove (sortie)
  • D8 — Bouton OK
  • SDA / SCL — Écran LCD I2C ST7567S
  • LED_BUILTIN — Allumé pendant le boot de l'IoToS
  • Ethernet Shield v2 — SPI + port SD intégré

⚠️ Notes IDE

  • Arduino IDE 2.3.8 requis
  • Librairie U8g2 v2.35.30 — BSD 2-Clause
  • Polices U8g2 : OFL / MIT / BSD / Adobe — vérifier par police
  • Carte MicroSD : FAT32, noms longs (MSDOS)
  • Double appui rapide sur RESET → active le bootloader
Système : Prise IP sous IoToS avec écran d'affichage LCD I2C Blacklight v72 Arduino UNO R4
Fichier source : PriseIP_UNOR4_jsWEB_SD_FTP_LogCmdLine_LCDBlack_IDE2_v72
Télécharger .rar
IoToS — Internet of Things Operating System
Fichiers
NomDescriptionType / TailleModifié
data/Fichiers MicroSD (pages WEB + logs)Dossier09/04/2026
libraries/Librairies tierces (idem version sans écran + U8g2)Dossier22/05/2026
__DOC Version -- Arduino uno rev4 minima et shield ethernet v2 (A000024 W…Notes de version ArduinoTXT · 1 Ko17/03/2026
__DOC Version -- LCD Grove BlackLight.txtNotes de version LCD Grove BlacklightTXT · 0 Ko27/02/2026
Driver_Ethernet_Reseau.hDriver Ethernet W5500.h · 11 Ko19/05/2026
PriseIP_UNOR4_jsWEB_SD_FTP_LogCmdLine_LCDBlack_IDE2_v72.inoFichier source principal ArduinoINO · 88 Ko27/05/2026
README.mdDocumentation principaleMD · 26 Ko25/05/2026
ServeurWEB.hServeur HTTP AJAX.h · 42 Ko02/04/2026
Shell_CmdLine_SD.hShell CLI — Serial / Telnet.h · 140 Ko22/05/2026
utils.hUtilitaires système.h · 21 Ko22/05/2026
Photos
Module Grove Base
module Grove Base
Ecran LCD I2C Grove Blacklight
ecran lcd I2C Grove Blacklight Affichage de messages
Documentation

IoToS LCD — avec écran I2C Blacklight

Version d'IoToS avec écran LCD I2C Blacklight RGB intégré — menu rotatif 5 lignes, 3 boutons OK / (+) / (−) sur interruptions.

Arduino UNO R4 Minima Ethernet Shield W5500 LCD I2C Blacklight Arduino IDE 2.3.8 MicroSD FAT32

📦 Occupation mémoire

  • Programme : 150 248 octets — 57 % des 262 144 octets disponibles
  • RAM globale : 15 028 octets — 45 % des 32 768 (17 740 libres)

🔌 Câblage

  • D2 / D3 — Boutons (+) et (−) sur interruptions
  • D5 — Module LED Grove (sortie)
  • D8 — Bouton OK
  • LCD I2C Blacklight — SDA/SCL (I2C)
  • LED_BUILTIN — Allumé pendant le boot de l'IoToS
  • Ethernet Shield v2 — SPI + port SD intégré

⚠️ Notes IDE

  • Arduino IDE 2.3.8 requis
  • Librairie supplémentaire : U8g2 v2.35.30 (écran ST7567S)
  • Boot I2C après SPI : ordre SPI → SD → Wire → LCD → ETH
  • Carte MicroSD : FAT32, noms longs (MSDOS)
ESP32 - Prise IP sous IoToS sans écran v74 ESP32
Fichier source : WemosESP32_LittleFS_CmdLineLogTelnetBlue_Pcaptif_v74
Télécharger .rar
IoToS — Internet of Things Operating System
Fichiers
NomDescriptionType / TailleModifié
data/Fichiers LittleFS (pages WEB + logs)Dossier20/05/2026
libraries/Librairies tiercesDossier28/05/2026
upload BAT/Scripts upload LittleFSDossier28/05/2026
___DOC_Version_Compilateur_IDE_2.3.8 ok -- ESP32 LIB 3.3.8 ok --.txtNotes version compilateurTXT · 0 Ko17/05/2026
__DOC_Version_Documentation_v74.txtDocumentation v74TXT · 56 Ko20/05/2026
Driver_ESP32_Reseau_PortailCaptif.hDriver réseau ESP32 + portail captif.h · 25 Ko20/05/2026
littlefs.binImage binaire LittleFSBIN · 1 408 Ko22/05/2026
ServeurWEB.hServeur HTTP AJAX.h · 72 Ko20/05/2026
Shell_CmdLine_LittleFS_WiFi.hShell CLI — Serial / Telnet / WiFi.h · 105 Ko22/05/2026
upload_littleFS_WEMOS_ESP32_D1_R32_v6.batScript upload LittleFSBAT · 34 Ko22/05/2026
utils.hUtilitaires système.h · 32 Ko20/05/2026
WemosESP32_LittleFS_CmdLineLogTelnetBlue_Pcaptif_v74.inoFichier source principal ArduinoINO · 95 Ko22/05/2026
Photos
WemosESP32 D1 R32
WemosESP32 D1 R32
WemosESP32 D1 R32 PinOut
WemosESP32 D1 R32 PinOut
Documentation

IoToS — ESP32 Wemos D1 R32

Version d'IoToS pour ESP32 Wemos D1 R32 (Wroom 32 · 4 Mo Flash) — CLI Serial/Telnet, Bluetooth, portail captif, LittleFS.

ESP32 Wemos D1 R32 Arduino IDE 2.3.8 ESP32 Espressif 3.3.8 LittleFS

💻 IDE Compilateur

  • ESP32 Fichier → Préférences : https://dl.espressif.com/dl/package_esp32_index.json
  • Compilateur : Arduino IDE 2.3.8
  • Librairie : ESP32 par Espressif Systems v3.3.8

🗂️ Type de carte et Partition (système de fichiers)

  • Programme de BASE : ESP32 Wemos D1 R32 — Wroom 32 (4 Mo Flash)
  • Type de carte : WEMOS D1 R32

Schémas de partition disponibles :

Partition SchemeAPP (OTA0)APP (OTA1)LittleFSOTA
Default 4MB with SPIFFS1.250 MB1.250 MB1.375 MBOui
No OTA (Large App)2.000 MB1.875 MBNon
Minimal SPIFFS (Large App with OTA)1.875 MB1.875 MB0.120 MBOui
  • → Sans Bluetooth : Default 4MB with SPIFFS OTA (1.2MB APP OTA / 1.375MB LittleFS)
  • → Sans OTA : No OTA Large App (1.3MB APP / 680KB LittleFS)
  • → Large App OTA : Minimal SPIFFS (1.875MB APP OTA / 120KB LittleFS)

📦 Occupation mémoire

  • Programme : 1 086 957 octets — 82 % des 1 310 720 octets disponibles
  • RAM globale : 57 548 octets — 17 % des 327 680 (270 132 libres)

📂 Upload LittleFS

  • Uploader le sous-répertoire /data dans l'ESP en partition LittleFS
  • Via Arduino IDE : ⚠ Attention bug de partition (en attente de mise à jour de l'IDE)
    Ctrl + Shift + P"Upload LittleFS to Pico/ESP8266/ESP32"
    Source : github.com/earlephilhower/arduino-littlefs-upload
  • Via script BAT : lancer upload_littleFS_WEMOS_ESP32_D1_R32_v6.bat
    Entrer le port COM · Entrer le type de partition

⚠️ Notes de carte

  • Type de carte : WEMOS D1 R32
  • Type de carte : ESP32 Dev ModuleStandard LED_BUILTIN non reconnu (décommenter LED_BUILTIN dans le code)
  • Type de carte : WEMOS D1 Mini ESP32
Système : Caméra IP LilyGO v78 ESP32 LilyGO
Fichier source : CAM_LilyGO_MIC_ESP32_OTA_LiFS_FTP_CmdLineTelnetBlue_jsWEB_78
Télécharger .rar
IoToS — Internet of Things Operating System
Fichiers
NomDescriptionType / TailleModifié
data/Fichiers LittleFS (pages WEB + logs)Dossier06/06/2024
libraries/Librairies tiercesDossier11/06/2024
Partition Spiffs Modifier/Fichiers de partition LilyGO 16 Mo personnaliséeDossier07/06/2024
__LilyGO Version 16Mo 1610086 octets (76%) et MICRO -- IDE 1.x.x.txtNotes version compilateurTXT · 1 Ko23/11/2021
__Version - OK en 16Mo LittleFS - FTP ok - blue ok - OTA ok.txtNotes de version validéeTXT · 5 Ko02/06/2026
boards.txtFichier boards.txt modifié (partition LilyGO 16 Mo)TXT · 257 Ko22/01/2021
boards.txt - RaccourciRaccourci vers boards.txtRaccourci · 3 Ko23/11/2021
CAM_LilyGO_Driver.hDriver caméra LilyGO.h · 15 Ko06/06/2024
CAM_LilyGO_MIC_ESP32_OTA_LiFS_FTP_CmdLineTelnetBlue_jsWEB_78.inoFichier source principal ArduinoINO · 69 Ko10/06/2024
ConfigIP_Serial_Telnet_CmdLine_SSID.hConfiguration IP / WiFi / CLI.h · 86 Ko09/06/2024
DebugProg.hUtilitaires debug.h · 2 Ko06/06/2024
ESP_WiFi_Reseau_PortailCaptif.hDriver réseau WiFi + portail captif.h · 19 Ko06/06/2024
ServeurWEB.hServeur HTTP AJAX.h · 24 Ko06/06/2024
Photos
Caméra IP LilyGO — vue 1
Camera_LilyGO_1.png
Caméra IP LilyGO — vue 2
Camera_LilyGO_2.png
Page WEB Caméra IP
CAM_LilyGO_WEB.png
Configuration IP Caméra LilyGO
CAM_LilyGO_WEB_Configuration_IP.png
LilyGO Telnet Help
CAM_LilyGO_Telnet_Help.png
LilyGO Telnet Print
CAM_LilyGO_Telnet_Print.png
Documentation

IoToS — Caméra IP LilyGO

ESP32 Wrover Module — LiLyGO CAMERA MIC 16 Mo (Flash total 16 777 216 octets) — Commande par page WEB.
OTA programmation par WiFi ✓

ESP32 Wrover Module LilyGO CAMERA MIC Arduino IDE 1.8.12 ESP32 Lib 1.0.6 LittleFS 16 Mo OTA WiFi

💻 IDE Compilateur

  • Compilateur : Arduino IDE 1.8.12
  • Librairie : ESP32 par Espressif Systems v1.0.6
  • ESP32 Fichier → Préférences : https://dl.espressif.com/dl/package_esp32_index.json

🗂️ Carte et Partition

  • Type de carte : ESP32 Wrover Module
  • Partition Scheme : LilyGO 16MB OTA (2MB APP / 11.5MB LittleFS)
  • ⚠️ Nécessite la modification du fichier boards.txt (voir ci-dessous)

📦 Occupation mémoire

  • Programme : 1 653 586 octets — 78 % des 2 097 152 octets disponibles
  • Espace total LittleFS : 11 498 561 octets

📂 Upload LittleFS

  • Uploader le sous-répertoire /data dans l'ESP en partition LittleFS
  • Via Arduino IDE : Onglet Outils → ESP32 Sketch Data Upload → sélectionner SPIFFS
  • Installer le plugin : github.com/lorol/arduino-esp32fs-plugin
  • Créer le répertoire tools\ dans C:\Program Files\Arduino\, y déposer ESP32FS-1.0.zip décompressé

⚠️ Modification boards.txt

Fichier : C:\Users\<User>\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\boards.txt

Ajouter sous la ligne esp32wrover.name=ESP32 Wrover Module :

esp32wrover.menu.PartitionScheme.lilygo_16mb_ota=LilyGO 16MB OTA (2MB APP/11.5MB SPIFFS)
esp32wrover.menu.PartitionScheme.lilygo_16mb_ota.build.partitions=LilyGO_16Mo_OTA_(2MbAPP_11.5MbSPIFFS)
esp32wrover.menu.PartitionScheme.lilygo_16mb_ota.upload.maximum_size=2097152

Créer le fichier LilyGO_16Mo_OTA_(2MbAPP_11.5MbSPIFFS).csv dans :
...\packages\esp32\hardware\esp32\1.0.6\tools\partitions\

# Name,   Type, SubType, Offset,  Size, Flags
nvs,      data, nvs,     0x9000,  0x5000,
otadata,  data, ota,     0xe000,  0x2000,
app0,     app,  ota_0,   0x10000, 0x200000,
app1,     app,  ota_1,   0x210000,0x200000,
spiffs,   data, spiffs,  0x410000,0xBF0000,
Commandes disponibles

Système Caméra

CommandeArgumentDescription
helpAide commandes disponibles (man ou ?)
resolvideoRésolution vidéo : QQVGA / QVGA / VGA / SVGA / XGA / UXGA
resolphotoRésolution photo : QQVGA / QVGA / VGA / SVGA / XGA / UXGA
piron/offCapteur PIR (détecteur de mouvement) → photo en LittleFS
timephoto<sec>Temps entre deux photos en secondes
resetcompteurReset compteur photo (supprimer les photos avant)
Oledon/offÉcran OLED ON / OFF
WEBon/offServeur WEB ON / OFF
FTPon/offServeur FTP ON / OFF
ramRAM disponible
pingxx.xx.xx.xxPing ICMP

Datalogger

CommandeArgumentDescription
dataloggeron/offActivation de l'enregistrement des actions
create</nom.ext>Création fichier avec en-tête Excel
select</nom.ext>Sélection du fichier datalogger actif

Fichiers LittleFS (Mini MS-DOS)

⚠️ Mettre un / devant chaque nom de fichier

CommandeArgumentDescription
dirInformations fichiers sur le LittleFS
rename</old> </new>Renomme un fichier
del</nom>Efface un fichier
type</nom>Affiche le contenu d'un fichier
edit<texte>Ajoute une ligne (max 100 caractères)
copie</src> </dst>Copie un fichier
formatFormate la partition LittleFS (⚠️ irréversible)

Configuration Réseau WiFi

CommandeArgumentDescription
wifion/offDémarrer / arrêter le module WiFi
infowifiInformations connexion WiFi
SSID<nom>Nom du réseau WiFi (max 40 caractères)
wifipass<secret>Mot de passe WiFi (max 40 caractères)
printAffiche la configuration courante
mac<MAC>Adresse MAC (défaut : DE:AD:BE:EF:FE:ED)
dhcpon/offActiver / désactiver le DHCP
ip<IP>Adresse IP (ex : ip 192.168.0.66)
subnet<IP>Masque de sous-réseau
gateway<IP>Passerelle
port0–65535Port WEB (défaut 80)

WEB & FTP

CommandeArgumentDescription
loginWEBon/offActiver / désactiver l'auth sur le site WEB
login-passWEBChanger Login:Password (base64 — base64encode.org)
loginFTPChanger le login FTP
passwordFTPChanger le password FTP

EEPROM & Redémarrage

CommandeDescription
reloadRecharge la configuration depuis l'EEPROM
defaultsReset usine (192.168.0.10)
saveSauvegarde la configuration en EEPROM
loadconfCharge la configuration depuis un fichier LittleFS
saveconfSauve la configuration dans un fichier LittleFS
resetRedémarre l'Arduino avec la config EEPROM
debugAffichage de variables DEBUG

Exemple — changer l'IP : ip 192.168.0.2 puis save puis reset

Système : Station Météo LoRa écran LCD TFT (Menu 3 boutons) v73 Arduino UNO R3/R4
Émetteur : Station_Meteo_EmetteurLoRa_UNOR3_LCD_U8g2_IDE2_v73
Récepteur : Station_Meteo_RecepteurLoRa_UNOR4_IoToS_LCD_U8g2_IDE2_v73
Émetteur .rar Récepteur .rar
IoToS — Internet of Things Operating System

IoToS est un micro-système embarqué pour Arduino UNO R4 Minima. Il reçoit les données météo d'une station distante par radio LoRa 868 MHz et les publie sur un serveur WEB accessible depuis le réseau local.

Deux sources de données sont affichées en temps réel :
– Les capteurs locaux via LoRa (vent, pluie, température, humidité, pression, direction girouette)
– La météo Internet via Open-Meteo (prévisions, ressentie, rafales, visibilité, code WMO…)

Base Récepteur Météo — Arduino UNO R4 Minima + Grove Base Shield
  • Ethernet Shield V2 W5500
  • Module LoRa 868 MHz
  • Écran LCD ST7567S
  • Micro SD FAT32
Émetteur Extérieur Capteur météo — Arduino UNO Rev3 + Grove Base Shield
  • Module LoRa 868 MHz
  • Écran LCD ST7567S
  • Capteur météo Grove — lextronic.fr
Fichiers — Capteur Émetteur (UNO R3)
NomDescriptionType / TailleModifié
libraries/Librairies tiercesDossier18/04/2026
LCD_U8g2_GM12864_64x128.hDriver écran LCD TFT ST7567S — U8g2.h · 16 Ko13/04/2026
Station_Meteo_EmetteurLoRa_UNOR3_LCD_U8g2_IDE2_v73.inoFichier source principal ÉmetteurINO · 26 Ko15/04/2026
TrameStandard_LoRa_CRC_Send.hTrame LoRa CRC — Envoi.h · 3 Ko13/04/2026
Fichiers — Station de Base Récepteur (UNO R4 + IoToS)
NomDescriptionType / TailleModifié
data/Fichiers MicroSD (pages WEB + logs)Dossier18/04/2026
libraries/Librairies tiercesDossier19/04/2026
__DOC Version -- Arduino uno rev4 minima et shield ethernet v2 (A000024 W5500).txtNotes version Arduino R4TXT · 1 Ko31/03/2026
__DOC Version -- LCD TFT I2C GM12864-59N VER 2.0 (ST7567S) Lib U8g2-2.35.30 - Menu Rotatif 3 Boutons Interruption.txtNotes version LCD U8g2TXT · 0 Ko27/02/2026
Ethernet_Reseau.hDriver Ethernet W5500.h · 10 Ko26/03/2026
GetMeteo.hAcquisition données météo LoRa.h · 41 Ko14/04/2026
LCD_GM12864_64x128.hDriver écran LCD TFT ST7567S — U8g2.h · 85 Ko13/04/2026
ServeurWEB.hServeur HTTP AJAX.h · 50 Ko14/04/2026
Shell_CmdLine_SD.hShell CLI — Serial / Telnet.h · 150 Ko15/04/2026
Station_Meteo_RecepteurLoRa_UNOR4_IoToS_LCD_U8g2_IDE2_v73.inoFichier source principal RécepteurINO · 133 Ko14/04/2026
TrameStandard_LoRa_CRC_Recive.hTrame LoRa CRC — Réception.h · 18 Ko14/04/2026
utils.hUtilitaires système.h · 28 Ko13/04/2026
Photos
Station Météo — Capteur Émetteur
StationMeteo_capteur.jpg
Station Météo — Module Grove
StationMeteo_capteur_ModuleGrove.jpg
Station Météo — Page WEB
StationMeteo_WEB.png
Documentation

Station Météo LoRa — Architecture système

🏗️ Architecture

  Capteurs      Platine Grove          UNO R3            LoRa 868MHz         UNO R4
  physiques     (Shield meteo)        Emetteur              Radio           Recepteur
                                                           simplex

 Anemometre   +-------------+    +----------------+      )))    (((      +------------+
 (RJ11 D) ----|   RJ11 D    |----|D2/INT1    LoRa |        |    |        |         I2C|--- LCD ST7567
              |             |    |          D6 RX |---TX---+    +----RX--|D0 RX       |
 Girouette    |             |----|A0->A1    D7 TX |                      |            |
 (RJ11 D) ----|             |    |                |       Grove LoRa     |         D8 |--- Bouton ok
              +-------------+    |                |         868MHz       |         D2 |--- Bouton +
 Pluviometre  +-------------+    |D4              |   (D6/D7)    (D0/D1) |         D3 |--- Bouton -
 (RJ11 G) ----|  RJ11 G     |----|                |                      |            |
              +-------------+    |                |                      |         D6 |--- LED Reception
 DHT22 Grove  [===bleu===] ------|D5              |                      |            |
 LCD ST7567   [===blanc==] ------|A4 SDA          |                      +------------+
 (I2C)                     ------|A5 SCL          |                          IoToS
 LED emission [===rouge==] ------|D8              |
                                 |                |
              [===noir===] ------|D7 TX           |
                                 +----------------+

📡 Station Émetteur Météo (UNO R3)

Anémomètre — Girouette — Pluviomètre — Température — Humidité

Arduino UNO R3 AVR ATmega328P — 16MHz Arduino IDE 2.3.7 LoRa 868MHz Grove LoRa D6/D7

Tableau des ports — UNO R3 Émetteur

PortDirectionModuleRemarque
D2ENTRÉEAnémomètre (INT0 phys)Branché D2, INT1 logique
D3(INT1 = lecture D2)Décalage physique !
D4ENTRÉEPluviomètreRJ11 gauche, front desc.
D5ENTRÉEDHT22 Grove (bleu)1-Wire temp+hum
D6ENTRÉEGrove LoRa RXSoftwareSerial RX
D7SORTIEGrove LoRa TXSoftwareSerial TX
D8SORTIELED émissionHIGH pendant émission LoRa
A0ENTRÉEGirouette (physique)Détectée sur A1 !
A1ENTRÉEGirouette (logique)Décalage physique !
A4ENTRÉELCD SDA (I2C)Wire.h
A5ENTRÉELCD SCL (I2C)Wire.h

⚠️ Branchement Grove — Décalages physiques

Les fils jaunes du connecteur Grove ne correspondent pas aux étiquettes imprimées sur la platine météo. Les broches physiques sont décalées d'un port.

   pluviometre      Anemometre        Girouette
        D4              D2                A0
        |               |                 |
┌─────────────────────────────────────────────────┐
│         Platine Grove Station Meteo             │
│   https://www.lextronic.fr/P38811-...           │
│                                                 │
│  Connecteur RJ11 GAUCHE   Connecteur RJ11 DROIT │
│  ┌───────────────┐        ┌───────────────────┐ │
│  │  Pluviometre  │        │ Girouette+Anemo   │ │
│  │    RJ11 G     │        │     RJ11 D        │ │
│  └───────┬───────┘        └────────┬──────────┘ │
└──────────┼─────────────────────────┼────────────┘
           │                         │
        PORT D4                   PORT A0 (→ detecte A1)
                                  PORT D2 (→ INT1 logique)

Branchement modules Grove

ModulePort GroveFilsConnexion
Grove LoRa 868MHzD6/D7Jaune→D6 (RX) · Blanc→D7 (TX)SoftwareSerial
Grove DHT22 (bleu)D5Jaune→D5 (1-Wire)Temp + Humidité
Grove LED (rouge)D8Jaune→D8 (HIGH=allumée)Émission LoRa
LCD GM12864I I2CI2C directSDA→A4 · SCL→A5ST7567 — pas Grove

📻 Station de Base Récepteur (UNO R4 + IoToS)

Arduino UNO R4 Minima Ethernet Shield v2 W5500 Grove Base Shield LCD 128×64 ST7567S Arduino IDE 2.3.7

📦 Occupation mémoire — Récepteur

  • Programme : 163 844 octets — 62 % des 262 144 octets disponibles
  • RAM globale : 16 276 octets — 49 % des 32 768 (16 492 libres)

🔌 Câblage — Récepteur UNO R4

PortDirectionModule
D8ENTRÉEBouton OK
D2ENTRÉEBouton (+) interruption
D3ENTRÉEBouton (−) interruption
D5SORTIEModule LED Grove
D6SORTIELED réception LoRa
LED_BUILTINSORTIEServeur WEB démarré OK
SDA/SCLI2CÉcran LCD ST7567S
Ethernet Shield v2SPI+SDW5500 — MicroSD

⚠️ Notes IDE — Récepteur

  • Arduino IDE 2.3.7 requis (IDE 1.x.x : bug Ethernet IP fixe)
  • Librairies Ethernet : 1.5.3 / Ethernet@2.0.2
  • Copier les librairies dans \Mes Documents\Arduino\libraries\
  • Carte MicroSD : FAT32, noms longs (MSDOS)
  • Double appui rapide sur RESET → active le bootloader

🏗️ Station Émettrice (UNO R3 + Grove Base Shield)

La station émettrice est équipée d'une platine Grove Base Shield sur laquelle sont connectés les capteurs physiques :

  • Anémomètre — mesure la vitesse du vent en km/h — connecté en RJ11 D sur broche D2 / INT1
  • Girouette — indique la direction du vent sur 8 positions (N NE E SE S SO O NO) — connectée en RJ11 D sur broche A0 / A1
  • Pluviomètre — mesure le cumul de pluie en mm — connecté en RJ11 G sur broche D4
  • DHT22 — mesure la température et l'humidité relative — connecté en Grove Digital sur broche D5

Les données sont encodées dans une trame (STX | ID | LEN | DATA | CRC | ETX) et émises toutes les secondes par radio LoRa 868 MHz vers le récepteur IoToS.

📡 Capteurs LoRa reçus

CapteurUnitéPlage
Vitesse ventkm/h0 à 255
Direction girouette1 à 8N NE E SE S SO O NO
Pluviomètremm0 à 255
Température°C−128 à +127
Humidité%RH0 à 100
PressionhPa900 à 1155
RSSIdBmqualité signal radio

⌨️ Configuration en ligne de commande — CLI

Le shell CLI est accessible via le port Serial USB ou en Telnet. La configuration se fait en trois étapes :

1 — Configuration réseau

Définir l'adresse IP, le masque et la passerelle puis sauvegarder et redémarrer l'Arduino.

CommandeDescription
ip 192.168.0.10Adresse IP statique
subnet 255.255.255.0Masque de sous-réseau
gateway 192.168.0.1Passerelle
dhcp on / offLaisser le DHCP attribuer l'IP
port 80Port du serveur WEB
saveSauvegarder en EEPROM
resetRedémarrer avec la nouvelle config

2 — Configuration Open-Meteo (météo Internet)

Indiquer les coordonnées GPS du site d'installation pour que le système interroge la bonne zone géographique.

CommandeDescription
GPS 48.08 7.36Latitude et longitude
GPS 48.57 7.75Exemple pour Strasbourg
GPSville ColmarVille prédéfinie : Colmar, Strasbourg, Mulhouse, Sélestat, Nancy, Lyon, Paris

3 — Vérification

CommandeDescription
printAffiche toute la configuration

🌐 Connexion au site WEB

AccèsDétail
Navigateurhttp://<IP de l'Arduino>/
Page météo temps réelindex.htm
Configuration réseauConfIP.htm
AuthLogin : user / Mot de passe : pass (Base64)
FTP FileZilla1 connexion simultanée max

📦 Mémoire — Récepteur UNO R4

  • Flash : 163 844 o — 62 % / 262 144
  • RAM : 16 276 o — 49 % / 32 768 → 16 492 o libres
Documentation à télécharger
NomDescriptionType / Taille
Documentation_IoToS_Station_Meteo.pdf Documentation complète Station Météo LoRa IoToS PDF Ouvrir