- void wifiInit(void)
- {
- LPB100_IO_init(); //³õʼ»¯IO
- LPB100_RELOAD_PIN_SET(); //À¸ß nReload ·ÀÖ¹WIFIÄ£¿é»Ö¸´³ö³§ÉèÖÃ
- LPB100_reset(); //¸´Î»WIFIÄ£¿é
-
- //µÈ´ý WIFI ready
- while(1 == LPB100_READY_PIN_STA()) //LPB100 Æô¶¯Íê³Éºó Ready PIN Êä³ö0
- {
- debug_log("wait wifi ready...\r\n");
- delay(5000);
- }
-
- debug_log("wifi is ready\r\n");
-
- if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)) // userKey °´ÏÂ WIFI»Ö¸´³ö³§ÉèÖÃ
- {
- debug_log("clear LPB100\r\n");
- LPB100_RELOAD_PIN_RESET();
- delay(30000);
- LPB100_RELOAD_PIN_SET();
- delay(10000);
-
- //µÈ´ý WIFI ready
- while(1 == LPB100_READY_PIN_STA()) //LPB100 Æô¶¯Íê³Éºó Ready PIN Êä³ö0
- {
- debug_log("wait wifi ready...\r\n");
- delay(5000);
- }
- debug_log("wifi is ready\r\n");
- }
- wifi_link_detect(); //wifi Á¬½Ó¼ì²â
- wifi_tcpServer_init(); //¾ÖÓòÍø TCP SERVER ÉèÖÃ
- intoDirectTranfser(); //wifi Ä£¿é»Øµ½Í¸´«Ä£Ê½
- debug_log("wifi init ok\r\nmain loop\r\n");
- }
简单的写了WIFI模块的连接检测
- void wifi_link_detect(void)
- {
- uint8_t sta = 0;
- uint16_t height_count = 0;
- uint16_t low_count = 0;
- uint32_t total_count = 0;
-
- debug_log("link detect\r\n");
-
- while(1)
- {
- switch(sta)
- {
- case 0:
- {
- if(LPB100_LINK_PIN_STA() == 0) // link pin Ϊ0
- {
- low_count++;
- height_count = 0;
- if(low_count > 15) //link Á¬Ðø15´ÎΪ 0 ÈÏΪÁ¬½Óµ½Â·ÓÉÆ÷
- {
- debug_log("wifi link ok\r\n");
- return;
- }
- }
- else
- {
- low_count = 0;
- height_count++;
- if(height_count == 30) //Á¬Ðø30´ÎΪ1 ÈÏΪÁ¬½Ó²»µ½Â·ÓÉÆ÷ ½øÈë smart link
- {
- LPB100_RELOAD_PIN_RESET();
- delay(1000);
- LPB100_RELOAD_PIN_SET();
- low_count = 0;
- height_count = 0;
- sta = 1;
- debug_log("\r\nsmart link\r\n\r\n");
- }
- }
- }break;
- case 1:
- {
- if(LPB100_LINK_PIN_STA() == 0) // link pin Ϊ 0
- {
- low_count++;
- height_count = 0;
- if(low_count > 15) //link Á¬Ðø15´ÎΪ0 ÈÏΪÁ¬½Óµ½Â·ÓÉÆ÷
- {
- debug_log("\r\nsmart link ok\r\n\r\n");
- return;
- }
- }
- else
- {
- low_count = 0;
- height_count++;
- }
- }break;
- }
- total_count++;
- delay(500);
- if((total_count%4) == 0)
- debug_log("total:%d low:%d height:%d\r\n",total_count,low_count,height_count);
- }
- }
TCP SERVER设置代码:
- //ÉèÖÃWIFI×öTCP SERVER
- void wifi_tcpServer_init(void)
- {
- uint8_t ipMode;
- uint32_t ip[4];
- uint32_t mask[4];
- uint32_t gateway[4];
-
- //½øÈëATÖ¸Áîģʽ
- intoATmode();
-
- //¹Ø±Õ»ØÏÔ
- delay(500);
- wifi_printf("AT+E=off\n");
-
-
- if(wifi_read_wann(&ipMode,ip,mask,gateway))
- {
- debug_log("%c\r\n",ipMode);
- if(ipMode == 'D')
- {
- debug_log("IP_MODE:DCHP\r\n");
- }
- else
- {
- debug_log("IP_MODE:static\r\n");
- }
- debug_log("ip:%d.%d.%d.%d\r\n",ip[0],ip[1],ip[2],ip[3]);
- debug_log("mask:%d.%d.%d.%d\r\n",mask[0],mask[1],mask[2],mask[3]);
- debug_log("gateway:%d.%d.%d.%d\r\n",gateway[0],gateway[1],gateway[2],gateway[3]);
-
- //ÉèÖÃ
- delay(500);
- wifi_printf("AT+NETP=TCP,SERVER,8899,%d.%d.%d.%d\n",ip[0],ip[1],ip[2],ip[3]);
- }
- else
- {
- debug_log("get wann err\r\n");
- }
- }
协议解析代码:
- //"ledNum":"1","sta":"0"
- void ledControlDetect(void)
- {
- uint32_t val;
- uint32_t ret;
-
- uartScanf(&ret,500,"ledNum":"%d",&val);
- if(!ret)
- {
- return;
- }
-
- switch(val)
- {
- case 1:
- {
- uartScanf(&ret,500,"sta":"%d",&val);
- if(ret)
- {
- debug_log("LED1 ");
- if(val == 0)
- {
- LD1_CLOSE();
- debug_log("close\r\n");
- }
- else if(val == 1)
- {
- LD1_OPEN();
- debug_log("open\r\n");
- }
- wifi_printf("LED1 OK\r\n");
- }
- }break;
- case 2:
- {
- uartScanf(&ret,500,"sta":"%d",&val);
- if(ret)
- {
- debug_log("LED2 ");
- if(val == 0)
- {
- LD2_CLOSE();
- debug_log("close\r\n");
- }
- else if(val == 1)
- {
- LD2_OPEN();
- debug_log("open\r\n");
- }
- wifi_printf("LED2 OK\r\n");
- }
- }break;
- case 3:
- {
- uartScanf(&ret,500,"sta":"%d",&val);
- if(ret)
- {
- debug_log("LED3 ");
- if(val == 0)
- {
- LD3_CLOSE();
- debug_log("close\r\n");
- }
- else if(val == 1)
- {
- LD3_OPEN();
- debug_log("open\r\n");
- };
- wifi_printf("LED3 OK\r\n");
- }
- }break;
- case 4:
- {
- uartScanf(&ret,500,"sta":"%d",&val);
- if(ret)
- {
- debug_log("LED4 ");
- if(val == 0)
- {
- LD4_CLOSE();
- debug_log("close\r\n");
- }
- else if(val == 1)
- {
- LD4_OPEN();
- debug_log("open\r\n");
- }
- wifi_printf("LED4 OK\r\n");
- }
- }break;
- case 7:
- {
- uartScanf(&ret,500,"sta":"%d",&val);
- if(ret)
- {
- debug_log("LED7 ");
- if(val == 0)
- {
- LD7_CLOSE();
- debug_log("close\r\n");
- }
- else if(val == 1)
- {
- LD7_OPEN();
- debug_log("open\r\n");
- }
- wifi_printf("LED7 OK\r\n");
- }
- }break;
- default:wifi_printf("err cmd\n");break;
- }
- }
为了和HTTP协议兼容 指令格式采用了json格式: "ledNum":"1","sta":"0" 通过 scanf()进行解析。
软件运行LOG:
smart link 完成 TCP SERVER 建立完成
smart link软件:
手机端发指令:
收到恢复后 对应的LED亮起: