Esp8266开发日记-2.examples工程

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

 

posted @ 2015-12-31 20:35  L-liwen  阅读(2644)  评论(0编辑  收藏  举报