电子发烧友App

硬声App

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
电子发烧友网>电子资料下载>电子资料>使用CircuitPython对Seeeduino Xiao进行编程上午开源项目

使用CircuitPython对Seeeduino Xiao进行编程上午开源项目

2022-11-18 | zip | 0.19 MB | 次下载 | 免费

资料介绍

描述

想成为一只绝望的霸王龙,准备好带着喜悦和兴奋去​​探索奇妙的 2-D、8 位、二进制彩色谷歌浏览器世界吗?因此,请确保您每天锻炼膝盖以跟上高分。

该项目在MLH组织的Who Wants to be Hackionaire黑客马拉松中获得了 Digi-Key 颁发的最佳硬件黑客类别奖

第一步:零件

我使用 CircuitPython 对 Seeeduino Xiao 进行了编程,但它也与 Arduino 兼容。您可以选择任何支持 CircuitPython 的 ATSAMD21 微控制器板来完成这个项目。我选择Xiao是因为它的体积很小,适合可穿戴项目。

注:对于通用 I/O 引脚:MCU 的工作电压为 3.3V。连接到通用 I/O 引脚的电压输入高于 3.3V 可能会导致芯片损坏。
对于电源引脚:内置的DC-DC转换器电路能够将5V电压变为3.3V,允许通过VIN-PIN和5V-PIN为设备提供5V电源。

Adafruit LIS3DH 是一款三轴加速度计,其库支持 I2C 和 SPI,但我们将在此项目中使用 SPI 接口该板的更新版本是黑色的, 两侧都有 STEMMA QT 连接器SparkFun Qwiic I2C 连接器。

我最初在面包板上制作了我的项目,然后我焊接在 PCB 上的母头上以改善外形。如果你愿意,你可以直接焊接电路板,因为它有齿形引脚并且不会太突出。

第二步:概念

所以这个项目主要包括3个部分:

  • 传感器(LIS3DH 加速度计)
  • 逻辑单元(ATSAMD21)
  • 输出单元LED 和键盘)

加速度计用于检测由于运动引起的人的加速度变化。当一个人跳起来或蹲下时,他/她会产生相对加速度来这样做。我们通过取 X、Y 和 Z 轴的绝对值来测量加速度的变化,因为无论我们向上还是向下,变化都是正的。

项目的输出单元发送命令按下向上箭头键,红色 LED 亮 500 毫秒。同样,如果它检测到一只鸭子,板子按下向下箭头键并打开蓝色 LED 500 毫秒。print在两者之间添加了一些语句,但这仅用于调试目的,可以忽略。由于Seeeduino Xiao 在撰写本文时不支持 Mu 的串行控制台,因此您可以使用PuTTY或 Arduino 的串行监视器之类的应用程序来查看 X、Y 和 Z 轴的值。

第三步:理解代码

# code.py
"""
Project Name: Jump Yo' Rex
Author: Advik Singhania
Created On: 28th November, 2020; 07:48 PM IST

Make sure to copy the adafruit_hid library folder and
adafruit_lis3dh to the /lib folder of your CIRCUITPY drive.
I've connected a red LED to pin D4 to indicate jumps and
a blue LED to pin D0 to indicate ducks.
This source code has been tested for Seeeduino Xiao and can also work on CircuitPython supported boards.
"""

import time
import board
import digitalio
import busio
import adafruit_lis3dh
import usb_hid
from adafruit_hid.keyboard import Keyboard
from adafruit_hid.keyboard_layout_us import KeyboardLayoutUS
from adafruit_hid.keycode import Keycode

# Configurnig pins for the SPI connection:
spi = busio.SPI(board.SCK, board.MOSI, board.MISO)
cs = digitalio.DigitalInOut(board.D5)  # Set to appropriate CS pin!
int1 = digitalio.DigitalInOut(board.D6)  # Set to correct pin for interrupt!
lis3dh = adafruit_lis3dh.LIS3DH_SPI(spi, cs, int1=int1)

# Initializing Keyboard:
keyboard = Keyboard(usb_hid.devices)
keyboard_layout = KeyboardLayoutUS(keyboard)

time.sleep(1)

# Setting up LEDs for Jump(ledj) and Duck(ledd)
ledj = digitalio.DigitalInOut(board.D4)
ledj.direction = digitalio.Direction.OUTPUT
ledd = digitalio.DigitalInOut(board.D0)
ledd.direction = digitalio.Direction.OUTPUT

# Printing is for debugging, you can comment the print statements if you want.
print("Waiting for action...")
while True:
    ledj.value = False  # Turning Off LEDs
    ledd.value = False

    x, y, z = lis3dh.acceleration  # Getting values for the acceleration in x, y and z axes
    x, y, z = abs(x), abs(y), abs(z)  # Taking the absolute of the values since the change in relative acceleration will always be positive
    # print(x, y, z)

    # Setting up default position:
    if 8 < x < 10:
        pos = x
    elif 8 < z < 10:
        pos = z
    else:
        pos = y

    # Detecting jumps and ducks:
    if pos > 11:  # You can change these values according to your sensitivity
        print(x, y, z)
        keyboard.press(Keycode.UP_ARROW)  # "Press"...
        keyboard.release_all()
        print('Jumped')
        ledj.value = True
        time.sleep(0.5)
    elif pos < 8:  # You can change these values according to your sensitivity
        print(x, y, z)
        keyboard.press(Keycode.DOWN_ARROW)  # "Press"...
        print('Ducked')
        ledd.value = True
        time.sleep(0.5)
        keyboard.release_all()
        time.sleep(0.5)

    time.sleep(0.05)

