收藏官网首页
查看: 502038|回复: 676

[资料] 小黑板ESP8266无线wifi SoC方案连接机智云最详细图文教程

 

99

主题

103

帖子

930

积分

高级会员

Rank: 4

积分
930
发表于 2017-2-27 21:07:51 | 显示全部楼层 |阅读模式
注册成为机智云开发者,手机加虚拟设备快速开发
本帖最后由 bigfanofloT 于 2017-3-8 10:57 编辑

前言:本文详细介绍了小黑板接入机智云教程,通过一个手机APP远程控制LED亮灭的应用,完整的体验了机智云提供的一些列简单方便的开发工具,尤其是代码自动生成工具,懒人福音。
一、 esp8266简介
ESP8266 是上海乐鑫研发的高性能无线 SOC,旨在以最低成本提供最大实用性,为 WiFi 功能嵌入其他系统提供无限可能,被称为业界里程碑。通俗的讲就是高性能单片机+无线WiFi外设,特性如下:
ESP8266
低功耗、高集成度的 Wi-Fi 芯片
仅需 7 个**元器件
超宽工作温度范围:-40°C +125°C
ESP8285 ESP8266 内封 8 Mbit Flash
高度集成
ESP8266EX 是业内集成度最高的 Wi-Fi 芯片,最小封装尺寸仅为 5mm x 5mmESP8266EX 高度集成了天线开关、射频 balun、功率放大器、低噪放大器、过滤器和电源管理模块,仅需很少的**电路,可将所占 PCB 空间降到最低。
32 Tensilica MCU
ESP8266EX 内置 Tensilica L10632 位微型控制器 (MCU),具有超低功耗和 16 RSIC,时钟速度最高可达 160 MHz。支持实时操作系统 (RTOS),目前 Wi-Fi 协议栈只用了 20% MIPS,其他均可用于用户编程和开发。
低功耗
ESP8266EX 专为移动设备、可穿戴电子产品和物联网应用而设计,通过多项专有技术实现了最低功耗。ESP8266EX 有三种运行模式:激活模式、睡眠模式和深度睡眠模式,能够延长电池寿命。
性能稳定
ESP8266EX 集成了更多的元器件,性能稳定,易于制造,工作温度范围达到 -40°C +125°C
二、小黑板简介
1-小E正面图.png
小黑板是安信可基于ESP8266研发的开发板,板载1颗三色RGBLED,光敏电阻,3.3V LDO电源模块,以及1个轻触按键,可在官网查看原理图,原理图如下:
2-原理图.png
各个引脚的功能如下:
3-引脚功能.png
一、 开发步骤
首先明确下目的:通过手机APP控制RGB LED的亮灭。进一步分析,除了LED的驱动,我们还需要辅助,就是如何配置输入路由器的SSID和密码问题,利用板载的一颗轻触开关进行触发和机智云手机APP可轻而易举的实现smartconfig
利用机智云平台只需2步,1是底层LED驱动代码编写,2是利用代码自动生成工具生成工程框架,然后填充用户指令,比如开关灯。
准备工作:
第一步:了解机智云平台架构(可略过),戳我
第二步:了解机智云Soc方案(可略过),戳我
1.      首先在开发者中心创建产品:
4-开发者中心创建产品.png
2.      建立数据点(详解数据点):

数据点即设备产品的功能的抽象,用于描述产品功能及其参数。创建数据点后,设备与云端通讯的数据格式即可确定,设备、机智云可以相互识别设备与机智云互联互通的数据。
5-建立数据点.png
例如开关红灯的数据点:
6-开关红灯数据点.png
2.1 显示名称:自定义功能点名称。
2.2 标识名:用于应用层传输,客户端或业务云开发时需要使用。命名规则遵循标准的开发语言变量名命名规范,支持英文字母、数字和下划线,以英文字母开头。
2.3 读写类型:
① 只读:表示该数据点非控制,数据只支持从设备上报。
② 可写:表示该数据点可控制。设备端可上报该数据点数据;云端/客户端可对该数据点数据做出下发控制。
③ 报警:表示该数据点非控制,数据只支持从设备上报,数据类型需为布尔值。
④ 故障:表示该数据点非控制,数据只支持从设备上报,数据类型需为布尔值。云端会对设备上报的该数据点做统计,可在“运行状态”查看。
2.4 数据类型:

① 布尔值:表示两个状态:0,或1。如开关状态等,建议使用布尔数据类型。例如gokit开发板的宠物屋开启/关闭红色灯该数据点。
② 枚举类型:可定义一个有限的取值集合。当定义的某个功能(元器件)有固定的若干个值。例如GoKit开发板的宠物屋设定LED组合颜色该数据点的枚举定义值:自定义,黄色,紫色,粉色
③ 数值:填写数值范围,数值可为负数/小数,机智云自动将数值转换为正数。例如GoKit开发板的宠物屋设定电机转速该数据点:电机有正反转、调速功能,数据点值可定义为:-55
④ 扩展:填写数据长度,数据内容由用户自定义。对于上述功能点无法满足的复杂功能可采用。机智云不建议使用此类型数据,设备上报该数据点的数据,机智云无法识别。
1.5  备注:选填,用一段文本描述当前数据点的功能及定义方法,对字符格式不做限制。只用于提高数据点的易读性,如果需要团队协作开发,建议规范填写。

