• 女性之声——全国妇联 2019-03-19
  • 【理上网来·辉煌十九大】德国北威州经济部长:十九大报告表明中国有能力为世界做出更多贡献 2019-03-11
  • 全国小麦收获进度过八成 2019-03-07
  • 【人事】中共临汾市委组织部公示3名拟任职干部 2019-03-07
  • 这泼猴,物理。古文,哲学,基础语文,那一项没出丑?看着就想笑 2019-02-20
  • 云南理发店老板涉嫌杀害女演员因办卡纠纷起杀心 2019-02-20
  • 1至5月我区为企业和社会减负4200余万元 2019-02-09
  • 【学习时刻】参会专家盛小云:坚定文化自信,用高尚的作品引领社会风尚 2019-01-28
  • 绘就生态文明新画卷—甘南州造林绿化工作纪实 2019-01-28
  • 某些人总是用“客观事实”来为自己壮胆,实际上根本不懂什么是“客观事实。 2019-01-12
  • 圣洁的雪山文章中国国家地理网 2018-11-22
  • 崇尚英雄 精忠报国——我们家的报国故事 2018-11-22
  • 618史上最壕“买家”现身 Google以 5.5亿美元投资京东 2018-11-21
  • 看好啦!是时候表演真正的技术了 2018-11-21
  • 日本大阪6.1级地震已致4人死亡 370多人受伤 2018-11-20
  • 打印

    广东福彩36选7走势图: [机智云IoT云服务] ESP8266 NodeMcu机智云SOC方案开发经验分享

    [复制链接]
    752|7
    跳转到指定楼层
    楼主
    实现的功能:LED_1LED_2可以同时用APPKEY1KEY2按键(短按)控制适合入门级萌新,大佬请略过,谢谢!



    功能:LED_1和LED_2可以同时用APP和KEY1和KEY2按键(短按)控制
    一、硬件电路及开发环境的搭建
    1.硬件电路
    首先是从某宝购买WIFI??镋SP8266 NodeMcu,我买的下图这款,4M内存不可接天线,应该是13.5元包邮。现在一直在用,感觉还比较稳定,那种可接天线内存小的还没用过不知咋样。其他的元器件,有两个LED,两个微动开关,面包板,杜邦线若干,5v直流电源。

    有个情况要说明下,这种WIFI??橛辛街?,一种正常工作时右上角蓝色LED不闪,只有通电时闪一下;另一种是正常工作和通电时都会闪。我买了两块,刚好碰到这两种情况,开始以为是坏的,哈哈。
    (1)电路图

    (2)电路实物图

    2.开发环境的搭建
    如果是Windows 64位操作系统,可以下载下面这个集成开发环境
    链接:https://pan.baidu.com/s/1CdruAWopdVWMEzxKOEJ4uA 提取码:12ct
    如果不是的话,可以在百度“乐鑫集成开发环境”,应该很容易找到。
    下载好后压解到一个你喜欢的地方,我习惯压解在D盘,压解好后就下图这样。桌面也会出现AiThinker_IDE和ConfigTool两个快捷图标。

    打开这个压解好的AiThinkerIDE_V0.5文件夹,蓝框里面EXE文件对应桌面上的两个图标

    打开蓝框里ConfigTool.exe,下图1,2路径对应上图红框中的内容。如果电脑已经装过eclipse,可以选择安装好的eclipse 的路径。然后点击注册3,再点击保存4,窗口会自动退出??⒒肪尘团渲煤昧?。

    可以点击蓝框里的AiThinker_IDE.exe或者点击桌面的快捷方式图标就可进入开发环境。

    二、机智云开发者中心
    接下来是机智云开发者中心上的操作。注册账号应该是基本操作,就不费时间写了。主要讲数据点和自动生成的程序和下载测试APP。进入开发者中心
    • 创建产品
    • 产品分类:自定,影响不大;
      产品名称:自定,影响不大;
      技术方案:Wi-Fi/移动网络方案;
      通讯方式:Wi-Fi
      数据传输方式:定长

    3.产品创建好后

    4.打开创建好的产品

    5.点击显示完整秘钥,输入登入密码Product Secret就会完整显示,将黑色隐藏的Product Key和显示的Product Secret复制到一个记事本中,以后有用。
    6.点击左侧数据点,创建数据点。我创建好的数据点如下

    下面两个数据点不用创建,我之前打算用DHT11温湿度传感器来获取temperature温度和humidity湿度,可能是??榛盗?,一直读不到值,所以这里就不做介绍了。
    我这里使用了两个可写布尔值的数据点,LED_1和LED_2,用于控制LED的开关。(有条件的可以买继电器,通过控制继电器来控制家里的220v电灯或者插座的开关。废话一句,哈哈)。
    Tips:标识名可以自定,但是最好让人比较容易看懂,创建好后点应用。
    7.点左侧MCU开发,选择右侧SOC方案
    粘贴上复制在记事本中的Product Secret ,点击生产代码包,生成好后,点击下载

    8.下载测试APP,点击顶部下载中心

    进入下载中心后,点击左侧“机智云Wi-Fi/移动通信产品调试APP”

    可选择扫码下载,安装在手机上,以备后用。

    三、修改自动生成的代码、编译并烧录
    1.修改代码
    将上面第7步下载好的压缩包压解到桌面(位置自定,根据个人习惯),打开开发环境软件,也就是这个

    打开后是这样

    然后是导入压解好的代码包
    点击左上角File,然后是import

    点击C/C++,然后点击Existing Code as Makefile Project

    数字1处选择代码压解到的位置,数字2处选择第3个

    导入好后,展开文件夹,并双击打开左侧红框内的文件,按照右侧红框内容修改。
    大概第22行:改BOOT?=new、改APP?=1、如果只有两个数据点改SPI_SIZE_MAP?=2。

    如下图展开文件夹,要修改的就是下面红框中的5个文件

    首先打开gizwits_product.h,定义一个矩阵extern bool STA[2];用于存储数据点LED_1和LED_2的状态。

    然后打开gizwits_product.c,初始化定义的矩阵bool STA[2]={0};

    找到 int8_t ICACHE_FLASH_ATTR gizwitsEventProcess(eventInfo_t *info, uint8_t *data, uint32_t len) 大概在47行,黑框中的为机智云上定义的数据点名称,红光中的为添加的内容。

    Tips:这个板子和我们常见的板子(51、STM32)不一样,它的IO口置1时,实际输出低电平。
    我们的LED是用的共阳机接法,详见电路图。
    然后是扫描数据点LED_1和LED_2的状态,并上报,添加红框中的两条代码
    #define USER_TIME_MS   100
    #define LED_TIMEOUT (100/USER_TIME_MS)  定义100ms

    这两条添加到user_main.c里面,避免编译的时候出现错误

    另外改gizwits_protocol.c 中的
    #define USER_TIME_MS   100 可以降低控制延时

    找到gizwits_protocol.c 中的void ICACHE_FLASH_ATTR userHandle(void),这个上报程序
    添加以下代码
    GPIO_OUTPUT_SET(GPIO_ID_PIN(4),!STA[0]);
    GPIO_OUTPUT_SET(GPIO_ID_PIN(5),!STA[1]);
    static uint8_t ledtime=0;   //每100ms上报一次数据点状态
    ledtime++;
    if(LED_TIMEOUT<ledtime)
    {
    ledtime=0;
    currentDataPoint.valueLED_1=STA[0];
    currentDataPoint.valueLED_2=STA[1];
    }
    • 1

    找到下面的void ICACHE_FLASH_ATTR userInit(void),这个是数据点初始化
    修改如下
    currentDataPoint.valueLED_1 = 0;
    currentDataPoint.valueLED_2 = 0;

    然后是改user_main.c文件,找到大概第55行
    按如下修改
    #define GPIO_KEY_NUM                            2              // 定义总按键数
    #define KEY_0_IO_MUX                            PERIPHS_IO_MUX_GPIO0_U //
    #define KEY_0_IO_NUM                            0
    #define KEY_0_IO_FUNC                           FUNC_GPIO0
    #define KEY_1_IO_MUX                            PERIPHS_IO_MUX_GPIO2_U
    #define KEY_1_IO_NUM                            2
    #define KEY_1_IO_FUNC                           FUNC_GPIO2

    接下来改KEY1也就是GPIO0对应的开关
    LOCAL void ICACHE_FLASH_ATTR key1ShortPress(void)   //KEY1短按
    {
    if(STA[0]=!STA[0])    //取反,判断开关是否按下
    GIZWITS_LOG("#### GPIO0 short press ,LED_1 ON\n");  //日志elseGIZWITS_LOG("#### GPIO0 short press ,LED_1 OFF\n");  //日志
    • 1
    • 2
    • 3
    • 4
    • 5
    }
    /**
    • Key1 key presses a long press
    • @param none
    • @return none
      */
      LOCAL void ICACHE_FLASH_ATTR key1LongPress(void)   //KEY1长按
      {
      GIZWITS_LOG("#### GPIO0 long press, SOFTAP ON\n");  //日志
      gizwitsSetMode(WIFI_SOFTAP_MODE);   //设置为局域网模式

    接下来改KEY2也就是GPIO2对应的开关
    LOCAL void ICACHE_FLASH_ATTR key2ShortPress(void)  //KEY2短按
    {
    if(STA[1]=!STA[1])   //取反,判断开关是否按下
    GIZWITS_LOG("#### GPIO2 short press, LED_2 ON \n");  //日志
    elseGIZWITS_LOG("#### GPIO2 short press, LED_2 OFF \n");  //日志
    • 1
    • 2
    • 3
    }
    /**
    • Key2 button long press
    • @param none
    • @return none
      */
      LOCAL void ICACHE_FLASH_ATTR key2LongPress(void)   //KEY2长按
      {
      GIZWITS_LOG("#### GPIO2 long press, AIRLINK ON\n");  //日志
      gizwitsSetMode(WIFI_AIRLINK_MODE);  //设置为联网模式
    }
    }

    端口初始化
    LOCAL void ICACHE_FLASH_ATTR keyInit(void)
    {
    singleKey[0] = keyInitOne(KEY_0_IO_NUM, KEY_0_IO_MUX, KEY_0_IO_FUNC,
    key1LongPress, key1ShortPress);
    singleKey[1] = keyInitOne(KEY_1_IO_NUM, KEY_1_IO_MUX, KEY_1_IO_FUNC,
    key2LongPress, key2ShortPress);
    keys.singleKey = singleKey;
    keyParaInit(&keys);
    PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO4_U,FUNC_GPIO4);//配置LED_1管脚为输出
    GPIO_DIS_OUTPUT(GPIO_ID_PIN(4));
    PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO5_U,FUNC_GPIO5);//配置LED_2管脚为输出
    GPIO_DIS_OUTPUT(GPIO_ID_PIN(5));
    GPIO_OUTPUT_SET(GPIO_ID_PIN(4), 0);//输出高电平
    GPIO_OUTPUT_SET(GPIO_ID_PIN(5), 0);//输出高电平
    }

    所有的代码都修改好了,开始编译,右击项目名,点击Build Project

    编译成功

    烧录,烧录工具可以下载我这个
    链接:https://pan.baidu.com/s/1_Bhds-uE9GreQpfVwJ2m7g
    提取码:e0kr

    下载好后,打开ESPFlashDownloadTool_v3.6.4.exe这个程序,点击第一个

    选择编译好的文件,路径、COM仅供参考,根据实际情况设置。下面的设置如下图
    C:\Users\Administrator\Desktop\SoC_ESP8266_32M_source\bin\boot_v1.6.bin
    0x00000
    C:\Users\Administrator\Desktop\SoC_ESP8266_32M_source\bin\upgrade\user1.4096.new.4.bin
    0x01000
    C:\Users\Administrator\Desktop\SoC_ESP8266_32M_source\bin\esp_init_data_default.bin
    0x3fc000
    C:\Users\Administrator\Desktop\SoC_ESP8266_32M_source\bin\blank.bin
    0x3fe000

    终于弄完了软硬件,终于到看成果的时候了,是不是很激动。
    还有一步没完成,配网。
    首先,你的手机要连上你家里的WIFI。
    打开下载的机智云手机APP,点击跳过,不用登入

    点击右上角的+号,点击一键配置

    填入你家里WIFI账号和密码

    选择乐鑫,点击确定

    长安KEY2键,3S以上松开,点击手机上的“我已完成上述操作”

    配网成功


    LED_1和LED_2可以同时用APP和KEY1和KEY2按键(短按)控制了。
    祝君成功?。?!
    That’s  all,  thanks for your reading.
    写得比较琐粹,大佬请略过。。。
    未完待续。。。
    沙发
    | 2018-10-9 14:38 | 只看该作者
    比较琐碎,不过适合我这样的新手看,能看的明白。
    板凳
    | 2018-10-9 14:38 | 只看该作者
    感谢分享
    地板
    | 2018-11-6 20:21 | 只看该作者
    大牛:能把文件打包给我吧,我看一下
    5
    | 2018-11-9 13:00 | 只看该作者
    感谢分享呀  真心不错
    6
    | 2018-11-13 11:41 | 只看该作者


    谢谢分享,顶!
    7
    | 2018-12-27 13:23 | 只看该作者
    看不到图片啊,怎么回事
    8
    | 2019-1-28 14:41 | 只看该作者
    感谢分享,非常详细了。
    扫描二维码,随时随地手机跟帖
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    我要发帖 投诉建议 创建版块 申请版主

    快速回复

    您需要登录后才可以回帖
    登录 | 注册
    高级模式

    论坛热帖

    关闭

    热门推荐上一条 /3 下一条

    快速回复 广东快乐十分走势图 返回列表
  • 女性之声——全国妇联 2019-03-19
  • 【理上网来·辉煌十九大】德国北威州经济部长:十九大报告表明中国有能力为世界做出更多贡献 2019-03-11
  • 全国小麦收获进度过八成 2019-03-07
  • 【人事】中共临汾市委组织部公示3名拟任职干部 2019-03-07
  • 这泼猴,物理。古文,哲学,基础语文,那一项没出丑?看着就想笑 2019-02-20
  • 云南理发店老板涉嫌杀害女演员因办卡纠纷起杀心 2019-02-20
  • 1至5月我区为企业和社会减负4200余万元 2019-02-09
  • 【学习时刻】参会专家盛小云:坚定文化自信,用高尚的作品引领社会风尚 2019-01-28
  • 绘就生态文明新画卷—甘南州造林绿化工作纪实 2019-01-28
  • 某些人总是用“客观事实”来为自己壮胆,实际上根本不懂什么是“客观事实。 2019-01-12
  • 圣洁的雪山文章中国国家地理网 2018-11-22
  • 崇尚英雄 精忠报国——我们家的报国故事 2018-11-22
  • 618史上最壕“买家”现身 Google以 5.5亿美元投资京东 2018-11-21
  • 看好啦!是时候表演真正的技术了 2018-11-21
  • 日本大阪6.1级地震已致4人死亡 370多人受伤 2018-11-20