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

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 José Martínez em 9 outubro 2015 às 17:51

Boa tarde pessoal do Labdegaragem!

Estou tendo o mesmo problema comentádo pelo Ghibson Patrick Correa em 27 outubro 2014 às 23:39, infelizmente não consegui resposta alguma...

Estou tentando conectar o WIFISHIELD da LAB de Garagem junto com o Arduino Mega 2560 e o porto serial indica:

Inicializando
Memoria livre: 6573
setPrompt failed
Failed to enter command mode
Falha ao inicializar o wifly
Terminal ready

O Arduino Mega tem algum problema de incompatibilidade com o WIFISHIELD de vocês?

Se tiverem alguma dica, ficaremos gratos...

Obrigado

Jose Martinez

Comentário de Bruno Cândido em 17 março 2015 às 11:44

essa biblioteca e toda programação serve pra esse wifi shield?

Comentário de Márlison de Sá Rêgo em 28 outubro 2014 às 9:38

Estou usando a placa aqui do lab de garagem mesmo, junto com um arduino uno rev.3

Comentário de Ghibson Patrick Correa em 28 outubro 2014 às 9:21

Então, aqui é tudo junto, antes era separado tbm, imaginei q podia ser o problema... e alterei o nome da minha rede porém os mesmo problemas... eu to pensando q o meu caso é essa placa xBee q está me atrapalhando, alguma incompatibilidade ou algo assim... vc qual placa para acoplar a shield?? a do LdG msm?

Comentário de Márlison de Sá Rêgo em 28 outubro 2014 às 9:16

Essa mesma página em que estamos passou por uma atualização... trocaram as bibliotecas...

Consegui conectar o meu agora! Usei esse tutorial: http://labdegaragem.com/profiles/blogs/tutorial-utilizando-o-wifish....

Parece que ele não entende se a rede tiver o nome tipo: xxxxx-xxxxx.

Só entende se estiver td junto. Não sei como contornar isso sem precisar alterar o nome da rede wifi.

O problema pode ser esse. Tua rede é tudo junto ou tem um separador tipo: GVT- xxxx   ?

Em casa minha rede tem separador e não consegui conectar, aqui na facul a pouco usei uma rede sem separador e funcionou.

 

Comentário de Ghibson Patrick Correa em 28 outubro 2014 às 8:17

hmmm... entendo... mas o engraçado é q nem no modo de comando eu consigo associar a rede Márlison, ela não associa...

que post anterior é esse que voce faloou?

Comentário de Márlison de Sá Rêgo em 28 outubro 2014 às 7:26

Fale Ghilbson, estou com o mesmo erro do seu. O interessante que com o post anterior do lab de garagem sobre este shield ele funcionava normalmente. Acredito que esteja relacionado com a biblioteca WiFlyHQ ou com o nome da minha rede.

Comentário de Ghibson Patrick Correa em 27 outubro 2014 às 23:39

Fala pessoal!

estou elaborando um projeto de TCC e estou tendo problemas com a configuração da minha Shield, já dei uma olhada no post, tentei seguir algumas dicas daqui mas nada com sucesso...

Usando o sketch do post a unica coisa que acontece é a seguinte:

e entrando no modo de configuração no serial monitor acontece o seguinte, consigo ver as redes disponiveis porém não consigo conectar à rede,  quando dou comando save e depois reboot a unica coisa que o monitor retorna é isso:

estou usando o Arguino MEGA 2560

WifiShield RN XV 171 e placa Xbee para acoplar a shield wif ao arduino.

Alguem pode me ajudar??? será q o problema está neste Xbee? algo relacionado a compatibilidade??

desde já agradeço.

Comentário de Leandro Gonçalves em 24 setembro 2013 às 20:19

Alguém conseguiu utilizar esta shield com o arduino due?

Por diversas buscas já vi comentários que é possível, outros que não há libraries para suporte e mesmo usando a WiFlySerial1 fornecida na internet, parece que há uma alteração dos pinos padrão da RN-XV (pelo menos é o único motivo que vejo para não funcionar)

Comentário de Lucas Correa em 29 agosto 2013 às 21:10

Um problema que tenho com esse shield é se o nome do SSID for com espaço ou com caracteres como : \ / _ ele nao consegui conectar se eu mudo para um nome simples uma palavra ai ele conecta alguem sabe me dizer o porque? Obrigado.

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço