esp8266 nvs应用

esp8266 nvs应用

一个芯片,做成一个产品,都会需要在断定的时候对一些数据进行保存,以esp8266为例,需要连接网络,所以设备必须能够保存ssid,password,否则设备如何联网,本文就结合上篇文章at命令的开发,通过at命令将ssid,password调用nvs接口,将数据保存起来,设备开机,直接读取后进行联网操作。

1.增加at命令方法

1.at命令增加到列表

atcmd_table_t at_table[] = {
    {"AT+TEST",at_test_fun},
    {"AT+CONNECTWIFI",at_connect_wifi_fun},

};

2.实现at命令处理函数at_connect_wifi_fun
联网(写ssid,password):AT+CONNECTWIFI=1234,12345678[回车]
读取ssid.password:AT+CONNECTWIFI=read[回车]

void at_connect_wifi_fun(int argc,char * argv)
{
    wifi_msg_t wifi_msg_new;
    char msg_str[64];
    char *p;
    nvs_handle handle_wifi;
    int len = 0;
    int rc;

    
    memset(&wifi_msg_new,0,sizeof(wifi_msg_new));
    memset(msg_str,0,64);

    //argc 参数长度,argv内容
    if(0 != strncmp(argv,"read",4))
    {
        printf("---write\n");
        //写wifi ssid password
        memcpy(msg_str,argv,argc);
        printf("at parameter:%s\n",msg_str);
        
        p = strchr(msg_str,',');
        //提取ssid'
        memcpy(wifi_msg_new.ssid,msg_str,(p-msg_str));
        //
### ESP8266 IDF版本与芯片兼容性 ESP8266 是一款广泛应用于物联网领域的低成本、高性能 Wi-Fi 模块。尽管 ESP-IDF(Espressif IoT Development Framework)主要针对 ESP32 系列芯片开发,但 Espressif 也提供了对 ESP8266 的支持。 #### 1. 支持的 IDF 版本 ESP8266 的开发可以通过 ESP-IDF 实现,但其支持的 IDF 版本相对有限。以下为支持情况: - **ESP-IDF v3.x**:这是最早支持 ESP8266 的版本之一[^1]。开发者可以使用该版本进行基础的 Wi-Fi 和网络功能开发。 - **ESP-IDF v4.x**:此版本继续支持 ESP8266,并在稳定性、工具链和组件支持方面有所改进[^1]。 - **ESP-IDF v5.x 及更高版本**:从 v5.x 开始,Espressif 将重心更多地放在 ESP32 系列芯片上,因此对 ESP8266 的支持逐渐减少。不过,部分功能仍然可用,但建议开发者关注官方文档以确认具体支持情况。 #### 2. 芯片兼容性 ESP8266 系列芯片本身并不区分多个型号,其核心硬件架构基本一致。因此,在支持的 IDF 版本范围内,所有 ESP8266 芯片均可正常工作。需要注意的是,某些特定功能可能依赖于芯片的具体实现或外围电路设计,例如 GPIO 引脚布局、电源管理等。 #### 3. 开发环境配置 为了在 ESP-IDF 下开发 ESP8266 项目,需要完成以下配置: - **安装工具链**:确保安装了适用于 ESP8266 的工具链。可以通过运行 `./install.sh esp8266` 安装相关依赖[^2]。 - **设置目标芯片**:在项目中通过命令 `idf.py set-target esp8266` 设置目标芯片类型[^2]。 - **示例代码编译**:使用 `idf.py build` 编译项目,并通过 `idf.py flash` 将固件烧录到设备中。 #### 4. 功能特性对比 虽然 ESP8266 和 ESP32 都基于 Espressif 的硬件平台,但在功能支持上存在显著差异: - **实时操作系统 (RTOS)**:ESP8266 使用 FreeRTOS 的简化版本,而 ESP32 提供完整的 FreeRTOS 支持[^3]。 - **外设支持**:ESP8266 主要专注于 Wi-Fi 和基础 GPIO 功能,而 ESP32 还支持蓝牙、以太网、SPI、I2C 等更多外设。 - **性能优化**:ESP8266 的性能优化选项较少,适合简单的物联网应用;ESP32 则更适合复杂场景下的低功耗和高性能需求。 #### 5. 示例代码 以下是一个简单的 ESP8266 示例代码,展示如何初始化 Wi-Fi 并连接到接入点: ```c #include "esp_wifi.h" #include "esp_event.h" static void wifi_init_sta(void) { wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); esp_wifi_init(&cfg); wifi_config_t wifi_config = { .sta = { .ssid = "your_ssid", .password = "your_password", }, }; esp_wifi_set_mode(WIFI_MODE_STA); esp_wifi_set_config(ESP_IF_WIFI_STA, &wifi_config); esp_wifi_start(); } void app_main(void) { nvs_flash_init(); tcpip_adapter_init(); wifi_init_sta(); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值