LusoRobótica - Robótica em Português

Robótica => Projectos de robótica => Projectos em desenvolvimento => Tópico iniciado por: metRo_ em 05 de Agosto de 2009, 01:15

Título: metRoNET [Em Desenvolvimento]
Enviado por: metRo_ em 05 de Agosto de 2009, 01:15
Olá,
Começa hoje, porque finalmente recebi o material que faltava, um novo projecto meu.


Motivação

Quero fazer este projecto para poder estudar os vários componentes e conseguir interacção entre eles.


Ideia

O projecto vai consistir na criação de um dispositivo sem fios para ver informação vinda da Internet como por exemplo noticias, rss's, informações do fórum LusoRobótica :), entre outros.

O projecto vai consistir em dois módulos:
  
    - Um ligado à rede através do Ethernet Shield, com uma memória 24LC512 e um módulo RFM12.
    - Dispositivo portátil com módulo RFM12,  memória 24LC512 e um LCD YM1602C 16x2 (Compatível HD44780).

(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Flh5.ggpht.com%2F_i2teYMYP9C0%2FSnjKjTBjSZI%2FAAAAAAAAAvE%2FZiyW85GcX0M%2Fs800%2Finfo1.jpg&hash=d8089dc94b7f96044b35601968364ee59ffdd14f) (http://picasaweb.google.com/josescxavier/MiniInternetPortatil#5366261663762958738)
Este esquema pretende demonstrar a minha ideia.


Material Utilizado e Documentação



Progresso



Problemas



Notas

O nome pode sofrer alterações a qualquer momento :D
Título: Re:metRoNET
Enviado por: ghostbuster em 05 de Agosto de 2009, 01:30
trocares o ethernet shield por um Fonera ja era fixe :p
Título: Re:metRoNET
Enviado por: metRo_ em 05 de Agosto de 2009, 01:34
trocares o ethernet shield por um Fonera ja era fixe :p

Para isso já nem precisava de dois módulos, bastava um com arduino, fonera e LCD. Para já o me objectivo são mesmo estes componentes.
Título: Re:metRoNET
Enviado por: TigPT em 05 de Agosto de 2009, 12:36
Acrescenta ai que o 24LC512 é uma eeprom que nem todos os leitores sabem ;)

Boa sorte com o projecto, no que poder ajudar, principalmente de ethernet shield, podes contar cmg.
Título: Re:metRoNET
Enviado por: ricardo-reis em 05 de Agosto de 2009, 12:47
acho que basta fazer referencia ao topico do tr3s, de como ligar uma eeprom ao arduino.. a que ele usou é de 256kb, mas de resto, é tudo igual.. :)
Título: Re:metRoNET
Enviado por: tcustodio em 05 de Agosto de 2009, 15:56
  • Ligar o Ethernet Shield e o RFM12 pois ambos usam SPI.

uns multiplexadores deverão auxiliar-te nesse problema  ;D
Título: Re:metRoNET
Enviado por: msr em 05 de Agosto de 2009, 23:48
Nao sei se ja conheces, aqui esta um projecto algo parecido ao que queres:
http://mightyohm.com/blog/2008/10/building-a-wifi-radio-part-1-introduction/

Neste caso a info a enviar são as streams das rádios online. Mesmo niceeee!
Título: Re:metRoNET
Enviado por: metRo_ em 07 de Agosto de 2009, 02:03
  • Ligar o Ethernet Shield e o RFM12 pois ambos usam SPI.

uns multiplexadores deverão auxiliar-te nesse problema  ;D

Essa situação eu sei, aliás caso seja necessário tenho por cá :) Queria ver se consegui dar a volta com SlaveSelect.

Nao sei se ja conheces, aqui esta um projecto algo parecido ao que queres:
http://mightyohm.com/blog/2008/10/building-a-wifi-radio-part-1-introduction/

Neste caso a info a enviar são as streams das rádios online. Mesmo niceeee!

Tenho que ler com mais atenção.
Título: metRoNET [Em Desenvolvimento] - Ethernet Shield
Enviado por: metRo_ em 09 de Agosto de 2009, 03:07
Ethernet Shield Testes

Já fiz alguns testes ao Ethernet Shield (http://arduino.cc/en/Main/ArduinoEthernetShield) e correu bem.

Seguindo o exemplo WebClient que é fornecido com a biblioteca foi simples implementar o necessário.

Quando nós nos nossos computadores tentamos aceder a um site somos clientes do site que está alojado num servidor e então quando nos dirigimos a esse servidor este envia-nos a informação que contém no servidor relativa ao site em questão que depois é analisada pelos nossos browsers e apresentada de forma perceptível.

O Arduino quando está como WebClient comunica com um determinado servidor e recebe a informação, no entanto somos nós que vamos ter que interpretar essa informação.

Vamos usar o Arduino para abrir a página de RSS (http://pt.wikipedia.org/wiki/RSS) do LusoRobótica (http://www.lusorobotica.com) http://www.lusorobotica.com/index.php?type=rss;action=.xml

Como não sei se é possivel colocar o link todo vou fazer como está no exemplo em que digo qual o servidor da página e depois o localização dentro do servidor. Para saberem o ip de uma página basta ir à linha de comandos e fazer ping a essa página ou então num site desde genéro (http://www.selfseo.com/find_ip_address_of_a_website.php).

Nesta imagem temos um exemplo do que o Arduino leu ao abrir o RSS (http://pt.wikipedia.org/wiki/RSS) http://www.lusorobotica.com/index.php?type=rss;action=.xml

(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Flh5.ggpht.com%2F_i2teYMYP9C0%2FSn4pZ7mjsbI%2FAAAAAAAAAww%2F-LxzYNg3U3c%2Fs400%2FCaptura%2520de%2520ecr%25C3%25A3%2520total%252009-08-2009%2520022604.jpg&hash=d6dcde9120c37782fe208054311c3fa720582554) (http://picasaweb.google.com/josescxavier/MetRoNET#5367773331345093042)

Podemos ver na consola nas duas primeiras linhas a informação de ele estar a conectar ao servidor e depois a informação que aparece é a informação vinda do servidor, é o código fonte da página (html).

Como podem ver era muita informação, no entanto obdece a norma RSS (http://pt.wikipedia.org/wiki/RSS) por isso está organizada no entanto seria na mesma muita informação para ser consumida pelo Arduino. Por isso decidi criar uma página em PHP (http://www.w3schools.com/PHP/) para organizar a informação que quero do RSS (http://pt.wikipedia.org/wiki/RSS).

O meu PHP é o seguinte:

Código: [Seleccione]
<head>
<title>Jose Xavier</title>
<META HTTP-EQUIV="Content-Type" content="text/html; charset=windows-1252">
</head>

<?php
$xml 
simplexml_load_file("http://www.lusorobotica.com/index.php?type=rss;action=.xml");

foreach(
$xml->children() as $child)
  {
foreach($child->children() as $child1)
{
foreach($child1->children() as $child2)
{
if($child2->getName()=="title") echo "<titlo>".utf8_decode($child2)."</titlo>";
}
}
  }
?>

Basicamente este php abre o RSS procura pelo nó title e imprime estes nós separando-os pela tag <titulo>.

Este ficheiro está no seguinte link: http://78.46.77.43/~deseoinf/arduino/teste7.php

Agora vamos às configurações dos parâmetros do Ethernet Shield (http://arduino.cc/en/Main/ArduinoEthernetShield) usando como base o exemplo WebClient. Este exemplo está feito para trabalhar dentro de uma rede por isso é necessário acrescentar os campos:
Citar
byte gateway[] = { 192, 168, 1, 1 };
byte subnet[] = { 255, 255, 255, 0 };
Isto serve para o Ethernet saber por onde sair da rede local para o mundo :D Depois acrescentamos estes argumentos em:  
Citar
Ethernet.begin(mac, ip, gateway, subnet);
Ficando o código como mostrado em baixo:

Código: [Seleccione]
#include <Ethernet.h>

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 1, 250 };
byte server[] = { 78, 46, 77, 43 }; // Ip do servidor onde temos a página
byte gateway[] = { 192, 168, 1, 1 };
byte subnet[] = { 255, 255, 255, 0 };
Client client(server, 80);

void setup()
{
  Ethernet.begin(mac, ip, gateway, subnet);
  Serial.begin(9600);
  delay(1000);
  Serial.println("connecting...");
  
  if (client.connect()) {
    Serial.println("connected");
    client.println("GET /~deseoinf/arduino/teste7.php HTTP/1.0");
    client.println();
  } else {
    Serial.println("connection failed");
  }
}

void loop()
{
  if (client.available()) {
    char c = client.read();
    Serial.print(c);
  }
  
  if (!client.connected()) {
    Serial.println();
    Serial.println("disconnecting.");
    client.stop();
    for(;;)
      ;
  }
}

Agora o Arduino ao se ligar ao servidor já só recebe a informação que eu defini:

(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Flh3.ggpht.com%2F_i2teYMYP9C0%2FSn4thTGXC5I%2FAAAAAAAAAw0%2FEmHOdrrDeGI%2Fs400%2FCaptura%2520de%2520ecr%25C3%25A3%2520total%252009-08-2009%2520022807.jpg&hash=adad709a6bfc109266077f4fce00cb5a88d6362d) (http://picasaweb.google.com/josescxavier/MetRoNET#5367777855958092690)

Agora falta analisar esta informação no Arduino para recolher o que nos interessa e é simples pois temos os títulos divididos pela tag <titulo> como podem ver na imagem.

Quero agradecer ao TigPT pela ajuda em relação ao Ethernet Shield (http://arduino.cc/en/Main/ArduinoEthernetShield).


Notas

Foi acrescentado ao site inicial a documentação dos componentes assim como tutoriais.
Título: Re:metRoNET [Em Desenvolvimento]
Enviado por: TigPT em 09 de Agosto de 2009, 12:42
Está quase tudo operacional :P Força nisso.
Título: Re:metRoNET [Em Desenvolvimento]
Enviado por: ricardo-reis em 09 de Agosto de 2009, 14:49
nice, sr metro.. já falta pouco.. ;)
Título: Re:metRoNET [Em Desenvolvimento]
Enviado por: metRo_ em 09 de Agosto de 2009, 17:11
Bem, vou de férias por isso agora só daqui a uns dias. :)