L'IoToS permet également de faire du débogage de programme.
En effet, le confort de la ligne de commande et du datalogger permettent de déboguer efficacement un programme.
Imaginez que vous codez le programme d'un drone :
si la compilation se passe bien, il est possible que le programme reste bloqué sur une fonction ou dans une boucle.
J'utilise l'IoToS pour déboguer.
Le cmdLine.print en Telnet permet de vérifier le code en cours d'exécution,
et pour les temps longs, la fonction datalogger (où l'on peut placer n'importe quelle variables ou d'étapes du code) permet de tracer l'évolution de l'exécution du programme.
En plus de commander le drone, par exemple, on peut suivre son état en temps réel.
Ce qui m'a poussé à mettre en ligne ce micro-OS, c'est de pouvoir construire des systèmes avec le confort d'une ligne de commande, d'un serveur web, d'un datalogger horodaté (NTP) et d'un serveur FTP.
(Le FTP est indispensable pour les ESP car la partition LittleFS est sur la Flash et donc inaccessible depuis l'extérieur — contrairement à l'UNO R4 + Ethernet + carte SD.)
Il existe un très grand nombre de projets sur Arduino :
Impression 3D, gestion de piscine, drone, aquarium, arrosage automatique, MQTT, serre…
L'idée est de pouvoir améliorer ces systèmes existants.
Prenons Claude.ai comme exemple :
On charge son fichier piscine.ino et le code IoToS dans la mémoire de l'IA, puis on formule ses demandes :
Intègre le projet piscine.ino dans le programme IoToS
Ajoute dans les commandes du shell : reglage_temp, reglage_ph, pompe ON/OFF
Modifie la page HTML pour la piscine : affichage de la température, ajout d'un graphique de l'historique
On peut ainsi modifier et améliorer un système existant pour le rendre communicant.
Je l'ai fait pour une guirlande de LED — ça a fonctionné. Il a fallu régler quelques détails, mais c'est tout à fait faisable.
Et cela ouvre une multitude de projets pour nos jeunes qui manquent parfois de motivation (flemme) ou passent parfois trop de leur temps sur les jeux vidéo.
C'est leur donner des idées et les moyens de les réaliser.
Cela me fait penser à un élève qui m'avait posé la question : avec quoi a-t-on créé le premier OS ?
Avec un éditeur… mais il a fallu le compiler avec un compilateur… qu'on a écrit avec un éditeur… ?
Pour le "zéro" : sur mon site j'ai écrit :
IoToS — Internet of Things micro-Operating System : un petit système d'exploitation en partant de zéro et fonctionnant sur un Arduino ou un ESP32.
Je suis parti de l'IDE Arduino : Fichier → Nouveau sketch (avec un void setup() et un void loop()).
Je pense que j'ai dit "zéro" car j'utilisais les cours du Site du Zéro (Arduino pour bien commencer en électronique et en programmation.pdf). ( c'est l'ancien OpenClassroom )
Bonjour,
Je suis professeur d'électronique et d'informatique qui à codé IoToS
Alors, OS ou pas OS, telle est la question ?
Je l'ai appelé « micro-OS » pour cette raison : mes élèves ont du mal à comprendre ce qu'est un OS, et c'est entre autres pour cela que je l'ai écrit — le chaînon manquant entre l'automate (setup et loop) et un véritable OS.
Normalement, un OS c'est :
- la gestion du clavier, de la souris, de l'écran (les périphériques)
- un shell (ligne de commande CLI, CMD…)
- une gestion de fichiers
- la capacité de lancer (exécuter) un programme.
Et là, bingo : ce n'est pas tout à fait un OS.
C'est presque un OS… un micro-OS… un système « on service »… un framework applicatif
Il ne permet pas d'exécuter un « programme » à proprement parler, puisque celui-ci est intégré au micro-OS lui-même.
Une prise connectée ou une caméra IP ont un certain câblage fixe — il serait donc inutile de lancer un « programme caméra IP » ou « prise IP », puisque le câble ne serait pas le bon. Autrement dit, il n'exécute pas de « programme » séparé, car le « programme métier » est embarqué dans le même firmware que l'IoToS !
C'est là où mes élèves réfléchissent : ce n'est pas tout à fait un OS, c'est plutôt un système « on service », un micro-OS.
C'est pour cela que j'ai particulièrement apprécié vos remarques — c'est bien vu !
Oui, j'ai commencé de zéro — enfin, par Fichier > Nouveau… le sketch de base : void setup() et void loop().
J'ai évidemment utilisé l'IDE Arduino et j'ai cherché partout des bibliothèques que j'ai essayé de faire fonctionner ensemble (Ethernet.h, LittleFS.h, NTP.h…).
(Et bravo à tous ces auteurs que je cite dans le code, avec les liens vers leurs bibliothèques.)
Oui, j'ai utilisé ce qui existait — je cherchais des bibliothèques, et c'est là où Korben a vu juste :
souvent, elles ne fonctionnaient pas ensemble, l'une faisait bugger l'autre. Ça a été long avant qu'elles réussissent à cohabiter, et c'est ce qui m'a pris le plus de temps.
Puis j'ai trouvé une bibliothèque cmdLine que j'ai entièrement réécrite depuis, pour y ajouter l'autocomplétion et l'historique.
Pour l'AJAX : c'est en fait du XML que le petit serveur web envoie au navigateur pour afficher des données dynamiquement.
Je pense que la prochaine évolution de l'IoToS passera par là.
Comme amélioration future, peut-être un jour un RTOS — car dans le loop, si une opération prend trop de temps, le serveur FTP… plouf.
Pour moi, Arduino, c'est trois professeurs italiens qui ont conçu une carte pour leurs élèves et qui l'ont donnée au monde.
J'ai voulu faire la même chose en code pour les miens — et je l'ai désormais publié pour tout le monde aussi.
Et pour que des jeunes puissent s'amuser avec et créer des projets.
BAC PRO et BTS CIEL - Institution Saint-Jean à Colmar.
[^] # Re: Pas un OS
Posté par Jean-Marc_Biechy . En réponse au lien IoToS - Le prof qui a codé un OS de zéro pour ses élèves. Évalué à 1 (+1/-0).
Le datalogger est en fichier sur la carte SD
[^] # Re: Pas un OS
Posté par Jean-Marc_Biechy . En réponse au lien IoToS - Le prof qui a codé un OS de zéro pour ses élèves. Évalué à 3 (+3/-0).
Utilisation de l'IoToS
L'IoToS permet également de faire du débogage de programme.
En effet, le confort de la ligne de commande et du datalogger permettent de déboguer efficacement un programme.
Imaginez que vous codez le programme d'un drone :
si la compilation se passe bien, il est possible que le programme reste bloqué sur une fonction ou dans une boucle.
J'utilise l'IoToS pour déboguer.
Le cmdLine.print en Telnet permet de vérifier le code en cours d'exécution,
et pour les temps longs, la fonction datalogger (où l'on peut placer n'importe quelle variables ou d'étapes du code) permet de tracer l'évolution de l'exécution du programme.
En plus de commander le drone, par exemple, on peut suivre son état en temps réel.
[^] # Re: Pas un OS
Posté par Jean-Marc_Biechy . En réponse au lien IoToS - Le prof qui a codé un OS de zéro pour ses élèves. Évalué à 4 (+4/-0).
Ce qui m'a poussé à mettre en ligne ce micro-OS, c'est de pouvoir construire des systèmes avec le confort d'une ligne de commande, d'un serveur web, d'un datalogger horodaté (NTP) et d'un serveur FTP.
(Le FTP est indispensable pour les ESP car la partition LittleFS est sur la Flash et donc inaccessible depuis l'extérieur — contrairement à l'UNO R4 + Ethernet + carte SD.)
Il existe un très grand nombre de projets sur Arduino :
Impression 3D, gestion de piscine, drone, aquarium, arrosage automatique, MQTT, serre…
L'idée est de pouvoir améliorer ces systèmes existants.
Prenons Claude.ai comme exemple :
On charge son fichier piscine.ino et le code IoToS dans la mémoire de l'IA, puis on formule ses demandes :
Intègre le projet piscine.ino dans le programme IoToS
Ajoute dans les commandes du shell : reglage_temp, reglage_ph, pompe ON/OFF
Modifie la page HTML pour la piscine : affichage de la température, ajout d'un graphique de l'historique
On peut ainsi modifier et améliorer un système existant pour le rendre communicant.
Je l'ai fait pour une guirlande de LED — ça a fonctionné. Il a fallu régler quelques détails, mais c'est tout à fait faisable.
Et cela ouvre une multitude de projets pour nos jeunes qui manquent parfois de motivation (flemme) ou passent parfois trop de leur temps sur les jeux vidéo.
C'est leur donner des idées et les moyens de les réaliser.
[^] # Re: Pas un OS
Posté par Jean-Marc_Biechy . En réponse au lien IoToS - Le prof qui a codé un OS de zéro pour ses élèves. Évalué à 3 (+3/-0). Dernière modification le 27 juin 2026 à 18:41.
C'est très intéressant ça !
Cela me fait penser à un élève qui m'avait posé la question : avec quoi a-t-on créé le premier OS ?
Avec un éditeur… mais il a fallu le compiler avec un compilateur… qu'on a écrit avec un éditeur… ?
Pour le "zéro" : sur mon site j'ai écrit :
IoToS — Internet of Things micro-Operating System : un petit système d'exploitation en partant de zéro et fonctionnant sur un Arduino ou un ESP32.
Je suis parti de l'IDE Arduino : Fichier → Nouveau sketch (avec un void setup() et un void loop()).
Je pense que j'ai dit "zéro" car j'utilisais les cours du Site du Zéro (Arduino pour bien commencer en électronique et en programmation.pdf). ( c'est l'ancien OpenClassroom )
Il faudrait que je le change, mais par quoi ?
en partant du début
d'un sketch de base ?
Je n'ai pas encore trouvé la bonne formule.
[^] # Re: Pas un OS
Posté par Jean-Marc_Biechy . En réponse au lien IoToS - Le prof qui a codé un OS de zéro pour ses élèves. Évalué à 10 (+13/-0).
Bonjour,
Je suis professeur d'électronique et d'informatique qui à codé IoToS
Alors, OS ou pas OS, telle est la question ?
Je l'ai appelé « micro-OS » pour cette raison : mes élèves ont du mal à comprendre ce qu'est un OS, et c'est entre autres pour cela que je l'ai écrit — le chaînon manquant entre l'automate (setup et loop) et un véritable OS.
Normalement, un OS c'est :
- la gestion du clavier, de la souris, de l'écran (les périphériques)
- un shell (ligne de commande CLI, CMD…)
- une gestion de fichiers
- la capacité de lancer (exécuter) un programme.
Et là, bingo : ce n'est pas tout à fait un OS.
C'est presque un OS… un micro-OS… un système « on service »… un framework applicatif
Il ne permet pas d'exécuter un « programme » à proprement parler, puisque celui-ci est intégré au micro-OS lui-même.
Une prise connectée ou une caméra IP ont un certain câblage fixe — il serait donc inutile de lancer un « programme caméra IP » ou « prise IP », puisque le câble ne serait pas le bon. Autrement dit, il n'exécute pas de « programme » séparé, car le « programme métier » est embarqué dans le même firmware que l'IoToS !
C'est là où mes élèves réfléchissent : ce n'est pas tout à fait un OS, c'est plutôt un système « on service », un micro-OS.
C'est pour cela que j'ai particulièrement apprécié vos remarques — c'est bien vu !
Oui, j'ai commencé de zéro — enfin, par Fichier > Nouveau… le sketch de base : void setup() et void loop().
J'ai évidemment utilisé l'IDE Arduino et j'ai cherché partout des bibliothèques que j'ai essayé de faire fonctionner ensemble (Ethernet.h, LittleFS.h, NTP.h…).
(Et bravo à tous ces auteurs que je cite dans le code, avec les liens vers leurs bibliothèques.)
Oui, j'ai utilisé ce qui existait — je cherchais des bibliothèques, et c'est là où Korben a vu juste :
souvent, elles ne fonctionnaient pas ensemble, l'une faisait bugger l'autre. Ça a été long avant qu'elles réussissent à cohabiter, et c'est ce qui m'a pris le plus de temps.
Puis j'ai trouvé une bibliothèque cmdLine que j'ai entièrement réécrite depuis, pour y ajouter l'autocomplétion et l'historique.
Pour l'AJAX : c'est en fait du XML que le petit serveur web envoie au navigateur pour afficher des données dynamiquement.
Je pense que la prochaine évolution de l'IoToS passera par là.
Comme amélioration future, peut-être un jour un RTOS — car dans le loop, si une opération prend trop de temps, le serveur FTP… plouf.
Pour moi, Arduino, c'est trois professeurs italiens qui ont conçu une carte pour leurs élèves et qui l'ont donnée au monde.
J'ai voulu faire la même chose en code pour les miens — et je l'ai désormais publié pour tout le monde aussi.
Et pour que des jeunes puissent s'amuser avec et créer des projets.
BAC PRO et BTS CIEL - Institution Saint-Jean à Colmar.