本文实现的气象站集成了各种常用的气象测量传感器(包含:温度、湿度、气压、紫外线、PM2.5、风速、雨水感应),ShineBlink万能核心板采集这些传感器数据,并将它们上传至机智云,然后我们就可以在远程通过手机App或者Web网页端来访问这个气象站测量的所有传感器数据。

视频教程及实物展示

视频演示教程:

【十分钟开发物联网】 -- 气象站(温湿度,pm25,气压,紫外线,风速,雨水测量-->4G上云)

接线实物图和App监测页面:

硬件端接线图

需要注意的是:由于连接的电路传感器比较多,因此给 ShineBlink 开发板提供5V的电源带载能力至少要大于1A。

材料清单

名称 推荐购买源 资料下载
通用版机智云 App 免费 https://download.gizwits.com/zh-cn/p/98/99
ShineBlink 万能物联网开发板 淘宝搜索“机智云”或“ShineBlink”店铺有售 shineblink.com
带机智云GAgent固件的ML302 4G模块 淘宝搜索“机智云”或“ShineBlink”店铺有售 gizwits.com
温湿度、气压、PM25、紫外线、雨滴、风速传感器模块 淘宝搜索“ShineBlink”店铺有售,或者任意其他店铺(功能相似即可) shineblink.com
黑色底板 该底板只是为了省掉接杜邦线,让外观好看一些,不是必需品,开发者如果没有可以用杜邦线来替代。如果仍想获取该底板,可通过右边提供的PCB工程资料自己打样PCB制作即可。 https://fe9a58.link.yunpan.360.cn/lk/surl_y6mpLtWWB9W#/-0

硬件端完整源码

