本帖最后由 littlekong 于 2015-7-23 23:02 编辑 & ^ E$ E) z# l9 t! ^; _) y - E7 e7 v. {# d% O* ]/ w: z 最近正在做一个基于stm8s103的室内环境无线监控系统,已经接近尾声,先跟大家分享下开发过程。不定期更新。完结后给大家提供源码.(QQ交流群:478737279) 1. 项目介绍 框图如下所示,分为以下几个模块: - SCU(Sub-Control Unit)子控制单元:对于一个室内环境来说,常常分为若干个区域,例如主卧,次卧,客厅,厨房。由于这些区域是独立且相隔一定距离,所以同样的,我们也需要若干个子控制单元进行监控,然后将环境信息通过无线传送模块传送给主控制器。 - MCU(Main-Control Unit)主控制单元:它的主要功能是汇总从各SCU传送过来的数据,并且将其汇总,然后通过WIFI将数据传送给电脑。此外我们可以适当地加一些功能,例如异常报警等。 - Sensor传感器:用于采集室内环境数据,这边我们使用的是DH11温湿度传感器。 - Wireless Module无线模块:给每个SCU配备的无线模块并不是WIFI之类的网络模块,那样的话成本太大,所以我们这边使用的常用的NRF24L01模块,它的传输距离对于室内环境来说已经够用了。 - Wifi Module无线模块:MCU会配备一个WIFI模块,用于与PC通信,后续如果有时间,会做一个手机APP。 接下来,我们定义下开发过程:
由于我们使用的是20脚的stm8s103,所以需要提前规划好管脚的分配,以免到后期才发现不够用。
2015.7.23更新:4 v# V2 n9 G+ I G5 c 3. DHT11的编程使用 本次课呢,主要给大家讲解下如何让我们的芯片与DHT11芯片通信以获取温湿度信息。 3.1 DHT11 简介DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传 感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高 的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测 温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快 响应、抗干扰能力强、性价比极高等优点。每个DHT11传感器都在极为精确的 湿度校验室中进行校准。校准系数以程序的形式储存在OTP内存中,传感器内 部在检测信号的处理过程中要调用这些校准系数。单线制串行接口,使系统集 成变得简易快捷。超小的体积、极低的功耗,信号传输距离可达20米以上,使 其成为各类应用甚至最为苛刻的应用场合的最佳选则。产品为4 针单排引脚 封装。连接方便,特殊封装形式可根据用户需求而提供。 DHT11的传输时序大家可以自行上网找寻,这边就懒得贴图了。 3.2 DHT11 编程 为了方便后续将DHT11的代码移植到不同硬件平台,建议大家在编程的时候多考虑下如何做到模块化,降低与硬件层的耦合度。下面简单解析下本次实践DHT11部分的代码 - 定义硬件接口。要想实现程序的模块化,就需要避免直接使用硬件相关的接口。一个比较简单有效的方法就是通过宏去做个封装。如下所示,如果想将DHT11代码应用于其他芯片,只要替换以下的宏的后半部分即可。例如对于C51来说,你可以直接将他们替换成: #define SetPin2Low() P1_7 = 1 对于STM8S,硬件接口定义如下 ' M2 p2 Y4 h4 T - 两个用于通讯过程中的延迟函数 A.利用timer中断,进行延迟,uwDelayCnt表示延迟的毫秒数 B.直接用for循环进行10us延迟 - 根据DHT11手册上的通讯时序,进行编码 - 检测DHT11是否安装。DHT11的Pin2通过上拉电阻接到3.3V,所以初始状态或者未与芯片通讯时电平为高。所以我们可以此来判断DHT11是否装到了系统上。如果未检测到它安装,则不与它进行通信,以此节约时间。所以我们设定每隔500ms检测一次这个管脚的状态,防止中途用户插上/拔出DHT11传感器或者DHT11损坏。在完善人机接口的时候,我们可以根据DHT_u8DhtInstalled的值来提示用户检测DHT11是否安装。 |
硬件电路做了简单优化以后,即便用台版的NRF都还挺稳定的
主要是面向学生朋友做的,所以NRF足够了
谢谢分享,学习学习