收藏官网首页
查看: 29027|回复: 9

[资料分享] IoT小能手:机智云自助开发平台及云服务小白体验

99

主题

103

帖子

930

积分

高级会员

Rank: 4

积分
930
跳转到指定楼层
楼主
发表于 2017-5-22 13:52:22 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
教您5分钟接入机智云,实现傻瓜式开发
本帖最后由 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。
  1. /****************************

  2. Name:                  Gizwits + ArduinoUnoWiFi Library
  3. Author:                tli@gizwits.com / bing@arduino.org.cn
  4. Version:        V1.0
  5. Init:                  2016-12-23
  6. Modify:   2016-12-23
  7. *****************************/
  8. #include "Gizwits.h"
  9. #include <Wire.h>

  10. Gizwits myGizwits;
  11.    
  12. #define        COV_RATIO                       0.2            //ug/mmm / mv
  13. #define        NO_DUST_VOLTAGE                 400            //mv
  14. #define        SYS_VOLTAGE                     5000           


  15. /*
  16. I/O define
  17. */
  18. const int iled = 7;                                            //drive the led of sensor
  19. const int vout = 0;                                            //analog input

  20. /*
  21. variable
  22. */
  23. float density, voltage;
  24. int   adcvalue;

  25. /*
  26. private function
  27. */
  28. int Filter(int m)
  29. {
  30.   static int flag_first = 0, _buff[10], sum;
  31.   const int _buff_max = 10;
  32.   int i;
  33.   
  34.   if(flag_first == 0)
  35.   {
  36.     flag_first = 1;

  37.     for(i = 0, sum = 0; i < _buff_max; i++)
  38.     {
  39.       _buff[i] = m;
  40.       sum += _buff[i];
  41.     }
  42.     return m;
  43.   }
  44.   else
  45.   {
  46.     sum -= _buff[0];
  47.     for(i = 0; i < (_buff_max - 1); i++)
  48.     {
  49.       _buff[i] = _buff[i + 1];
  50.     }
  51.     _buff[9] = m;
  52.     sum += _buff[9];
  53.    
  54.     i = sum / 10.0;
  55.     return i;
  56.   }
  57. }
  58. void setup() {
  59.   // put your setup code here, to run once:
  60.   pinMode(iled, OUTPUT);
  61.   digitalWrite(iled, LOW);                                     //iled default closed
  62.   
  63.   Serial.begin(9600);
  64.   myGizwits.begin();
  65. }

  66. void loop() {  
  67.   
  68.   //Configure network
  69.   //if(XXX) //Trigger Condition
  70.   //myGizwits.setBindMode(0x02);  //0x01:Enter AP Mode;0x02:Enter Airlink Mode
  71. <font color="#00ff00">    /*
  72.   unsigned long varW_Air_Quality = 0;//Add Sensor Data Collection
  73.   myGizwits.write(VALUE_AIR_QUALITY, varW_Air_Quality);
  74.   unsigned long varW_PM2_5 = 0;//Add Sensor Data Collection
  75.   myGizwits.write(VALUE_PM2_5, varW_PM2_5);




  76.   //binary datapoint handle
  77.   */</font>
  78. <font color="#ff0000">  /*
  79.   get adcvalue
  80.   */
  81.   digitalWrite(iled, HIGH);
  82.   delayMicroseconds(280);
  83.   adcvalue = analogRead(vout);
  84.   digitalWrite(iled, LOW);
  85.   
  86.   adcvalue = Filter(adcvalue);
  87.   
  88.   /*
  89.   covert voltage (mv)
  90.   */
  91.   voltage = (SYS_VOLTAGE / 1024.0) * adcvalue * 11;
  92.   
  93.   /*
  94.   voltage to density
  95.   */
  96.   if(voltage >= NO_DUST_VOLTAGE)
  97.   {
  98.     voltage -= NO_DUST_VOLTAGE;
  99.    
  100.     density = voltage * COV_RATIO;
  101.   }
  102.   else
  103.     density = 0;
  104.    
  105. unsigned char AQILevel=0;
  106.    
  107. if(density>=0 && density<=35)        AQILevel=0;
  108. else if(density>35 && density<=75)   AQILevel=1;
  109. else if(density>75 && density<=115)  AQILevel=2;
  110. else if(density>115 && density<=150) AQILevel=3;
  111. else if(density>150 && density<=250) AQILevel=4;
  112. else if(density>250 && density<=500) AQILevel=5;

  113.   unsigned long  varW_Air_Quality = AQILevel;//Add Sensor Data Collection
  114.   myGizwits.write(VALUE_AIR_QUALITY, varW_Air_Quality);
  115.   unsigned long  varW_PM2_5 =long(density);//Add Sensor Data Collection
  116.   myGizwits.write(VALUE_PM2_5, varW_PM2_5);
  117.   delay(100);//必要</font>
  118.   myGizwits.process();
  119. }
复制代码


红色的部分就是采集传感器数据后运算了,绿色看到木有,这是生成好的代码,告诉你怎么去填充数据了。。。

还有个问题,怎么让它联网,看了文档中心的应该会。。。

最后,说下手机APP,图中的APP是一个通用的,在这里下载:
http://dev.gizwits.com/zh-cn/developer/resource/demo_app?protoc=WIFI



附上工程文件:
test.zip (53 KB, 下载次数: 106)

0

主题

16

帖子

212

积分

中级会员

Rank: 3Rank: 3

积分
212
板凳
发表于 2017-11-7 20:40:06 | 只看该作者
做的不错,学习了

0

主题

4

帖子

20

积分

新手上路

Rank: 1

积分
20
地板
发表于 2018-5-4 13:49:20 | 只看该作者
学习了谢谢

0

主题

9

帖子

161

积分

注册会员

Rank: 2

积分
161
5#
发表于 2019-8-4 15:55:34 | 只看该作者
校园创客福利
你好,有32的PM2.5监测么?想学习一下,QQ934211601,谢谢
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Q群 返回顶部

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

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