Archive
Utilisation d’une carte SD en MicroPython
Un petit article sur l’utilisation d’une carte SD en MicroPython. Pour les tests, je vais utiliser un ESP32 Wrover TTGO T8 qui a l’avantage d’intégrer un lecteur SD :

Le lecteur SD est accessible en utilisant le protocole SPI et utilise les broches suivantes qui sont indiquées sur le module ESP32 :

Il faut télécharger un module qui prend en charge l’utilisation du SD à l’adresse suivante sur Github.
Je vous livre un petit programme de test qui permet de créer un fichier sur la carte SD :
# # Utilisation carte SD # # Matériel : # ESP32 Wrover TTGO T8 v1.7 # MicroPython 1.10 # # Auteur : iTechnoFrance # from machine import SPI, Pin import os, esp32, time # module sdcard à télécharger sur # https://github.com/micropython/micropython/tree/master/drivers/sdcard import sdcard # déclaration SPI SD CARD TTGO T8 spi = SPI(1, sck=Pin(14), mosi=Pin(15), miso=Pin(2)) # déclaration SD CARD (CS --> GPIO13) sd = sdcard.SDCard(spi, Pin(13)) # déclaration LED interne TTGO T8 led_interne = Pin(21, Pin.OUT) # GPIO21 os.mount(sd, '/sd') compteur = 1 while True: with open("/sd/compteur.txt", "a") as fichier: led_interne.value(True) # LED interne on pour indiquer une écriture fichier.write(str(compteur) + "\n") # écrit dans le fichier led_interne.value(False) # LED interne off pour indiquer la fin d'écriture time.sleep(1) if compteur == 10: # effectue 10 écritures fichier.close() # ferme le fichier os.umount('/sd') # démonte la carte SD break # quitte le programme compteur += 1
Créer une station météo sans capteurs en MicroPython
Aujourd’hui, nous allons étudier la possibilité de créer une station météo sans utilisation de capteurs spécifiques.
Notre station devra être capable :
– D’afficher la date et l’heure.
– D’afficher la température, la pression Atmosphérique et le taux d’humidité.
– D’afficher la vitesse du vent et son orientation.
– D’afficher le lever et le coucher de soleil.
Voilà pour le cahier des charges et tout cela en MicroPython; pour les tests nous pourrons utiliser un ESP32 ou un ESP8266.
Finalisation du bras robotique
Ce projet touche à sa fin, j’ai décidé d’apporter les modifications suivantes au bras :
- Ajout d’un écran OLED SSD1306.
- Ajout d’un capteur de gestes PAJ7620.
- Impression du couvercle.
Le but de ces modification est d’apporter une interface humaine au bras robotique. Effectivement, en lançant le programme, un menu s’affichera sur l’écran OLED et on pourra sélectionner l’action à effectuer grâce au capteur de gestes PAJ7620. Nous y reviendrons dans la suite mais pour l’instant voyons la partie éléctronique et mécanique.
J’ai écrit un certain nombre d’article sur l’utilisation du capteur PAJ7620 en MicroPython (je vous propose de les lire) :
Piloter le bras robotique via le capteur de gestes PAJ7620 en MicroPython
Dernièrement, j’ai implémenté en MicroPython l’utilisation du capteur de gestes PAJ7620 (voir l’article https://itechnofrance.wordpress.com/2019/03/13/utilisation-du-capteur-de-gestes-paj7620-en-micropython/ ) puis j’ai mis en œuvre un bras robotique piloté par un ESP32 en MicroPython (voir l’article https://itechnofrance.wordpress.com/2019/03/14/bras-robotise-5-servos-sg90-pilote-par-un-esp32-en-micropython/ ).
Aujourd’hui je vous propose la possibilité de piloter le bras robotique à partir de gestes.
L’article sera bref et je vous donne le programme en MicroPython qui permet cela :
Une interface humaine à l’aide du capteur de geste PAJ7620 en MicroPython
Après avoir adapté la librairie du capteur PAJ7620 en MicroPyhon (voir l’article), aujourd’hui je vous propose de mettre en oeuvre le capteur de geste pour l’utilisation de menus et actions sur un écran OLED SSD1306.
L’intérêt principal est d’éviter l’emploi de boutons pour se diriger dans les différents menus.
L’exemple qui suit utilisera 4 gestes pour se diriger dans les menus :
- Haut / Bas : permet de sélectionner une option dans un menu.
- rotation Horaire / Anti-horaire : sens horaire valide l’option et ainsi affiche un second menu ou exécute une action; sens anti-horaire permet de revenir sur le menu précédent.
Voici le contenu du programme :
Bras robotisé 5 servos SG90 piloté par un ESP32 en MicroPython
Ayant depuis peu une imprimante 3D Geeetech A10, j’ai effectué une recherche sur le fameux site Thingiverse et je suis tombé sur la modélisation d’un bras miniature pour des servos SG90.
Depuis le temps que je souhaitais en réaliser un, voici un rêve qui devient réalité. Désolé mais le tuto est long…
Le matériel nécessaire à la réalisation de ce petit bras sera le suivant :
- Une imprimante 3D et télécharger les fichiers nécessaires sur le site Thingiverse afin d’imprimer les différentes pièces.
- 5 servos moteur SG90.
- Un ESP32 avec Micropython installé.
- Une plaque Breadboard pour monter la partie électronique.
- Je vais également prévoir l’impression d’un support boitier pour le bras qui hébergera l’électronique.
La première étape est d’imprimer les différentes pièces du bras; pour ma part j’ai utilisé du PLA blanc avec une impression à 0.15 mm. Attention à bien choisir les fichiers qui ont dans le nom ‘mm’.
Utilisation du capteur de gestes PAJ7620 en MicroPython
Aujourd’hui, je vais tester l’utilisation du capteur de gestes PAJ7620u2. Ce capteur est capable de reconnaitre 9 gestes :
- Haut, bas.
- Gauche, droite.
- Avance, recule.
- Sens horaire et anti-horaire.
- Vague.
Le module se présente comme suit :
VCC : tension entre 3.3v et 5v
SCL, SDA : communication I2C avec pour adresse 0x73
INT : signal d’interruption
La distance de détection est comprise entre 5 cm et 15 cm.
Utilisation du bus One-Wire avec le capteur de température DS18B20 en MicroPython
Le protocole One-Wire permet une communication entre un contrôleur qui jouera le rôle de maitre et un périphérique en utilisant un seul fil pour la transition des commandes et données. Chaque périphérique One-Wire possède une adresse unique lors de sa construction.
En standard MicroPython fournit la gestion de ce type de bus et en plus cerise sur le gateau, il fournit également le module qui permet de communiquer avec le capteur de température DS18B20.
Les caractéristiques du capteur DS18B20 sont les suivantes :
- Communication via le bus One_Wire.
- Alimentation de 3v à 5.5v.
- Possède une adresse unique sur 64 bits.
- Mesure de température de -55 °C à +125 °C avec une précision de 0.5 °C.
- Conversion de la température avec une résolution de conversion de 9 bits à 12 bits programmable.
Utilisation de la librairie NeoPixel en MicroPython
En standard MicroPython supporte la gestion des bandeaux de LEDs ou NeoPixel. Aujourd’hui nous allons voir comment mettre en oeuvre l’utilisation de cette librairie.
Pour cela je vais utiliser un bandeau de 10 LEDs WS2812b; le branchement sera le suivant :
ESP32 Bandeau WS2812b
GND GND
+3.3v +5v
GPIO13 DIN
Utilisation du convertisseur analogique-numérique ADS1115 en MicroPython
Suite aux problèmes de conversion analogique-numérique rencontrés avec l’ESP32, aujourd’hui nous allons voir comment utiliser un convertisseur externe à savoir l’ADS1115.
Ce convertisseur se présente comme suit :
Le brochage est le suivant :
- VDD : 2v à 5.5v
- GND : masse
- SCL, SDA : bus i2c
- ADDR : permet de définir l’adresse i2c
- ALRT : information lorsqu’une conversion est effectuée
- A0, A1, A2, A3 : entrées analogiques