XInCheng
一万年太久,只争朝夕
XInCheng
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)函数可以使用:

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

赞赏

发表评论

textsms
account_circle
email

XInCheng

Weather_Station
  很久之前做了一个简易的气象站,室外arduino pro mini 通过dht11读取温湿度,用nrf24l01传输到室内的arduino pro mini上,再经过一些简单的处理,将结果再oled模块上显示出来。…
扫描二维码继续阅读
2018-05-03