Weather_Station

很久之前做了一个简易的气象站,室外arduino pro mini 通过dht11读取温湿度,用nrf24l01传输到室内的arduino pro mini上,再经过一些简单的处理,将结果再oled模块上显示出来。

写这篇博客是为了能及时的复习学过的东西,ug8lib的使用,nrf传输的数据处理方式……

这是使用的nrf24l01:

      

引脚接法:
nRF24L01                Arduino UNO
VCC          <—>          3.3V
GND         <—>         GND
CE             <—>         D9
CSN          <—>         D10
MOSI        <—>         D11
MISO        <—>         D12
SCK           <—>         D13
IRQ           <—>         不接

在这个项目中,我将使用mirf库驱动nrf模块,你可以在Github上找到它,下面给出它的初始化方法:

oled12864的驱动是用U8glib库的,同样可以在Github找到它,这里我使用了简单的输出方案,完整的常用函数在这里,我用静态数组来储存中文字符:

整个装置分为sender部分和receiver部分:

这是用Fritzing画的Receiver部分的电路图,并没有想把它做的很完美,所以实物我是用洞洞板焊接的。

Sender部分的电路图大同小异,我是用dht11温湿度传感器代替了lm35温度传感器,并且用了一个加强版的nrf24l01,电源部分我使用了两节18650锂电池加一个降压电路。

下面来说说我的控制思路:

首先是发送模块检测dht11的读取数据,将温湿度坐标发送至接收端:

由于nRF24L01只能以byte单字节数组(8-bit)形式发送数据,arduino中的int数据是占两个字节数的,所以我将温湿度数据分成4个byte字节存入数组中,再一次性发送出去:

在接收端,要把原来的数据重组为温湿度数据:

 

在接收到数据之后,就可以将数据在oled12864上显示出来了,对于位图,u8glib有u8g.drawXBMP(x,y,width,height,bmp_name)函数可以使用:

这样,整个项目的框架算完成了,当然,后续还需要更多的改进,比如说数据的传输部分的稳定性,还有长串数据的收发问题……


可以移步至我的个人博客这里浏览更多内容吐舌头

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值