3.      选择SOC方案以生成工程:
7-选择方案.png
然后点击生成按钮即可生成完毕;
8-生成代码.png
9-生成好了代码.png

点击下载即可,下载后把它改名为MiniE_Test,因为那个名字实在是太长了。在开发向导里,有很多十分实用的工具和教程。
10-开发向导.png
4. 至此云端工作完毕,开始MCU端编程,下载生成的工程,目录如下:
11-目录.png
详情如下:
12-目录说明.png
生成的这个工程和官方的微信宠物屋源码框架是相似的,源码逻辑详解点我
下面编写RGB LED驱动头文件,命名为hal_led.h,并把它放到\MiniE_Test\app\include\driver目录:
13-LED头文件.png
接下来编写对应的C文件,命名为hal_led.c,并把它放到\MiniE_Test\app\driver目录:
14-LED初始化.png
关于GPIO功能的定义在这个文件:
15-GPIO函数.png
接下来修改按键,这个按键的作用是触发小E进入联网模式,配合手机APP获取路由器的SSID和密码。由于生成的工程包含的按键驱动是以机智云官方Gokit3 SOC版为模板的,我们小E的按键连接的管脚和Gokit是不一样的,因此需要修改。
\MiniE_Test\app\user里的user_main.c文件,包含了整个框架和按键定义,直接在这里修改即可:
16-修改前-按键宏定义.png
17-修改后-按键宏定义.png
如上对比图,去掉一个按键,并修改IO编号,然后修改按键的初始化和回调函数:
18-修改前-按键初始化.png
19-修改后-按键初始化.png
20-修改前-按键回调.png
21-修改后-按键回调.png
至此按键修改完毕。接下来在\MiniE_Test\app\user 里的user_main.c文件,即“主函数”里调用RGB LED初始化以完成外设初始化:
首先包含RGB LED驱动路径:
22-主函数包含LED驱动头文件.png
然后在void ICACHE_FLASH_ATTR user_init(void)函数调用RGB LED初始化:
23-主函数-添加LED初始化.png
User_main.c中还有一个userTimerFun定时回调函数,这里可依据数据点添加信息,例如本例增加了RGB LED故障上报,当然填充值为0,因为实际并没有去检测的LED的好坏,另外的2个参数是用于光照检测的,本期没有添加板载光明敏电阻的驱动,这里直接给了一个固定值,下期将给出相关教程。
24-用户数据上报.png

最后一步是在\MiniE_Test\app\Gizwits里的gizwits_product.c文件中添加业务逻辑,本例就是MCU收到手机APP的对应指令后执行开或关灯动作。首先是包含驱动头文件:
25-填充用户业务逻辑-包含头文件.png
然后找到如下函数:int8_t ICACHE_FLASH_ATTRgizwitsEventProcess(eventInfo_t *info, uint8_t *data, uint32_t len),在里面如下位置添加对应代码:
26-填充用户业务逻辑-用户处理.png
至此代码编辑全部完成,后顾一下,是不是只是简单的编写了底层驱动和填充了用户业务逻辑代码,其它和云端交互的代码完全应用代码自动生成工具为我们搭建的框架即可。
二、 编译和烧录、测试
编译源码、烧录教程:点我,总结下就是使用乐鑫开发的工具,选择好固件,然后GPIO0管脚接地进入烧录模式,这里给个直观的接线图:
27-烧写接线图.png
最后效果酱紫:
28-实物1.jpg 29-实物2.jpg

源码下载:
游客,如果您要查看本帖隐藏内容请回复




1

主题

32

帖子

330

积分

中级会员

Rank: 3Rank: 3

积分
330
发表于 2018-2-26 23:34:51 | 显示全部楼层
弱弱的问一句,hal_led.h这个文件是如何生成的,自动生成包里相应位置只有hal_key.h和key.h

点评

同问,哪位可以告知下  详情 回复 发表于 2020-3-20 00:31

1

主题

32

帖子

330

积分

中级会员

Rank: 3Rank: 3

积分
330
发表于 2018-2-26 23:56:46 | 显示全部楼层
将源文件下载下来,COPY几个文件后编译后,无法通过,出现;user_main.c: In function 'userTimerFunc': user_main.c:127:21: error: 'dataPoint_t' has no member named 'valuelux'      currentDataPoint.valuelux = 15;//Add Sensor Data Collection                      ^ user_main.c:128:21: error: 'dataPoint_t' has no member named 'valueFault_LED'      currentDataPoint.valueFault_LED =0 ;//Add Sensor Data Collection                      ^ user_main.c:129:21: error: 'dataPoint_t' has no member named 'valueFault_lux'      currentDataPoint.valueFault_lux =0 ;//Add Sensor Data Collection                      ^ make[1]: ** [.output/eagle/debug/obj/user_main.o] Error 1 make[1]: Leaving directory `/mnt/Share/minie/app/user' make: ** [.subdirs] Error 2

