0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

4G气象站的设计与实现

9GxC_IoTMaker 来源:机智云开发者 作者:机智云开发者 2022-08-27 11:17 次阅读

ShineBlink 是一款零门槛、零开发环境、低代码的万能物联网智能硬件开发板

机智云开发者提供傻瓜式硬件上云、接App/小程序的能力

结合 ShineBlink 和 机智云 开发者即使不懂嵌入式物联网开发、云和App开发,也能很快实现一款包含硬件、云和App的物联网智能硬件。

一、本章实现功能介绍

Shinelink开发板通过采集PM2.5传感器、紫外线传感器、风速传感器、雨滴感应传感器、SHT温湿度传感器、气压传感器采集数据,数据通过ML302(4G通信模块)将数据上传至机智云,之后我们就可以在远程通过手机App或者Web网页端来访问这个气象站测量的所有传感器数据。

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

58fe4c7e-25b5-11ed-ba43-dac502259ad0.png

5923a0aa-25b5-11ed-ba43-dac502259ad0.png

二、硬件端接线图

593b10e6-25b5-11ed-ba43-dac502259ad0.png

注意:上面的电路传感器比较多,要求给 ShineBlink 开发板提供5V的电源带载能力至少大于1A。

三、材料清单

59530958-25b5-11ed-ba43-dac502259ad0.png

