快速上手 香蕉派 Q-Car

From Banana Pi Wiki
Revision as of 19:46, 13 April 2021 by Wind (talk | contribs) (用if条件判断制作计数器并用于车轮转速测量-)
Jump to: navigation, search


产品介绍

香蕉派 Q-Car with micro:bit
BPI Q-Car with BPI-Bit
BPI-QCar with BPI-AI board

大家好,我是Q-Car,你也可以叫我小Q,是一款专注于创客教育的机器人。兼容了Web:Bit和Micro:Bit两款开发板。小巧的车身,高度集成的功能,即插即用,能快速小朋友的注意力,完成图形编程的快速入门,培养独立思考能力和逻辑思维能力

关键特性

  • 支持Makecode图形化编程,支持Webduino图形化编程及MicroPython编程
  • 车身小巧,整体性强
  • N20微型减速电机
  • 红外发射、红外接收、巡线、测速、氛围灯、I2C接口(支持3.3V和5V)、超声波接口、蜂鸣器、舵机接口、排针扩展口、扩展螺孔等等......功能齐全,扩展性强
  • 轻松上手

Q-Car 配合BPI:Bit 使用Arduino环境编程

Arduino是一款便捷灵活、方便上手的开源电子原型平台。在社区的努力下,BPI:Bit可以通过Arduino环境编程,具体环境搭建教程可以参考BPI:bit_for_Arduino

电机控制

学习目标:掌握Q-Car的电机控制基本方法

程序效果展示:小车前进1秒,停100ms,后退1秒,停100ms,左转1秒,停100ms,右转1秒,停100ms。

Q-Car Motor Test.gif

Arduino程序链接:https://github.com/BPI-STEAM/Q-Car/tree/master/SoftWare/Web_Bit_Arduino/Motor_Demo

氛围灯控制

学习目标:了解Q-Car的RGB氛围灯的基本使用方法

程序效果展示:底部RGB氛围灯红、绿、蓝三色混合渐变显示出多种颜色,呈现出彩色呼吸效果。

Q-Car Pixel Test.gif

Arduino程序链接:https://github.com/BPI-STEAM/Q-Car/tree/master/SoftWare/Web_Bit_Arduino/Pixel_Demo

超声波传感器控制

学习目标:掌握Q-Car的超声波传感器的使用方法

程序效果展示:串口显示超声波测得的距离数据。

Q-Car Ultrasonic Test 1.gif

Q-Car Ultrasonic Test 2.png

Arduino程序链接:https://github.com/BPI-STEAM/Q-Car/tree/master/SoftWare/Web_Bit_Arduino/Ultrasonic_Demo

蜂鸣器的使用

学习目标:掌握Q-Car的蜂鸣器的使用方法

程序效果展示:蜂鸣器播放“小星星音乐”

Arduino程序链接:https://github.com/BPI-STEAM/Q-Car/tree/master/SoftWare/Web_Bit_Arduino/Buzzer_Demo

红外遥控

学习目标:掌握Q-Car的红外遥控

程序效果展示:红外遥控Q-Car前进后退以及转弯

Q-Car IR Control.gif

Arduino程序链接:https://github.com/BPI-STEAM/Q-Car/tree/master/SoftWare/Web_Bit_Arduino/IR_Control_Demo

超声波避障

程序效果展示:开机小车前进,超声波检测前方距离,如果距离小于8cm,小车左右查看两边障碍物,选择距离更远的方向拐弯,避开障碍物。

配件准备:M2铜柱×2,M2螺丝×2,SR04超声波模块×1,超声波支架×1,舵机支架×1(支架下载地址),杜邦线若干,插入前方的SR04接口。

Q-Car Avoidance Demo.gif

Arduino程序链接:https://github.com/BPI-STEAM/Q-Car/tree/master/SoftWare/Web_Bit_Arduino/Avoidance_Demo

巡线行驶

Q-Car 配合 BPI:Bit 使用MicroPython环境编程

Q-Car 配合 Micro:Bit 使用MakeCode环境编程

基础教程

MakeCode编程点亮Micro:Bit

学习目标:熟悉基础的MakeCode的应用并在Micro:Bit的5*5LED矩阵上显示一些图形或文字。

打开Micro:Bit的MakeCode编程环境网页端:https://makecode.microbit.org/

新建一个项目,参照下图的例程连接MakeCode积木,例如其中第一个积木块“show leds”可以在“Basic”选项栏目中找到,此积木可以自行编辑想要输出的图形。

Microbit-screenshot (display graphics).png

右键积木可对积木进行一些操作,如添加注释,删除复制积木,以及查阅积木对应的说明文档,这个对于初次上手的人来说能提供很大的帮助。

