Difference between revisions of "Anaconda WiFi Shield for Arduino"

From LinkSprite Playgound
Jump to: navigation, search
(Schematic)
(Programming)
Line 66: Line 66:
  
  
 +
<syntaxhighlight lang="c">
  
 +
unsigned char const __crc8_tbl[256]=
 +
{
 +
  0x00,0x91,0xe3,0x72,0x07,0x96,0xe4,0x75,0x0e,0x9f,0xed,0x7c,0x09,0x98,0xea,0x7b,
 +
  0x1c,0x8d,0xff,0x6e,0x1b,0x8a,0xf8,0x69,0x12,0x83,0xf1,0x60,0x15,0x84,0xf6,0x67,
 +
  0x38,0xa9,0xdb,0x4a,0x3f,0xae,0xdc,0x4d,0x36,0xa7,0xd5,0x44,0x31,0xa0,0xd2,0x43,
 +
  0x24,0xb5,0xc7,0x56,0x23,0xb2,0xc0,0x51,0x2a,0xbb,0xc9,0x58,0x2d,0xbc,0xce,0x5f,
 +
  0x70,0xe1,0x93,0x02,0x77,0xe6,0x94,0x05,0x7e,0xef,0x9d,0x0c,0x79,0xe8,0x9a,0x0b,
 +
  0x6c,0xfd,0x8f,0x1e,0x6b,0xfa,0x88,0x19,0x62,0xf3,0x81,0x10,0x65,0xf4,0x86,0x17,
 +
  0x48,0xd9,0xab,0x3a,0x4f,0xde,0xac,0x3d,0x46,0xd7,0xa5,0x34,0x41,0xd0,0xa2,0x33,
 +
  0x54,0xc5,0xb7,0x26,0x53,0xc2,0xb0,0x21,0x5a,0xcb,0xb9,0x28,0x5d,0xcc,0xbe,0x2f,
 +
  0xe0,0x71,0x03,0x92,0xe7,0x76,0x04,0x95,0xee,0x7f,0x0d,0x9c,0xe9,0x78,0x0a,0x9b,
 +
  0xfc,0x6d,0x1f,0x8e,0xfb,0x6a,0x18,0x89,0xf2,0x63,0x11,0x80,0xf5,0x64,0x16,0x87,
 +
  0xd8,0x49,0x3b,0xaa,0xdf,0x4e,0x3c,0xad,0xd6,0x47,0x35,0xa4,0xd1,0x40,0x32,0xa3,
 +
  0xc4,0x55,0x27,0xb6,0xc3,0x52,0x20,0xb1,0xca,0x5b,0x29,0xb8,0xcd,0x5c,0x2e,0xbf,
 +
  0x90,0x01,0x73,0xe2,0x97,0x06,0x74,0xe5,0x9e,0x0f,0x7d,0xec,0x99,0x08,0x7a,0xeb,
 +
  0x8c,0x1d,0x6f,0xfe,0x8b,0x1a,0x68,0xf9,0x82,0x13,0x61,0xf0,0x85,0x14,0x66,0xf7,
 +
  0xa8,0x39,0x4b,0xda,0xaf,0x3e,0x4c,0xdd,0xa6,0x37,0x45,0xd4,0xa1,0x30,0x42,0xd3,
 +
  0xb4,0x25,0x57,0xc6,0xb3,0x22,0x50,0xc1,0xba,0x2b,0x59,0xc8,0xbd,0x2c,0x5e,0xcf};
  
 +
//LinkSprite WiFi  Shield Sample Code
 +
//Send strings to the TCP/IP server
 +
 +
unsigned char const Send_String[30]={
 +
0x4c,0x69,0x6e,0x6b,0x73,0x70,0x72,0x69,0x74,0x65,
 +
0x2d,0x77,0x69,0x66,0x69,0x2d,0x73,0x68,0x69,0x65,
 +
0x6c,0x64,0x2d,0x74,0x65,0x73,0x74,0x21,0x21,0x21
 +
};
 +
#define WIFI_WAIT_SYN    0x00
 +
#define WIFI_WAIT_CTL    0x01
 +
#define WIFI_LENGTH1      0x02
 +
#define WIFI_LENGTH2   0x03
 +
