超声波传感器能检测与前方妨碍物间的间隔,假设将它固定于360度旋转的舵机上继续采样,就能将采样获取的数据制作成雷达图进行动态展现。
树莓派3B+和古德微扩展板各一块,HC-SR04超声波传感器一个,4路8线度舵机一个,赤色、绿色LED灯各一支;还需要电烙铁和热熔枪各一把。
用热熔枪将滑环中心的转子底端与舵机输出转子做固定,留意二者的中心点要尽量符合,避免旋转时偏疼。再将滑环中心转子的顶端与超声波传感器顶端固定好,也要中心对齐。接着,将滑环外围的定子圈的四根线号(共四个引脚)进行衔接,红线接电源正极VCC,黑线接地GND,橙赤色线接Trig信号发射端,棕色线接Echo信号回声端。滑环中心转子4根引线别离与超声波传感器的四个引脚进行对应衔接(电烙铁点锡);将舵机固定好之后,衔接线号引脚,留意黑色、赤色和棕黄色三根线别离与GND、VCC和信号操控D端衔接;然后,将赤色和绿色LED灯依照“长腿正、短腿负”的规矩别离刺进扩展板的5号和6号引脚;最终,给树莓派刺进数据线,通电发动操作系统(如图1)。
和“sensor=DistanceSensor(echo=21,trigger=20,max_distance=4)”,而且经过句子“servo.mid()”操控360度舵机以中速带动超声波传感器向一个方向开端旋转;再设置雷达图制作画布的宽度和高度,巨细别离为8和6(单位为英寸):“plt.figure(figsize=(8,6))”;树立变量ax,赋值为“plt.subplot(111, projection=polar)”,作用是设置画图款式为“极坐标”形式(Polar);树立变量theta,赋值为“np.arange(0,2*np.pi,2*np.pi/30)”,经过调用Numpy库中的arange()函数回来一个起点为0、结尾为2Pi(360度圆周)的等差数列,固定步长为2Pi/30;句子“plt.ion()”的作用是将figure绘图设置为交互形式;树立变量data,赋值为空列表“[]”,作用是寄存超声波传感器每旋转360度一周扫描后检测生成的若干个与前方妨碍物的间隔值(如图2)。
进入下一次循环(range),30次循环完毕之后,开端制作雷达图:句子“ax.plot(theta,data,o--,color=g,label=data,linewidth=1)”对极坐标进行数据设置,包含30个0至360度的等差刻度值、30个超声波检测妨碍间隔值(data列表)、线的形式(虚线)、色彩(Green绿色)和线宽(linewidth)等;句子“ax.fill(theta,data,facecolor=g,alpha=0.15)”是对30个妨碍间隔值与极坐标中心点围成的关闭区域进行设置,包含填充色彩和透明度等;句子“plt.pause(0.1)”的作用是操控交互式绘图过程中数据更新的预留时刻缓冲,防备呈现图形不能及时改写显现的问题;句子“plt.cla()”的作用是铲除当时活动轴的数据内容(相当于清空操作),句子“plt.show()”的作用是制作显现图画,句子“data.clear()”的作用是铲除data列表中的当时数据,为下一次循环保存新数据“留空”(如图3)。
将程序保存为Radar.py,点击“运转”按钮进行超声波动态雷达的测验。超声波传感器在舵机的带动下开端匀速旋转,程序界面中也不断有“0 0.2698”“23 0.3555”等信息呈现,表明每次旋转一周所监测到的30个妨碍间隔值;一起,绿色LED灯亮起,假设渐渐的呈现有近间隔的妨碍物(在20cm范围内),则会亮起赤色LED灯。超声波传感器每旋转一周,就会呈现一个雷达极坐标图,制作有每个点所在的二维空间方位(视点值)和间隔中心的半径巨细(妨碍物间隔值),一起在这些坐标点所围住生成的关闭区域内,雷达图是以必定透明度的绿色来展现的。跟着超声波传感器的不断旋转,一起在其周围改换呈现各种妨碍物,整个雷达图也在不断产生显着的改变(如图4)。
壹零社:用图文、视频记载科技互联网新鲜事、电商日子、云核算、ICT范畴、消费电子,商业故事。《我国知网》每周全文录入;我国科技报刊100强;2021年微博百万粉丝沙龙成员;2022年抖音优质科技内容创作者