基于nRF24L01的太阳能无线小车设计
2019-08-13袁铭
袁铭
摘 要:该设计主要由计算机控制端和太阳能小车组成,计算机控制端利用nRF24L01无线控制小车运动。小车以STC89C52单片机为主控芯片,由太阳能锂电池充电控制模块提供电源。同时,小车能够测量工作电压和环境的温湿度数据,通过无线传输模块发送给计算机端并在C#开发的界面上显示。
关键词:STC89C52 nRF24L01 太阳能 C#
中图分类号:TN99 文献标识码:A 文章编号:1672-3791(2019)06(a)-0004-02
该小车基于人和物交流的物联网思想设计制作,利用太阳能这种清洁能源驱动小车运行,达到了节能环保的可持续发展理念。该文基于nRF24L01和单片机开发了一款具有无线通信能力的太阳能供电小车,在PC端远距离控制小车的运行,并且在PC端实时显示小车采集到的环境温湿度信息和其他相关参数。
1 系统整体结构方案
整个系统由计算机控制端(上位机)和太阳能小车(下位机)两部分组成。上位机部分由PC机、单片机和无线收发模块组成。上位机控制端通过无线收发模块向小车发射控制命令,控制小车运行,同时该无线模块接收来自小车的各种参数发送至PC控制端显示。下位机小车部分由单片机系统、无线通信模块、太阳能控制模块、电机控制模块、温湿度模块等组成。无线通信模块接收上位机发出的指令,通过和单片机的通信,由单片机模块控制电机模块驱动控制小车运动。AD转换电路用于采集太阳能充电电流等工作参数,和温湿度参数一起通过无线模块发送至计算机控制端。系统框图见图1。
2 下位机硬件电路设计
2.1 太阳能充电电路
该设计的太阳能充电控制模块采用CN3722,具有恒流恒压充电模式,适合对单节或多节锂电池或磷酸铁锂电池的充电管理。恒压充电电压由外部电阻分压网络设置;在恒流充电模式,充电电流通过一个外部电阻设置。对于深度放电的电池,当电池电压低于所设置的恒压充电电压的66.7%时,CN3722用所设置的恒流充电电流的15%对电池进行涓流充电。在恒压充电阶段,充电电流逐渐减小,充电过程持续直到充电电流减小到零,这样即使太阳能电池输出很小的功率,也能对电池充电;因为此时电池连接端BAT管脚电压保持不变,所以不会对电池过充电。该小车采用3节锂电池串联充电,每节锂电池最大充电电压为4.2V,总充电电压最大为12.6V。
2.2 无线通信模块电路
无线通信模块采用nRF24L01,是一款工作在2.4~2.5GHz世界通用ISM频段的低功耗单片无线收发器芯片。输出功率、频道选择和协议的设置可以通过SPI接口进行设置。3脚使能端由单片机P2.0口控制,4、5、6、7脚为SPI引脚,分别由单片机P2.3、P2.1、P2.4、P2.2配置,8脚中断标志位由单片机P3.2控制。
2.3 电量采集电路
电量采集电路采用典型的仪表放大电路,通过AD转换芯片PCF8591采集到单片机端,用于测量太阳能电流。
放大倍数:U=(R20/R17)×(1+2(R18/R21))×((in1+)- (in1-))=10(1+2(10/R21))
当R21=2.2222K时,放大倍数为100倍。
2.4 电机控制电路
电机控制模块采用L298N,內部包含4通道逻辑驱动电路。其是一种二相和四相电机的专用驱动器,即内含2个H桥的高电压大电流双全桥式驱动器,接收标准TTL逻辑电平信号,可驱动46V、2A以下的电机。
2.5 温湿度测量电路
温湿度测量模块采用DHT11,是一款含有已校准数字信号输出的温湿度复合传感器,它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性和卓越的长期稳定性。单线制串行接口,使系统集成变得简易快捷。超小的体积、极低的功耗,使其成为各类应用甚至是最为苛刻的应用场合的最佳选择。
2.6 上位机端电路
上位机和单片机采用RS232总线连接,为了使PC机与MCS-51单片机之间能可靠地进行串行通信,需要用电平转换芯片,该设计采用MAXIM公司生产的专用芯片MAX232。MAX232是一种把电脑的串行口RS-232信号电平(-10V,+10V)转换为单片机所用到的TTL信号点平(0V,+5V)的芯片。
3 软件设计
3.1 下位机软件设计
下位机编程采用模块化编程思想,主流程图如图2所示,主流程图在完成一些初始化后进入while(1)循环中,进行标志位的检测及电压等参数检测,并控制小车运动,在外部中断子程序中执行NRF24L01的IRQ触发中断,在中断服务程序中主要是对一些标志位的设置。
3.2 上位机程序设计
3.2.1 串口通信协议制定
上位机控制台要对上位接收机端发来的数据进行解析,分离出有效数据,设计的数据格式如下:$--温度--?--湿度--@--电池电压--<--输入电流--/--输出电流--*。
其中:
$为一帧数据开始符号;
?为温度与湿度隔离符号;
@为湿度与电池电压隔离符号;
<为电池电压与输入电流隔离符号;
/为输入电流与输出电流隔离符号;
*为结束标志。
3.2.2 控制台界面设计
控制台程序设计的目的是接收串口数据,进行数据解析,通过串口发射控制数据。
界面主要功能区有:串口设置区、数据显示区、指令发射区。
串口设置区功能:端口号、波特率选择、串口打开与关闭。数据显示区:原始数据显示文本、解析后数码管显示。指令发射:按键指令发射、串口文本框指令发送。
3.2.3 串口通信
串口数据的读取采用事件触发的方式,在SerialPort类中有DataReceived事件,当串口的读缓存有数据到达时则触发DataReceived事件,其中SerialPort.ReceivedBytesThreshold属性决定了当串口读缓存中数据多少个时才触发DataReceived事件,默认为1。从SerialPort对象接收数据时,将在辅助线程上引发DataReceived事件。由于此事件在辅助线程而非主线程上引发,因此尝试修改主线程中的一些元素(如UI元素)时会引发线程异常。如果有必要修改主Form或Control中的元素,必须使用Invoke回发更改请求,这将在正确的线程上执行。进而要想将辅助线程中所读到的数据显示到主线程的Form控件上时,只有通过Invoke方法来实现。
4 结语
该小车采用太阳能供电,主控芯片采用STC89C52单片机控制,利用nRF24L01无线通信模块实现上位机和下位机之间的数据传输,在PC计算机上位机端控制界面上操作控制小车的运行,同时可以采集温湿度、电流电压等相关参数并显示在PC端界面上,实现了人-车之间的远程交互控制。该太阳能无线控制小车具有功耗低、電路结构简单等特点。
参考文献
[1] 李晓丽.单片机与上位机串行通信系统设计[J].仪表技术,2010(7):45-47.
[2] 韩毅,杨天.基于HCS12单片机的智能寻迹模型车的设计与实现[J].学术期刊,2008,29(18):1535-1955.
[3] Yamato. New conversion system for UPS using high fre 2 quency link[A].IEEE PESC[C].1988:210-320.
[4] 储江伟,郭克友,王荣本,等.自动导向车导向技术分析与评价[J].起重运输机,2002(11):1-5.
[5] 王朝盛.基于16单片机MC9S12DG128B智能车系统设计[D].天津工业大学,2007.