bigfanofloT 发表于 2017-8-5 10:41:54

MCU端编程&驱动移植

本节详细的描述了如何使用下载的MCU工程,如何根据自动生成的代码提示去填充用户业务相关的代码。Step1:解压下载的工程,找到Gizwits文件夹,把它复制/移动到ArduinoIDE安装目录下的libraries文件夹下。例如我的是D:\Arduino\librariesStep2:接下来找到工程目录下的examples文件夹,里面有2个文件夹networkConfig和simpleTry,进去后有同名的Arduino文件,后缀名为.ino。使用ArduinoIDE打开这2个文件:simpleTry.ino是本次项目工程,里面有程序框架,以及告知了用户在哪里填充接入机智云的代码;networkConfig.ino是配置入网的例程,因为常见的智能硬件产品是没有键盘和显示屏的,因此需要一种技术来让它获取路由器的SSID和密码,首选是通过手机APP辅助。这里简单的介绍一下方法,通过一个按键来触发设备进入配网模式,然后手机APP把SSID和密码广播给设备,原理如下图:这里需要说明的是,机智云开发的配网方案有2种,取名为AirLink和SoftAP,设备第一次联网是要进行配置的,以后它就记住了这个路由器的SSID和密码,无需配置,除非更改了SSID、密码等情况发生,就需要重新进行配网操作。Step3:导入硬件模块WS2812和DHT22的驱动库。WS2812B是一个集控制电路与发光电路于一体的智能外控LED光源。其外型与一个5050LED灯珠相同,每个元件即为一个像素点,只需占用MCU一个IO即可驱动。我们先安装WS2812B型RGB LED的驱动库Adafruit_NeoPixel,下载地址为https://github.com/adafruit/Adafruit_NeoPixel,这个库的使用说明可以参考https://learn.adafruit.com/adafruit-neopixel-uberguide/arduino-library把它解压后拷贝到ArduinoIDE安装目录的\libraries文件夹下,例如我的目录是D:\Arduino\libraries同样的方法导入DHT22温湿度传感器的驱动,这里不啰嗦了,查看此帖http://bbs.cirmall.com/thread-42711-1-1.htmlStep4:我们把networkConfig.ino中的部分代码(按键驱动等,处理配网问题)拷贝到本次项目的工程simpleTry.ino中,注意凡是串口打印调试的都要注释掉,因为我们的Arduino UNO R3只有一个串口,要用来和WiFi模块通信。然后需要根据注释填充数据点代码,1是手机端APP控制RGB LED亮灭,2是手机端APP单独控制RGB LED的RGB颜色值,3是手机端APP一键控制RGB LED的组合颜色值,4是温湿度数据的读取具体的接口都给出了详细的注释,直接填充就可以~ 第34~120行为与按键触发配网有关的代码。第125~147行为WIFI状态处理有关代码,定义了2个按键key1、key2分别来触发不同的配网方式,板载黄色LED连接到了管脚13,我们把它作为配网操作过程的状态提示,本次采用的方式是:通过手机APP辅助,长按key2 5秒后板载LED亮起,WIFI模块连接路由器成功后则熄灭,关于这些按键和WIFI状态处理的代码是从networkConfig.ino拷贝来的。第12~21行代码定义RGB LED使用的管脚和个数以及创建了piexls对象,DHT22使用的管脚;第25~32行是自己利用Adafruit_NeoPixel类方法编写的一个能够控制所有RGB LED的函数;第158~171行初始化了RGB LED、板载LED、按键。一个重要问题是,很多人会问,我生成了MCU工程后,要到哪里添加代码呢?怎么修改呢?第200~219行,注释内容就是自动生成的,用于帮助用户填充业务代码。第251~270行代码基本就是注释代码的拷贝,这就是我们在云端创建的用于描述产品功能的数据点在MCU代码里的表达方式,因为对于控制LED,需要保持颜色变量值不被销毁,所以我们把定义的数据点相关5个变量加了static关键字使之成为静态变量,当然你也可以直接把它们放到函数外面作为全局变量。第255~263行实现的是读取温湿度传感器数据并上报到云端,从而在手机APP可查看。第301~323行实现的是开启/关闭红色灯,绿色灯,蓝色灯的功能。第327~333行实现的是设定LED组合颜色的功能。第335行实现的是设定LED红色值、设定LED绿色值、设定LED蓝色值的功能。Step5:至此MCU端代码修改完毕,编译并烧录代码到Arduino UNO板卡;

lili123 发表于 2017-8-8 14:53:17

很强大,值得学习,楼主都是自己写的程序吗?

bigfanofloT 发表于 2017-8-8 16:11:33

lili123 发表于 2017-8-8 14:53
很强大,值得学习,楼主都是自己写的程序吗?

部分是,框架给你生成好了,不用自己写

爱琳喽喽喽 发表于 2018-1-8 17:20:43

楼主,你好,请问想实现这样的功能我还要不要刷固件到我的esp8266上?
页: [1]
查看完整版本: MCU端编程&驱动移植