​​​​​​--定义函数:将传感器输出电压(单位:mv)转换成紫外线指数index
function GetUvIndex(v)if v < 50.0 thenindex = 0elseif v < 227.0 thenindex = 1;elseif v < 318.0 thenindex = 2;elseif v < 408.0 thenindex = 3;elseif v < 503.0 thenindex = 4;elseif v < 606.0 thenindex = 5;elseif v < 696.0 thenindex = 6;elseif v < 795.0 thenindex = 7;elseif v < 881.0 thenindex = 8;elseif v < 976.0 thenindex = 9;elseif v < 1079.0 thenindex = 10;elseindex = 11endreturn index
end
--使能USB print输出打印
LIB_UsbConfig("CDC")
--机智云平台为每个产品类别分配的唯一PK和PS,一定要改成您自己的PK和PS
PK = "7ebaec64beaf4e389a2957f38711fcda"
PS = "b4a4ef17dbf74463b0f1b3c525a8b8de"
--初始化4G模块
LIB_Giz4GConfig(PK,PS,1000,120,"UART0","D5","HIGH","D6","HIGH")
--配置A0-A3这四个电压采集通道同时开始工作,当每个通道采集满50个点时缓存满,每个点的采集时间间隔为10ms
LIB_ADConfig(50,10000)
--设置PM2.5传感器占用TX1和RX1引脚
LIB_ZPH04Config("UART1")
--设置sht3x传感器占用SCL0和SDA0引脚,并启动传感器以每秒出10个数据的频率工作,repeatability="HIGH"时精度最高
LIB_Sht3xConfig("IIC0","10","HIGH")
--设置BMP280气压计传感器占用SCL1和SDA1引脚,并启动传感器以每秒输出26.32组数据的频率工作
LIB_BMP280Config("IIC1")
--开始大循环
while(GC(1) == true)
doLIB_DelayMs(50)--查询是否读到温湿度数据产生sht3x_flag,sht3x_temp,sht3x_humi = LIB_Sht3xGetResult()if sht3x_flag == 1 then--打印读到的温湿度值,保留2位小数print(string.format("temp: %.2f\r\nhumi: %.2f", sht3x_temp, sht3x_humi))
--向机智云服务器发送(温湿度)短整数型数值(舍去小数部分)LIB_SendToGizCloud("Rs1", math.floor(sht3x_temp))LIB_SendToGizCloud("Rs2", math.floor(sht3x_humi))end
--查询气压传感器是否出数flag, temprature, pressure = LIB_BMP280GetResult()if flag == 1 then --如果传感器此时有数据--温度值保留两位小数,气压值去掉小数部分print(string.format("temprature: %.2f pressure: %.0f Pa", temprature, pressure))
--向机智云服务器发送长整数型气压数值,单位:PaLIB_SendToGizCloud("RL7", math.floor(pressure))end
--查询是否读到传感器PM2.5值flag, pm25_val = LIB_ZPH04GetPM25()if flag == 1 then--打印读到的PM2.5值,保留1位小数,单位:ug/m^3print(string.format("PM2.5:%.1f", pm25_val))
--向机智云服务器发送(PM2.5)浮点型小数值(范围应是-1000.0~5000.0)LIB_SendToGizCloud("Rf1", pm25_val)end
--查询是否读到A0端口的电压采集值(风速)A0_full_flag, A0_tab = LIB_ADCheckBufFull("A0")--每当A0通道的缓存满以后,计算缓存内的50个元素的平均值,并换算成电压值--由LIB_ADConfig(50,10000)可以算出,此处大概是50X10000us=0.5秒执行一次if A0_full_flag == 1 thenSUM = 0for i = 1, #A0_tab do --此处#A0_tab的值是50,表示A0_tab表内的元素个数SUM = SUM + A0_tab[i]endAVER = SUM / #A0_tab --计算平均采样值--将A0通道的AD值转换成实际电压打印出来out_voltage = AVER*3.6/4096.0--打印出传感器输出的电压值,保留小数点后两位,单位Vprint(string.format("wind voltage=%.2fV\r\n", out_voltage))
--向机智云服务器发送(风速)浮点型小数值(范围应是-1000.0~5000.0)LIB_SendToGizCloud("Rf2", out_voltage)end
--查询是否读到A1端口的电压采集值(紫外线)A1_full_flag, A1_tab = LIB_ADCheckBufFull("A1")--每当A1通道的缓存满以后,计算缓存内的50个元素的平均值,并换算成电压值--由LIB_ADConfig(50,10000)可以算出,此处大概是50X10000us=0.5秒执行一次if A1_full_flag == 1 thenSUM = 0for i = 1, #A1_tab do --此处#A1_tab的值是50,表示A1_tab表内的元素个数SUM = SUM + A1_tab[i]endAVER = SUM / #A1_tab --计算平均采样值--将A0通道的AD值转换成实际电压打印出来vol_mv = AVER*3600/4096.0--打印出传感器输出的电压值,保留小数点后两位,单位mVprint(string.format("ultraviolet voltage=%.2fmV\r\n", vol_mv))
uv_index = GetUvIndex(vol_mv)--将电压转换成紫外等级指数
--打印紫外线等级,0~11
print(string.format("ultraviolet level=%d\r\n", uv_index))
--向机智云服务器发送紫外线等级,短整数型LIB_SendToGizCloud("Rs3", uv_index)end
--查询是否读到A2端口的电压采集值(雨滴感应)A2_full_flag, A2_tab = LIB_ADCheckBufFull("A2")--每当A2通道的缓存满以后,计算缓存内的50个元素的平均值,并换算成电压值--由LIB_ADConfig(50,10000)可以算出,此处大概是50X10000us=0.5秒执行一次if A2_full_flag == 1 thenSUM = 0for i = 1, #A2_tab do --此处#A2_tab的值是50,表示A2_tab表内的元素个数SUM = SUM + A2_tab[i]endAVER = SUM / #A2_tab --计算平均采样值--将A0通道的AD值转换成实际电压打印出来vol = AVER*3.6/4096.0--打印雨滴传感器输出的电压值,保留小数点后两位,单位Vprint(string.format("rain voltage=%.2fV\r\n", vol))
--向机智云服务器发送(雨滴值)浮点型小数值(范围应是-100.00~500.00)LIB_SendToGizCloud("Rf3", vol)end
end

上面代码中出现的"LIB_"开头的库函数的详细介绍可以在shineblink.com网站上的API文档中查询。

机智云接入和App开发(三个选择)

