Cheelee 中文站

  • 树莓派Python编程实现超声波动态雷达图|滑环|传感器|python

OmniFlix Network中文网

你的位置:Cheelee 中文站 > OmniFlix Network中文网 >

树莓派Python编程实现超声波动态雷达图|滑环|传感器|python

发布日期:2025-01-04 15:36    点击次数:136

超声波传感器能检测与前方障碍物间的距离,如果将它固定于360度旋转的舵机上持续采样,就能将采样获取的数据绘制成雷达图进行动态展示。01实验器材及连接树莓派3B+和古德微扩展板各一块,HC-SR04超声波传感器一个,4路8线电滑环一个,360度舵机一个,红色、绿色LED灯各一支;还需要电烙铁和热熔枪各一把。用热熔枪将滑环中央的转子底端与舵机输出转子进行固定,注意二者的中心点要尽量吻合,防止旋转时偏心。再将滑环中央转子的顶端与超声波传感器顶端固定好,也要中心对齐。接着,将滑环外围的定子圈的四根线与古德微扩展板的20和21号(共四个引脚)进行连接,红线接电源正极VCC,黑线接地GND,橙红色线接Trig信号发射端,棕色线接Echo信号回声端。滑环中央转子4根引线分别与超声波传感器的四个引脚进行对应连接(电烙铁点锡);将舵机固定好之后,连接线插入扩展板的18号引脚,注意黑色、红色和棕黄色三根线分别与GND、VCC和信号控制D端连接;然后,将红色和绿色LED灯按照“长腿正、短腿负”的规则分别插入扩展板的5号和6号引脚;最后,给树莓派插入数据线,通电启动操作系统(如图1)。02Python代码编程(1)库模块的导入与变量初始化首先,导入GPIOZero、MatplotLib等库模块:“from gpiozero import LED,Servo,DistanceSensor”“import numpy as np”“import matplotlib”“import matplotlib.pyplot as plt”和“import time”;然后进行LED灯、舵机和超声波传感器实例的初始化操作:“Red_LED=LED(5)”“Green_LED=LED(6)”“servo=Servo(18)”和“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)。(2)“while True:”循环体如果超声波传感器检测的障碍间距值在安全范围内(比如20cm),则控制绿色LED灯常亮:“Green_LED.on()”;在每次旋转360度的过程中,需要获取30个值与之前产生的等差数列30个刻度值对应:“for i in range(30):”;建立变量distance,赋值为“round(sensor.distance,4)”,获取检测到的障碍间距数据(保留4位小数),并且通过语句“print(i,distance)”进行输出监测;在“if distance<=0.2:”分支结构中,如果条件成立则亮红色LED灯、关闭绿色LED灯:“Red_LED.on()”“Green_LED.off()”,持续时间为0.01秒钟:“time.sleep(0.01)”;然后通过语句“data.append(distance)”,将数据有序追加到data列表中,再关闭红色LED灯、打开绿色LED灯:“Red_LED.off()”“Green_LED.on()”。进入下一次循环(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)。3.测试超声波动态雷达将程序保存为Radar.py,点击“运行”按钮进行超声波动态雷达的测试。超声波传感器在舵机的带动下开始匀速旋转,程序界面中也不断有“0 0.2698”“23 0.3555”等信息出现,表示每次旋转一周所监测到的30个障碍间距值;同时,绿色LED灯亮起,如果出现有近距离的障碍物(在20cm范围内),则会亮起红色LED灯。超声波传感器每旋转一周,就会出现一个雷达极坐标图,绘制有每个点所处的二维空间位置(角度值)和距离中心的半径大小(障碍物间距值),同时在这些坐标点所包围生成的封闭区域内,雷达图是以一定透明度的绿色来展示的。随着超声波传感器的不停旋转,同时在其周围变换出现各种障碍物,整个雷达图也在不断发生变化(如图4)。关注“壹零社”公众号下载源代码。编辑|张毅审核|吴新爆料联系:cpcfan1874(微信)壹零社:用图文、视频记录科技互联网新鲜事、电商生活、云计算、ICT领域、消费电子,商业故事。《中国知网》每周全文收录;中国科技报刊100强;2021年微博百万粉丝俱乐部成员;2022年抖音优质科技内容创作者

相关资讯Related Articles

  • 购买比特币、以太币浮盈近1亿美元!这家港股上市公司赚翻了

    2025-01-13

    11月12日,比特币价格突破9万美元之际,有上市公司自愿披露持仓情况。 博雅互动(0434.HK)发布公告称,截至本公告日期,该公司已持有比特币(BTC)2641枚,持有总成本约1.43亿美元,每枚比特币的平均成本约5.4万美元;已持有以太币(以太坊,ETH)15445枚,持有总成本约4257.81万美元,每枚以太币的平均成本约2756美元。 截至11月13日8时,比特币价格约为8.88万美元,以...

  • 星海浏览器 轻松注册Twitter小窍门,看完就会!

    2025-01-04

    Hi谈起这个话题,我是瞬间不困了!起因是内娱男菩萨王嘉尔做客BuzzFeed读起了粉丝推特帖子。这可不是什么普通的帖噢,而是那种颜色满满充满遐想和虎狼之词的饥渴帖。但是由于某种原因,我们是无法使用推特的。所以,小编想问,你们经历过绝望吗?!就是那种,明明花了钱买了FQ软件,下载了推特,点击注册登录,却没有海外手机号。随着需求的用户群体越来越大,美国的新闻遍地开花,大家纷纷登岸推特,保护我方川建国同...

  • 树莓派Python编程实现超声波动态雷达图|滑环|传感器|pyt

    2025-01-04

    超声波传感器能检测与前方障碍物间的距离,如果将它固定于360度旋转的舵机上持续采样,就能将采样获取的数据绘制成雷达图进行动态展示。01实验器材及连接树莓派3B+和古德微扩展板各一块,HC-SR04超声波传感器一个,4路8线电滑环一个,360度舵机一个,红色、绿色LED灯各一支;还需要电烙铁和热熔枪各一把。用热熔枪将滑环中央的转子底端与舵机输出转子进行固定,注意二者的中心点要尽量吻合,防止旋转时偏心...

  • 美国一公司将利用过剩的天然气进行比特币“挖矿”

    2025-01-04

    IT之家12月9日消息据Bitcoin Exchange Guide报道,总部位于美国丹佛的Crusoe公司将利用过剩的天然气转化为电能,为数据中心供电,通过比特币“挖矿”获得额外收入。▲via Bitcoin Exchange Guide信息显示目前美国德克萨斯州拥有大量过剩天然气,相关人员只能简单地将多余的天然气烧掉,但这么做产生的温室气体加剧了全球变暖。美国能源公司Crusoe想出了一个不浪...