一、为什么要用最新的3.4

  1. 因为ESP_IDF 4.4的 kconfig 和RTOS SDK的不兼容,我这里是想8266和32用同一个虚拟机,也不想各种折腾,所以就升级到3.4了

二、修改步骤

  1. 注意看对应的GCC,这里匹配到的是 8.4.0,3.0的用5.2,2.x的用4.8 ,nonos也用4.8

  2. smartconfig的start函数的参数有区别,sc回调去掉了,直接放到event里面去了
    3.0的SDK:

    ESP_ERROR_CHECK( esp_smartconfig_start(sc_callback) );
    

    3.4的SDK:

    smartconfig_start_config_t cfg = SMARTCONFIG_START_CONFIG_DEFAULT();
    ESP_ERROR_CHECK(esp_smartconfig_start(&cfg));
    

    具体参考smartconfig例子,这里IP WIFI SC事件,都注册到同一个回调里面去

       ESP_ERROR_CHECK(esp_event_handler_register(WIFI_EVENT, ESP_EVENT_ANY_ID, &event_handler, NULL));ESP_ERROR_CHECK(esp_event_handler_register(IP_EVENT, IP_EVENT_STA_GOT_IP, &event_handler, NULL));ESP_ERROR_CHECK(esp_event_handler_register(SC_EVENT, ESP_EVENT_ANY_ID, &event_handler, NULL));
    
    /* Esptouch exampleThis example code is in the Public Domain (or CC0 licensed, at your option.)Unless required by applicable law or agreed to in writing, thissoftware is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES ORCONDITIONS OF ANY KIND, either express or implied.
    */#include <string.h>
    #include <stdlib.h>
    #include "freertos/FreeRTOS.h"
    #include "freertos/task.h"
    #include "freertos/event_groups.h"
    #include "esp_wifi.h"
    #include "esp_event.h"
    #include "esp_log.h"
    #include "esp_system.h"
    #include "nvs_flash.h"
    #include "tcpip_adapter.h"
    #include "esp_smartconfig.h"
    #include "smartconfig_ack.h"/* The examples use smartconfig type that you can set via project configuration menu.If you'd rather not, just change the below entries to enum withthe config you want - ie #define EXAMPLE_ESP_SMARTCOFNIG_TYPE SC_TYPE_ESPTOUCH
    */
    #define EXAMPLE_ESP_SMARTCOFNIG_TYPE      CONFIG_ESP_SMARTCONFIG_TYPE/* FreeRTOS event group to signal when we are connected & ready to make a request */
    static EventGroupHandle_t s_wifi_event_group;/* The event group allows multiple bits for each event,but we only care about one event - are we connectedto the AP with an IP? */
    static const int CONNECTED_BIT = BIT0;
    static const int ESPTOUCH_DONE_BIT = BIT1;
    static const char* TAG = "smartconfig_example";static void smartconfig_example_task(void* parm);static void event_handler(void* arg, esp_event_base_t event_base,int32_t event_id, void* event_data)
    {if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_START) {xTaskCreate(smartconfig_example_task, "smartconfig_example_task", 4096, NULL, 3, NULL);} else if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_DISCONNECTED) {esp_wifi_connect();xEventGroupClearBits(s_wifi_event_group, CONNECTED_BIT);} else if (event_base == IP_EVENT && event_id == IP_EVENT_STA_GOT_IP) {xEventGroupSetBits(s_wifi_event_group, CONNECTED_BIT);} else if (event_base == SC_EVENT && event_id == SC_EVENT_SCAN_DONE) {ESP_LOGI(TAG, "Scan done");} else if (event_base == SC_EVENT && event_id == SC_EVENT_FOUND_CHANNEL) {ESP_LOGI(TAG, "Found channel");} else if (event_base == SC_EVENT && event_id == SC_EVENT_GOT_SSID_PSWD) {ESP_LOGI(TAG, "Got SSID and password");smartconfig_event_got_ssid_pswd_t* evt = (smartconfig_event_got_ssid_pswd_t*)event_data;wifi_config_t wifi_config;uint8_t ssid[33] = { 0 };uint8_t password[65] = { 0 };uint8_t rvd_data[33] = { 0 };bzero(&wifi_config, sizeof(wifi_config_t));memcpy(wifi_config.sta.ssid, evt->ssid, sizeof(wifi_config.sta.ssid));memcpy(wifi_config.sta.password, evt->password, sizeof(wifi_config.sta.password));wifi_config.sta.bssid_set = evt->bssid_set;if (wifi_config.sta.bssid_set == true) {memcpy(wifi_config.sta.bssid, evt->bssid, sizeof(wifi_config.sta.bssid));}memcpy(ssid, evt->ssid, sizeof(evt->ssid));memcpy(password, evt->password, sizeof(evt->password));ESP_LOGI(TAG, "SSID:%s", ssid);ESP_LOGI(TAG, "PASSWORD:%s", password);if (evt->type == SC_TYPE_ESPTOUCH_V2) {ESP_ERROR_CHECK( esp_smartconfig_get_rvd_data(rvd_data, sizeof(rvd_data)) );ESP_LOGI(TAG, "RVD_DATA:%s", rvd_data);}ESP_ERROR_CHECK(esp_wifi_disconnect());ESP_ERROR_CHECK(esp_wifi_set_config(ESP_IF_WIFI_STA, &wifi_config));ESP_ERROR_CHECK(esp_wifi_connect());} else if (event_base == SC_EVENT && event_id == SC_EVENT_SEND_ACK_DONE) {xEventGroupSetBits(s_wifi_event_group, ESPTOUCH_DONE_BIT);}
    }static void initialise_wifi(void)
    {tcpip_adapter_init();s_wifi_event_group = xEventGroupCreate();ESP_ERROR_CHECK(esp_event_loop_create_default());wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();ESP_ERROR_CHECK(esp_wifi_init(&cfg));ESP_ERROR_CHECK(esp_wifi_set_ps(WIFI_PS_NONE));ESP_ERROR_CHECK(esp_event_handler_register(WIFI_EVENT, ESP_EVENT_ANY_ID, &event_handler, NULL));ESP_ERROR_CHECK(esp_event_handler_register(IP_EVENT, IP_EVENT_STA_GOT_IP, &event_handler, NULL));ESP_ERROR_CHECK(esp_event_handler_register(SC_EVENT, ESP_EVENT_ANY_ID, &event_handler, NULL));ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA));ESP_ERROR_CHECK(esp_wifi_start());
    }static void smartconfig_example_task(void* parm)
    {EventBits_t uxBits;ESP_ERROR_CHECK(esp_smartconfig_set_type(EXAMPLE_ESP_SMARTCOFNIG_TYPE));smartconfig_start_config_t cfg = SMARTCONFIG_START_CONFIG_DEFAULT();ESP_ERROR_CHECK(esp_smartconfig_start(&cfg));while (1) {uxBits = xEventGroupWaitBits(s_wifi_event_group, CONNECTED_BIT | ESPTOUCH_DONE_BIT, true, false, portMAX_DELAY);if (uxBits & CONNECTED_BIT) {ESP_LOGI(TAG, "WiFi Connected to ap");}if (uxBits & ESPTOUCH_DONE_BIT) {ESP_LOGI(TAG, "smartconfig over");esp_smartconfig_stop();vTaskDelete(NULL);}}
    }void app_main()
    {ESP_ERROR_CHECK(nvs_flash_init());initialise_wifi();
    }
  3. Cjson需要修改 pirnt_number函数

  4. mqtt需要使用url,不可以使用port和 host ,event handle可以和以前一样直接在config里面

    esp_mqtt_client_config_t mqtt_cfg = {//.uri = CONFIG_BROKER_URL,//.host = "xxxxxx",            //MQTT服务器IP.uri = "mqtt://xxxxxxxxxx:1883",.event_handle = mqtt_event_handler, //MQTT事件//.port=1883,                         //端口.username = "3cXbC4LtLs21D3uHm77h",                //用户名.client_id = "4afd0a80-58cd-11ec-9209-b7aebb52f70b",// .password = "public",               //密码// .user_context = (void *)your_context};ESP_LOGI(TAG, "uri:%s\r\nusername:%s\r\nclient_id:%s\r\n",mqtt_cfg.uri,mqtt_cfg.username,mqtt_cfg.client_id);esp_mqtt_client_handle_t client = esp_mqtt_client_init(&mqtt_cfg);//esp_mqtt_client_start(client);// esp_mqtt_client_register_event(client, ESP_EVENT_ANY_ID, mqtt_event_handler, client);esp_mqtt_client_start(client);

ESP8266 RTOSSDK3.0 的工程同步到3.4相关推荐

  1. 乐鑫esp8266学习rtos3.0笔记第9篇:整理分享那些我在项目中常用的esp8266 rtos3.0版本的常见驱动,Button按键长短按、PWM平滑调光等。(附带demo)

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. Esp8266之 搭建开发环境,开始一个"hello ...

  2. “智慧机场3.0”样板工程 北京大兴机场物联网系统有多牛?

    9月25日,备受瞩目的北京大兴国际机场正式投入运营,凤凰展翅,振翅高飞! 作为民航局打造的"智慧机场3.0"样板工程,北京大兴国际机场利用物联网技术.云计算及存储.个人智能终端.虚 ...

  3. 用esp8266驱动0.96寸OLED屏幕 太空人动画

    昨天闲来没事玩了一下OLED屏幕 之前只是做过显示图片 还没弄过动画的 (其实差不多–) 用esp8266驱动0.96寸LED屏幕 太空人动画 入门esp8266 看这篇文章 参考https://bl ...

  4. RVDS4.0建立工程

    1.打开RVDS4.0 选择工程目录,建议不要使用中文路径. 2. 点击右边的那个图标进入工程界面. 3. 点击那个箭头选择RealView Project开始新建工程. 4. 填写工程名称, 5.点 ...

  5. VC6.0的工程设置解读Project--Settings

    做开发差不多一年多了,突然感觉对VC的工程设置都不是很清楚,天天要和VC见面,虽然通常情况下一般都不会修改工程设置,但是还是有必要对它的一些设置项的来龙去脉有一定的了解,所以狂查资料,稍作整理,总结一 ...

  6. VC6.0的工程设置解读Project--Settings - 查志强(转载)

    blogs.com/zhazhiqiang/p/3597622.html 主题 Visual C++ 数据库 [原文: http://wenku.baidu.com/view/f10a241dff00 ...

  7. esp8266加0.91寸oled显示屏制作天气时钟

    前言 上两周做了个客制化键盘,将esp8266改在键盘里面了显示始终天气等信息,演示视频看我B站视频:200块改的键盘,没错,你是来听歌的,五分钟剪的视频. 键盘制作教程在最后的参考资料里,自行查看. ...

  8. mysql 8.0配置主从同步_MySQL8.0.19开启GTID主从同步CentOS8

    前言本次搭建目标为1主2从MySQL主从同步结构.采用CentOS8作为操作系统,IP为[10.0.0.211,10.0.0.212,10.0.0.213].MySQL版本为8.0.19,端口均采用3 ...

  9. vc6.0打开工程出现程序崩了的原因

    4.在VC6.0中点击Tools-Customize 5. 在出现的"Customize"对话框中,点击Add-Ins and Macro Files标签 6. 点击Browse, ...

最新文章

  1. 人工智能第一股“旷视科技”赴港递交IPO材料 半年亏损52亿估值280亿
  2. CSDN移动博文集锦之Android核心分析 (Z)
  3. linux touch更新文件时间,Linux文件时间的查看和修改touch
  4. 四川大学java语言程序设计_四川大学2014年计算机(软件)学院Java语言设计期末考试B卷程序.doc...
  5. 摄影测量--空间距离交会
  6. 25.QWidget用法
  7. 左右mysql事务提交
  8. 图片相框展示的设计与实现
  9. PHP 使用header函数设置HTTP头的示例方法 表头(转)
  10. 第六章 静电场中的导体和电介质
  11. [2018.07.10 T2]不回文
  12. intel vPro LMS模块 Linux环境编译
  13. 3.2 发送请求参数
  14. NXP i.MX 8处理器再扩军!全新i.MX 8X处理器剑指工业与汽车应用
  15. 微信公众号群发图文消息
  16. 设计和QQ一样动态登录界面
  17. UPnP的功能和使用
  18. Imagination官方信息速递2020年11月期
  19. Google Android SDK开发范例大全
  20. 如何改善C++代码项目的构建效率,降低构建时间?

热门文章

  1. krait和kryo_java原生序列化和Kryo序列化性能实例对比分析
  2. Android系统OTA升级
  3. 熊猫烧香案疑犯抓捕全程揭秘
  4. 你真的了解计算机病毒吗?内容很“干”,记得喝水
  5. [jzoj 1273] 袁绍的刁难 {推理}
  6. rancher 企业级容器管理平台
  7. 未能找到引用的组件“Microsoft.Office.Core”
  8. html5实现像素鸟,有趣的Axure案例:像素鸟游戏的设计
  9. Ubuntu有线网络无法连接—有线网络连接图标变为灰色,无法点击
  10. 中基鸿业分析投资应该注意的事项