一、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任务完成。