<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ARP 75 &#187; openwrt</title>
	<atom:link href="http://www.arp75.org/?feed=rss2&#038;tag=openwrt" rel="self" type="application/rss+xml" />
	<link>http://www.arp75.org</link>
	<description>Bienvenue sur l&#039;ARP Radio-Club de Paris</description>
	<lastBuildDate>Wed, 20 Sep 2023 10:34:06 +0000</lastBuildDate>
	<language>fr-FR</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=3.8.41</generator>
	<item>
		<title>Afficheur autonome de DX cluster : Le DX Ticker (3/3)</title>
		<link>http://www.arp75.org/?p=1378</link>
		<comments>http://www.arp75.org/?p=1378#comments</comments>
		<pubDate>Mon, 21 Apr 2014 07:00:46 +0000</pubDate>
		<dc:creator><![CDATA[f6fvy]]></dc:creator>
				<category><![CDATA[Technique]]></category>
		<category><![CDATA[dx-cluster]]></category>
		<category><![CDATA[openwrt]]></category>
		<category><![CDATA[wr703n]]></category>

		<guid isPermaLink="false">http://www.arp75.org/?p=1378</guid>
		<description><![CDATA[Les deux premières parties de cet article sont disponibles ici et ici&#8230; Plutôt que de vouloir faire un programme monolithique qui gère tout, je me suis appuyé sur des solutions existantes pour le clavier&#46;&#46;&#46;]]></description>
				<content:encoded><![CDATA[<p><em>Les deux premières parties de cet article sont disponibles <a href="http://www.arp75.org/?p=1374">ici</a> et <a href="http://www.arp75.org/?p=1376">ici</a>&#8230;</em></p>
<p>Plutôt que de vouloir faire un programme monolithique qui gère tout, je me suis appuyé sur des solutions existantes pour le clavier et l&rsquo;afficheur. Ce sera <a href="https://github.com/wertarbyte/triggerhappy">triggerhappy</a> pour le clavier, et <a href="http://sourceforge.net/projects/lcd4linux/">lcd4linux</a> pour l&rsquo;afficheur, qui sont des &laquo;&nbsp;daemons&nbsp;&raquo; qui tournent en tâche de fond.</p>
<p>Concernant le programme principal, il doit se connecter au DX-cluster, récupérer les infos, les mettre en forme pour l&rsquo;afficheur, et selon les actions sur le clavier, &laquo;&nbsp;scroller&nbsp;&raquo; dans l&rsquo;historique, faire afficher au LCD au choix les spots, les données WWV ou les données WCY. J&rsquo;ai écarté les annonces pour l&rsquo;instant. Comment écrire et développer ce process principal ? La première solution qui vient à l&rsquo;esprit est le classique C (ou C++). Néanmoins, on est dans un environnement qui nécessitera de la cross-compilation, et le debugging risque alors d&rsquo;être particulièrement lourd. En effet, il est pas possible d&rsquo;installer d&rsquo;environnement de développement directement sur le router (ses caractéristiques en terme de mémoire de masse et de RAM l&rsquo;interdisent, sans parler de la vitesse d&rsquo;éxecution des outils). Cette perspective ne m&rsquo;enchante pas vraiment, surtout que je n&rsquo;ai aucune expérience en matière de cross-developpement.</p>
<p>Par contre, le langage interprété <a href="http://www.lua.org/">Lua</a>, très léger et très rapide, peut être installé sur le routeur sous forme de package, puisqu&rsquo;il est utilisé par exemple pour l&rsquo;interface web de paramétrage Luci (que je n&rsquo;ai pas installé pour gagner de la place). Je connais déjà Lua pour l&rsquo;avoir implémenté en tant que langage de script dans <a href="http://win-test.com">Win-Test</a> et il conviendra parfaitement. Il faut juste lui adjoindre la bibliothèque de sockets (package <a href="http://w3.impa.br/~diego/software/luasocket/home.html">LuaSocket</a>) pour permettre la connexion au DX-cluster. Par contre, hélas, il n&rsquo;est pas multi-thread nativement et il va falloir un peu jongler, notamment pour gérer le clavier sans trop de latence.</p>
<p>Pour les échanges entre le clavier et le script principal, j&rsquo;utilise un fichier de type <a href="http://manpagesfr.free.fr/man/man7/fifo.7.html">fifo</a>, dans le répertoire /tmp qui est en fait en RAM. Ainsi, pas de latence, et pas d&rsquo;usure du media ! Lorsque l&rsquo;on appuie sur une touche, triggerhappy la détecte, et met un caractère (dépendant de la touche &#8211; cf le fichier de config de triggerhappy ci-dessous) dans le fifo, et lorsque le script va scruter le fifo, il va le récupérer et le traiter. La répétition automatique n&rsquo;est gérée que pour les touches Up et Down, à savoir 8 et 2 sur le keypad.</p>
<pre><span style="color: #008000;">root@OpenWrt:</span><span style="color: #800080;">/etc/triggerhappy/triggers.d#</span> cat dxticker.conf
KEY_KP1         1       echo "1" &gt; /tmp/fifo
KEY_KP2         1       echo "2" &gt; /tmp/fifo
KEY_KP2         2       echo "2" &gt; /tmp/fifo
KEY_KP3         1       echo "3" &gt; /tmp/fifo
KEY_KP4         1       echo "4" &gt; /tmp/fifo
KEY_KP5         1       echo "5" &gt; /tmp/fifo
KEY_KP6         1       echo "6" &gt; /tmp/fifo
KEY_KP7         1       echo "7" &gt; /tmp/fifo
KEY_KP8         1       echo "8" &gt; /tmp/fifo
KEY_KP8         2       echo "8" &gt; /tmp/fifo
KEY_KP9         1       echo "9" &gt; /tmp/fifo
KEY_KP0         1       echo "0" &gt; /tmp/fifo
KEY_KPENTER     1       echo "E" &gt; /tmp/fifo
<span style="color: #008000;">root@OpenWrt:</span><span style="color: #800080;">/etc/triggerhappy/triggers.d#</span></pre>
<p>Pour l&rsquo;afficheur, j&rsquo;utilise là aussi un autre fichier intermédiaire en RAM (/tmp/lcd.txt) qui va être écrit par le script Lua, et relu régulièrement par lcd4linux qui va envoyer les 4 premières lignes sur l&rsquo;afficheur. Le problème n&rsquo;est pas là. Ce qui pose un GROS problème, c&rsquo;est que le driver lcd4linux pour le circuit <a href="https://fr.wikipedia.org/wiki/HD44780">HD44780</a> sur bus I2C est basé sur une assignation des broches du <a href="http://www.nxp.com/documents/data_sheet/PCF8574.pdf">PCF 8574</a> totalement différente, et notamment pour les 4 bits de données, de celle de l&rsquo;interface I2C de l&rsquo;afficheur !</p>
<p>Et là, ça se corse ! Je dois modifier le driver en question du package lcd4linux, le recompiler, et réinstaller le package sur le routeur. Et bien entendu, il faut recommencer la manip à chaque essai&#8230; J&rsquo;installe donc une <a href="https://www.debian.org/releases/wheezy/">Debian Wheezy</a> dans une machine virtuelle de <a href="https://www.virtualbox.org/">VirtualBox</a>, et &laquo;&nbsp;en avant les pelles et les pioches&nbsp;&raquo;. Je vous passe tous les détails de la manip, mais il me faut quelques (longues) soirées pour arriver à mes fins ! J&rsquo;obtiens aussi l&rsquo;assistance d&rsquo;un Bordelais dont le pseudo est Squonk, trouvé sur le <a href="https://forum.openwrt.org/">forum OpenWRT</a>, à l&rsquo;origine du <a href="https://forum.openwrt.org/viewtopic.php?id=39829">rétro-engineering du WR703N</a>, qui me sort de plusieurs impasses. De voir enfin quelque chose s&rsquo;afficher sur le LCD en question a été une grande satisfaction <img src="http://www.arp75.org/wp-includes/images/smilies/icon_wink.gif" alt=";-)" class="wp-smiley" />  Mais j&rsquo;ai beaucoup appris, et c&rsquo;est là l&rsquo;essentiel.</p>
<p style="text-align: center;"><a href="http://www.arp75.org/wp-content/uploads/2014/04/20140416_143618.jpg"><img class="aligncenter  wp-image-1467" alt="20140416_143618" src="http://www.arp75.org/wp-content/uploads/2014/04/20140416_143618-300x225.jpg" width="400" height="300" /></a></p>
<p>Le <a href="http://www.arp75.org/wp-content/uploads/2014/04/dxticker.zip">script principal</a> Lua d&rsquo;environ 500 lignes se résume donc à :</p>
<ol>
<li>Initialisation</li>
<li>Lancement de la connexion au cluster</li>
<li>Récupération des infos (spot, wwv, etc.)</li>
<li>Remise en forme pour que les infos essentielles tiennent sur les 20 colonnes du LCD</li>
<li>Ajout dans l&rsquo;historique et mise à jour de l&rsquo;affichage</li>
<li>Traitement du clavier</li>
<li>Et on boucle sur la récup des données (point 3).</li>
</ol>
<p>Le script est aussi prévu pour se reconnecter en cas de rupture du lien Wi-Fi ou autre.</p>
<p>Je le fais démarrer au boot du routeur, après toutes les inits, rendant ainsi le dispositif totalement autonome.</p>
<p>L&rsquo;ensemble est alimenté par un chargeur USB de téléphone et sa (très) faible consommation me permet de le laisser tourner toute la journée si je veux. La charge CPU n&rsquo;excède pas quelques pourcents, et il reste environ 1/4 de la RAM dispo avec un historique possible de 100 spots.</p>
<p>Le seul inconvénient est la latence de l&rsquo;afficheur LCD en lui-même rend le scrolling un peu chaotique si l&rsquo;on veut faire défiler un long historique, mais il n&rsquo;y a pas grand chose à y faire, sauf à utiliser un autre afficheur de type TFT ou OLED par exemple.</p>
<p>Je vais maintenant certainement améliorer un peu le programme pour pouvoir  inclure également les annonces (ça ne coûte pas cher).</p>
<p>Il existe probablement bien d&rsquo;autres applications et de fonctions liées à notre activité que ce routeur peut assurer à moindre coût. Si vous en menez une à son terme, n&rsquo;hésitez pas à nous en faire part dans les commentaires.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.arp75.org/?feed=rss2&#038;p=1378</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Afficheur autonome de DX cluster : Le DX Ticker (2/3)</title>
		<link>http://www.arp75.org/?p=1376</link>
		<comments>http://www.arp75.org/?p=1376#comments</comments>
		<pubDate>Sat, 19 Apr 2014 07:00:44 +0000</pubDate>
		<dc:creator><![CDATA[f6fvy]]></dc:creator>
				<category><![CDATA[Technique]]></category>
		<category><![CDATA[dx-cluster]]></category>
		<category><![CDATA[openwrt]]></category>
		<category><![CDATA[wr703n]]></category>

		<guid isPermaLink="false">http://www.arp75.org/?p=1376</guid>
		<description><![CDATA[La première partie de cet article est disponible ici&#8230; Avant tout, la première étape consiste à installer OpenWRT sur le routeur, et le configurer pour qu&#8217;il accède à votre réseau Wi-Fi. De nombreux tutoriaux&#46;&#46;&#46;]]></description>
				<content:encoded><![CDATA[<p><em>La première partie de cet article est disponible <a href="http://www.arp75.org/?p=1374">ici</a>&#8230;</em></p>
<p>Avant tout, la première étape consiste à installer OpenWRT sur le routeur, et le configurer pour qu&rsquo;il accède à votre réseau Wi-Fi. De nombreux tutoriaux existent sur le sujet, et également des <a href="https://www.youtube.com/results?search_query=wr703n">vidéos</a> (même en <a href="https://www.youtube.com/watch?v=x-M4nsqJT14">français</a>). Pour se familiariser avec cette distribution, il est également possible de l&rsquo;installer dans une machine virtuelle dans sa version x86. Avant de se lancer, il est bon de s’imprégner du sujet et la lecture du <a href="http://wiki.openwrt.org/">Wiki d&rsquo;OpenWRT</a> s&rsquo;avère indispensable, notamment en cas de volonté de mise à jour ultérieure, ou pour tout réinstaller (sans perdre les fichiers de config. si possible) si ça se passe mal.</p>
<h3>Port série</h3>
<p>La toute première modification hardware effectuée est d&rsquo;installer un connecteur 3 broches (TxD, RxD, GND) au pas de 2.54 pour sortir un port série (qui sera au niveau 3v3). Ce port sera utilisé en cas d&rsquo;urgence si le firmware installé se trouvait corrompu et bloquait entièrement la connectivité réseau. On est jamais trop prudent. Il s&rsquo;est avéré que je n&rsquo;en ai pas eu besoin, mais bon&#8230;</p>
<p>Il s&rsquo;agit donc juste d&rsquo;installer un mini-connecteur DIL 3 broches à l&rsquo;emplacement d&rsquo;une LED qui n&rsquo;est pas câblée, couper les pistes de la LED absente, et gratter le vernis épargne pour souder la broche de masse. Puis relier par du fil à wrapper ces broches aux points tests nommés TP_IN et TP_OUT sur la sérigraphie <a href="https://plus.google.com/u/0/photos/+MattJoyce01/albums/5737162394063705409/5737162390169780930?pid=5737162390169780930&amp;oid=107211980242732541247">en bas à droite côté composants</a>. Une fois la soudure effectuée sur ces test-points, je conseille fortement de les noyer sous une goutte de colle à chaud pour éviter de les arracher par une mauvaise manip.</p>
<div id="attachment_1406" style="width: 410px" class="wp-caption aligncenter"><a href="http://www.arp75.org/wp-content/uploads/2014/04/P1010959.jpg"><img class=" wp-image-1406" alt="P1010959" src="http://www.arp75.org/wp-content/uploads/2014/04/P1010959-300x225.jpg" width="400" height="300" /></a><p class="wp-caption-text">Préparation de l&rsquo;emplacement du connecteur série</p></div>
<div id="attachment_1407" style="width: 410px" class="wp-caption aligncenter"><a href="http://www.arp75.org/wp-content/uploads/2014/04/P1010963.jpg"><img class=" wp-image-1407" alt="P1010963" src="http://www.arp75.org/wp-content/uploads/2014/04/P1010963-300x225.jpg" width="400" height="300" /></a><p class="wp-caption-text">Connecteur en place</p></div>
<div id="attachment_1408" style="width: 410px" class="wp-caption aligncenter"><a href="http://www.arp75.org/wp-content/uploads/2014/04/P1010986.jpg"><img class=" wp-image-1408" alt="P1010986" src="http://www.arp75.org/wp-content/uploads/2014/04/P1010986-300x225.jpg" width="400" height="300" /></a><p class="wp-caption-text">Soudure des fils à wrapper sur TP_IN et TP_OUT</p></div>
<div id="attachment_1409" style="width: 410px" class="wp-caption aligncenter"><a href="http://www.arp75.org/wp-content/uploads/2014/04/P1010990.jpg"><img class=" wp-image-1409" alt="P1010990" src="http://www.arp75.org/wp-content/uploads/2014/04/P1010990-300x225.jpg" width="400" height="300" /></a><p class="wp-caption-text">Routage des fils vers le connecteur</p></div>
<p>Pour vérifier que tout fonctionne, il suffit de rebooter le routeur (ON/OFF) en ayant connecté ce port série via, par exemple, un adaptateur USB / Série 3v3 à PuTTY en 115200 8N1.</p>
<div id="attachment_1410" style="width: 410px" class="wp-caption aligncenter"><a href="http://www.arp75.org/wp-content/uploads/2014/04/bootSerial2.png"><img class=" wp-image-1410" alt="bootSerial2" src="http://www.arp75.org/wp-content/uploads/2014/04/bootSerial2-300x239.png" width="400" height="319" /></a><p class="wp-caption-text">Ecran de boot sur liaison série</p></div>
<h3>Hub USB</h3>
<p>En faisant quelques essais préliminaires avec OpenWRT sur le WR703N, il apparait un premier souci : Le clavier numérique USB n&rsquo;est pas reconnu en tant que tel par le système. En fait, le port USB 2.0 ne reconnait directement que les périphériques High Speed, mais il ne sait pas gérer les périphériques Low Speed comme les claviers ou les souris. Le seul moyen est donc d&rsquo;utiliser un hub USB 2.0 High Speed qui va assurer la transition entre ces protocoles. Avoir un élément supplémentaire ne m&rsquo;enchante guère, mais à la lecture de plusieurs sites, il est possible d&rsquo;intégrer un tel hub <strong>dans</strong> le routeur. Ce sera ma première modification sérieuse.</p>
<p>J&rsquo;ai fini par trouver <a href="http://www.aliexpress.com/item/High-Speed-4-Port-Mini-Real-USB-2-0-HUB-Cable-C1083-Free-Shipping-Wholesale/587587459.html">un hub USB qui convient</a> pour quelques euros, et l&rsquo;ai dépouillé totalement pour l&rsquo;intégrer dans le boitier. Il suffit de démonter le connecteur USB, sortir 4 fils pour aller vers le hub et réinstaller un connecteur USB femelle à la place de l&rsquo;ancien avec des broches droites, reliées au hub. J&rsquo;ai même ainsi à ma disposition 3 ports USB supplémentaires disponibles si besoin.</p>
<div id="attachment_1413" style="width: 410px" class="wp-caption aligncenter"><a href="http://www.arp75.org/wp-content/uploads/2014/04/P1010975.jpg"><img class=" wp-image-1413" alt="P1010975" src="http://www.arp75.org/wp-content/uploads/2014/04/P1010975-300x225.jpg" width="400" height="300" /></a><p class="wp-caption-text">Hub sans son boitier</p></div>
<div id="attachment_1414" style="width: 410px" class="wp-caption aligncenter"><a href="http://www.arp75.org/wp-content/uploads/2014/04/P1010980.jpg"><img class=" wp-image-1414" alt="P1010980" src="http://www.arp75.org/wp-content/uploads/2014/04/P1010980-300x225.jpg" width="400" height="300" /></a><p class="wp-caption-text">Entrée du hub reliée au WR703N</p></div>
<div id="attachment_1415" style="width: 410px" class="wp-caption aligncenter"><a href="http://www.arp75.org/wp-content/uploads/2014/04/P1010991.jpg"><img class=" wp-image-1415" alt="P1010991" src="http://www.arp75.org/wp-content/uploads/2014/04/P1010991-300x225.jpg" width="400" height="300" /></a><p class="wp-caption-text">Réinstallation d&rsquo;un connecteur USB sur une sortie du hub, désormais intégré au routeur</p></div>
<p>Par expérience, sachez qu&rsquo;il existe de nombreux modèles de hubs qui utilisent tous le même boitier plastique noir et des connecteurs &laquo;&nbsp;en araignée&nbsp;&raquo;. Certains ne sont pas High Speed, mais seulement Full Speed, et ne conviennent donc pas à cette utilisation. Certains vendeurs changent aussi de fournisseur, sans prévenir, et sans véritablement contrôler les caractéristiques du produit. On pourra s&rsquo;assurer de la vitesse effective du hub par la commande &laquo;&nbsp;lsusb -vt&nbsp;&raquo; sous OpenWRT (ne pas oublier d&rsquo;installer les packages adéquats), ou par exemple avec l&rsquo;utilitaire UsbTreeView sous Windows.</p>
<pre><span style="color: #008000;">root@OpenWrt:</span><span style="color: #800080;">~#</span> lsusb -vt
 /:  Bus 01.Port 1: Dev 1,, Driver=ehci-platform/1p, 480M
     |__ Port 1: Dev 2, If 0,, Driver=hub/4p, 480M
         |__ Port 1: Dev 3, If 0, Interface Device, Driver=usbhid, 1.5M
<span style="color: #008000;">root@OpenWrt:</span><span style="color: #800080;">~#</span></pre>
<p>Le clavier est alors reconnu comme <a href="https://en.wikipedia.org/wiki/USB_human_interface_device_class">HID</a> dans dmesg :</p>
<pre><span style="color: #008000;">root@OpenWrt:</span><span style="color: #800080;">/#</span> dmesg | grep usb
 [    4.670000] usbcore: registered new interface driver usbfs
 [    4.680000] usbcore: registered new interface driver hub
 [    4.680000] usbcore: registered new device driver usb
 [    5.080000] usb 1-1: new high-speed USB device number 2 using ehci-platform
 [    5.510000] usb 1-1.1: new low-speed USB device number 3 using ehci-platform
 [    9.050000] input: HID 1710:8812 as /devices/platform/ehci-platform/usb1/1-1/1-1.1/1-1.1:1.0/input/input0
 [    9.060000] hid-generic 0003:1710:8812.0001: input,hidraw0: USB HID v1.10 Keyboard [HID 1710:8812] on usb-ehci-platform-1.1/input0
 [    9.070000] usbcore: registered new interface driver usbhid
 [    9.070000] usbhid: USB HID core driver
<span style="color: #008000;">root@OpenWrt:</span><span style="color: #800080;">/#</span></pre>
<h3>Sortie I2C</h3>
<p>Arrive alors la modification la plus délicate : Utiliser deux broches GPIO de l&rsquo;AR7240 comme interface <a href="https://fr.wikipedia.org/wiki/I2C">I2C</a>. Il s&rsquo;agit de dessouder 2 résistances CMS 0402 (lunettes / loupe / microscope indispensable) de pull-down R15 et R17 <a href="https://plus.google.com/u/0/photos/+MattJoyce01/albums/5737162394063705409/5737162390169780930?pid=5737162390169780930&amp;oid=107211980242732541247">situés à gauche du SoC côté composants</a>, et souder 2 fils à wrapper à la place. Comme pour la sortie série, la goutte de colle à chaud après l&rsquo;opération est conseillée. Ces sorties sont au niveau 2v7 et il est donc indispensable d&rsquo;utiliser un circuit d&rsquo;adaptation si l&rsquo;on veut commander un périphérique I2C 5v. J&rsquo;ai également récupéré du 2v5 sur un point test nommé TP_2V5 <a href="https://plus.google.com/u/0/photos/+MattJoyce01/albums/5737162394063705409/5737162390169780930?pid=5737162390169780930&amp;oid=107211980242732541247">côté cuivre, vers le centre</a>, pour faciliter le câblage de cet adaptateur, que j&rsquo;ai choisi d&rsquo;installer côté LCD. Donc, sortent sur un connecteur HE10 (un peu surdimensionné) : GND, SDA (br 29), SCL (br 7), 2v5 et 5v.</p>
<div id="attachment_1419" style="width: 410px" class="wp-caption aligncenter"><a href="http://www.arp75.org/wp-content/uploads/2014/04/P1020015.jpg"><img class=" wp-image-1419" alt="P1020015" src="http://www.arp75.org/wp-content/uploads/2014/04/P1020015-300x225.jpg" width="400" height="300" /></a><p class="wp-caption-text">Soudure de 2 fils à wrapper sur les 2 GPIO servant à l&rsquo;I2C</p></div>
<div id="attachment_1420" style="width: 410px" class="wp-caption aligncenter"><a href="http://www.arp75.org/wp-content/uploads/2014/04/P1020017.jpg"><img class=" wp-image-1420" alt="P1020017" src="http://www.arp75.org/wp-content/uploads/2014/04/P1020017-300x225.jpg" width="400" height="300" /></a><p class="wp-caption-text">Fil à wrapper sur le point test 2v5</p></div>
<div id="attachment_1421" style="width: 410px" class="wp-caption aligncenter"><a href="http://www.arp75.org/wp-content/uploads/2014/04/P1020018.jpg"><img class=" wp-image-1421" alt="P1020018" src="http://www.arp75.org/wp-content/uploads/2014/04/P1020018-300x225.jpg" width="400" height="300" /></a><p class="wp-caption-text">Sécurisation des soudures par une goutte de colle à chaud</p></div>
<div id="attachment_1422" style="width: 410px" class="wp-caption aligncenter"><a href="http://www.arp75.org/wp-content/uploads/2014/04/P1020020.jpg"><img class=" wp-image-1422" alt="P1020020" src="http://www.arp75.org/wp-content/uploads/2014/04/P1020020-300x225.jpg" width="400" height="300" /></a><p class="wp-caption-text">Ajout d&rsquo;un connecteur HE10 pour l&rsquo;I2C</p></div>
<p>Pour disposer d&rsquo;un port I2C avec ces 2 broches, il faut installer les packages kmod-i2c-gpio-custom, kmod-i2c-core et i2c-tools (optionnel mais pratique pour tester). Puis installer les modules i2c-dev (insmod i2c-dev) et i2c-gpio-custom en précisant les paramètres adéquats (insmod i2c-gpio-custom bus0=0,29,7). Si tout va bien, dmesg doit contenir ces 2 lignes :</p>
<pre><span style="color: #008000;">root@OpenWrt:</span><span style="color: #800080;">/#</span> dmesg | grep i2c
 [    8.940000] i2c /dev entries driver
 [    8.960000] i2c-gpio i2c-gpio.0: using pins 29 (SDA) and 7 (SCL)
<span style="color: #008000;">root@OpenWrt:</span><span style="color: #800080;">/#</span></pre>
<p>L&rsquo;adaptateur I2C 5v consiste pour chaque ligne SDA et SCL en une résistance de pull-up de chaque &laquo;&nbsp;côté&nbsp;&raquo; (2v5 et 5v) et un N-FET pour assurer la transition. Pour ma part, j&rsquo;ai &laquo;&nbsp;cannibalisé&nbsp;&raquo; un adaptateur déjà câblé, qui était prévu pour adapter du 5v à du 3v3, en retirant ce qui gênait, à savoir le régulateur 3v3 et une diode.</p>
<div id="attachment_1424" style="width: 410px" class="wp-caption aligncenter"><a href="http://www.arp75.org/wp-content/uploads/2014/04/i2c.png"><img class=" wp-image-1424" alt="i2c" src="http://www.arp75.org/wp-content/uploads/2014/04/i2c-300x126.png" width="400" height="168" /></a><p class="wp-caption-text">Schéma de l&rsquo;adaptateur I2C 2v5 / 5v</p></div>
<div id="attachment_1417" style="width: 410px" class="wp-caption aligncenter"><a href="http://www.arp75.org/wp-content/uploads/2014/04/P1020006.jpg"><img class=" wp-image-1417" alt="P1020006" src="http://www.arp75.org/wp-content/uploads/2014/04/P1020006-300x225.jpg" width="400" height="300" /></a><p class="wp-caption-text">Adaptateur I2C avant modification</p></div>
<div id="attachment_1418" style="width: 410px" class="wp-caption aligncenter"><a href="http://www.arp75.org/wp-content/uploads/2014/04/P1020007.jpg"><img class=" wp-image-1418" alt="P1020007" src="http://www.arp75.org/wp-content/uploads/2014/04/P1020007-300x225.jpg" width="400" height="300" /></a><p class="wp-caption-text">Adaptateur I2C après modification</p></div>
<h3>Afficheur LCD</h3>
<p>Concernant l&rsquo;afficheur, mon choix s&rsquo;est porté sur un modèle à 4 lignes de 20 caractères, rétro-éclairé, avec interface I2C (5v) déjà connectée. Le circuit qui pilote le LCD est un classique <a href="https://fr.wikipedia.org/wiki/HD44780">HD44780</a>, extrêmement répandu dans tous ces modules. Il est câblé en mode data 4-bits avec le <a href="http://www.nxp.com/documents/data_sheet/PCF8574.pdf">PCF 8574</a> (I2C I/O expander) sur l&rsquo;interface I2C, qui comporte 8 sorties. Les 4 autres sorties correspondent au 3 signaux de commande RS, R/W et EN, et à la commande du rétroéclairage (backlight).</p>
<div id="attachment_1467" style="width: 410px" class="wp-caption aligncenter"><a href="http://www.arp75.org/wp-content/uploads/2014/04/20140416_143618.jpg"><img class=" wp-image-1467" alt="20140416_143618" src="http://www.arp75.org/wp-content/uploads/2014/04/20140416_143618-300x225.jpg" width="400" height="300" /></a><p class="wp-caption-text">Afficheur LCD 4 lignes x 20 caractères</p></div>
<div id="attachment_1428" style="width: 410px" class="wp-caption aligncenter"><a href="http://www.arp75.org/wp-content/uploads/2014/04/P1020033.jpg"><img class=" wp-image-1428" alt="P1020033" src="http://www.arp75.org/wp-content/uploads/2014/04/P1020033-300x225.jpg" width="400" height="300" /></a><p class="wp-caption-text">Interface I2C fournie et installée sur l&rsquo;afficheur</p></div>
<p>Une fois l&rsquo;adaptateur I2C 5v/3v3 connecté sur l&rsquo;afficheur LCD via l&rsquo;interface I2C, et sur le routeur, il faut tester si le PCF8574 est vu sur le bus I2C, avec i2cdetect :</p>
<pre><span style="color: #008000;">root@OpenWrt:</span><span style="color: #800080;">~#</span> i2cdetect 0
WARNING! This program can confuse your I2C bus, cause data loss and worse!
 I will probe file /dev/i2c-0.
 I will probe address range 0x03-0x77.
 Continue? [Y/n] Y
 0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
 00:          -- -- -- -- -- -- -- -- -- -- -- -- --
 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
 20: -- -- -- -- -- -- -- 27 -- -- -- -- -- -- -- --
 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
 70: -- -- -- -- -- -- -- --
 <span style="color: #008000;">root@OpenWrt:</span><span style="color: #800080;">~#</span></pre>
<p>Il est bien vu par le système, et i2cdetect indique même son adresse 0&#215;27 (39).</p>
<p>Les éléments extérieurs fonctionnent donc, et sont vus par OpenWRT : Le clavier (numérique), et l&rsquo;afficheur LCD via l&rsquo;interface I2C.</p>
<p>Il va falloir maintenant passer au software pour mettre tout cela en musique !</p>
<p><em>Suite et fin dans la <a title="Afficheur autonome de DX cluster : Le DX Ticker (3/3)" href="http://www.arp75.org/?p=1378">troisième partie</a>&#8230;</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.arp75.org/?feed=rss2&#038;p=1376</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Afficheur autonome de DX cluster : Le DX Ticker (1/3)</title>
		<link>http://www.arp75.org/?p=1374</link>
		<comments>http://www.arp75.org/?p=1374#comments</comments>
		<pubDate>Thu, 17 Apr 2014 07:00:14 +0000</pubDate>
		<dc:creator><![CDATA[f6fvy]]></dc:creator>
				<category><![CDATA[Technique]]></category>
		<category><![CDATA[dx-cluster]]></category>
		<category><![CDATA[openwrt]]></category>
		<category><![CDATA[wr703n]]></category>

		<guid isPermaLink="false">http://www.arp75.org/?p=1374</guid>
		<description><![CDATA[Introduction Depuis quelques temps, j&#8217;avais idée de concevoir un dispositif permettant de surveiller d&#8217;un œil le DX-Cluster F6KVP-3. Je ne voulais pas mobiliser une partie d&#8217;écran de mon ordinateur pour cela, voire même pouvoir&#46;&#46;&#46;]]></description>
				<content:encoded><![CDATA[<h3>Introduction</h3>
<p>Depuis quelques temps, j&rsquo;avais idée de concevoir un dispositif permettant de surveiller d&rsquo;un œil le <a title="Installation d’un serveur DX Spider sur Raspberry Pi modèle A (1/2)" href="http://www.arp75.org/?p=1190">DX-Cluster F6KVP-3</a>. Je ne voulais pas mobiliser une partie d&rsquo;écran de mon ordinateur pour cela, voire même pouvoir le faire sans ordinateur du tout. Une sorte d&rsquo;appareil autonome qui se connecterait en Wi-Fi au cluster et affiche les spots les uns après les autres (avec possibilité de scrollback etc.).</p>
<p>Dans l&rsquo;idée de base, l&rsquo;engin devait être donc constitué d&rsquo;un module Wi-Fi, d&rsquo;une unité de traitement du flux cluster, un affichage (pas vraiment défini à ce niveau de réflexion, mais probablement un afficheur LCD à lignes ou un petit TFT), et quelques touches de commande (voire un clavier numérique).</p>
<div id="attachment_1401" style="width: 410px" class="wp-caption aligncenter"><a href="http://www.arp75.org/wp-content/uploads/2014/04/Scan10001.jpg"><img class=" wp-image-1401 " alt="Scan10001" src="http://www.arp75.org/wp-content/uploads/2014/04/Scan10001-300x212.jpg" width="400" height="282" /></a><p class="wp-caption-text">Synoptique du projet DX Ticker</p></div>
<p>Bien entendu, s&rsquo;offrait à moi la possibilité d&rsquo;utiliser un smartphone ou une tablette, mais &#8211; 1 -  je n&rsquo;ai pas ça en stock en rab&rsquo; (surtout dédié à cet usage), &#8211; 2 &#8211; je trouve cela un peu luxueux pour une telle utilisation et &#8211; 3 &#8211; surtout, ça n&rsquo;offre aucun intérêt : Installer une appli et la démarrer, on ne fait rien, on n&rsquo;apprend rien, et ça fonctionne du premier coup : tout ce que j&rsquo;abhorre dans le &laquo;&nbsp;néo-radioamateurisme&nbsp;&raquo; !</p>
<p>Cette idée rapidement écartée, que me reste-t-il ?</p>
<ul>
<li><a href="http://www.raspberrypi.org/">Raspberry Pi</a> + dongle Wi-Fi + afficheur LCD + keypad USB : C&rsquo;est jouable, mais encore une fois, je trouve cette solution trop luxueuse pour une telle fonctionnalité. Tant au niveau puissance de calcul, largement sous-utilisée, que coût &#8211; je chiffre l&rsquo;ensemble à une cinquantaine / soixantaine d&rsquo;euros.</li>
<li><a href="http://www.arduino.cc/">Arduino</a> (ou assimilé) + module Wi-Fi + afficheur LCD + touches (pas question d&rsquo;utiliser un keypad USB &#8211; trop galère avec l&rsquo;Arduino). C&rsquo;est plus dans les cordes au niveau puissance / usage mais j&rsquo;ai du mal à trouver un module Wi-Fi à un prix raisonnable. Rien à moins de 20 ou 30 Euros. On doit pouvoir faire mieux&#8230;</li>
</ul>
<h3>Le routeur TL-WR703N</h3>
<p>La solution que je vais finalement adopter m&rsquo;apparait justement en recherchant sur Internet un module Wi-Fi à coût raisonnable. Il s&rsquo;agit du <a href="http://www.tp-link.com.cn/product_225.html">TP-Link TL-WR703N</a>. C&rsquo;est un petit routeur Chinois (moins de 6 cm x 6 cm) pour clé 3G vendu aux alentours de 15 Euros, frais de port inclus (tant pis pour Arnaud M.). Il est équipé d&rsquo;un port Ethernet 10/100, d&rsquo;un port USB 2.0 High Speed et intègre une connexion Wi-Fi 802.11n 150 Mbps. L&rsquo;ensemble tourne avec un SoC (System on Chip) <a href="http://wiki.openwrt.org/_media/toh/tp-link/atheros.ar7240.pdf">Atheros AR7240</a> (MIPS) à 400 MHz, une ROM Flash de 2 MB, et 16 MB de RAM. Sa petite taille, son coût, et sa connectivité l&rsquo;ont rendu très populaire auprès de la communauté <a href="http://openwrt.org">OpenWRT</a> qui s&rsquo;est empressée de porter leur distribution sur ce routeur. De plus, et c&rsquo;est aussi cela qui m’intéresse, on peut le bidouiller &laquo;&nbsp;relativement facilement&nbsp;&raquo; pour y ajouter un port série (3v3) &#8211; qui sera salvateur en cas de &laquo;&nbsp;brickage&nbsp;&raquo; &#8211; et surtout sortir 2 GPIO (2v7) qui pourront être utilisées comme port I2C, permettant ainsi d’adjoindre mon afficheur LCD.</p>
<div id="attachment_1403" style="width: 410px" class="wp-caption aligncenter"><a href="http://www.arp75.org/wp-content/uploads/2014/04/P1010935.jpg"><img class=" wp-image-1403 " alt="P1010935" src="http://www.arp75.org/wp-content/uploads/2014/04/P1010935-300x225.jpg" width="400" height="300" /></a><p class="wp-caption-text">Routeur TL-WR703N</p></div>
<p>&nbsp;</p>
<div id="attachment_1399" style="width: 410px" class="wp-caption aligncenter"><a href="http://www.arp75.org/wp-content/uploads/2014/04/P1010937.jpg"><img class=" wp-image-1399 " alt="P1010937" src="http://www.arp75.org/wp-content/uploads/2014/04/P1010937-300x225.jpg" width="400" height="300" /></a><p class="wp-caption-text">Routeur TL-WR703N ouvert</p></div>
<p>En résumé, dans ce routeur, sont concentrés le module Wi-Fi, l&rsquo;unité de traitement du flux cluster (sous un Linux épuré), la gestion USB de mon keypad et la connectivité I2C pour l&rsquo;afficheur LCD. Tout ça pour 15 Euros ? Vendu ! Il n&rsquo;y a plus qu&rsquo;à&#8230;</p>
<p>Je vais maintenant décrire les différentes étapes pour parvenir à mes fins, sans trop de détails (notamment sur le software) qui sortent totalement de la vocation &laquo;&nbsp;radioamateur&nbsp;&raquo; de ce blog. Je reste bien sûr à la disposition des lecteurs qui voudraient plus de précisions, notamment par l&rsquo;intermédiaire des commentaires ou en privé.</p>
<p style="text-align: center;"><div style="width: 500px; max-width: 100%;" class="wp-video"><!--[if lt IE 9]><script>document.createElement('video');</script><![endif]-->
<video class="wp-video-shortcode" id="video-1374-1" width="500" height="375" preload="metadata" controls="controls"><source type="video/mp4" src="http://www.arp75.org/wp-content/uploads/2014/04/20140409_173742_3.mp4" /><a href="http://www.arp75.org/wp-content/uploads/2014/04/20140409_173742_3.mp4">http://www.arp75.org/wp-content/uploads/2014/04/20140409_173742_3.mp4</a></video></div></p>
<p><em>Suite dans la <a title="Afficheur autonome de DX cluster : Le DX Ticker (2/3)" href="http://www.arp75.org/?p=1376">seconde partie</a>&#8230;</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.arp75.org/?feed=rss2&#038;p=1374</wfw:commentRss>
		<slash:comments>2</slash:comments>
<enclosure url="http://www.arp75.org/wp-content/uploads/2014/04/20140409_173742_3.mp4" length="26727752" type="video/mp4" />
		</item>
	</channel>
</rss>
