最炫海盗船
2015-08-041.3万
AI 快速预览详细
本例程介绍了如何在Pirate 4WD机器人移动平台上进行改造,以增加更多功能。改造分为四个步骤:灯带焊接与测试、MP3模块测试、红外距离传感器测试以及硬件的总装和程序调试。通过这些步骤,可以实现更丰富的应用效果。该项目适合零基础新手学习,特别适用于STEM教育场景。
|
最炫海盗船 本例程为在原有4WD海盗船的基础上,用红外测距传感器替换了超声波传感器。功能上增加了MP3语音播放模块和灯带的效果。使得海盗船的应用更加的丰富。为体现改造的循序渐进,我们将改造过程分为以下四个步骤。同时对常用的灯带,MP3模块,红外测距模块的使用方法和注意事项做了整理和说明。希望能对大家有所帮助。 视频效果 改造步骤 Step1.灯带的焊接与测试。 Step2.MP3模块测试。 Step3.红外距离传感器测试 Step 4. 硬件的总装和程序的调试 总硬件清单 1.Pirate 4WD 机器人移动平台 x1 2.Romeo BLE 微控制器 (DFR0305) x1 3.DF05BB 标准舵机 (SER0020) x1 4.磁性 Micro-USB线 (FIT0351-OE) x1 5.杜邦线 (10根) (FIT0030) x1 6.炫彩 WS2812 LED灯带 x1 7.DFPlayer Mini 播放器模块 x1 8.红外距离传感器SHARP 2Y0A21 x1 备注:海盗船套件包含以上1~5项硬件。其中6,7,8改造所需硬件。 【Step1. RBG灯带的焊接与测试】 以三颗LED灯为一组对灯带进行裁剪。 ![]() 拼接时留意选取灯带的正确方向 ![]() 焊接,并用热熔胶封闭接口(防水) ![]() 焊接后的效果 ![]() 对灯带编号 从灯带上与控制板连接的第一颗LED算起,每三颗LED灯编为一组记作LEDs_0, 依次为LEDs_1, LEDs_2。 电路连线图: ![]() ![]() 灯带程序相关语句分析 语句1 :Color(uint8_t r, uint8_t g, uint8_t b) 说明:显示灯珠的颜色 (三个参数分别表示红,绿,蓝三色的亮度;取值范围是(0~255))如表示 红色:Color(255,0,0); 蓝色: Color(0,0,255); 紫色:Color(255,0,255); 为蓝色和红色的混合 语句2:setPixelColor(uint16_t n, uint32_t c) 说明:设置某一颗灯珠的颜色,其中n为灯珠的编号(第一颗灯珠为0,按顺序依次为1,2,3....), c为灯珠的颜色参数,即Color(uint8_t r, uint8_t g, uint8_t b) 测试效果 通过改变测试程序loop()中colorwipe()函数中的颜色参数c。来控制灯带颜色的改变。 例: 如果想使灯带显示红色,则 void loop(){ colorWipe(Color(255,0,0), 50); clear(100);} 小结: 在本段灯带的程序中,看似挺多行的代码。仔细一分析,会发现其他的语句都是为了在loop中执行colorWipe(strip.Color(255, 255, 0),50);即使灯带显示某一特定的颜色这一功能服务的。 |












