筆者目的是將 ESP8266 接收資料數據,用無線網絡 (WiFi)將資料傳送到電腦 PC 或手機作處理,一台 ESP8266 伺服器(Server)對 1台客戶端 (電腦 PC 或手機) ,暫時不會透過 Internet 將資料數據上傳到雲端,所以會選擇用 Soft-AP 無線網絡模式,TCP (Transmission Control Protocol / 傳輸控制協定)協議和伺服器(Server)設定。
ESP8266 模塊 WiFi Soft-AP TCP Server 模式 |
1. 將 ESP8266 配置成 Soft-AP 模式,將模式改為 SOFTAP_MODE(0x02)
2. 取得當前 AP 配置
3. 更改配置參數 ssid 和 password
4. 使用 wifi_softap_set_config 設置 AP 參數(設置遠端 Server 的 IP 位址及埠號)
5. 註冊連接偵測回調函數(wifi_set_event_handler_cb)
6. 設定系統任務
7. 創建 TCP Server 及設定 TCP 參數
8. 調用 espconn_accept 偵聽 TCP 連接
9. 註冊計時器
ESP8266 Soft-AP 配置的初始化程式:
/******************************************************************************
* FunctionName : user_init(void)
* Description : User Init Program Start Here
* Parameters : none
* Returns : none
*******************************************************************************/
void
ICACHE_FLASH_ATTR user_init(void)
{
struct softap_config apConfig;
// Start SOFTAP Configuration
// Set SOFTPA Mode = 0x02
wifi_set_opmode(SOFTAP_MODE);
// Copy SOFTAP Config Parameters
os_memset(&apConfig,0x0,sizeof(apConfig));
apConfig.authmode = AUTH_OPEN;
apConfig.channel = 0;
apConfig.max_connection = 4;
apConfig.ssid_len = os_strlen(TRANS_SSID);
os_strncpy(apConfig.ssid,TRANS_SSID,os_strlen(TRANS_SSID));
// Setup SOFTAP Config Parameters
wifi_softap_set_config(&apConfig);
// Register Callback Monitor WiFi Status
wifi_set_event_handler_cb(wifi_event_handler_cb1);
// Create a System Task that Processes
(TRANS_TASK) Transparently Transmitting Data
// ETSEvent -> ETSSignal sig =
TRANS_TASK_PROI 0~3 0=Lowest
// ETSEvent -> ETSPram par = trans_Queue
system_os_task(trans_task,
TRANS_TASK_PROI, trans_Queue, TRANS_QUEUE_LEN);
// Create TCP Server and Allocate address
for ESPCONN
pTcpServer = (struct espconn
*)os_zalloc((uint32)sizeof(struct espconn));
// Check TCP Server Setup OK
if (pTcpServer == NULL) {
OLED_Print(0, 2, "TCPServer
Failure!", 1);
return;
}
// Configure TCP Server Parameters
pTcpServer->type = ESPCONN_TCP;
pTcpServer->state = ESPCONN_NONE;
pTcpServer->proto.tcp = (esp_tcp
*)os_zalloc((uint32)sizeof(esp_tcp));
pTcpServer->proto.tcp->local_port
= 8888;
// Register Callback Connect
espconn_regist_connectcb(pTcpServer,
trans_server_listen);
espconn_accept(pTcpServer);
espconn_regist_time(pTcpServer, 180, 0);
// Closed Timer and Setup Timer
os_timer_disarm(&trans_interval_timer);
os_timer_setfn(&trans_interval_timer,
(os_timer_func_t *)transmit_data1, NULL);
}
|
ESP8266 模塊 WiFi Soft-AP TCP Server 模式 |
ESP8266 模塊 WiFi Soft-AP TCP Server 模式的 OLED 顯示 |
2017年 5月 17日 天氣報告
氣溫:26.0度 @ 20:00
相對濕度:百分之 78%
天氣:大致多雲
沒有留言:
張貼留言