19/06/2013

  • Atualizado Biblioteca WiFlyHQmaster
  • Atualizado Código Exemplo

O WifiShield é um Shield desenvolvido pelo LdG para acoplar o módulo Wifly da empresa Roving Netwoks. Este Shield funciona como o Ethernet Shield, mas a vantagem é que não tem cabo e é muito fácil implementá-lo e utilizálo! É apenas acoplar o módulo Wifly no WifiShield, depois no Arduino, configurá-lo e pronto!

O modulo Wifly é baseado no robusto RN-171 que incorpora IEEE 802.11b/g, processador de 32 bits, pilha TCP/IP, real time, unidade de gerenciamento de alimentação e entradas para sensores analógicos, carrega um firmware desenvolvido pelo fabricante que facilita a integração e minimiza o tempo de desenvolvimento. Neste modelo utilizado, o módulo necessita de apenas quatro conexões (PWR, TX, RX e GND) para criar uma conexão de dados sem fio.

Para este tutorial será preciso instalar as bibliotecas clicando nos links abaixo,:

WiFlyHQmaster

Streaming3

Pstring5

Time

Primeiros passos.

Neste tutorial mostraremos como fazer uma conexão como Client em uma pagina HTML.

Primeiramente baixar as bibliotecas citadas acima. Depois abra o exemplo “ httpclient.ino” fornecido  na biblioteca WiflyHQ e mude alguns parâmetros no Sketch, conforme abaixo:

1ª Trocar os pinos da serial SoftwareSerial wifiSerial(8,9); para SoftwareSerial wifiSerial(4,5);

São os pinos serial que o arduino se comunica com WiFly.

2ª Preencher os dados de sua rede como Nome e Senha.

const char mySSID[] = "nome da rede WiFi";

const char myPassword[] = "senha da rede WiFi";

 

3º Clique em Upload para passar a programação para o Arduino;

4º Abra o SerialMonitor e configure a serial para 115200 baud;

No terminal você deverá ter este resultado como mostrado abaixo.

Fig 3 Serial Terminal


Funcionamento deste programa:

Este software configura o modulo WiFly para se conectar a rede Wi-Fi indicada pelo programa, após esta conexão estabelecida ele enviará um comando “GET” para as páginas determinadas pelo código abaixo.


Código:


//
carrega as bibliotecas

#include <WiFlyHQ.h>
#include <SoftwareSerial.h>

//define os pinos utilizados pela serial
SoftwareSerial wifiSerial(4,5);

//cria uma instancia chamada wifly
WiFly wifly;

/* trocar os dados com os de sua Rede WiFi*/
const char mySSID[] = "teste"; //Troque o teste pelo nome da sua rede wifi
const char myPassword[] = "teste"; //Troque o teste pela senha da sua rede wifi

/*Pagina a ser carregada*/
const char site[] = "www.labdegaragem.com";
//const char site[] = "arduino.cc";
//const char site[] = "www.google.co.nz";
//const char site[] = "hunt.net.nz";

void setup()
{
char buf[32];//define o tipo e tamanho da variável buf
//define a velocidade da porta serial do Monitor
Serial.begin(115200);
Serial.println("Starting");
Serial.print("Free memory: ");
Serial.println(wifly.getFreeMemory(),DEC);
//define a velocidade da porta serial do WiFly
wifiSerial.begin(9600);
//Inicializa o modulo WiFly
if (!wifly.begin(&wifiSerial, &Serial)) {
Serial.println("Failed to start wifly");
terminal();
}
/*associa-se a uma rede WiFi se não associado*/
if (!wifly.isAssociated()) {

/*carrega os parâmetros da rede WiFi, informados anteriormente*/
Serial.println("Joining network");
wifly.setSSID(mySSID);
wifly.setPassphrase(myPassword);
wifly.enableDHCP();
//se conecta na rede WiFi
if (wifly.join()) {
Serial.println("Joined wifi network");
}
else {
Serial.println("Failed to join wifi network");
terminal();
}}
else {
Serial.println("Already joined network");
}
//terminal();
Serial.print("MAC: "); //mostra o endereço MAC do Modulo
Serial.println(wifly.getMAC(buf, sizeof(buf)));
Serial.print("IP: ");//mostra o endereço IP
Serial.println(wifly.getIP(buf, sizeof(buf)));
Serial.print("Netmask: ");//mostra a Mascara de Rede
Serial.println(wifly.getNetmask(buf, sizeof(buf)));
Serial.print("Gateway: ");//mostra o endereço do Gateway
Serial.println(wifly.getGateway(buf, sizeof(buf)));

wifly.setDeviceID("Wifly-WebClient");
Serial.print("DeviceID: ");
Serial.println(wifly.getDeviceID(buf, sizeof(buf)));

if (wifly.isConnected()) { //fechar conexão anterior caso esteja aberta
Serial.println("Old connection active. Closing");
wifly.close();
}
/*manda uma requisição para pagina caso esteja conectado*/
if (wifly.open(site, 80)) {
Serial.print("Connected to ");
Serial.println(site);

wifly.println("GET / HTTP/1.0");
wifly.println();
}
else {
Serial.println("Failed to connect");
}
}

void loop()
{   //lê a porta serial do WiFi e imprime o resultado no terminal
if (wifly.available()) {
char ch = wifly.read();
Serial.write(ch);
if (ch == '\n') {
/*adiciona uma nova linha*/
Serial.write('\r');
} }
if (Serial.available() > 0) {
wifly.write(Serial.read());
}}
/* Conecta o modulo WiFly,  com o serial monitor. */
void terminal()
{
while (1) {
if (wifly.available() > 0) {
Serial.write(wifly.read());
}
if (Serial.available() > 0) {
wifly.write(Serial.read());
}}}

 

 

E é isso aí!! Boa diversão!!! Caso tenham dúvidas, poste aqui no blog! Para sugestões, clique aqui! Para ver outros tutoriais, clique aqui e projetos abertos, clicando aqui!



Referencias:

http://www.sparkfun.com/products/10822

https://github.com/harlequin-tech

http://rovingnetworks.com/products/RN_XV

WiflyHQ -
https://github.com/harlequin-tech/WiFlyHQ

Streaming3 -
http://arduiniana.org/libraries/streaming/

Pstring5 -
http://arduiniana.org/libraries/pstring/

Time -http://arduino.cc/playground/Code/Time



Exibições: 8741

Comentar

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)

Comentário de André Gomes de Lira Muniz em 31 outubro 2012 às 18:02
Primeiramente parabéns pela postagem.
Lendo o post surgiu a seguinte duvida. Consigo realizar a comunicação do WiFiShield com 2 servidores H.A?

Obrigado pela atenção,
André de Lira

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço