跳到主要内容

哪吒Pro多功能扩展盒

简介

哪吒Pro多功能扩展盒是一款专为教育和创意编程设计的 micro:bit 扩展板,旨在激发学生的创新思维和动手能力。它不仅集成了两个便捷的电机控制按钮和4路电机驱动,还配备了8路传感器扩展接口,为学生提供了一个实验和探索的多功能平台。这些电机控制按钮允许在不连接 micro:bit 的情况下直接控制电机的转动方向,增加了使用的灵活性。所有接口均采用 RJ11 接头,具备防呆防反插设计,确保了快速准确的连接。扩展盒的外壳特别设计了与乐高和慧鱼结构件兼容的接口,支持学生将电子模块与主流结构件结合,搭建出个性化的创意编程作品。

特性

独立电机控制:配备的电机控制按钮允许学生在不接入 micro:bit 的情况下,直接控制电机的转动方向,提供了额外的操作自由度。

RJ11端口设计:采用 RJ11 接头,设计上注重防误插特性,简化了连线过程,提升了课堂使用效率。

颜色识别系统:创新的颜色识别系统通过端口标签、传感器标签与积木块的颜色对应,为学生提供了一个直观的识别和连接方式,降低了学习难度。

支持闭环电机:支持闭环电机,通过闭环反馈系统,实现更精准的位置控制和速度调节,提升整体系统的稳定性和可靠性。无论是精密的机械臂操作还是复杂的运动模拟,都能游刃有余地完成。

兼容性设计:外壳上的乐高和慧鱼结构件兼容接口,不仅增强了产品的通用性,还激发了学生的创造力,鼓励他们探索电子技术与物理结构相结合的无限可能。

滑动式电源开关:滑动式电源开关需要明确的滑动动作来切换电源状态,减少了意外触碰导致的误操作风险。它提供了物理上的反馈,确保用户可以通过触感确认开关的状态,避免不确定状态。

技术规格

项目参数
产品名称哪吒Pro多功能扩展盒
SKUEF05070
产品尺寸长80mm(不含micro:bit主板长度)x 宽60mm x 高44mm
产品重量(毛重)142g(含锂电池,不含micro:bit主板及周边配件)
充电电压5V
充电电流3A
充电时间50min
电池容量900mAh/6.6Wh
最大工作电压8.4V
额定工作电压7.4V
最小工作电压6.4V
待机电流0.01A
micro:bit供电电压3.3V
马达接口输出电压6.4~8.4V
马达接口额定输出电流1A
马达接口最大输出电流2A
RJ11传感器接口输出电压3.3V
RJ11传感器接口最大输出电流1.0A
持续使用时间45min(安装AI摄像头,4个智控马达,2个LED灯模块测试,因测试环境、不同负载状态等因素,实际使用时间可能有出入)
马达接口4个
传感器接口8个

引脚图介绍

主要模块介绍

micro:bit插槽

电机控制按钮

无需主控板,通过电机控制按钮即可控制电机顺时针转动或逆时针转动。

IIC接口

兼容行星系列的颜色识别系统,接口处有蓝色矩形标签。

IO接口

兼容行星系列的颜色识别系统,接口处有黄色矩形标签或红色矩形标签,黄色矩形标签接口支持模拟输入,红色矩形标签接口支持数字输入。

马达接口

接口处有红色圆形标签。

电源开关

通过拨动电源开关来控制电源开启或关闭。

充电接口

Type-C 充电接口,最大支持5V3A,充电时长50min。

电源指示灯

电量指示灯可用于显示电量.

指示灯图标定义如下。

表示LED灯常亮

表示LED灯熄灭

表示LED灯闪烁

放电

当前状态LED 1LED 2LED 3LED 4电量
放电状态76% ~ 100%
51% ~ 75%
26% ~ 50%
6% ~ 25%
0% ~ 5%

充电

当前状态LED 1LED 2LED 3LED 4电量
充电状态100%
75% ~ 99%
50% ~ 74%
26% ~ 49%
0% ~ 25%
  1. 在电源关闭的状态下,连接电源。
  2. 充电状态下电量指示灯会显示当前电量,并闪烁
  3. 当充满电时,电源指示灯全部点亮,请断开电源,完成充电。

快速入门