#define WIFI_CHCK       0x04
 +
#define WIFI_RECEDATA   0x05
 +
#define WIFI_WAITPADDING  0x06
 +
 +
// WIFI flow control character
 +
 +
#define WIFI_SYN          0XAA
 +
 +
// parameter id type 
 +
#define WIFI_BSSID        0X01
 +
#define WIFI_CHANEL      0X02
 +
#define WIFI_SSID        0x03
 +
#define WIFI_ENCRYPTTYPE  0X04
 +
#define WIFI_ENKEY        0X05
 +
#define WIFI_DATATYPE    0x06
 +
#define WIFI_TCPPORT      0x07
 +
#define WIFI_TCPIP        0X08
 +
#define WIFI_TCPSERVERIP  0x09
 +
#define WIFI_TCPSERVERMAC 0x0a
 +
#define WIFI_TCPMASET    0X0b
 +
#define WIFI_TCPGATEWAY   0X0C
 +
 +
// data type 
 +
#define CTL_DATA  0X00
 +
#define NOA_DATA  0X10
 +
#define ACK_DATA  0X20
 +
 +
//  format of control data
 +
#define COMAND_DATA 0x00  //arduino to wifi
 +
#define MESSAGE_DATA 0X40  //wifi to arduino
 +
 +
//  wifi control commands
 +
#define SCANNETWORK_DATA  0x00
 +
#define LINKNETWORK_DATA  0X01
 +
#define CLOSENETWORK_DATA  0x02
 +
#define SETNETPARA_DATA    0X03
 +
#define QUERYNETPARA_DATA  0X04
 +
#define RESTWIFI_DATA      0X05
 +
#define TCPLINK_DATA      0x06
 +
#define TCPSENDFAILED_DATA 0x07
 +
 +
typedef struct NetParaBuffer
 +
{
 +
  unsigned char M_id;
 +
  unsigned char cLength;
 +
  unsigned char cInfo[64];
 +
}NetParaBuffer;
 +
extern const struct  NetParaBuffer sysNetParaBuffer[4]={
 +
{0xa2,0x01,0x03}, //baud rate  115200 
 +
{0xa7,0x01,0x00}, //connection mode:  00 manual
 +
{0xa9,0x01,0x01}, //transparent trasmission : 01 yes 
 +
{0xaa,0x01,0x00} //TCP listen :00 close
 +
};
 +
// WiFI Module Configuration
 +
// according to the setting of access point
 +
// user the TCP/IP tool to set up a UDP server, port 3000
 +
extern const struct NetParaBuffer IPNetParaBuffer[8]={
 +
{0x06,0x01,0x01}, //Link Layer Protocol: UDP
 +
{0x07,0x02,0x0b,0xb8}, //port number 3000  0x0b 0xb8      Port number: 6000 (0x17,0x70) 3000: 0x0b 0xb8
 +
{0x08,0x04,0xc0,0xa8,0x02,0xa6}, //wifi ip  192.168.2.166 
 +
{0x09,0x04,0xc0,0xa8,0x02,0xa5}, //server ip 192.168.2.165
 +
{0x0b,0x01,0x01}, //net mask  255.255.255.0
 +
{0x0c,0x04,0xc0,0xa8,0x02,0x1}, //gateway    192.168.2.1
 +
{0x04,0x01,0x01},              //encryption  mode:00 open 01 wep 
 +
{0x05,0x36,0x0d,0x00, //key
 +
  0x6c,0x69,0x6e,0x6b,0x73,0x70,0x72,0x69,0x74,0x65,0x30,0x30,0x31, //13 bytes the first group    ASCII of "linksprite001"
 +
  0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, //13 bytes, 0
 +
  0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,//13 bytes, 0
 +
  0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30},//13 bytes, 0
 +
};
 +
const struct NetParaBuffer IDNetParaBuffer[3]={
 +
{0x01,0x06,0xe0,0x05,0xc5,0xbe,0x78,0x66}, //BSSID e0-05-c5-be-78-66
 +
{0x02,0x01,0x05},                          //channel 5
 +
{0x03,0x21,0x74,0x65,0x73,0x74,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  //Ssid 0x21 is regular, the later part is ascii of  Ssid
 +
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},       
 +
};
 +
 +
unsigned char gcSN=0x00;  //
 +
unsigned char Send_datas[100];
 +
///////////////////////////////////////////
 +
 +
unsigned char  GetCrc8(unsigned char *ptr,unsigned char len)
 +
{
 +
  unsigned char  crc8,cdata;
 +
  crc8=0;
 +
  while(len--!=0)
 +
  {
 +
    cdata = *ptr++;
 +
    crc8=__crc8_tbl[crc8^cdata];
 +
  }
 +
  return crc8;
 +
}
 +
 +
//wifi send datas
 +
void  SendDataToWifi(unsigned char cCtl,unsigned char cCommand,unsigned char *cCommandPara,unsigned int iLength)
 +
{
 +
  unsigned char cBuf[100];
 +
 +
  cBuf[0]=WIFI_SYN;    // Synchronous Field
 +
  cBuf[1]=cCtl|gcSN;  // Control Field
 +
  gcSN++;              // frame number,number is form 0 to 15 
 +
  if(gcSN>=0x10)
 +
  {
 +
    gcSN = 0;
 +
  }
 +
  cBuf[2]=(iLength+1)>>8;
 +
  cBuf[3]=(iLength+1)&0x00ff;
 +
  cBuf[4]=GetCrc8(&cBuf[1],3);
 +
  cBuf[5]=cCommand;
 +
  memcpy(&cBuf[6],cCommandPara,iLength);
 +
  memset(&cBuf[6+iLength],0x00,6);
 +
  Serial.write(cBuf, iLength+12);
 +
}
 +
////////////////////////////////////////////////////////////////////////////////////////////
 +
void WIFIReset(void)
 +
{
 +
  unsigned char cBuf[2];
 +
  cBuf[0]= 0;
 +
  SendDataToWifi(CTL_DATA,RESTWIFI_DATA,cBuf,1);
 +
}
 +
////////////////////////////////////////////////////////////////////////////////////////////////
 +
//wifi net params set
 +
void WIFISetIPNetPara(unsigned char cPb,                  //  wifi net params group number
 +
                    const struct NetParaBuffer *cNetParaBuffer,//  wifi net params table
 +
  unsigned char cParaNum)              //  params numbers
 +
{
 +
    unsigned char cBuf[100];
 +
unsigned char i;
 +
unsigned char cLength;
 +
cBuf[0]= cPb;
 +
cLength = 0;
 +
for(i=0;i<cParaNum;i++)
 +
{
 +
cBuf[1+cLength]= cNetParaBuffer[i].M_id;
 +
cBuf[2+cLength]= cNetParaBuffer[i].cLength;
 +
memcpy(&cBuf[3+cLength],cNetParaBuffer[i].cInfo,cBuf[2+cLength]);
 +
cLength = cLength+cBuf[2+cLength]+2;
 +
}
 +
 +
  SendDataToWifi(CTL_DATA,SETNETPARA_DATA,cBuf,1+cLength);
 +
}
 +
//wifi set system params
 +
void WIFISetSysNetPara(const struct NetParaBuffer *cNetParaBuffer,//  wifi net params table
 +
  unsigned char cParaNum)              //  params numbers
 +
{
 +
unsigned char cBuf[100];
 +
unsigned char i;
 +
unsigned char cLength;
 +
 +
cLength = 0;
 +
for(i=0;i<cParaNum;i++)
 +
{
 +
cBuf[cLength]= cNetParaBuffer[i].M_id;
 +
cBuf[1+cLength]= cNetParaBuffer[i].cLength;
 +
memcpy(&cBuf[2+cLength],cNetParaBuffer[i].cInfo,cBuf[1+cLength]);
 +
cLength = cLength+cBuf[1+cLength]+2;
 +
}
 +
SendDataToWifi(CTL_DATA,SETNETPARA_DATA,cBuf,cLength);
 +
}
 +
 +
/*********************************************************************************************************
 +
** function name WIFIJoinAp()
 +
** function  Join the AP                       
 +
** cIdx:wifi net params group,default is the first group
 +
 +
*********************************************************************************************************
 +
*/
 +
void WIFIJoinAp(unsigned char cIdx)
 +
{
 +
  unsigned char cBuf[1];
 +
  cBuf[0]= cIdx;
 +
  SendDataToWifi(CTL_DATA,LINKNETWORK_DATA,cBuf,1);
 +
}
 +
///////////////////////////////////////////////////////////////////
 +
////////////////////////////////////////////
 +
 +
void setup() {               
 +
  int i;
 +
  // open the serial port at 115200 bps:
 +
  Serial.begin(115200);
 +
  pinMode(11, OUTPUT);   
 +
    digitalWrite(11, LOW);  // set the LED on
 +
    delay(1000);
 +
    delay(1000);
 +
  digitalWrite(11, HIGH);  // set the LED on
 +
 +
  //gcReceComm1OK=0;
 +
  WIFIReset();
 +
  //RecivDataFromWifi();
 +
  //ProcessWIFIData();
 +
  delay(1000);
 +
  delay(1000);
 +
 
 +
  //gcReceComm1OK=0;
 +
  WIFISetSysNetPara(sysNetParaBuffer,4);
 +
  // RecivDataFromWifi();
 +
  //ProcessWIFIData();
 +
  delay(1000);
 +
  delay(1000);
 +
 
 +
// gcReceComm1OK=0;
 +
  WIFISetIPNetPara(0xb1,IPNetParaBuffer,8);
 +
// RecivDataFromWifi();
 +
  //ProcessWIFIData();
 +
  delay(1000);
 +
  delay(1000);
 +
 
 +
  //gcReceComm1OK=0;
 +
  WIFISetIPNetPara(0xb1,IDNetParaBuffer,3);
 +
  //RecivDataFromWifi();
 +
  //ProcessWIFIData();
 +
  delay(1000);
 +
  delay(1000);
 +
 
 +
  //gcReceComm1OK=0;
 +
  WIFIJoinAp(0x01);
 +
  //RecivDataFromWifi();
 +
  //ProcessWIFIData();
 +
  digitalWrite(11, LOW);  // set the LED on
 +
  delay(1000);
 +
  delay(1000);
 +
 +
  for(i=0;i<30;i++)
 +
    Send_datas[i]=Send_String[i];
 +
  delay(1000);
 +
 
 +
}
 +
 +
void loop() {
 +
  digitalWrite(11, HIGH);  // set the LED on
 +
  delay(1000);
 +
  SendDataToWifi(NOA_DATA,Send_datas[0],&Send_datas[1],29);
 +
  digitalWrite(11, LOW);  // set the LED on
 +
  delay(1000);
 +
}
 +
 +
</syntaxhighlight>
  
 
== FAQ  ==
 
== FAQ  ==

Revision as of 10:01, 29 November 2012

Introduction

This is LinkSprite Anaconda WiFi Shield for Arduino (everything you see on the picture is included except the Arduino board).

This WiFi Shield has built-in TCP/IP stack and all the WiFi related code. Arduino just needs to configure the WiFi parameters using AT command through the UART, or, user can simply treat the WiFi as a transparent serial port after some offline configuration.


Model: LS_ANA_WIFI

Anaconda wifi shield for arduino.jpg

Features

Application Ideas

Cautions

Schematic

Schematics

Specification

Pin definition and Rating

Mechanic Dimensions

Usage

Hardware Installation

To do the offline configuration, jumping TX to MTX, RX to MRX, removing ATMGEA328, and configure the module through the Arduino USB port using the configuring GUI utility [1]. During power cycle, the parameters are saved.

Programming

<syntaxhighlight lang="c">

unsigned char const __crc8_tbl[256]= {

 0x00,0x91,0xe3,0x72,0x07,0x96,0xe4,0x75,0x0e,0x9f,0xed,0x7c,0x09,0x98,0xea,0x7b,
 0x1c,0x8d,0xff,0x6e,0x1b,0x8a,0xf8,0x69,0x12,0x83,0xf1,0x60,0x15,0x84,0xf6,0x67,
 0x38,0xa9,0xdb,0x4a,0x3f,0xae,0xdc,0x4d,0x36,0xa7,0xd5,0x44,0x31,0xa0,0xd2,0x43,
 0x24,0xb5,0xc7,0x56,0x23,0xb2,0xc0,0x51,0x2a,0xbb,0xc9,0x58,0x2d,0xbc,0xce,0x5f,
 0x70,0xe1,0x93,0x02,0x77,0xe6,0x94,0x05,0x7e,0xef,0x9d,0x0c,0x79,0xe8,0x9a,0x0b,
 0x6c,0xfd,0x8f,0x1e,0x6b,0xfa,0x88,0x19,0x62,0xf3,0x81,0x10,0x65,0xf4,0x86,0x17,
 0x48,0xd9,0xab,0x3a,0x4f,0xde,0xac,0x3d,0x46,0xd7,0xa5,0x34,0x41,0xd0,0xa2,0x33,
 0x54,0xc5,0xb7,0x26,0x53,0xc2,0xb0,0x21,0x5a,0xcb,0xb9,0x28,0x5d,0xcc,0xbe,0x2f,
 0xe0,0x71,0x03,0x92,0xe7,0x76,0x04,0x95,0xee,0x7f,0x0d,0x9c,0xe9,0x78,0x0a,0x9b,
 0xfc,0x6d,0x1f,0x8e,0xfb,0x6a,0x18,0x89,0xf2,0x63,0x11,0x80,0xf5,0x64,0x16,0x87,
 0xd8,0x49,0x3b,0xaa,0xdf,0x4e,0x3c,0xad,0xd6,0x47,0x35,0xa4,0xd1,0x40,0x32,0xa3,
 0xc4,0x55,0x27,0xb6,0xc3,0x52,0x20,0xb1,0xca,0x5b,0x29,0xb8,0xcd,0x5c,0x2e,0xbf,
 0x90,0x01,0x73,0xe2,0x97,0x06,0x74,0xe5,0x9e,0x0f,0x7d,0xec,0x99,0x08,0x7a,0xeb,
 0x8c,0x1d,0x6f,0xfe,0x8b,0x1a,0x68,0xf9,0x82,0x13,0x61,0xf0,0x85,0x14,0x66,0xf7,
 0xa8,0x39,0x4b,0xda,0xaf,0x3e,0x4c,0xdd,0xa6,0x37,0x45,0xd4,0xa1,0x30,0x42,0xd3,
 0xb4,0x25,0x57,0xc6,0xb3,0x22,0x50,0xc1,0xba,0x2b,0x59,0xc8,0xbd,0x2c,0x5e,0xcf};

//LinkSprite WiFi Shield Sample Code //Send strings to the TCP/IP server

unsigned char const Send_String[30]={ 0x4c,0x69,0x6e,0x6b,0x73,0x70,0x72,0x69,0x74,0x65, 0x2d,0x77,0x69,0x66,0x69,0x2d,0x73,0x68,0x69,0x65, 0x6c,0x64,0x2d,0x74,0x65,0x73,0x74,0x21,0x21,0x21 };

  1. define WIFI_WAIT_SYN 0x00
  2. define WIFI_WAIT_CTL 0x01
  3. define WIFI_LENGTH1 0x02
  4. define WIFI_LENGTH2 0x03
  5. define WIFI_CHCK 0x04
  6. define WIFI_RECEDATA 0x05
  7. define WIFI_WAITPADDING 0x06

// WIFI flow control character

  1. define WIFI_SYN 0XAA

// parameter id type

  1. define WIFI_BSSID 0X01
  2. define WIFI_CHANEL 0X02
  3. define WIFI_SSID 0x03
  4. define WIFI_ENCRYPTTYPE 0X04
  5. define WIFI_ENKEY 0X05
  6. define WIFI_DATATYPE 0x06
  7. define WIFI_TCPPORT 0x07
  8. define WIFI_TCPIP 0X08
  9. define WIFI_TCPSERVERIP 0x09
  10. define WIFI_TCPSERVERMAC 0x0a
  11. define WIFI_TCPMASET 0X0b
  12. define WIFI_TCPGATEWAY 0X0C

// data type

  1. define CTL_DATA 0X00
  2. define NOA_DATA 0X10
  3. define ACK_DATA 0X20

// format of control data

  1. define COMAND_DATA 0x00 //arduino to wifi
  2. define MESSAGE_DATA 0X40 //wifi to arduino

// wifi control commands

  1. define SCANNETWORK_DATA 0x00
  2. define LINKNETWORK_DATA 0X01
  3. define CLOSENETWORK_DATA 0x02
  4. define SETNETPARA_DATA 0X03
  5. define QUERYNETPARA_DATA 0X04
  6. define RESTWIFI_DATA 0X05
  7. define TCPLINK_DATA 0x06
  8. define TCPSENDFAILED_DATA 0x07

typedef struct NetParaBuffer {

  unsigned char M_id;
  unsigned char cLength;
  unsigned char cInfo[64];

}NetParaBuffer; extern const struct NetParaBuffer sysNetParaBuffer[4]={ {0xa2,0x01,0x03}, //baud rate 115200 {0xa7,0x01,0x00}, //connection mode: 00 manual {0xa9,0x01,0x01}, //transparent trasmission : 01 yes {0xaa,0x01,0x00} //TCP listen :00 close }; // WiFI Module Configuration // according to the setting of access point // user the TCP/IP tool to set up a UDP server, port 3000 extern const struct NetParaBuffer IPNetParaBuffer[8]={ {0x06,0x01,0x01}, //Link Layer Protocol: UDP {0x07,0x02,0x0b,0xb8}, //port number 3000 0x0b 0xb8 Port number: 6000 (0x17,0x70) 3000: 0x0b 0xb8 {0x08,0x04,0xc0,0xa8,0x02,0xa6}, //wifi ip 192.168.2.166 {0x09,0x04,0xc0,0xa8,0x02,0xa5}, //server ip 192.168.2.165 {0x0b,0x01,0x01}, //net mask 255.255.255.0 {0x0c,0x04,0xc0,0xa8,0x02,0x1}, //gateway 192.168.2.1 {0x04,0x01,0x01}, //encryption mode:00 open 01 wep {0x05,0x36,0x0d,0x00, //key 0x6c,0x69,0x6e,0x6b,0x73,0x70,0x72,0x69,0x74,0x65,0x30,0x30,0x31, //13 bytes the first group ASCII of "linksprite001" 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, //13 bytes, 0 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,//13 bytes, 0 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30},//13 bytes, 0 }; const struct NetParaBuffer IDNetParaBuffer[3]={ {0x01,0x06,0xe0,0x05,0xc5,0xbe,0x78,0x66}, //BSSID e0-05-c5-be-78-66 {0x02,0x01,0x05}, //channel 5 {0x03,0x21,0x74,0x65,0x73,0x74,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //Ssid 0x21 is regular, the later part is ascii of Ssid 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, };

unsigned char gcSN=0x00; // unsigned char Send_datas[100]; ///////////////////////////////////////////

unsigned char GetCrc8(unsigned char *ptr,unsigned char len) {

 unsigned char  crc8,cdata;
 crc8=0;
 while(len--!=0)
 {
   cdata = *ptr++;
   crc8=__crc8_tbl[crc8^cdata];
 }
 return crc8;

}

//wifi send datas void SendDataToWifi(unsigned char cCtl,unsigned char cCommand,unsigned char *cCommandPara,unsigned int iLength) {

 unsigned char cBuf[100]; 
 cBuf[0]=WIFI_SYN;    // Synchronous Field 
 cBuf[1]=cCtl|gcSN;   // Control Field 
 gcSN++;              // frame number,number is form 0 to 15  
 if(gcSN>=0x10)
 {
   gcSN = 0;
 }
 cBuf[2]=(iLength+1)>>8;
 cBuf[3]=(iLength+1)&0x00ff;
 cBuf[4]=GetCrc8(&cBuf[1],3);
 cBuf[5]=cCommand;
 memcpy(&cBuf[6],cCommandPara,iLength);
 memset(&cBuf[6+iLength],0x00,6);
 Serial.write(cBuf, iLength+12);

} //////////////////////////////////////////////////////////////////////////////////////////// void WIFIReset(void) {

 unsigned char cBuf[2];
 cBuf[0]= 0;
 SendDataToWifi(CTL_DATA,RESTWIFI_DATA,cBuf,1);

} //////////////////////////////////////////////////////////////////////////////////////////////// //wifi net params set void WIFISetIPNetPara(unsigned char cPb, // wifi net params group number

                   const struct NetParaBuffer *cNetParaBuffer,//  wifi net params table 

