Seu Curso

  • Full Screen
  • Wide Screen
  • Narrow Screen
  • Increase font size
  • Default font size
  • Decrease font size

Como usar o Wifi Shield com o Arduino

Imprimir
Avaliação do Usuário: / 17
PiorMelhor 

Você precisará de um Arduino ou um clone seguindo o exato projeto para que o shield possa ser acoplado sem problemas.

 

 

Um Arduino:

 

 

O clone, Tatuino:

 

 

Precisará também do escudo para rede sem fios (wifi shield). Para este tutorial utilizei o shield Microchip que alé de ser baixo custo pode ser encontrado facilmente na Internet com venda pela Tato Equipamentos Eletrônicos.

 

 

Acople o shield sobre o Arduino ou o clone:

 

 

Note que sobram dois pinos, do lado dos pinos de alimentação. Minha opção foi não cortá-los, pois não na acoplagem. Mas cuidado! Caso resolva cortá-los não vá cortar pinos errados!

 

 

Obviamente também terá que ter uma rede fio composta de um access point ou roteador para que o shield possa ser conectado a ela para nossos testes.

 

Baixe a biblioteca  WiShield-master de www.seucurso.com.br/downloads/wifishield.zip.

 

Descompacte o conteúdo do arquivo baixado na pasta libraries do local onde estiver a instalação do Arduino.

 

Minha sugestão de código é usar o exemplo WebServer que é bem simples e auto explicativo. Você pode encontrá-lo no menu File, opção Examples e sub-opção wifishield:

 

 

O código é:

 

/*
 * Web Server
 *
 * A simple web server example using the WiShield 1.0
 */
 
#include <WiShield.h>
 
// Wireless configuration parameters ----------------------------------------
unsigned char local_ip[]    = {192,168,0,200};   // IP address of WiShield
unsigned char gateway_ip[]  = {192,168,0,1};   // router or gateway IP address
unsigned char subnet_mask[] = {255,255,255,0}; // subnet mask for the local network
char ssid[]                 = {"redesemfio"};   // max 32 bytes
unsigned char security_type = 3;               // 0 - open; 1 - WEP; 2 - WPA; 3 - WPA2
 