MakeCode编程环境有自带模拟程序运行效果的仿真器可以实时查看效果,通常显示在左上方。

MakeCode编程环境也支持从外部导入项目文件,如经过MakeCode编译生成的.hex文件。

例程项目文件:https://github.com/Wind-stormger/Makecode/blob/master/microbit-display-graphics.hex

注意:正确的.hex文件导入方式是将上文链接中的.hex文件下载到本地然后将其导入到MakeCode中,而不是直接将此链接导入,外部项目链接导入MakeCode的方式与此处不同。

Makecode(import file).png

项目文件下载到本地后可导入MakeCode中查看和再编辑,也可直接通过USB烧录到Micro:Bit中直接运行。


按钮控制Micro:Bit输出图形

学习目标:使用Micro:Bit上的AB两个按钮控制LED矩阵所要输出的图形。

在章节“使用MakeCode编程点亮Micro:Bit”的基础上,在MakeCode中“input”选项栏目中找到应用按钮控制的积木“on button A pressed”来进行编程。

例程如下图,实现按一下A按钮显示英文字符“A”,按一下B按钮显示英文字符“B”,同时按下AB按钮后显示一个形似香蕉的图案。

Using the button.png

例程项目文件:https://github.com/Wind-stormger/Makecode/blob/master/microbit-Using_the_button_1.hex

项目文件下载到本地后可导入MakeCode中查看和再编辑,也可直接通过USB烧录到Micro:Bit中直接运行。


Micro:Bit按钮计数器

学习目标:用MakeCode编程实现一个计数并显示的按钮控制程序。

在前一章节的基础上,先在MakeCode中“Variables”选项栏目中新建一个变量名为“A_was_pressed_times”的变量,此时将在“Variables”选项栏目产生多个关于变量的积木。

将“Math”选项栏目中的加法积木与“Variables”选项栏目中的积木镶嵌组合,参照下图例程。

Using the button 2.png

此时,我们就实现了在MakeCode编程并做出了一个利用加法计数的程序,按一次按钮A计数加1同时将计数值输出到LED矩阵中,按一次按钮B计数归0并清除LED矩阵的显示。

例程项目文件:https://github.com/Wind-stormger/Makecode/blob/master/microbit-Using_the_button_2.hex

项目文件下载到本地后可导入MakeCode中查看和再编辑,也可直接通过USB烧录到Micro:Bit中直接运行。


氛围灯控制

学习目标:用MakeCode编程实现对Q-Car上10颗WS2812B彩色氛围灯的控制。

例程如下图,将程序烧录进Micro:Bit,将Micro:Bit与Q-Car连接,Q-Car上的10颗WS2812B彩灯将同时以1800ms一周期循环彩虹光效。

Q-Car Pixel.png

例程项目文件:https://github.com/Wind-stormger/Makecode/blob/master/microbit-Q-Car_Pixel.hex

项目文件下载到本地后可导入MakeCode中查看和再编辑,也可直接通过USB烧录到Micro:Bit中直接运行。


蜂鸣器的使用

学习目标:用MakeCode编程编写一段曲子并在Q-Car的蜂鸣器上播放。

例程如下图,将程序烧录进Micro:Bit,将Micro:Bit与Q-Car连接,Q-Car上的蜂鸣器将循环两次播放曲子。

Q-car Music Arrangement.png

例程项目文件:https://github.com/Wind-stormger/Makecode/blob/master/microbit-Q-car_Music_Arrangement.hex

项目文件下载到本地后可导入MakeCode中查看和再编辑,也可直接通过USB烧录到Micro:Bit中直接运行。


电机控制-应用扩展积木

学习目标:用MakeCode编程实现用按钮控制Q-Car行驶状态。

例程如下图,应用了Q-Car专属扩展积木,扩展积木对应实现的功能直观明了,可有效降低入门难度。

将程序烧录进Micro:Bit,将Micro:Bit与Q-Car连接,接通电源,按下Micro:Bit的A按钮,Q-Car向前行驶,按下micro:bit的B按钮,Q-Car向后行驶,同时按下micro:bit的AB按钮,Q-Car停车。

Q-Car Motor control module2.png

例程项目文件:https://github.com/Wind-stormger/Makecode/blob/master/microbit-Qcar-demo-button_control-1.hex

项目文件下载到本地后可导入MakeCode中查看和再编辑,也可直接通过USB烧录到Micro:Bit中直接运行。


超声波测距-应用扩展积木

学习目标:用MakeCode编程实现Micro:Bit显示超声波测距模块的测距数值。