在源代码中,我们首先导入板子内置的必要的标准库,如time、 。然后要使用其他硬件,我们手动添加和库以使功能正常工作。我们使用串行外设接口(SPI)连接在加速度计和微控制器板之间进行通信,因此我为此设置了引脚配置。boarddigitalioadafruit_bus_deviceadafruit_hidadafruit_lis3dh

然后我们初始化我们将使用什么样的键盘,这是美国标准布局。有 1 秒的延迟,以便在程序开始进一步执行之前准备好。ledj(红色 LED)用于指示何时发生跳跃,而ledd(蓝色 LED)用于指示何时发生鸭子。

while循环由需要连续运行的所有逻辑组成。该板通过检查哪个轴的值在重力常数(g ~ 9.8 m/s²)范围内来检查默认位置。然后它计算加速度的变化是否大于 10(大约 g)。此时,您可以根据自己的要求查看和校准 if 条件下的值。如果pos值大于 11,则执行跳转(向上箭头和红色 LED),如果小于 8,则执行鸭子(向下箭头和蓝色 LED)。

如果您还没有,请开始使用CircuitPython 。您需要在 PC 上安装Mu (CircuitPython 的首选编辑器),并确保您正在使用的板上运行最新版本的 CircuitPython。更多信息可以在这里、那里任何地方找到。

现在从 GitHub 存储库下载 code.py 和 lib.zip 后,解压缩 lib.zip 并将 lib 文件夹复制到电路板的 CIRCUITPY 驱动器中。断开 Internet 并打开 Google Chrome T-Rex 游戏。

现在将code.py复制到驱动器的父目录中。

注意:一旦您将 code.py 复制到 CIRCUITPY 驱动器中,代码就会开始执行,因此请关闭您认为重要的窗口,否则它们可能会损坏。因为项目将控制向上和向下箭头键。

第四步:接线

 
 
 
pYYBAGN17WyAT6cfAAF4UmUT5Ds262.png
 
1 / 2示意图
 

上传代码后,断开电路板并将组件连接到面包板上,如上图所示。Xiao 和 LIS3DH 之间的连接非常简单:

  • 板 3V传感器 Vin
  • 板 GND传感器 GND
  • 板 SCK传感器 SCL
  • 板 MOSI传感器 SDA
  • 板 MISO传感器 SDO
  • 板 D5传感器 CS
  • 板 D6传感器 INT

将红色 LED ( ledj) 的正极引线通过 220 欧姆电阻连接到引脚 D4,蓝色 LED ( ledd) 的正极引线通过 220 欧姆电阻连接到引脚 D0。将 LED 的接地线连接到公共 GND。

你完成了!

pYYBAGN17XKAA5xuAA1z6-ui5c430.jpeg
焊接 PCB 连接
 

第五步:完成。下一步是什么?

 

您可以将此设备佩戴在腰部或腰部以上,以便 T-Rex 跟踪您的动作。您还可以像我一样将组件焊接在通用 PCB 上以改善外形尺寸并为其制作一个案例。该项目仍然使用 USB 数据线为计算机供电并与计算机交互,因此我计划改用蓝牙,并会尝试改善交互超时。很快,里面的霸王龙就会摆脱束缚,四处游荡,跳跃并发疯。

 


下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1山景DSP芯片AP8248A2数据手册
  2. 1.06 MB  |  532次下载  |  免费
  3. 2RK3399完整板原理图(支持平板,盒子VR)
  4. 3.28 MB  |  339次下载  |  免费
  5. 3TC358743XBG评估板参考手册
  6. 1.36 MB  |  330次下载  |  免费
  7. 4DFM软件使用教程
  8. 0.84 MB  |  295次下载  |  免费
  9. 5元宇宙深度解析—未来的未来-风口还是泡沫
  10. 6.40 MB  |  227次下载  |  免费
  11. 6迪文DGUS开发指南
  12. 31.67 MB  |  194次下载  |  免费
  13. 7元宇宙底层硬件系列报告
  14. 13.42 MB  |  182次下载  |  免费
  15. 8FP5207XR-G1中文应用手册
  16. 1.09 MB  |  178次下载  |  免费

本月

  1. 1OrCAD10.5下载OrCAD10.5中文版软件
  2. 0.00 MB  |  234315次下载  |  免费
  3. 2555集成电路应用800例(新编版)
  4. 0.00 MB  |  33566次下载  |  免费
  5. 3接口电路图大全
  6. 未知  |  30323次下载  |  免费
  7. 4开关电源设计实例指南
  8. 未知  |  21549次下载  |  免费
  9. 5电气工程师手册免费下载(新编第二版pdf电子书)
  10. 0.00 MB  |  15349次下载  |  免费
  11. 6数字电路基础pdf(下载)
  12. 未知  |  13750次下载  |  免费
  13. 7电子制作实例集锦 下载
  14. 未知  |  8113次下载  |  免费
  15. 8《LED驱动电路设计》 温德尔著
  16. 0.00 MB  |  6656次下载  |  免费

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935054次下载  |  免费
  3. 2protel99se软件下载(可英文版转中文版)
  4. 78.1 MB  |  537798次下载  |  免费
  5. 3MATLAB 7.1 下载 (含软件介绍)
  6. 未知  |  420027次下载  |  免费
  7. 4OrCAD10.5下载OrCAD10.5中文版软件
  8. 0.00 MB  |  234315次下载  |  免费
  9. 5Altium DXP2002下载入口
  10. 未知  |  233046次下载  |  免费
  11. 6电路仿真软件multisim 10.0免费下载
  12. 340992  |  191187次下载  |  免费
  13. 7十天学会AVR单片机与C语言视频教程 下载
  14. 158M  |  183279次下载  |  免费
  15. 8proe5.0野火版下载(中文版免费下载)
  16. 未知  |  138040次下载  |  免费