点评

我也发现这问题  详情 回复 发表于 2021-6-4 15:41

321

主题

1054

帖子

4513

积分

论坛元老

Rank: 8Rank: 8

积分
4513
QQ
发表于 2017-3-6 20:42:03 | 显示全部楼层
Des失控 发表于 2017-3-6 12:00
请问 你是直接烧录的这两个bin文件吗?还是有其他的bin文件?

你看完这个开发环境搭建就知道了,http://docs.gizwits.com/zh-cn/deviceDev/WiFiSOC/GoKit3S%E4%BA%8C%E6%AC%A1%E5%BC%80%E5%8F%91.html
image32.png
注:
1).前三个 ‘.bin’ 文件都在D:\share\gokit-soc-esp8266(文件夹名不一定是这个)\bin 目录下,选择对应的名称的 ‘.bin’文件即可。
最后一个.bin 文件默认为SOC版固件:user1.4096.new.6.bin
位置:\share\gokit-soc-esp8266(文件夹名不一定是这个)\bin\upgrade\user1.4096.new.6.bin


1、机智云QQ群:G1群:104975951 G2群:491509598 G3群:287087942
机智云爱好者-APP开发群: 599735135
QQ群目前非常活跃,欢迎大家参与进来,交流,讨论,答疑,解惑~~
2、机智云微信公众号: 机智云 gizwits、 机智云智能宠物屋go-iot
关注机智云Gizwits官方公众号随时掌握最新资讯和活动信息

0

主题

5

帖子

77

积分

注册会员

Rank: 2

积分
77
发表于 2017-2-27 21:20:03 | 显示全部楼层
免费使用STM32、APP自动代码生成工具
厉害了,大神!学习了

1

主题

13

帖子

1018

积分

金牌会员

Rank: 6Rank: 6

积分
1018
发表于 2017-2-27 21:29:56 | 显示全部楼层
可以, 一篇实用、接地气的文章

0

主题

20

帖子

587

积分

高级会员

Rank: 4

积分
587
发表于 2017-2-27 23:20:04 | 显示全部楼层
必须支持. 辛苦了.

8

主题

29

帖子

918

积分

高级会员

Rank: 4

积分
918
发表于 2017-2-28 10:29:17 | 显示全部楼层
免费使用STM32、APP自动代码生成工具
这个厉害了.

8

主题

29

帖子

918

积分

高级会员

Rank: 4

积分
918
发表于 2017-2-28 10:30:51 | 显示全部楼层
这个有用,学习了

1

主题

8

帖子

245

积分

中级会员

Rank: 3Rank: 3

积分
245
发表于 2017-2-28 10:40:23 | 显示全部楼层
我用的也是8266soc的方案,想问一下楼主,在user_main.c中,除了利用定时回调函数完成一些功能外,额外的时间我想不停的读取AD值,该往那里添加代码,我想把CPU空闲时间也使用起来。

点评

直接加在定时回调里就可以,这个sdk用了freertos,或者你自己创建一个任务  详情 回复 发表于 2017-3-4 23:24

0

主题

2

帖子

192

积分

注册会员

Rank: 2

积分
192
发表于 2017-2-28 12:14:45 | 显示全部楼层
真不错z,谢谢分享,下载了!!

0

主题

1

帖子

21

积分

新手上路

Rank: 1

积分
21
发表于 2017-2-28 12:15:59 | 显示全部楼层
注册成为机智云开发者,手机加虚拟设备快速开发
学习一下!谢谢!

1

主题

14

帖子

725

积分

高级会员

Rank: 4

积分
725
发表于 2017-2-28 13:38:05 | 显示全部楼层
soc比较实惠,谢谢分享                              

1

主题

14

帖子

725

积分

高级会员

Rank: 4

积分
725
发表于 2017-2-28 13:38:46 | 显示全部楼层
soc比较实惠,谢谢分享                              

1

主题

15

帖子

468

积分

中级会员

Rank: 3Rank: 3

积分
468
发表于 2017-2-28 14:18:58 | 显示全部楼层
看看,学习一下

3

主题

17

帖子

369

积分

中级会员

Rank: 3Rank: 3

积分
369
发表于 2017-2-28 15:39:54 | 显示全部楼层
多谢楼主,新手很有帮助~

0

主题

3

帖子

32

积分

新手上路

Rank: 1

积分
32
发表于 2017-3-1 12:32:25 | 显示全部楼层
不知道为什么编译出错,

点评

哪里出错了?提示信息是什么,或者截个图看下,编译错误一般是开发环境没配置好,你按官方的教程仔细验证下  详情 回复 发表于 2017-3-4 23:23

1

主题

6

帖子

426

积分

中级会员

Rank: 3Rank: 3

积分
426
发表于 2017-3-1 21:02:59 | 显示全部楼层

厉害了,大神!学习了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Q群 返回顶部

版权与免责声明 © 2006-2024 Gizwits IoT Technology Co., Ltd. ( 粤ICP备11090211号 )

快速回复 返回顶部 返回列表