一、AT(請參照AT文檔進行)
1.設置makefile:
BOOT?=none APP?=0 SPI_SPEED?=40 SPI_MODE?=QIO SPI_SIZE_MAP?=0
2.修改user_init()函數:
#include "osapi.h" #include "at_custom.h" //實現AT集的SDK函數 void user_rf_pre_init(void) { } void user_init(void) { at_init(); //初始化AT指令 at_port_print("\r\nready\r\n"); //打印ready命令 }
3.at_custom.h文件為使用AT指令的SDK函數集
用戶自定義AT指令例程在官方examples有。
二、IOT+driver_lib(請參照IOT文檔進行)
1.將driver_lib中的文件按IOT目錄進行復制,注意app下的makefile應該以實際目錄一致。
2.設置makefile:(與上一致)
3.修改user_init()函數:
#include "osapi.h" #include "driver/uart.h" //串口外設驅動庫 void user_rf_pre_init(void) { } void esp_init_ok(void) { uart0_sendStr("Hello Esp8266!\r\n"); } void user_init(void) { uart_init(BIT_RATE_115200,BIT_RATE_115200); //設置uart0和uart1串口波特率 system_init_done_cb(esp_init_ok); }
注意該uart_init()函數開啟了一個接收處理task,串口發送什么就會返回什么。
三、smart_config
1.設置makefile:(與上一致)
2.user_init()函數:
#include "ets_sys.h" #include "osapi.h" #include "user_interface.h" #include "smartconfig.h" void ICACHE_FLASH_ATTR smartconfig_done(sc_status status, void *pdata) { switch(status) { case SC_STATUS_WAIT: os_printf("SC_STATUS_WAIT\n"); break; case SC_STATUS_FIND_CHANNEL: os_printf("SC_STATUS_FIND_CHANNEL\n"); break; case SC_STATUS_GETTING_SSID_PSWD: os_printf("SC_STATUS_GETTING_SSID_PSWD\n"); sc_type *type = pdata; if (*type == SC_TYPE_ESPTOUCH) { os_printf("SC_TYPE:SC_TYPE_ESPTOUCH\n"); } else { os_printf("SC_TYPE:SC_TYPE_AIRKISS\n"); } break; case SC_STATUS_LINK: os_printf("SC_STATUS_LINK\n"); struct station_config *sta_conf = pdata; wifi_station_set_config(sta_conf); wifi_station_disconnect(); wifi_station_connect(); break; case SC_STATUS_LINK_OVER: os_printf("SC_STATUS_LINK_OVER\n"); if (pdata != NULL) { uint8 phone_ip[4] = {0}; os_memcpy(phone_ip, (uint8*)pdata, 4); os_printf("Phone ip: %d.%d.%d.%d\n",phone_ip[0],phone_ip[1],phone_ip[2],phone_ip[3]); } smartconfig_stop(); break; } } void user_rf_pre_init(void) { } void user_init(void) { os_printf("SDK version:%s\n", system_get_sdk_version()); smartconfig_set_type(SC_TYPE_ESPTOUCH); //SC_TYPE_ESPTOUCH,SC_TYPE_AIRKISS,SC_TYPE_ESPTOUCH_AIRKISS wifi_set_opmode(STATION_MODE); smartconfig_start(smartconfig_done); }
使用ESP8266上電后,一直等到APPwifi配置;
espTouch軟件與esp8266通訊並傳輸連接公網的wifi賬號和密碼到esp8266上;
當esp8266連接到公網后,smartconfig任務完成。