<?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>Yoann Sculo &#187; foxboard</title>
	<atom:link href="http://www.yoannsculo.fr/tag/foxboard/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.yoannsculo.fr</link>
	<description>Un blog utilisant WordPress</description>
	<lastBuildDate>Fri, 26 Aug 2011 22:31:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Robert is alive ! Mais n&#8217;aime pas la moquette &#8230;</title>
		<link>http://www.yoannsculo.fr/robert-is-alive-mais-naime-pas-la-moquette/</link>
		<comments>http://www.yoannsculo.fr/robert-is-alive-mais-naime-pas-la-moquette/#comments</comments>
		<pubDate>Sun, 07 Mar 2010 13:01:09 +0000</pubDate>
		<dc:creator>Yoann Sculo</dc:creator>
				<category><![CDATA[Robotique]]></category>
		<category><![CDATA[Systèmes Embarqués]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[foxboard]]></category>
		<category><![CDATA[Robert]]></category>
		<category><![CDATA[robot]]></category>
		<category><![CDATA[Ultrason]]></category>

		<guid isPermaLink="false">http://www.yoannsculo.fr/?p=669</guid>
		<description><![CDATA[Depuis le temps que j&#8217;en parlais, voici quelques nouvelles de Robert ! Qui se porte à merveille, sauf qu&#8217;il a bien des soucis d&#8217;adhérence sur pas mal de sols (carrelage, moquette, &#8230;) Pas de chance, je n&#8217;ai que de la moquette et du carrelage chez moi Donc, comme vous pouvez le voir sur la photo, [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_jade" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fwww.yoannsculo.fr%252Frobert-is-alive-mais-naime-pas-la-moquette%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Robert%20is%20alive%20%21%20Mais%20n%27aime%20pas%20la%20moquette%20...%22%20%7D);"></div>
<p style="text-align: justify;">Depuis le temps que j&#8217;en parlais, voici quelques nouvelles de Robert ! Qui se porte à merveille, sauf qu&#8217;il a bien des soucis d&#8217;adhérence sur pas mal de sols (carrelage, moquette, &#8230;) Pas de chance, je n&#8217;ai que de la moquette et du carrelage chez moi <img src='http://www.yoannsculo.fr/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<div id="attachment_670" class="wp-caption aligncenter" style="width: 655px"><a href="http://www.yoannsculo.fr/wp-content/uploads/2010/03/DSC07122_small.jpg"><img class="size-full wp-image-670" title="Robert - Premier prototype" src="http://www.yoannsculo.fr/wp-content/uploads/2010/03/DSC07122_small.jpg" alt="" width="645" height="484" /></a><p class="wp-caption-text">Robert - Premier prototype</p></div>
<p style="text-align: justify;">Donc, comme vous pouvez le voir sur la photo, il est un peu &#8230; chevelu ! Disons qu&#8217;il porte bien son titre de prototype. Les cartes sont reliées à l&#8217;arrache pour l&#8217;instant, ça lui donne un certain cachet <img src='http://www.yoannsculo.fr/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  Bref, mes petites cartes sont enfin installées dessus. La carte fox (carte mère du robot) communique avec la carte Arduino (chargée des capteurs ultrasons) qui remonte les informations de distance. La carte Sabertooth, entre les moteurs, est quant à elle chargée de contrôler ces derniers. J&#8217;ai écrit un programme très basique (à l&#8217;occasion de Caprica 2010) qui donne son comportement au robot. Mais il s&#8217;avère qu&#8217;il n&#8217;est pas du tout au point. Mais grâce à lui je dispose au moins d&#8217;une première démonstration que voici :</p>
<p><object class="aligncenter" width="425" height="344"><param name="movie" value="http://www.youtube.com/v/YDwV9L_aIzI&#038;color1=0xb1b1b1&#038;color2=0xcfcfcf&#038;hl=en_US&#038;feature=player_embedded&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.youtube.com/v/YDwV9L_aIzI&#038;color1=0xb1b1b1&#038;color2=0xcfcfcf&#038;hl=en_US&#038;feature=player_embedded&#038;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="425" height="344"></embed></object></p>

<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.yoannsculo.fr%2Frobert-is-alive-mais-naime-pas-la-moquette%2F&amp;title=Robert%20is%20alive%20%21%20Mais%20n%26%238217%3Baime%20pas%20la%20moquette%20%26%238230%3B" id="wpa2a_2"><img src="http://www.yoannsculo.fr/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.yoannsculo.fr/robert-is-alive-mais-naime-pas-la-moquette/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Les entrées sorties en C avec la Foxboard, suite et fin</title>
		<link>http://www.yoannsculo.fr/les-entrees-sorties-en-c-avec-la-foxboard-suite-et-fin/</link>
		<comments>http://www.yoannsculo.fr/les-entrees-sorties-en-c-avec-la-foxboard-suite-et-fin/#comments</comments>
		<pubDate>Wed, 11 Nov 2009 20:33:41 +0000</pubDate>
		<dc:creator>Yoann Sculo</dc:creator>
				<category><![CDATA[Systèmes Embarqués]]></category>
		<category><![CDATA[carte fox]]></category>
		<category><![CDATA[entrée]]></category>
		<category><![CDATA[foxboard]]></category>
		<category><![CDATA[G20]]></category>
		<category><![CDATA[sortie]]></category>
		<category><![CDATA[SRF05]]></category>

		<guid isPermaLink="false">http://www.yoannsculo.fr/?p=471</guid>
		<description><![CDATA[J&#8217;ai profité de ce mercredi 11 novembre pour bidouiller un peu la fox J&#8217;ai donc pu terminer mes fonctions d&#8217;entrée/sortie. J&#8217;en ai profité pour mettre un makefile et mettre une archive en ligne où vous pouvez télécharger mon code. Je pense que cela mérite quelques petites finitions, mais le code fonctionne bien chez moi en [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_jade" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fwww.yoannsculo.fr%252Fles-entrees-sorties-en-c-avec-la-foxboard-suite-et-fin%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Les%20entr%C3%A9es%20sorties%20en%20C%20avec%20la%20Foxboard%2C%20suite%20et%20fin%22%20%7D);"></div>
<p style="text-align: justify;">J&#8217;ai profité de ce mercredi 11 novembre pour bidouiller un peu la fox <img src='http://www.yoannsculo.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p style="text-align: justify;">J&#8217;ai donc pu terminer mes fonctions d&#8217;entrée/sortie. J&#8217;en ai profité pour mettre un makefile et mettre <a href="http://www.yoannsculo.fr/docs/foxboard/foxg20_io.tar.gz">une archive en ligne</a> où vous pouvez télécharger mon code. Je pense que cela mérite quelques petites finitions, mais le code fonctionne bien chez moi en tout cas. Par défaut, mon main, dans led.c fait clignoter la ligne 9 du port J7. Pour faire clignoter la led rouge il suffira de changer PB0 par PC7. Je mettrai donc à jour l&#8217;archive tar.gz au fur et à mesure de mes modifications.</p>
<p style="text-align: justify;">
<div id="attachment_311" class="wp-caption alignright" style="width: 160px"><a href="http://www.yoannsculo.fr/wp-content/uploads/2009/09/24500n-opt.jpg"><img class="size-full wp-image-311" title="24500n-opt" src="http://www.yoannsculo.fr/wp-content/uploads/2009/09/24500n-opt.jpg" alt="Capteur ultrason" width="150" height="103" /></a><p class="wp-caption-text">Capteur ultrason</p></div>
<p>Je me suis également essayé à l&#8217;intégration de mes capteurs ultrasons <a href="http://www.robot-electronics.co.uk/htm/srf05tech.htm">SRF05</a>, mais je me heurte encore à plusieurs problèmes. J&#8217;arrive à émettre mes salves d&#8217;ultrasons sans soucis, mais c&#8217;est la récupération des données de distance qui est un peu plus compliquée. Le capteur renvoie un signal à l&#8217;état haut, de la durée correspondant à la distance mesurée. Avec un changement d&#8217;échelle on obtient alors la distance en cm. Seul soucis, les signaux à manipuler ici sont de l&#8217;ordre de la microsecondes, et je n&#8217;arrive pas encore à estimer la durée reçue. J&#8217;utilise la fonction clock() pour travailler sur une différence de cycles d&#8217;horloge, fonction qui semble être la plus précise en C. Cependant, la durée de l&#8217;état haut relevé grâce à cette fonction me retourne 0 en permanence&#8230; Soit la fonction est trop précise, soit quelque chose ne va pas dans mon implémentation. Je vais essayer de me renseigner s&#8217;il n&#8217;existe pas mieux que la fonction clock() pour mesurer des durées de l&#8217;ordre de la dizaine/centaine de microsecondes. J&#8217;espère donc pouvoir utiliser rapidement ces capteurs, ils sont à la base du repérage de <a href="http://www.yoannsculo.fr/tag/robert/">Robert</a>.</p>

<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.yoannsculo.fr%2Fles-entrees-sorties-en-c-avec-la-foxboard-suite-et-fin%2F&amp;title=Les%20entr%C3%A9es%20sorties%20en%20C%20avec%20la%20Foxboard%2C%20suite%20et%20fin" id="wpa2a_4"><img src="http://www.yoannsculo.fr/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.yoannsculo.fr/les-entrees-sorties-en-c-avec-la-foxboard-suite-et-fin/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Utiliser GPIO en C sur la foxboard G20</title>
		<link>http://www.yoannsculo.fr/utiliser-gpio-en-c-sur-la-foxboard-g20/</link>
		<comments>http://www.yoannsculo.fr/utiliser-gpio-en-c-sur-la-foxboard-g20/#comments</comments>
		<pubDate>Sun, 08 Nov 2009 20:57:25 +0000</pubDate>
		<dc:creator>Yoann Sculo</dc:creator>
				<category><![CDATA[Systèmes Embarqués]]></category>
		<category><![CDATA[carte fox]]></category>
		<category><![CDATA[foxboard]]></category>
		<category><![CDATA[G20]]></category>
		<category><![CDATA[GPIO]]></category>
		<category><![CDATA[LED]]></category>
		<category><![CDATA[sysfs]]></category>

		<guid isPermaLink="false">http://www.yoannsculo.fr/?p=451</guid>
		<description><![CDATA[Après quelques longues recherches ce week-end, j&#8217;ai enfin réussi à trouver le (un) moyen d&#8217;utiliser les entrées / sorties de la foxboard G20. J&#8217;ai initialement orienté mes recherches sur la documentation du kernel qui pointait sur gpio.h. Cependant d&#8217;après le site d&#8217;avrfreaks où j&#8217;ai trouvé mon bonheur, gpio.h aurait tout simplement disparu des noyaux Atmel [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_jade" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fwww.yoannsculo.fr%252Futiliser-gpio-en-c-sur-la-foxboard-g20%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Utiliser%20GPIO%20en%20C%20sur%20la%20foxboard%20G20%22%20%7D);"></div>
<p style="text-align: justify;">Après quelques longues recherches ce week-end, j&#8217;ai enfin réussi à trouver le (un) moyen d&#8217;utiliser les entrées / sorties de la foxboard G20. J&#8217;ai initialement orienté mes recherches sur la documentation du kernel qui pointait sur gpio.h. Cependant d&#8217;après le site d&#8217;<a href="http://www.avrfreaks.net/wiki/index.php/Documentation:Linux/GPIO">avrfreaks</a> où j&#8217;ai trouvé mon bonheur, gpio.h aurait tout simplement disparu des noyaux Atmel au profit de <a href="http://fr.wikipedia.org/wiki/Sysfs">sysfs</a>. Ainsi, la gestion I/O se fait par le biais de simples fichiers. J&#8217;ai donc commencé à me faire une petite bibliohèque de fonctions pour manipuler les fichiers sysfs. Ce n&#8217;est que le début, ça n&#8217;est pas encore complètement au point, mais quoi qu&#8217;il en soit, le code suivant fait déjà clignotter la LED rouge de la fox.</p>
<p style="text-align: justify;"><span id="more-451"></span></p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p451code2'); return false;">View Code</a> C</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p4512"><td class="code" id="p451code2"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#include &lt;string.h&gt;</span>
<span style="color: #339933;">#include &lt;stdio.h&gt;</span>
<span style="color: #339933;">#include &lt;stdlib.h&gt;</span>
<span style="color: #339933;">#include &lt;unistd.h&gt;</span>
&nbsp;
<span style="color: #993333;">struct</span> S_GPIO_LINE <span style="color: #009900;">&#123;</span>
    <span style="color: #993333;">char</span> id_number<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">4</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
    <span style="color: #993333;">int</span> direction<span style="color: #339933;">;</span>
    <span style="color: #993333;">int</span> value<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
<span style="color: #993333;">typedef</span> <span style="color: #993333;">struct</span> S_GPIO_LINE S_GPIO_LINE<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #993333;">int</span> load_gpio_line<span style="color: #009900;">&#40;</span> S_GPIO_LINE <span style="color: #339933;">*</span>ps_line<span style="color: #339933;">,</span> <span style="color: #993333;">char</span> id_number<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">4</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #993333;">int</span> i_direction <span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    FILE <span style="color: #339933;">*</span>p_gpio_line<span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #808080; font-style: italic;">/* Exporting GPIO line */</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>p_gpio_line <span style="color: #339933;">=</span> fopen<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;/sys/class/gpio/export&quot;</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;ab&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> NULL<span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span style="color: #000066;">printf</span></a><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Cannot open export file.<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        exit<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    rewind<span style="color: #009900;">&#40;</span>p_gpio_line<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    strcpy<span style="color: #009900;">&#40;</span>ps_line<span style="color: #339933;">-&gt;</span>id_number<span style="color: #339933;">,</span> id_number<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    fwrite<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>ps_line<span style="color: #339933;">-&gt;</span>id_number<span style="color: #339933;">,</span> <span style="color: #993333;">sizeof</span><span style="color: #009900;">&#40;</span><span style="color: #993333;">char</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">2</span><span style="color: #339933;">,</span> p_gpio_line<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
    fclose<span style="color: #009900;">&#40;</span>p_gpio_line<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    set_gpio_direction<span style="color: #009900;">&#40;</span>ps_line<span style="color: #339933;">,</span> i_direction<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #b1b100;">return</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">int</span> set_gpio_direction<span style="color: #009900;">&#40;</span> S_GPIO_LINE <span style="color: #339933;">*</span>ps_line<span style="color: #339933;">,</span> <span style="color: #993333;">int</span> i_direction <span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    FILE <span style="color: #339933;">*</span>p_gpio_direction<span style="color: #339933;">;</span>
    <span style="color: #993333;">char</span> gpio_direction<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">35</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
    <span style="color: #993333;">char</span> c_direction<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">4</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
    sprintf<span style="color: #009900;">&#40;</span>gpio_direction<span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;/sys/class/gpio/gpio%s/direction&quot;</span><span style="color: #339933;">,</span> ps_line<span style="color: #339933;">-&gt;</span>id_number<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #808080; font-style: italic;">/* Setting line direction */</span> 
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>p_gpio_direction <span style="color: #339933;">=</span> fopen<span style="color: #009900;">&#40;</span>gpio_direction<span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;rb+&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> NULL<span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span style="color: #000066;">printf</span></a><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Cannot open direction file.<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        exit<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    rewind<span style="color: #009900;">&#40;</span>p_gpio_direction<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span> i_direction <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        strcpy<span style="color: #009900;">&#40;</span>c_direction<span style="color: #339933;">,</span><span style="color: #ff0000;">&quot;in&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        ps_line<span style="color: #339933;">-&gt;</span>direction <span style="color: #339933;">=</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #b1b100;">else</span><span style="color: #009900;">&#123;</span>
        strcpy<span style="color: #009900;">&#40;</span>c_direction<span style="color: #339933;">,</span><span style="color: #ff0000;">&quot;out&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        ps_line<span style="color: #339933;">-&gt;</span>direction <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    fwrite<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>c_direction<span style="color: #339933;">,</span> <span style="color: #993333;">sizeof</span><span style="color: #009900;">&#40;</span><span style="color: #993333;">char</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">3</span><span style="color: #339933;">,</span> p_gpio_direction<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    fclose<span style="color: #009900;">&#40;</span>p_gpio_direction<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #b1b100;">return</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
<span style="color: #993333;">int</span> set_gpio_line<span style="color: #009900;">&#40;</span>S_GPIO_LINE <span style="color: #339933;">*</span>ps_line<span style="color: #339933;">,</span> <span style="color: #993333;">int</span> value <span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    FILE <span style="color: #339933;">*</span>p_gpio_value<span style="color: #339933;">;</span>
    <span style="color: #993333;">char</span> gpio_value<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">35</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
    <span style="color: #993333;">char</span> c_value<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">2</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span> ps_line<span style="color: #339933;">-&gt;</span>direction <span style="color: #339933;">==</span> <span style="color: #0000dd;">0</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        sprintf<span style="color: #009900;">&#40;</span>gpio_value<span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;/sys/class/gpio/gpio%s/value&quot;</span><span style="color: #339933;">,</span> ps_line<span style="color: #339933;">-&gt;</span>id_number<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #808080; font-style: italic;">/* Setting value */</span>
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>p_gpio_value <span style="color: #339933;">=</span> fopen<span style="color: #009900;">&#40;</span>gpio_value<span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;rb+&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> NULL<span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#123;</span>
            <a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span style="color: #000066;">printf</span></a><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Cannot open value file.<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            exit<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
        rewind<span style="color: #009900;">&#40;</span>p_gpio_value<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        sprintf<span style="color: #009900;">&#40;</span>c_value<span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;%d&quot;</span><span style="color: #339933;">,</span> value<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        ps_line<span style="color: #339933;">-&gt;</span>value <span style="color: #339933;">=</span> value<span style="color: #339933;">;</span>
        fwrite<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>c_value<span style="color: #339933;">,</span> <span style="color: #993333;">sizeof</span><span style="color: #009900;">&#40;</span><span style="color: #993333;">char</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">,</span> p_gpio_value<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        fclose<span style="color: #009900;">&#40;</span>p_gpio_value<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #b1b100;">else</span><span style="color: #009900;">&#123;</span>
        <a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span style="color: #000066;">printf</span></a><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Wrong access.<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        exit<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">int</span> main<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
    FILE <span style="color: #339933;">*</span>fp<span style="color: #339933;">;</span>
    S_GPIO_LINE s_led7<span style="color: #339933;">;</span>
&nbsp;
    load_gpio_line<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>s_led7<span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;103&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        set_gpio_line<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>s_led7<span style="color: #339933;">,</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>    
        usleep<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">100000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        set_gpio_line<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>s_led7<span style="color: #339933;">,</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        usleep<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">100000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #b1b100;">return</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p style="text-align: justify;">Prochaine étape, la lecture de données <img src='http://www.yoannsculo.fr/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>

<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.yoannsculo.fr%2Futiliser-gpio-en-c-sur-la-foxboard-g20%2F&amp;title=Utiliser%20GPIO%20en%20C%20sur%20la%20foxboard%20G20" id="wpa2a_6"><img src="http://www.yoannsculo.fr/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.yoannsculo.fr/utiliser-gpio-en-c-sur-la-foxboard-g20/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Premier test de la Fox Board G20</title>
		<link>http://www.yoannsculo.fr/premier-test-de-la-fox-board-g20/</link>
		<comments>http://www.yoannsculo.fr/premier-test-de-la-fox-board-g20/#comments</comments>
		<pubDate>Sun, 18 Oct 2009 18:35:34 +0000</pubDate>
		<dc:creator>Yoann Sculo</dc:creator>
				<category><![CDATA[Systèmes Embarqués]]></category>
		<category><![CDATA[Acmesystems]]></category>
		<category><![CDATA[carte fox]]></category>
		<category><![CDATA[foxboard]]></category>
		<category><![CDATA[G20]]></category>

		<guid isPermaLink="false">http://www.yoannsculo.fr/?p=411</guid>
		<description><![CDATA[Me voici enfin en la possession de la Fox Board G20 de chez Acmesystems. Je tiens à remercier le constructeur, qui m&#8217;a envoyé gratuitement une combo box, ayant pris connaissance de mes projets J&#8217;ai donc reçu un sympathique colis d&#8217;Italie par Fedex mardi dernier. Et je viens juste de trouver le temps de tester la [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_jade" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fwww.yoannsculo.fr%252Fpremier-test-de-la-fox-board-g20%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Premier%20test%20de%20la%20Fox%20Board%20G20%22%20%7D);"></div>
<div id="attachment_412" class="wp-caption aligncenter" style="width: 655px"><a href="http://www.yoannsculo.fr/wp-content/uploads/2009/10/DSC07015_small.jpg"><img class="size-full wp-image-412" title="DSC07015_small" src="http://www.yoannsculo.fr/wp-content/uploads/2009/10/DSC07015_small.jpg" alt="Carte fox G20" width="645" height="484" /></a><p class="wp-caption-text">Carte fox G20</p></div>
<p style="text-align: justify;">Me voici enfin en la possession de la Fox Board G20 de chez Acmesystems. Je tiens à remercier le constructeur, qui m&#8217;a envoyé gratuitement une combo box, ayant pris connaissance de mes projets <img src='http://www.yoannsculo.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
J&#8217;ai donc reçu un sympathique colis d&#8217;Italie par Fedex mardi dernier. Et je viens juste de trouver le temps de tester la carte.</p>
<p style="text-align: justify;">Tout d&#8217;abord, l&#8217;adresse ip par défaut de la G20 est <strong>192.168.1.92</strong>, un simple</p>
<p style="text-align: justify;"><em>ifconfig eth0 192.168.1.111 netmask 255.255.255.0</em></p>
<p style="text-align: justify;">suffit alors à configurer la connexion au PC. J&#8217;essaierai plus tard de brancher la carte directement à ma Neufbox pour ne pas avoir à configurer ma connexion à chaque fois.</p>
<p style="text-align: justify;">On boote alors sur un Gentoo fraichement installée. Ça change pas mal de l&#8217;ancienne Fox, mais n&#8217;ayant pas de projet précis sous la main pour l&#8217;instant, il ne m&#8217;est pas possible de tester ses performances. Je songe certainement développer prochainement un driver linux pour ma caméra série ! Je testerai donc petit à petit ce qu&#8217;elle a dans le ventre et commence dès à présent à rédiger un nouveau tutoriel pour faire suite à mon <a href="http://yoannsculo.developpez.com/tutoriels/linux/introduction-carte-fox-lx832/">introduction à la carte fox</a>. Bref, plus d&#8217;infos et de découvertes au prochain épisode ! <img src='http://www.yoannsculo.fr/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><br style="font-size: 29.25px; line-height: 42.75px;" /></p>

<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.yoannsculo.fr%2Fpremier-test-de-la-fox-board-g20%2F&amp;title=Premier%20test%20de%20la%20Fox%20Board%20G20" id="wpa2a_8"><img src="http://www.yoannsculo.fr/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.yoannsculo.fr/premier-test-de-la-fox-board-g20/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Sortie de la Fox Board G20</title>
		<link>http://www.yoannsculo.fr/sortie-de-la-fox-board-g20/</link>
		<comments>http://www.yoannsculo.fr/sortie-de-la-fox-board-g20/#comments</comments>
		<pubDate>Wed, 07 Oct 2009 20:09:50 +0000</pubDate>
		<dc:creator>Yoann Sculo</dc:creator>
				<category><![CDATA[Systèmes Embarqués]]></category>
		<category><![CDATA[Acmesystems]]></category>
		<category><![CDATA[carte fox]]></category>
		<category><![CDATA[foxboard]]></category>
		<category><![CDATA[G20]]></category>
		<category><![CDATA[Gentoo]]></category>
		<category><![CDATA[OpenWRT]]></category>

		<guid isPermaLink="false">http://www.yoannsculo.fr/?p=398</guid>
		<description><![CDATA[La tant attendue carte fox G20 est enfin disponible sur le magasin en ligne d&#8217;Acmesystems. On peut également remarquer que le nouveau wiki qui lui est dédié se remplit progressivement de contenu fort intéressant. On y apprend notamment que la compilation sous Gentoo se fera directement sur la FOX Board G20 et ne nécessite plus [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_jade" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fwww.yoannsculo.fr%252Fsortie-de-la-fox-board-g20%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Sortie%20de%20la%20Fox%20Board%20G20%22%20%7D);"></div>
<div id="attachment_287" class="wp-caption alignleft" style="width: 304px"><a href="http://www.yoannsculo.fr/wp-content/uploads/2009/08/foxg20.jpg"><img class="size-full wp-image-287 " title="Carte Fox G20" src="http://www.yoannsculo.fr/wp-content/uploads/2009/08/foxg20.jpg" alt="Fox Board G20" width="294" height="246" /></a><p class="wp-caption-text">Fox Board G20</p></div>
<p>La tant attendue carte fox G20 est enfin disponible sur le magasin en ligne d&#8217;<a href="http://eshop.acmesystems.it/?id=netusg20">Acmesystems</a>.</p>
<p style="text-align: justify;">On peut également remarquer que le <a href="http://foxg20.acmesystems.it/doku.php?id=documentation">nouveau wiki</a> qui lui est dédié se remplit progressivement de contenu fort intéressant. On y apprend notamment que la compilation sous Gentoo se fera directement sur la FOX Board G20 et ne nécessite plus de SDK, la chaîne de compilation étant présente sur le système. On y trouve aussi un certain nombre d&#8217;info pour installer le SDK d&#8217;OpenWRT et travailler avec.</p>
<p style="text-align: justify;">Bref, j&#8217;ai vraiment hâte de pouvoir la tester, héhé !</p>
<p style="text-align: justify;">J&#8217;imagine que nous devrions la voir bientôt apparaître chez Lextronic, revendeur français d&#8217;Acmesystems.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/soWO3G33JKw&amp;hl=fr&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/soWO3G33JKw&amp;hl=fr&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>

<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.yoannsculo.fr%2Fsortie-de-la-fox-board-g20%2F&amp;title=Sortie%20de%20la%20Fox%20Board%20G20" id="wpa2a_10"><img src="http://www.yoannsculo.fr/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.yoannsculo.fr/sortie-de-la-fox-board-g20/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tutoriel &#8211; Introduction à la carte FOX LX832</title>
		<link>http://www.yoannsculo.fr/tutoriel-introduction-a-la-carte-fox-lx832/</link>
		<comments>http://www.yoannsculo.fr/tutoriel-introduction-a-la-carte-fox-lx832/#comments</comments>
		<pubDate>Wed, 26 Aug 2009 19:01:47 +0000</pubDate>
		<dc:creator>Yoann Sculo</dc:creator>
				<category><![CDATA[Systèmes Embarqués]]></category>
		<category><![CDATA[carte fox]]></category>
		<category><![CDATA[foxboard]]></category>
		<category><![CDATA[tutoriel]]></category>

		<guid isPermaLink="false">http://www.yoannsculo.fr/?p=303</guid>
		<description><![CDATA[Il y a un moment que je l&#8217;avais annoncé. Voici enfin mon tutoriel d&#8217;introduction à la carte fox. Il s&#8217;agit de mon premier article pour le site Developpez.com. J&#8217;en profite pour en faire part ici également. Manque de chance, c&#8217;est après avoir terminé ce tutoriel qu&#8217;Acmesystems en a profité pour faire la promo de sa [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_jade" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fwww.yoannsculo.fr%252Ftutoriel-introduction-a-la-carte-fox-lx832%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Tutoriel%20-%20Introduction%20%C3%A0%20la%20carte%20FOX%20LX832%22%20%7D);"></div>
<div id="attachment_85" class="wp-caption alignleft" style="width: 310px"><a href="http://www.yoannsculo.fr/wp-content/uploads/2009/05/acme_fox-300x197.jpg"><img class="size-full wp-image-85" title="acme_fox-300x197" src="http://www.yoannsculo.fr/wp-content/uploads/2009/05/acme_fox-300x197.jpg" alt="Carte Fox" width="300" height="197" /></a><p class="wp-caption-text">Carte Fox</p></div>
<p style="text-align: justify;">Il y a un moment que je l&#8217;avais annoncé. Voici enfin <a href="http://yoannsculo.developpez.com/tutoriels/linux/introduction-carte-fox-lx832/">mon tutoriel d&#8217;introduction à la carte fox</a>. Il s&#8217;agit de mon premier article pour le site <a href="http://www.developpez.com/">Developpez.com</a>. J&#8217;en profite pour en faire part ici également. Manque de chance, c&#8217;est après avoir terminé ce tutoriel qu&#8217;Acmesystems en a profité pour faire la promo de sa nouvelle carte G20. Quoi qu&#8217;il en soit, je pense que ce document pourra aider des gens même si la FOX LX832 a trouvé son successeur. De plus, les deux cartes ne semblent pas radicalement différentes et bon nombre d&#8217;informations seront bonnes à prendre pour la G20. De toute façon je songe à me procurer la nouvelle carte FOX à sa sortie en septembre pour rédiger un nouveau tutoriel.</p>
<p style="text-align: justify;">N&#8217;hésitez pas à me faire part d&#8217;éventuelles remarques.</p>

<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.yoannsculo.fr%2Ftutoriel-introduction-a-la-carte-fox-lx832%2F&amp;title=Tutoriel%20%26%238211%3B%20Introduction%20%C3%A0%20la%20carte%20FOX%20LX832" id="wpa2a_12"><img src="http://www.yoannsculo.fr/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.yoannsculo.fr/tutoriel-introduction-a-la-carte-fox-lx832/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>La nouvelle carte Fox G20</title>
		<link>http://www.yoannsculo.fr/la-nouvelle-carte-fox-g20/</link>
		<comments>http://www.yoannsculo.fr/la-nouvelle-carte-fox-g20/#comments</comments>
		<pubDate>Tue, 11 Aug 2009 17:45:50 +0000</pubDate>
		<dc:creator>Yoann Sculo</dc:creator>
				<category><![CDATA[Systèmes Embarqués]]></category>
		<category><![CDATA[ARM]]></category>
		<category><![CDATA[carte fox]]></category>
		<category><![CDATA[foxboard]]></category>
		<category><![CDATA[G20]]></category>

		<guid isPermaLink="false">http://www.yoannsculo.fr/?p=289</guid>
		<description><![CDATA[Voilà quelques temps que la société Acmesystems avait annoncé la sortie de sa nouvelle carte embarquée Fox G20. A vrai dire ils avaient surtout annoncé qu&#8217;ils arrêteraient la production de carte Fox à la date du 31 Juillet 2010, ce qui laissait pas mal de marge. Et j&#8217;ai eu la surprise aujourd&#8217;hui de découvrir qu&#8217;ils [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_jade" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fwww.yoannsculo.fr%252Fla-nouvelle-carte-fox-g20%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22La%20nouvelle%20carte%20Fox%20G20%22%20%7D);"></div>
<p style="text-align: justify;">Voilà quelques temps que la société Acmesystems avait annoncé la sortie de sa nouvelle carte embarquée <a href="http://www.acmesystems.it/netus/doku.php?id=products:foxboardg20">Fox G20</a>. A vrai dire ils avaient surtout annoncé qu&#8217;ils arrêteraient la production de carte Fox à la date du 31 Juillet 2010, ce qui laissait pas mal de marge. Et j&#8217;ai eu la surprise aujourd&#8217;hui de découvrir qu&#8217;ils comptaient mettre en vente leur nouveau modèle G20 dès le mois de septembre. Aucune information n&#8217;était disponible encore la semaine dernière. Donc c&#8217;est une bonne surprise, d&#8217;autant plus que nous avons maintenant les caractéristiques de la G20.</p>
<p style="text-align: justify;">
<div id="attachment_287" class="wp-caption aligncenter" style="width: 430px"><a href="http://www.yoannsculo.fr/wp-content/uploads/2009/08/foxg20.jpg"><img class="size-full wp-image-287" title="Carte Fox G20" src="http://www.yoannsculo.fr/wp-content/uploads/2009/08/foxg20.jpg" alt="Carte Fox G20" width="420" height="352" /></a><p class="wp-caption-text">Carte Fox G20</p></div>
<p style="text-align: justify;">Basée sur la même carte que la Foxboard LX, la G20 embarque un module CPU, basé sur un processeur ARM9 de chez Atmel.</p>
<p>Au niveau des changements:</p>
<ul>
<li>On gagne 300Mz par rapport à l&#8217;ancien modèle, ce qui nous amène à 400MHz.</li>
<li>La mémoire est doublée, passant de 32 à 64Mo de SDRAM.</li>
<li>Les ports USB1 passent en USB2</li>
<li>La consommation est presque divisée par 4, passant de 220mA à 60mA, ce qui nous amène à 0.3W ! Fantastique !</li>
</ul>
<p>Au niveau des nouveautés:</p>
<ul>
<li>On gagne un port USB client</li>
<li>Un lecteur microSD a été installé, qui nous permet de lire des cartes jusqu&#8217;à 4Go</li>
<li>Une pile est maintenant présente sur la carte, ce qui nous permettra enfin de gérer correctement la composante temporelle sans ajout de circuit annexe.</li>
<li>On gagne également 2 sorties PWM !</li>
<li>Mais aussi un port série pour gérer un écran oLED 4Dsystem</li>
<li>Ainsi que des entrées analogique avec convertisseur analogique numérique intégré !</li>
<li>Et un port JTAG <img src='http://www.yoannsculo.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
</ul>
<p>Le tout fonctionnant sur l&#8217;OS Linux <a href="http://openwrt.org/">OpenWRT</a>. Il semblerait également que l&#8217;on puisse installer simplement d&#8217;autres distrib telles que Gentoo et KaeilOS.</p>
<p>Acmesystems annonce la disponibilité de la G20 dès le 21 Septembre chez ses différents revendeurs (dont <a href="http://www.lextronic.fr">Lextronic </a>en France). Le prix restant inchangé (139€ HT) par rapport au modèle actuel. Bref tout cela pour dire que nous avons là une superbe petite carte, qui va se retrouver très bientôt dans mes petits robots.</p>
<p>Pour plus d&#8217;informations, <a href="http://www.acmesystems.it/netus/doku.php?id=products:foxboardg20">un nouveau Wiki</a> a été mis en place pour accueillir la nouvelle documentation de la Fox G20.</p>
<p>Je vais donc surveiller de près ce petit wiki qui est en cours de remplissage depuis la semaine dernière.</p>

<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.yoannsculo.fr%2Fla-nouvelle-carte-fox-g20%2F&amp;title=La%20nouvelle%20carte%20Fox%20G20" id="wpa2a_14"><img src="http://www.yoannsculo.fr/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.yoannsculo.fr/la-nouvelle-carte-fox-g20/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>Mes nouvelles cartes &#8211; Fox et Arduino</title>
		<link>http://www.yoannsculo.fr/mes-nouvelles-cartes-fox-et-arduino/</link>
		<comments>http://www.yoannsculo.fr/mes-nouvelles-cartes-fox-et-arduino/#comments</comments>
		<pubDate>Tue, 19 May 2009 19:05:36 +0000</pubDate>
		<dc:creator>Yoann Sculo</dc:creator>
				<category><![CDATA[Systèmes Embarqués]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[carte fox]]></category>
		<category><![CDATA[foxboard]]></category>

		<guid isPermaLink="false">http://www.yoannsculo.fr/?p=128</guid>
		<description><![CDATA[Je viens enfin de recevoir ma commande Lextronic ! Dans le colis, les deux cartes italiennes tant attendes : la Fox et l&#8217;Arduino. Je ne dépends plus des cartes de l&#8217;UTT pour développer mon robot maintenant. Et après de nombreuses recherches de doc, il s&#8217;avère que la carte Arduino est vraiment géniale en terme de [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_jade" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fwww.yoannsculo.fr%252Fmes-nouvelles-cartes-fox-et-arduino%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Mes%20nouvelles%20cartes%20-%20Fox%20et%20Arduino%22%20%7D);"></div>
<div id="attachment_127" class="wp-caption aligncenter" style="width: 680px"><img class="size-full wp-image-127" title="dsc06969_small" src="http://www.yoannsculo.fr/wp-content/uploads/2009/05/dsc06969_small.jpg" alt="Cartes Fox et Arduino" width="670" height="368" /><p class="wp-caption-text">Cartes Fox et Arduino</p></div>
<p style="text-align: justify;">Je viens enfin de recevoir ma commande Lextronic ! Dans le colis, les deux cartes italiennes tant attendes : la Fox et l&#8217;<a href="http://www.arduino.cc/" target="_blank">Arduino</a>. Je ne dépends plus des cartes de l&#8217;UTT pour développer mon robot maintenant. Et après de nombreuses recherches de doc, il s&#8217;avère que la carte Arduino est vraiment géniale en terme de possibilités. J&#8217;en dirai un peu plus sur cette nouvelle carte dès que je maîtriserai son fonctionnement. Sinon, je suis en train de rédiger des tutoriels sur la carte fox. Je compte déjà réaliser un tutoriel d&#8217;introduction à la carte pour idéalement décliner en plusieurs tutoriels par la suite du style :</p>
<ul>
<li>Communiquer avec la carte Fox &#8211; Bluetooth, Série, Wifi</li>
<li>Utilisation et mise en place d&#8217;un serveur vidéo sur la carte Fox</li>
<li>Utilisation des entrées sorties</li>
<li>Mise en place d&#8217;une Interface GSM/GPRS &#8211; envoi de SMS</li>
<li>Mise en place d&#8217;un serveur web (CGI/PHP)</li>
<li>&#8230;</li>
</ul>
<p>Suite au prochain épisode <img src='http://www.yoannsculo.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>

<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.yoannsculo.fr%2Fmes-nouvelles-cartes-fox-et-arduino%2F&amp;title=Mes%20nouvelles%20cartes%20%26%238211%3B%20Fox%20et%20Arduino" id="wpa2a_16"><img src="http://www.yoannsculo.fr/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.yoannsculo.fr/mes-nouvelles-cartes-fox-et-arduino/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Interface GSM sur carte Fox et envoi de SMS</title>
		<link>http://www.yoannsculo.fr/interface-gsm-sur-carte-fox-et-envoi-de-sms/</link>
		<comments>http://www.yoannsculo.fr/interface-gsm-sur-carte-fox-et-envoi-de-sms/#comments</comments>
		<pubDate>Fri, 08 May 2009 15:49:41 +0000</pubDate>
		<dc:creator>Yoann Sculo</dc:creator>
				<category><![CDATA[Systèmes Embarqués]]></category>
		<category><![CDATA[AT]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[carte fox]]></category>
		<category><![CDATA[foxboard]]></category>
		<category><![CDATA[GSM]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[SMS]]></category>

		<guid isPermaLink="false">http://www.yoannsculo.fr/?p=86</guid>
		<description><![CDATA[J&#8217;ai été amené à travailler dans le cadre de mes études sur un petit projet de développement d&#8217;une Interface GSM sur un système Linux embarqué. Ayant découvert la puissance du système, j&#8217;ai pensé vous faire part de mes découvertes sur l&#8217;utilisation de cette carte. Dans mon cas le principe était de créer un système autonome [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_jade" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fwww.yoannsculo.fr%252Finterface-gsm-sur-carte-fox-et-envoi-de-sms%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Interface%20GSM%20sur%20carte%20Fox%20et%20envoi%20de%20SMS%22%20%7D);"></div>
<p style="text-align: justify;">
<div id="attachment_85" class="wp-caption alignleft" style="width: 310px"><img class="size-full wp-image-85" title="acme_fox-300x197" src="http://www.yoannsculo.fr/wp-content/uploads/2009/05/acme_fox-300x197.jpg" alt="Carte Fox" width="300" height="197" /><p class="wp-caption-text">Carte Fox</p></div>
<p>J&#8217;ai été amené à travailler dans le cadre de mes études sur un petit projet de développement d&#8217;une Interface GSM sur un système Linux embarqué. Ayant découvert la puissance du système, j&#8217;ai pensé vous faire part de mes découvertes sur l&#8217;utilisation de cette carte.</p>
<p style="text-align: justify;">Dans mon cas le principe était de créer un système autonome d&#8217;envoi de SMS aux étudiants de mon école. L&#8217;idée étant de pouvoir envoyer les résultats des examens directement par SMS aux étudiants, ce qui est ma foi fort sympatique <img src='http://www.yoannsculo.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h2 style="text-align: justify;">Le Matériel</h2>
<p style="text-align: justify;">Alors, tout d&#8217;abord : Carte FOX Késako !? Il s&#8217;agit d&#8217;un système embarqué à bas coût utilisant le système d’exploitation Linux. La carte est dotée d’un processeur AXIS à 100MHz et de 32 MB de RAM, de connectiques USB, Ethernet, d’un port série console ainsi que 40 pins pouvant être reliées à plusieurs BUS de données. Elle permet de développer en bon nombre de langages : C, C++, PHP, PYTHON, Shell, … et permet des connections HTTP, FTP, SSH et TELNET. De petite taille et faible consommation électrique (1 W) est idéale pour mettre en place rapidement des projets de type embarqué.</p>
<p style="text-align: justify;">
<div id="attachment_36" class="wp-caption alignright" style="width: 210px"><img class="size-full wp-image-36" title="gm862-quad" src="http://r19649.ovh.net/cs/blog/wp-content/uploads/2009/02/gm862-quad.jpg" alt="Modem GSM" width="200" height="200" /><p class="wp-caption-text">Modem GSM</p></div>
<p>Le modem GSM utilisé ici est un modem de la marque Telit. Il est relié à la carte FOX par l’intermédiaire d’une carte d’extension. La carte FOX peut communiquer avec le modem par l’intermédiaire du port série /dev/ttyS2. Une simple utilisation de carte SIM classique permet de se connecter au réseau GSM. Il est possible de trouver cette carte seule sur le site d&#8217;<a href="http://foxlx.acmesystems.it/?id=4">ACME SYSTEMS</a> à 176 € frais de port tout compris. Si l&#8217;on ajoute le kit GPRS cela monte jusqu&#8217;à 626 €, ce qui commence déjà à faire beaucoup. Je pense qu&#8217;une solution plus abordable serait de relier la carte basique à un téléphone portable pour communiquer en série étant donné que dans notre cas nous n&#8217;avons pas besoin de tous les éléments de la carte d&#8217;extension.</p>
<p style="text-align: justify;">Les modems GSM utilisent un protocole de commandes appelées &laquo;&nbsp;commandes AT&nbsp;&raquo;. Chaque constructeur fait un peu ce qu&#8217;il veut avec ses normes, ce qui fait que chaque modem est plus ou moins différent et qu&#8217;il faut se référer à la <a href="http://www.telit.com/module/infopool/download.php?id=542">doc du constructeur</a>. Ces commandes AT sont donc envoyées via le port série pour soumettre différentes commandes au modem. On peut notamment dans notre cas manipuler et envoyer des SMS par l’intermédiaire de celles-ci.</p>
<p><span id="more-86"></span></p>
<h2 style="text-align: justify;">Environnement de développement</h2>
<p style="text-align: justify;">La compilation d’un programme en C sur la carte fox nécessite un compilateur croisé permettant de compiler le code C pour les processeurs AXIS. La compilation directe sur la carte n’étant pas possible, il faut par conséquent utiliser un SDK  pour compiler le programme. J&#8217;ai travaillé avec le <a href="http://foxlx.acmesystems.it/?id=5">SDK Axis</a> fourni pour la carte fox.</p>
<p style="text-align: justify;">Avant toute chose il faut se rendre dans le dossier du SDK (~/devboard-R2_01 pour ma part) et y taper la commande suivante afin d’initialiser l’environnement de développement.</p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p86code11'); return false;">View Code</a> SHELL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p8611"><td class="code" id="p86code11"><pre class="shell" style="font-family:monospace;">. init_env</pre></td></tr></table></div>

<p>Ensuite, il faut choisir le compilateur AXIS</p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p86code12'); return false;">View Code</a> SHELL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p8612"><td class="code" id="p86code12"><pre class="shell" style="font-family:monospace;">make cris-axis-linux-gnu</pre></td></tr></table></div>

<p>On doit alors créer un Makefile pour notre programme. Voici celui que j&#8217;ai créé :</p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p86code13'); return false;">View Code</a> MAKEFILE</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p8613"><td class="code" id="p86code13"><pre class="makefile" style="font-family:monospace;">AXIS_USABLE_LIBS=UCLIBC GLIBC
include $(AXIS_TOP_DIR)/tools/build/Rules.axis
PROGS = sms
INSTDIR= $(prefix)/mnt/flash
INSTMODE= 0755
INSTOWNER= root
INSTGROUP= root
OBJS = main.o atcommand.o modem.o
all: $(PROGS)
$(PROGS): $(OBJS)
$(CC) $(LDFLAGS) $^ $(LDLIBS) -o $@
scp sms root@fox01:/mnt/flash/tx
clean:
rm -f *.o
rm -f sms</pre></td></tr></table></div>

<p style="text-align: justify;">Il n’y a alors plus qu’à faire un make pour compiler le programme et à l’envoyer sur la carte en FTP ou SCP. Ayant dû compiler à de très nombreuses reprises mon programme, j’ai rajouté l’envoi du fichier dans le makefile via la commande scp. Les fichiers utilisateurs sont déposés sur la carte Flash dans le répertoire /mnt/flash. Attention toutefois, car la mémoire flash EPROM est limitée en nombre d&#8217;écritures. Il vaut mieux tant que possible éviter d&#8217;écrire dans cette mémoire régulièrement. Privilégier la RAM (dossier /var par exemple) plutôt que sur la carte flash. Seul soucis, la carte se réinitialise à chaque redémarrage, par conséquent les tests peuvent être faits en RAM et une fois que l&#8217;application compilée est stable il est préférable de la déposer sur la carte flash afin de ne pas perdre le programme à chaque reboot.</p>
<p style="text-align: justify;">La connexion à la carte fox se fait en telnet (ou ssh) simplement à l’aide de la commande suivante grâce à un simple telnet</p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p86code14'); return false;">View Code</a> SHELL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p8614"><td class="code" id="p86code14"><pre class="shell" style="font-family:monospace;">telnet adresse_ip_de_la_fox</pre></td></tr></table></div>

<h2 style="text-align: justify;">Développement du programme</h2>
<h3>Utilisation des commandes AT</h3>
<p style="text-align: justify;">Le modem se commande directement grâce aux commandes AT.  Ces commandes AT suivent une certaine syntaxe et nécessitent une mise en forme particulière pour leur envoi sur le modem. Ce dernier reconnaît plusieurs caractères de contrôle :</p>
<p style="text-align: justify;"><strong>&lt;CR&gt;</strong> : Caractère de retour chariot : Sa valeur ASCII en décimal est fixée à 13 par défaut. (et peut être changée grâce au paramètre AT S3) Sa valeur hexadécimale quant à elle est 0x0D.</p>
<p style="text-align: justify;"><strong>&lt;LF&gt;</strong> : Caractère d’interligne : Sa valeur ASCII en décimal est fixée à 10 par défaut</p>
<p style="text-align: justify;"><strong>&lt;CTRL+Z&gt;</strong> : Combinaison des touches CTRL et Z. Sa valeur hexa est 0x1A</p>
<p style="text-align: justify;">Ces caractères sont demandés et utilisés par le modem pour identifier les commandes AT. Chacune d’entre-elles utilise ces caractères de contrôle plus ou moins différemment. Voici un aperçu des différentes commandes que j’ai utilisées avec leurs caractères de contrôle.</p>
<p style="text-align: justify;"><strong>ATE0&lt;CR&gt;</strong><br />
Cette commande permet de désactiver la commande écho (ATE1 la réactive). Cela demande donc au modem de ne pas répéter systématiquement les commandes qui lui sont envoyées.</p>
<p style="text-align: justify;"><strong>AT+CMGF=1&lt;CR&gt;</strong></p>
<p style="text-align: justify;">Cette commande permet de régler le format de message pour l’envoi de SMS. Par défaut, le modem est en mode PDU (AT+CMGF=0). C&#8217;est-à-dire que l’envoi de message se fait en hexadécimal. AT+CMGF=1 permet de passer en mode texte, ce qui simplifie les manipulations de SMS.</p>
<p style="text-align: justify;"><strong>AT+CMGS=&nbsp;&raquo;06XXXXXXXX&nbsp;&raquo;&lt;CR&gt;</strong></p>
<p style="text-align: justify;">Cette commande permet de commencer la rédaction d’un SMS. On précise en argument le numéro de téléphone choisi. En retour on obtient le caractère d’invite de commande « &gt; » qui nous invite à rentrer le texte du SMS.</p>
<p style="text-align: justify;"><strong>Texte du SMS&lt;CTRL+Z&gt;&lt;CR&gt;</strong><br />
Cette fin de commande permet alors de préciser le texte et de valider l’envoi du SMS par un CTRL+Z et un retour chariot.</p>
<p style="text-align: justify;">Il est important de noter que l&#8217;envoi de la commande AT d&#8217;envoi de SMS se fait en 2 parties et pas en un coup. (j&#8217;ai testé pendant plusieurs semaines&#8230; ça ne marche pas ^^)</p>
<p style="text-align: justify;">Le modem répond à ces commandes par des messages de retour. Ces derniers indiquent si celles-ci ont été exécutées avec succès ou non. La plupart de ces réponses sont entourées des caractères <strong>&lt;CR&gt;&lt;LF&gt;</strong> Il y a toutefois des exceptions, notamment pour <strong>AT+CMGS</strong> qui renvoie <strong>+CMGS: &lt;mr&gt;</strong> ou <strong>+CMS ERROR: &lt;err&gt;</strong> Mais dans la plupart des cas les retours sont rapportés de la manière suivante :<br />
<strong>&lt;CR&gt;&lt;LF&gt;OK&lt;CR&gt;&lt;LF&gt;<br />
&lt;CR&gt;&lt;LF&gt;ERROR&lt;CR&gt;&lt;LF&gt;<br />
&lt;CR&gt;&lt;LF&gt;&#8230;&lt;CR&gt;&lt;LF&gt;</strong></p>
<p style="text-align: justify;">Ces commandes AT doivent être transmises au modem par le port série /dev/ttyS2. Il existe plusieurs façons de communiquer sur le port série :</p>
<p style="text-align: justify;"><strong>Termnetd</strong> (<a href="http://foxlx.acmesystems.it/?id=69">http://foxlx.acmesystems.it/?id=69</a>)</p>
<p style="text-align: justify;">Il s’agit d’un processus permettant de relier un port TCP/IP à un port série de manière transparente. Une fois que le deamon est lancé sur la carte fox, il est possible de se connecter depuis l’extérieur grâce à la commande telnet adress_ip_fox 7000. Le port 7000 (choisi dans la config de termnetd) redirige directement sur le port série et il est alors possible de rentrer manuellement des commandes AT et de voir leur comportement direct sur le modem. Ce programme est utile pour comprendre le fonctionnement des commandes AT.</p>
<p style="text-align: justify;"><strong>Script Chat</strong> (<a href="http://linux.about.com/od/commands/l/blcmdl8_chat.htm">http://linux.about.com/od/commands/l/blcmdl8_chat.htm</a>)<br />
Il est possible d’utiliser la commande UNIX chat permettant de dialoguer de manière automatisée avec le modem.</p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p86code15'); return false;">View Code</a> SHELL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p8615"><td class="code" id="p86code15"><pre class="shell" style="font-family:monospace;">/usr/sbin/chat -V -s -f  &amp;gt; /dev/ttyS2 &amp;lt; /dev/ttyS2 2&amp;gt;</pre></td></tr></table></div>

<p style="text-align: justify;">La réponse du modem est alors enregistrée dans le fichier de résultat choisi.</p>
<p style="text-align: justify;"><strong>Programme en C</strong><br />
Il est également possible de dialoguer avec le modem via un programme C. Le dialogue se fait alors en écrivant et en lisant sur /dev/ttyS2. La prise en main est beaucoup plus complexe que les 2 précédentes méthodes, mais permet une totale maitrise du modem.</p>
<h3 style="text-align: justify;">Développement en C</h3>
<p style="text-align: justify;">Le code pour envoyer un SMS n&#8217;est pas bien compliqué, mon but n&#8217;est pas là de copier/coller intégralement mon code, mais plutôt d&#8217;expliquer les grandes lignes son fonctionnement et de vous donner envie de bidouiller une carte fox ^^</p>
<p style="text-align: justify;">L&#8217;idée est donc d&#8217;initialiser tout d&#8217;abord la connexion série à l&#8217;aide de Termios. La documentation sur le site du constructeur regorge d&#8217;informations et propose du <a href="http://foxlx.acmesystems.it/foxlx_acmesystems_it/00035/serial_test.c">code tout fait</a> pour gérer la connexion série. Une fois la configuration réalisée (c&#8217;est très rapide à réaliser), il n&#8217;y a plus qu&#8217;à faire un write sur /dev/ttyS2</p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p86code16'); return false;">View Code</a> C</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p8616"><td class="code" id="p86code16"><pre class="c" style="font-family:monospace;"><span style="color: #993333;">char</span> command1<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">50</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #993333;">char</span> command2<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">50</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
sprintf<span style="color: #009900;">&#40;</span>command1<span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;AT+CMGS=&quot;</span><span style="color: #339933;">%</span>s<span style="color: #ff0000;">&quot;x0D&quot;</span><span style="color: #339933;">,</span> number<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
sprintf<span style="color: #009900;">&#40;</span>command2<span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;%sx1Ax0D&quot;</span><span style="color: #339933;">,</span> text<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
write <span style="color: #009900;">&#40;</span>tty_fd<span style="color: #339933;">,</span> command1<span style="color: #339933;">,</span> strlen<span style="color: #009900;">&#40;</span>command1<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
sleep<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// attend la réponse du modem afin d'envoyer la seconde partie</span>
write<span style="color: #009900;">&#40;</span>tty_fd<span style="color: #339933;">,</span>command2<span style="color: #339933;">,</span>strlen<span style="color: #009900;">&#40;</span>command2<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p style="text-align: justify;">Et le SMS est envoyé ! Après libre à vous de rajouter à la suite une lecture de la réponse du modem (gentil petit read). Dès lors il est possible de se faire une petite fonction d&#8217;envoi de SMS à partir d&#8217;arguments tels que le numéro de téléphone et le texte du message. J&#8217;en ai profité pour me rajouter un système de logs et de manipulation du modem (redémarrage, arrêt). Je me suis créé une interface web en bash (scripts cgi) et par simples appels de notre programme C il est alors possible de se construire une application métier complexe. On a plus qu&#8217;à brancher notre carte fox sur le réseau et celle-ci peut envoyer des SMS à distance de manière assistée grâce à des formulaires web !</p>
<h2 style="text-align: justify;">Préparation de la carte FOX</h2>
<p style="text-align: justify;">Dernier point de précision: au démarrage, le modem n’est pas allumé ni configuré. Il faut par conséquent créer un script de démarrage à déposer dans /etc/init.d/boottime . Voici le script que j&#8217;ai utilisé:</p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p86code17'); return false;">View Code</a> SHELL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p8617"><td class="code" id="p86code17"><pre class="shell" style="font-family:monospace;">#!/bin/sh
# démarrage du modem
setbits -p b -b 7 -s 1
# Lancement de termnetd (pour les tests)
/mnt/flash/termnetd
# Initialisation série du modem (mon petit programme d’initialisation de la connexion série)
/mnt/flash/tx/sms -init
sleep 20
# Initialisation AT du modem
/usr/sbin/chat -V -s -f /mnt/flash/tx/scripts/scriptAT.chat &amp;gt;
/dev/ttyS2 &amp;lt; /dev/ttyS2 2&amp;gt; /mnt/flash/tx/scripts/scriptAT_result.txt
# Ecriture des logs (pour le fun ^^)
echo “`date` : MODEM start” &amp;gt;&amp;gt; /mnt/flash/tx/log/fox.log</pre></td></tr></table></div>

<p style="text-align: justify;">On commence par allumer le modem, on initialise la connexion série avec le programme en C puis attend 20 secondes que le modem soit identifié sur le réseau. Le temps choisi est totalement arbitraire. Cela semble fonctionner correctement avec cette période, mais idéalement il serait intéressant d’interroger le modem pour déterminer s’il est bien connecté au réseau. Ensuite on exécute un script chat que voici :</p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p86code18'); return false;">View Code</a> SCRIPT_CHAT</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p8618"><td class="code" id="p86code18"><pre class="script_chat" style="font-family:monospace;">ABORT BUSY
ABORT 'NO CARRIER'
ABORT ERROR
'' AT
OK ATZ
OK 'ATE0'
OK 'AT+CMGF=1'
OK ''</pre></td></tr></table></div>

<p style="text-align: justify;">Ce dernier permet de désactiver l’écho afin de ne pas recevoir mes commandes en double, et permet d’activer le mode texte pour l’envoi de SMS. Par défaut l’envoi de SMS se fait en mode PDU (sous forme hexadécimale), ce qui est bien plus compliqué à utiliser. Une fois ce script exécuté, le modem est prêt à être utilisé. On peut rajouter un log à la fin pour identifier le démarrage du modem.</p>
<p style="text-align: justify;">La carte fox est une carte embarqué assez simple à prendre en main, les utilisations sont assez illimités. Le rêve de tout bidouilleur !<br />
Je songe à m&#8217;en commander une très bientôt, je ne peux pas résister à tant de potentiel de bidouille.</p>
<p style="text-align: justify;">A suivre : Comment connecter la carte fox au réseau GPRS pour pouvoir aller sur le net et envoyer des mail <img src='http://www.yoannsculo.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>

<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.yoannsculo.fr%2Finterface-gsm-sur-carte-fox-et-envoi-de-sms%2F&amp;title=Interface%20GSM%20sur%20carte%20Fox%20et%20envoi%20de%20SMS" id="wpa2a_18"><img src="http://www.yoannsculo.fr/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.yoannsculo.fr/interface-gsm-sur-carte-fox-et-envoi-de-sms/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Mon premier robot wifi</title>
		<link>http://www.yoannsculo.fr/mon-premier-robot-wifi/</link>
		<comments>http://www.yoannsculo.fr/mon-premier-robot-wifi/#comments</comments>
		<pubDate>Fri, 01 May 2009 22:35:46 +0000</pubDate>
		<dc:creator>Yoann Sculo</dc:creator>
				<category><![CDATA[Robotique]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[camera]]></category>
		<category><![CDATA[carte fox]]></category>
		<category><![CDATA[foxboard]]></category>
		<category><![CDATA[Genesis]]></category>
		<category><![CDATA[libwiimote]]></category>
		<category><![CDATA[robot]]></category>
		<category><![CDATA[wifi]]></category>
		<category><![CDATA[wiimote]]></category>

		<guid isPermaLink="false">http://www.yoannsculo.fr/?p=35</guid>
		<description><![CDATA[Voilà des années que je rêve de créer mon propre robot, j&#8217;ai enfin franchi le pas ! Je développe, depuis Février dernier et avec un autre étudiant, un robot wifi commandé par wiimote doté d&#8217;une caméra 360° pour retransmettre ce que voit le robot dans les moindres recoins. Nous utilisons une carte fox pour le [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_jade" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fwww.yoannsculo.fr%252Fmon-premier-robot-wifi%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Mon%20premier%20robot%20wifi%22%20%7D);"></div>
<p><object width="425" height="344" data="http://www.youtube.com/v/eSErBSeCOCU&amp;hl=fr&amp;fs=1" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/eSErBSeCOCU&amp;hl=fr&amp;fs=1" /><param name="allowfullscreen" value="true" /></object></p>
<p style="text-align: justify;">Voilà des années que je rêve de créer mon propre robot, j&#8217;ai enfin franchi le pas ! Je développe, depuis Février dernier et avec un autre étudiant, un robot wifi commandé par wiimote doté d&#8217;une <a href="http://eshop.acmesystems.it/?id=5" target="_self">caméra</a> 360° pour retransmettre ce que voit le robot dans les moindres recoins. Nous utilisons une <a href="http://foxlx.acmesystems.it/?id=4" target="_blank">carte fox</a> pour le coeur du robot et une carte <a href="http://www.lynxmotion.com/Product.aspx?productID=395" target="_blank">SSC-32</a> pour le contrôle des servomoteurs. Le tout relié en wifi à un PC débarqué qui s&#8217;occupe de l&#8217;envoi des commandes au robot. Une manette de wii étant reliée au PC en bluetooth pour commander le robot. Je profite donc de ce premier article pour présenter un peu ce projet, qui sera j&#8217;espère, le premier de tout une lignée.</p>
<p><span id="more-35"></span></p>
<p>J&#8217;avais la possibilité de travailler sur un projet libre sur les systèmes embarqués dans le cadre de mes études. J&#8217;ai sauté sur l&#8217;occasion pour développer le robot wifi de mes rêves. Et révélation ! Ce n&#8217;est pas aussi dur que l&#8217;on pourrait imaginer.</p>
<div id="attachment_34" class="wp-caption aligncenter" style="width: 451px"><img class="size-full wp-image-34" title="dsc06935_small" src="http://www.yoannsculo.fr/wp-content/uploads/2009/05/dsc06935_small.jpg" alt="dsc06935_small" width="441" height="331" /><p class="wp-caption-text">Notre ami le robot</p></div>
<p style="text-align: justify;">Au départ nous pensions utiliser un pc portable, lui mettre des roues et en faire un robot autonome. Nous avons réalisé :</p>
<ul style="text-align: justify;">
<li>qu&#8217;un pc tel quel n&#8217;a pas d&#8217;entrée / sorties utilisables. Il faut se concocter une carte électronique pour gérer tout ça depuis l&#8217;usb et ça revient à prendre un marteau piqueur pour écraser une mouche finalement.</li>
<li>qu&#8217;il est mieux de dissocier l&#8217;électronique logique de celle de puissance. Donc l&#8217;alimentation des servos doit se faire à part.</li>
</ul>
<p style="text-align: justify;">Par conséquent, nous avons abandonné l&#8217;idée du robot-pc et sommes passés à la carte fox, que nous connaissons déjà bien et qui bénéficie d&#8217;une multitude de ports d&#8217;entrée sortie <img src='http://www.yoannsculo.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Nettement plus intéressant pour un robot embarqué.</p>
<p style="text-align: justify;">Nous étions initialement partis sur un robot à moteurs brushless (moteurs d&#8217;avions) pour la direction. La première étape a consisté à produire un signal PWM (signal carré servant à faire marcher les moteurs). Comme de gros débutants, nous avons essayé de produire un PWM depuis la carte fox. Premier échec, la fréquence de la carte fox ne nous permettait pas de descendre en dessous de 1 seconde de sleep pour générer notre signal PWM. Ce qui était fort embêtant, vu que la période du signal recherché est de l&#8217;ordre des millisecondes. Nous avons feinté et avons travaillé directement avec les cycles d&#8217;horloge. Miracle, cela a très bien fonctionné. Nous avions notre moteur qui démarrait comme on l&#8217;entendait&#8230; sauf que malins comme nous étions nous n&#8217;avions pas pensé qu&#8217;en lançant d&#8217;autres processus le programme ne pouvait plus fonctionner. Tout notre travail était donc réduit à néant.</p>
<p style="text-align: justify;">Qu&#8217;à cela ne tienne, nous sommes passé au développement sur PIC18 pour gérer N signaux PWM en communiquant en série avec la carte fox. Malgré de nombreuses tentatives infructueuses, nous n&#8217;avons pas réussi à obtenir une communication série stable entre le PC et le PIC. Au grés de nos recherches sur Internet, nous sommes tombés sur la carte SSC-32 que l&#8217;on peut voir juste en dessous sur la photo.</p>
<p style="text-align: center;">
<div id="attachment_33" class="wp-caption aligncenter" style="width: 451px"><img class="size-full wp-image-33" title="dsc06934_small" src="http://www.yoannsculo.fr/wp-content/uploads/2009/05/dsc06934_small.jpg" alt="Intérieur du robot" width="441" height="331" /><p class="wp-caption-text">Intérieur du robot avec une vue directe sur la carte SSC-32</p></div>
<p style="text-align: justify;">Cette petite carte (pour les fainéants) sort jusqu&#8217;à 32 PWM et peut communiquer avec un PC en série par commandes ASCII. Il n&#8217;y a qu&#8217;à l&#8217;alimenter. Déjà beaucoup plus simple ! Nous sommes passés également aux servomoteurs au passage, laissant tomber les moteurs brushless, plus complexes à utiliser et beaucoup plus chers. Mais ce n&#8217;est que partie remise <img src='http://www.yoannsculo.fr/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p style="text-align: justify;">Quand nous avons pu faire bouger notre premier servo, nous nous sommes attelés au client serveur entre la fox et le pc débarqué (un eeepc). Dans l&#8217;absolu rien de bien complexe, il s&#8217;agit d&#8217;un client/serveur basique en C qui envoie les commandes à la fox qui à son tour dialogue avec la SSC-32. Le plus ajouté étant la wiimote, que nous avons choisie pour commander notre robot. Après avoir luté pour compiler la librairie <a href="http://libwiimote.sourceforge.net/" target="_blank">libwiimote</a> nous avons réussi à transmettre les infos de la manette, du PC à la fox. Miracle ! Notre robot fonctionne <img src='http://www.yoannsculo.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p style="text-align: justify;">Je vous passe les photos de notre premier prototype en carton ! Nous nous sommes créé un chassis un peu plus digne en lego et avons installé tout notre bazar. Hormis le fait que les câbles (série et Ethernet) font 3m de long (on cherche des câbles beaucoup plus courts) et qu&#8217;il est encore alimenté par fils, le robot se déplace sans problème et bouge sa caméra.</p>
<p style="text-align: justify;">J&#8217;oubliais ! Nous avons opté, bourrins que nous sommes, pour un routeur wifi branché en Ethernet à la carte fox. Il s&#8217;est avéré que la transmission du flux vidéo depuis le serveur vidéo de la fox descendait à moins d&#8217;une image par seconde lorsque nous utilisions une clé wifi usb &#8230; assez embêtant. Pas de problèmes, nous avons carrément embarqué le routeur. Maintenant, il s&#8217;avère que <a href="http://www.civade.com/2007/03/31/22-serveur-nas-linksys-nslu2-un-serveur-linux-complet-qui-consomme-5-watts" target="_blank">certains routeurs</a> peuvent carrément être utilisés comme systèmes embarqués avec un noyau linux. Donc à terme, si l&#8217;on souhaite optimiser, il faudra trouver une solution et virer soit la fox, soit le routeur pour ne pas avoir 2 fois le même appareil.</p>
<p style="text-align: justify;">Donc actuellement nous travaillons sur l&#8217;autonomie du robot, c&#8217;est à dire la mise en place de batteries pour alimenter tout ça. Nous pensons peut être également nous procurer une <a href="http://www.fon.com/fr" target="_blank">FONERA 2.0</a> pour remplacer le gros routeur. Elle ne consomme que 5 V, comme la fox, ce qui nous facilite la tâche et est carrément moins encombrante. Ensuite il va falloir résoudre un certain nombre de bugs du robot, qui a la fâcheuse habitude de recevoir des commandes fantômes et donc à faire NIMPORTE QUOI. Cela semble venir de mon code ^^ donc nous ne sommes pas perdus. L&#8217;étape suivante sera sans doute de se faire une interface sur le pc serveur débarqué et d&#8217;essayer de faire quelques bidouilles en traitement d&#8217;images pour que le robot repère un peu son entourage.</p>
<p style="text-align: justify;">Voilà pour aujourd&#8217;hui. La suite au prochain épisode !</p>
<p style="text-align: justify;">N&#8217;hésitez pas à venir réagir à cet article.</p>

<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.yoannsculo.fr%2Fmon-premier-robot-wifi%2F&amp;title=Mon%20premier%20robot%20wifi" id="wpa2a_20"><img src="http://www.yoannsculo.fr/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.yoannsculo.fr/mon-premier-robot-wifi/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>

