<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Ricardo Dias &#187; PHP</title>
	<atom:link href="http://ricardodias.wordpress.com/category/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://ricardodias.wordpress.com</link>
	<description>Informática, Robótica, Electrónica, ... Tecnologia</description>
	<lastBuildDate>Fri, 18 Dec 2009 23:46:41 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>pt</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='ricardodias.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/0d1ccd27781e92c641b217450e6dd7d4?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Ricardo Dias &#187; PHP</title>
		<link>http://ricardodias.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://ricardodias.wordpress.com/osd.xml" title="Ricardo Dias" />
		<item>
		<title>Novo material para o Projecto</title>
		<link>http://ricardodias.wordpress.com/2009/04/27/novo-material-para-o-projecto/</link>
		<comments>http://ricardodias.wordpress.com/2009/04/27/novo-material-para-o-projecto/#comments</comments>
		<pubDate>Mon, 27 Apr 2009 08:31:00 +0000</pubDate>
		<dc:creator>Ricardo Dias</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[XBee]]></category>
		<category><![CDATA[Área de Projecto]]></category>

		<guid isPermaLink="false">http://ricardodias.wordpress.com/?p=313</guid>
		<description><![CDATA[As primeiras semanas do 3º Período foram dedicadas à encomenda de material para o projecto. Com o patrocínio do Crédito Agrícola podemos concretizar o que tínhamos pensado inicialmente.
Material já recebido

Bateria de 7.2v &#8211; Alimentação do protótipo
Relés &#8211; para controlo de maiores tensões pelo Arduino
CIs L293D para controlo dos motores
2 Arduino XBee Shield
2 Xbee Series 2.5 [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ricardodias.wordpress.com&blog=5154835&post=313&subd=ricardodias&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>As primeiras semanas do 3º Período foram dedicadas à encomenda de material para o projecto. Com o patrocínio do <a href="http://www.credito-agricola.pt/" target="_blank">Crédito Agrícola</a> podemos concretizar o que tínhamos pensado inicialmente.</p>
<h4>Material já recebido</h4>
<ul>
<li>Bateria de 7.2v &#8211; Alimentação do protótipo</li>
<li>Relés &#8211; para controlo de maiores tensões pelo Arduino</li>
<li>CIs L293D para controlo dos motores</li>
<li>2 Arduino XBee Shield</li>
<li>2 Xbee Series 2.5 Pro (50mW) &#8211; potência suficiente para controlar o protótipo a 1,5Km em campo aberto.</li>
<li>Xbee Explorer USB</li>
</ul>
<div style="text-align:center;"><img class="alignnone" title="xbee" src="http://lh4.ggpht.com/_inn_7Qkw9v8/SfVpRPaqJFI/AAAAAAAAAh8/xl2-BoOZnCw/s220/DSC04347.JPG" alt="" /> <img class="alignnone" title="xbee" src="http://lh3.ggpht.com/_inn_7Qkw9v8/SfVpSKTdRcI/AAAAAAAAAiE/yRbroPCgPT4/s220/DSC04350.JPG" alt="" /></div>
<h4>Material Encomendado</h4>
<ul>
<li>Kit Pan e Tilt &#8211; para direccionar o jacto de água</li>
<li>4 Motores 7.2v (175rpm; 7,1 Kg/cm³ torque)</li>
<li>4 Suportes para os motores</li>
<li>4 Rodas &#8220;Off Road&#8221; &#8211; para andar em terreno irregular</li>
<li>Adaptadores dos motores para as rodas</li>
<li>LEDs alto brilho de várias cores + resistências</li>
</ul>
<p>Estamos ainda à espera desta última lista  de material, que deve chegar quarta-feira.<br />
Mais fotos brevemente.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ricardodias.wordpress.com/313/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ricardodias.wordpress.com/313/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ricardodias.wordpress.com/313/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ricardodias.wordpress.com/313/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ricardodias.wordpress.com/313/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ricardodias.wordpress.com/313/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ricardodias.wordpress.com/313/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ricardodias.wordpress.com/313/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ricardodias.wordpress.com/313/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ricardodias.wordpress.com/313/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ricardodias.wordpress.com&blog=5154835&post=313&subd=ricardodias&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://ricardodias.wordpress.com/2009/04/27/novo-material-para-o-projecto/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">microbyte</media:title>
		</media:content>

		<media:content url="http://lh4.ggpht.com/_inn_7Qkw9v8/SfVpRPaqJFI/AAAAAAAAAh8/xl2-BoOZnCw/s220/DSC04347.JPG" medium="image">
			<media:title type="html">xbee</media:title>
		</media:content>

		<media:content url="http://lh3.ggpht.com/_inn_7Qkw9v8/SfVpSKTdRcI/AAAAAAAAAiE/yRbroPCgPT4/s220/DSC04350.JPG" medium="image">
			<media:title type="html">xbee</media:title>
		</media:content>
	</item>
		<item>
		<title>Arduino e PHP</title>
		<link>http://ricardodias.wordpress.com/2008/12/01/arduino-e-php/</link>
		<comments>http://ricardodias.wordpress.com/2008/12/01/arduino-e-php/#comments</comments>
		<pubDate>Mon, 01 Dec 2008 19:32:29 +0000</pubDate>
		<dc:creator>Ricardo Dias</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://ricardodias.wordpress.com/?p=145</guid>
		<description><![CDATA[O PHP é uma linguagem muito versátil, utilizada sobretudo em aplicações Web. Foi a primeira linguagem que aprendi e é sem dúvida a minha preferida até agora. Tendo umas bases de programação, é relativamente fácil aprender esta linguagem. Para mais informações, vejam nos &#8220;Links Relacionados&#8221; no final do artigo.
Este artigo não é uma introdução ao [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ricardodias.wordpress.com&blog=5154835&post=145&subd=ricardodias&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><img class="alignleft" title="php" src="http://img231.imageshack.us/img231/6906/phprj0.gif" alt="" width="120" height="67" />O PHP é uma linguagem muito versátil, utilizada sobretudo em aplicações Web. Foi a primeira linguagem que aprendi e é sem dúvida a minha preferida até agora. Tendo umas bases de programação, é relativamente fácil aprender esta linguagem. Para mais informações, vejam nos &#8220;Links Relacionados&#8221; no final do artigo.</p>
<p>Este artigo não é uma introdução ao PHP, é recomendado um conhecimento prévio básico. De qualquer forma, pode ser um ponto de parida para a aprendizagem de uma nova linguagem de programação. Vou tentar ser o mais explicativo possível, mas se tiverem dúvidas, não hesitem em colocá-las nos comentários deste artigo.</p>
<p>Além disto, apesar deste tutorial ser uma implementação do PHP no Arduino, funcionará (com as devidas alterações) com qualquer outra linguagem que faça comunicação pela porta Serial.</p>
<p><span id="more-145"></span>Chega de conversa, vamos pôr mãos à obra. Vou dividir o artigo em duas partes:</p>
<ul>
<li>Aprender a comunicar com o Arduino usando o PHP</li>
<li>Pôr Arduino a comunicar com o PHP e vice-versa</li>
</ul>
<h2>Introdução</h2>
<p>Normalmente não podemos aceder directamente aos dispositivos USB como fazemos para enviar dados para a impressora ou porta COM. Para a maiorida dos dispositivos é necessário um driver especial. Felizmente, os designers do Arduino fizeram a ligação por USB um pouco diferente. O Arduino funciona através de um controlador Serial por USB, o que significa que podes abrir uma porta USB e enviar dados directamente para o Arduino, tal como fazemos com a porta LPT ou COM. É exactamente isso que pretendemos fazer: enviar dados do PHP para o Arduino e processá-la sem ser necessário qualquer driver que falei à pouco.</p>
<p><a href="http://arduino.cc/en/uploads/Guide/device-manager.png"><img class="alignleft" title="Device Manager" src="http://arduino.cc/en/uploads/Guide/device-manager.png" border="0" alt="" width="150" /></a></p>
<p>Vou então explicar como se enviar dados para uma porta USB através do PHP. O nosso Arduino corresponde a uma porta COM. Para saber o número dessa porta, basta abrir o <strong>Gestor de Tarefas</strong>, no <strong>Painel de Controlo</strong>. (Clica na figura ao lado para aumentá-la).</p>
<p>Procura um &#8220;USB Serial Port&#8221; (O meu XP está em Inglês) &#8211; é o teu Arduino &#8211; tem um COMX, em que X é o número da porta COM.</p>
<p>Agora vamos ao código PHP utilizado para enviar dados pela porta COM. Reparem no código a seguir:</p>
<pre>$fp = fopen("com5", "w");
fwrite($fp, chr(1));
flose($fp);</pre>
<p>Primeiro usamos a função fopen para abrir ligação com a porta e declaramos a função fp, usando o comando <strong>W</strong>, o que indica ao PHP que vamos escrever (<strong>W</strong>rite, em inglês).</p>
<p>De seguida, usamos a função fwrite. Como já devem ter percebido é usada para enviar os dados. Dentro da função indicamos a ligação (definida na variável fp) e enviamos o caracter &#8220;1&#8243;. Reparem na função chr() &#8211; não podemos apenas enviar o valor inteiro, temos de o encriptar em ASCII, que é o que faz a função chr().</p>
<p>No final fechamos a ligação. É muito importante que fechemos a ligação no final de enviarmos os dados que queremos.</p>
<p>Resumindo:</p>
<ol>
<li>Abrimos ligação para a porta COM do Arduino</li>
<li>Enviamos os dados</li>
<li>Fechamos a ligação</li>
</ol>
<h2>Código!!!</h2>
<p>Agora vamos à programação do Arduino. O que vou mostrar aqui é uma forma de testar se a ligação está correcta. Vamos fazer um programa simples: se o valor inteiro que enviarmos for 1, irá piscar 1 vez, se for 2, irá piscar 2 vezes.</p>
<pre>int ledPin = 13;
int usbnumber = 0;
void setup() {
    pinMode(ledPin, OUTPUT);
    Serial.begin(9600);
}

void loop() {
    if (Serial.available() &gt; 0) {
        usbnumber = Serial.read();
    }

    if (usbnumber &gt; 0) {
        if (usbnumber == 1){
            digitalWrite(ledPin, HIGH);
            delay(300);
            digitalWrite(ledPin, LOW);
            delay(300);
        }
        if (usbnumber == 2){
            digitalWrite(ledPin, HIGH);
            delay(300);
            digitalWrite(ledPin, LOW);
            delay(300);
            digitalWrite(ledPin, HIGH);
            delay(300);
            digitalWrite(ledPin, LOW);
            delay(300);        }
        }
        usbnumber = 0;
    }
}</pre>
<p>Vamos devagar. Não se deixem intimidar pela extensão do código.</p>
<p>Antes do setup definimos que vamos usar o pino 13 do Arduino para ligar o LED. Para além disso iniciamos a variável que vai &#8220;carregar&#8221; o número lido por USB.</p>
<p>No setup definimos que o pino do LED vai ser um output e iniciamos a ligação Serial.</p>
<p>No loop, o Arduino verifica se há algum dado novo recebido. Se houver, vamos passar esse dado para a nossa variável <strong>usbnumber</strong>. Depois vemos se a variável é maior que zero; se for, sabemos que recebeu algum dado. Segue-se uma simples condição.</p>
<p>Até agora temos o código do Arduino. Vamos contruír código PHP!</p>
<pre>$fp =fopen("com5", "w");
while (true){
    $i = 1;
    echo "Enviado o valor 1 - o LED deve piscar 1 vez \r\n";
    fwrite($fp, chr($i));
    sleep(3);

    $i = 2;
    echo "Enviado o valor 2 - o LED deve piscar 2 vezes \r\n";
    fwrite($fp, chr($i));
    sleep(3);
}
fclose($fp);</pre>
<p>Nada de novo. Tal e qual como no exemplo anterior. A nova parte é o loop, que contém o número que enviamos por Serial.</p>
<p>O código é simples: vai alternando o valor da variável entre 1 e 2. Depois escreve alguma informação na consola, espera 3 segundos e volta a repetir o Loop.</p>
<h2>Os últimos bits</h2>
<ol>
<li>Fazer <em>upload</em> do código do Arduino para o Arduino</li>
<li>Correr o código PHP</li>
</ol>
<p>Penso que quanto ao primeiro passo não há dúvidas.<br />
Apenas o segundo pode suscitar algumas dúvidas, mas vou tentar explicar como fazê-lo. Vamos supor que eu fiz o download do PHP para o Windows e fiz unzip para <strong>C:/php</strong>. Entro na linha de comandos do Windows, mudo a directoria para c:/php e escrevo</p>
<p><code>php c:/path/to/usb/php/script.php</code></p>
<p>Feito! Deita olho ao LED do Arduino e repara na informação na Janela da Consola.</p>
<p>Já sabem que gosto de saber a vossa opinião sobre o que escrevo, portanto deixem o vosso comentário.</p>
<h2>Links Relacionados</h2>
<p><a href="http://www.php.net/">http://www.php.net/</a> &#8211; Site oficial do PHP; tem toda a informação sobre funções de origem e suas sintaxes</p>
<p><a href="http://www.arduinoprojects.com/?q=node/10">http://www.arduinoprojects.com/?q=node/10</a></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ricardodias.wordpress.com/145/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ricardodias.wordpress.com/145/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ricardodias.wordpress.com/145/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ricardodias.wordpress.com/145/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ricardodias.wordpress.com/145/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ricardodias.wordpress.com/145/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ricardodias.wordpress.com/145/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ricardodias.wordpress.com/145/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ricardodias.wordpress.com/145/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ricardodias.wordpress.com/145/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ricardodias.wordpress.com&blog=5154835&post=145&subd=ricardodias&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://ricardodias.wordpress.com/2008/12/01/arduino-e-php/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">microbyte</media:title>
		</media:content>

		<media:content url="http://img231.imageshack.us/img231/6906/phprj0.gif" medium="image">
			<media:title type="html">php</media:title>
		</media:content>

		<media:content url="http://arduino.cc/en/uploads/Guide/device-manager.png" medium="image">
			<media:title type="html">Device Manager</media:title>
		</media:content>
	</item>
	</channel>
</rss>