// WPA/WPA2 passphrase
const prog_char security_passphrase[] PROGMEM = {“senhadaredesemfio"}; // max 64 characters
 
// WEP 128-bit keys
prog_uchar wep_keys[] PROGMEM = { 
 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, // Key 0
 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Key 1
 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Key 2
 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // Key 3
};
 
// setup the wireless mode; infrastructure - connect to AP; adhoc - connect to another WiFi device
#define WIRELESS_MODE_INFRA 1
#define WIRELESS_MODE_ADHOC 2
unsigned char wireless_mode = WIRELESS_MODE_INFRA;
unsigned char ssid_len;
unsigned char security_passphrase_len;
// End of wireless configuration parameters ----------------------------------------
 
 
void setup()
{
 WiFi.init();
}
 
// This is the webpage that is served up by the webserver
const prog_char webpage[] PROGMEM = {"HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n
<h1>Hello World!! I am WiShield</h1>
<form action="\" method="\">Toggle LED:<input name="\" type="\" value="\" /></form>
"};
 
 
void loop()
{
 WiFi.run();
}

 

Para que esse código funcione você terá que alterar algumas variáveis para que reflitam a configuração de sua rede sem fio. Sendo elas:

 

O número IP a ser designado para seu shield:

unsigned char local_ip[]    = {192,168,0,200};

 

O número IP do gateway:

unsigned char gateway_ip[]  = {192,168,0,1};

 

A máscara de sub-rede:

unsigned char subnet_mask[] = {255,255,255,0};

 

O SSID (identificação) da sua rede:

char ssid[]                 = {“redesemfio"};

 

O tipo de segurança utilizada, sendo 0 para rede aberta (open), 1 para WEP, 2 para WPA e 3 para WPA2:

unsigned char security_type = 3;

 

A senha para sua rede sem fio, no caso deste tutorial para WPA2:

const prog_char security_passphrase[] PROGMEM = {“senhadaredesemfio”};

 

Se você ainda usa WEP, primeiro pense em mudar para WPA ou WPA2 que são criptografias mais seguras, depois se ainda assim quiser usar WEP terá que mudar a variável abaixo com as chaves em valores hexadecimais:

prog_uchar wep_keys[] PROGMEM = { 
 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, // Key 0
 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Key 1
 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Key 2
 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // Key 3
};

 

Agora é compilar e enviar para o seu Arduino. Feito isso o shield irá conectar-se em sua rede sem fio em alguns segundos e o LED indicativo de WIFI ON deve acender:

 

 

Para testá-lo entre em seu navegador de Internet preferido e aponte para o IP que designou ao seu shield:

 

 

Caso queira usar qualquer outro exemplo deste shield lembre-se de editar o arquivo apps-conf.h e comentar ou descomentar a aplicação que deseja utilizar. O código desse arquivo para este tutorial ficou como segue. Note que está descomentada a linha #define APP_WEBSERVER, pois é o exemplo que estamos utilizando. As demais continuam comentadas.

 

 
/******************************************************************************
 
 Filename: apps-conf.h
 Description: Web application configuration file
 
 ******************************************************************************
 
 TCP/IP stack and driver for the WiShield 1.0 wireless devices
 
 Copyright(c) 2009 Async Labs Inc. All rights reserved.
 
 This program is free software; you can redistribute it and/or modify it
 under the terms of version 2 of the GNU General Public License as
 published by the Free Software Foundation.
 
 This program is distributed in the hope that it will be useful, but WITHOUT
 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
 more details.
 
 You should have received a copy of the GNU General Public License along with
 this program; if not, write to the Free Software Foundation, Inc., 59
 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 
 Contact Information:
 
 
 Author               Date        Comment
 ---------------------------------------------------------------
 AsyncLabs 05/29/2009 Initial port
 
 *****************************************************************************/
 
#ifndef __APPS_CONF_H__
#define __APPS_CONF_H__
 
// ----------------------------------------------------------------------------
// -- Begin uIP/WiShield stack configuration settings
 
//
// Application type defines; uncomment to enable APP_TYPES
//   APP_UDPAPP is used for UDP only apps as well as DNS and DHCP apps; if your app will use
//   DNS and/or DHCP then your APP_TYPE (e.g. APP_WISERVER) AND APP_UDPAPP must be defined 
//   (uncommented). Currently only APP_UDPAPP may be defined at the same time as any other APP_TYPE
//
#define APP_WEBSERVER
//#define APP_WEBCLIENT
//#define APP_SOCKAPP
//#define APP_UDPAPP
//#define APP_WISERVER
 
//
// Add on features; uncomment to enable additional functionality
//
//#define UIP_DNS                  // Add DNS capabilities - APP_UDPAPP must be defined!
//#define UIP_DHCP                 // Add DHCP capabilities - APP_UDPAPP must be defined!
//#define UIP_SCAN                 // Add Access Point scan capabilities
 
//
// Commonly accessed WiServer settings 
//
#define WISERVER_GET_STRING_MAX 64 // Length of buffer which holds URL/GET passed to WiServer
 // SimpleServer sendMyPage() page serving function
 
//
// Commonly accessed uIP stack settings 
//
#define UIP_WEP_KEY_LEN         13 // WEP Key length: 5 bytes (64-bit WEP); 13 bytes (128-bit WEP)
#define UIP_WEP_KEY_DEFAULT      0 // Default WEP key ID: Key 0, 1, 2, 3
#define MAX_TCP_CONNS            2 // Max TCP connections desired
#define MAX_TCP_LISTENPORTS      2 // Max TCP listening ports
#define MAX_UDP_CONNS            1 // Max UDP connections desired
// Don't play with UIP_CLOCK_DIV unless you know what you are doing!
#define UIP_CLOCK_DIV            2 // Referenced in stack.c; default 2
 
// -- End uIP/WiShield stack configuration settings
// ----------------------------------------------------------------------------
 
 
#ifdef APP_WEBSERVER
#include "webserver.h"
#endif
 
#ifdef APP_WEBCLIENT
#include "webclient.h"
#endif
 
#ifdef APP_SOCKAPP
#include "socketapp.h"
#endif
 
#ifdef APP_UDPAPP
#include "udpapp.h"
#define UIP_UDP_ENABLED 1
#else
#define UIP_UDP_ENABLED 0
#endif
 
#ifdef APP_WISERVER
#include "server.h"
#endif
 
#ifdef UIP_DHCP
#include "uip_dhcp.h"
#endif
 
#ifdef UIP_DNS
#include "uip_dns.h"
#endif
 
#endif /*__APPS_CONF_H__*/

 

Com um pouco de conhecimento de HTML e TCP/IP agora é só usar a imaginação para resolver seu problema ou criar sua aplicação!

Comentários  

 
0 #7 Duvida com o MegaAntônio Vieira 18-02-2015 21:00
Tenho a dúvida do comentário do colega, precisa realizar alguma alteração para funcionar com o mega? Ou só é compatível com o Uno?
Citar
 
 
0 #6 como enviar dadosLucas Serafim 13-02-2015 18:53
Boa noite eu gostaria de fazer o meu Arduino uno enviar uma música para um celular seria possível utilizar o Wifi Shield
se puderem me dar uma ajuda agradeço meu e-mail é lucastisuporte@ gmail.com
Citar
 
 
0 #5 Usar sem rede wifiFabio Dias 07-08-2014 13:05
Eu preciso necessariamente estar em um local com rede sem fio, ou posso simplesmente usar o wifi shield em conjunto com um tablet para rodar aplicações de controle?
Citar
 
 
0 #4 Com Arduíno Mega Não FuncionaLuiz Henrique Viana 25-05-2014 13:01
Fernando, boa tarde.
Com o Arduíno Mega 2560 não chega nem a acender a LED. Você pode nos ajudar? Pode ser problemas com a própria Shield?
Citar
 
 
+1 #3 ProblemaFernando Bryan Frizzarin 23-01-2014 13:19
Matheus, você ajustou o endereço IP, nome da rede e senha corretamente? Por favor, verifique isso e qualquer coisa me fale novamente.
Citar
 
 
+2 #2 problemaMatheus Prado 23-01-2014 09:50
O Wifi Shield conecta à rede pois o led verde ascende, mas a página não abre. O que fazer??
Citar
 
 
+3 #1 Pinos disponiveisMauricio Nascimento 31-12-2013 11:42
Muito boa tarde. Gostaria de saber quais pinos que posso utilizar para receber sinais externos ou acionar leds sem interferir na comunicação.
Citar
 

Adicionar comentário


Código de segurança
Atualizar

You are here: