Archives par étiquette : ft232h

X96 et FT232H : scan I2C

Nous avons relié notre FT232H à notre X96, branchons maintenant un capteur I2, un BMP180. Commençons par relier AD1 et AD2 avec un point de soudure.

AD0 se relie à SCL, AD1 se relie à SDA, et vous brancherez la masse et le VIN sur le 3.3V de la platine :

Ces connexions resteront identiques à l’avenir pour tous vos capteurs I2C, retenez bien le brochage surtout.

Insérons ce qui suit dans le fichier i2cscan.py :

import time
import board
i2c = board.I2C()
print ([hex(device_address) for device_address in i2c.scan()])

Exécutons le script avec :

python3 i2cscan.py

et nous obtenons en retour un [‘0x77’] avec par exemple un BMP180 connecté pour un simple test.
Malheureusement, le BMP180 est fortement ignoré en Python3, difficile donc de pouvoir l’utiliser pleinmement : nous consacrerons donc un prochain billet sur une version plus moderne, le BMP280.

A suivre…

 

X96 : ajoutez des GPIO avec un FT232H

Le X96 est certes une solution super sympa pour réaliser un p’tit serveur linux, des applications domotiques, mais si vous avez besoin d’interfacer un peu plus de choses, pourquoi ne pas ajouter une extension GPIO ? En clair, des entrées et des sorties configurables et activables à volonté, sur un port série, à l’aide d’un module FT232H.

Pour le moment, ne branchez pas votre FT232H. Nous allons créer un fichier :

nano /etc/udev/rules.d/11-ftdi.rules

et nous venons y placer ce qui suit :

SUBSYSTEM=="usb", ATTR{idVendor}=="0403", ATTR{idProduct}=="6001", GROUP="plugdev", MODE="0666"
SUBSYSTEM=="usb", ATTR{idVendor}=="0403", ATTR{idProduct}=="6011", GROUP="plugdev", MODE="0666"
SUBSYSTEM=="usb", ATTR{idVendor}=="0403", ATTR{idProduct}=="6010", GROUP="plugdev", MODE="0666"
SUBSYSTEM=="usb", ATTR{idVendor}=="0403", ATTR{idProduct}=="6014", GROUP="plugdev", MODE="0666"
SUBSYSTEM=="usb", ATTR{idVendor}=="0403", ATTR{idProduct}=="6015", GROUP="plugdev", MODE="0666"

Sauvegardez avec un CTRL-O, puis CTRL-X pour sortir. La règle se mettra en place une fois le FT232H branché.

Installons maintenant les différents modules nécessaires :

pip3 install pyftdi
pip3 install adafruit-blinka

et positionnons la variable d’environnement :

export BLINKA_FT232H=1

Branchez le FT232H sur l’un des ports USB et vérifions qu’il soit bien reconnu :

Python3
from pyftdi.ftdi import Ftdi
Ftdi().open_from_url('ftdi:///?')

Le résultat doit montrer la détection du module USB :

Available interfaces: 
 ftdi://ftdi:232h:1:2/1   (Single RS232-HS)

Relançons de nouveau python3 puis demandons :

import os
os.environ["BLINKA_FT232H"]

La réponse sera 1 si tout est correctement configuré.

Nous allons pouvoir créer le fichier blink.py :

import time 
import board 
import digitalio 

led = digitalio.DigitalInOut(board.C0) 
led.direction = digitalio.Direction.OUTPUT 

while True: 
   led.value = True 
   time.sleep(0.5) 
   led.value = False 
   time.sleep(0.5)

Venez relier une LED entre la masse GND et le port AC0 du FT232H, en prenant soin d’insérer une résistance d’1 kOhm en série sur la ligne + de la LED :

 

Exécutez le script Python :

python3 blink.py

et voici logiquement votre LED qui clignote ! Votre premier test sur le GPIO USB est terminé, à très vite pour des billets plus poussés sur le sujet 😉