|
本帖最后由 Genius 于 2017-5-23 14:59 编辑
很早就从朋友那里听说机智云的云服务特别好,开发工具十分丰富。
身为小白的我想玩玩智能硬件开发啊,但是只会玩玩arduino怎么破,最近学习了下机智云的平台,感觉十分不错,文档资料完善,论坛和群里有很多大神答疑解惑。
这不,刚看到论坛的活动,就赶紧来占个坑,分享一下小白我使用机智云自助开发平台及云服务(含开发工具、SDK、开发套件)的经验和体验。
很早就想做一个监测PM2.5的DIY作品了,模块买好了,和Arduino通信也调通了,但不会做手机APP,通信协议也不会啊~~~
这个是我买的微雪的PM2.5模块,传感器输出模拟电压值,与PM2.5浓度成正比。
看了一些大神的帖子和文档中心的资料后,知道了机智云的MCU代码自动生成工具,简直好用到没朋友啊,点下鼠标,工程直接给你生成好了,自己在注释的地方填下代码就行了。
果断试了下,先爆照,我要做的是用Arduino板子采集PM2.5传感器的数据,让它显示在手机APP上,用了一个正点原子的esp8266 wifi模块,这个wifi模块要烧写一个叫GAgent的固件,论坛首页有教程帖,很详细的步骤。
先要注册机智云开发者账号,然后建立一个产品:
接着建立数据点,啥是数据点,文档中心说的很清楚了,建议像我一样的小白先看看文档中心的资料,对机智云平台有个整认识再动手,俗话说磨刀不误砍柴工嘛~~~~
然后点击生成工程就行了,选Arduino平台方案,支持的板子还是很多的
然后下载工程:
解压下载的工程,把\MCU_ArduinoUNOR3_source\Gizwits下的6个文件复制到\MCU_ArduinoUNOR3_source\examples\simpleTry文件夹下,然后用Arduino软件打开simpleTry.ino文件,
先把尖括号改为双引号,这样编译就没错误了。
然后在添加下代码,机智云把整个框架都搭建好,我这里只需要填充下就OK。
- /****************************
- Name: Gizwits + ArduinoUnoWiFi Library
- Author: tli@gizwits.com / bing@arduino.org.cn
- Version: V1.0
- Init: 2016-12-23
- Modify: 2016-12-23
- *****************************/
- #include "Gizwits.h"
- #include <Wire.h>
- Gizwits myGizwits;
-
- #define COV_RATIO 0.2 //ug/mmm / mv
- #define NO_DUST_VOLTAGE 400 //mv
- #define SYS_VOLTAGE 5000
- /*
- I/O define
- */
- const int iled = 7; //drive the led of sensor
- const int vout = 0; //analog input
- /*
- variable
- */
- float density, voltage;
- int adcvalue;
- /*
- private function
- */
- int Filter(int m)
- {
- static int flag_first = 0, _buff[10], sum;
- const int _buff_max = 10;
- int i;
-
- if(flag_first == 0)
- {
- flag_first = 1;
- for(i = 0, sum = 0; i < _buff_max; i++)
- {
- _buff[i] = m;
- sum += _buff[i];
- }
- return m;
- }
- else
- {
- sum -= _buff[0];
- for(i = 0; i < (_buff_max - 1); i++)
- {
- _buff[i] = _buff[i + 1];
- }
- _buff[9] = m;
- sum += _buff[9];
-
- i = sum / 10.0;
- return i;
- }
- }
- void setup() {
- // put your setup code here, to run once:
- pinMode(iled, OUTPUT);
- digitalWrite(iled, LOW); //iled default closed
-
- Serial.begin(9600);
- myGizwits.begin();
- }
- void loop() {
-
- //Configure network
- //if(XXX) //Trigger Condition
- //myGizwits.setBindMode(0x02); //0x01:Enter AP Mode;0x02:Enter Airlink Mode
- <font color="#00ff00"> /*
- unsigned long varW_Air_Quality = 0;//Add Sensor Data Collection
- myGizwits.write(VALUE_AIR_QUALITY, varW_Air_Quality);
- unsigned long varW_PM2_5 = 0;//Add Sensor Data Collection
- myGizwits.write(VALUE_PM2_5, varW_PM2_5);
- //binary datapoint handle
- */</font>
- <font color="#ff0000"> /*
- get adcvalue
- */
- digitalWrite(iled, HIGH);
- delayMicroseconds(280);
- adcvalue = analogRead(vout);
- digitalWrite(iled, LOW);
-
- adcvalue = Filter(adcvalue);
-
- /*
- covert voltage (mv)
- */
- voltage = (SYS_VOLTAGE / 1024.0) * adcvalue * 11;
-
- /*
- voltage to density
- */
- if(voltage >= NO_DUST_VOLTAGE)
- {
- voltage -= NO_DUST_VOLTAGE;
-
- density = voltage * COV_RATIO;
- }
- else
- density = 0;
-
- unsigned char AQILevel=0;
-
- if(density>=0 && density<=35) AQILevel=0;
- else if(density>35 && density<=75) AQILevel=1;
- else if(density>75 && density<=115) AQILevel=2;
- else if(density>115 && density<=150) AQILevel=3;
- else if(density>150 && density<=250) AQILevel=4;
- else if(density>250 && density<=500) AQILevel=5;
- unsigned long varW_Air_Quality = AQILevel;//Add Sensor Data Collection
- myGizwits.write(VALUE_AIR_QUALITY, varW_Air_Quality);
- unsigned long varW_PM2_5 =long(density);//Add Sensor Data Collection
- myGizwits.write(VALUE_PM2_5, varW_PM2_5);
- delay(100);//必要</font>
- myGizwits.process();
- }
复制代码
红色的部分就是采集传感器数据后运算了,绿色看到木有,这是生成好的代码,告诉你怎么去填充数据了。。。
还有个问题,怎么让它联网,看了文档中心的应该会。。。
最后,说下手机APP,图中的APP是一个通用的,在这里下载:
http://dev.gizwits.com/zh-cn/developer/resource/demo_app?protoc=WIFI
附上工程文件:
test.zip
(53 KB, 下载次数: 106)
|
|