Qwiic VCNL4040 (proximité) et Qwiic OLED sous MicroPython

Amis de MicroPython.... Bonjour :-)

Nous terminons enfin de notre périple de développement de pilotes autour du MicroMod-RP2040 de SparkFun avec le Machine Learning Carrier Board, c'est les modules Qwiic OLED et de proximité Qwiic VCNL4040

Qwiic VCNL4040

Ce capteur I2C est un capteur de proximité (présence) InfraRouge ainsi qu'un capteur de lumière ambiante. C'est typiquement le type de capteur que l'on retrouve sur les dispensaires de savon ou de papier automatisé ou robinet automatique.

Qwiic VCNL4040 (SEN-15177)

L'intérêt de ce capteur est qu'il n'a pas de zone morte (près du capteur).
Le VCNL4040 dispose également d'un capteur de luminosité ambiante, idéal pour automatisé un système d'obturation automatisé ou adapter la puissance d'un éclairage.
Si une mesure qualitative peut être réalisée jusqu'à une distance de 20cm, il faut juste garder à l'esprit que ce capteur n'est pas conçu pour mesurer des distances.
Si vous avez besoin de mesurer des distances, il vaut peut être mieux considérer un capteur de type Time-of-Flight comme le VL53L0X.

Bien entendu, ce qui nous intéresse tout particulièrement, c'est son interface QWIIC qui transporte le bus I2C et alimentation 3.3V .
Nous allons l'utiliser avec la bibliothèque MicroPython VCNL4040 (SEN-15177).

Qwiic Micro OLED 

Toujours équipé d'un connecteur Qwiic (bus I2C), ce mini écran OLED bleu clair (sur fond noir) avec un résolution de 64x48 pixels.

Qwiic Micro Oled (LCD-14532)

Idéal pour réaliser un affichage compacte.
La bonne nouvelle, c'est qu'il utilise un pilote MicroPython SSD1306 déjà existant :-) Il sera donc très facile de l'exploiter.

Brancher VCNL4040 & OLED

Brancher le VCNL4040 (ou l'OLED) sur la carte périphérique MicroMod Learning Machine (Carrier board, SparkFun, DEV-16400) est simple puisqu'il expose un connecteur Qwiic :-)

Source: Pilote MicroPython pour VCNL4040

Source: Pilote MicroPython pour VCNL4040

Monter le VCNL4040 ou l'OLED sur un Raspberry-Pico est tout aussi simple en utilisant un Qwiic Cable Breakout (SparFun, PRT-14425)

Allez... pour le fun, voici la capture du montage de afficheur Qwiic Micro Oled de SparkFun (LCD-14532) sur un MicroMod-RP2040 (SparkFun, DEV-17720) + Learning Machine Carrier Board (SparkFun, DEV-16400):-)

Source: Pilote MicroPython pour OLED SSD1306

Quel bus I2C utiliser:

  • Sur Pico le bus I2C(1) avec les broche GP6 et GP7, donc un I2C matériel.
  • Sur le MicroMod-RP2040 ce sont les broche sda=GP(4) et scl=GP(5), donc une I2C logiciel.

Tester le capteur de proximité VCNL4040

Après avoir copié la bibliothèque vncl4040.py sur votre carte MicroPython, il ne reste plus qu'à tester le code.

Le script de test suivant effectue une lecture initiale puis surveille la variation de du capteur (de 5%) pour savoir s'il y a quelque-chose

from machine import I2C, Pin
from vcnl4040 import VCNL4040
import time

# MicroMod-RP2040 - SparkFun
i2c = I2C( 0, sda=Pin(4), scl=Pin(5) )
# Raspberry-Pi Pico
# i2c = I2C( 1 ) # sda=GP6, scl=GP7

prox = VCNL4040( i2c )

startingProxValue = 0
deltaNeeded = 0
nothingThere = False
prox.set_led_current( 200 ) # max IR

# 8 lecture = moyenne
for i in range( 8 ):
	startingProxValue += prox.proximity
startingProxValue /= 8

# Calculer le delta de 5%
deltaNeeded = startingProxValue * 0.05 # Look for 5% change
if deltaNeeded < 5:
	deltaNeeded = 5 # avec un minimum de 5 unité

while True:
	value = prox.proximity

	if value > (startingProxValue + deltaNeeded):
		print("Il y a quelque-chose ici!" )
		nothingThere = False
	else:
		if nothingThere == False:
			print( "il n'y a rien" )
		nothingThere = True

	time.sleep_ms(10)

Il y 6 autres exemples disponibles dans le dépôt.

Tester le Mini OLED

Une fois le pilote SSD1306 copié sur la carte MicroPython, piloter l'écran passe par les quelques lignes de code suivantes:

from machine import Pin, I2C
import ssd1306
i2c = I2C( 0, sda=Pin(4), scl=Pin(5) )
lcd = ssd1306.SSD1306_I2C( 64, 48, i2c, addr=0x3D )

et par la suite, l'utilisation des fonctions standards FrameBuffer permet de facilement dessiner des éléments graphiques.

# -- Dessine un pixel en noir --
lcd.fill(0) # Rempli l'écran en noir
# pixel( x, y, c )
lcd.pixel( 3, 4, 1 )
lcd.show()  # Afficher!

Voyez les autres exemples dans le tutoriel MicroPython pour OLED SSD1306.

Ensuite ? des projets Qwiic

Cet article termine l'écriture et exploration des pilotes MicroPython pour le matériel Qwiic de SparkFun à notre disposition.

Nous allons pouvoir maintenant envisager quelques petits projets MicroPython sur base des quelques éléments explorés. 

Ressources

Aucun commentaire