例程如下图,将程序烧录进Micro:Bit,将Micro:Bit与Q-Car连接,将超声波测距模块与Q-Car连接,接通电源,

Micro:Bit将显示测距数值的整数,单位为cm。

Q-car Ultrasonic ranging2.png

例程项目文件:https://github.com/Wind-stormger/Makecode/blob/master/microbit-Q-car_Ultrasonic_ranging2.hex

项目文件下载到本地后可导入MakeCode中查看和再编辑,也可直接通过USB烧录到Micro:Bit中直接运行。


进阶教程

光电计数器

学习目标:

  1. 理解Q-Car上靠近车轮内侧的红外对管与车轮上的编码盘之间是如何组成光电开关的
  2. 学习如何通过MakeCode编程设计一个计数器

Q-car wheel 1.jpg

Q-car wheel 2.jpg

在Q-Car上有一对D字轴橡胶车轮,带有12线编码盘,在底部紧贴编码盘的位置放置了红外对管用于采集编码盘的信息。

Infrared tube pair.png

红外对管一侧发射红外光,一侧接收红外光,接收端将反射回的光线强弱的信息转化为电压高低的信号。

micro:bit的P11引脚为高电平时Q-Car上的红外对管才会通电工作。

与右车轮的编码盘紧贴的红外对管与micro:bit的P5引脚相连,而左车轮的编码盘紧贴的红外对管与micro:bit的P11引脚相连。

以右轮为例,可以制作一个测试程序,检测右轮编码盘对应的红外对管向P5引脚输出高低电平信号,例程如下图。

Q-Car Photoelectric switch test.png

例程项目文件:https://github.com/Wind-stormger/Makecode/blob/master/microbit-Photoelectric_switch_test.hex

项目文件下载到本地后可导入MakeCode中查看和再编辑,也可直接通过USB烧录到Micro:Bit中直接运行。

将程序下载进micro:bit,然后保持USB串口连接,将micro:bit插入Q-Car的插槽,

Q-car wheel 3.jpg

旋转右轮使编码盘的凹口对向红外对管,此时micro:bit显示0,即表明此时红外对管输出给P5引脚的是低电平信号

Q-car wheel 4.jpg

旋转右轮使编码盘的凸柱对向红外对管,此时micro:bit显示1,即表明此时红外对管输出给P5引脚的是高电平信号

这犹如一个物理开关的接通与关断两个状态,编码盘与红外对管构成了一个光电开关。

以右轮为例,参照micro:bit按钮计数器即可设计出Q-Car车轮上的编码盘与红外对管组合的光电计数器,例程如下图。

Q-Car Photoelectric counter.png

较比按钮计数器,我们可以加入一个间隔一段时间输出一次内容的功能。

"running time(ms)"积木会获取程序从启动或复位以来至读取这个积木为止的时间,单位为毫秒,即获取从开机到现在所经过的时间。

在"forever"积木中加入"if"条件积木,设置一个变量"A_was_pressed_times"用于储存每当条件满足时的时间数值,

判断条件为当前时间减去变量大于等于1000ms时,显示一次计数值,将此次满足条件的时间数值储存到变量中用于下次判断,即实现了间隔1s让micro:bit显示一次计数值。

例程项目文件:https://github.com/Wind-stormger/Makecode/blob/master/microbit-Photoelectric_counter.hex

项目文件下载到本地后可导入MakeCode中查看和再编辑,也可直接通过USB烧录到Micro:Bit中直接运行。


利用光电计数器进行转速测量

学习目标:理解转速的定义,用MakeCode编程在光电计数器的基础上设计转速测量

先简单的陈述转速的定义,即物体在单位时间内旋转360°的次数。RPM是一个较常用的转速单位,表示设备每分钟的旋转次数。

我们从直觉上理解,通过计数器统计1分钟Q-Car车轮的编码盘计数值除以12即可得到RPM转速值,但这样显然得到的信息时效性滞后了太多。

如果将统计时间缩短到5秒甚至1秒,例如统计1秒Q-Car右轮的编码盘计数值除以12再乘以60,也可得到右轮RPM转速值。

例程如下图。

Q-Car RPM measurement 1.png

例程项目文件:https://github.com/Wind-stormger/Makecode/blob/master/microbit-RPM_measurement_1.hex

项目文件下载到本地后可导入MakeCode中查看和再编辑,也可直接通过USB烧录到Micro:Bit中直接运行。

条条道路通罗马,测速的方法当然不止这一种,稍微改变一下思路,记录下通过编码盘12个凸柱即车轮旋转一周所花费的时间,60秒(1分钟)除以这个时间,即为RPM转速值。

例程如下图,其中在给"Right_whell_speed"变量赋值时将计算所得值通过"round"积木取整,这样方便LED显示出整数而不会显示一长串小数。

Q-Car RPM measurement 2.png

例程项目文件:https://github.com/Wind-stormger/Makecode/blob/master/microbit-RPM_measurement_1.hex

项目文件下载到本地后可导入MakeCode中查看和再编辑,也可直接通过USB烧录到Micro:Bit中直接运行。


用if条件判断制作计数器并用于车轮转速测量

学习目标:用MakeCode编程实现读取Q-Car上用于车轮测速的红外对管的高低电平信号并用计数法算出车轮转速。

例程如下图,将程序烧录进Micro:Bit,将Micro:Bit与Q-Car连接,此时旋转Q-Car左右轮,可以从USB串口中读取到左右轮转速。

Q-Car velocity measurement module.png

Q-Car velocity measurement module Serial port.png

例程项目文件:https://github.com/Wind-stormger/Makecode/blob/master/microbit-Q-Car_velocity_measurement_module.hex

项目文件下载到本地后可导入MakeCode中查看和再编辑,也可直接通过USB烧录到Micro:Bit中直接运行。


电机控制-对PCA9685驱动芯片进行控制

学习目标:用MakeCode编程实现Q-Car左右电机正反转控制。

例程如下图,将程序烧录进Micro:Bit,将Micro:Bit与Q-Car连接,左右电机将同时正转2s,同时反转2s,右电机单独正转2s,左电机单独正转2s。

Q-Car Motor control module.png

例程项目文件:https://github.com/Wind-stormger/Makecode/blob/master/microbit-Q-Car_Motor_control_module.hex

项目文件下载到本地后可导入MakeCode中查看和再编辑,也可直接通过USB烧录到Micro:Bit中直接运行。


详解超声波测距-应用原始积木

学习目标:

  1. 理解超声波测距原理
  2. 理解HC-SR04超声波扩展模块工作原理
  3. 用MakeCode编程实现只使用原始积木来对Q-Car上HC-SR04超声波扩展模块的控制。

“声”在1个标准大气压和15℃的条件下传导速度约为340m/s。当一段声波从声源发出,到遇到障碍物被反射传回声源所在的位置,这段声波就经过了传播时间乘以声速乘以2的距离。

通过对压电陶瓷施加高频电信号发出超声波,再用另一块压电陶瓷接收反射回的超声波并转化为高频电信号,测得的两段电信号之间的时间差即为这段超声波的传播时间,进而可以计算出超声波发射源与障碍物之间的距离。

在Q-Car正面micro:bit插槽前方有一个2*4扩展槽,其中有“V,T,E,G”四个排针槽位对应从micro:bit的“3V,P13,P14,GND”引出。

可对应顺序连接HC-SR04超声波扩展模块的“VCC,Trig,Echo,GND”引脚。

例程如下图,将程序烧录进Micro:Bit,将Micro:Bit与Q-Car连接,将HC-SR04超声波扩展模块与Q-Car连接,将5V电源与Q-Car连接。

Q-car Ultrasonic ranging.png

可以从Micro:Bit的USB串口读取到超声波传感器检测到的距离以及Micro:Bit上的温度传感器数据,例程实现了对超声波传感器的温度校准。

Distance=85.815|Temperature=21

例程项目文件:https://github.com/Wind-stormger/Makecode/blob/master/microbit-Q-car_Ultrasonic_ranging.hex

项目文件下载到本地后可导入MakeCode中查看和再编辑,也可直接通过USB烧录到Micro:Bit中直接运行。


巡线行驶

学习目标:用MakeCode编程实现Q-Car巡线行驶,巡线红外对管模拟值校准,超声波测距及遇障停车。

例程如下图,将程序烧录进Micro:Bit,将Micro:Bit与Q-Car连接,打开电源开关,

待LED矩阵显示右箭头时,将Q-Car的底部前端两个巡线红外对管水平对齐放置在巡线线路正上方,

按下B按钮,等待校准程序完成后LED矩阵将显示左箭头,此时将Q-Car车头对向线路行进方向, 。 按下A按钮,Q-Car将开始巡线行驶,行驶过程中如超声波测距模块检测到前方有小于等于10cm间距的物体将停车。

Q-car Line patrol.png

例程项目文件:https://github.com/Wind-stormger/Makecode/blob/master/microbit-Q-car_Line_patrol.hex

项目文件下载到本地后可导入MakeCode中查看和再编辑,也可直接通过USB烧录到Micro:Bit中直接运行。