Avaliação do Usuário

Estrela inativaEstrela inativaEstrela inativaEstrela inativaEstrela inativa
 

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

 

{code}

/*

* 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

Hello World!! I am WiShield

Toggle LED:

"};

 

 

void loop()

{

WiFi.run();

}

{/code}

 

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:

{code}

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

{/code}

 

O número IP do gateway:

{code}

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

{/code}

 

A máscara de sub-rede:

{code}

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

{/code}

 

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

{code}

char ssid[]                 = {“redesemfio"};

{/code}

 

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

{code}

unsigned char security_type = 3;

{/code}

 

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

{code}

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

{/code}

 

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:

{code}

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

};

{/code}

 

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.

 

{code}

 

/******************************************************************************

 

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__*/

{/code}

 

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!