使用CircuitPython對(duì)Seeeduino Xiao進(jìn)行編程上午開源項(xiàng)目
資料介紹
描述
想成為一只絕望的霸王龍,準(zhǔn)備好帶著喜悅和興奮去??探索奇妙的 2-D、8 位、二進(jìn)制彩色谷歌瀏覽器世界嗎?因此,請(qǐng)確保您每天鍛煉膝蓋以跟上高分。
該項(xiàng)目在MLH組織的Who Wants to be Hackionaire黑客馬拉松中獲得了 Digi-Key 頒發(fā)的最佳硬件黑客類別獎(jiǎng)
第一步:零件
我使用 CircuitPython 對(duì) Seeeduino Xiao 進(jìn)行了編程,但它也與 Arduino 兼容。您可以選擇任何支持 CircuitPython 的 ATSAMD21 微控制器板來(lái)完成這個(gè)項(xiàng)目。我選擇Xiao是因?yàn)樗捏w積很小,適合可穿戴項(xiàng)目。
注:對(duì)于通用 I/O 引腳:MCU 的工作電壓為 3.3V。連接到通用 I/O 引腳的電壓輸入高于 3.3V 可能會(huì)導(dǎo)致芯片損壞。
對(duì)于電源引腳:內(nèi)置的DC-DC轉(zhuǎn)換器電路能夠?qū)?V電壓變?yōu)?.3V,允許通過(guò)VIN-PIN和5V-PIN為設(shè)備提供5V電源。
Adafruit LIS3DH 是一款三軸加速度計(jì),其庫(kù)支持 I2C 和 SPI,但我們將在此項(xiàng)目中使用 SPI 接口。該板的更新版本是黑色的, 兩側(cè)都有 STEMMA QT 連接器或SparkFun Qwiic I2C 連接器。
我最初在面包板上制作了我的項(xiàng)目,然后我焊接在 PCB 上的母頭上以改善外形。如果你愿意,你可以直接焊接電路板,因?yàn)樗旋X形引腳并且不會(huì)太突出。
第二步:概念
所以這個(gè)項(xiàng)目主要包括3個(gè)部分:
加速度計(jì)用于檢測(cè)由于運(yùn)動(dòng)引起的人的加速度變化。當(dāng)一個(gè)人跳起來(lái)或蹲下時(shí),他/她會(huì)產(chǎn)生相對(duì)加速度來(lái)這樣做。我們通過(guò)取 X、Y 和 Z 軸的絕對(duì)值來(lái)測(cè)量加速度的變化,因?yàn)闊o(wú)論我們向上還是向下,變化都是正的。
項(xiàng)目的輸出單元發(fā)送命令按下向上箭頭鍵,紅色 LED 亮 500 毫秒。同樣,如果它檢測(cè)到一只鴨子,板子按下向下箭頭鍵并打開藍(lán)色 LED 500 毫秒。我print
在兩者之間添加了一些語(yǔ)句,但這僅用于調(diào)試目的,可以忽略。由于Seeeduino Xiao 在撰寫本文時(shí)不支持 Mu 的串行控制臺(tái),因此您可以使用PuTTY或 Arduino 的串行監(jiān)視器之類的應(yīng)用程序來(lái)查看 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)庫(kù),如time
、 。然后要使用其他硬件,我們手動(dòng)添加和庫(kù),以使功能正常工作。我們使用串行外設(shè)接口(SPI)連接在加速度計(jì)和微控制器板之間進(jìn)行通信,因此我為此設(shè)置了引腳配置。board
digitalio
adafruit_bus_device
adafruit_hid
adafruit_lis3dh
然后我們初始化我們將使用什么樣的鍵盤,這是美國(guó)標(biāo)準(zhǔn)布局。有 1 秒的延遲,以便在程序開始進(jìn)一步執(zhí)行之前準(zhǔn)備好。ledj
(紅色 LED)用于指示何時(shí)發(fā)生跳躍,而ledd
(藍(lán)色 LED)用于指示何時(shí)發(fā)生鴨子。
主while
循環(huán)由需要連續(xù)運(yùn)行的所有邏輯組成。該板通過(guò)檢查哪個(gè)軸的值在重力常數(shù)(g ~ 9.8 m/s2)范圍內(nèi)來(lái)檢查默認(rèn)位置。然后它計(jì)算加速度的變化是否大于 10(大約 g)。此時(shí),您可以根據(jù)自己的要求查看和校準(zhǔn) if 條件下的值。如果pos
值大于 11,則執(zhí)行跳轉(zhuǎn)(向上箭頭和紅色 LED),如果小于 8,則執(zhí)行鴨子(向下箭頭和藍(lán)色 LED)。
如果您還沒(méi)有,請(qǐng)開始使用CircuitPython 。您需要在 PC 上安裝Mu (CircuitPython 的首選編輯器),并確保您正在使用的板上運(yùn)行最新版本的 CircuitPython。更多信息可以在這里、那里和任何地方找到。
現(xiàn)在從 GitHub 存儲(chǔ)庫(kù)下載 code.py 和 lib.zip 后,解壓縮 lib.zip 并將 lib 文件夾復(fù)制到電路板的 CIRCUITPY 驅(qū)動(dòng)器中。斷開 Internet 并打開 Google Chrome T-Rex 游戲。
現(xiàn)在將code.py復(fù)制到驅(qū)動(dòng)器的父目錄中。
注意:一旦您將 code.py 復(fù)制到 CIRCUITPY 驅(qū)動(dòng)器中,代碼就會(huì)開始執(zhí)行,因此請(qǐng)關(guān)閉您認(rèn)為重要的窗口,否則它們可能會(huì)損壞。因?yàn)轫?xiàng)目將控制向上和向下箭頭鍵。
第四步:接線
上傳代碼后,斷開電路板并將組件連接到面包板上,如上圖所示。Xiao 和 LIS3DH 之間的連接非常簡(jiǎn)單:
- 板 3V至傳感器 Vin
- 板 GND到傳感器 GND
- 板 SCK到傳感器 SCL
- 板 MOSI到傳感器 SDA
- 板 MISO到傳感器 SDO
- 板 D5到傳感器 CS
- 板 D6到傳感器 INT
將紅色 LED ( ledj
) 的正極引線通過(guò) 220 歐姆電阻連接到引腳 D4,藍(lán)色 LED ( ledd
) 的正極引線通過(guò) 220 歐姆電阻連接到引腳 D0。將 LED 的接地線連接到公共 GND。
你完成了!
第五步:完成。下一步是什么?
您可以將此設(shè)備佩戴在腰部或腰部以上,以便 T-Rex 跟蹤您的動(dòng)作。您還可以像我一樣將組件焊接在通用 PCB 上以改善外形尺寸并為其制作一個(gè)案例。該項(xiàng)目仍然使用 USB 數(shù)據(jù)線為計(jì)算機(jī)供電并與計(jì)算機(jī)交互,因此我計(jì)劃改用藍(lán)牙,并會(huì)嘗試改善交互超時(shí)。很快,里面的霸王龍就會(huì)擺脫束縛,四處游蕩,跳躍并發(fā)瘋。
?
- Lyapunov分形與Seeeduino Wio終端開源
- 如何使用Seeeduino XIAO-LED閃爍
- 使用Seeeduino Xiao從汽車中獲取數(shù)據(jù)
- AI WB2和XIAO RP2040組合開源
- 基于Seeeduino XIAO的血氧心率計(jì) 2次下載
- MakerDiary NRF52840上的CircuitPython
- Seeeduino XIAO擴(kuò)展板超聲波距離傳感器開源分享
- 使用Seeeduino XIAO和火焰?zhèn)鞲衅?b class="flag-6" style="color: red">進(jìn)行火災(zāi)檢測(cè)
- Seeeduino XIAO氣象站使用擴(kuò)展板
- 串行PiC編程器開源項(xiàng)目
- USB編程器開源項(xiàng)目
- 三菱PLC編程實(shí)例項(xiàng)目例程 14次下載
- 三菱PLC編程實(shí)例項(xiàng)目例程之輸送機(jī)機(jī)械手 29次下載
- 基于Arduino硬件光控?zé)糁谱髻Y料 6次下載
- Seeeduino XIAO擴(kuò)展板的電路原理圖 45次下載
- 基于XIAO ESP32S3 sense開發(fā)板的小型相機(jī)設(shè)計(jì) 135次閱讀
- 基于XIAO SAMD21開發(fā)板的多功能筆筒設(shè)計(jì)方案 87次閱讀
- 基于XIAO SAMD21開發(fā)板的數(shù)字鍵盤制作方案 125次閱讀
- 關(guān)于FPGA的開源項(xiàng)目介紹 1161次閱讀
- 基于XIAO的圖像分類處理項(xiàng)目 1118次閱讀
- 使用Rust和Nomad進(jìn)行開源游戲服務(wù)器管理 517次閱讀
- 優(yōu)秀的IC/FPGA開源項(xiàng)目:偽紅外圖像處理 1949次閱讀
- 怎么上手 PR 流程?如何開始參與開源項(xiàng)目? 1470次閱讀
- 如何使用Travis CI對(duì)Github項(xiàng)目進(jìn)行持續(xù)集成來(lái)提升項(xiàng)目開發(fā)的效率 732次閱讀
- 全年開源項(xiàng)目的盤點(diǎn)和總結(jié) 3231次閱讀
- 基于Altium Designer的OSHw開源項(xiàng)目 3609次閱讀
- 2018 年 2 月份 GitHub 上最熱門的開源項(xiàng)目 4554次閱讀
- 最受歡迎的七種商用開源編程語(yǔ)言的全面報(bào)告 6263次閱讀
- FAST:基于FPGA的SDN交換機(jī)開源項(xiàng)目(一) 4531次閱讀
- 11個(gè)機(jī)器學(xué)習(xí)開源項(xiàng)目 2767次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來(lái)的未來(lái)-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊(cè)
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論
查看更多