Vue normale
-
- Découverte d’un espace qui flirte avec l’ombre : quand la veille vulnérabilités devient un manuel d’attaque
Précommande Marathon : les joueurs consoles vont payer le prix fort, mais pas les joueurs PC
![]()
[Précommande] Après un développement tumultueux, le prochain shooter de Bungie s'apprête à voir le jour. Alors que la phase de test bat son plein, on trouve déjà le jeu Marathon moins cher, seulement pour les joueurs PC.
Sony fait tester deux jeux-service le même week-end, et ça n’a donc aucun sens
![]()
Ce week-end a lieu la bêta ouverte de Marathon. Au même moment, quelques élus pourront s'essayer à Horizon Hunters Gathering. Sony nous propose donc simultanément deux aperçus de deux de ses prochains jeux-services. Ce qui n'est pas très malin en termes d'exposition.
À quelle heure pourra-t-on jouer gratuitement à Marathon ?
![]()
Trois ans d'attente et un développement chaotique plus tard, la franchise culte de Bungie (1994) fait son grand retour. Bonne nouvelle : avant sa sortie, une version d'essai gratuite ouvre ses portes ce 26 février. Voici à quelle heure vous pourrez y jouer.
Marathon : Bungie sort l’artillerie anti-triche avec du Permaban à vie !
À l’approche du Server Slam de Marathon, Bungie détaille l’architecture réseau et les protections anti-triche de son shooter d’extraction.
Cet article Marathon : Bungie sort l’artillerie anti-triche avec du Permaban à vie ! a été publié en premier par GinjFo.
-
- Indexing is more straight-forward (and faster) than unpacking by rhettinger · Pull Request #145154 · python/cpython · GitHub
Raspberry-Pi 5: API MicroPython pour Python
Bonjour à tous,
Tout récemment, je voulais utiliser un module RFM69 sur un Compute Module 5 (autrement dit l'équivalent d'un Raspberry-Pi 5) faisant fonctionner un logiciel écrit Python.
Une API MicroPython sous Python
- Ajouter les déclarations d'encodage (nécessaire à Python)
- Créer machine.SPI
- Créer machine.Pin
- Créer micropython.const
- Ajouter ticks_ms, ticks_diff, sleep_ms, sleep_us au module time de Python.
Le module RFM69
L'image ci-dessous se présente le module RFM69HCW 433MHz . Ce module permet de transmettre des données sur un réseau numérique utilisant le ondes-radios comme medium de transfert. C'est un peu le protocole internet appliqué à la radio.
| RFM69HCW 433MHz |
Comme le Pilote est développé sous le précepte "Plateform Agnostic Driver" de sorte à pouvoir fonctionner indépendamment de la plateforme MicroPython cible.
| esp8266-upy - Plateform Agnostic Micrpython Driver |
Ce module se branche sur un bus SPI, il est donc possible de le connecter sur GPIO d'un Raspberry-Pi 5 (ou du Compute Module 5).
| Source: Raspberry-pi.ovh |
Brancher RFM69 sur GPIO
Les connexions suivantes sont établies entre le module RFM69 et le GPIO Raspberry-Pi.
La broche CS (chip select) est branchée sur le GPIO 25 alors qu'il existe les broches CE0 (GPIO8) et CE1 (GPIO7).
Le problème ici est que CE0 et CE1 sont automatiquement gérés par le système d'exploitation alors que sous MicroPython, c'est le code utilisateur qui gère l'état du signal CS.
Dans le cas présent, la gestion automatique de CE0 et CE1 empêche l'utilisation du burst_read sur le module RFM69 raison pour laquelle le GPIO25 est utilisé comme signal CS (ce signal étant contrôlé par le code utilisateur).
Prototype
Compatibilité avec Python
Commençons par récupérer la bibliothèque MicroPython du RFM69 depuis le dépôt esp8266-upy pour y ajouter l'encodage du fichier (important pour Python).
| Ajout de l'encodage dans le bibliothèque RFM69 |
Récupérer l'exemple test_config.py utilisé pour tester la communication avec le module RFM69. Nous y ajoutons également l'information d'encodage dans le fichier.
Couche de compatibilité Python --> MicroPython
Création des fichiers machine.py et micropython.py pour accueillir les classes Pin & SPI ainsi que la déclaration de la fonction const()
Le script le plus intéressant est hack_time.py car celui-ci permet d'ajouter les fonctions MicroPython (ticks_ms, ticks_diff, sleep_ms, etc) manquantes dans Python.
#!/usr/bin/python # -*- coding: utf-8 -*- """ hack_time.py : mimic the MicroPython alike specific methods """ import time def _sleep_us( us ): time.sleep( us*0.000001 ) def _sleep_ms( ms ): time.sleep( ms*0.001 ) def _ticks_ms(): return int(time.time()*1000) def _ticks_diff( v1, v2 ): return v1-v2 time.sleep_us = _sleep_us time.sleep_ms = _sleep_ms time.ticks_ms = _ticks_ms time.ticks_diff = _ticks_diff
Il ne reste plus qu'a adapter le script d'exemple pour créer l'instance du bus SPI (sur le RPi) et passer le tout à la bibliothèque MicroPython originale.
#!/usr/bin/python # -*- coding: utf-8 -*- from machine import SPI, Pin import hack_time from rfm69 import RFM69 # Machine.py for Raspberry-Pi 5 spi = SPI( 0 ) nss = Pin( 25, Pin.OUT, value=True ) # Do not use the RPI CE0/CE1, it is not compatible with the Burst_Read of RFM69 rst = Pin( 18, Pin.OUT, value=False ) rfm = RFM69( spi=spi, nss=nss, reset=rst ) rfm.frequency_mhz = 433.1 ....
Le bus SPI est rattaché au bus matériel SPI0 & CE0.
Une broche Enabled (nss) alternative est utilisé avec le GPIO25 pour contrôler les transactions du bus SPI. La broche CE0 du GPIO est donc ignorée.
Enfin, le GPIO 10 est utilisé pour réinitialisé le module RFM69.
Au final, la création de l'instance RFM69 et le restant du code (y compris la bibliothèque RFM69) est identique entre MicroPython et Python (sur RPi5).
L'exécution de l'exemple sur le Raspberry-Pi 5 produit le résultat attendu (identique lorsqu'il est exécuté sur un Pico).
| test_config.py : exécution de la bibliothèque MicroPython RFM69 sur Raspberry-Pi 5 |
Ressources
- MicroPython-API-for-Python experiment is published on GitHub.
SunFounder Fusion HAT+ : alimentation 2×18650, moteurs et contrôle “IA-ready” pour Raspberry Pi
La SunFounder Fusion HAT+ ressemble à un simple HAT pour Raspberry Pi… jusqu’au moment où vous réalisez que c’est plutôt un couteau suisse pour robot “assisté par IA”. Elle ne “fait” pas l’IA toute seule : les neurones restent sur le Raspberry Pi (un Pi 5 dans mon cas), mais la carte apporte le muscle […]
Cet article SunFounder Fusion HAT+ : alimentation 2×18650, moteurs et contrôle “IA-ready” pour Raspberry Pi a été publié en premier sur Framboise 314, le Raspberry Pi à la sauce française..... - Framboise 314, le Raspberry Pi à la sauce française.... - La référence du Raspberry Pi en France - Par l'auteur du livre "Raspberry Pi 4" paru aux Edts. ENI
Profileur mémoire MALT 1.6.0 et support de Python
MALT c'est quoi ?
L'optimisation est une activité connue de bien des développeurs, fouiller, chercher dans son code, pour, peut être, gagner un peu de performance (beaucoup, parfois). Dans cette tâche ardue, face à des codes grandissants, massifs, utilisant de nombreuses bibliothèques externes, un outil central dans ce travail de fourmi : le profileur.
Le profileur fait partie des outils importants pour le développeur qui se soucie des ressources qu'il utilise. Il lui permet de chercher les points chauds dans son code, comprendre le cout de chaque fonction, chaque ligne implémentée. Bien des outils s'intéressent à une chose : bien utiliser votre processeur.
Mais que se passe-t-il si vous rencontrez des difficultés avec l'utilisation de votre mémoire ? Si vous pensez mal utiliser la fonction malloc() du C ou l'opérateur new du C++ ? Si vous avez oublié qu'une de vos variables globales occupe 10 Go (surtout en Fortran) ?
Publié il y a quelques années MALT (licence CeCILL-C) permet de répondre à la question en cherchant toutes les allocations mémoires faites par votre code. Cet outil avait fait l'objet d'un article sur LinuxFR en 2018 lors de sa mise en open source : Profileurs mémoire MALT et NUMAPROF.
- lien nᵒ 1 : Site officiel de MALT
- lien nᵒ 2 : Dépôt github
- lien nᵒ 3 : Premier article LinuxFR sur MALT
Versions 1.6.0
Avancées
Depuis, cet outil fait son chemin avec l'ajout du support de Rust ainsi que nombreuses corrections et ajouts tels que la possibilité de dumper le profile mémoire juste avant que le système ne soit plein.
malt -o dump:on-sys-full-at=80% -o watch-dog=true ./mon_programme
# également :
# -o dump:on-app-using-rss=10G
# -o dump:on-app-using-virt=80%
# -o dump:on-app-using-req=500M
La possibilité de suivre les appels à mmap, mremap, munmap si vous les appelez directement dans votre code au lieu de laisser malloc faire son travail.
Support de python
MALT a initialement été développé dans le contexte du calcul à haute performance — HPC (High Performance Computing) donc surtout pour le C / C++ / Fortran / Rust.
Dans la communauté scientifique, nous voyons dans les laboratoires de plus en plus fleurir l'usage d'un langage à priori bien éloigné de nos prérogatives de performances : Python.
Dans un cadre de calcul scientifique, il est souvent utilisé plutôt comme un wrapper permettant d'appeler et d'orchestrer des bibliothèques en C /C++ / Fortran, elles, performantes. Quoi que l'usage amène aussi à l'écrire de certaines parties du code en Python grâce à Numpy ou Numba pour accéléré la partie calcule sur des tableaux ou autres frameworks d'exploitation des GPU.
La version 1.6.0 de MALT vient d'ajouter le support (encore quelque peu expérimental) natif de Python permettant d'analyser un code pur python ou mix Python / C / C++…. Il s'agit pour l'instant de la première version avec ce support, il reste donc du travail.
Sont supportés les versions Python supérieures à 3.11 ainsi que les environnements Conda / Anaconda / Venv. À l'heure de rédaction de cet article, cela comprend les versions 3.11 à 3.14.
MALT étant orienté C / C++, il ne supporte que Linux comme système d'exploitation. (NdM: la causalité évoquée ici devrait faire réagir des développeurs d'autres systèmes libres notamment :))
Utilisation sur Python
Si la commande malt fonctionne parfaitement, il est recommandé d'utiliser le wrapper malt-python qui adapte quelques configurations spécifiques à Python non encore automatiques.
malt-python ./script.py
# équivalent à
malt --profile python-default ./script.py
# liste des profiles
malt --profile help
# Afficher le profile
malt-webview ./malt-script-py-6889.json
Profilage rapide
Notons que l'overhead de MALT est important en Python du fait du large nombre d'allocations générées par ce langage et de la méthode de résolution des piles d'appels pour retrouver les lignes dans votre code. Ces détails d'analyse peuvent être désactivés via :
# Désactivé complète de l'analyse des piles
malt-python -p python-no-stack ./my_script.py
# Analyse des piles par "sampling"
malt-python -p python-sampling ./my_script.py
Nouvelle interface
La version 1.6.0 arrive également avec une nouvelle interface graphique avec un code remis à jour
par rapport à sa version originale vieillissante.
![]()
Profil statique
Pour ceux qui voudraient échanger les profils avec d'autres sur d'autres OS, il est possible depuis la 1.6.0 de générer une version statique des pages de l'interface (hors annotation des sources et arbre d'appel navigable) via :
# Toues les pages possible en statique
malt-webview -static ./report malt-progr-123456.json
# Seulement la page de résumé.
malt-webview -static-summary ./report malt-progr-123456.json
Installation
MALT n'est pas encore disponible dans les distributions classiques, vous devez donc le compiler et l'installer à la main. Le nombre réduit de dépendances obligatoires en fait un outil relativement facile à installer.
On trouvera la procédure dans la documentation du projet.
Documentation
La documentation a été complètement ré-écrite et disponible sur le site officiel : documentation.
Outils similaires pour Python
Découvrir un outil est aussi l'occasion d'en découvrir d'autres. Restons dans le monde du Python, si MALT ne vous convient pas vous trouverez peut-être votre bonheur avec les outils suivants et complémentaires à MALT et eux totalement dédiés au Python toujours pour la mémoire :
MALT se positionne par rapport aux deux présentés en apportant une analyse fine en annotant tout le source code de l'application. Il offre également une analyse des variables globales et TLS coté C/C++/Fortran/Rust.
Commentaires : voir le flux Atom ouvrir dans le navigateur
GitHub - hirsimaki-markus/seapie: A breakpoint should just mean >>>
Pimmich – Un cadre photo connecté open source basé sur Raspberry Pi
Aujourd’hui, je vous propose de découvrir Pimmich, un cadre photo connecté open source basé sur Raspberry Pi, pensé pour afficher vos souvenirs sans cloud ni abonnement, en restant 100% local. Avec les récents changements côté Google Photos, beaucoup d’entre vous ont dû revoir leurs habitudes… et Aurélien a eu le bon réflexe : s’appuyer sur […]
Cet article Pimmich – Un cadre photo connecté open source basé sur Raspberry Pi a été publié en premier sur Framboise 314, le Raspberry Pi à la sauce française..... - Framboise 314, le Raspberry Pi à la sauce française.... - La référence du Raspberry Pi en France - Par l'auteur du livre "Raspberry Pi 4" paru aux Edts. ENI
(mcorbin.fr): 4 mois de Python de manière intensive: mon retour sur le langage
Sortie de Tryton 7.8
Le 15 décembre 2025 est sortie avec un petit délai, la version 7.8 de Tryton, un progiciel de gestion intégré modulaire et multiplate-forme.
![]()
- lien nᵒ 1 : Annonce 7.8
- lien nᵒ 2 : Dépêche sur la sortie 7.6
- lien nᵒ 3 : Démo
- lien nᵒ 4 : Documentation
La version 7.8 de Tryton est sortie mi‑décembre 2025 et s’inscrit dans la continuité des branches précédentes, avec une mise à jour axée sur la stabilité, les performances et une série de raffinements fonctionnels dans tous les domaines de gestion. Elle apporte de nombreuses corrections de bogues, améliore la réactivité du serveur et peaufine à la fois l’interface utilisateur, les modules métiers et les outils destinés aux administrateurs et développeurs.
Support PEPPOL
Suite à l'obligation pour 2026 en Belgique d’envoyer les factures entre sociétés belges au format électronique via le réseau PEPPOL, la version 7.8 inclut à temps les modules nécessaires dont un module de connexion au point d’accès gratuit Peppyrus.
Quand ces modules sont activés, Tryton envoie automatiquement à partir de 2026 sur le réseau PEPPOL les factures si le client a un numéro de TVA belge (ainsi que la société gérée). Il est aussi possible de forcer l’envoi pour certains clients.
Les modules sont conçus pour être étendu à d’autres points d’accès futures afin de diversifier l’offre.
Interface et usage quotidien
Cette version introduit un système de notifications plus moderne : un menu dédié regroupe les messages, un compteur signale les notifications non lues et des pop‑ups informent l’utilisateur des nouveaux événements sans quitter son écran. Les vues en liste sont plus agréables, avec des boutons d’action visibles en pied de page et des recherches simplifiées, par exemple pour trouver les documents sans entrepôt défini, ce qui rend la navigation au quotidien plus fluide.
Le chat intégré, apparu dans la version précédente comme fonctionnalité émergente, est désormais activée de base sur les documents clés (ventes, achats, factures…) pour centraliser les échanges directement dans le logiciel. Les utilisateurs peuvent s’abonner à un document via une icône de cloche et recevoir des notifications ciblées, renforçant le suivi collaboratif sans dépendre d’outils externes.
![]()
Modules métiers
Sur le plan fonctionnel, la version 7.8 enrichit l’écosystème de modules : gestion des formats de factures électroniques UBL et PEPPOL, gestion de contrats de location (avec facturation progressive), support des agents et de documents (facture commerciale) de douane, ainsi que définition plus fine des points d’expédition logistiques par entrepôt.
L’intégration e‑commerce, notamment avec Shopify.com, est nettement améliorée avec la prise en charge des remboursements, des taxes sur les frais de port, des produits de type kit, un choix plus intelligent du transporteur et la synchronisation de la langue du client et des liens d’administration entre boutiques en ligne et Tryton.
Le moteur d’approvisionnement a été ajusté pour mieux gérer les contraintes de délais : si aucun fournisseur ne peut livrer dans le délai idéal, le système choisit automatiquement celui qui offre le délai le plus court, limitant les ruptures tout en restant réaliste. De nouveaux rapports sur la quantité de stock et la rotation de stock permettent de suivre plus précisément les niveaux et mouvements, et de prendre de meilleures décisions sur les points de commande et les réassorts.
Les modules de comptabilités supportent maintenant les références de paiement sur les factures et les relevés de compte. Pour l’instance les formats « Creditor Reference » et « Communication structurée » belge sont supportées en standard.
Administration et développement
Côté serveur, Tryton 7.8 réduit la consommation mémoire en envoyant les réponses JSON comme flux et en ne chargeant plus que les modules activés, ce qui profite aux installations avec peu de modules activés (on a mesuré des réductions de la consommation mémoire entre 10% et 20%). Les administrateurs disposent d’un mode console: trytond-console capable d’exécuter maintenant des scripts depuis un fichier et d’un paramètre de rotation des logs basé sur la taille plutôt que sur l’âge, tandis que les développeurs bénéficient du nouveau système de notifications côté serveur, d’optimisations SQL avec l’usage de FILTER et EXISTS et de la possibilité de matérialiser les modèles basés sur une requête SQL (au lieu d’une table).
Commentaires : voir le flux Atom ouvrir dans le navigateur
sommaire [Les recettes Python de Tyrtamos]
Raspberry Pi 5 : piloter des LEDs WS2812B de manière fiable avec le bus SPI
La question du pilotage des LEDs WS2812B sur Raspberry Pi 5 a récemment été soulevée par Victor lors d’un échange sur un réseau social. Le Raspberry Pi 5 introduit une nouvelle architecture matérielle qui complique le pilotage des LEDs WS2812B avec les bibliothèques historiques. Les solutions basées sur le PWM ou le DMA montrent rapidement […]
Cet article Raspberry Pi 5 : piloter des LEDs WS2812B de manière fiable avec le bus SPI a été publié en premier sur Framboise 314, le Raspberry Pi à la sauce française..... - Framboise 314, le Raspberry Pi à la sauce française.... - La référence du Raspberry Pi en France - Par l'auteur du livre "Raspberry Pi 4" paru aux Edts. ENI
GitHub - chifflier/mind-your-languages: Languages and security
This collection of examples discussing the question of the intrinsic security characteristics of programming languages. Through illustrations and discussions, it advocates for a different vision of well-known mechanisms and is intended to provide some food for thoughts regarding languages and development tools, as well as recommendations regarding the education of developers or evaluators for secure software.
— Permalink
Récupération: reconditionner un clavier Samsung Galaxy Tab S6
Bonjour à tous,
J'ai eu l'occasion, de récupérer une ancienne tablette Galaxy Tab 6 (2019) et son clavier Bluetooth. Un système Android malheureusement plus tenu à jour en 2025 donc à l'utilisation déconseillée.
| Clavier Galaxy Tab S6 (Bluetooth) |
Contre toute attente, il m'a été impossible d'appairer ce clavier avec un autre système. Ceci dit, cela n'est pas très étonnant d'être confronté à un système fermé.
A contre-courant de l'obsolescence
Si je n'ai pas encore trouvé comment reconvertir la tablette (n'hésitez pas à commenter), je me suis lancé dans la reconversion du clavier pour une future application MicroPython.
Cela commence forcement par l'ouverture du clavier qui n'est pas bien difficile (il y a 4 vis sous chacun des anti-dérapant.
| Clavier Galaxy Tab S6 |
On y retrouve un clavier à membranes connecté sur un connecteur 26 broches, un accu Lipo de faible puissance, un touchpad I2C et un microcontroleur bluetooth (non visible de ce côté de la carte).
| Clavier Galaxy Tab S6 |
Loin moi l'idée de reprogrammer le microcontrôleur Bt de la carte (ses protections matérielles sont certainement active), je me suis dit qu'il serait plus facile de réutiliser directement la membrane avec un Pico.
C'est que l'on imagine cette membrane comme un clavier de KeyPad dont le fonctionnement est sommaire.
Avec un peu d'analyse, j'ai rapidement repéré des résistances pull-down de 35 KΩ sur chacune des lignes (excepté les 5 premières). D'autres lignes marquée sont elles équipées d'un composant spécifique (voir les points blancs sur l'image ci-dessous).
Je pensais avoir repéré les colonnes, les autres signaux étant alors les lignes.
Malheureusement, les choses ne furent pas si simples!
Un peu de hacking
Je commence donc par souder des fils vernis 0.2mm sur le connecteur en vue de réaliser des tests. Les fils sont maintenus bien en place à l'aide de colle chaude (pour éviter de casser les fragiles soudures des fils).
| Quelques fils soudés sur le connecteur (pin 1 à droite). |
J'ai procédé de même avec les 26 contacts ensuite reporté sur une plaque de prototypage (bien dans l'ordre).
| report des connexions sur une plaque de prototypage offrant un accès via connecteur 2.54mm |
Connexion au Pico
J'ai utilisé 2x MCP23017 (GPIO expander 16 bits) pouvant être contrôlé via bus I2C, donc avec seulement deux lignes connectés sur le Pico.
| Matrice clavier branché sur des MCP23017 |
| Brochage du MCP23017 |
L'intérêt des MCP23017 est d'avoir les broches 1 à 26 du connecteur clavier branchés scrupuleusement dans l'ordre croissant des GPIOs des MCP23017. Pas de mathématiques complexes, il y a une relation 1-à-1 entre les MCP et la matrice clavier.
| Correspondance broche clavier (1..26) vers MCP (0..15) + MCP (0..9) |
Enfin, j'ai aussi remarqué que l'usage de résistance pull-down sur les 5 premières lignes améliorait la stabilité de la détection. Ces pull-down manquantes sur le connecteur clavier était probablement activée sur le microcontroleur bluetooth.
Décoder la matrice clavier
Après un premier échec sur l'identification des colonnes et des lignes de la matrice, un second script a été écrit pour tester une à une chaque ligne comme une colonne considérant alors les 25 autres lignes pour détecter une touche.
Le script tester2.py publié sur le dépôt agit comme suit:
- Presser une touche du clavier
- Au démarrage, toutes les broches sont configurées en entrée.
Elles présentent toutes une haute impédance. - Ensuite le script sélectionne une ligne -- dite driver pin--, la configure en sortie et la place au niveau haut. Cette broche présente donc une faible impédance et est capable de fournir du courant.
- Ensuite, les 25 autres broches --read pin-- sont interrogés une par une pour y détecter un niveau haut.
Note: la touche pressée doit permettre au courant de circuler vers une des broches en lecture. - S'il N'Y A PAS de détection de niveau haut ALORS
* le script repasse la driver pin au niveau bas
* PUIS reconfigure celle-ci en entrée.
* ENFIN, le script passe la driver pin sur la broche suivante
* et recommence le cycle de détection au point 3. - S'il Y A détection d'un niveau haut ALORS le script a détecté un couple (driver_pin, read_pin) permettant de détecter la touche enfoncée.
Après avoir testé toutes les touches et répertorié les combinaisons dans une feuille calcul. Nous avons enfin un description de la matrice du clavier.
| feuille calcul des détection de touches |
La feuille de calcul reprend les couples drive_pin,read_pin dans la 2ieme colonne.
Puisque le contact électrique se fait dans les deux sens entre drive_pin--et--read_pin alors il est possible d'écrire la relation de détection de F12 comme 7,13 ou 13,7 (d'ailleurs, les deux options sont indiquées par tester2.py ).
Par souci de simplicité, la relation est écrite avec le plus petit numéro de broche d'abord (donc 7,13 pour la touche F12).
Compilation des broches
Maintenant que nous disposons d'une description de la matrice, il serait opportun d'identifier les driver_pin et les read_pin utilisés dans la matrice.... cela revient à identifier les lignes et les colonnes du keypad présenté plus haut dans l'article.
C''est justement l'objectif du script tester2-driver-pin-detect.py disponible dans le dépôt.
Ce dernier permet d'identifier:
- driver pin = [6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]
- read pin = [12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]
Remarque:
Il y a un recouvrement des broches driver_pin et read_pin. Suivant les circonstances, une broche de la matrice clavier agit tantôt comme broche driver_pin tantôt comme broche de read_pin (de lecture).
Lecture optimisée
Sur base des informations obtenue, le script tester3.py disponible dans le dépôt effectue une détection optimisée des touches du clavier.
La détection s'étend aux combinaisons de touches avec Shift,Ctrl,Alt.
Il reste encore un peu de travail mais le plus gros est fait :-)
La 4G avec un Raspberry Pi Pico ? C’est possible !
Il y a un peu plus de trois ans, je vous présentais déjà la carte NadHAT MK2, basée sur un modem 4G A7682E, imaginée et fabriqué en France par Garatronic et distribuée par McHobby. Cette carte bénéficie d’un support sérieux et de bibliothèques bien suivies, ce qui la distingue de nombreuses productions asiatiques. Aujourd’hui, place […]
Cet article La 4G avec un Raspberry Pi Pico ? C’est possible ! a été publié en premier sur Framboise 314, le Raspberry Pi à la sauce française.....
MicroPython: Mesurer la vitesse de l'air avec le capteur FS3000
Amis de MicroPython... Bonjour,
Cela faisait longtemps que nous n'avions pas eu l'occasion de porter un nouveau pilote sous MicroPython.
Renesas FS3000
Cette fois, nous nous sommes penchés sur le capteur FS3000 de Renesas qui mesure la vélocité de l'air. Capteur que l'on retrouve sur les breakout FS3000 de SparkFun.
| Capteur FS3000 de SparkFun |
Ce type de capteur est principalement utilisé dans des systèmes de refroidissement ou de conditionnement d'air. Comme il dispose d'une interface I2C, il est très facile de l'exploiter avec de nombreux microcontrôleur.
Les cartes breakout existent en deux versions:
- FS3000-1015 mesurant des flux jusqu'à 15m/s (54 Km/H).
- FS3000-1005 mesurant des flux jusqu'à 7ms/s (25 km/H).
Pilote MicroPython
Bien que SparkFun propose un pilote MicroPython --ce que je salue-- celui-ci est construit sur une surcouche d'abstraction permettant permettant d'utiliser le capteur avec CircuitPython et MicroPython.
Etant un fan inconditionnel de MicroPython, je pense qu'il est préférable de disposer d'un code qui va droit au but... avec le moins de détour possible! C'est ainsi que l'on maintient une efficacité optimale d'exécution.
J'ai décidé de recréer un pilote à partir du code Arduino. En effet, il à été plus facile de travailler à partir du code Arduino que de suivre la couche d'abstraction CircuitPython/MicroPython.
Le pilote alternatif est disponible sur notre dépôt esp8266-upy/qwiic-ait-velocity .
Brancher sur un Raspberry-Pi Pico
Le schéma suivant indique comment brancher le capteur sur un Pico à l'aide d'un câble Qwiic (qui transporte un bus I2C).
| Brancher un capteur FS3000 sur un Raspberry-Pi Pico |
Du code pour le peuple
Après avoir transféré la bibliothèque airspeed sur la plateforme MicroPython, il ne reste plus exécuter l'exemple ci-dessous.
from machine import I2C,Pin from airspeed import FS3000, AIRFLOW_RANGE_15_MPS import time # Raspberry-Pi Pico i2c = I2C( 1, sda=Pin.board.GP6, scl=Pin.board.GP7 ) # Adresse par défaut air_speed = FS3000( i2c ) # air_speed.set_range( AIRFLOW_RANGE_7_MPS ) air_speed.set_range( AIRFLOW_RANGE_15_MPS ) while True: print( "FS3000 lecture brute:", air_speed.read_raw() ) # 125ms acquisition # lecture en metre par seconde, retourne un float de 0 - 7.23 pour FS3000-1005, 0 - 15 pour FS3000-1015 airflow_mps = air_speed.read_mps() if airflow_mps != None: # retourne None en cas d'erreur CRC! print( " m/s:", airflow_mps ) airflow_kmh = airflow_mps*3600/1000 print( " Km/h:", airflow_kmh ) airflow_mph = airflow_mps*2.2369362912 print( " Miles/h:", airflow_mph ) time.sleep( 1 )
Ressources
SI vous aimez nos traductions et documentations ALORS aidez nous à en produire plus en achetant vos produits chez MCHobby.