19/06/2013
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,:
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.
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
Comentar
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
Estou usando a placa aqui do lab de garagem mesmo, junto com um arduino uno rev.3
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?
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.
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?
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.
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.
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)
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.
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)