• Welcome to LusoRobótica - Robótica em Português.
 

metRoNET [Em Desenvolvimento]

Started by metRo_, 05 de August de 2009, 01:15

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

metRo_

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).


Este esquema pretende demonstrar a minha ideia.



Material Utilizado e Documentação




Progresso


  • Ethernet Shield
  • LCD YM1602C 16x2 (Compatível HD44780)
    • 99%
    • Em relação aos LCD's já há utilizadores como o ricardo-reis e o tcustodio que já reviraram os LCD's por isso parece que não será necessário inventar muito, de qualquer das maneiras quero perceber o seu funcionamento, mesmo assim diria que em relação a isto 99% do trabalho está feito.
  • RFM12-868D
    • 65%
    • Já fiz alguns testes e correu bem.
  • Arduino
    • 99%
    • Não consigo identificar o que sei e o que não sei no entanto não penso ser aqui o meu problema por isso para o necessário está ok.
  • 24LC512
    • 99%
    • Para o que o projecto necessita está em cerca de 99%



Problemas


  • Ligar o Ethernet Shield e o RFM12 pois ambos usam SPI.



Notas

O nome pode sofrer alterações a qualquer momento :D

ghostbuster

trocares o ethernet shield por um Fonera ja era fixe :p

metRo_

Quote from: ghostbuster on 05 de August de 2009, 01:30
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.

TigPT

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.

ricardo-reis

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.. :)

tcustodio

Quote from: metRo_ on 05 de August de 2009, 01:15

  • Ligar o Ethernet Shield e o RFM12 pois ambos usam SPI.

uns multiplexadores deverão auxiliar-te nesse problema  ;D
Tiago Custódio,
- Não me dêem álcool se estiver um piano por perto.

msr

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!

metRo_

Quote from: tcustodio on 05 de August de 2009, 15:56
Quote from: metRo_ on 05 de August de 2009, 01:15

  • 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.

Quote from: msr on 05 de August 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!

Tenho que ler com mais atenção.

metRo_

#8
Ethernet Shield Testes

Já fiz alguns testes ao Ethernet Shield 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 do LusoRobótica 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.

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


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 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 para organizar a informação que quero do RSS.

O meu PHP é o seguinte:

<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 usando como base o exemplo WebClient. Este exemplo está feito para trabalhar dentro de uma rede por isso é necessário acrescentar os campos:
Quotebyte 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:  
QuoteEthernet.begin(mac, ip, gateway, subnet);
Ficando o código como mostrado em baixo:

#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:


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.



Notas

Foi acrescentado ao site inicial a documentação dos componentes assim como tutoriais.

TigPT

Está quase tudo operacional :P Força nisso.

ricardo-reis

nice, sr metro.. já falta pouco.. ;)

metRo_

Bem, vou de férias por isso agora só daqui a uns dias. :)