加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入

2016年广东省电子设计大赛健康电子专题——健康养殖远程监控系统(环境监控系统V1.0版本)

2018/01/23
105
服务支持:
技术交流群

完成交易后在“购买成功”页面扫码入群,即可与技术大咖们分享疑惑和经验、收获成长和认同、领取优惠和红包等。

虚拟商品不可退

当前内容为数字版权作品,购买后不支持退换且无法转移使用。

加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论
放大
方块图(2)
  • 方案介绍
  • 相关文件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

2016年7月至8月下旬,笔者正逢大一暑假,和两个大二的师兄一起参加了这个比赛。

现在笔者读大三,比较有时间便分享一下这段经历,下面主要讲整个系统的设计和之后完善方向。

首先是解题思路:我们查看了官网上有关这次比赛健康电子专题的资料,资料上提出希望参赛者结合互联网+、物联网技术,设计一个关于健康电子的作品。于是,我们便有了这个想法,通过无线方式上传数据至云端,监测、上传一些危害人体健康的数据,并可以实时看到数据且通过控制减少危害,这完全切合题意。

系统实现的功能:集云端监测、自动化控制(闭环)、远程控制(开环)于一体,运用WIFI和GPRS技术,将水质指标数据上传至云端(OneNet物联网云服务平台),当水质指标值超过设定值时,系统向用户发送手机信息和控制水质处理设备,改善水质的质量。

详细介绍:该系统通过传感器检测水体中的水温、水浊度、PH值以及外界的光照强度。经过单片机(arduino)的处理,系统将传感器的数值转换为对应的水体指标数值,经过按键选择WIFI和GPRS传输模式,将数据上传至ONENET平台。用户可通过电脑网页或手机APP查看数据和控制水质处理设备。当水质指标超过设定值时,系统向用户发送手机信息和控制水质处理设备,改善水质的养殖质量。

采用的方案:

该系统采用WIFI和GPRS相互结合进行传感器数据的传输,通过ONENET平台进行数据的上传。

功能框图:

硬件

单片机:arduino mega2560

传感器: DS18b20 、PH计、浑浊度传感器、光照传感器

模块:ESP8266、 SIM800、继电器

主程序框图:

部分程序框图:

部分源代码

String ssid = "PUSHPULL";//需要连接的自己路由器的无线名称
String pass = "888******";//无线密码

#define OneNetAPIKEY "pmWLtnkDBSreKfvg7GsClUXdXa4A'' //ONENET的APIkey
#define OneNetDeviceID 79146 //设备ID号
#define OneNetSensorID0 "TEMP" //数据流名称
#define OneNetSensorID1 "HUMI"

WIFI wifi;

void setup() {
wifi.begin(ssid,pass);//设置wifi连接
}

void loop() {
//读取温湿度传感器值,经过这个函数后,myDHT11.TEM_Buffer_Int和myDHT11.HUMI_Buffer_Int被分别填充上了温度和湿度值
myDHT11.DHT11_Read();
//将数据上传到ONENET对应的设备和传感器
wifi.postDataToOneNet(OneNetAPIKEY,OneNetDeviceID,OneNetSensorID0,myDHT11.TEM_Buffer_Int);
delay(1000);
wifi.postDataToOneNet(OneNetAPIKEY,OneNetDeviceID,OneNetSensorID1,myDHT11.HUMI_Buffer_Int);
delay(1000);
} //该代码例程是一位arduino开发者写的,底层函数打包在一个arduino的CPP库中,WIFI传输数据全是基于这个代码。

//以下是GPRS上传数据的函数,我们团队编写的。

void postGSMdatatoOneNet(String APIKEY1,unsigned long device_id,String sensor_id,float thisData){
Serial.println("AT+CIPSTART="TCP","api.heclouds.com",80"); //修改为要发送给的IP和端口
delay(3000);
Serial.println("AT+CIPSEND"); //设置发送模式
delay(100);
time = millis(); //返回当前CPU时间
String cmd;

//以下按照ONENET通信协议,发送字符串
cmd = "POST https://api.heclouds.com/devices/";
cmd += String(device_id);
cmd += "/datapoints HTTP/1.1rn";
cmd += "Host: ";
cmd += "api.heclouds.com";
cmd += "rn";
cmd += "api-key: ";
cmd += APIKEY1;
cmd += "rn";
cmd += "Connection: close";
cmd += "rn";
cmd += "Content-Length: ";

String thisData1=String(thisData);
int length = 53 + sensor_id.length() + thisData1.length(); //算出长度
cmd += String(length);
cmd += "rnrn";
cmd += "{"datastreams":[{"id":"";
cmd += sensor_id;
cmd += "","datapoints":[{"value":";
cmd += String(thisData);
cmd += "}]}]}";
cmd += "rnrnrnrn";
Serial.print(cmd);
delay(200);
Serial.write(26);
delay(500);
Serial.println("AT+CIPCLOSE"); //传输关闭
delay(200);
}

传感器方面不是我们想体现的主要功能,在有库函数的情况下,arduino中传感器程序比较简单,我们只是将数据做了一些滤波和转换,在这里就不贴出来了。

作品图片:

网页版

手机APP

比赛作品

附:ONENET网址:https://open.iot.10086.cn/?utm_source=baidu&utm_campaign=%E5%93%81%E7%89%8C&utm_adgroup=onenet-%E6%A0%B8%E5%BF%83&utm_term=onenet&utm_medium=search_cpc

(可以注册账号和下载app,用户免费使用其云端)

该版本的不足:

由于当时水平不够,所以用了编程相对比较简单的arduino,arduino开发周期虽然短,但是局限性也比较大,如果要做深入的应用开发,还是要用其他单片机,比如STM32等。

完善方向:

该系统可以将单片机换成STM32,芯片为F103RCT6,比完赛后笔者在ONENET官方群上申请了这样的一块板,可以做后期的应用开发。除了使用WIFI,GPRS这些无线方式,近年来比较火的NB-iot也是一个很好的方向。此外,应用场景很广泛,各种监测都能使用,如果个人使用,ONENET已经足够了;企业使用的话,可以开发企业专属云端和配套的网站、APP。

附一些资料,代码等。

  • wifi扩展板电路图.pdf
    描述:模块原理图
  • bisai123.rar
    描述:原理图
  • 水产健康养殖远程监控系统.pdf
    描述:论文

相关推荐

电子产业图谱