四、硬件端完整源代码
--定义函数:将传感器输出电压(单位:mv)转换成紫外线指数indexfunction GetUvIndex(v)  if v < 50.0 then    index = 0  elseif v < 227.0 then    index = 1;  elseif v < 318.0 then    index = 2;  elseif v < 408.0 then    index = 3;  elseif v < 503.0 then    index = 4;  elseif v < 606.0 then    index = 5;  elseif v < 696.0 then    index = 6;  elseif v < 795.0 then    index = 7;  elseif v < 881.0 then    index = 8;  elseif v < 976.0 then    index = 9;  elseif v < 1079.0 then    index = 10;  else    index = 11  end  return indexend--使能USB print输出打印LIB_UsbConfig("CDC")--机智云平台为每个产品类别分配的唯一PK和PS,一定要改成您自己的PK和PSPK = "7ebaec64beaf4e389a2957f38711fcda"PS = "b4a4ef17dbf74463b0f1b3c525a8b8de"--初始化4G模块LIB_Giz4GConfig(PK,PS,1000,120,"UART0","D5","HIGH","D6","HIGH")--配置A0-A3这四个电压采集通道同时开始工作,当每个通道采集满50个点时缓存满,每个点的采集时间间隔为10msLIB_ADConfig(50,10000)--设置PM2.5传感器占用TX1和RX1引脚LIB_ZPH04Config("UART1")--设置sht3x传感器占用SCL0SDA0引脚,并启动传感器以每秒出10个数据的频率工作,repeatability="HIGH"时精度最高LIB_Sht3xConfig("IIC0","10","HIGH")--设置BMP280气压计传感器占用SCL1和SDA1引脚,并启动传感器以每秒输出26.32组数据的频率工作LIB_BMP280Config("IIC1")--开始大循环while(GC(1) == true)do  LIB_DelayMs(50)  --查询是否读到温湿度数据产生  sht3x_flag,sht3x_temp,sht3x_humi = LIB_Sht3xGetResult()  if sht3x_flag == 1 then    --打印读到的温湿度值,保留2位小数    print(string.format("temp: %.2f
humi: %.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))    --向机智云服务器发送长整数型气压数值,单位:Pa    LIB_SendToGizCloud("RL7", math.floor(pressure))  end  --查询是否读到传感器PM2.5  flag, pm25_val = LIB_ZPH04GetPM25()  if flag == 1 then    --打印读到的PM2.5值,保留1位小数,单位:ug/m^3    print(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 then    SUM = 0    for i = 1, #A0_tab do --此处#A0_tab的值是50,表示A0_tab表内的元素个数      SUM = SUM + A0_tab[i]    end    AVER = SUM / #A0_tab --计算平均采样值    --将A0通道的AD值转换成实际电压打印出来    out_voltage = AVER*3.6/4096.0    --打印出传感器输出的电压值,保留小数点后两位,单位V    print(string.format("wind voltage=%.2fV
", 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 then    SUM = 0    for i = 1, #A1_tab do --此处#A1_tab的值是50,表示A1_tab表内的元素个数      SUM = SUM + A1_tab[i]    end    AVER = SUM / #A1_tab --计算平均采样值    --将A0通道的AD值转换成实际电压打印出来    vol_mv = AVER*3600/4096.0    --打印出传感器输出的电压值,保留小数点后两位,单位mV    print(string.format("ultraviolet voltage=%.2fmV
", vol_mv))    uv_index = GetUvIndex(vol_mv)--将电压转换成紫外等级指数    --打印紫外线等级,0~11    print(string.format("ultraviolet level=%d
", 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 then    SUM = 0    for i = 1, #A2_tab do --此处#A2_tab的值是50,表示A2_tab表内的元素个数      SUM = SUM + A2_tab[i]    end    AVER = SUM / #A2_tab --计算平均采样值    --将A0通道的AD值转换成实际电压打印出来    vol = AVER*3.6/4096.0    --打印雨滴传感器输出的电压值,保留小数点后两位,单位V    print(string.format("rain voltage=%.2fV
", vol))    --向机智云服务器发送(雨滴值)浮点型小数值(范围应是-100.00~500.00)    LIB_SendToGizCloud("Rf3", vol)  endend
五、机智云接入和App开发

无论使用哪种方法实现APP控制,都必须先定义数据点。

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

59a35a16-25b5-11ed-ba43-dac502259ad0.png

方法一:使用机智云测试APP

先在机智云开发者中心定义好数据点

随后下载机智云测试APP

使用机智云测试APP扫描4G模块二维码

即可实现APP控制设备了。

具体过程可参考:

http://www.shineblink.com/html/gizwits/9_3_4GJoin/4GJoin.html

方法二:使用赛博坦工具零代码定制版App

在机智云开发者中心定义好数据点后,

创建一个移动应用,定义相应的页面信息

再关联相应的智能产品,

即可实现定制版App访问设备。

开发好以后的页面如下:

5923a0aa-25b5-11ed-ba43-dac502259ad0.png

具体过程可参考:

http://www.shineblink.com/html/gizwits/9_4_4GJoinSaiBoTan/4GJoinSaiBoTan.html

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 物联网
    +关注

    关注

    2870

    文章

    41662

    浏览量

    358436
  • 开发板
    +关注

    关注

    25

    文章

    4437

    浏览量

    94088
  • 气象站
    +关注

    关注

    1

    文章

    694

    浏览量

    15348
  • 机智云
    +关注

    关注

    2

    文章

    542

    浏览量

    26219

原文标题:实操案例:基于Shineblink和机智云的4G气象站

文章出处:【微信号:IoTMaker,微信公众号:机智云开发者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    #移动气象站# 扬尘监测# 车载气象站 车载扬尘监测站

    监测气象站
    pgz1234
    发布于 :2023年09月18日 08:52:32

    LabVIEW自动气象站演示

    基于LabVIEW自动气象站演示,包括可执行文件及源代码
    发表于 04-01 21:59

    野外无人自动气象站联网方案

    准确性,实现利用精细化的城市内涝气象预警服务系统为市排水集团排除积水服务。各地市气象局不断增设无人自动气象站,以提高预报的精准度;无人自动气象站
    发表于 12-28 17:13

    如何使用miniprog3设置气象站

    你好,可以请人帮我,我想计划的cy3271-exp1 PSoC气象站板采用miniprog3这样我可以把周围的光强读数然后发送阅读通过串行命令我写的一个应用程序并存储的数据画成了GR促性腺激素释放
    发表于 04-15 08:32

    采用LabVIEW实现虚拟自动气象站设计

    QLI50气象数据采集器,实现虚拟自动气象站设计。2 虚拟自动气象站功能介绍  自动气象站由传感器、数据采集器、数据处理终端等组成。传感器感
    发表于 04-16 09:40

    如何使用树莓派制作小气象站

    自动气象站可以实时探测气温、湿度、气压、风速、风向、降雨量、紫外线辐射等气象信息,通过不同的传感器采集地面气象数据,数据采集完成后通过网络统一传输到气象服务器上,再经
    发表于 05-19 07:59

    基于机智云gokit4.0(G)和MDM9206的 小型智能气象站

    项目介绍小型气象站广泛应用于气象、农业、环境检测和治理等领域。小型气象站对空气温湿度、光照、风速、风向、雨量、土壤湿度、蒸发量、大气压力等环境气象要素进行全天候现场检测。通过更换不同的
    发表于 07-19 16:18

    基于DS3231的自动气象站设计

    设计方案:1. 设计内容简易自动气象站实现以下功能:测量功能。对温度、气压和光强等气象要素进行测量并把测量值用液晶显示出来供用户读取。自记功能。用25系列存储器实现掉电存储,不丢失数
    发表于 08-09 09:11

    基于51单片机的气象站系统功能描述

    基于51单片机的气象站系统功能描述,使用51单片机实现气象站的全部功能,如温湿度、大气压强,光照度、风向、风强的检测,并有LCD12864、GSM、整流稳压等电路的部分。气象站系统电路
    发表于 11-19 08:59

    怎样去设计一个基于ESP32的家庭气象站系统

    文章目录1 简介2 主要器件引脚连接3 实现效果4 部分实现代码5 最后1 简介Hi,大家好,这里是丹成学长,今天向大家介绍一个学长做的单片机项目基于ESP32的家庭气象站系统大家可用
    发表于 12-13 07:38

    你知道生活中的“气象员”吗?请随我来了解一下-小型气象站

    如有任何的需求Please call me:清易常慧杰***一、什么是小型气象站?小型气象站是由气象传感器、数据采集终端、电源系统、野外防护箱和支架等部分构成。风速、风向、雨量、蒸发量等传感器为
    发表于 12-31 11:22

    DIY一个基于ESP8266的wifi气象站

    描述气象站ESP8266 E12带 ESPHome 的 DIY WiFi 停止处理不断变化的天气软件和 API,自己获取传感器数据
    发表于 06-24 07:26

    分享一个气象站项目

    描述气象站 | 风向
    发表于 07-11 07:16

    Wemos Mini Di继电器和气象站

    描述Wemos Mini Di继电器和气象站Wemos D1 迷你转接板,用于 3 个中继或 2 个中继+气象站
    发表于 08-17 06:26