1. 引言
随着我国“十四五”可再生能源发展规划的公布,近些年来大型光伏发电站的开发和建设不断取得优异的进展。光伏太阳能板每日除尘工作量大大增加,传统的人工除尘方式费时费力且成本昂贵 [1] 。因此制作一款微型多足光伏移动清洁机器人则显得极其重要,不仅可以大幅提升光伏太阳能板的除尘效率,还有助考虑光伏太阳能板的放置位置环境 [2] 。
本文设计了一种基于Python的微型多足光伏移动清洁机器人控制系统。系统硬件部分以树莓派单片机为主控,辅以超声波传感器模块、电源模块、通信模块和驱动电机模块。实物测试结果显示:本文所述系统具备寻迹、避障、识别、抓取等系列操作功能,在光伏板清洁方面具有一定的应用前景。
2. 系统构成

Figure 1. Simulated car operation scenario
图1. 模拟小车运行场景
光伏移动清洁机器人控制系统设计分为硬件和软件设计。硬件设计:此设计方案的特点是微型、自动。光伏移动清洁机器人由超声波传感器,信号处理和控制电路等组成。超声波传感器通过发射和接收超声波来收集数据,并将数据发送至单片机,最后通过电机驱动来进行控制移动。软件设计:软件设计的关键是以单片机为中心,接收脉冲信号,通过算法判断,最终发出指令使控制模块完成操作。
超声波传感器可以通过发送和接收超声波脉冲,帮助机器人识别跑道上的路径,避开跑道上的障碍物,给小车移动导航。单片机STM32F103作为整个系统的主控制器,负责对系统所需要的数据进行采集,并通过程序算法对这些数据进行处理来实现机器人的自动巡线。STM32F103的PWM信号输出到驱动电机控制模块,影响减速伺服电机来进行操作。控制系统模拟运行如图1所示。
3. 总体方案设计
光伏移动清洁机器人设计由两部分组成:系统结构和移动系统。光伏移动清洁机器人系统结构的合理性是机器人是否能够满足各种各样不同性能、环境清洁作业要求的关键,也是整个机器人设计的基础。根据以上要求,光伏清洁机器人总体方案设计主要包含下列几点 [3] [4] :
(1) 移动功能部分:光伏移动清洁机器人能在光伏板上做自由的前进、后退以及自由转向,并且能在运动中灵活的躲避障碍物,做自由规划路径。
(2) 控制系统:对数据运算的反馈快,能在满足机器人基本控制要求的情况下,对来自状态外的情况作出合适的反应,系统的可靠性高。
基于以上要求,本文将针对运动系统的要求,设计总体设计方案,并对关键技术进行分析来最终选择作为光伏移动清洁机器人的总体方案设计,如图2所示。
4. 系统硬件设计与实现
4.1. 电源模块
单片机电源模块是单片机设计过程中必不可少的一环,它能保证单片机及其关联电路正常工作所需的稳定性。一般情况下,单片机电源模块是由输出、输入和一些电路组成。电源模块可以帮助稳定输入电源波动后的输出,保护单片机的性能且支持高效率的工作,有效提升单片机的整体性能,减少设备故障的可能性,增加单片机的寿命。图3为电源模块接线图 [5] 。
4.2. 单片机最小系统
单片机的设计是在半导体材料芯片上集成最关键的硬件配置组件。它集成电源电路、CPU、RAM (随机存储器)、ROM (只读存储器)、中断以及定时计数器等电路。它是一种集成电路芯片,具有处理器核心、片上存储器和各种输入输出接口等功能,可以完成符合设计要求的控制任务。图4是单片机最小系统 [6] 。

Figure 4. Microcontroller minimum system
图4. 单片机最小系统
4.3. 驱动模块
由于步进电机不能通过直流稳定电源直接启动,因此必须将步进电动机和设计方案的驱动电路连接在一起,才能实现步进电机的功能。电动机的运行必须有两个控制模块:第一是决定换向顺序的控制电路,第二是参与控制电机输出功率的换相电路,它们共同组成了步进电机的驱动电路 [7] 。图5为驱动模块电路图。

