ITPub博客

首页 > 人工智能 > 机器人开发 > 从学习硬件焊接到编程的机器人开发套件。micro:bit与BPI:bit,makecode编程

从学习硬件焊接到编程的机器人开发套件。micro:bit与BPI:bit,makecode编程

原创 机器人开发 作者:BananaPi开源硬件 时间:2021-05-17 12:59:17 3 删除 编辑

Banana Pi BPI-TriodeCar,是一款专注于教育的廉价机器人。兼容Web:Bit(BPI:bit)和Micro:Bit两款开发板。小巧的车身,大量可扩展的接口,即插即用,能快速小朋友的注意力,完成图形编程的快速入门,培养独立思考能力和逻辑思维能力

关键特性

  • 两种控制模式,可使用比较器(LM393)或者Micro:bit 与 BPI:bit(Web:bit)控制
  • 支持Makecode图形化编程(与mico:bit配合),支持Webduino图形化编程(BPI:bit配合)及MicroPython编程(Micro:bit 与BPI:bit)
  • 车身小巧,整体性强
  • 直流减速电机
  • 兼容乐高积木扩展螺孔。
  • 可扩展红外发射、红外接收、测速、氛围灯、蜂鸣器、舵机等等......功能齐全,扩展性强
  • 有I2C接口(3.3V)、巡线、超声波接口、排针扩展口
  • 洞洞板扩展接口,可自由添加传感器等
  • 轻松上手

硬件接口示意 [ ]

Triode-Car-IO.png

在Triode-Car的上面,有很多特殊设计:

  • 在Triode-Car上方,有两个固定用的螺丝孔,这两个螺丝孔可以用来固定避障传感器或者巡线传感器等等传感器。
  • 在Triode-Car上,有两对特殊的电阻,R11和R13,R12和R14,如果选择焊接R11和R12,那么LED会自动显示电机的状态,是正转还是停止,但是如果选择焊接R13和R14,那么LED会变成可编程的LED灯,P11控制左边的LED(D3),P5则能够控制右边的灯(D4)。
  • Triode-Car上有为了手动焊接特殊设计的焊盘(Controller Socket标记位置),通过这样的设计,手动焊接Bit底座时更方便,并且使用时如果想快速确认Pin的位置,不用需要反复确认原理图与引脚号。
  • 在Bit底座正下方,有一个切换按钮,这个按钮可以切换两种控制方式:IC切换和Bit切换。
  • 在Triode-Car中间偏下部分,有一个30*15mm的方形孔,这个的作用是给测速传感器留下空间。添加完测速传感器之后,可能电池盒的位置被占用,此时我们推荐您使用铜柱,塑料板等,将电池盒垫高。推荐传感器链接:
  • 在Triode-Car正下方,有一些可以随意焊接的洞洞,洞洞的最左侧一条连接的是电源的正极,最右侧一条则连接的是负极,最上面一排则放置了一些IO供使用,可以在这个区域添加一些传感器或者蜂鸣器等,让您的小车更加全能。当然,添加之后可能会出现供电不足的情况,建议使用电流更强大的锂电池。

硬件参数 [ ]

  • 供电电压:3.6V~3.7V DC(3.6V~3.7V锂电池)
  • 光敏电阻巡线(模拟值)×2 (P1 P2)
  • SR04、SR04P超声波接口(5V)×1 (Trig:P12 Echo:P14)
  • I2C接口(3.3V)×1
  • IO扩展口 ×2 (P5 P0 P3 P4 P6 P7 P8 P9 P10 P16 P11)
  • 减速电机×2 (P14 P15)
  • 电机空载转速(3V):90rpm
  • 电机驱动方式:PWM电机驱动
  • 扩展M3螺丝孔×6(支持乐高接口)
  • 编程方式:makecode图形化编程、Mind+图形化编程(Webduino)、MicroPython编程

功能引脚定义

IO Define of Banana Pi Triode-Car
Function Web:Bit GPIO

I2C (Address:0x5F)

Wheel(Left) P15

Wheel(Right) P14

ultrasonic (Trig) P12

ultrasonic (Echo) P13

Line Following(Left) P2

Line Following(Right) P1

Speed Detection(Left) P11

Speed Detection(Right) P5



使用LM393控制小车 [ ]

