電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>使用CircuitPython對Seeeduino Xiao進(jìn)行編程上午開源項目

使用CircuitPython對Seeeduino Xiao進(jìn)行編程上午開源項目

2022-11-18 | zip | 0.19 MB | 次下載 | 免費(fèi)

資料介紹

描述

想成為一只絕望的霸王龍,準(zhǔn)備好帶著喜悅和興奮去??探索奇妙的 2-D、8 位、二進(jìn)制彩色谷歌瀏覽器世界嗎?因此,請確保您每天鍛煉膝蓋以跟上高分。

該項目在MLH組織的Who Wants to be Hackionaire黑客馬拉松中獲得了 Digi-Key 頒發(fā)的最佳硬件黑客類別獎

第一步:零件

我使用 CircuitPython 對 Seeeduino Xiao 進(jìn)行了編程,但它也與 Arduino 兼容。您可以選擇任何支持 CircuitPython 的 ATSAMD21 微控制器板來完成這個項目。我選擇Xiao是因為它的體積很小,適合可穿戴項目。

注:對于通用 I/O 引腳:MCU 的工作電壓為 3.3V。連接到通用 I/O 引腳的電壓輸入高于 3.3V 可能會導(dǎo)致芯片損壞。
對于電源引腳:內(nèi)置的DC-DC轉(zhuǎn)換器電路能夠?qū)?V電壓變?yōu)?.3V,允許通過VIN-PIN和5V-PIN為設(shè)備提供5V電源。

Adafruit LIS3DH 是一款三軸加速度計,其庫支持 I2C 和 SPI,但我們將在此項目中使用 SPI 接口。該板的更新版本是黑色的, 兩側(cè)都有 STEMMA QT 連接器SparkFun Qwiic I2C 連接器。

我最初在面包板上制作了我的項目,然后我焊接在 PCB 上的母頭上以改善外形。如果你愿意,你可以直接焊接電路板,因為它有齒形引腳并且不會太突出。

第二步:概念

所以這個項目主要包括3個部分:

  • 傳感器(LIS3DH 加速度計)
  • 邏輯單元(ATSAMD21)
  • 輸出單元LED 和鍵盤)

加速度計用于檢測由于運(yùn)動引起的人的加速度變化。當(dāng)一個人跳起來或蹲下時,他/她會產(chǎn)生相對加速度來這樣做。我們通過取 X、Y 和 Z 軸的絕對值來測量加速度的變化,因為無論我們向上還是向下,變化都是正的。

項目的輸出單元發(fā)送命令按下向上箭頭鍵,紅色 LED 亮 500 毫秒。同樣,如果它檢測到一只鴨子,板子按下向下箭頭鍵并打開藍(lán)色 LED 500 毫秒。print在兩者之間添加了一些語句,但這僅用于調(diào)試目的,可以忽略。由于Seeeduino Xiao 在撰寫本文時不支持 Mu 的串行控制臺,因此您可以使用PuTTY或 Arduino 的串行監(jiān)視器之類的應(yīng)用程序來查看 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)

在源代碼中,我們首先導(dǎo)入板子內(nèi)置的必要的標(biāo)準(zhǔn)庫,如time、 。然后要使用其他硬件,我們手動添加和庫,以使功能正常工作。我們使用串行外設(shè)接口(SPI)連接在加速度計和微控制器板之間進(jìn)行通信,因此我為此設(shè)置了引腳配置。boarddigitalioadafruit_bus_deviceadafruit_hidadafruit_lis3dh

然后我們初始化我們將使用什么樣的鍵盤,這是美國標(biāo)準(zhǔn)布局。有 1 秒的延遲,以便在程序開始進(jìn)一步執(zhí)行之前準(zhǔn)備好。ledj(紅色 LED)用于指示何時發(fā)生跳躍,而ledd(藍(lán)色 LED)用于指示何時發(fā)生鴨子。

while循環(huán)由需要連續(xù)運(yùn)行的所有邏輯組成。該板通過檢查哪個軸的值在重力常數(shù)(g ~ 9.8 m/s2)范圍內(nèi)來檢查默認(rèn)位置。然后它計算加速度的變化是否大于 10(大約 g)。此時,您可以根據(jù)自己的要求查看和校準(zhǔn) if 條件下的值。如果pos值大于 11,則執(zhí)行跳轉(zhuǎn)(向上箭頭和紅色 LED),如果小于 8,則執(zhí)行鴨子(向下箭頭和藍(lán)色 LED)。

如果您還沒有,請開始使用CircuitPython 。您需要在 PC 上安裝Mu (CircuitPython 的首選編輯器),并確保您正在使用的板上運(yùn)行最新版本的 CircuitPython。更多信息可以在這里、那里任何地方找到。

現(xiàn)在從 GitHub 存儲庫下載 code.py 和 lib.zip 后,解壓縮 lib.zip 并將 lib 文件夾復(fù)制到電路板的 CIRCUITPY 驅(qū)動器中。斷開 Internet 并打開 Google Chrome T-Rex 游戲。

現(xiàn)在將code.py復(fù)制到驅(qū)動器的父目錄中。

注意:一旦您將 code.py 復(fù)制到 CIRCUITPY 驅(qū)動器中,代碼就會開始執(zhí)行,因此請關(guān)閉您認(rèn)為重要的窗口,否則它們可能會損壞。因為項目將控制向上和向下箭頭鍵。

第四步:接線

?
?
?
pYYBAGN17WyAT6cfAAF4UmUT5Ds262.png
?
1 / 2 ?示意圖
?

上傳代碼后,斷開電路板并將組件連接到面包板上,如上圖所示。Xiao 和 LIS3DH 之間的連接非常簡單:

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

將紅色 LED ( ledj) 的正極引線通過 220 歐姆電阻連接到引腳 D4,藍(lán)色 LED ( ledd) 的正極引線通過 220 歐姆電阻連接到引腳 D0。將 LED 的接地線連接到公共 GND。

你完成了!

pYYBAGN17XKAA5xuAA1z6-ui5c430.jpeg
焊接 PCB 連接
?

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

?

您可以將此設(shè)備佩戴在腰部或腰部以上,以便 T-Rex 跟蹤您的動作。您還可以像我一樣將組件焊接在通用 PCB 上以改善外形尺寸并為其制作一個案例。該項目仍然使用 USB 數(shù)據(jù)線為計算機(jī)供電并與計算機(jī)交互,因此我計劃改用藍(lán)牙,并會嘗試改善交互超時。很快,里面的霸王龍就會擺脫束縛,四處游蕩,跳躍并發(fā)瘋。

?


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
  2. 1.06 MB  |  532次下載  |  免費(fèi)
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費(fèi)
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費(fèi)
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費(fèi)
  9. 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費(fèi)
  11. 6迪文DGUS開發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費(fèi)
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費(fèi)
  15. 8FP5207XR-G1中文應(yīng)用手冊
  16. 1.09 MB  |  178次下載  |  免費(fèi)

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費(fèi)
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費(fèi)
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費(fèi)
  7. 4開關(guān)電源設(shè)計實例指南
  8. 未知  |  21549次下載  |  免費(fèi)
  9. 5電氣工程師手冊免費(fèi)下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費(fèi)
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費(fèi)
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費(fèi)
  15. 8《LED驅(qū)動電路設(shè)計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191187次下載  |  免費(fèi)
  13. 7十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)