Bonjour,
L'inscription sur ce forum et les premiers messages sont modérés par un Administrateur.
Ce n'est pas très convivial mais malheureusement nécessaire suite au spam intensif de nos amis russes.
Cordialement,
Dominique

PYBStick ESP32-C3 : Questions multiples

PYBStick de Garatronic.fr est une Carte MicroPython / Arduino IDE à prix abordable.
Forum rules
La PYBStick est supporté par MC Hobby (MicroPython) et Garatronic (Arduino IDE).
Merci de suivre les recommandations suivantes.
Pensez à:
  • Titre claire: permettant d'identifier le produit et le problème
  • Contenu complet: schema, message d'erreur, etc (tout ce qui permet d'aider à distance).
  • Fichier joint: Max 300 Ko
  • Courtoisie et précision
Post Reply
User avatar
Coyotte
Posts: 27
Joined: Mon 12 Apr 2021 16:42
Location: Liège (Belgium)

PYBStick ESP32-C3 : Questions multiples

Post by Coyotte »

Bonjour à toutes et tous,

Site à la parution des infos concernant les PYBStick ESP32-C3 j'ai commandé deux exemplaires ainsi que des adaptateurs de niveaux logiques pour un projet prévu cet hiver : La construction et la commande d'un phare marin (https://cults3d.com/en/3d-model/archite ... hare-jteix).

LE cahier des charges est le suivant :
- Eclairage "rotatif" avec des LEDs adressables.
- Un peu de lumières dans le phare (Simulation d'une montée ou descente avec une lanterne)
- Une corne de brume
- Et d'autres idées qui ne manqueront pas de venir...

- Commande du phare via un récepteur de type radio-commande (2.4GHz) de marque FrSky.
- Allumage/extinction du phare
- Type d'éclairage
- Eclairage intérieur
- Corne de brume

Comme je voudrais améliorer mon niveau de développement en Python (Je suis développeur Delphi à la base) j'aimerais utiliser micropython pour ce projet..
J'ai déjà trouvé de la doc sur la commande des LEDs adressables. Je suis assez confiant sur ce point.

Mes questions sont les suivantes :

1) Comme il faudra à un instant T gérer les LEDs du phare, la montée ou descente de la lanterne et la détection des ordres en provenance du récepteur, je me demande dans quelle mesure je peux faire du multi-threading pour gérer tout cela et comment.

2) le récepteur peut être branché raccordé au contrôleur via les sorties servos (auquel cas, il faut mesurer la largeur de l'impulsion en sortie)
ou via une sortie "sbus" qui fourni l'état de toutes les sorties sur une ligne.
Quelle est selon vous la solution la plus facile à mettre en œuvre (en tenant compte du point 1) ?

Je ne cherche pas solution "toute trouvé" mais je suis preneur de toutes les pistes que vous pourriez m'indiquer afin de définir une solution logicielle qui tiendra la route. (Surtout concernant le multi-threading et la détection d'impulsions)

En vous remerciant d'avance pour vos conseils,

Coyotte
User avatar
Dominique
Administrateur du site
Posts: 249
Joined: Sun 17 May 2020 22:43

Re: PYBStick ESP32-C3 : Questions multiples

Post by Dominique »

Salut Coyotte,

Pour la mesure de durée d'impulsion PWM, il y a une fonction MicroPython qui facilite la tâche.
Cette fonction est utilisé dans la bibliothèque Ultrasonic utilisée avec le capteur HC-SR04.

Code: Select all

time_pulse = time_pulse_us(self.echo, 1, self.timeout)
Il faudra juste vérifier qu'elle est implémentée dans le noyau ESP32-C3.

Pour ce qui concerne la gestion du temps, il y a time.time() qui mesure le temps en seconde. Il suffit de faire une soustraction pour connaître le temps écoulé.
Il existe aussi asyncio dans MicroPython.... il permet de faire du multitâche coopératif.

Voila quelques pistes utiles.
Dominique

PS: je suis étonné d'apprendre que l'on utilise tjs Delphi aujourd'hui. Son éditeur RAD n'avait aucun équivalent à mes yeux (même après plus de 20 ans).
Dominique, MC Hobby.
User avatar
Coyotte
Posts: 27
Joined: Mon 12 Apr 2021 16:42
Location: Liège (Belgium)

Re: PYBStick ESP32-C3 : Questions multiples

Post by Coyotte »

Merci Dominique,

J'ai quelques pistes maintenant.
Il me reste à attendre le colis de la poste.