unsigned char cParaNum) // params numbers {

   unsigned char cBuf[100];

unsigned char i; unsigned char cLength; cBuf[0]= cPb; cLength = 0; for(i=0;i<cParaNum;i++) { cBuf[1+cLength]= cNetParaBuffer[i].M_id; cBuf[2+cLength]= cNetParaBuffer[i].cLength; memcpy(&cBuf[3+cLength],cNetParaBuffer[i].cInfo,cBuf[2+cLength]); cLength = cLength+cBuf[2+cLength]+2; }

 SendDataToWifi(CTL_DATA,SETNETPARA_DATA,cBuf,1+cLength);

} //wifi set system params void WIFISetSysNetPara(const struct NetParaBuffer *cNetParaBuffer,// wifi net params table unsigned char cParaNum) // params numbers { unsigned char cBuf[100]; unsigned char i; unsigned char cLength;

cLength = 0; for(i=0;i<cParaNum;i++) { cBuf[cLength]= cNetParaBuffer[i].M_id; cBuf[1+cLength]= cNetParaBuffer[i].cLength; memcpy(&cBuf[2+cLength],cNetParaBuffer[i].cInfo,cBuf[1+cLength]); cLength = cLength+cBuf[1+cLength]+2; } SendDataToWifi(CTL_DATA,SETNETPARA_DATA,cBuf,cLength); }

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

    • function name WIFIJoinAp()
    • function Join the AP
    • cIdx:wifi net params group,default is the first group
  • /

void WIFIJoinAp(unsigned char cIdx) {

  unsigned char cBuf[1];
  cBuf[0]= cIdx;
  SendDataToWifi(CTL_DATA,LINKNETWORK_DATA,cBuf,1);

} /////////////////////////////////////////////////////////////////// ////////////////////////////////////////////

void setup() {

 int i;
 // open the serial port at 115200 bps:
 Serial.begin(115200);
 pinMode(11, OUTPUT);     
   digitalWrite(11, LOW);   // set the LED on
   delay(1000);
   delay(1000);
 digitalWrite(11, HIGH);   // set the LED on
 //gcReceComm1OK=0;
 WIFIReset();
 //RecivDataFromWifi();
 //ProcessWIFIData();
 delay(1000);
 delay(1000);
 
 //gcReceComm1OK=0;
 WIFISetSysNetPara(sysNetParaBuffer,4);		
 // RecivDataFromWifi();
 //ProcessWIFIData();
 delay(1000);
 delay(1000);
 
// gcReceComm1OK=0;
 WIFISetIPNetPara(0xb1,IPNetParaBuffer,8);
// RecivDataFromWifi();
 //ProcessWIFIData();
 delay(1000);
 delay(1000);
 
 //gcReceComm1OK=0;
 WIFISetIPNetPara(0xb1,IDNetParaBuffer,3);
 //RecivDataFromWifi();
 //ProcessWIFIData();
 delay(1000);
 delay(1000);
 
 //gcReceComm1OK=0; 
 WIFIJoinAp(0x01);
 //RecivDataFromWifi();
 //ProcessWIFIData();
 digitalWrite(11, LOW);   // set the LED on
 delay(1000);
 delay(1000); 
 for(i=0;i<30;i++)
   Send_datas[i]=Send_String[i];
 delay(1000);
 

}

void loop() {

 digitalWrite(11, HIGH);   // set the LED on
 delay(1000);
 SendDataToWifi(NOA_DATA,Send_datas[0],&Send_datas[1],29);
 digitalWrite(11, LOW);   // set the LED on
 delay(1000);

}

</syntaxhighlight>

FAQ

Please list your question here:

Support

If you have questions or other better design ideas, you can go to our forum to discuss or creat a ticket for your issue at linksprite support.

Resources

How to buy

Here to buy Anaconda Wifi Shield for Arduino[LS_ANA_WIFI] on LinkSprite Cart

See Also

Other related products and resources.

Licensing

This documentation is licensed under the Creative Commons Attribution-ShareAlike License 3.0 Source code and libraries are licensed under GPL/LGPL, see source code files for details.