迅维网

标题: HC-06蓝牙+DHT11温湿度模块 [打印本页]

作者: バ幸福De右岸    时间: 2016-2-24 10:26
标题: HC-06蓝牙+DHT11温湿度模块

1.蓝牙
硬件上,我直接将蓝牙模块与单片机的串口处连接(蓝牙-单片机: VCC-5V, GND-GND, RX-TX,TX-RX)?。软件上,由于HC-06的资料比较少,我下载了几个HC-05的程序看,发现都是讲RX/TX(发射/接收端)接在单片机IO的情况。这才意识到,如果蓝牙模块是直接连在串口端的话,写代码相当于只是串口通信了。所以尝试打开串口实验(这个大家都有的,买单片机老板都会送,这个程序要实现的是STM32通过串口和上位机的对话,STM32在收到上位机发过来的字符串后,原原本本的返回给上位机,需要注意在上位机输入的字符串末尾加入回车键,否则无响应),几乎不需要改动什么,烧进去之后看结果。首先蓝牙的LED灯亮了,是个好现象。手机打开蓝牙串口助手的客户端,也成功配对了蓝牙(默认密码是0000或1234)。但是手机端显示的却是乱码,我估计可能是不能识别中文的原因,所以将程序里所有输出的中文都改成简版的英语,这样也能知道输出的是哪个部分。重新烧了一次,结果如下图:



?这才看出来,是一直提示“input”,结果是正确的,可以返回我输入的字符串,但是单词都得分几次才能出来,显然是软件不合适。重新找了个软件,成功解决问题,实现了实验要求。而一直提示input,是由于这段代码:



这句话原本是times 0==0,所以致使频繁输出input,将时间拉长就明显好多啦~
2.温湿度
?DHT11的代码在网上也很方便的找得到,问题在于如何修改。这个模块只有三个引脚,很自然的高接高,地接地,但是数据线接哪需要看程序是怎么给的。程序里有dht11.c和dht11.h,可以看到程序是要求数据线接单片机的PG11管脚,但是我的单片机并没有这个管脚,这就很麻烦了,需要改变两个文件里对管脚的定义。为了使改动的地方减少,我意图改为PA11/PB11/PC11中的某个管脚。此时,需要查看单片机的原理图,看哪个管脚是空闲的,同时综合板子上管脚的位置,我选择了改为PC11。修改的程序如下图(.c+.h):
?.c


.h


?但这个程序较为麻烦的是,主函数也得改,因为原程序的作用是:开机的时候先检测是否有DHT11存在,如果没有,则提示错误。只有在检测到DHT11之后才开始读取温湿度值,并显示在LCD上,如果发现了DHT11,则程序每隔100ms左右读取一次数据,并把温湿度显示在LCD上。而我的要求是输出到串口处。所以直接将所有LCD输出的句子都删去,改为printf即可。我仔细看了蓝牙模块的程序,主函数里并没有特别的地方,直接用printf就输出到了串口处了。可是这次却不一样,打开手机蓝牙端,没有任何反应。我百度了一下原因,http://blog.csdn.net/wdscq1234/article/details/7944036 这个链接给我帮助,意思是printf需要重定向到串口处。我再一次打开蓝牙的keil工程,发现确实勾选“UseMicroLIB”了,所以想试试“Target——Code Generation——选中UseMicroLIB”的办法,结果确实可靠。如下图:



测试的温度湿度准不准是一码事,起码连接和代码是没有问题了~?
嗯,今天就这些。宝宝是纯小白,希望大家指教!?



作者: 兴兴向荣    时间: 2016-2-24 11:40
好高端的玩意  
作者: バ幸福De右岸    时间: 2016-2-24 13:00
兴兴向荣 发表于 2016-2-24 11:40
好高端的玩意

你自己可以制作




欢迎光临 迅维网 (https://www.chinafix.com/) Powered by Discuz! X3.4