极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 21464|回复: 4

Arduino+ESP8266低成本、高效率开发物联网设备

[复制链接]
发表于 2015-10-19 13:17:31 | 显示全部楼层 |阅读模式
本帖最后由 氦氪空间 于 2015-10-23 15:39 编辑

针对开源硬件Arduino便捷灵活、方便上手、开放性强的特点和WIFI芯片ESP8266高度集成、前期开发时间短、性价比高的特点,经过几个月时间的开发,我们推出了以HEKR IOT-KIT为基础的一系列物联网开发套件。使用HEKR IOT-KIT配合Hekr云端平台以及HEKR APP,可以快速完成物联网设备原型的开发,您还可以发挥您的想象力,在Arduino+ESP8266的基础上开发出更多、更好玩的设备,轻松体验智能生活的便捷。

以下是我们以HEKR IOT-KIT为基础开发的一款用手机控制的无极调光灯使用视频:



开发者可以参照使用样例对HEKR IOT-KIT进行一些入门级的功能开发,比如使用APP与Arduino通信、使用APP点亮LED等等。

接下来,我来介绍一下样例的使用方法,同时了解HEKR IOT-KIT联网后的基本信息传输链:
移动端APP<--->云端<--->HEKR IOT-KIT

***************************************************************
硬件说明:
HEKR IOT-KIT+Micro USB数据线


HEKR IOT-KIT可通过对拨码开关的设置进入不同模式。


HEKR IOT-KIT V1.0串口芯片采用的是CP2102
串口芯片驱动程序、Arduino库文件、ESP8266烧录软件下载:

http://pan.baidu.com/s/1dDg7Q5j

本示例编译上传环境为Arduino IDE 1.6.3-Windows
步骤一:Arduino烧录
(1). 将拨码开关设置成Arduino烧录模式。

(2). 添加库文件:将HEKR IOT-KITV1.0样例及烧录工具\Arduino路径下的Hekr文件夹复制到Arduino安装目录下的Arduino\libraries路径下。

(3). 黏贴以下代码到arduino IDE中
  1. #include <hekr_protocol.h>
  2. u8 temp;
  3. u8 RecvBuffer[20];

  4. // HEKR USER API **************************************************************

  5. //使用前要确定用户所需要的最大数组  默认为100 大于100需要自行修改
  6. //数组大小可以自行修改为最长长度  
  7. //如果有多条不等长命令  取最长长度  为用户数据长度  非整帧长度
  8. //#define USER_MAX_LEN 0x64u

  9. //Hekr 协议初始化
  10. //使用Hekr协议前需完成初始化
  11. //初始化需要用户有串口发送一个byte的程序
  12. //eg:  void UART_SendChar(u8 ch); 传输参数必须只是一个8bit的数
  13. //     该函数需要用户自行在程序中定义
  14. //HekrInit函数:
  15. //传入参数为用户串口发送一个byte函数的函数名
  16. //void HekrInit(void (*fun)(unsigned char));
  17. //eg:  HekrInit(UART_SendChar);   

  18. //传入串口接收的数据数组  
  19. //返回值见头文件 RecvDataHandleCode
  20. //传入数组长度应大于用户数据长度加上HEKR_DATA_LEN
  21. //数据保存在对应数组中 valid_data 和 ModuleStatus 指针
  22. //unsigned char HekrRecvDataHandle(unsigned char* data);

  23. //配置及查询hekr模块状态 传入码值见头文件 HekrModuleControlCode
  24. //状态值保存在module_status数组中
  25. //void HekrModuleControl(unsigned char data);


  26. //上传用户有效数据
  27. //数据存放在valid_data数组中 len 为用户数据长度  非整帧长度
  28. //void HekrValidDataUpload(unsigned char len);

  29. //协议修改日期 2015.09.01
  30. //协议网址  http://docs.hekr.me/protocol/
  31. //BUG 反馈  [url=mailto:pengyu.zhang@hekr.me]pengyu.zhang@hekr.me[/url]
  32. //          [url=mailto:965006619@qq.com]965006619@qq.com[/url]
  33. //*****************************************************************************

  34. void setup() {
  35.   // put your setup code here, to run once:
  36.   Serial.begin(9600);
  37.   HekrInit(SendChar);
  38.   HekrModuleControl(HekrConfig);
  39. }

  40. void loop() {
  41.   GetData();
  42.   DataHandle();
  43. }


  44. void SendChar(unsigned char ch)
  45. {
  46.   Serial.write(ch);
  47.   delay(2);
  48. }

  49. void GetData(void)
  50. {
  51.   u8 i = 0;
  52.   while(Serial.available())
  53.   {
  54.     RecvBuffer[i++] = Serial.read();
  55.     if(RecvBuffer[0] != 0x48)
  56.       i = 0;
  57.     delay(2);  
  58.   }
  59. }
  60. //*************************************************************************
  61. //HekrRecvDataHandle  函数返回值
  62. //typedef  enum
  63. //{
  64. //  RecvDataSumCheckErr = 0x01,
  65. //  LastFrameSendErr = 0x02,
  66. //  MCU_UploadACK = 0x03,
  67. //  ValidDataUpdate = 0x04,
  68. //  RecvDataUseless = 0x05,
  69. //  HekrModuleStateUpdate = 0x06,
  70. //  MCU_ControlModuleACK = 0x07
  71. //}RecvDataHandleCode;
  72. //*************************************************************************
  73. void DataHandle(void)
  74. {  
  75.   //以下部分为MCU端Hekr透传协议解析代码
  76.   if(RecvBuffer[0] == HEKR_FRAME_HEADER)
  77.   {
  78.     temp = HekrRecvDataHandle(RecvBuffer);
  79.     RecvBuffer[0] = 0x00;
  80.     if(ValidDataUpdate == temp)
  81.     {
  82.       //接收的数据保存在 valid_data 数组里
  83.       //User Code
  84.       SendChar(valid_data[0]);
  85.     }
  86.     if(HekrModuleStateUpdate == temp)
  87.     {
  88.       //接收的数据保存在 ModuleStatus 指针里
  89.       //User Code.
  90.       SendChar(ModuleStatus->CMD);
  91.     }
  92.   }
  93. }