硬件介绍 [ ]

在Triode-Car中,有两种模式,其中一个是利用自带的LM393控制小车,另一个则是利用BPI:Bit/Mirco:bit控制小车,可以通过小车上面的SW2按键(如图)切换控制方式。

在LM393控制小车的模式中,只有一个功能,即巡线,它由几大部分组成,包括了:巡线检测电路,电压比较电路,驱动电路。

巡线检测电路 [ ]

在Triode-Car的底部,有两个巡线的检测电路,每一路包含了一个光敏电阻和一个LED。当LED的光照到黑色和白色的材料上面时,由于反光率的不同,光敏的阻值会发生明显的变化。

在Triode-Car中,光敏电阻使用的是GL5506,这个型号的电阻会随着光照的加强而减小,亮电阻(10Lux)是2-5KΩ,暗电阻是0.2MΩ。(亮电阻:用400-600Lux光照射2小时后,在标准光源(色温2854K)10Lux光下的测试值。暗电阻:关闭10Lux光照后第10秒的阻值。)

电压比较电路 [ ]

LM393 sch.jpg

电压比较电路主要由LM393和一些电阻组成,LM393是双路电压比较器集成电路,有两个独立的电压比较器构成。它的作用是,比较两个输入电压,并根据两路电压的高低改变输出电压的高低。当比较器的正向(正极)大于反向(负极)电压时,输出高电平,当比较器的正向(正极)小于反向(负极)电压时,输出低电平。由于LM393使用的是集电极开路输出,所以需要在输出端加上上拉电阻。

驱动电路 [ ]

电机驱动电路的主角则是三极管,Triode-Car使用的是S8550,它是一种低电压,大电流,小信号的PNP型硅三极管。最大集电极电流为1.5 A。它可以被用来当成一个低电平触发的开关使用。

控制原理 [ ]

Triode line l.jpg

如图所示,当小车偏离轨道向左时,右边的光敏电阻会来到黑色跑道的上方,光敏电阻阻值变高,而左边的光敏电阻处于白色地面,此时,LL点的电压会比LR点的电压低,此时,比较器U1A的正向电压高于反向电压,1号引脚输出高电平。同理,U1B的正向电压低于反向电压,7号引脚输出低电平。从而控制左边电机正转,小车右拐,R6和D2离开黑色跑道,直到左边的传感器探测到黑跑道,原理与前面类似。小车在前进过程中不断重复以上动作,从而达到前进的目的。

Triode-Car 配合Micro:Bit 使用MakeCode环境编程 [ ]

基础教程 [ ]

导入扩展积木&用microbit按钮控制电机 [ ]

打开MakeCode,点击"Advanced",再点击最下面的"Extensions",在上方搜索栏中输入   (右键此连接并复制),点击搜索出来的项目,即可导入Triode-Car专用扩展积木。

扩展积木便于初学者理解程序功能并上手使用。

例程如下图所示:

Triode-Car motor control 1.png

启动或复位时停车,同时按下AB按钮直行,按下A按钮右转,按下B按钮左转。

例程项目文件:

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


调整电机转速 [ ]

Triode-Car专用扩展积木中有可单独控制左右电机转速的积木,可进行10级调速。

例程如下图所示:

Triode-Car motor control 2.png

按一次A按钮转速加1档,按一次B按钮转速减1档,Micro:Bit显示当前挡位数值。

其中"forever"积木会在"on start"积木执行完后开始无限循环执行其内部的积木,而在每次循环的间隙则可执行其他事件处理程序,如on button A/B pressed。

加入了一个"if"判断积木,若变量"speed"值小于0或大于10时,将变量"speed"值设为0,这样可以将值限定在0到10范围内不会溢出而报错。

例程项目文件:

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


采集巡线检测电路的电压模拟信号 [ ]

硬件原理参考“ 巡线检测电路”中的介绍。

Triode-Car专用扩展积木中有可采集巡线检测电路的电压模拟信号的"read left/right line tracking sensor"积木。

Micro:Bit引脚对0至3.3V电压测量精度为10bit即2^10=1024级,所以调用"read left/right line tracking sensor"积木从对应引脚读到的电压模拟值将为0至1023。

例程如下图所示:

Triode-car read LDR.png

