Archives par étiquette : adafruit

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 😉

 

Raspberry Pi 2 domotique : le capteur de température (9)

 

 

Depuis hier, notre Framboise V2 est équipée d’un capteur de température, en la présence d’un BMP180, un capteur miniature de pression, altitude, et température.

 

bmp180

BMM180

A peine plus gros qu’un ongle, le BMP180 se relie via le bus I2C au Raspberry Pi 2. 4 fils suffisent : +, GND, et les signaux de commande I2C.

Sur internet, on lit tout et son contraire sur la longueur maximale du câble utilisable en I2C : 50 cm, 1 m, 12 m, bref, on a le choix des réponses à côté de la plaque. Ici, j’ai cannibalisé un bout de câble ethernet CAT5, non blindé, d’une longueur de 2 m. Figurez vous que cela fonctionne, et du premier coup : la sonde délivre ses données sans coup faillir, c’est précis, régulier !

Je passe sous silence l’installation physique du capteur, largement décrite sur Adafruit par exemple. Pensez bien à activer l’I2C (un raspi-config depuis le terminal, options avancées), et à valider le chargement des drivers. Là encore, tout se trouve sur Adafruit ou d’autres sites, je ne vais pas y revenir.

Le script python utilisé est le suivant, tempe.py :

#!/usr/bin/python
#
# decommentez pour activer la sortie de debuggage
#import logging
#logging.basicConfig(level=logging.DEBUG)
#
import Adafruit_BMP.BMP085 as BMP085
import time
sensor = BMP085.BMP085()
bmp = BMP085.BMP085()
temp = bmp.read_temperature()
pressure = bmp.read_pressure() / 100
altitude = bmp.read_altitude()
print 'Temperature : {0:0.1f} C'.format(temp)
print 'Pression     : {0:0.0f} hPa'.format(pressure)
# print 'Altitude:    {0:0.1f} m'.format(altitude)
print time.strftime('%X %x %Z')

Si vous avez bien câblé le module, vous devriez vous s’afficher les informations en un instant en lançant python tempe.py
J’ai décommenté l’affichage de l’altitude, plutôt pas précis à mon goût, et j’affiche la pression en hPa, plus lisible. Retenez à ce sujet qu’un pression inférieure à 1013 hPa annonce un mauvais temps. Au dessus, plus elle va monter, plus il fera beau. Mon grand-père tapotait son baromètre tous les matins, moi j’ai désormais une sonde informatique 😉

Une petite vue du montage avant d’avancer dans les explications :

raspberry temperature

Raspberry Pi 2 + BMP180

La sonde est au bout du câble CAT5, toute petite. Il va maintenant falloir la protéger, l’idée étant de venir la positionner en extérieur, mais comment ? Enfermée dans un tube plastique, j’ai peur qu’elle ne mesure que le réchauffement de l’air intérieur une fois exposée au soleil : il va falloir l’aérer, tout en la gardant protégée de la pluie, sacré dilemme là !

Et soudain, au détour d’un café matinal, THE solution: une crépine !!

raspberry temperature crepine

Crépine pour pompe

Oui je sais, c’est un peu bizarre, mais si vous réfléchissez bien, une crépine offre une aération sur une extrémité, et une partie protégée sur l’autre extrémité : c’est le candidat idéal pour notre projet ! Je me propose donc de venir y insérer le capteur, de boucher l’extrémité protégée par une produit du genre « ni clou ni vis », et de rajouter une grille fine (type moustiquaire) sur la partie aérée, évitant de voir des bestioles s’inviter à l’intérieur. Ainsi, notre BMP180 sera protégé de la pluie, mais ouvert aux quatre vents, impeccable pour une mesure fiable.

 

Adafruit : votre AP WiFi bloque la pub !

Vous vous souvenez du Raspberry Pi, cette petite bestiole considérée, en son temps, comme une innovation tellement le prix était supposé rester bas ?

raspberry_proto

Raspberry Pi

Après lui avoir ajouté une webcam, des interfaces d’entrées/sorties, voici maintenant venir un firmware permettant de transformer l’engin en point d’accès bloqueur de pub ! Oui, vous avez bien lu, le Raspberry peut désormais vous éviter d’afficher ces insupportables publicités, un peu à l’instar de la Freebox du Chevalier Niel, un personnage fort en colère contre l’horrible Google comme vous ne l’avez certainement pas oublié 😉

C’est Adafruit (ajoutez un fruit) qui propose ce service original, sans toutefois oublier la possibilité d’ajouter vous même des sites en liste blanche, avec publicité donc.

raspberry_adafruitCertes, Mme Michu aura bien du courage si elle arrive à bout de la configuration, un brin réservée à qui saura manipuler SSH et autres techniques un minimum geek.

On pourrait presque imaginer ce genre de boîtier en tête d’un hotspot WiFi, bloquant pour de bon toute intrusion publicitaire sur les connexions WiFi de vos invités… Extrême non ? 🙂