O projeto em questão usa um Arduino Duemilanove para servir uma página na internet. Através dessa página o visitante pode deixar um recado que será postado em uma conta no twitter, e posteriormente poderá conferir através de um link se seu recado foi postado corretamente. O arduino emitira um som dizendo que alguém usou o serviço. O layout da página que fiz pode ser visto na figura abaixo, fique a vontade para mudar!
Para fazer esse projeto você precisará de:
1-Arduino Duemilanove;
2-Arduino Ethernet Shield com chip color:black;mso-ansi-language:PT-BR"">Wiznet W5100 (outro serve, mas não tenho o
código pra ele);
3-Roteador com função DDNS (se quiser deixar o nome da página de forma elegante);
4-Um buzzer (opcional).
A primeira coisa a fazer é criar uma conta no twitter. Se você já tiver uma,
recomendo criar uma segunda dedicada ao projeto, afim de evitar problemas de
privacidade.
Entre na página http://arduino-tweet.appspot.com/ e pegue o token, uma espécie de chave que lhe dará permissão para postar no twitter através do arduino. Ainda nessa página, baixe as duas bibliotecas Arduino Tweet Library e Arduino Ethernet Library, que estão no campo "Step2: Add some Libraries to your Arduino IDE."
Agora baixe as bibliotecas String e Ethernet na página http://arduino.cc/en/Reference/Libraries.
Nesse momento você está apto a tentar compilar o código abaixo:
*****************************************************************************************************
#include <WString.h>
#include <Ethernet.h>
//includes auxiliares para twitter
#include <EthernetDNS.h>
#include <Twitter.h>
#include <avr/wdt.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //mac
byte ip[] = { 192, 168, 1, 222 }; // ip
byte gateway[] = { 192, 168, 1, 1 }; // gateway
byte subnet[] = { 255, 255, 255, 0 }; //máscara
Server server(65000); //server port
void bip(unsigned int vezes); //faz o bip
Twitter twitter("-------aqui vc coloca seu token--------"); //permissão exclusiva para o jeffersino
char msg[140] = "cana";
int i,j=0;
int bipPin = 6;
char link[]="http://www.twitter.com/jeffersino/"; //link data
String readString = String(140); //string for fetching data from address
boolean dados = false; //LED status flag
boolean twittar = false;
void setup(){
//start Ethernet
Ethernet.begin(mac, ip, gateway, subnet);
//Set pin 7 to output
pinMode(bipPin, OUTPUT);
//enable serial datada print
Serial.begin(9600);
}
void loop()
{
//wdt_reset();
// Create a client connection
Client client = server.available();
if (client)
{
while (client.connected())
{
if (client.available())
{
//delay(1000); //pra ver se a mensagem chega completa
char c = client.read();
if(dados&&(i<140)) //so pegas dados depois de GET /?T= e se tamanho máximo 140 caracteres
{
msg[i]=c;
}
i++;
if(c=='=')
{
dados=true;
i=0;
}
//escreve na serial
Serial.print(c);
//if HTTP terminar...
if (c == '\n')
{
//twita
if(dados&&(i<140)) //pode twittar porque tem pelo menos GET /?T=
{
for(j=(i-10);j<i;j++) msg[j]=' '; //apaga HTTP/1.1 que aparece no final da string
twitter.post(msg);
int status = twitter.wait();
}else if(dados)
{
twitter.post(msg);
int status = twitter.wait();
}
// HTML
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
//set background to yellow
client.print("<body style=background-color:black>");
client.print("<title>ARDUINO</title>"); //poe o título q aparecerá na aba da página
//send first heading
client.println("<hr />");
client.println("<hr />");
client.println("<h1><center><font size=7 color=red face=Wide Latin><marquee behavior=scroll direction=left bgcolor=black width=100%> Servidor No Arduino</MARQUEE></font></center></h1>");
client.println("<hr />");
client.println("<hr />");
//coloca uma imagem hospedada em outra página
client.println("<center><img src=http://farm4.static.flickr.com/3257/3141966707_7a86e20f0c.jpg></center>");
client.println("<center><font color='green'>Deixe aqui o seu recado</font></center>");
client.println("<center><form method=get><input type=text name=T size=120></center><br>" );
client.println("<center><input type=submit value=Enviar></form></center>");
client.println("<center><font color='white'>Seu recado serah postado no twitter do Jeffersino, o Arduino do Jeff.</font></center>");
client.println("<hr />");
//escreve o que o cara twitou
if(dados)
{
client.println("<font color='darkblue' size='5'>A mensagem:");
client.println("<font color='green' size='4'><br />");
for(i=0;i<140;i++) client.print(msg[i]);//saida de dados
client.println(",");//virgula no final da mensagem postada
client.println("<br /><font color='darkblue' size='5'>");
client.println("passou pelas entranhas do Arduino e foi postada no twitter!");
client.println("<br />");
client.println("<hr />");
bip(5); //faz cinco bips
}
//link
client.println("<font color='white' size='5'>Link: ");
client.print("<a href=");
client.print(link);
client.println(">Confira se seu comentario foi postado corretamente</a>");
client.println("<hr />");
client.println("</body></html>");
//obrigado
client.println("<center><font color='yellow' size='6'>Obrigado pela visita!</font></center>");
client.println("<hr />");
dados=false;
twittar=false;
//apaga string
for(i=0;i<140;i++) msg[i]=' ';
i=0;
//stopping client
client.stop();
}
}
}
}
}
void bip(unsigned int vezes) //vezes diz quantos bips serão
{
unsigned int i,j;
for(j=0;j<vezes;j++)
{
delay(300);
for(i=0;i<1000;i++)
{
digitalWrite(bipPin, HIGH); // LED on
delayMicroseconds(100);
digitalWrite(bipPin, LOW); // LED off
delayMicroseconds(100);
}
}
}
********************************************************************************************************************
Observe que você deve fazer algumas mudanças no código: colocar o seu ip, mac, servidor dns, máscara de rede, porta e o seu token.
Lembre-se que para ser visto na internet, e não somente na rede local, você precisa ter um ip válido, ou fazer o que eu fiz: configurar o roteador onde está o ip válido a encaminhar tudo que chegar para uma determinada porta para seu ip não válido. No meu caso tudo que chega para o ip válido no meu prédio destinado a porta 65000, e reroteado para o ip 192.168.1.122, que é o meu ip não válido.
Para não ter que digitar no seu navegador algo do tipo: ipvalido.iIpvalido.ipvalido.ipvalido:porta, vá até a página http://www.dyndns.com/ cou http://www.no-ip.com/ e leia sobre DDNS. Bem legal.
Deixarei durante esse fim de semana o servidor no ar. A minha internet é lenta e vive dando problemas, mas se você quiser fazer uma visita, o link é esse: http://jeffersino.homeip.net:65000/.
Comentar
Muito bom!
Parabéns.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por
Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!
Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)