介绍 BBC micro:bit 和 MakeCode 积木块……使用玩具机器人车和 PC
介绍 micro:bit 和业余项目示例。多种遥控方式(红外、蓝牙安卓应用、串口 PC)
目录
- 引言
- 背景
- BBC micro:bit
- 使用 MakeCode 积木块编程或切换“JavaScript/Python”
- 额外硬件:迷你机器人车,Maqueen
- 额外硬件:廉价 ESP32 摄像头用于未来项目
- 遥控示例
- 使用第二个 micro:bit 和 C# PC 程序通过串口进行无线电控制
- 未来计划,在 PC 上的 C# 中进行智能处理?
- 历史
引言
2016 年,BBC 开始免费向英国每位 11 岁儿童分发 micro:bit 开发板。该板有一个复位按钮、2 个用户按钮、5x5 LED 矩阵、加速度计、简易指南针和温度传感器、蓝牙 BLE,并且可以使用 USB 数据线连接到 PC。它在 STEM 教育领域很受欢迎。
现在兼容的新 micro:bit 版本 2 已发布,是时候在 CodeProject 上介绍 micro:bit 和使用代码块(或切换到“JavaScript/Python”)进行 MakeCode 编程了。介绍将非常简短,因为两者都有很好的文档可用。
为了展示相对基础的 micro:bit 能做什么,并激发人们对一些休闲轻量级硬件“编程”的兴趣,我将介绍并简要讨论我购买的一些额外硬件:一辆迷你机器人车(Maqueen lite,许多机器人车都有售)以及用于未来项目的廉价 ESP32 摄像头,它可以充当 WIFI 流媒体网络服务器。
接下来,我将简要提及我做的一些标准迷你遥控项目:使用红外 DVD 遥控器,使用带有安卓蓝牙应用的蓝牙,最后使用第二个控制器 micro:bit 进行无线电通信(控制器 micro:bit:使用倾斜或面包板上的 4 个按钮)。
我收集了一些开发示例,它们是 MakeCode 的 .hex 文件,但这只是为了给一个想法,自己探索会更有趣。对于所描述的硬件也是如此,还有许多其他选择。
最后,我将讨论使用 PC 进行遥控,其中额外的 micro:bit 连接到 PC。直接蓝牙在第一次尝试时没有成功,待处理。我将讨论这个控制程序的初步草图。对于串口通信,我将 port.ReadExisting
的字符串序列复制到一个 BlockingCollection<string>
队列中,我将提供一个代码片段来从任意分段的行中重构原始文本行。
我的业余兴趣正在转向在 W10 PC 上进行一些“智能”处理,但现在摄像头的 2 节电池的电源供应令人怀疑。所以目前,这都是幻想,如果说“机器人前进”甚至“机器人在场地中撞向一个红球”!!还需要一段时间才能实现。
背景
1.5 年前,我买了一辆简单的迷你玩具机器人车(只有 2 个轮子,没有手臂)和一个 micro:bit。它看起来很有趣,价格合理(Micro:bit 不到 20 欧元,机器人不到 30 欧元,骑自行车取货没有运费),并且考虑到我有限的硬件知识,这是可行的。
在 MakeCode 块编程中编写小型“程序”非常原始且有些受限,但简单明了。机器人硬件支持的小型标准程序包括红外遥控、循线、使用超声波距离传感器避障、闪烁 LED 和播放音乐。
今年,我进行了第二次迭代,使用 PlayStore 中的蓝牙安卓应用作为遥控器。我还尝试通过蓝牙连接到 W10 PC,但这没有直接成功。我转而使用一个额外的 micro:bit 连接到 PC,用于 micro:bit 到 micro:bit 的无线电通信。
乐趣的一部分是浏览销售硬件的网站,但不要买太多,硬件需要钱。我不得不购买 E32 摄像头(12 欧元)和一个 Arduino Uno 克隆板(7 欧元)来下载网络服务器程序……我的意思是,这当然是符合我未来业余爱好计划的理性决定……
考虑到遥控工作和新款 Huygens 摄像头(摄像头进行一些 AI 学习,检测结果可在 MakeCode 程序中访问)的可用性,业余项目的新目标出现了。业余爱好计划正在转向在老旧的 W10 PC C# 环境中进行一些智能处理,但考虑到 ESP 32 摄像头的电池问题,我不得不重新考虑这一点。
BBC micro:bit
我将非常简短地介绍,您可以在此处找到有关 micro:bit 的所有信息。要了解 micro:bit V1.0 的印象,请参见图 1 中的 USB 端口、按钮、蓝牙和板载传感器。
它有一个坚固的边缘连接器。参见图 2 中的可用引脚。
micro:bit 的价格约为 20 欧元。如果你问我,我应该买这块板吗?我的答案是:不,不,不!
……购买新发布的 BBC micro:bit V2.0,与 V1.0 兼容,价格相近。
增加了多项改进,如麦克风、扬声器、触摸按钮、睡眠模式(教师们为暂时停止课堂上许多蜂鸣项目的声音而提出的特殊要求)、更适合鳄鱼夹的凹槽边缘连接器。
根据 micro:mag 网站
“处理器得到了大幅升级 (nRF52833),闪存增加了一倍,达到 512Kb,RAM 从仅仅 16Kb 增加到 128Kb。这将使人们能够运行更复杂的任务,如人工智能和机器学习,Micro:bit 教育基金会将在明年发布时为此努力。”
无论如何,重要的改进,因为我不得不(尤其是在蓝牙程序中)缩短一些程序,因为它们对于内存来说太大了。
顺便说一句,如果你考虑购买硬件,当然也要看看老旧的更硬核的 Arduino 硬件、许多 Groove 传感器板和套件、库和 CodeProject 文章。
使用 MakeCode 编程
当然,编程 micro:bit 有很多选择,请参见此处。一个值得一提的重要替代方案当然是 Arduino IDE(Windows 应用商店中也有),请参见此处的说明。
然而,这里我们将使用 USB 数据线将 micro:bit 连接到 PC,并使用 MakeCode 编辑器进行编程。MakeCode 编辑器可以从 Windows 应用商店下载,或者您现在可以直接打开编辑器作为网页,在makecode.microbit.org 尝试。请参见图 3 了解印象。我只提几个属性,请自行探索。
在中间列中,几个扩展被分组。在图 2 中,选择了基本组,我们看到我们可以选择显示 LED 块并将其拖到右侧的块中。在底部,我们可以使用“高级…”选项,添加扩展以搜索额外的扩展并将其添加到项目中。在示例中,添加了 Maqueen 机器人扩展。可以编写扩展并将其存储在 Github 上。
在左侧列中,我们看到模拟的 micro:bit(可以按下按钮),并且由于添加了伺服语句,它显示了一个伺服。下载按钮将当前代码(一个 .hex 文件)下载到通过 USB 电缆连接到 PC 的 micro:bit。如果外部扩展被添加到程序中,则会显示 .hex 文件中元素的资源管理器按钮。如果下载的程序执行串行写入指令,则会显示控制台按钮(用于模拟和连接的硬件 micro:bit)。通过这种方式,显示串行通信,所有带有串行写入值的命名变量也会按时间绘制。
在左侧列中,我们看到代码块。块的放置不是固定的,2D 平面中的组织可能会变得有点复杂。最新更新允许使用上下文菜单折叠所有主块并单独展开它们。
使用积木块编程很简单,但有点繁琐。一个重要的选项是在积木块和 JavaScript/Python 之间切换(如果程序编译)。例如,在积木块中定义一个变量、函数或 if
语句,切换到 JavaScript 并在那里完成其余部分。我总是把注释放在这里。插入代码或比较代码也必须使用 JavaScript/Python 文本完成。但是,在积木块之间切换可能会改变注释或变量定义的顺序。
有一些新的调试选项,我经常在代码中使用串行写入语句并在控制台中查看。也可以使用 5x5 LED 显示临时图标、单个字符或移动字符串,或者如果存在带有扬声器的机器人,则在程序开始时发出声音,播放旋律。
通常,只要不使用共享引脚、无线电/蓝牙扩展是排他性的、伺服和音乐中有一个共同的定时器等通用硬件,一切都可以顺利进行。
额外硬件:Maqueen Lite 机器人
有很多额外的硬件可用,从groove 传感器板到机械臂。市场上也有很多玩具迷你机器人车,例如参见此处或此处。我没有太多考虑就购买了 Maqueen lite V 3.0,参见图 4。回想起来,也可以从头开始构建这样一个机器人车,代价是花费一些额外的时间。伺服电机和摄像头的良好电源似乎很重要。
开箱即用,它有 2 个电机,一个带开关的电池座,一个超声波距离传感器(2 只“眼睛”),一个蜂鸣器,RGB 环境灯,一个红外接收器,底部有 2 个用于循线的红外灰度传感器,6 个 M3 螺丝孔用于安装更大的支架
今年,我看到了一些新产品,Maqueen lite V 4.0,一个更昂贵的Maqueen plus(需要额外电池和充电器),一个带 2 个伺服电机的机械附加装置,以及一个HUSKYLENS。对于 Maqueen lite 3.0,我不能推荐伺服电机,先尝试一个(伺服电机辅助电源?)。
HUSKYLENS(带 IPS 训练接口)是一个有趣的概念。它声称支持人脸、物体、标签、颜色等的识别/检测。据我所知,现在它通过硬件(UART、IC2)连接到机器人,并通过代码中的事件(MakeCode 支持??)提供检测结果。Huskylens 的价格对于我的业余爱好来说太高了,但它让我开始思考在我的 C# PC 开发环境中进行更智能的处理。
额外硬件:廉价 ESP32 摄像头
ESP32 摄像头本身就是一个(未来的)项目。摄像头板本身只花了 12 欧元,但额外费用要高得多。我现在在这里讨论它,因为它可以引向在 PC 上进行更智能处理的方式。
低功耗 ESP32 开发板通常支持集成 WIFI 和蓝牙,具有一定的处理能力,并且可以使用 Arduino IDE 进行编程。该板可以编程为充当 WIFI 网络摄像头流媒体网络服务器,从而创建从机器人到 PC 的视觉流。
最初,我们可以使用 WebView 或新的 WebView2(现已投入生产)在 C# 程序中使用 URL 显示流。摄像头的想法很有吸引力,可以看到机器人看到了什么,环顾四周等。在模拟月球(可选地延迟采样图像)或乐高景观中进行远程导航。
在稍后的阶段,我们可以采样图像并进行更智能的处理,并向机器人发出命令。图像质量不是很好(更好的传感器使智能任务更容易),但我们可以控制环境并只执行简单的特定任务。例如,解码 4 堆不同颜色的乐高积木、基本形状或条形码。在智能处理之后,我们可以将命令发送回 micro:bit。
ESP32 摄像头板可以使用 PC 上的 Arduino IDE 进行编程,但它没有 USB。有一些特殊的 USB 棒/板可以做到这一点,但由于廉价 Arduino Uno 克隆板的成本相同,我使用了 Arduino。
例如,请参阅 electroniclinic 提供的接线图 electroniclinic,我遵循了此 视频 中的说明。在带 USB 供电 Arduino 的实验板上,一切正常。
请注意,我听说 WIFI 网络服务器可能构成安全风险。我浏览了示例的 C 代码,据我从此处理解,它使用此进行人脸检测。对我来说,这超出了一个简单的业余项目,但理论上,在相机上进行一些智能处理是可能的。也许我可以修改流式传输的 HTML 页面。
要将 ESP 32 摄像头安装到机器人上,可以使用 M3 铜螺栓(1-3 厘米),它们在另一侧也有螺丝孔。摄像头适用于 170 针面包板。最大的挑战似乎是用 2 或 3 节电池为摄像头供电。在实验板上,它总是可以工作。最初,它似乎可以用 2 节可充电电池工作,但现在它似乎随机工作,但通常不能。ESP 32 开发板的功耗似乎很低,但初始电流会突然增加。昨天,我尝试了 2 节锂电池,如 推荐,但没有成功。
我必须重新考虑摄像头的成本以及这是否为未来项目奠定了良好的基础。考虑到我有限的硬件能力和兴趣,这可能过于雄心勃勃了。对于真正的硬件专家来说,选择电容器、升压器和电源应该轻而易举。
遥控示例
我现在将简要提及几个遥控器,以展示机器人+micro:bit(或多个 micro:bit)硬件的能力。首先,我们将使用机器人的红外功能,然后使用带有安卓应用的蓝牙,最后是 2 个 micro:bit 之间的无线电通信和控制器 micro:bit 的倾斜功能。MakeCode 中可以下载的这 3 种情况的 .hex 文件包含在您可以下载的第一个 zip 文件中。对我来说,乐趣在于思考,而不是花很多时间玩慢速移动的机器人。感谢一个荷兰网站,我从那里下载了一个循线测试赛道,我复制了倾斜到电机速度的计算以及通过快速设置 5x5 LED 中的几个来标记电机状态的想法。还提到了strawbeeds,伺服和音乐的通用硬件定时器等。
使用旧 DVD 遥控器进行红外控制
红外线是一种提供大量手动选项的简单方法,但对于连续控制来说不是最好的。通常,家里已经有一个旧的红外遥控器,例如旧电视、DVD 或智能灯。
在 MakeCode 中,使用“高级”选项...添加外部扩展并搜索 Maqueen。如果您现在这样做,您会注意到中间行中有两个额外的扩展:Maqueen IR 和 Maqueen(绿色)。请参见图 6 中可用的积木块。
对于红外线,我们将使用“接收到红外信号时”和“读取红外键值”积木块。在下载中,我们添加了一个示例 .hex 文件。机器人向前移动一小段后会停止以进行调试,循线和避障选项除外。对于循线,请自行设计并打印您的线条,或从本页面底部下载 Parcours.pfd。在长红外代码 if 列表中,注释在 JavaScript 选项中可见(荷兰语)。您必须自行发现您的红外遥控器的红外代码并修改程序。这可以通过激活串行写入或 LED 的显示数字命令来完成(这需要时间、额外暂停、多个字符文本滚动)。请注意,机器人必须开启才能使红外传感器工作,USB 连接必须连接才能在串行写入发生后出现控制台选项。
蓝牙,使用安卓 Kitronic Move 应用
家里有一台潜在的蓝牙遥控器——安卓平板电脑。micro:bit 具有蓝牙 BLE 功能。Martin Woolley 帮助开发了 micro:bit V1.0 的蓝牙配置文件。他发布了一些免费的安卓程序,用于访问 micro:bit 的 BLE 服务,例如 5x5 LED 矩阵。我相信他的遥控器应用是付费的,所以我将在这里讨论 Google Play 商店中的免费 Kitronic Move 应用。
安装应用,将 micro:bit 与平板电脑/手机配对,在应用中扫描 Micro:bit,选择它并使用游戏应用的触摸按钮。请观看视频。如果失败,请重复此过程,可选地移除并重新配对平板电脑/micro:bit。当应用连接到 micro:bit 时,控制良好。
function computeSpeed () {
// Speeds are Weighted sums dep. buttons pressed. To do in forward+l/r more spin
M1Speed = 80 * btnA - 60 * btnB - 40 * btnC + 40 * btnD
M2Speed = 80 * btnA - 60 * btnB + 40 * btnC - 40 * btnD
}
control.onEvent
(EventBusSource.MES_DPAD_CONTROLLER_ID, EventBusValue.MICROBIT_EVT_ANY, function () {
// A Forward
// B backward
// C Left
// D Right
if (control.eventValue() == EventBusValue.MES_DPAD_BUTTON_A_DOWN) {
btnA = 1
basic.showArrow(ArrowNames.North)
} else if (control.eventValue() == EventBusValue.MES_DPAD_BUTTON_A_UP) {
btnA = 0
basic.clearScreen()
} else if (control.eventValue() == EventBusValue.MES_DPAD_BUTTON_B_DOWN) {
btnB = 1
basic.showArrow(ArrowNames.South)
}
.... all buttons handled similar way
}
// we can always update speed with current button state
computeSpeed()
....
在 MakeCode 中,使用添加扩展并添加蓝牙。请注意,无线电扩展现在已消失,因为它使用相同的硬件。请参见图 7 中的代码片段,这次是 JavaScript。我们使用应用程序发送的蓝牙按钮事件来更新按钮的状态,并计算电机速度,作为按钮 0/1 值的加权和。可以同时按下多个按钮,如“前进”和“左转”。如果此管理不同步,请重复按下按钮。请注意,在 5*5 LED 中显示指南针箭头会花费一些暂停时间,请按住按钮一段时间。.hex 文件再次包含在 zip 下载中。
此时,我萌生了将 PC 作为蓝牙控制器的想法。我编译并运行了一些 UWP 蓝牙 BLE 示例。micro:bit 被列出,但无法连接。解决这个问题可能是一个快速修复方案 [调整蓝牙COM端口,MakeCode 中的蓝牙设置,是否可以使用 MakeCode 中的资源管理器按钮设置配置文件] 或大量工作 [必须存在 Arduino 蓝牙到 PC,使用 Arduino IDE 添加扩展或完全不使用 MakeCode 进行机器人车控制]。我选择首先尝试一个有保证的解决方案,添加第二个 micro:bit 用于无线电通信,并通过串口连接到 PC,稍后将在 PC 控制器中讨论。
遥控:使用第二个 micro:bit 进行无线电控制,4 个面包板按钮或倾斜
有什么比一个 micro:bit 更有编程乐趣的呢?当然是用于无线电通信的第二个 micro:bit。有一些带有按钮的游戏手柄是为第二个 micro:bit 设计的,但这不太符合我的业余爱好。八年前的一个项目,我有一个面包板和一些按钮。我购买了一个从 micro:bit 控制器到面包板的插头,用于连接到面包板按钮。使用按钮 B,您可以切换使用面包板按钮或使用控制器 micro:bit 的倾斜或比例倾斜,因此面包板是可选的。您也可以选择摇杆代替按钮。如果您使用倾斜并且不想使用 USB 数据线供电,您可以购买一个小型电源板,您可以将其连接到 micro:bit。
所以我们有一个机器人 micro:bit (1) 和一个控制器 micro:bit (2),所以我们有两个带有无线电通信的不同程序。有关详细信息,请再次参见第一个 Zip 文件中的 .hex 文件。在一个新项目中,无线电扩展始终存在。让我们使用倾斜进行这个机器人舞蹈。
机器人接收程序(第一个程序)非常简单。首先选择一个无线电组,我们选择 5,它必须与控制器程序中的相同。onRecievedValue
事件用于设置电机速度,这些速度稍后在 forever
循环中用于使用 Maqueen.motorRun
设置电机速度。这里,单个 LED 被点亮,以便在没有机器人的情况下直观地指示电机速度。没有使用纠错或速度安全措施。请注意,它将只处理标记为“sL
”和“sR
”的值,它们是左右电机速度的首字母缩写。
radio.onReceivedValue(function (name, value) {
// serial.writeValue(name, value)
if (name == "sL") {
mLSpeed = value
}
if (name == "sR") {
mRSpeed = value
}
})
无线电控制器程序(第二个程序)计算电机速度并通过无线电发送给机器人程序。控制器程序有 3 种模式/选择,可以通过 micro:bit 的按钮 B 进行选择。第一种模式是使用面包板上的按钮。按钮只需连接到地线即可。顺便说一下,只有 3 个引脚空闲,但也可以通过使用面包板按钮在其引脚上调用按钮 A 的按下。从按钮状态计算速度与蓝牙应用控制的示例类似。另外两种模式使用控制器 micro:bit 的倾斜。倾斜到速度的计算是从前面提到的网站复制的。
遥控:带额外 micro:bit 的 PC C# 程序
如前所述,我们的第一次尝试是直接使用蓝牙连接到 PC,但我们无法连接到 micro:bit,这可以在以后探索。我们在此描述的方法直接成功,尽管硬件设置有点复杂,并且需要额外的 micro:bit。C# 程序是第一个原型。.hex 文件和 C# 的源代码在第二个 Zip 中。
设置是这样的:我们有一个 micro:bit 和机器人的无线电接收程序 (1)。接下来,我们有一个 micro:bit 和控制器的程序 (2)。这个程序通过无线电向机器人发送指令,并通过 USB 线通过串口从 PC 接收指令。最后,我们有一个带有一些按钮的 PC C# 程序 (3)。
机器人程序 (1) 与之前的机器人程序相同。它监听无线电速度指令(图 9)并设置电机速度。
micro:bit 控制器 (2) 使用 MakeCode 无线电扩展将速度命令通过无线电发送给 (1),这已经过测试。但是,速度由来自 PC (3) 的命令通过 MakeCode 串行扩展确定。目前,控制器不需要向 PC 方向进行通信,但为了将来使用和测试,这也已添加。我们将使用以 <CR> 和 <LF> 终止的行。
控制器程序以 2 秒的间隔通过串口向 PC 程序发送一个包含数字 0..9 的字符串。如果 C# 程序连接到端口,它将显示这些字符串,作为连接成功的证据。为了调试,控制器将接收到的字符串连同一些额外的头部和尾部字符发送回 C# 程序。如果它收到命令,它会将命令通过无线电发送给机器人程序,但也会将字符串连同不同的头部和尾部字符发送回 PC。将接收到的行直接通过无线电发送给机器人不起作用。我决定暂时不更改机器人程序,但控制器 (2) 现在会解释接收到的行,并以已测试的方式通过 radio.writevalue("sL",mSpeed)
将结果通过无线电发送。
再次注意,对于简单的遥控器,我们不使用任何协议或错误纠正。我们也没有捕获任何 IO 错误,尚未研究。我们通过目视检查程序 (3) 中接收到的字符串进行测试,最后使用了按钮(使用不多)。我没有彻底测试生成文本文件、发送/接收,最后比较文件。
我们首先描述 PC 程序 (3),然后深入探讨串口代码。参见图 10 中的用户界面。左侧列用于连接端口、发送字符串和显示接收数据。选择一个端口,使用“打开”按钮。如果成功且 micro:bit 控制器已连接,我们每 2 秒会看到一个接收到的测试字符串。可以通过按下“发送”按钮发送字符串。请参阅代码讨论,以防连接端口出错:停止使用该端口的其他程序,可选地重新连接 USB 电缆。“箭头”按钮向控制器发送速度命令。在遥远的未来,这个虚假的图像可能会被一个 WebView 替换,显示流式网络摄像头服务器的 URL。该程序可以通过在端口列表中显示更多信息(而不仅仅是名称)来改进。为了进行实验,可以引入自动连接到默认端口的功能。
我们有一个没有命令的 ViewModel,但我们将主要使用代码隐藏来实现这个原型。串口部分放在一个不同的文件中。我们现在将深入探讨串口编程的几个方面。最初的想法是,传入数据有几种场景:在单独的线程/进程中连续(异步)读取,使用计时器定期读取,或者在数据传入时对事件作出反应。
请注意,我对线程、任务、异步操作或串口一无所知。我结合了一些示例,它似乎有效,请报告改进。我选择使用 SerialPort.DataReceived
事件,参见图 11。ReadExisting()
已缓冲,不应留下任何字符。在处理旧事件时,是否可以调用新事件,我们是否可以在这种情况下使用信号量 WaitOne()
来阻塞它?目前,我尽快将接收到的字节转储到 BlockingCollection<string>
队列中,并使用 Dispatcher.Invoke
调用 QueueToLines
。Dispatcher.Invoke
无法放置在 ViewModel
中,因此 Receive
事件必须始终在 MainWindow.xaml.cs 的代码隐藏中定义。
public BlockingCollection<string> queue = new BlockingCollection<string>();
private void Receive(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
if (MainVm1.NotOpen) return;
// Collecting the characters received to our 'buffer' (string).
// ReadExisting buffers so not missed chars if no Errors
string received = MainVm1.sp.ReadExisting();
MainVm1.queue.Add(received);
Dispatcher.Invoke(DispatcherPriority.Send, new MainVm.UpdateDelegate(MainVm1.QueueToLines));
}
操作系统决定何时调用事件,因此行在接收到的字符串中任意分段。队列条目可以由多行或截断的行部分组成。图 12 给出了一个代码片段,用于重构原始行并将其放入界面中显示的 RecievedLines
中。
public void QueueToLines()
{
string item1;
string combi = leftover;
leftover = "";
while (queue.TryTake(out item1)) { combi = combi + item1;}
if (combi.Contains("\n"))
{
string[] lines =
combi.Split(new[] { "\r\n", "\n" }, StringSplitOptions.RemoveEmptyEntries);
int i = 0;
foreach (var line in lines)
{
if (i == lines.Count() - 1)
{
// is the last line termiated by /n??
if (combi[combi.Length - 1] == (char)'\n')
{
RecievedLines.Add(line);
leftover = "";
}
else
{
leftover = leftover + line;
}
}
else
{
RecievedLines.Add(line);
}
i++;
}
}
else
{
// collect leftovers until we have a sentence /n ...
leftover = leftover + combi;
}
}
未来计划,在 W10 PC 上的 C# 中进行智能处理??
发布有点仓促,但我还是想在 CodeProject 上提及新发布的 micro:bit V2.0。我有两个计划。
- 在 PC 控制程序中添加语音命令。这不是因为实用或有用(否则 XAML 中会有语音控制按钮),而是因为以这种方式移动机器人很酷。我相信微软有一个特殊的语音识别 SDK,现在它在 Azure 认知服务中。
- 我们跳过了从 micro:bit 到 PC 的直接蓝牙通信,但我们可以再看看它。
理论上,一个网络摄像头服务器可以提供从机器人车到 PC 的视觉流。我们可以在网页上看到机器人摄像头看到了什么。受 ESP 32 摄像头板的启发,我希望在我的老式 Windows PC 环境中进行更智能的处理。修改摄像头程序似乎是可能的,但这不是我的专长。一个简单的任务可以是发现四块不同颜色编码的乐高积木堆叠,检测基本几何形状或条形码。
ESP 32 摄像头在开发板(USB 数据线 - Arduino - ESP 板)上工作正常,但使用 2 节电池连接到小型机器人车时却不行。实验和购买电容器、紧凑型升压器或电源超出了我的硬件能力和业余爱好抱负,所以我必须重新考虑我的下一步行动。
历史
- 2020 年 11 月 9 日:初始版本