在程序中,每间隔100ms通过USB串口将读取到的左右两个传感器的电压模拟值发送给电脑,在MakeCode中打开控制台即可查看实时接收到的信息。

例程项目文件:

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


使用两块micro:bit通过无线电通讯控制电机 [ ]

micro:bit支持无线电通讯,在MakeCode中应用无线电扩展积木进行编程,并将程序下载进两块micro:bit后,即可在二者之间建立无线通讯,并可相互控制对方的硬件。

例程如下图所示:

Triode-Car radio control 1.png

将例程下载进两块micro:bit,一块插在Triode-Car上,一块拿在手上,两块都接通电源,即可通过手上的micro:bit的按钮AB控制Triode-Car的电机启停。

按A左转,按B右转,同时按下AB直行,松开即停车。

其中加入的四个变量并非多余的存在,虽然不使用变量也可以直接在程序中填上变量对应数值,但使用变量名来代替数值有利于我们在认知上建立更清晰的逻辑,在越复杂的程序中越能体现其价值。

例程项目文件:

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


蓝牙控制 [ ]

micro:bit支持蓝牙通讯,在MakeCode中应用蓝牙扩展积木进行编程,在支持蓝牙通讯的Apple或Android设备上安装APP即可通过蓝牙无线控制。

注:App Store中的官方APP micro:bit有蓝牙控制功能。Google Play商店有官方APP micro:bit,但没有蓝牙控制功能,所以需要第三方APP来实现蓝牙控制功能。

蓝牙配对流程及注意事项:

  1. 在MakeCode中,点击Extension,在页面中选择Bluetooth,移除Radio功能,即可将micro:bit的无线通讯功能切换为Bluetooth。
  2. 当micro:bit蓝牙配对的是Android设备且使用的APP为第三方APP时,应当在MakeCode中"Project Setting"项目设置中勾选"Passkey pairing: Pairing requires 6 digit key to pair."。
  3. micro:bit通电开机后,同时按下按钮AB并保持按下的状态,再点按一次Reset复位键,保持读条进度完成,即可进入蓝牙配对模式。
  4. Android设备应打开GPS和蓝牙功能(需要开启GPS功能才可保持连接稳定)。
  5. 进入Android系统的蓝牙设置内找到micro:bit并与之配对,开始配对时micro:bit会提示按一次按钮A,按下一次后将连续显示6位配对码,将其输入Android设备上显示的蓝牙配对码输入框中,稍等片刻即可配对成功。
  6. 建议配对成功后再按一次Reset复位键将micro:bit复位。
  7. Apple设备如iPhone或iPad则无需进入系统的蓝牙设置,使micro:bit进入蓝牙配对模式后遵照官方APP micro:bit内的操作提示一步步操作即可完成配对。

例程如下图所示:

TriodeCar bluetooth control 1.png

蓝牙连接时显示一个红心图案,蓝牙断开时显示一个错误图案,使用Apple或Android设备上安装的APP的蓝牙控制功能即可无线控制Triode-Car,蓝牙控制端按钮A按下小车前进,按钮C按下小车左转,按钮D按下小车右转,松开即停车。

其中on event from()with value()积木在Control选项栏中。

例程项目文件:

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

高阶教程 [ ]

校准巡线检测电路 [ ]

为了能以较高的灵敏度应用巡线检测电路,我们需要手动对两个光敏电阻对应连接的可调电阻进行微调,使其工作在灵敏度较高的区间内,且应该尽量使相同光照强度下输出的电压模拟量保持相等。

我们可以直接应用基础教程中的“采集巡线检测电路的电压模拟信号”教程中所示的例程来在电脑上输出采集到的电压模拟量数值,然后使用螺丝刀对可调电阻进行调节。

在Micro:Bit所能测量的0-1023级电压模拟量范围内,越靠近中间值,光敏电阻对光照强弱变化的响应灵敏度就越高。

所以对巡线检测电路校准时,应在稳定的环境光下,尽量将两个可调电阻调节到靠近中间值512,并尽量使二者在相同光照强度下输出的电压模拟量的差值减小。

以上实行校准步骤都是建立在保持Micro:Bit与PC连接,Micro:Bit与Triode-Car连接的前提下的,但实际应用中,为了提高使用时的灵敏度,最好直接在实际应用的场景下进行校准。

