[LA-discussions] Fonera avec open-wrt et bus I2C - Appel à l'aide !! |
[ Thread Index |
Date Index
| More linuxarverne.org/discussions Archives
]
- To: Linux Arverne - Discutions publiques <discussions@xxxxxxxxxxxxxxxx>
- Subject: [LA-discussions] Fonera avec open-wrt et bus I2C - Appel à l'aide !!
- From: RAULT Alexandre <rault.alexandre@xxxxxxxxx>
- Date: Tue, 10 Mar 2009 21:27:54 +0100
- Cc: lefinnois@xxxxxxxxxxxxx, Sx <amaury.jacquot@xxxxxxxxx>, Auvergne wireless <auvergnewireless@xxxxxxx>, RAULT Alexandre <rault.alexandre@xxxxxxxxx>
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:date:message-id:subject :from:to:cc:content-type:content-transfer-encoding; bh=jsTzxHvHHhlZXaHx1Bdc4WPhQy5IP50fxaqEdig85SY=; b=vVKxmezIWX1RGy/nvkOKV1/KvDzWsTXEaKJQkE6V5h06TC5MauYXm56ykHCH0WWRgS 3sZSOysNZmjGU6NJbyDoGmN+vwXlQPMNtcWXhrYN8uxZ+PpilSKR9NwMuy8vF4TYUDNn BAWRV9qdFM13MqBszoj+A5HXxM3djJmADWJ5g=
- Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:cc:content-type :content-transfer-encoding; b=HmDH2zPkld+0dcTjPhvrtN1wzZxPGXfuOYlOEDVNloZJSvsaOeqrBRWqRJzXnlMlbI pGiBgtGoUOPf7lkUHWIP6NIjOLF3GB2Cn+UEXIaEOjpsVPL/iujYPeJQl6fOY4X1Fwjz OWnsVFtKSfse1G3AGDKDg+iUcmRKBh5eTuZl4=
Bonjour à tous,
dans mes "amusements", je cherche à modifier un routeur wifi pour en
faire un petit serveur d'interface avec le monde extérieur....
D'autres l'on déjà fait, mais même en me basant sur les pages web que
j'ai trouvé, je n'arrive à rien !
La liste L.A n'est peut-être pas la plus adaptée, mais comme mes
problèmes sont essentiellement logiciels, j'aurais peut-être des
pistes :D
Le but de mes bidouillages est d'assurer la régulation de T° d'un
chauffage, dans un premier temps juste piloter un moteur qui actionne
la vanne de régulation en fonction de la T°. D'autres fonctionnalités
seront envisagées quand le prototype sera fonctionnel. (gestion à
distance, régulation T° en fonction de l'heure, de la température
extérieure.....)
Dans la pratique, je me base sur un routeur Fonera dont le firmware
est remplacé par Open-WRT ( http://fr.wikipedia.org/wiki/OpenWrt )
Pour ce qui est d'OpenWRT pur, ça se passe bien, compilation,
injection du firmware dans la fonera, paramétrage....
Dans la fonera, on peut accéder à directement à certaines broches du
microcontrolleur que l'on peut piloter logiciellement.
Ces bornes, dénommées General Purpose Input/Output - GPIO, sont
normalement définies/contrôlées/lues avec un module du kernel, et
c'est là que ça coince.
Dans la Fonera, je peux utiliser les GPIO 3 , 4 , 1 et 7 et il faut
que je les contrôle pour en faire un bus de communication à la norme
I2C.
L'avantage du bus I2C c'est qu'avec 2 lignes de bus, on peut utiliser
plusieurs composants, tel que des 'convertisseurs Entré/Sortie' avec 8
lignes, et que l'on peut en placer plusieurs sur el même bus, on peut
avoir par exemple en plus 3 sondes de T° ... ce qui assure de
possibles évolutions.
Dans mon application ensuite, à travers les couches logicielles I2C,
je doit normalement lire et écrire sur le bus I2C à des adresses
définies pour interagir avec le monde extérieur.
Grossièrement, ça devrait ressembler à quelque chose comme ça :
Pour lire la valeur de la sonde de température située à l'adresse Ox00000048
echo Ox00000048 >> /proc/I2C/bus0/adresse
/proc/I2C/bus0/valeur >> $temp
L'expérience des autres :
Principalement celle de Denis Bodor :
http://www.lefinnois.net/wp/index.php/2007/05/05/un-bus-i2c-pour-la-fonera/
http://dd-wrt.com/wiki/index.php/LaFonera_Hardware_i2c
Un Bus I2C utilisant les GPIO (ce que je veux faire), mais sur
matériel Linksys (microcontrolleur Boadcom)
http://wiki.openwrt.org/OpenWrtDocs/Customizing/Hardware/I2C_RTC
Contrôle des GPIO directement (limité, mesure T° impossible) :
http://dd-wrt.com/wiki/index.php/LaFonera_Hardware_Controlling_AC-Loads
Utilisation GPIO pour rajouter une SD card:
http://dd-wrt.com/wiki/index.php/LaFonera_Hardware_SD-Card
Dans Open-WRT, j'ai la possibilité d'inclure des modules qui sont en
principe la solution, mais impossible de trouver de la doc pour les
exploiter !
De plus, depuis les expérimentations de Denis Bodor, les paquet et
modules ont changés, donc, ses pages ne sont plus applicables....
Je n'ai pas le niveau suffisant pour comprendre les sources et
analyser le fonctionnement.
Par exemple, dans le module
https://dev.openwrt.org/browser/trunk/package/i2c-gpio-custom/src une
ligne décrit les arguments à passer, mais aucune info détaillées
d'utilisation du module :s
J'ai beau chercher, un peu partout sur ternet, impossible de trouver
une documentation ou au moins des exemples d'usage pour comprendre
comment ça fonctionne précisément !
Par exemple, dans le montage de Denis Bodor, pour chaque ligne du bus
(Sda et Scl) qui doivent être bidirectionnelles, il utilise un GPIO en
entrée, et un autre en sortie, mais a priori, avec les nouveaux
modules ce n'est plus le cas !
Nous avons donc :
Module GPIOCTL - https://dev.openwrt.org/browser/trunk/package/gpioctl/src
Module i2c-gpio-custom -
https://dev.openwrt.org/browser/trunk/package/i2c-gpio-custom/src
'Application' i2c-tools
https://dev.openwrt.org/browser/packages/utils/i2c-tools/ qui pointe
vers http://dl.lm-sensors.org/i2c-tools/releases/
Du peu que je comprend, en le mettant en relation avec
http://wiki.openwrt.org/OpenWrtDocs/Customizing/Hardware/I2C_RTC ,
j'imagine, mais j'aimerais une confirmation, qu'il faut :
1 : déclarer les GPIO 3 et 1 en sorties et les GPIO 4 et 7 en entrées
avec gpioctl
2 : déclarer les SDA/SCL avec i2c-gpio-custom qui devrait créer des
bus I2C dans /dev ou /proc avec i2c-tools ou i2c-gpio-custom ..
Si quelqu'un qui sache lire le C peut m'apporter un peu d'aide, je
suis preneur, parce que je tourne en rond !
Alex.
---
Liste de discussions de LinuxArverne
http://wiki.linuxarverne.org/listes_de_diffusion