文章目录
- 背景介绍
- 产品应用
- 动手实践
- 环境安装
- 工具安装
- 更新 setuptools 到最新版本
- 安装 toio.py
- 安装 bleak
- 安装 ipykernel
- 检查是否安装成功
- 定义电子小企鹅的功能和逻辑
- 小企鹅移动
- 小企鹅脸变色
- 小企鹅尖叫
- 综合实现
- 总结
背景介绍
索尼推出的toio™ 是一款创新的游戏玩具,结合了物理和数字元素,通过编程和物理互动,可以提供丰富多样的游戏和应用体验,激发用户的创造力和想象力。无论是儿童还是成年人,都可以通过 toio™ 探索和享受其中的乐趣。
toio™ 具有开放性和可塑性的特点,它不仅适用于进阶用户和专业人士,甚至对编程新手也非常友好,可以为用户提供多样化的 STEAM 学习和编程开发体验。
toio™创意基础套件包括:一个toio™核心Q宝充电器和两个立方体小机器人toio™核心Q宝。
图中的两个小型的乒乓球大小的白色立方体,我们称之为核心Q宝。核心Q宝包含轮子和传感器,可以进行移动和检测周围环境。它作为一个开源机器人,可以提供广泛的应用和玩法创作空间。
产品应用
toio™ 通过内置的加速度计、陀螺仪、距离传感器等提供了丰富的交互功能。用户可以通过编程或者与核心Q宝的物理互动来控制它们。
●toio™ 支持编程,用户可以使用编程语言(如 Python)或可视化编程工具来创建自己的应用程序和游戏。
●toio™ 提供了多种游戏和应用程序,涵盖了不同的领域,如迷宫、赛车、音乐、编程挑战等。
●多个 toio™ 立方体可以进行群体互动,用户可以将它们连接起来形成复杂的场景和玩法。
●toio™ 提供了一种有趣和教育性的学习工具,可以帮助儿童培养解决问题、创造力和合作精神等技能。
动手实践
我是一个父亲,我认为利用toio™ 核心 Q 宝可以设计一款小企鹅儿童玩具,小企鹅儿童玩具可以通过孩子的说话指令进行移动、发出叫声,并且可以利用toio™ 的灯光来改变小企鹅的表情颜色锻炼孩子的专注力,还可以使用Python来编写代码,控制小企鹅移动的速度和发声的频率,实现个性化的创作体验,我希望为我的孩子设置独一无二的游戏体验。
环境安装
我们使用的是 Python 语言,我们需要安装一下 toio™ 运行所需要的环境:
1.首先需要的系统是Windows10(21H2)及以上版本;
2.需要安装Python(Version 3.11 or later);
工具安装
我使用的编译器是IDEA,直接在控制台的 Terminal 执行的命令:
更新 setuptools 到最新版本
setuptools库的前身是distutils(一个python标准库),setuptools本身不是标准库,所以需要自行安装。setuptools提供的主要的功能有:
●python库的打包分发
●依赖包安装与版本管理
●python环境限制
●生成脚本
●c/c++ 拓展
执行命令:
python -m pip install setuptools --upgrade
安装 toio.py
toio.py是一个用于控制 toio™ 立方体玩具的 Python 库。通过 toio.py,您可以编写 Python 程序来控制 toio 玩具的移动、声音和灯光等功能。
执行命令
python -m pip install toio-py --upgrade
安装 bleak
Bleak 是一款 BLE GATT客户端软件,能够连接到充当 GATT 服务器的 BLE 设备。它旨在提供一个异步的、跨平台的 Python API 来连接和通信。
执行命令
python -m pip install bleak
安装 ipykernel
ipykernel是一个用于在Jupyter 中运行Python代码的包,它可以将Python代码转化为可以在IPython内核上运行的格式。
执行指令
python -m pip install ipykernel
安装时间较长,请耐心等待一下😃
检查是否安装成功
执行指令
python -c "import toio.scanner; print('ok')"
如果您看到ok,则toio.py已成功安装。如果收到ImportError,则表示安装不起作用。如果您尝试再次安装toio.py,但它不起作用,请尝试重新安装Python。
定义电子小企鹅的功能和逻辑
●利用其可以移动的特性,让小企鹅完成移动的指令;
●利用其灯光变色的特性,让小企鹅的表情颜色进行变换;
●利用其发声的特性,让小企鹅发出叫声与孩子互动;
小企鹅移动
首先我们来定义小企鹅移动的逻辑:让它实现圆周运动,代码如下:
def move():
targets = ((30, 30), (30, -30), (-30, -30), (-30, 30), (30, 30))
print("** 激活Q宝")
with SimpleCube() as cube:
print("** 连接")
for target in targets:
target_pos_x, target_pos_y = target
print(f"move to ({target_pos_x}, {target_pos_y})")
success = cube.move_to(speed=70, x=target_pos_x, y=target_pos_y)
print(f"arrival: {success}")
if not success:
print("Position ID missed")
break
cube.sleep(0.5)
print("** 断开连接")
打印日志如下:
运行视频如下:
圆周运动
小企鹅脸变色
我们利用Q宝的灯光变色的特性来模拟一下小企鹅表情颜色的变化,让他的灯光由白色变为红色,接着变为绿色,最后变为蓝色。代码如下:
def color():
print("** 激活Q宝")
with SimpleCube() as cube:
print("** 连接")
print("** CUBE NAME:", cube.get_cube_name())
print("** WHITE")
cube.turn_on_cube_lamp(r=255, g=255, b=255, duration=2)
print("** RED")
cube.turn_on_cube_lamp(r=255, g=0, b=0, duration=2)
print("** GREEN")
cube.turn_on_cube_lamp(r=0, g=255, b=0, duration=2)
print("** BLUE")
cube.turn_on_cube_lamp(r=0, g=0, b=255, duration=2)
print("** OFF")
cube.turn_off_cube_lamp()
print("** 断开连接")
打印日志如下:
运行视频如下:
颜色变色
小企鹅尖叫
我们利用Q宝发声音的的特性来模拟一下小企鹅的叫声,代码如下:
def sound():
print("** 激活Q宝")
with SimpleCube() as cube:
print("** 连接")
print("CUBE NAME:", cube.get_cube_name())
cube.play_sound(note=80, duration=25, wait_to_complete=False)
cube.sleep(2)
cube.play_sound(note=70, duration=20, wait_to_complete=False)
cube.play_sound(note=70, duration=20, wait_to_complete=False)
cube.play_sound(note=70, duration=20, wait_to_complete=False)
cube.play_sound(note=70, duration=20, wait_to_complete=False)
cube.play_sound(note=70, duration=20, wait_to_complete=False)
cube.play_sound(note=70, duration=20, wait_to_complete=False)
cube.sleep(2)
cube.play_sound(note=80, duration=22, wait_to_complete=False)
cube.play_sound(note=80, duration=22, wait_to_complete=False)
cube.play_sound(note=80, duration=22, wait_to_complete=False)
cube.play_sound(note=80, duration=22, wait_to_complete=False)
cube.play_sound(note=80, duration=22, wait_to_complete=False)
cube.play_sound(note=80, duration=22, wait_to_complete=False)
cube.play_sound(note=80, duration=22, wait_to_complete=False)
cube.play_sound(note=80, duration=22, wait_to_complete=False)
cube.play_sound(note=80, duration=22, wait_to_complete=False)
cube.sleep(2)
print("stop")
cube.stop_sound()
print("** 断开连接")
运行视频如下:
声音
综合实现
我们把上边的三个特性结合起来,模拟小企鹅运动、表情变化、发声来实现最终的小玩具。让它先做圆周运动,然后发出叫声,最后表情变为红色,一直循环往复与小朋友进行互动。
def test():
print("** ACTIVATE")
targets = ((30, 30), (30, -30), (-30, -30), (-30, 30), (30, 30))
with SimpleCube() as cube:
print("** CONNECTED")
# 游戏主循环
while True:
for target in targets:
target_pos_x, target_pos_y = target
print(f"move to ({target_pos_x}, {target_pos_y})")
success = cube.move_to(speed=70, x=target_pos_x, y=target_pos_y)
print(f"arrival: {success}")
if not success:
print("Position ID missed")
break
cube.sleep(0.5)
# 进行互动动作
cube.play_sound(note=80, duration=25, wait_to_complete=False)
# 稍微延时一下,控制互动频率
cube.sleep(0.5)
cube.turn_on_cube_lamp(r=255, g=0, b=0, duration=2)
print("** END")
以上就是我自己实现的一个简单的可以与孩子进行互动的小企鹅玩具的全过程,如果可以给核心Q宝做一个小企鹅的外观,那就在合适不过了。
总结
文章的最后,我们来总结下toio可编程性的特点吧:
●具有造性和创新性:通过编程 toio 玩具,可以释放孩子的创造力并创造出各种有趣和独特的交互体验。
●具有学习编程的乐趣:toio 提供了一个很好的学习平台,使初学者对编程感兴趣。无论是儿童还是成人,通过编写程序来控制 toio 玩具,可以激发对编程的热情,并帮助他们掌握编程基础。
●具有手眼协调和问题解决能力:通过编程 toio 玩具,孩子们需要使用逻辑思维和问题解决技巧来设计和实现各种功能。这有助于提高手眼协调能力、培养解决问题的能力和逻辑思维能力。
●联机游戏和合作项目:toio 玩具支持多个设备之间的联机连接,这意味着您可以创建多人游戏或合作项目。通过编程 toio 玩具,您可以与朋友、家人或同学一起合作,共同设计和实现有趣的互动体验。
●可以与其他平台集成:toio 提供了丰富的开发文档和 API,使其可以轻松地与其他平台和设备进行集成。您可以将 toio 玩具与虚拟现实、增强现实、机器人等技术相结合,创造出更加丰富和多样化的体验。
总之,toio 玩具的可编程性为用户提供了极大的创造和学习空间,可以充分激发大家的想象力,并促进编程和问题解决能力的发展。它是一个令人兴奋和有趣的工具,适合各个年龄段的人使用。看到这儿,你还不赶紧行动吗?