►选择一:机智云+通用版APP访问设备(难度最低

通过《4G设备接入机智云教程》我们可以很快掌握机智云的接入流程,并使用现成的通用版机智云App即可很快的实现手机App远程访问我们的开发板。

本例中我们使用了"Rf1","Rf2","Rf3","Rs1","Rs2","Rs3","RL7"这七个数据点分别作为PM2.5,风速,雨滴,温度,湿度,紫外线等级,大气压强这七个传感器值上传数据通道,记得在机智云平台修改相应的数据点的名称。

► 选择二:机智云+零代码定制版App访问设备(难度较低

在选择二之前,必须完成上面选择一的工作,然后参考《赛博坦零代码App开发(4G版)》教程实现定制版App访问设备。

开发好以后的页面如下:

► 选择三:定制化开发APP或微信小程序(难度较高

如果有一定开发能力,开发者可以考虑在机智云免费提供的开源代码上做一定的定制开发形成自己的App。

如果开发者希望开发一个专属的App,机智云也会提供代码开源的安卓和IOS SDK框架,帮助开发者快速完成App开发,开发者仅需关注App的UI和UE设计即可,而相对复杂的协议与错误处理等事项可忽略。关于开源SDK的介绍和获取请进入docs.gizwits.com了解更多内容。

如果开发者希望开发一个专属的微信小程序应用, 可以进入docs.gizwits.com了解相关开发教程。

十分钟开发物联网:智能气象站(4G版)相关推荐

  1. 十分钟开发物联网:智能加湿器(Wifi版)

    智能加湿器设备集成了温湿度传感器.加湿器控制单元.以及Wifi传输模块,ShineBlink万能核心板采集温湿度传感器数据,并将它们上传至机智云,然后我们就可以在远程通过手机App或者Web网页端来访 ...

  2. 十分钟开发物联网:汽车防盗GPS追踪(4G版)

    追踪汽车的GPS定位信息以及获取汽车当前运动的三轴加速度值,通过GPS定位信息我们可以判断汽车当前的位置,通过三轴加速度值我们可以判断当前汽车的运动状态(比如是否在运动中或者停止中). 视频教程及实物 ...

  3. 十分钟开发物联网:智慧农业大棚环境监测(4G版)

    农业大棚环境监测设备集成了大棚中一些关键指标的测量传感器(包含:二氧化碳.光照强度.温度.湿度.紫外线),ShineBlink万能核心板采集这些传感器数据,并将它们上传至机智云:然后我们就可以在远程通 ...

  4. 十分钟开发物联网:烟雾感应监测(Wifi版)

    智能烟感应监测实现对烟雾的实时监测,并将监测数据通过Wifi上传至机智云,当烟雾量大到一定程度时,同时会向机智云发送一个报警信号.用户也可以用App远程查看本地的烟雾传感数据以及报警状态. 视频教程及 ...

  5. php ios表情包,十分钟开发一款 iOS 表情包 App

    十分钟开发一款 iOS 表情包 App 在最近更新的 iOS 10 系统中,苹果开放了 iMessage Stickers 的开发,通俗的说法就是我们现在可以为 iMessage 开发表情包了. 表情 ...

  6. 十分钟开发一款应用,这15个国产低代码开发平台太秀了!

    "低代码开发"最早可追溯到20世纪90年代至21世纪初的编程语言和工具(百度百科).阿里云智能总裁张建锋在钉钉6.0发布会上也表示,"低代码开发",将成为新一代 ...

  7. 十分钟了解物联网主流通信协议

    编者荐语: 以下文章来源于华为云IoT ,作者我是卤蛋 这个文章来自网络,原文链接:https://www.cnblogs.com/hwiot/p/11944839.html,看了全文,觉得不错,因此 ...

  8. 十分钟开发一个调用Activity的PhoneGap插件

    在HybridApp开发中,非常多业务我们是没有办法通过HTML5+js实现的,比方调用第三方的包括Activity的jar包,一些必须使用原生代码才干实现的功能,比方复杂的UI的效果,调用通讯相关的 ...

  9. 十分钟开发出神经网络五子棋

    本文讲述了使用确定性神经网络SDK开发神经网络五子棋的过程,通过控制台项目.MFC对话框项目分别展示了详细的操作和代码,并附带了一个可用于自主创业的实用案例.另外,此处所述的五子棋可以轻易地扩展成其它 ...

最新文章

  1. java对cookie的操作
  2. Timus 1049 Brave Balloonists
  3. 《高性能JavaScript》第六章 快速响应的用户界面
  4. 在 MySQL 中使用码农很忙 IP 地址数据库
  5. Linux(4) 实用指令
  6. python按条件拆分列表元素_Python按多个元素和条件拆分列表
  7. hinernate中持久化对象的状态
  8. json的各种格式的转换
  9. js 分页页码 根据总条数计算有多少页,计算页码
  10. 直流电动机调速matlab,基于MATLAB龙门刨床直流电动机调速系统仿真研究
  11. y的花式写法_y的花式写法_26个字母的花式写法,总有一个你喜欢哒
  12. 罗德与施瓦茨SMU200A信号发生器
  13. 【产品速递】云和恩墨ZDBM数据库备份一体机
  14. 时空旅行的可能性(无聊研究社)
  15. java设计模式-观察者模式(广播机制,消息订阅)
  16. 简单电话簿管理系统(C语言)
  17. 独孤思维:长期稳妥的赚钱方法
  18. Java - 校园类型系统班级升年级
  19. C++使用ifstream读取文件
  20. IDEA里面快速生成函数注释

热门文章

  1. 苹果三代耳机_p360 AirPods Pro 苹果三代耳机
  2. 2009年8月8号日志
  3. 单片机c语言基础知识,c语言必背100代码有哪些?
  4. vivado 2019.2下载地址分享,网盘分享
  5. 停车还能360全方位影像_停车场实拍长安UNI-T,全系配主动刹车、360全景影像,定价成关键...
  6. Unet++语义分割网络(网络结构分析+代码分析)
  7. 中南设计集团BIM云实践,泽塔云超融合GPU云功不可没
  8. mysql 查询不等于问题
  9. 计算机辅助设计实训报告范文,电子实训报告总结范文
  10. 弱校胡策 大逃亡(BFS灌水+二分答案)