Vue normale

Reçu avant avant-hier

Bibliothèque RoboEyes pour MicroPython

Bonjour à tous,

Il arrive de temps à autre que l'on tombe sur une petite perle du net.

A propos de RoboEyes

Il y a quelques mois, j'ai découvert RoboEyes pour Arduino (de FluxGarage.com).

Credit: RobotEye par FluxGarage.com

 dont il est possible de voir les caractéristiques sur cette vidéo et cette autre vidéo.

 

 

Je suis instantanément tombé sous le charme... <3 

RoboEyes pour MicroPython

Comme je suis plutôt MicroPython qu'Arduino, j'ai voulu faire un portage sous MicroPython pour pouvoir jouer avec cette magnifique bibliothèque.

Voila qui est fait! La bibliothèque micropython-roboeyes est maintenant publiée sur GitHub. 

Brancher un écran est très facile... surtout si c'est écran OLED I2C:

Et le résultat est plutôt convaincant comme en témoigne la vidéo ci-dessous:


Pour, au final, un code assez facile à appréhender:

from machine import I2C, Pin
from roboeyes import *
import ssd1306

i2c = I2C( 1, sda=Pin.board.GP6, scl=Pin.board.GP7 )
lcd = ssd1306.SSD1306_I2C( 128, 64, i2c, addr=0x3d )

def robo_show( roboeyes ):
	global lcd
	lcd.show()

# Plug RoboEyes on any FrameBuffer descendant
robo = RoboEyes( lcd, 128, 64, frame_rate=100, on_show = robo_show )
robo.set_auto_blinker( ON, 3, 2) 
robo.set_idle_mode( ON, 2, 2) 

while True:
	robo.update()  # update eyes drawings 

La bibliothèque offre de nombreuses possibilités de création géométrique pour les yeux (voyez l'exemple test_basic.py).


Les fonctionnalités sont également détaillées dans les exemples et la documentation de l'API RoboEyes vous permettra de rapidement prendre le contrôle des yeux.

Avantages apportés par MicroPython

Le FrameBuffer

Comme l'implémentation est basée sur le FrameBuffer de MicroPython, tous les écran dérivant de FrameBuffer peuvent être utilisés avec RoboEyes.

Autrement dit, la majorité des afficheurs graphiques sous MicroPython fonctionneront :-) 

Portabilité

RoboEyes est Platform Agnostic, il fonctionnera donc sur toutes les plateformes MicroPython. La seule vrai dépendance est le FrameBuffer de MicroPython.

Envie d'en savoir plus?

Quelques sites web que j'ai conçu

10 mars 2025 à 09:08

Au cours des 18 derniers mois, j'ai eu l'occasion de concevoir plusieurs sites web pour des proches et des associations où je suis bénévole.

Dans cet article, je reviens sur mes choix de solutions pour les mettre en place, et partage mes réflexions concernant les alternatives pour concevoir de "petits …


Permalink

Pico-2-Explorer : découverte et exploration de l'électronique avec MicroPython

Bonjour à tous,

Je vous présente le projet Pico-2-Explorer, petit nouveau au catalogue MC Hobby.

Pico-2-Explorer : Raspberry Pico 2 sous MicroPython

Le Pico-2-Explorer, c'est un mini-laboratoire visant a simplifier la prise en main de de la programmation sous MicroPython (Python pour Microcontroleur) avec des raccordements simplifiés.
L'usage de Thonny IDE est également un élément clé pour réaliser ses premiers pas sans stress.

Raccordements simplifiés

Un seul fil est nécessaire pour utiliser l'un des composants disponibles sur le Pico-2-Explorer.

Ces raccordements simplifiés permettent de démarrer rapidement la partie programmation sans trop se prendre la tête.

Source: Pico-2-Explorer wiki (montage simplifié)

Cela n'empêche pas de disposer d'une version détaillée des raccordements dans les différents tutos.

Source: Pico-2-Explorer wiki (montage détaillé)

Des tutoriels pour le peuple

Bien entendu, on ne vous lâche pas avec la carte sans vous épauler.
Le Pico-2-Explorer dispose d'une série de tutoriels de prise en main et d'utilisation de différents composants.

