Televerser un code python dans une carte arduino

Salut a tous . S'il vous plait est il possible de televerser un programme python de classification sur une carte arduino ?

:warning:
Post mis dans la mauvaise section, on parle anglais dans les forums généraux. déplacé vers le forum francophone.

Merci de prendre en compte les recommandations listées dans Les bonnes pratiques du Forum Francophone

Salut @aangee
De manière générale, tu peux oublier python pour tout ce qui est Arduino et système embarqué. Python, c'est un langage interprété de haut niveau, avec lequel tu peux faire plein de choses sur un PC certes, mais qui demande beaucoup de ressources ! Il n'est absolument pas conçu pour tourner sur un p'tit bout de circuit avec à peine 2 Ko de RAM ! Avant de faire tourner un interpréteur python sur un Arduino, il va te falloir attendre longtemps :wink:

Si tu veux programmer un Arduino, tu code en C/C++, que tu fais passer dans un compilateur (et non pas un interpréteur comme python !) qui va sortir un gros tas de 0 et de 1 : c'est ça qui va aller sur l’Arduino, en FLASH.

Si vraiment tu veux coder en python sur un micro-contrôleur (ça ne sert à rien mais si tu n'as pas envie d'apprendre un nouveau langage...), tu peux te tourner vers micro-python et les ESP32 (c'est une aberration que d'utiliser un langage comme celui-ci pour un micro-contrôleur, mais si c'est vraiment ce que tu veux, alors vas-y).

Si tu veux en savoir plus sur la mémoire des Arduino, un peu de lecture :

En espérant ne pas t'avoir perdu,
Cordialement
Pandaroux007

PS : Petite question tout de même, qu'appelles-tu un programme de "classification" ?

Il ne faut pas être si catégorique. Les ESP32, le Raspberry Pi Pico, etc, .... disposent de suffisamment de Flash et de RAM et sont assez rapides pour faire tourner des applications sérieuses.
L'avantage de MicroPython ou Circuit Python c'est que tu peux travailler en interactif en utilisant le REPL avec juste un terminal. Et il y a maintenant pas mal de drivers pour des écrans, des capteurs.
Franchement, il ne faut pas dénigrer ces portages de CPython sur les microcontrôleurs.

Oui, en fait c'est tout à fait possible sur un ESP32, ça a été fait plusieurs fois, en python. Un exemple :

Tu peux Googler "ESP32 machine learning" ou "ESP32 neural network classification" et tu trouveras d'autres exemples.

C'est claire qu'il ne faut pas être si catégorique.
Je ne connais pas particulièrement Python sur µC, mais j'ai un peu utiliser Lua sur ESP8266.
Il faut quand même noter que pour des applications sérieuses, cela réclame de faire attention à la mémoire et le nombres de librairies que l'on veut/peut utiliser.

Salut , merci pour l’intervention.
C’est un programme de classification des maladies oculaires. Donc un réseau de neurones assez lourd

Il faudrait peut-être regarder du coté des Raspberry Pi alors où tu trouveras des configurations un peu plus musclées.

Salut !
Effectivement, j'ai été quelques peu catégorique sur l'utilisation de micro-python et de son utilité au vu des exemples de @lesept et de mes recherches... Désolé :woozy_face:


Comme le dit @fdufnews, un ESP32 n'est pas un bon choix pour un programme lourd. Le Raspberry pi a des possibilités bien plus importantes, notamment sur la mémoire. En plus tu pourras faire tourner python directement, python étant natif à Raspian et le Raspberry pi étant un micro-ordinateur.

Cordialement
Pandaroux007

Ça dépend de la taille du réseau et s'il s'agit de faire l'apprentissage ou seulement l'inférence sur la carte.
Un apprentissage ne pourra pas être fait sur un ESP32 car il n'aura certainement pas assez de mémoire pour le corpus de données.
Mais l'inférence seule est possible si le réseau n'est pas trop gros et si son architecture s'y prête.
Il faut estimer le besoin en mémoire et vérifier si c'est compatible de la capacité de la carte choisie.

Non, ce n'est pas tout à fait exacte.
Python n'est pas natif, tout au plus peut-il être inclus dans l'installation de base de Raspian(à vérifier) ou installer car compiler dans la majorité des distribution Linux.
Il est impossible de savoir si ESP32 est un bon choix ou pas, la notion de lourd étant très evasif.
Il faut savoir la place mémoire qu'occupe ce réseau.
Comme l'indique @lesept il est tout à fait possible de faire tourner une inférence, d'ailleurs Expressif à un projet de reconnaissance vocale.

Tout est relatif :slight_smile: Python est installé par défaut sur beaucoup (si ce n'est pas sur toutes) de distributions linux, dont Raspbian.

À mon humble avis, pour faire tourner un réseau de neurone si on ne veut pas être limité dans les possibilités à la suite on prend un Raspberry, même si il est possible d'utiliser un ESP32. Mais ça reste possible. Après vous avez peut-être une vision de la chose différente de la mienne, pas de problème :+1: Je ne connais pas bien les possibilités des ESP, donc je me trompe sûrement !

Bonne journée
Cordialement
Pandaroux007

Oui, sur debian, je crois qu'il fait partie de l'installation standard, mais cela ne le rend pas natif pour autant.

A mon avis, si on suit ton raisonnement, on prend du coup alors un PC, bien plus puissant qu'un raspberry!
Ou l'ESP32 interroge un serveur sur lequel le réseau de neurone tourne.
La question après est faut-il prendre quelque chose de costaud au cas ou au risque de gaspiller de la CPU, ou alors tu determines la puissane dont tu as besoin pour ton rpojet et tu prends ce qui correpsond le plus.
Ce que je veux donc dire c'est que ce soit toi ou moi, on a aucune idée de ce dont à besoin @aangee, alors pourquoi prejuger qu'un ESP32 soit obligatoirement pourris, même si effectivement la probabilité ne joue pas en sa faveur?

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.