功能:LED_1和LED_2可以同时用APP和KEY1和KEY2按键(短按)控制

一、硬件电路及开发环境的搭建
1.硬件电路
首先是从某宝购买WIFI模块ESP8266 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。进入开发者中心

  1. 创建产品

  2. 产品分类:自定,影响不大;
    产品名称:自定,影响不大;
    技术方案: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];

}

找到下面的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");  //日志

}

/**

  • 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");  //日志

}

/**

  • 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.

写得比较琐粹,大佬请略过。。。

未完待续。。。

ESP8266 NodeMcu机智云SOC方案开发经验分享相关推荐

  1. 小白用ESP8266NodeMcu机智云SOC方案开发经验分享

    实现的功能:LED_1和LED_2可以同时用APP和KEY1和KEY2按键(短按)控制适合入门级萌新, 功能:LED_1和LED_2可以同时用APP和KEY1和KEY2按键(短按)控制 一.硬件电路及 ...

  2. 关于ESP8266-01使用机智云SOC方案驱动IO2控制继电器操作

    关于ESP8266-01使用机智云SOC方案控制IO2驱动继电器 首先创建机智云账号,创建产品, 添加数据点 创建SOC方案,选好各项参数 下载 安装二次开发环境,不会的可以自行百度,教程比较详细 下 ...

  3. 用机智云SOC方案,开发一款月球灯

    写在前面:又是一年佳节时,一想到元宵节,扑面而来的是汤圆,一颗颗圆圆的汤圆,有白色糯米味的.有紫薯味的.还有黄色小米味的,五彩斑斓的颜色,就像生活一样,多姿多彩.我想做一个能变换各种颜色的月球灯,来点 ...

  4. esp8266接入机智云

    目录 前言 材料准备 模块介绍 焊接操作 软件操作 测试wifi板子 烧录机智云固件 连线展示 上云 前言 在完成毕业设计时,需要用到物联网相关知识,于是就买了esp8266模块:esp-01s.最开 ...

  5. STM32通过ESP8266利用机智云平台实现手机远程操作

    STM32通过ESP8266利用机智云平台实现手机远程操作 将STM32作为主控芯片,ESP8266作为外设,利用串口传递信息,通过机智云平台实现STM32与手机之间的数据传输!之所以选择机智云平台, ...

  6. 第十章 STM32+ESP8266接入机智云 实现小型IOT智能家居项目

    前言 最近有不少小伙伴私信留言,想要我推出一章能够通过APP进行远程控制并获取传感器信息的实验教程.说实话在嵌入式毕设里边,这算是中等偏上水平的了.刚好我也有兴趣写写.全篇4700多字,我写的很详细, ...

  7. STM32使用ESP8266接入机智云点亮LED教程

    首先我们要访问机智云的官网,注册相应的开发者账号. 机智云开发者中心 点击立即注册后,登陆刚刚注册的账号,来到开发者中心,可以看到如下界面. 点击右侧的创建新产品,开始我们的demo创建. 产品分类, ...

  8. 腾讯云SOC方案入选CIC工信安全优秀解决方案

    近日,国家工业信息安全发展研究中心(CIC工信安全)公布了第二届信息技术应用创新安全优秀解决方案. 腾讯"云原生安全Cloud SOC智能安全检测响应预测全局态势感知解决方案 "( ...

  9. esp8266连接机智云

    文章目录 一.机智云固件烧录 二.代码移植 三.连接机智云 四.附件 一.机智云固件烧录 硬件:正点原子的ESP8266 flash:32MB 模组:安可信 固件在附件的安信可ESP8266系列模组- ...

最新文章

  1. 从零开始一起学习SLAM | SLAM有什么用?
  2. windows 10占用cpu和内存过高
  3. 【控制】《多无人机协同控制技术》周伟老师-第1章-无人机协同控制技术概述
  4. 反手发力动作--乒在民间
  5. 贷款,别相信这些人!
  6. 了解android应用开发的更多方面有更好的认识
  7. 如果不懂Service mesh,就不要谈微服务了
  8. 【2019CSP-J 普及组题解】数字游戏(number),公交换乘(transfer),纪念品(souvenir),加工领奖(work) CSP普及游记
  9. 深度学习目标检测系列:一文弄懂YOLO算法|附Python源码
  10. windbg-获取结构体大小(常用的两种方式)
  11. 腾讯大佬和你闲聊图像分割这件事儿
  12. Pulsar:一款功能强大的可视化网络足迹扫描平台
  13. JavaScript模块化开发(一)基础知识
  14. Atitit knowmng file list知识管理文档索引 目录时索引 part1
  15. 计算机组成原理-白中英版
  16. acrobat PDF删除部分_迅捷PDF转换器3.2.0Mod会员版
  17. Python基础知识入门(一)
  18. msn邮箱在哪里登录?
  19. 车标识别 深度学习车标识别 神经网络车标识别 cnn车标识别 目标检测 yolo识别
  20. matlab igbt 关断,IGBT关断过程分析

热门文章

  1. Jasper导出excel
  2. 小白组装电脑详细教程
  3. SQL 语句集合(行转列,参数化...)
  4. 用Marvelous Designer是如何构建人物角色3d服装的
  5. 中国移动光猫桥接模式
  6. 阵列中条带(stripe)、stripe unit
  7. MIZ7035上的AXI接口的MIG测试
  8. 2022年衡量技术债务的8个主要指标
  9. xUitls3框架的入门级使用及部分解析
  10. 《Linuxnbsp;Kernelnbsp;Development》读书…