Ces tutoriels reprennent l'information nécessaire à la compréhension des composants utilisés, de quoi débuter en douceur avec Thonny IDE.

Les tutoriels du Pico-2-Explorer

Une meilleure lisibilité

Un problème récurrent dans le prototypage, c'est les problèmes de Parallaxe.

Avoir les libellés sur la carte et un connecteur rehaussé d'un centimètre peut-être source d'erreur de branchement. En effet, il est très facile de se brancher sur la broche d'à côté sans s'en rendre compte. C'est d'autant plus vrai que le connecteur est long (ex: 20 broches comme sur le Pico).

Pour éviter cette source de confusion, les libellés des broches sont rehaussés juste à côté du connecteur. C'est vraiment très confortable a l'usage!


Composants à usage multiples

En plus d'apprendre, Pico-2-Explorer propose des composants à usage multiple.
Disposer de bouton et LEDs pré-raccordés sous la main sera quasi indispensable lors de vos propres explorations (c'est du vécu)

Détail du Pico-2-Explorer

Un potentiomètre saura aussi se montrer fort utile pour fixer rapidement une consigne (ou tester des composants analogiques).
L'usage du buzzer reste bien entendu à discrétion de l'utilisateur, les bibliothèques sont déjà disponibles sur la carte. 

Connecteur Qwiic/StemmaQt

Le bus I2C est un incontournable dans le monde de l'électronique. Nous avons prévus un connecteur Qwiic (chez SparkFun) également appelé StemmaQT (chez Adafruit). 

Celui-ci permet de brancher rapidement des capteurs et extension.

Connecteur Qwiic/StemmaQt sur le Pico-2-Explorer

Comme vous pouvez le constater, ce dernier se trouve juste sous sa documentation (qui servira d'aide mémoire). 

Il est prévu l'écriture d'un tutoriel exploitant cette connectique. Dans l'attente, notre dépôt esp8266-upy contient de nombreux pilotes pour du matériel I2C.

Documenter vos projets

Le dépôt pico-2-explorer contient la ressource pico-2-explorer-drawing.png en haute résolution.

Dégainez votre logiciel de dessin favori et dessinez vos propres raccordement.

ressource pico-2-explorer-drawing.png (en haute résolution)

Plus d'information

Pour plus d'information, je vous invite à la consultation de la fiche produit du Pico-2-Explorer.


Utiliser un module 4G / LTE SimCOM A7682E avec Raspberry-Pi Pico et MicroPython

Bonjour à tous,

Cela fait un moment que nous vendons le HAT GSM 4G / LTE de Garatronic pour Raspberry-Pi et celui-ci connaît un certain succès.

Ainsi, nous avons décidé de produire une bibliothèque MicroPython pour l'utiliser avec un Raspberry-Pi Pico.

HAT GSM 4G / LTE avec Raspberry-Pi Pico 2

Brancher le module SimCom A7682E

Source: Dépôt GitHub

Brancher le HAT sur le Raspberry-Pi Pico est assez simple. Il lui faut une source d'alimentation 5V, 3V3 et un UART et une broche pour contrôler la mise sous tension. 

Bibliothèque sim76xx pour MicroPython

La bibliothèque -=[en cours de développement]=- est publiée sur le dépôt GitHub

Celle-ci concerne prend déjà en charge:

  • La connexion sur réseau mobile
  • La gestion des messages URC (unsollicited Result Code) -> les notifications
  • La réception / émission de SMS
  • Gestion des appels vocaux (émettre/recevoir/décrocher/raccrocher/...)

 Voici les quelques ligne nécessaires pour se connecter sur un réseau mobile

from machine import UART, Pin
from sim76xx import *
import time

# Pico 
pwr = Pin( Pin.board.GP26, Pin.OUT, value=False )
uart = UART( 0, tx=Pin.board.GP0, rx=Pin.board.GP1, baudrate=115200, bits=8, parity=None, stop=1, timeout=500)
sim = SIM76XX( uart=uart, pwr_pin=pwr, uart_training=True, pincode="6778" )

sim.power_up()
while not sim.is_registered:
	time.sleep(1)

Passer un appel vocal est à peine plus compliqué

# Create Voice call object
voice = Voice( sim )
" Calling...
voice.call( PHONE_NR )

L'envoi d'un SMS est tout aussi trivial

# Create SMS object
sms = SMS( sim )
# Send message to PHONE_NR )
sms.send( PHONE_NR, 'Test message' )

Options avancées

La bibliothèque permet également de traiter les appels et SMS entrant.
Cela se fait en prenant en charge les URC (des messages non sollicités) qui sont ensuite transformer en notifications par la bibliothèque.

Les URC sont correctement détectés et capturées durant le traitement des instructions utilisateurs (oui, ces URC arrivent à n'importe quel moment et sans prévenir).
Si le script utilisateur est en attente alors un appel régulier à la méthode update() permettra de capturer les URC durant les périodes sans activités.

sms = SMS( sim )

# Attendre notifications
while True:
  time.sleep( 1 )
  sim.update()
  if not sim.notifs.has_new:
    continue
		
  # Traitement des notifications
  _time, _type, _str, _cargo = sim.notifs.pop()
  while _time!=None:
    if _type == Notifications.SMS:
      # Cargo contient l ID du SMS
      print( f"SMS received @ id {_cargo}")

      # Lecture SMS Entrant
      _msg = sms.read( _cargo )
      print( f"  phone:{_msg.phone}" )
      print( "  Message :", _msg.message )

      # effacer SMS entrant
      sms.delete(_cargo) 

      # Envoi réponse
      try:
        id = sms.send( _msg.phone, "%s received!" % _msg.message )
      except SMSError as err:
        print( 'SMS Send error!', str(err) )
    else:
      print( "autre notification", (_time, _type, _str, _cargo) )

     # Next nofitication
     _time, _type, _str, _cargo = sim.notifs.pop()

Encore plus

La bibliothèque contient actuellement 15 exemples couvrant les concepts fondamentaux, les SMS et les appels vocaux.

Voir le bas du fichier readme pour une description des différents exemples.

Où acheter

Les produits utilisés dans cet article sont disponibles chez MCHobby.


MyDin: Carte 2 relais et contrôleur Pico sous MicroPython

Bonjour à tous,

Petit retour sur notre projet de carte contrôleur MyDin en cours de développement.

Le dernier article sur le sujet détaillait les deux cartes principales, leurs fonctionnalités et détails techniques.

La bibliothèque MicroPython et les tests avancent rapidement.
Cet article s'attarde un peu sur le montage dans le boîtier Din.

Un peu d'impression 3D

Deux pièces supplémentaires ont été imprimées pour maintenir la carte contrôleur bien en place.

MyDin - carte contrôleur DINCASE-MB3PICO

Elément qui vient se placer comme ci-dessous sur la carte contrôleur.

MyDin - carte contrôleur DINCASE-MB3PICO

Test d'assemblage

Il faut préalablement équiper le contrôleur du câble d'interface

Puis présenter la carte face à l'ouverture USB.


Enfin, placer la seconde pièce pour sécuriser la carte dans son emplacement.

MyDin - carte contrôleur DINCASE-MB3PICO

Sans oublier, bien sur, d'utiliser les vis de fixation.

Accès au port USB du Pico

Vient ensuite la connexion de la carte de fond de panier.

MyDin - carte de fond 2 Relais DINCASE-2R-BP3MOD
MyDin: DINCASE-MB3PICO + DINCASE-2R-BP3MOD

Reste plus qu'a refermer le boîtier.



Module fermé et prêt à l'emploi

Ensuite

Il reste encore à s'occuper de:

  1. la face du module avec l'accès aux boutons.
  2. finaliser la bibliothèque MicroPython.

Du code en prévisualisation

Voici un exemple rudimentaire présentant le fonctionnement général de la bibliothèque.

Le point principal est l'appel configure() qui précise la carte contrôleur et la carte d'interface associée.
Dans le cas présent, l'appel configure( Pico3Mod, TwoRelay3Mod ) nous informe que:

  1. La carte contrôleur est basée sur un Raspberry-Pico (3 modules DIN).
  2. La carte d'interface est un module 2 relais (3 modules DIN).
L'objet ainsi créé expose les interfaces de la carte contrôleur et des interface de la carte en fond de panier.
Cette approche permet d'envisager d'autres combinaisons de cartes contrôleurs (incluant d'autres interfaces) et d'autres cartes d'interfaces.
 
from mydin import configure
from mydin.pico import Pico3Mod
from mydin.backplane.relays import TwoRelay3Mod 
import time, sys

din = configure( Pico3Mod, TwoRelay3Mod )

# === Relays ==================================
din.rel1.on()
print( "Rel1 is", din.rel1.value() )
time.sleep(1)

din.rel2.on()
print( "Rel2 is", din.rel2.value() )
time.sleep(1)

print( "All relays off" )
for relay in din.relays:
	relay.off()
print( "relays state", [relay.value() for relay in din.relays] )

# === LEDs ====================================
for i in range( 20 ):
	for led in din.leds:
		led.toggle()
		time.sleep_ms(100)
# turn off all leds.
[ led.off() for led in din.leds ]


Qu'en pensez-vous ?

Créer et Entraîner son propre IA pour le module AI HAILO du Raspberry PI 5 [Partie 2]

Dans cette deuxième partie, Frédéric vous invite à entraîner le modèle d’IA que vous avez créé précédemment. Ici vous verrez comment créer le modèle local sous Linux Entraînement du modèle IA sous Linux Pour réaliser l’apprentissage de notre modèle, plusieurs solutions se présentent à nous : entraîner le modèle en local, sous linux ou en […]

Cet article Créer et Entraîner son propre IA pour le module AI HAILO du Raspberry PI 5 [Partie 2] a été publié en premier sur Framboise 314, le Raspberry Pi à la sauce française.....

Créer et Entraîner son propre IA pour le module AI HAILO du Raspberry PI 5 [Partie 1]

Fredéric (Frederic JELMONI alias Fred Robotic) avait déjà présenté des articles sur le Blog, dont le « Raspberry Pi sur la planète Mars« . Membre (et vice-Président) de l’association de robotique Caliban Fred utilise l’IA pour agrémenter le fonctionnement des ses robots et il a fait un énorme travail sur la création de modules d’IA avec Hailo […]

Cet article Créer et Entraîner son propre IA pour le module AI HAILO du Raspberry PI 5 [Partie 1] a été publié en premier sur Framboise 314, le Raspberry Pi à la sauce française.....

MyDin : Carte 2 relais et controleur Pico sous MicroPython

Bonjour à tous,

La solution MyDin existe déjà depuis quelques années pour permettre le prototypage de projets pro et semi-pro. J'en parlais dans cet article.

Le projet connaît un développement intéressant en proposant des cartes plus avancées.

mb3mod

Bien qu'en cours de développement, les avancées sont suffisantes pour une petite présentation ;-) .

A propos de myDIN

Le but du projet myDin c'est de proposer un écosystème de boîtier + cartes permettant d'accueillir les projet Makers mais aussi de développer des solutions Pro/Semi-Pro pour les inclure dans des boîtier DIN.

myDin permet de combler le vide cruel entre le banc d'essai et le coffret électrique.

Source: Gamme myDin chez MCHobby.

L'idée derrière cette gamme est de proposer des cartes de fond de panier pour la commande de "puissance" et des cartes frontales pour l'interface de votre projet.

myDin est un outil qui vous laisse le libre choix du début à la fin de votre projet.

Carte 2 relais pour boîtier DIN 3 modules

Plus récemment, j'ai préparé une carte de fond de panier 2R-BP3MOD pour le boîtier DIN 3 modules.

Cette carte de prototypage propose:

  • 2 relais opto-isolés capables de couper un courant important
  • Une alimentation 5V
  • Un connecteur d'interface JST-PH7
Ces deux relais permettent de commander des appareils comme pompe à eau, petit chauffage, ventilation, éclairage, ...).
Grâce a l'isolation galvanique offert par les relais, il est aussi de commander la mise en marche (ou arrêt) d'une chaudière ou d'un AirCo en simulant l'appui sur un bouton.
Premier prototype de la carte 2R-BP3MOD (fond de panier)

Le connecteur présente une connectique "standardisée" entre la carte contrôleur (développée ci-après) et les cartes de fond de panier.

Description de l'interface avec la carte contrôleur

Carte contrôleur pour boîtier DIN 3 modules

Comme une carte de puissance ne présente aucun intérêt sans carte de contrôleur adéquate.

Voici une carte Pico sous MicroPython Pico-MB3MOD équipée des éléments essentiels à la réalisation de nombreux projets d'automatisation. 

Carte contrôleur pour boîtier DIN 3 modules

La carte de contrôle propose une interface utilisateur et des connecteurs d'extensions accessibles depuis la face avant du boîtier DIN.

L'intérêt d'utiliser du code Python est de permettre le développement facile de solution personnalisée en utilisant Thonny IDE (disponible sur Thonny.org).
Cela est rendu possible grâce à MicroPython!

DIN 3 module avec
carte contrôleur + carte fond de panier.

La carte de contrôle propose les fonctionnalités suivantes:

  • Raspberry-Pi Pico 2 Wireless
  • 4x boutons utilisateurs.
  • 4x LEDs utilisateurs.
  • 1x LED de statut (contrôlable par le code utilisateur)
  • Bouton Reset, LED d'alimentation, switch RUN_APP (sous forme de connecteur a ponter).
  • 1x connecteur Qwiic (JST-SH4, pas visible).
  • 1x connecteur UEXT (IDC 2x5 conn).
  • 1x connecteur 1Wire (en vert).

A propos du Pico 2 Wireless

Ce module DIN est propulsé par Raspberry-Pi Pico 2 Wireless, un microcontrôleur Dual Core @ 150 MHz.

Pico 2 W disponible chez MC Hobby

Disposant de 512 Kio de RAM, ce microcontrôleur surpuissant est capable d'exécuter du code MicroPython (mais aussi Arduino, Circuit Python, Rust, C, etc).

Il est même assez puissant pour proposer un mini Web-Serveur.

Comme les 4 Mio de mémoire Flash est également utilisée pour stocker le système de fichiers de MicroPython, un espace de stockage énorme pour vos scripts et ressources (ex: faire du datalog).

Les GPIOs du Pico sont tous attribués dans le projet, suivant vos besoins, il sera possible d'en récupérer l'un ou l'autre sur le connecteur UEXT en fonction des besoins.

A propos du connecteur Qwiic 

Ce connecteur popularisé par SparkFun, aussi connu sous le nom StemmaQt chez Adafruit Industries, transporte un bus I2C ainsi qu'une alimentation 3V3.

Source: Wiki MCHobby - Connecteurs

Ce connecteur est pratique pour connecter rapidement un capteur sur la carte contrôleur (luxmètre, Humidimètre, température, qualité d'air, etc) ou afficheurs (4x7 segments, LCD, OLED, etc)

Un connecteur de choix pour rendre le module DIN sensible au monde environnent ET/OU améliorer l'interaction avec l'utilisateur.

A propos du connecteur UEXT

Ce robuste connecteur transporte plusieurs bus (I2C, UART, SPI) ainsi qu'une alimentation. Le connecteur UEXT est popularisé par la société Olimex.
Voyez la gamme UEXT disponible chez MCHobby.

Source: Wiki MCHobby - Connecteurs

Le bus SPI pourra être utilisé pour faire de l'échantillonnage haut-débit ou pour connecter un écran TFT.

L'intérêt de ce connecteur est d'utiliser un empattement de 2.54mm, ce qui permet aussi d'utiliser les fils de prototypage soit avec les bus, soit en utilisant directement les GPIOs associés.

Seul le bus I2C ne peut être détourné car il est également utilisé sur la carte contrôleur.

A propos du connecteur 1Wire

Le bus 1-Wire (Wikipedia) est surtout connu grâce au capteur de température DS18B20.

Sonde température DS18B20 Waterproof

Le connecteur à ressort permet d'ajouter facilement une (ou plusieurs) sonde(s) de température. 

Les sondes de température sont pratiques pour surveiller la température d'une serre, d'un aquarium, vivarium ou d'un frigo.

LES DESSOUS de la carte contrôleur


Le module est équipé d'une horloge RTC de précision, ce qui permettra au module de rester à l'heure même après une coupure de tension :-)
Disposer d'une horloge permet aussi de planifier des tâches horodatée.
 
Le buzzer amplifié est là pour offrir un retour sonore. Utile par exemple pour produire une alerte lorsque les conditions environnementales semblent anormale.
Encore une fois, cela serait fort utile pour les Aquariums et Vivariums.
 
Une empreinte de connecteur Qwiic est également disponible sous la carte. Cela permettra, au besoin, d'ajouter des fonctionnalités avancées par l'intermédiaire du bus I2C.
 
Enfin, comme le microcontrôleur RP2350 dispose d'un capteur de température, celui-ci pourra être utilisé pour surveiller la température à l'intérieur du boîtier.

Votre avis compte aussi

Je crois que ce projet réunit des éléments dans une configuration prometteuse.
Il me faut encore me pencher sur la partie logicielle de sorte à faciliter la personnalisation.

Si cet article vous inspire commentaires et remarques alors n'hésitez pas à les partager dans la section "commentaire" de cet article.

A tout bientôt,
Dominique

Première publication libre de Multigit

Multigit est un outil graphique conçu pour simplifier la gestion de projets composés de beaucoup de dépôts git.

Une image et une vidéo valant mieux qu'un long discours, voici à quoi ça ressemble:

Screenshot

Je l'ai développé dans le cadre de mon travail chez IDEMIA où nous sommes souvent confrontés à plus de trente (voire plus de soixante) dépôts à gérer conjointement sur un projet. Dans ce contexte, la moindre opération git devient un mini-défi qu'il fallait relever quotidiennement.

Multigit est abouti et stable, il est utilisé au quotidien par plus d'une centaine de personnes (sous Windows), depuis plusieurs années. Mon employeur m'a aimablement autorisé à le publier en Open Source, ce dont je lui sais gré. Il est publié sous licence Apache 2.0

La problématique de gestion de plusieurs dépôts git conjoints pour un projet est assez peu répandue dans le monde du logiciel libre. Mais beaucoup plus dans le monde de l'entreprise. En effet, git ne gère pas la notion de droit d'accès à une partie d'un dépôt. La seule façon de restreindre l'accès à certains parties d'un projet est donc de créer un dépôt spécifique pour les y stocker, avec des droits d'accès au niveau du dépôt. Ajoutons à cela beaucoup de personnes, beaucoup de projets parfois complexes, beaucoup de sous-projets, beaucoup d'historique et on se retrouve avec une gestion des sources particulièrement complexe. Complexe … avant l'arrivée de Multigit en tout cas.

Installation

Sous Linux, la seule option d'installation disponible à l'heure actuelle est Python + pip, ou encore mieux avec pipx:

    $ sudo apt install python-pipx
    $ pipx install multigit_gx
    $ multigit

Sous Windows, un installeur graphique click-and-play vous permettra d'arriver au même résultat.

J'ai bien tenté de fournir un snap pour Linux mais snap est conçu pour empêcher à peu près tout ce que veut faire Multigit: accèder à tous vos fichiers et lancer des programmes de votre distribution (git, gitk, …)

Je ferai mieux dans la prochaine version. D'ailleurs, si vous avez des recommandations pour un packaging moderne, simple, facile à maintenir et couvrant toutes les distributions Linux, je suis preneur.

Contribution

Le projet est géré sous GitHub, les contributions ou les retours sont les bienvenus.

Commentaires : voir le flux Atom ouvrir dans le navigateur

Raspberry Pi 5 avec SSD 256 Go et Accélérateur AI Coral M.2 sur carte PineBoards

Kubii m’a confié pour test un ensemble composé d’un Raspberry Pi 5 équipé de 16 Go de RAM, une carte PineBoards pouvant accueillir un SSD M.2 et un module AI Coral Accelerator. Le montage est facile et à la portée de tous. Je vous présente dans cet article les tests de ce matériel.   Raspberry […]

Cet article Raspberry Pi 5 avec SSD 256 Go et Accélérateur AI Coral M.2 sur carte PineBoards a été publié en premier sur Framboise 314, le Raspberry Pi à la sauce française.....

❌