[align=left]
[/align][align=left][font=微软雅黑]
[/font][/align][align=left][font=微软雅黑]
[/font][/align][align=left][font=微软雅黑]总程序的下载(包含库)[/font][/align][font=微软雅黑]
[/font][align=left][font=微软雅黑]
[/font][/align][font=微软雅黑]
[/font][align=left][font=微软雅黑]总硬件电路图[/font][/align][align=left][font=微软雅黑]
[/font][/align][font=微软雅黑]
[/font][align=left][font=微软雅黑]
[/font][/align][font=微软雅黑]
[/font][align=left][font=微软雅黑]部分接线图表[/font][/align][font=微软雅黑]
[/font][table=390]
[tr][td=260][align=center][font=微软雅黑]外界设备[/font][/align][/td][td=260][align=right][font=微软雅黑]
[/font][/align][/td][/tr]
[tr][td=260][align=right][align=left][font=微软雅黑] 红外传感器模拟输出端[/font][/align][/align][/td][td=260][align=right][align=left][font=微软雅黑] RoMeo (A6)[/font][/align][/align][/td][/tr]
[tr][td=260][align=right][align=left][font=微软雅黑] 伺服舵机控制端[/font][/align][/align][/td][td=260][align=right][align=left][font=微软雅黑] RoMeo (D10) [/font][/align][/align][/td][/tr]
[tr][td=260][align=right][align=left][font=微软雅黑] DFPlayer Mini (TX端口)[/font][/align][/align][/td][td=260][align=right][align=left][font=微软雅黑] RoMeo (D2)[/font][/align][/align][/td][/tr]
[tr][td=260][align=right][align=left][font=微软雅黑] DFPlayer Mini (RX端口)[/font][/align][/align][/td][td=260][align=right][align=left][font=微软雅黑] RoMeo (D3)[/font][/align][/align][/td][/tr]
[tr][td=260][align=right][align=left][font=微软雅黑] 灯带的控制端口(DI)[/font][/align][/align][/td][td=260][align=right][align=left][font=微软雅黑] RoMeo (D8)[/font][/align][/align][/td][/tr]
[tr][td=260][align=right][align=left][font=微软雅黑] DFPlayer (SPK_1端口)[/font][/align][/align][/td][td=260][align=right][align=left][font=微软雅黑] 喇叭(GND) [/font][/align][/align][/td][/tr]
[tr][td=260][align=right][align=left][font=微软雅黑] DFPlayer (SPK_2端口)[/font][/align][/align][/td][td=260][align=right][align=center][font=微软雅黑] 喇叭(正极)[/font][/align][/align][/td][/tr]
[/table][font=微软雅黑]
[/font][align=left][font=微软雅黑]程序的测试[/font][/align][font=微软雅黑]
[/font][align=left][font=微软雅黑]
[/font][/align][font=微软雅黑]
[/font][align=left][font=微软雅黑]测试效果[/font][/align][font=微软雅黑]
[/font][align=left][font=微软雅黑]小车启动后能顺利壁障,在执行后退命令时会有语音发出。同时小车在监测到前方无障碍物,左右两侧有障碍物三种不同的情况时,小车内灯带会显示不同的颜色。[/font][/align]
[align=left][font=微软雅黑]测试代码下载
。红外传感器接入A6。[/font][/align][align=left][font=微软雅黑]
[/font][/align][align=left][font=微软雅黑]电路图:[/font][/align][align=left][font=微软雅黑]
[/font][/align][align=left][font=微软雅黑]
[/font][/align][align=left][font=微软雅黑]
[/font][/align][align=left][font=微软雅黑]代码回顾[/font][/align][align=left][font=微软雅黑]
[/font][/align][align=left][font=微软雅黑]函数: uint16_t get_distance (uint16_t value) {[/font][/align][align=left][font=微软雅黑] if (value < 30)[/font][/align][align=left][font=微软雅黑] value = 30;[/font][/align][align=left][font=微软雅黑] return (((67870.0 / (value - 3.0)) - 40.0)/10);[/font][/align][align=left][font=微软雅黑] }[/font][/align][align=left][font=微软雅黑]
[/font][/align][align=left][font=微软雅黑]作用:将红外线传感器中传回的模拟量转化为距离。 在本款传感器的有效测量距离内10~80cm。模拟量转距离的公式为: Distance(cm)=(((67870.0 / (value - 3.0)) - 40.0)/10);[/font][/align][align=left][font=微软雅黑]小结[/font][/align][align=left][font=微软雅黑]在红外测距模块测试程序中,细心观察,会发现其他语句都是为了得到传感器的距离参数 get_distance(uint16_t value); 即探测到的实际距离。[/font][/align]
[/font][font=微软雅黑]在使用MP3模块时需要注意两个地方。一是用虚拟串口这一工具,避免使用D0和D1串口。二是MP3音频的存放位置和命名方法。我们将在代码回顾中进行具体说明。
电路原理图[/font]
[font=微软雅黑]
[/font][font=微软雅黑]
[/font]
[font=微软雅黑]
[/font]
[font=微软雅黑]
[/font]
[align=left][font=微软雅黑]测试程序 [/font]测试时需导入mp3模块库
[/align]
[align=left][font=微软雅黑]#include
[/font][/align][align=left][font=微软雅黑]代码回顾[/font][/align][align=left][font=微软雅黑]代码:#include
[align=left][font=微软雅黑]代码:mySerial.begin (9600);[/font][/align][align=left][font=微软雅黑] mp3_set_serial (mySerial); [/font][/align][align=left][font=微软雅黑]作用:设置波特率,为MP3模块配置UART串口。[/font][/align][align=left][font=微软雅黑]说明:这里的mySerial 由前面的设定语句 SoftwareSeial mySerial(2,3); 配置,该模拟串口的名字可以自行定义。[/font][/align][align=left][font=微软雅黑]代码:mp3_play (7);[/font][/align][align=left][font=微软雅黑]作用:播放SD卡根目录中,MP3文件下,格式名为0007***的MP3文件[/font][/align][align=left][font=微软雅黑]说明:[/font][/align][align=left][font=微软雅黑]
[/font][/align][align=left][font=微软雅黑]一.存放位置[/font][/align][align=left][font=微软雅黑] 音频文件应该放在“MP3”'它坐落在TF卡的根目录'文件夹中[/font][/align][align=left][font=微软雅黑]
[/font][/align][align=left][font=微软雅黑]
[/font][/align][align=left][font=微软雅黑]
[/font][/align][align=left][font=微软雅黑]二.音频文件的命名方法[/font][/align][align=left][font=微软雅黑]mp3文件命名需要是4位数字,例如"0001.mp3",放置在mp3文件夹下。如需中英文命名,可以添加在数字后,例如"0001hello.mp3"或者"0001后来.mp3"。[/font][/align][align=left][font=微软雅黑] [/font][/align][align=left][font=微软雅黑]小结[/font][/align][align=left][font=微软雅黑]在MP3模块的测试程序中,看似挺多行的代码。仔细一分析,会发现其他语句都是为了在loop中执行mp3_play (7);即播放某一段mp3语音服务的。[/font][/align]