Archives par étiquette : aml

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 😉

 

X96 : debriquer votre appareil

Il peut arriver qu’une box Android X96 soit briquée, et là c’est le drame !

Commencez par aller chercher le firmware d’origine sur ce lien. Décompressez et mettez l’image de côté.

Avec Github, venez installer AML Flash Tool sur votre ordinateur :

git clone https://github.com/osmc/aml-flash-tool

puis :

cd aml-flash-tool

et vous voici dans le bon répertoire, prêt à flasher.

Prenez votre X96, prévoyez un câble USB pour aller sur votre ordinateur mais ne le branchez pas encore, une rallonge USB A comme chez Amazon.

Nous allons maintenant flasher notre firmware Android de base sur le X96, mais avant cela insérez un cure-dent dans le port AV de la bête, pressez le mini-bouton tout au fond et maintenez la pression :

 ./flash-tool.sh --img=aml_upgrade_package.img --parts=all --wipe --s oc=gxl

Relachez le cure-dent et laissez faire…
Vous adapterez le chemin pour le fichier .img bien entendu. Ici, le gxl indique que nous allons flasher un CPU S905, celui du X96. D’autres options sont disponibles, je vous laisserai creuser et adapter à vos matériels. A l’écran, vous obtiendrez :

Rebooting the board ........[OK]
Unpacking image [OK]
Initializing ddr ........[OK]
Running u-boot ........[OK]
Create partitions [OK]
Writing device tree [OK]
Writing bootloader [OK]
Wiping data partition [OK]
Wiping cache partition [OK]
Writing boot partition [OK]
Writing dtbo partition [OK]
Writing logo partition [OK]
Writing odm partition [OK]
Writing product partition [OK]
Writing recovery partition [OK]
Writing system partition [OK]
Writing vbmeta partition [OK]
Writing vendor partition [OK]
Do you want to reset the board? y/n [n]? y
Resetting board [OK]

Et voilà, redémarrez, le X96 sera de retour sous Android, débriqué, totalement opérationnel pour venir ensuite le flasher de nouveau.