基于ZigBee的兰花自动培养系统的设计与实现_第1页
基于ZigBee的兰花自动培养系统的设计与实现_第2页
基于ZigBee的兰花自动培养系统的设计与实现_第3页
基于ZigBee的兰花自动培养系统的设计与实现_第4页
基于ZigBee的兰花自动培养系统的设计与实现_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1章绪论1.1研究背景与意义在中国,兰花的栽培历史已有一千余年,可以说是中华文化的一部分。兰花作为中国的传统名花,它是指分布在中国的兰属植物中的多种地生兰花,它拥有许多的品种,其中包括寒兰、春兰、墨兰、惠兰、建兰等等。它们相较于花大色艳的热带兰花,中国的兰花并没有那么醒目的艳丽色彩和硕大的花朵和叶子。但是它们却散发出一股淡雅、质朴、高洁和文静的气质,这种气质恰好符合了中国传统的审美标准。然而,兰花生长时对湿度要求很高,不同生长时期需要不同的湿度。传统种植兰花的方法中,湿度和温度的调节能力较差,特别是在一些空气较干燥的地区,这种种植方法会导致兰花品质很差。因此,本设计的目的是为了解决传统种植兰花的湿度和温度调节能力差的问题,提出了一种兰花智能培养系统。1.1.1国外智慧农业发展现状智慧农业是指利用先进的技术手段,如传感器、物联网、云计算、人工智能等,对农业进行数字化、智能化改造,以提高农业生产效率、保障农产品质量、节约资源、减少对环境的污染。目前,全球各地都在积极推进智慧农业的发展,其中一些国家的进展尤为突出。尤其是美国,因为美国一直是智慧农业的领导者之一,已经开发出许多先进的技术和系统,如精准灌溉、自主驾驶拖拉机、无人机植保等等。美国还在大力推广物联网和云计算技术,以支持智慧农业的发展。在日本,因为人口老龄化和土地资源紧缺,日本一直在积极推广智慧农业技术。并已经开发出了许多智能设备和机器人,如自动收割机器人、智能灌溉系统等。欧洲各国也在积极探索智慧农业的发展,尤其是德国、荷兰等国家。荷兰已经发展出了世界领先的设施农业技术,而德国则在推广精准农业技术,以提高农业生产效率和粮食安全。总的来说,各国在智慧农业领域的发展都有所突破,但也存在一些挑战,如技术成本较高、农民的技术接受度不高等。未来,随着技术的不断进步和普及,智慧农业的应用前景将更加广阔。1.1.2国内智慧农业发展现状我国智慧农业发展比较晚,但国家近年来出台了一系列支持智慧农业发展的政策,如《关于推进农业信息化发展的若干意见》和《农村电子商务发展行动计划》等文件,来大力推广智慧农业发展。使得中国的智慧农业发展已经取得了一些成果,如在江苏、浙江、河南等地,政府已经投入大量资金和人力资源,建设智慧农业示范区,推广智慧农业技术和模式,带动当地农业的转型升级。智慧农业产业链也正在不断完善,涵盖了从硬件设备制造、软件开发、系统集成到农业服务等多个环节,形成了一批优秀的企业和创新型团队,如华为、阿里、海尔等公司都在积极推动智慧农业的发展。总的来说,中国的智慧农业发展已经取得了一些成果,但也面临一些挑战,如技术应用难度较大、普及程度有限、农民的技术接受度不高等。未来,需要加大对智慧农业技术的研发和推广力度,提高农民的技术水平和应用能力,才能真正实现智慧农业的大规模应用和推广。1.2兰花种植的发展兰花是一种重要的观赏植物,其种植发展历史可以追溯到数千年前。古代种植:早在古代中国,就有人开始种植兰花。据史书记载,战国时期的蔡伯曾经种植过兰花,并称之为“蔡花”。到了唐朝时期,兰花已经成为了一种贵族庭院和宫廷的常见植物。近代发展:在明清时期,兰花的种植技术得到了进一步的发展。清朝的康熙年间,福建省的黄明煦成功地繁育出了“黄背心”兰花,成为中国兰花繁育的重要里程碑。此后,兰花的种植技术逐渐得到了提升和完善,成为了一种高档的花卉。现代培育:20世纪初,中国的兰花种植进入了现代化的阶段。1923年,福建省长林森曾出资引进美国和荷兰的优良兰花品种,进行了大规模的培育和引种。此后,中国的兰花产业得到了进一步的发展和壮大,成为了世界上最重要的兰花生产国之一。当代发展:21世纪以来,随着中国经济的发展和人们生活水平的提高,兰花成为了一种越来越受欢迎的花卉。中国的兰花种植技术不断创新和进步,种植规模和品种数量也在不断扩大。同时,兰花的国际化发展也越来越成熟,中国的兰花种植和贸易在国际兰花市场上占据着重要地位。总的来说,兰花种植发展经历了漫长的历史和不断的创新,现在已经成为了一种高档的花卉,并在全球范围内得到了广泛的关注和认可。第2章系统方案设计2.1系统需求分析2.1.1兰花生长因素分析光照:兰花需要充足的光照才能进行光合作用,促进植物的生长和开花。兰花通常喜欢散射光线和光照充足的环境。对于不同种类的兰花,其对光照的需求也不尽相同,比如有些兰花需要充足的阳光,而有些则更适合在阴凉处生长。温度:温度也是影响兰花生长的重要因素。兰花一般喜欢温暖湿润的环境,适宜的生长温度一般为18-28℃。如果温度过低或过高,都会对兰花的生长产生不利影响。湿度:兰花的生长环境需要一定的湿度,但是过高或过低的湿度都会对兰花的生长产生不利影响。一般来说,兰花的生长适宜的湿度为60-80%。水分:兰花需要适量的水分才能生长,但是过多或过少的水分都会对兰花的生长产生不利影响。在兰花生长的过程中,要保持适宜的土壤湿度,避免过度干燥或积水。2.2系统总体需求2.2.1系统设计原则适应性:兰花需要特定的温度、湿度和光照条件,因此智慧农业系统需要能够自动调整这些环境参数以适应不同生长阶段的兰花。精细化控制:由于兰花生长过程中较为敏感,智慧农业系统需要进行精细化控制,以避免过度灌溉、施肥和过度光照等问题。水肥一体化:兰花需要适量的水和营养素,智慧农业系统应该将水肥一体化,以便根据植物状态自动调整灌溉和施肥量。智能监测:智慧农业系统需要能够实时监测兰花的生长状态、土壤水分、光照和温度等因素,并能够根据这些数据来进行预测和控制。病虫害预防:兰花容易受到病虫害的侵袭,智慧农业系统应该能够通过预防措施和自动化控制来减少病虫害的发生。数据分析:智慧农业系统需要能够对收集到的数据进行分析和处理,以便优化生产效率和减少浪费。2.3.系统设计2.3.1总体需求与分析(1)传感器获取信息模块(感知层):光照强度传感器,土壤水分传感器,空气温度传感器,空气湿度传感器。(2)ZigBee等无线传输和数据处理模块(网络层):网关单元连接互联网,创建MQTT客户端与服器相连接,编写对于特定的数据处理程序,开发人机交互页面,数据可视化。(3)自动控制系统(应用层):电磁阀,补光灯,加湿器,遮掩帘等如图2.1所示这是总体需求结构图。图2.1总体需求结构图2.4系统基本架构详述基于ZigBee无线网络技术的兰花自动栽培系统由传感器终端节点、协调器节点和云平台三部分组成。传感器终端节点负责采集兰花的生长环境数据,如光照强度、湿度和温度等。随后,这些数据通过无线传输至ZigBee协调器节点。接着,协调器节点将采集到的数据上传到云平台。云平台负责存储和分析采集到的数据,并为用户提供图形化的用户界面,以便用户可以方便地查看兰花的生长状况并调整生长环境参数。为了实现这一功能,ZigBee传感器终端节点配备了空气温湿度传感器、土壤湿度传感器和光照强度传感器。这些传感器节点通过ZigBee无线连接与协调器节点进行数据传输。协调器节点使用WiFi模块与云平台建立连接,并通过MQTT协议将传感器节点采集到的数据上传至云平台。用户可以通过网络浏览器访问云平台,以便随时监测兰花的生长状况并对生长环境参数进行调整。通过以上架构,兰花自动栽培系统实现了兰花生长环境的监测和控制。传感器终端节点的数据采集、协调器节点的数据处理与传输,以及云平台的数据存储和分析,为用户提供了便捷的兰花管理工具。用户可以通过这个系统监测兰花的生长情况,并对生长环境参数进行调整,以确保兰花获得最佳的生长条件和产量。OneNet物联网云平台是一种云计算服务,为连接到互联网的设备提供基础架构和工具,以实现物联网(IoT)应用程序的开发、部署和管理。OneNet物联网云平台通过收集、存储、分析和处理来自物联网设备的数据,提供实时的可视化和控制,以及数据分析和预测功能。它还为物联网设备提供了安全和可靠的连接和通信渠道,以及简化的设备管理功能。物联网云平台通常具有高度可扩展性、弹性、安全性和可定制性,以满足不同物联网应用程序的需求。架构详解如图2.2所示。图2.2架构详解第3章系统硬件设计3.1无线网络技术3.1.1无线网络技术概况无线网络技术是指通过无线电波或其他无线通信信道传输数据,无需物理电缆或有线连接。这些年来,这项技术有了很大的发展,现在有几种无线网络技术在使用中。最常用的无线网络技术之一是Wi-Fi,它允许无线设备连接到局域网(LAN)并访问互联网。Wi-Fi工作在2.4GHz和5GHz频段,支持高速数据传输速率。另一种无线网络技术是蓝牙,它是为设备之间的短距离通信而设计的。蓝牙广泛应用于无线耳机、扬声器和其他便携式设备。3G、4G和5G等蜂窝网络为智能手机和平板电脑等移动设备提供无线连接。蜂窝网络使用基站和天线系统来覆盖大面积区域。除了这些技术,还有其他无线网络技术,如ZigBee、Z-Wave和NFC,它们是为特定的应用和使用情况而设计的。无线网络技术彻底改变了我们相互连接和通信的方式,使我们能够随时随地保持连接和访问信息。随着对无线连接需求的持续增长,新无线网络技术和标准的发展将在塑造通信和连接的未来方面发挥重要作用。3.1.2应用现状和发展环境监测:无线网络技术正被广泛用于环境监测应用。例如,在空气质量监测中,可以实时收集各种污染物的数据,如颗粒物、一氧化碳和臭氧。这些数据可用于生成空气质量地图,并在空气质量水平超过安全限值时发出警告。在水质监测中,无线网络技术可以收集水温、pH值和其他可能影响水质的参数的数据。这些数据可用于检测水污染和保护水生生物的健康。在土壤监测中,可以收集土壤湿度、温度和其他参数的数据,以帮助农民优化灌溉管理和提高作物产量。工业过程控制:无线网络技术正被用于各种工业过程控制应用,如制造、物流和运输。例如,在制造业中,无线网络技术可以实时监控生产过程,检测设备故障,优化生产效率。在物流领域,无线网络技术可以实时跟踪货物和车辆的位置,从而实现更高效的运输和库存管理。在交通领域,无线网络技术可以监控交通流量,检测事故,改善交通管理。农业:无线网络技术在农业方面有巨大的潜力,因为它们可以帮助农民优化作物生长并减少浪费。例如,在作物监测中,可以收集土壤湿度、温度和其他参数的数据,以帮助农民优化灌溉管理和提高作物产量。在害虫控制方面,无线网络技术可以检测害虫和疾病的存在,并提醒农民采取适当的措施。在灌溉控制中,无线网络技术可以优化用水,减少浪费。医疗保健:无线网络技术正被用于各种医疗保健应用,如监测生命体征、跟踪患者运动和管理医疗设备。例如,在生命体征监测中,可以收集心率、血压和其他参数的数据,以帮助医生实时监测患者的健康状况。在病人跟踪方面,无线网络技术可以帮助医院实时跟踪病人和医疗设备的位置,从而更有效地利用资源。在医疗设备管理中,无线网络技术可以监控医疗设备的使用和维护,确保其始终处于良好的工作状态。总的来说,无线传网络技术正被广泛应用,并具有巨大的发展潜力。随着技术的不断完善和应用场景的不断拓展,无线网络技术将继续在提高生活质量和促进社会发展方面发挥越来越重要的作用。3.1.3基于ZigBee技术的无线网络技术基于ZigBee技术的无线网络技术由于其低成本、低功耗和易于部署而成为许多应用的流行选择。ZigBee是一种无线通信标准,专为低数据速率、低功耗应用而设计,非常适合运用于兰花的自动培养系统。ZigBee技术基于通信协议IEEE802.15.4标准,该协议标准为低速率无线个人区域网(LR-WPAN)标准,并指定了物理和媒体访问控制(MAC)层。ZigBee使用网状网络拓扑结构,它允许节点通过中间节点直接或间接相互通信。这使得网络对于节点故障更加健壮和有弹性。在基于ZigBee的无线网络技术中,网络由三种类型的节点组成,分别是ZigBee协调器、ZigBee路由器和ZigBee终端设备。ZigBee协调器负责启动和维护网络,而ZigBee路由器和终端设备则负责与协调器和网络中的其他节点进行通信,图3.1展示了它们之间的关系。图3.1ZigBee网络拓扑结构与结点示意图基于ZigBee的无线网络技术有几个优点,包括:1:低功耗:基于ZigBee的无线网络技术使用低功耗无线电,并具有睡眠模式,这允许节点在不活跃地传输或接收数据时节省能量。2:低成本:与其他无线技术相比,基于ZigBee的无线网络技术成本相对较低,对于需要大量节点的应用来说,这是一个很有吸引力的选择。3:易于部署:基于ZigBee的无线网络技术易于部署,因为它们具有即插即用的特性。一旦节点通电,它可以自动加入网络并开始与其他节点通信。4:健壮性:基于ZigBee的无线网络技术使用网状网络拓扑,这使得网络更健壮,对节点故障更有弹性。5:基于ZigBee的无线网络技术已被广泛应用,包括环境监控、工业自动化、家庭自动化和医疗保健。例如,在环境监测中,基于ZigBee的无线网络技术可用于监测空气质量、水质和土壤湿度。在工业自动化中,基于ZigBee的无线网络技术可用于监控生产过程和设备性能。在家庭自动化中,基于ZigBee的无线网络技术可用于控制照明、空气调节(HVAC)系统和安全系统。在医疗保健领域,基于ZigBee的无线网络技术可用于监控患者健康和跟踪医疗设备。总体而言,基于ZigBee的无线网络技术为许多应用提供了低成本、低功耗和易于部署的解决方案,使其成为无线网络技术领域的热门选择。3.2主要硬件组成3.2.1CC2530CC2530是基于ZigBee技术的片上系统(SoC),由德州仪器开发。这是一款高度集成的解决方案,包括微控制器、无线电收发器和各种应用的外设。由于其低成本、高性能和低功耗,CC2530广泛用于许多基于ZigBee的应用。CC2530采用功能强大的8051微控制器,配有32KB闪存和8KBRAM,支持高效的代码执行和数据存储。它还包括一个2.4GHzIEEE802.15.4兼容无线电收发器,支持ZigBee和其他低功耗无线协议。该无线电收发器的灵敏度为-102dBm,最大输出功率为+4dBm,可实现远程通信。还包括一系列外设,包括ADC、PWM、UARTs、SPI和I2C,可用于与各种传感器和执行器接口。它还包括对AES-128加密和解密的硬件支持,确保安全通信。其原理图如图3.2所示。图3.2CC2530原理图CC2530的主要优势之一是其低功耗。它的休眠电流仅为1μA,非常适合电池供电应用。它还支持各种低功耗模式,包括省电、空闲和待机模式,可以进一步降低功耗。由全面的软件开发套件(SDK)支持,包括ZigBee协议栈、应用示例和开发工具。SDK为创建基于ZigBee的应用程序提供了完整的开发环境,允许开发人员快速、轻松地设计和部署他们的解决方案。已广泛用于基于ZigBee的应用,包括家庭自动化、智能照明、无线网络技术和工业自动化。它的低功耗、高性能和低成本使其成为许多开发人员和工程师的热门选择。总之,CC2530是基于ZigBee技术的高度集成的片上系统(SoC),由德州仪器开发。它包括一个功能强大的8051微控制器、一个兼容IEEE802.15.4的2.4GHz无线电收发器和一系列适合各种应用的外设。它的低功耗、高性能和低成本使其成为许多基于ZigBee的应用的热门选择。由于CC2530芯片具有较高的性能和灵活性,因此被广泛应用于智慧农业、智能家居、智慧城市等领域,为这些领域的智能化和互联化提供了重要的支持。3.2.2通信网关芯片ESP8266WifiESP8266WiFi模块是一种低成本的Wi-Fi芯片,广泛应用于物联网(IoT)项目。它由EspressifSystems开发,基于ESP8266片上系统(SoC)。ESP8266WiFi模块包括Wi-Fi无线电收发器、微控制器和各种外设,使其成为将物联网设备连接到Wi-Fi网络的高度集成解决方案,其模块如图3.3所示。图3.3ESP8266WiFi模块总之,ESP8266WiFi模块是一种低成本、高度集成的解决方案,用于将物联网设备连接到Wi-Fi网络。它包括Wi-Fi无线电收发器、微控制器和各种外设,可以在客户端和接入点模式下运行。该模块可使用Lua脚本语言或ArduinoIDE进行编程,功耗低,适合各种物联网应用。要将CC2530与ESP8266连接,可以通过串口通信实现它们之间的通信。首先,将它们连接到相同的供电电源,并确保它们共享相同的电源电压和接地线。接下来,使用串口连接CC2530和ESP8266。通过将它们之间的串口引脚连接在一起,实现数据的传输。具体来说,将CC2530的UARTTX引脚连接到ESP8266的串口RX引脚,将CC2530的UARTRX引脚连接到ESP8266的串口TX引脚,并将它们的地线(GND)连接在一起。确保设置串口通信的波特率相同。默认情况下,CC2530和ESP8266通常使用115200波特率进行通信。可以在代码中相应地设置波特率。最后使用ArduinoIDE,为ESP8266编写代码以建立与CC2530的串口通信。通过设置串口的波特率和引脚,使用相应的串口函数(例如Serial.begin()、Serial.print()和Serial.read())来发送和接收数据。3.2.3数字温湿度传感器DHT11DHT11是一种数字温湿度传感器,它可以通过单总线数字接口与微控制器等设备进行通信。DHT11传感器能够同时测量环境温度和湿度,并将数据以数字形式输出,具有精度高、体积小、成本低等优点,被广泛应用于智能家居、智慧农业、气象观测、空气质量监测等领域。DHT11传感器的测量范围为0-50℃,湿度测量范围为20%-90%RH,测量精度为±2℃,湿度精度为±5%RH。它采用单总线通信协议,能够直接连接到微处理器的数字IO口,通过一系列指令和响应来获取温湿度数据,具有使用简单、稳定性高、功耗低等特点,如图3.4所示为数字温湿度传感器DHT11模块。图3.4数字温湿度传感器DHT11在智慧农业中,DHT11传感器可以用于测量兰花生长环境的温度和湿度等参数,通过与ZigBee模块结合,将数据上传到云平台,实现对兰花生长环境的实时监测和管理。要将CC2530连接到数字温湿度传感器DHT11,首先,初始化GPIO引脚,设置为输入模式,以便接收来自DHT11的数据。接着,发送信号到DHT11,例如设置引脚为高电平并保持一段时间,然后切换到输入模式等待传感器的响应。当收到DHT11传感器的响应时,读取GPIO引脚上的数据位,并解析为温度和湿度值。根据DHT11传感器的通信协议,需要正确解析数据位并将其转换为温度和湿度值。3.2.4光敏电阻传感器YL-38YL-38光敏电阻传感器是一种常见的光敏传感器,也被称为光敏电阻器或LDR传感器。它是一种被动式元件,其电阻值会随着光照强度的变化而改变。当光照强度越弱,其电阻值越大;当光照强度越强,其电阻值越小,其模块如图3.5所示。图3.5光敏电阻传感器YL-38YL-38光敏电阻传感器通常由一个光敏元件、一个保护壳和两个引脚组成。它可以测量环境光的强度,广泛应用于照明控制、环境监测、安防系统等领域。CC2530连接到光敏电阻传感器YL-38,首先将YL-38的一个引脚连接到CC2530的模拟输入引脚(例如ADC0)。这个引脚将接收来自光敏电阻的电压信号。另一个YL-38引脚需要连接到CC2530的地线(GND),以提供电路的共地。在CC2530的代码中,需要初始化模拟输入引脚,将其设置为输入模式,并配置适当的参考电压。这样可以确保ADC能够正确读取模拟输入引脚上的电压。使用CC2530的ADC库或相应的函数,可以读取模拟输入引脚上的电压值。该电压值对应于YL-38光敏电阻的阻值。然后,根据电阻分压电路的设计和YL-38传感器的特性,可以将读取到的电压值转换为YL-38的光敏电阻值。3.2.5土壤湿度传感器YX55769YX55769是一种土壤湿度传感器,可以测量土壤或其他材料的含水量。它有四根电线,其中两根连在一起。它输出一个随湿度变化的模拟电压。该传感器可以与ZigBee等微控制器配合使用,以读取和处理模拟数据。传感器的AO引脚应连接到微控制器的ADC引脚,如PA1,以执行模数转换。这种情况下不使用传感器的DO引脚,其模块如图3.6所示。图3.6土壤湿度传感器YX55769将YX55769的输出引脚连接到CC2530的模拟输入引脚,初始化CC2530的模拟输入引脚作为输入模式,并设置适当的参考电压。这样可以确保ADC能够正确读取模拟输入引脚上的电压。首先通过调用initADC()函数来初始化ADC,设置参考电压和模拟输入引脚。然后,在readAnalogValue()函数中调用halAdcRead()函数来读取模拟输入引脚上的电压值。这个函数返回一个16位的无符号整数,表示模拟输入引脚的电压值。这可使传感器的数据可以显示在串行监视器、LCD屏幕或其他设备上。通过使用公式或校准曲线,可以将数据转换为湿度的百分比。3.3硬件链接与制作3.3.1终端设备ZigBee无线MCU:TICC2530F256USB转串口芯片:CH340土壤湿度传感器:YX55769光敏电阻传感器:YL-38数字温湿度传感器:DHT11图3.7ZigBee终端展示如图3.7所示这是ZigBee终端,它用于收集环境信息,将传感器收集到的信息发送到协调器上。3.3.2协调设备ZigBee无线MCU:TICC2530F256USB转串口芯片:CH340一路继电器:SRD-05VDC-SL-CWifi网关:ESP8266图3.8ZigBee协调器展示如图3.8所示这是ZigBee协调器,它充当网络协调器,允许添加和删除网络中的设备。设置一个ZigBee网络网关,连接想要连接到OneNet云平台的设备。连接继电器接受平台返回的数据,控制继电器继而控制水泵、加湿器等设备。第4章系统软件设计4.1物联网(IoT)云平台4.1.1物联网云平台物联网(IoT)云平台是一种基于云平台的服务,可以收集、处理和分析物联网硬件设备生成的数据。这些平台为管理物联网设备生成的大量数据提供了可扩展和灵活的基础设施,并允许开发人员和企业快速轻松地构建和部署物联网应用。物联网云平台通常包括以下组件:数据摄取:物联网设备通过各种通信协议向云平台发送数据,如MQTT、HTTP或CoAP。该平台接收数据并将其存储在数据库或数据湖中。数据处理:平台可以对数据进行实时处理,如过滤、聚合和转换。这使得平台能够基于数据生成洞察和警报。分析和机器学习:该平台还可以提供高级分析和机器学习功能,以分析数据并产生见解。这可能包括预测分析、异常检测和模式识别。应用支持:物联网云平台提供开发者工具和API,使开发人员能够快速轻松地构建和部署物联网应用。这包括设备管理、远程控制和数据可视化。安全性:物联网云平台还提供强大的安全功能来保护数据和设备免受未经授权的访问,包括身份验证、授权和加密。市场上有几种物联网云平台,包括:亚马逊网络服务(AWS)物联网:该平台提供一系列服务,包括数据摄取、处理、分析和机器学习。它还包括用于设备管理、安全性以及与其他AWS服务集成的工具。微软Azure物联网:该平台为物联网提供了一套全面的服务,包括数据摄取、处理、分析和机器学习。它还包括设备管理、安全和与其他Azure服务集成的工具。谷歌云物联网:该平台提供一系列服务,包括数据摄取、处理、分析和机器学习。它还包括设备管理、安全和与其他谷歌云服务集成的工具。IBMWatson物联网:该平台为物联网提供了一套全面的服务,包括数据摄取、处理、分析和机器学习。它还包括用于设备管理、安全性以及与其他IBM服务集成的工具。OneNet是一款基于物联网的云平台,可用于连接和管理物联网设备,并收集和处理传感器监测数据,提供数据分析和数据可视化等功能。OneNet云平台支持多种通信协议,包括ZigBee、WiFi、蓝牙等,可广泛应用于智慧农业、智能家居、智慧城市等领域。物联网云平台已被广泛应用于各行各业,包括制造业、医疗保健、智能城市和交通运输。它们使企业能够从大量设备中收集和分析数据,提供洞察力和智能来推动业务决策和优化运营。4.1.2OneNet云平台OneNet云平台具有以下主要特点:(1)支持多种物联网设备,包括传感器、执行器、控制器等,可以方便地与各种物联网设备进行连接和管理。(2)提供灵活的数据管理和分析功能,可用于收集、处理和分析物联网设备传输的数据,并生成相关的报表和图表,帮助用户更好地了解数据和趋势。(3)支持多种通信协议和数据格式,包括HTTP、MQTT、JSON等,可与不同类型的物联网设备进行通信和数据交换。(4)提供可视化的用户界面,方便用户对物联网设备进行管理和控制。(5)具有安全、稳定、高可靠性等特点,可保障物联网系统的安全性和稳定性。OneNet云平台可以与多种物联网设备配合使用,包括使用ZigBee通信协议的设备,如CC2530芯片和无线传感器等。在智慧农业领域,OneNet云平台可以用于兰花自动培养系统中,收集和分析传感器数据,帮助用户实现远程监控和控制。4.2链接OneNet云平台4.2.1基本流程将ZigBee协调器连接到OneNet云平台:需要使用WiFi协议将ZigBee协调器连接到OneNet云平台。OneNet支持各种集成协议,比如MQTT、HTTP和CoAP。选择MQTT协议。配置设备数据:一旦ZigBee协调器连接到OneNet云平台,就可以配置想要从ZigBee设备收集的数据。这可以包括传感器数据、设备状态和其他相关信息。进行分析和可视化数据:OneNet云平台提供了分析和可视化从ZigBee设备收集的数据的工具。这可以包括仪表盘、图表和警报,使能够监控和管理物联网设备和应用程序。4.2.2连接协议MQTTMQTT是一种轻量级的、开放的、基于发布/订阅模式的消息传输协议。它设计用于在低带宽、不稳定的网络环境下,将消息从发布者传递给订阅者。MQTT协议的主要特点包括:轻量级设计,适用于资源受限的设备和网络环境;采用发布/订阅模式,发布者将消息发布到特定的主题上,订阅者通过订阅主题来接收消息;支持不同的服务质量等级,提供不同的消息传递可靠性;使用TCP/IP连接进行通信,支持持久会话和清除会话两种模式;允许发布者发布保留消息,代理服务器会将其保存并在订阅者订阅主题时发送。MQTT在物联网应用中被广泛应用,为设备和应用程序提供了低延迟、实时的通信能力。4.2.3具体操作注册并登录OneNet物联网云平台,选择点击进入控制台页面,在云平台中创建一个新的产品,并命名设备所属的产品名称,并选择对应的设备协议,本文选择MQTT协议。因为产品名称拥有16个字符以内的限制,所以本文产品名称编写为“智能设备”。选择产品行业为环境监控,产品类别为办公设备-办公设备-其他,在产品介绍中写入“基于ZigBee的兰花自动培养系统的设计与实现”,选择组网方式为WiFi模块,操作系统选择无。网络运营商可以勾选全部,最后点击保存,这就完成了产品创建,具体如图4.1所示。图4.1OneNet产品创建完成产品创建之后,需要添加一个设备用于接收ESP8266Wifi模块发送到OneNet云平台的数据,在弹出的“添加设备”对话框中,填写设备名称和鉴权信息。设备名称是自己定义的一个唯一标识符,用于区分不同的设备。鉴权信息是设备登录时需要使用的参数,它可以是设备的密码、密钥、token等信息。选择数据保密性为“私密”可以保障设备数据的安全性,也可以选规则“公开”,本设计选规则“公开”,因为本设计数据重要,这可以根据实际情况选则。点击“确认”按钮,完成设备的添加。此时,将获得一个设备ID和鉴权信息。将这些信息保存好,以便后续使用。在ZigBee连接ESP8266Wif模块的协调硬件设备中,编写一个MQTT客户端程序,连接到OneNet云平台并向其发送数据。在连接时,需要使用之前获得的设备ID和鉴权信息作为登录参数。具体代码实现可以参考OneNet云平台提供的开发文档和示例代码。需要注意的是,需要在代码中定义设备数据的格式和传输协议,以便OneNet云平台能够正确地解析和处理数据。具体代码放在了附件中,需要查看前往附件中察看。在OneNet云平台中,可以通过设备管理页面查看设备状态和接收数据。还可以通过OneNet提供的API接口,将设备数据传输到其他系统或应用程序中进行进一步处理和分析,并进行数据的可视化开发,方便管理察看。4.3智能与便捷化处理4.3.1数据查询与处理OneNet的控制台可以进行设备管理、数据管理、规则引擎等操作。可以通过访问OneNet的控制台进而进对设备进行操作,如图4.2所示。图4.2控制台试图根据图4.2所示,通过OneNET控制台可以进行数据的实时查看、数据筛选和命令下发等操作。此外,你还可以在控制台中添加触发器来实现特定条件下的操作。触发器的作用是当指定范围内的数据点满足触发条件时,会向指定的URL地址发送POST请求。触发器有三种工作触发模式:(1)指定数据流ID(ds_id):当请求参数中仅指定了数据流ID(ds_id),而不包括其他参数时,当前项目下所有设备的数据流中,名称符合ds_id的数据将被触发。(2)指定设备ID(dev_id)和数据流ID(ds_id):当请求参数中同时指定了设备ID(dev_id)和数据流ID(ds_id)时,当前项目下名称为dev_id的设备的数据流中,名称符合ds_id的数据将被触发。(3)指定设备ID(dev_id)、数据流ID(ds_id)和数据流标签(datastream_tags):当请求参数中同时指定了设备ID(dev_id)、数据流ID(ds_id)和数据流标签(datastream_tags)时,当前项目下名称为dev_id的设备的数据流中,名称符合ds_id并且数据流标签符合datastream_tags的数据将被触发。此外,你还可以选择简单的方式,即发送邮箱提醒。当指定范围内的数据点满足触发条件时,系统会向指定的邮箱发送警告邮件。这样,当兰花生长环境出现异常变化时,你会收到警告提醒。通过这些功能,你可以根据需要设置触发器,实现对兰花生长环境数据的监测和预警,以及灵活的数据处理和操作。4.3.2数据可视化与便捷化数据可视化是将数据通过图表、图形、图像、地图等可视化方式呈现,以便更直观、清晰地理解和分析数据的过程。通过数据可视化,人们可以通过视觉感知来发现数据中的模式、趋势、关联和异常等信息,从而做出更准确的决策和洞察。在OneNet平台上,可以使用OneNet可视化平台来实现数据的可视化。在完成了创建产品的数据流上传后,打开OneNet官网,点击左上角,在弹出的界面选择数据可视化View。如图4.3所示,进入这个界面就可以开始新建自己的可视化平台了。图4.3OneNet可视化操作平台如图4.3所示,点击新建项目,创建可视化页面,并进行进行数据可视化页面编辑,如图4.4所示,拥有统计图,温度计,按钮等许多控制部件可共选择并编辑并选择对应的数据流,最后进行编码选则相应数据。图4.4可视化编辑页面在可视化编辑页面中,如图4.4所示,选择手机或者PC端页面,添加四个计量表,四个开关,一个折现统计图,并根据实际需求编写js脚本,开发过滤器,最后结果如图4.5和图4.6所示。保存并发布,通过手机访问url链接就可便捷方便查看数据并处理。图4.5数据可视化手机端展示图4.6数据可视化PC端展示如图4.5和图4.6所示,OneNet云平台可以提供实时监控功能,可以实时查看设备数据的变化,并通过图表、图像或其他可视化方式进行展示,有助于及时监控设备状态、趋势和异常情况,可以依据数据变化通过开关调节兰花的生长环境。数据可视化PC端,集成了气象观测图,方便种植人员观察气象并做出预警;集成了兰花状态展示,可访问种植人员上传图床的照片,展示兰花生长状态;还可以通过手机扫描二维码便捷登录手机端察看。第5章系统测试与调试5.1测试流程硬件测试流程如图5.1所示。图5.1硬件测试流程图5.1中测试计划中的测试用例应该包括硬件的基本功能测试,如连接稳定性、信号传输可靠性、功耗测试等。还应该包括一些特定的用例,根据硬件的设计用途而定,例如传感器的灵敏度测试、摄像头的分辨率测试等。测试环境应该模拟实际使用环境的条件,考虑到硬件的特性,应该考虑使用专业的测试设备,如示波器、频谱分析仪等。将部件置于需要测量的条件下可以通过设置特定的电压、电流、温度等,还可以应用一些力学力量来测试硬件的性能。最后在进行测量的过程中需要记录数据。软件测试可以分为两大类:功能测试和非功能测试。软件功能测试,是指在验证软件的功能是否按照预期工作。在功能测试中,通过执行测试用例,模拟各种正常和异常情况,以确保软件的功能表现符合预期。根据需求文档和设计规格编写测试用例,然后在类似实际生产环境的测试环境中执行这些用例。测试结果与预期结果进行比较,并记录发现的缺陷和修复情况。功能测试是一个迭代过程,通过重复执行测试和修复过程,最终确保软件的功能质量达到用户的需求和期望。非功能测试是指测试软件的性能、安全性、可靠性、可维护性等方面的过程。它包括以下几种类型:性能测试评估软件在不同负载和压力下的响应时间、吞吐量和资源消耗;安全测试检查软件是否能够抵御恶意攻击和保护敏感数据;可靠性测试测量软件在特定条件下运行一段时间后的故障率和恢复能力;可维护性测试评估软件修改、修复和更新的难易程度。5.1.1硬件首先,进行接口测试,检查各个接口的连接情况,确保插头和插座之间的连接牢固,没有松动或接触不良的问题。这可以使用多用途表等测试工具来检查接口的连通性和电阻情况。其次,进行电源稳定性测试。使用示波器或电压表来测量电源输出的稳定性和纹波情况,以确保系统在不同工作负载下都能正常工作。然后,进行显示测试,检查液晶显示屏幕。进行传感器测试,验证系统中的传感器能够准确地采集数据并传输给系统。测试无线模块的稳定性和可靠性,以确保无线通信的正常运行。进行硬件安全性测试,检查电路板和连接线路,确保没有短路、接地等安全隐患。进行性能测试,使用专业的性能测试工具,进行基准测试或负载测试,以获取准确的性能数据。进行可靠性测试,运行系统在长时间连续工作和负载下,验证系统的稳定性和可靠性。最后,进行兼容性测试,确保系统能够与其他硬件设备或软件无缝配合工作。测试系统在与其他设备或软件进行交互时的兼容性和互操作性。在进行硬件测试时,应记录测试结果、错误报告和异常情况,并进行修复和改进。确保测试环境符合实际使用条件,并参考相关的硬件测试标准和指南,以确保测试过程的准确性和一致性。5.1.2软件在进行软件功能测试时,针对特定的功能进行了详细测试,包括传感器采样程序、ZigBee模块通讯、数据可视化界面和与OneNet云平台通讯。首先,对于传感器采样程序测试,以1秒或2秒的间隔频率采集各个传感器的数据,并持续采集24小时以上。观察LCD显示是否出现异常数据,以验证采样程序的正常性和数据的可靠性。经过测试,采样程序表现正常,数据可靠,没有出现异常数据。其次,进行了ZigBee模块通讯测试。测试了ZigBee终端模块能否及时处理采集到的传感器信号,并将数据发送到ZigBee协调模块。通过观察电路板上的Led屏幕模块是否接收到数据来验证通讯是否正常。经过测试,无线模块的接收功能正常,通讯过程没有出现问题。再次,进行了数据可视化界面测试。多次重复操作按键菜单,设置各个系统参数,并分析是否存在bug。经过测试,确认数据无错误,系统界面稳定,没有发现任何死机现象。最后,进行了与OneNet云平台的通讯测试。以1秒的间隔频率发送命令,并持续发送超过24小时,验证OneNet云平台是否能够及时更新且准确地接收数据,并返回正确的数据。经过测试,连接正常,与OneNet云平台的通讯功能正常运行。通过以上测试,确认这些功能在软件中正常工作,并且没有出现异常情况。这些测试结果表明软件的功能达到预期要求,并且可以可靠地执行其设计功能。5.2测试结果测试结果表明,该系统能够有效地监测和控制兰花的生长环境。传感器节点可以准确采集兰花的生长环境数据,协调节点可以将数据实时上传到OneNet云平台。用户可通过网络浏览器访问云平台,实时查看兰花生长状况,调整生长环境参数。该系统可有效提高兰花的栽培效率,为其他作物的智能化栽培提供一种新方法。总结近年来,随着物联网技术的不断发展和应用,农业科技也迎来了重大的进步,促使农业向信息化、精细化、可追溯化的方向快速发展。但是目前我国在农村和农业等领域还拥有着许的多问题,传统农业模式的发展存在特定的的局限性,生产力不够高,生产效率低。但是随着现代智慧农业的快速发展,这些问题那都不是问题,将大大提高生产力和生产效率。ZigBee技术的运用在智慧农业中也具有重要意义。ZigBee无线传感器网络的优势在于低功耗、低成本、可靠性高等特点,能够实现对兰花生长环境中的温度、湿度等指标的实时监测,并将数据通过OneNet云平台进行处理和分析,从而提供决策支持和生产管理服务,为兰花种植业的精细化管理提供了有力的支撑。本文工作总结:本文基于ZigBee设计并实现了一个兰花自动培养系统,该系统能够实现对兰花生长环境参数的实时监测和控制,并通过自动化技术实现了对兰花的自动化管理和控制。通过对实验数据的统计与分析,本系统在兰花自动培养方面取得了一定的成果。实验结果表明,本系统能够有效地提高兰花的生长速度和生长品质,达到了预期的效果。未来可以继续完善该系统的设计和优化,进一步提高兰花培养的效率和品质。参考文献[1]龙祖连.基于ZigBee智慧农业控制系统的研究与设计[J].2021.[2]田丰,何杰.基于ZigBee的农业信息采集系统的设计与实现[J].2021(2020-1):25-29.[3]张静.基于ZigBee技术的果蔬大棚土壤墒情管理系统[J].农机化研究,2022,44(4):213-217.[4]李玉林.基于Android和ZigBee技术的智能农业大棚监控系统设计[J].2022(19).[5]荣蓉,肖景阳.基于ZigBee技术的果蔬智能大棚控制系统设计与试验[J].农机化研究,2023,45(3):4.[6]王子博.ZigBee技术在大棚环境监测系统中的应用[J].乡村科技,2021(1):125-126.[7]余海林,莫莉,赵悦,等.基于ZigBee无线传感器的井下甲烷浓度监测系统[J].成都大学学报:自然科学版,2022(002):041.[8]王凯.ZigBee网络路由器低功耗优化设计与实现[J].电子元器件与信息技术,2021(004):005.[9]谢晓晖,王伟丽.连拱式兰花种植大棚智能环境控制系统设计[J].福建农机,2021(4):5.[10]罗丽霞,林文洪,曾晓辉,等.兰花育种技术研究进展[J].农业科技通讯,2022(12):3.[11]王长青.浅谈家庭养兰[J].花卉,2021(19):3.[12]杜熙茹,黄秋,黄晓辉,等.基于OneNet物联网云平台的体育运动远程监控系统[J].2021(2020-11):10-13.[13]成澜.基于OneNet物联网云平台与MQTT协议的智能家居模型通用控制小程序设计[J].电脑与电信,2022(7):4.[14]冯甜欣,张晓光,刘景勇,等.基于云平台的选煤厂环境监测系统[J].工矿自动化,2021.[15]周沛仰.基于ZigBee和OneNet的智慧农业系统[J].现代农机,2022(001):000.[16]于振武.基于ZigBee的蓝莓种植信息采集系统[D].安徽建筑大学,2021.[17]HidayatT,MahardikoR,FrankyST.MethodofSystematicLiteratureReviewforInternetofThingsinZigBeeSmartAgriculture[C]//The8thInternationalConferenceonInformationandCommunication.2020.[18]KulkarniH,JoshiAY,KadamSV,etal.IOTBasedSmartIrrigationSystem[J].2021.[19]Stolojescu-CrisanC,ButunoiBP,CrisanC.AnIoTBasedSmartIrrigationSystem[J].IEEEConsumerElectronicsMagazine,2021,PP(99):1-1.[20]HassanN,CherageeSH,AhammedS,etal.SensorbasedSmartIrrigationSystemwithMonitoringandControllingusingInternetofThings[J].TheInternationalJournalofAmbientSystemsandApplications,2021,9(2):17-26.[21]Sai,Thavath,etal.“PrototypingofSmartIrrigationSystemUsingIOTTechnology.”20217thInternationalConferenceonElectrical,ElectronicsandInformationEngineering(ICEEIE),2021.附录附录A硬件端程序代码//参数分别代表WIFI名称、密码#defineWIFI_INFO"AT+CWJAP=TP,88888888\r\n"//参数分别代表设备ID、产品ID、鉴权信息#defineOneNet_INFO"AT+IOTCFG=1056905869,580422,123456\r\n"//SampleApp_ClusterList就是一个簇,//包含了命令SAMPLEAPP_PERIODIC_CLUSTERID、SAMPLEAPP_FLASH_CLUSTERIDconstcId_tSampleApp_ClusterList[SAMPLEAPP_MAX_CLUSTERS]={SAMPLEAPP_PERIODIC_CLUSTERID,SAMPLEAPP_FLASH_CLUSTERID};/*简单设备描述符--使用一个网络地址可以描述一个节点,在一个节点上有很多端口故用简单描述符来描述一个端口*/constSimpleDescriptionFormat_tSampleApp_SimpleDesc={SAMPLEAPP_ENDPOINT,//端口号,这里是20,可以在1-240随便取SAMPLEAPP_PROFID,//应用规范IDSAMPLEAPP_DEVICEID,//应用设备IDSAMPLEAPP_DEVICE_VERSION,//应用版本号SAMPLEAPP_FLAGS,//保留SAMPLEAPP_MAX_CLUSTERS,//输入簇包含的命令个数,这里是2(cId_t*)SampleApp_ClusterList,//输入簇列表SAMPLEAPP_MAX_CLUSTERS,//输出簇包含的命令个数(cId_t*)SampleApp_ClusterList//输出簇列表};endPointDesc_tSampleApp_epDesc;//端口描述符uint8SampleApp_TaskID;//任务IDdevStates_tSampleApp_NwkState;//保存节点状态的变量uint8SampleApp_TransID;//数据发送序号afAddrType_tSampleApp_Periodic_DstAddr;//广播afAddrType_tSampleApp_P2P_DstAddr;//点播/*串口基本定义*/#defineMY_DEFINE_UART0_PORT0//自定义串口号(0,1);#defineMY_DEFINE_UART1_PORT1//自定义串口号(0,1);#defineRX_MAX_LENGTH20//接收缓冲区最大值:20个字节;uint8RX_BUFFER[RX_MAX_LENGTH];//接收缓冲区;/**********************************************************************LOCALFUNCTIONS*/voidSampleApp_MessageMSGCB(afIncomingMSGPacket_t*pckt);//处理终端数据发送数据到云平台voidSampleApp_SendPeriodicMessage(void);//消息处理函数voidSampleApp_HandleKeys(uint8shift,uint8keys);//按键事件处理函数voidUart0_Config(void);//串口0配置函数voidUart1_Config(void);//串口1配置函数voidUart0CallBackFunction(uint8port,uint8event);//回调函数声明,定义在最后面;voidUart1CallBackFunction(uint8port,uint8event);//回调函数声明,定义在最后面;/**********************************************************************TYPEDEFS*/#defineDATA_PIN1P0_3//继电器1引脚#defineDATA_PIN2P1_0//继电器2引脚#defineDATA_PIN3P1_1//继电器3引脚#defineDATA_PIN4P0_6//继电器4引脚/*********************************************************************/*应用层初始化函数*/voidSampleApp_Init(uint8task_id){unsignedchartmp[10];SampleApp_TaskID=task_id;//初始化任务优先级SampleApp_NwkState=DEV_INIT;//将设备的状态初始化为DEV_INIT,表示该节点没有连接到ZigBee网络SampleApp_TransID=0;//将发送数据包的序号初始化为0SampleApp_Periodic_DstAddr.addrMode=(afAddrMode_t)AddrBroadcast;//广播SampleApp_Periodic_DstAddr.endPoint=SAMPLEAPP_ENDPOINT;SampleApp_Periodic_DstAddr.addr.shortAddr=0xFFFF;SampleApp_P2P_DstAddr.addrMode=(afAddrMode_t)Addr16Bit;//点播SampleApp_P2P_DstAddr.endPoint=SAMPLEAPP_ENDPOINT;SampleApp_P2P_DstAddr.addr.shortAddr=0x0000;//发给协调器//对节点描述符进行初始化SampleApp_epDesc.endPoint=SAMPLEAPP_ENDPOINT;SampleApp_epDesc.task_id=&SampleApp_TaskID;SampleApp_epDesc.simpleDesc=(SimpleDescriptionFormat_t*)&SampleApp_SimpleDesc;SampleApp_epDesc.latencyReq=noLatencyReqs;//用afRegister函数将节点描述符进行注册,注册后才能使用OSAL提供的服务afRegister(&SampleApp_epDesc);//注册按键事件RegisterForKeys(SampleApp_TaskID);//串口初始化Uart0_Config();Uart1_Config();osal_memset(tmp,0,10);tmp[0]=HAL_UART_DMA+0x30;//1tmp[1]=HAL_UART_ISR+0x30;//2tmp[2]=HAL_UART_USB+0x30;//0//HalUARTWrite(0,tmp,6);HalUARTWrite(0,"\r\nuartok\r\n\r\n",18);//串口测试#ifdefined(LCD_SUPPORTED)HalLcdWriteString("SampleApp",HAL_LCD_LINE_1);#endif#ifdefZDO_COORDINATOR//协调器专属初始化//逢蜂鸣器初始化P0SEL&=~0x80;//设置P07为普通IO口P0DIR|=0x80;//P07定义为输出口P0SEL&=~0x48;//设置P0.3、P0.6口为普通IOP0DIR|=0x48;//设置P0.3、P0.6口为输出P1SEL&=~0x03;//设置P10、P11口为普通IOP1DIR|=0x03;//设置P10、P11口为输出DATA_PIN1=0;//默认继电器1断开DATA_PIN2=0;//默认继电器2断开DATA_PIN3=0;//默认继电器3断开DATA_PIN4=0;//默认继电器4断开#endif//#ifndefZDO_COORDINATOR//终端、路由专属初始化//#endif}/*消息处理函数*/uint16SampleApp_ProcessEvent(uint8task_id,uint16events){afIncomingMSGPacket_t*MSGpkt;(void)task_id;//Intentionallyunreferencedparameterif(events&SYS_EVENT_MSG){MSGpkt=(afIncomingMSGPacket_t*)osal_msg_receive(SampleApp_TaskID);while(MSGpkt){switch(MSGpkt->hdr.event){//当接收到此终端的无线消息caseAF_INCOMING_MSG_CMD:SampleApp_MessageMSGCB(MSGpkt);break;caseZDO_STATE_CHANGE://协调器不执行定时发送命令//读取节点的设备类型,如果是终端节点,实现无线数据发送SampleApp_NwkState=(devStates_t)(MSGpkt->hdr.status);if(//(SampleApp_NwkState==DEV_ZB_COORD)||//协调器不执行定时发送命令(SampleApp_NwkState==DEV_ROUTER)||(SampleApp_NwkState==DEV_END_DEVICE)){//3S后执行SAMPLEAPP_SEND_PERIODIC_MSG_EVT事件osal_start_timerEx(SampleApp_TaskID,SAMPLEAPP_SEND_PERIODIC_MSG_EVT,SAMPLEAPP_SEND_PERIODIC_MSG_TIMEOUT);}else{//Deviceisnolongerinthenetwork}break;default:break;}Delay_ms(10);osal_msg_deallocate((uint8*)MSGpkt);MSGpkt=(afIncomingMSGPacket_t*)osal_msg_receive(SampleApp_TaskID);}//returnunprocessedeventsreturn(events^SYS_EVENT_MSG);}//(setupinSampleApp_Init()).协调器不执行定时发送函数if(events&SAMPLEAPP_SEND_PERIODIC_MSG_EVT){SampleApp_SendPeriodicMessage();//3S后再次执行osal_start_timerEx(SampleApp_TaskID,SAMPLEAPP_SEND_PERIODIC_MSG_EVT,(SAMPLEAPP_SEND_PERIODIC_MSG_TIMEOUT+(osal_rand()&0x00FF)));return(events^SAMPLEAPP_SEND_PERIODIC_MSG_EVT);}return0;}//协调器收到终端数据发送数据到云平台voidSampleApp_MessageMSGCB(afIncomingMSGPacket_t*pkt){uint16flashTime;unsignedchardataBuf[40];//确保数组能够装下发送的内容uint8strTemp[20]={0};unsignedcharid=0;unsignedchartemp=0;unsignedcharhumi=0;unsignedcharlight=0;uint8buff[30]={0};switch(pkt->clusterId){caseSAMPLEAPP_P2P_CLUSTERID:#ifdefZDO_COORDINATOR//收到终端数据后向平台发送数据uint8id=pkt->cmd.Data[0];if(id==1){uint8light=pkt->cmd.Data[1];uint8temp=pkt->cmd.Data[2];uint8humi=pkt->cmd.Data[3];uint8soil=pkt->cmd.Data[4];sprintf((char*)dataBuf,(char*)"AT+IOTSEND=0,id1,%d\r\n",id);HalUARTWrite(1,dataBuf,25);Delay_ms(100);sprintf((char*)dataBuf,(char*)"AT+IOTSEND=0,light1,%d\r\n",light);sprintf(strTemp,"Light:%d",light);HalLcdWriteString(strTemp,HAL_LCD_LINE_1);//LCD显示HalUARTWrite(1,dataBuf,25);Delay_ms(100);sprintf((char*)dataBuf,(char*)"AT+IOTSEND=0,temp1,%d\r\n",temp);sprintf(strTemp,"T:%dH:%d",temp,humi);HalLcdWriteString(strTemp,HAL_LCD_LINE_2);//LCD显示HalUARTWrite(1,dataBuf,25);Delay_ms(100);sprintf((char*)dataBuf,(char*)"AT+IOTSEND=0,humi1,%d\r\n",humi);HalUARTWrite(1,dataBuf,25);Delay_ms(100);sprintf((char*)dataBuf,(char*)"AT+IOTSEND=0,soil1,%d\r\n",soil);sprintf(strTemp,"Soil:%d",soil);HalLcdWriteString(strTemp,HAL_LCD_LINE_3);//LCD显示HalUARTWrite(1,dataBuf,25);Delay_ms(100);}break;#elsecaseSAMPLEAPP_PERIODIC_CLUSTERID:HalUARTWrite(0,"Rx:",3);//提示信息HalUARTWrite(0,pkt->cmd.Data,pkt->cmd.DataLength);//输出接收到的数据break;#endifcaseSAMPLEAPP_FLASH_CLUSTERID:flashTime=BUILD_UINT16(pkt->cmd.Data[1],pkt->cmd.Data[2]);HalLedSet(HAL_LED_2,HAL_LED_MODE_TOGGLE);break;}}//取光照值,接在P06上uint8GetLight(){uint8temp=0;//百分比的整数值floatvol=0.0;//adc采样电压uint16adc=HalAdcRead(HAL_ADC_CHANNEL_6,HAL_ADC_RESOLUTION_14);//ADC采样值P06口//最大采样值8192(因为最高位是符号位)if(adc>=8192){return0;}adc=8192-adc;//反相一下//转化为百分比vol=(float)((float)adc)/8192.0;//取百分比两位数字temp=vol*100;returntemp;}//读取土壤的湿度uint8GetSoilHum(){uint16adc=0;floatvol=0.0;//adc采样电压uint8soil_hum=0;adc=HalAdcRead(HAL_ADC_CHANNEL_5,HAL_ADC_RESOLUTION_14);//土壤ADC采样值P05口//最大采样值8192(因为最高位是符号位)if(adc>=8192){return0;}adc=8192-adc;//反相一下,因为低湿度时AO口输出较高电平//高湿度时AO口输出较低电平//转化为百分比vol=(float)((float)adc)/8192.0;//土壤百分比的整数值soil_hum=vol*100;returnsoil_hum;}//终端采集数据无线发送给协调器voidSampleApp_SendPeriodicMessage(void){unsignedcharstrTemp[30];unsignedcharstrBuf[30];unsignedchardataBuf[20];unsignedchartemp;unsignedcharhumi;dht11_value(&temp,&humi,DHT11_UINT8);uint8buff[10]={0};uint8id=1;uint16date=0;unsignedshortlight;unsignedshortrain;light=GetLight();buff[0]=id;//终端编号buff[1]=light;//光照buff[2]=temp;//温度buff[3]=humi;//湿度buff[4]=GetSoilHum();//土壤湿度if(buff[1]>60)//光照大于60,关闭led1{HalLedSet(HAL_LED_1,HAL_LED_MODE_OFF);}else{HalLedSet(HAL_LED_1,HAL_LED_MODE_ON);}sprintf(strTemp,"Light:%d",buff[1]);HalLcdWriteString(strTemp,HAL_LCD_LINE_1);//LCD显示sprintf(strTemp,"T:%dH:%d",buff[2],buff[3]);HalLcdWriteString(strTemp,HAL_LCD_LINE_2);//LCD显示sprintf(strTemp,"S:%d",buff[4]);HalLcdWriteString(strTemp,HAL_LCD_LINE_3);//LCD显示HalUARTWrite(0,buff,strlen(buff));//串口测试HalUARTWrite(0,"\r\

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论