复制代码


(4). 选择板卡类型:工具->板->Arduino Uno

(5). 选择串口:工具->端口->COM3。COM3是本地电脑识别到的usb串口端口号。

(6).编译代码:选择项目->验证/编译

(7).上传代码到Arduino:选择文件->上传

步骤二:ESP8266烧录
(1). 将拨码开关设置成ESP8266烧录模式。

(2). 打开HEKR IOT-KITV1.0样例及烧录工具\ESP8266\FLASH_DOWNLOAD_TOOLS路径下的frame_test.exe文件。

(3). 设置好对应的COM口和串口波特率。

(4). 导入.bin文件并且设置好对应的烧录地址。如下图所示:

1.png

文件说明:
“product-base”里的4个bin文件,每个产品都要烧录,OFFSE(烧录地址)如上。
“product-func”烧录对应型号的XXX-XXX-1.bin文件,这里烧录的是HEKR标准透传固件:HK_KFB_IOT_DB01_Firmware_v3.0.26.1build_10230935-1.bin(注意:后缀为-1.bin。手动烧录不需要用到-2.bin),OFFSE(烧录地址)0x01000。

设置说明:
FLASH SIZE 改为 16Mbit,BAUDRATE(波特率)随意,越大速度越快,其它默认即可。

(5). 点击“START"按钮,等待上电同步。显示如下:

2.png
(6). 等待上电同步时,用镊子或者其他方式短接烧录口A和B(具体位置见硬件说明图),同时按下复位按键,开始下载。界面显示如下:

3.png

(7). 烧录完毕,完成界面显示如下:

4.png
步骤三:APP配置和使用
(1).APP安装:
支持Android4.0及以上版本
支持iOS7.0及以上版本

扫一扫下载HEKR APP:


(2).进入APP登录界面:


(3).“本地登录”中绑定的设备仅在本机有效。其他登录方式中设备绑定在相应的账号下。本例中采用“QQ”登录方式。

(4).在QQ登录界面输入账号和密码,进入设备列表界面:



(5). 点击右上角“+”图标进入配置界面:



(6).输入当前连接下的WIFI密码(若当前没有连上WIFI,需先连上WIFI)

(7).长按物理设备上ESP配置按键5秒后点击界面上的开始配置。

(8).等待几秒后显示如下:


即配置成功!

(9). 下拉刷新设备列表,新绑定的设备即可出现在设备列表中。如下所示:



(10).点击界面上的设备图标即可进入相应的控制页面:



(11).在“发送”栏中输入示例帧48 0E 02 01  02 01 00 00 00 00 00 00 00  5C(Hekr协议帧可在HEKR模块透传协议在线文档HEKR模块透传协议中查询)

并且点击 [Q6H%K]KO9@5KU4QA7DK({0.png 图标发送示例帧。

6.APP成功发送命令后在接受栏中可收到应答信息,界面如下图所示:


样例演示完成。

**********************************************

样例展示了在APP与硬件之间进行信息上传和下发的简单功能。

参照样例中的Arduino代码配合Hekr模块透传协议,可以用HEKR IOT-KIT进行一些简单的功能实现,比如使用APP点亮LED或者是驱动电机和蜂鸣器等等。

如果您希望进一步地DIY更多功能,我们在github上https://github.com/HEKR-Cloud/提供了开放的SDK,开源了我们的硬件和APP。并且开发了多款适配HEKR IOT-KIT的功能扩展板,比如:RGB调光灯功能板、温湿度采集功能板、PM2.5功能板,我们会陆续开放出功能板的例程和文档,和开发者们一起感受DIY的乐趣。

回复

使用道具 举报

发表于 2015-10-20 11:39:28 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2015-11-19 13:32:33 | 显示全部楼层
在哪里可以买到这些材料,真想马上试试。
回复 支持 反对

使用道具 举报

发表于 2015-11-19 19:21:17 | 显示全部楼层
hesg 发表于 2015-11-19 13:32
在哪里可以买到这些材料,真想马上试试。

https://item.taobao.com/item.htm?spm=a230r.1.14.1.6iVQXX&id=523196928204&ns=1&abbucket=14#detail
极客工坊的店里就有呀
回复 支持 反对

使用道具 举报

发表于 2016-4-29 18:04:45 | 显示全部楼层
其他的wifi模块加上uno也可以吧??
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊 ( 浙ICP备09023225号 )

GMT+8, 2020-7-6 05:18 , Processed in 0.055578 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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