Figure 5. Driver module circuit diagram
图5. 驱动模块电路图
4.4. 蓝牙模块
由于机器人工作环境以及自身设备的局限性,机器人与主机之间只能通过无线方式进行通信,因此,本文系统硬件设计采用无线通信模式。针对光伏清洁机器人,控制设备需要对机器人进行手机App控制,考虑无线传输模式的成本、传输速率、稳定性、功耗要求、控制灵活性等参数,最终选用蓝牙无线通信技术。
5. 系统软件设计
5.1. 整体设计流程
光伏清洁机器人有手动和自动两种控制方式,可以自主选择控制模式,如图6所示。
5.2. 传感器避障控制程序
由于机器人对处于光伏边缘时需要实时定位检测,保证机器人在不超出光伏板清洗过程中稳定运行,因此设计传感器避障控制程序。选用超声波测距有极大的成本效益,因为它有很强的抗污染能力,选用型号为RGB的模块,该模块直接由I/O端口触发,检测距离在五米之间可满足测距的实际要求,此模块有4个引脚,VCC和GND为5V供电的正负引脚端口,DIN为信号输入引脚,DOUT为信号输出引脚 [8] [9] 。图7为传感器引脚图。
即有以下避障程序代码如下:
distance_data.append(dist)
data = pd.DataFrame(distance_data)
data_ = data.copy()
u = data_.mean()# 计算均值
std = data_.std()# 计算标准差
data_c = data[np.abs(data - u) <= std]
distance = data_c.mean()[0]
if len(distance_data) == 5:
distance_data.remove(distance_data[0])
if __isRunning:
if speed != old_speed: # 同样的速度值只设置一次
old_speed = speed
chassis.set_velocity(speed,90,0)
if distance <= Threshold: # 检测是否达到距离阈值
if turn:
turn = False
forward = True
stopMotor = True
chassis.set_velocity(0,90,-0.5)
time.sleep(0.5)
else:
if forward:
turn = True
forward = False
stopMotor = True
chassis.set_velocity(speed,90,0)
else:
if stopMotor:
stopMotor = False
chassis.set_velocity(0,0,0)# 关闭所有电机
turn = True
forward = True
time.sleep(0.03)
returncv2.putText(imgDist:%.1fcm%distance,(30,480-30),cv2.FONT_HERSHEY_SIMPLEX, 1.2, TextColor, 2)# 把超声波测距值打印在画面上
5.3. 目标追踪程序
机器人在进行光伏板清洁工作时,灰尘一般不会平均分配,因此,需要设计目标追踪程序来保证机器人顺利完成光伏板清洁工作 [10] 。即有以下追踪程序代码如下:
if area_max > 1000:# 有找到最大面积
(center_x,center_y),radius= cv2.minEnclosingCircle(areaMaxContour) # 获取最小外接圆
center_x = int(Misc.map(center_x, 0, size[0], 0, img_w))
center_y = int(Misc.map(center_y, 0, size[1], 0, img_h))
radius = int(Misc.map(radius, 0, size[0], 0, img_w))
if radius > 100:
return img
rect = cv2.minAreaRect(areaMaxContour)
boxnp.int0(cv2.boxPoints(rect))
cv2.circle(img,(int(center_x),int(center_y)),int(radius),range_rgb[detect_color], 2)
if __isRunning: # 检测是否开启玩法
if enableWheel == True:#检测是否开启车身跟随; enableWheel = True,为开启车身跟随
Motor_ = True
if abs(center_x - img_w/2.0) < 15: # 移动幅度比较小,则不需要动
about_pid.SetPoint = center_x
else:
about_pid.SetPoint = img_w/2.0 # 设定
about_pid.update(center_x) # 当前
x_speed = -int(about_pid.output)# 获取PID输出值
x_speed = -100 if x_speed < -100 else x_speed
x_speed = 100 if x_speed > 100 else x_speed
if abs(center_y - img_h/2.0) < 10: # 移动幅度比较小,则不需要动
go_pid.SetPoint = center_y
else:
go_pid.SetPoint = img_h/2.0
go_pid.update(center_y)
y_speed = int(go_pid.output)# 获取PID输出值
6. 实物测试
在完成本文系统硬件设计与软件设计的基础上,对系统性能进行实物测试。测试流程:首先,打开机器人电源开关,电源指示灯亮起蓝色代表机器人正常通电启动如图8所示。
继而,打开机器人的开发软件VNC,连接机器人进入机器人调试界面图9所示。

Figure 9. Robot action addition and debugging interface
图9. 机器人动作添加调试界面
添加完成后,点击开始运行,机器人会跟随着预先设置好的动作进行连贯的移动。开始测试。把蓝牙控制App安装到安卓手机上,完成蓝牙配对后即可对小车进行遥控和在线调试如图10、图11。
由图10、图11所示系统测试结果显示:本文所述基于Python微型多足光伏移动清洁机器人具备寻迹、避障、识别、抓取等系列操作功能,在光伏板清洁方面具有一定的应用前景。
7. 结语
为实现光伏板的自动化清洁,本文设计一款微型多足光伏移动清洁机器人控制系统。系统以树莓派单片机为控制器中心模块,辅以超声波传感器模块、电源模块、通信模块和驱动电机模块来实现光伏太阳能板的清洁工作,同时通过软件设计,赋予机器人自动避障和目标追踪的功能来辅助完成光伏太阳能板清洁工作,实现自动清洁的功能。用户还可以通过蓝牙连接手动控制机器人进行清洁作业。实物测试结果显示:本文所述基于Python微型多足光伏移动清洁机器人具备寻迹、避障、识别、抓取等系列操作功能,在光伏板清洁方面具有一定的应用前景。