打开https://makecode.microbit.org/

新建项目

输入项目名称并点击创建。

进入编辑器界面后我们可以看到Micro:bit Simulator,Toolbox,Workspace。

添加专属扩展库

为了给哪吒Pro多功能扩展盒编程,我们需要添加一个扩展库。在代码抽屉中找到“扩展”,并点击它。

这时会弹出一个对话框,搜索“nezha2”,然后点击下载这个代码库。

注意:如果你得到一个提示说一些代码库因为不兼容的原因将被删除,你可以根据提示继续操作,或者在项目菜单栏里面新建一个项目。

软件积木块简介

积木块功能参数
设置对应接口的电机以指定方向转动。参数一:下拉选项
选项:M1、M2、M3、M4
参数二:下拉选项
选项:顺时针、逆时针
参数三:整数
参数四:下拉选项
选项:度、圈、秒
设置对应接口的电机以指定方向转动指定角度。参数一:下拉选项
选项:M1、M2、M3、M4
参数二:下拉选项
选项:顺时针、逆时针
参数三:整数
设置对应接口的电机以指定方向转动参数一:下拉选项
选项:M1、M2、M3、M4
参数二:下拉选项
选项:顺时针、逆时针
设置对应接口的电机停止运行参数一:下拉选项
选项:M1、M2、M3、M4
设置对应接口的电机以指定速度运行参数一:下拉选项
选项:M1、M2、M3、M4
参数二:整数
数值范围:-100~100
通过此积木块可以获取当前电机的角度值
通过此积木块可以获取当前电机的速度
设置对应接口的电机转动到零位
设置小车左轮电机和右轮电机的连接接口参数一:下拉选项
选项:M1、M2、M3、M4
参数二:下拉选项
选项:M1、M2、M3、M4
设置小车的速度参数一:数值
数值范围:-100~100
设置小车停止运行参数一:数值
数值范围:-100~100
参数二:数值
数值范围:-100~100
设置小车前进或者后退参数一:下拉选项
选项:前进、后退
设置小车左轮和右轮的速度参数一:数值
数值范围:-100~100
参数二:数值
数值范围:-100~100
获取当前固件版本号

硬件连接

如图所示将PlanetX Smart Brick Motor接入到Nezha Breakout Board V2的电机M1接口。

程序实例

以当前位置为零点,向顺时针方向运行180度

参考程序

请参考程序连接:https://makecode.microbit.org/_E6vawDM7yX87

你也可以通过以下网页直接下载程序,下载完成后即可开始运行程序。

如何将程序下载到micro:bit?

使用USB线连接PC和micro:bit V2。

连接成功后,电脑上会识别出一个名为MICROBIT的盘符。

点击左下角的,选择Connect Device

点击

点击

在弹出窗口选择BBC micro:bit CMSIS-DAP,然后选择连接,至此,我们的micro:bit就已经连接成功。

点击下载程序。

结果

按键A按下时连接在A口的电机转动顺时针转动180°。

舵机转动到预设零位,向顺时针方向运行180度

参考程序

请参考程序连接:https://makecode.microbit.org/_1w9VLsEE8fdi

你也可以通过以下网页直接下载程序,下载完成后即可开始运行程序。

结果

按键A按下时连接在A口的电机自动转动到预设零位,按键B按下时连接在A口的电机转动顺时针转动180°。

设定电机转动速度,控制电机启动或停止

参考程序

请参考程序连接:https://makecode.microbit.org/_fdiPdcJ71f4X

你也可以通过以下网页直接下载程序,下载完成后即可开始运行程序。

结果

设定电机转动速度,通过A、B按键控制电机启动或停止。

读取转动角度

参考程序

请参考程序连接:https://makecode.microbit.org/_Axw3drgX6Y3V

你也可以通过以下网页直接下载程序,下载完成后即可开始运行程序。

结果

开启电源后,按下A键控制电机转动3秒,然后显示当前角度值。

读取转动速度(圈/秒)

参考程序

请参考程序连接:https://makecode.microbit.org/_01x60dRX9Ros

你也可以通过以下网页直接下载程序,下载完成后即可开始运行程序。

结果

开启电源后,电机开始转动,micro:bit的LED矩阵显示当前转速(圈/秒)。

读取固件版本号

参考程序