Michel

ps: Delphi reprend même un peu du poil de la bête... Et les développeurs Delphi sont recherchés... car rares ;-)
User avatar
fpie
Posts: 36
Joined: Sun 24 May 2020 08:25
Location: Auch, Gers, France, Terre
Contact:

Re: PYBStick ESP32-C3 : Questions multiples

Post by fpie »

Bonjour Coyotte,

J'arrive un peu tard, Dominique a déjà répondu.
Impatient de voir ce que vous allez faire avec cette carte.

fpie.
User avatar
Coyotte
Posts: 27
Joined: Mon 12 Apr 2021 16:42
Location: Liège (Belgium)

Re: PYBStick ESP32-C3 : Questions multiples

Post by Coyotte »

Hello,

Merci pour la réponse.
Moi aussi je suis impatient ;)

Ceci dit, je suis débutant en termes d'utilisation de ce type de cartes sous micropython (J'ai une plus grande expérience sur Arduino/C++).
Dès lors, ne vous attendez pas à une "application_de_la_mort_qui_tue"... :D

Avec votre permission, je reviendrai bientôt sur ce sujet avec les informations que j'aurai glanées pour valider les choix techniques et/ou logiciels faits.
Je pense avoir à peu près tout trouvé. Je cherche encore un peu de documentation sur l'utilisation de la classe Timer et le lien entre celle-ci et les timers disponibles sur le contrôleur.
Je devrais avoir une définition du projet plus précise courant de la semaine prochaine.
encore merci,

Coyotte
User avatar
Coyotte
Posts: 27
Joined: Mon 12 Apr 2021 16:42
Location: Liège (Belgium)

Re: PYBStick ESP32-C3 : Questions multiples

Post by Coyotte »

Rebonjour,

Petit résumé de l'état de mes recherches :

LEDs :
J'utiliserai des LEDs de type WS2812.
J'ai repéré la librairie Neopixel qui semble parfaitement gérer les choses.
D'après les exemple trouvés, une seule sortie suffit à les piloter (abstraction faite de l'alimentation...)

Je pourrais donc avoir deux chaînes de LEDs (Une pour la lumière en rotation du phare et une pour la tour)

La connexion du récepteur peut se faire en SBUS. (Il faut inverser ou pas, selon la librairie le signal).
J'ai lu que UART1 devrait être préférée à l'UART0 donc je vais opter pour cette dernière.

Pour le (pseudo) multitâche, il y a la librairie SyncIO qui semble être une bonne option. Cependant, elle est déjà utilisée par la partie SBUS donc je en sais pas si je vais pouvoir m'insérer facilement dans le système.

Une autre option repérée est d'utiliser des timers pour activer des flag (lire SBUS, avancer d'un pas dans l'animation des LEDs, ...)
Et dans la boucle principale, d'agir en fonction des flags positionnés.
Cela reste à tester en fonction des Timers existants.
(Sur ce point je ne trouve pas de doc expliquant le lien entre les timers/coutners présent dans le micro contrôleur et la Classe Timer...)

Voilà pour l'état de l'art (Bien modeste en ce qui me concerne...)
A suivre donc (du moins je l'espère)

Coyotte

ps: Toutes remarque, réflexion ou conseil seront appréciés à leur juste valeur ;-)
User avatar
Dominique
Administrateur du site
Posts: 249
Joined: Sun 17 May 2020 22:43

Re: PYBStick ESP32-C3 : Questions multiples

Post by Dominique »

A priori,

AsyncIO doit permettre à plusieurs process de coopérer ensembles.
Ils peuvent donc attendre un temps déterminé (attention à utiliser AsyncIO.sleep() et pas sleep() ) pour, ensuite, activer un flag pris en charge par le processus principal.
Cela fonctionne généralement bien.

NeoPixel:
Le firmware micropython pour le C3 inclus déjà la classe NeoPixel.

Bon projet,
Dominique
Dominique, MC Hobby.
User avatar
Coyotte
Posts: 27
Joined: Mon 12 Apr 2021 16:42
Location: Liège (Belgium)

Re: PYBStick ESP32-C3 : Questions multiples

Post by Coyotte »

Merci Dominique.

Le projet avance, lentement, mais il avance...
Afin de me familiariser avec micropython, j'ai implémenté le clignotement sinusoïdal sur la seule LED présente sur le stick avec l'aide de la classe Timer et cela fonctionne parfaitement.

Merci pour ton support,

Michel
Post Reply