前言

Makey Makey 是个令人惊叹的项目。

它将自己描述为:

21世纪的发明套件

将世界连接到您的计算机

我们看看它的使用场景:

手工与编码。用橡皮泥或铅笔这样的日常材料设计你自己的控制器:

水果乐器。世上到处是导电物体和材料。用水果和办公用品制作音乐电路:

自制传感器。利用铝箔、硬币和回形针,像科学家一样发明传感器。

Makey Makey 是如此简单, 以至于你可以完全专注于自己的想法!

Makey Makey 是如此通用, 以至于你可以将整个世界连接到您的计算机!

好的创作工具, 鼓励你去做自己感兴趣的事情, 它给予你支持而不是负担。就此而言, Makey Makey 拥有与 Scratch, MicroBlocks 一样出色的品质。

想要更多

凡有的,还要加给他,叫他有余; – 马太效应

Makey Makey 拥有如此丰富的可能性, 以至于我们想要更多 !

喜欢 Makey Makey 的人经常会提出这 3 种需求:

  • 能够不用线连在电脑上吗? 这样就更方便构建跳舞毯等项目
  • 能够不要在身上绑上接地线吗?
  • 能够便宜一点吗! (淘宝上要 400 多块钱)

可以可以可以!

我们可以使用 MicroBlocks 对 ESP32 编程, 制作一个 20 块钱的 无线 Makey Makey, 它甚至不需要接地线

玩起来

安装定制固件

提醒: 计算机会记住连接过的蓝牙键盘。如果你刷过这个固件, 以后刷其他固件,可能会无法连接 MicroBlocks IDE, 因为设备被计算机当成了蓝牙键盘. 你需要在计算机中"忘记"这个蓝牙键盘,在 iOS 上是忽略此设备


首先将 esp32-ble-keyboard 固件(https://wwj718.github.io/post/img/esp32-ble-keyboard-20231118.bin) 刷入 ESP32 板子(我用的是 ESP32 DEVKIT V1, 你也可以在其他 ESP32 板子上使用)。

通过 MicroBlocks 的 显示高级积木 > 从 URL 安装 ESP 固件 来刷入固件。

安装完成后,打开 这个程序

运行程序之后, 应该就能够搜索到蓝牙键盘: ESP32 Keyboard

ESP32 的以下引脚支持 touch: 2, 4, 12, 13, 14, 15, 27, 32, 33

如果你在操作中遇到问题, 可参考周六分享会的视频

FAQ

如何编译到其他 MicroBlocks 支持的板子里?

以 m5stack 为例, 原先的配置:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
[env:m5stack]
platform = espressif32
board = m5stack-core-esp32
board_build.partitions = noota_3g.csv
lib_deps =
	Adafruit GFX Library
	571 ; Adafruit ILI9341
	Adafruit BusIO
	WebSockets
	256dpi/MQTT
lib_ignore =
	Adafruit STMPE610
	Adafruit seesaw Library
	Adafruit TouchScreen

包含蓝牙键盘功能的配置:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
[env:m5stack]
platform = espressif32
board = m5stack-core-esp32
board_build.partitions = no_ota.csv
build_flags = -D BLE_KEYBOARD -D USE_NIMBLE
lib_deps =
	Adafruit GFX Library
	571 ; Adafruit ILI9341
	Adafruit BusIO
	WebSockets
	256dpi/MQTT
	t-vk/ESP32 BLE Keyboard@^0.3.2
	NimBLE-Arduino

lib_ignore =
	Adafruit STMPE610
	Adafruit seesaw Library
	Adafruit TouchScreen

使用 wifi 控制蓝牙键盘

这是周六分享会分享过程中,李老师和汤老师提出的问题。

示例项目

你可以使用另一个板子发送 WiFi Radio 消息, 也可以使用 Python 发送消息(microblocks_wifi_radio)。

如何将 esp32 作为蓝牙主机, 连接市面上的主流游戏手柄?

这超出了本文的范畴。

要做到这点, 可以通过将 Bluepad32 移植到 MicroBlocks vm 中, 具体而言, 需要移植的主要是这些代码

参考