物聯(lián)網(wǎng)WiFi開發(fā)板相關(guān)電路:
- 物聯(lián)網(wǎng)開發(fā)板——NuMaker Uni資料開源下載(硬件+軟件+Android APP+用戶指南)
- 物聯(lián)網(wǎng)時(shí)代萬(wàn)能的開發(fā)模塊 - “小哪吒“FPGA+Wifi開發(fā)模塊
- (全部資料共享)極Q開發(fā)板——QQ物聯(lián)開發(fā)(原理圖、參考程序、視頻教程等)
- WIOT board(無(wú)線物聯(lián)開發(fā)板)
- 智能硬件開發(fā)平臺(tái)—小e物聯(lián)網(wǎng)WiFi開發(fā)板電路圖+PCB+源代碼
WIFI小車用小E開發(fā)板作為服務(wù)器(AP模式),然后用手機(jī)作為客戶端進(jìn)行連接。簡(jiǎn)單理解就是用小E開發(fā)板發(fā)出熱點(diǎn),然后手機(jī)連接上wifi熱點(diǎn),之后進(jìn)行TCP協(xié)議進(jìn)行通信。從而控制小車的方向和轉(zhuǎn)速。
一、小E開發(fā)-wifi-AP模式配置
user_set_softap_config(void)
{
struct softap_config ap_config;
constchar *wifi_name = "四驅(qū)車"; //發(fā)出的熱點(diǎn)名稱
wifi_set_opmode(SOFTAP_MODE); //設(shè)置為AP模式,并保存到 flash
ap_config.ssid_len = strlen(wifi_name); //計(jì)算ssid長(zhǎng)度
os_strcpy(ap_config.ssid,wifi_name); //設(shè)置ssid名字
os_strcpy(ap_config.password,"12345678"); //設(shè)置密碼
ap_config.authmode=3; //設(shè)置加密模式
ap_config.beacon_interval=100; //信標(biāo)間隔時(shí)槽100 ~ 60000 ms
ap_config.channel=1; //通道號(hào)1 ~ 13
ap_config.max_connection=4; //最大連接數(shù)
ap_config.ssid_hidden=0; //隱藏SSID
wifi_softap_set_config(&ap_config);
//定時(shí)查看wifi是否連成功 。。
os_timer_disarm(&test_timer);
os_timer_setfn(&test_timer,(os_timer_func_t *) user_esp_platform_check_ip,NULL);
os_timer_arm(&test_timer,1000, 0); //1S回調(diào)異常
}
二、建立TCP協(xié)議
1、先檢查IP地址是否為零。
2、IP地址不為0,開始初始化配置TCP協(xié)議。
TCP協(xié)議初始化配置函數(shù)
user_tcpserver_init(uint32 port)
{
esp_conn.type = ESPCONN_TCP;
esp_conn.state = ESPCONN_NONE;
esp_conn.proto.tcp = &esptcp;
esp_conn.proto.tcp->local_port =port;
espconn_regist_connectcb(&esp_conn,tcp_server_listen);
//注冊(cè)TCP 回調(diào)函數(shù)
espconn_regist_time(&esp_conn,0,0);
//設(shè)置超時(shí)斷開時(shí)間 單位:秒,最大值:7200 秒
sint8 ret =espconn_accept(&esp_conn);
//創(chuàng)建TCP_Sevser服務(wù)器 監(jiān)聽
//if(ret==0)
//os_printf("rn創(chuàng)建TCP_Sevser監(jiān)聽成功??!rn");
}
TCP配置成功之后,創(chuàng)建事件回調(diào)函數(shù)。具體大家可以參考手冊(cè)附錄有詳細(xì)說(shuō)明
/****************************************************
*TCP服務(wù)器創(chuàng)建監(jiān)聽連接成功
*****************************************************/
LOCAL void ICACHE_FLASH_ATTR
tcp_server_listen(void*arg)
{
struct espconn *pesp_conn = arg;
//os_printf("tcp_server_listen !!! rn");
espconn_regist_recvcb(pesp_conn,tcp_server_recv_cb); //tcp收到數(shù)據(jù)后回調(diào)函數(shù)
espconn_regist_sentcb(pesp_conn,tcp_server_sent_cb); //TCP發(fā)送完成回調(diào)函數(shù)
espconn_regist_reconcb(pesp_conn,tcp_server_recon_cb); //tcp鏈接發(fā)送異常斷開
espconn_regist_disconcb(pesp_conn,tcp_server_discon_cb); //TCP鏈接正常斷開
tcp_server_multi_send(); //查詢客戶端接入ip地址
espconn_regist_time(&esp_conn,0,0); //設(shè)置超時(shí)斷開時(shí)間 0 為一直連著不斷開
//os_printf("注冊(cè)各個(gè)回調(diào)函數(shù)完成 !!! rn");
}
三、TCP接收數(shù)據(jù)和處理數(shù)據(jù)函數(shù)
tcp_server_recv_cb(void *arg, char *pusrdata,
unsignedshort length)
{
//接收成功的回調(diào)函數(shù)
struct espconn *pespconn = arg;
uint8 i =0;
os_printf("%s",pusrdata); //UART透?jìng)鞒鋈?/p>
espconn_sent(pespconn,pusrdata, length);
If(..)
{
...........
}
}
四、PWM配置