请参考程序连接:https://makecode.microbit.org/_V0tJ15dkhLVq

你也可以通过以下网页直接下载程序,下载完成后即可开始运行程序。

结果

开启电源后,micro:bit的LED矩阵显示当前固件版本号。

python编程

步骤 1

下载压缩包并解压EF_Produce_MicroPython-master

打开Python editor

为了给哪吒Pro多功能扩展盒编程,我们需要添加Nezha_V2.py文件。点击Project,然后点击Open,并选择Nezha_V2.py。

设置为Add file Nezha_V2.py,点击Confirm。

步骤 2

参考程序

from microbit import *
from Nezha_V2 import *

nezha_v2 = NEZHA_V2()

while True:
if button_a.was_pressed():
nezha_v2.Motorspeed(motor.A,direction.clockwise,100,MotorFunction.degrees)
if button_b.was_pressed():
nezha_v2.Motorspeed(motor.A,direction.counterclockwise,100,MotorFunction.degrees)

结果

通过A、B按键控制电机顺时针或者逆时针转动100度。

参考程序

from microbit import *
from Nezha_V2 import *

aaa = NEZHA_V2()

while True:
if button_a.was_pressed():
aaa.goToAbsolutePosition(motor.A,modePostion.clockwise,100)
if button_b.was_pressed():
aaa.goToAbsolutePosition(motor.A,modePostion.clockwise,-100)

结果

以当前位置为零点,通过A、B按键控制电机转动到100度或者-100度。

参考程序

from microbit import *
from Nezha_V2 import *

aaa = NEZHA_V2()

while True:
if button_a.was_pressed():
aaa.nezha2MotorStart(motor.A,direction.clockwise)
if button_b.was_pressed():
aaa.nezha2MotorStart(motor.A,direction.counterclockwise)
if pin_logo.is_touched():
aaa.nezha2MotorStop(motor.A)

结果

通过A、B按键控制电机顺时针或者逆时针转动,按下micro:bit上的徽标停止转动。

参考程序

from microbit import *
from Nezha_V2 import *

aaa = NEZHA_V2()

while True:
if button_a.was_pressed():
aaa.nezha2MotorSpeedCtrolExport(motor.A,100)
if button_b.was_pressed():
aaa.nezha2MotorSpeedCtrolExport(motor.A,-100)
if pin_logo.is_touched():
aaa.nezha2MotorStop(motor.A)

结果

通过A、B按键控制电机以指定速度转动,按下micro:bit上的徽标停止转动。

参考程序

from microbit import *
from Nezha_V2 import *

aaa = NEZHA_V2()

while True:
if button_a.was_pressed():
aaa.Motorspeed(motor.A,direction.clockwise,100,MotorFunction.degrees)
if button_b.was_pressed():
aaa.Motorspeed(motor.A,direction.counterclockwise,100,MotorFunction.degrees)
if pin_logo.is_touched():
display.show(aaa.readServoAbsolutePostion(motor.A))

结果

通过A、B按键控制电机以指定角度转动,按下micro:bit上的徽标控制LED矩阵显示当前角度值。

参考程序

from microbit import *
from Nezha_V2 import *

aaa = NEZHA_V2()

while True:
if button_a.was_pressed():
aaa.nezha2MotorSpeedCtrolExport(motor.A,100)
if button_b.was_pressed():
aaa.nezha2MotorSpeedCtrolExport(motor.A,-100)
if pin_logo.is_touched():
display.show(aaa.readServoAbsoluteSpeed(motor.A))

结果

通过A、B按键控制电机顺时针或者逆时针转动,按下micro:bit上的徽标控制LED矩阵显示当前电机的转动速度(圈/秒)。

参考程序

from microbit import *
from Nezha_V2 import *

aaa = NEZHA_V2()

while True:
if button_a.was_pressed():
aaa.Motorspeed(motor.A,direction.clockwise,100,MotorFunction.degrees)
if button_b.was_pressed():
aaa.Motorspeed(motor.A,direction.counterclockwise,100,MotorFunction.degrees)
if pin_logo.is_touched():
aaa.servoPostionReset(motor.A)

结果

通过A、B按键控制电机顺时针或者逆时针转动100度,按下micro:bit上的徽标控制电机转动到预设零位。