我们不一定总有条件在实际应用的场景下还能保持Micro:Bit与PC连接。在不能连接PC的时候,就需要提前写好一个可以正确的指引我们校准巡线检测电路的程序。

分析校准的步骤:

  1. 选择先对左侧的可调电阻进行手动调整,使其并联的光敏电阻在Micro:Bit对应引脚上输出的电压模拟量接近中间值。
  2. 在上一个条件满足的前提下调整右侧的可调电阻,使其并联的光敏电阻在Micro:Bit对应引脚上输出的电压模拟量接近另一个光敏电阻。

在程序上这显然是可以通过"if"条件判断来完成的,而对于实际进行手动校准的人,则是需要得到对应条件下使Micro:Bit显示不同图形使人也能得到条件满足的反馈。

例程如下图所示:

Triode-car LDR calibration 1.png

由于例程较为复杂,所以给出一些必要的说明:

  1. 将程序整体放入一个"function"自定义函数中,这有利于我们从认知上在大量积木中区分某一部分的功能,方便后续调用或维护。
  2. 整体由两个"while"循环积木组成,加入了循环条件,这样可以在可调电阻校准完成后改变循环条件退出循环。
  3. 在进入"while"循环之前,使Micro:Bit显示对应的方向指示,给人以直观的行动目标,确认当前应该要进行手动调整的可调电阻。
  4. 第一个"while"循环积木中的程序用于校准左侧光敏电阻,其中"if"判断条件为,左侧光敏电阻输出的电压模拟量大于等于450小于等于550。
  5. 当满足第4条中的"if"判断条件后,使Micro:Bit显示一个表示正确的图形,给人以视觉上反馈,此时人应该停止对左侧的可调电阻的调节,随后延时1000ms再一次进行相同的"if"判断条件,用以消除手动调整可能产生的抖动而带来的误差,当再次确认条件满足时,改变控制这个"while"循环的循环条件以退出循环,执行下一步。
  6. 第二个"while"循环积木中的程序用于校准右侧光敏电阻,其中"if"判断条件为,左右两侧光敏电阻输出的电压模拟量相减,其差值的绝对值小于等于25。

例程项目文件:

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


巡线行驶 [ ]

在“校准巡线检测电路”之后,我们即可开始对巡线检测电路进行有效利用。

根据“巡线检测电路”中所介绍的原理,巡线需要利用“线路”与其两侧路面对光线不同的反射率进行实时的光照强度检测,在程序中读取左右两个光敏电阻的电压模拟值,对数值进行比对,以此判断Triode-Car行进路线是否发生偏移以及偏移方向,进而对左右两个电机的启停进行控制,修正Triode-Car的行驶方向,达成沿着“线路”行驶的目的。

例程如下图所示:

Triode-car Line Follower.png

由于例程较为复杂,所以给出一些必要的说明:

  1. "on button A pressed"积木用于控制循迹程序的启动和停止,每按一次按钮A,其中设置的变量就会改变一次状态。
  2. "forever"积木将重复执行其内部的程序,每次循环结束或在循环中执行到"show"或"pause"积木时会让出线程允许其他的"forever"积木或事件处理程序运行,所以此处三个"forever"积木与一个"on button A pressed"积木可以共同在后台运行,这样使系统具备同时执行多个程序的能力,一般将此称作“多工”。
  3. 第一个"forever"积木内的程序用于循环读取左右两个光敏电阻电压模拟值,然后在多级"if"条件积木中进行判断,满足相应条件时改变变量,该变量用于控制电机。
  4. 第二个"forever"积木内的多级"if"条件积木对第一个"forever"积木内改变的变量值进行判断,直接输出控制信号来控制左右电机的启停和转速。
  5. 第一,二个"forever"积木内的循环条件即为"on button A pressed"积木控制的变量,变量为"true"值时才会循环执行。
  6. 第三个"forever"积木略有巧思,其内部的循环仅在用于控制电机的变量发生变化时才会执行一次,对应改变LED当前应当显示的内容。

例程项目文件:

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


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69966964/viewspace-2772561/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
Banana Pi 开源硬件,IoT物联网技术,STEAM教育 http://www.banana-pi.org

注册时间:2020-03-19

  • 博文量
    49
  • 访问量
    22865