www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 公眾號(hào)精選 > 嵌入式微處理器
[導(dǎo)讀]這款用于Raspberry Pi的DIY復(fù)古視頻游戲控制器既有趣又不難構(gòu)建,但需要一些時(shí)間。

作者寄語(yǔ):這款用于Raspberry Pi的DIY復(fù)古視頻游戲控制器既有趣又不難構(gòu)建,但需要一些時(shí)間。

偶爾,我會(huì)對(duì)80年代末和90年代童年時(shí)期玩過(guò)的電子游戲感到懷舊,雖然大多數(shù)舊電腦和游戲機(jī)早就不知道在哪里吃灰了,但我的Raspberry Pi可以重現(xiàn)我的“童年”。

我喜歡Raspbian中內(nèi)置的簡(jiǎn)單游戲,而開源的RetroPie項(xiàng)目幫助我將Raspberry Pi變成了一款先進(jìn)的復(fù)古游戲機(jī)。

但是,為了獲得更“給力”的體驗(yàn),我需要一個(gè)手感極佳的游戲手柄。市面上可選的USB游戲手柄和游戲桿非常多,但作為開源愛(ài)好者、制造商和工程師,我更喜歡自己定制。

所以,我制作了自己的簡(jiǎn)單開源硬件游戲手柄,我將其命名為ANAVI Play pHAT。我將它設(shè)計(jì)為Raspberry Pi的附加板,使用EEPROM  和我創(chuàng)建的用于映射鍵的設(shè)備二進(jìn)制覆蓋。


獲取游戲手柄按鈕和EEPROM


可以買到的“千奇百怪”的游戲手柄有些非常復(fù)雜,然而,使用我創(chuàng)建的設(shè)計(jì)制作類似于標(biāo)志性NES控制器的游戲手柄并不難。

游戲手柄使用八個(gè)“瞬發(fā)”按鈕(即,僅在按下時(shí)才有效的開關(guān)):用于移動(dòng)的四個(gè)輕觸開關(guān)(向上,向下,向左,向右),用于A和B的兩個(gè)輕觸按鈕,以及選擇和開始的兩個(gè)較小的按鈕。我使用了通孔輕觸開關(guān):六個(gè)6x6x4.3mm開關(guān)用于移動(dòng)和A和B按鈕,兩個(gè)3x6x4.3mm開關(guān)用于啟動(dòng)和選擇按鈕。

雖然游戲手柄的主要目的是玩復(fù)古游戲,但附加板足夠大,可以附加一些“高大上”的家庭自動(dòng)化功能,諸如監(jiān)控溫度、濕度、光線或氣壓,可以在不玩游戲時(shí)使用。我添加了三個(gè)插槽,用于將I2C傳感器連接到物理引腳3和5上的主I2C總線。

硬件設(shè)計(jì)中最有趣和最重要的部分是EEPROM(電可擦除可編程只讀存儲(chǔ)器)。通孔安裝的EEPROM更容易在面包板上閃爍并焊接到游戲手柄上。

MagPi雜志中的一篇文章推薦CAT24C32 EEPROM; 如果該模型不可用,請(qǐng)嘗試查找具有類似技術(shù)規(guī)格的模型。2014年之后發(fā)布的所有Raspberry Pi型號(hào)和版本(Raspberry Pi B +和更新版本)在物理引腳27和28上都有一個(gè)輔助I 2 C總線。

完成上面的硬件搭建,使用面包板檢查它是否正常工作。

創(chuàng)建印刷電路板


下一步是創(chuàng)建印刷電路板(PCB)設(shè)計(jì)并制造它。作為開源愛(ài)好者,我相信應(yīng)該使用免費(fèi)和開源軟件來(lái)創(chuàng)建開源硬件。我更傾向于使用KiCad,即GPLv3 +許可下提供的電子設(shè)計(jì)自動(dòng)化(EDA)軟件。KiCad適用于Windows,MacOS和GNU / Linux。(我在Ubuntu 18.04上使用KiCad第5版。)

KiCad允許您創(chuàng)建多達(dá)32個(gè)銅層和14個(gè)固定用途技術(shù)層的PCB。它還有一個(gè)集成的3D查看器。它得到了積極的發(fā)展,包括CERN開發(fā)人員的許多貢獻(xiàn),并用于工業(yè)應(yīng)用; 例如,Olimex使用KiCad設(shè)計(jì)具有多層的復(fù)雜PCB,例如TERES-I DIY開源硬件筆記本電腦中的PCB。

KiCad工作流程包括三個(gè)主要步驟:

  • 在原理圖布局編輯器中設(shè)計(jì)原理圖

  • 繪制邊緣切口,放置組件,并在PCB布局編輯器中布線

  • 導(dǎo)出Gerber和鉆取文件以供制造

如果您之前沒(méi)有設(shè)計(jì)PCB的經(jīng)驗(yàn),可以瀏覽KiCad提供的示例和用戶指南,了解如何使用原理圖和PCB布局編輯器。(如果您不想從頭開始做任何事情,可以在我的GitHub存儲(chǔ)庫(kù)中克隆ANAVI Play pHAT項(xiàng)目。)

(注:文章作者GitHub地址https://github.com/AnaviTechnology/anavi-play-phat

在KiCad的原理圖布局編輯器中,將Raspberry Pi的GPIO連接到按鈕,將傳感器的插槽連接到主I2C,將EEPROM連接到輔助I2C.為每個(gè)組件分配適當(dāng)?shù)恼嘉幻娣e。執(zhí)行電氣規(guī)則檢查,如果沒(méi)有錯(cuò)誤,則生成網(wǎng)表,描述電子電路的連接。

打開PCB布局編輯器,所有組件和軌道必須位于前銅層和底銅層(F.Cu和B.Cu)上,并且必須在Edge.Cuts層中創(chuàng)建板的形式。任何文本(包括按鈕標(biāo)簽)都必須位于絲印圖層上。

最后,導(dǎo)出Gerber并將它發(fā)送給生產(chǎn)PCB的公司的文件。Gerber格式是PCB的事實(shí)上的行業(yè)標(biāo)準(zhǔn)。它是2D二進(jìn)制圖像的開放ASCII矢量格式;簡(jiǎn)單地解釋一下,它就像是用于PCB制造的PDF。

有許多公司可以像游戲手柄一樣制作簡(jiǎn)單的雙層電路板。對(duì)于一些原型,您可以依靠美國(guó)的OSHPark或歐洲的Aisler。還有很多中國(guó)制造商,如JLCPCB,PCBWay,ALLPCB,Seeed Studio等等?;蛘撸绻M÷訮CB制造和采購(gòu)組件的麻煩,您可以從Crowd Supply訂購(gòu)ANAVI Play pHAT制造商套件,并自行焊接所有通孔組件。


了解devicetree


Devicetree是描述硬件組件的軟件數(shù)據(jù)結(jié)構(gòu)的規(guī)范。其目的是允許已編譯的Linux內(nèi)核在更廣泛的架構(gòu)系列中處理各種不同的硬件配置。引導(dǎo)加載程序?qū)evicetree加載到內(nèi)存中并將其傳遞給Linux內(nèi)核。

該設(shè)備包括三個(gè)組成部分:

  • Devicetree來(lái)源(DTS)

  • Devicetree blob(DTB)和疊加(DTBO)

  • Devicetree編譯器(DTC)

DTC從文本源創(chuàng)建二進(jìn)制文件。Devicetree覆蓋允許中心DTB覆蓋在設(shè)備上。疊加包括許多片段。

幾年來(lái),所有新的ARM片上系統(tǒng)(SoC)都需要一個(gè)設(shè)備,包括所有Raspberry Pi型號(hào)和版本中的Broadcom SoC。使用Raspberry Pi流行的Raspbian發(fā)行版中的默認(rèn)引導(dǎo)加載程序,可以使用關(guān)鍵字device_tree =在可引導(dǎo)microSD卡的FAT分區(qū)上的配置文件(config.txt)中設(shè)置DTO 。

自2014年以來(lái),Raspberry Pi的引腳頭已擴(kuò)展至40個(gè)引腳。引腳27和28專用于輔助I 2 C總線。這樣,DTBO可以從連接到這些引腳的EEPROM自動(dòng)加載。此外,其他系統(tǒng)信息可以保存在EEPROM中。此功能屬于Raspberry Pi Foundation對(duì)任何Raspberry Pi HAT(頂部附加硬件)附加板的要求。在Raspberry Pi的Raspbian和其他GNU / Linux發(fā)行版中,可以在啟動(dòng)后從/ proc / device-tree / hat /的用戶空間看到EEPROM中的信息。

在我看來(lái),devicetree是過(guò)去十年中Linux生態(tài)系統(tǒng)中增加的最迷人的功能之一。創(chuàng)建devicetree blob和覆蓋是一項(xiàng)高級(jí)任務(wù),需要一些背景知識(shí)。但是,可以為Raspberry Pi附加板創(chuàng)建一個(gè)設(shè)備二進(jìn)制覆蓋,并將其閃存在適當(dāng)?shù)腅EPROM上。設(shè)備二進(jìn)制覆蓋定義游戲手柄的每個(gè)鍵的Linux密鑰代碼。結(jié)果是Raspberry Pi的游戲手柄,其中的按鍵在您啟動(dòng)Raspbian后立即工作。


創(chuàng)建DTBO


為游戲手柄創(chuàng)建一個(gè)devicetree二進(jìn)制覆蓋有三個(gè)主要步驟:

  • 根據(jù)Linux密鑰代碼創(chuàng)建帶有密鑰映射的設(shè)備源

  • 使用devicetree編譯編譯devicetree二進(jìn)制覆蓋

  • 使用Raspberry Pi Foundation提供的開源工具創(chuàng)建  .eep文件并在EEPROM上閃爍

Linux密鑰代碼在文件/usr/include/linux/input-event-codes.h中定義。

設(shè)備源文件應(yīng)描述哪個(gè)Raspberry Pi GPIO引腳連接到哪個(gè)硬件按鈕以及按下按鈕時(shí)應(yīng)觸發(fā)哪個(gè)Linux密鑰代碼。在此游戲手柄中,GPIO17(引腳11)連接到右側(cè)觸摸按鈕,GPIO4(引腳7)連接到左側(cè),GPIO22(引腳15)連接到Up,GPIO27(引腳13)連接到Down,GPIO5(引腳29)連接到啟動(dòng), GPIO6(引腳31)選擇,GPIO19(引腳35)連接到A,GPIO26(引腳37)連接到B.

請(qǐng)注意,GPIO編號(hào)與插頭上引腳的物理位置有所不同。為方便起見(jiàn),所有引腳都位于Raspberry Pi的40引腳接頭的第二行。這種方法可以更容易地在KiCad中布線印刷電路板。

游戲手柄的整個(gè)設(shè)備源可在GitHub上獲得。(注:文章作者GitHub地址https://github.com/AnaviTechnology/anavi-play-phat)作為示例,以下是一個(gè)簡(jiǎn)短的代碼片段,演示了如何將與Raspberry Pi上的物理引腳11相對(duì)應(yīng)的GPIO17映射到Right的按鈕:

按鈕@ 17 {                label =“right”;                linux,code = <106>;                gpios = <&gpio 17 1>;             };

要直接在Raspberry Pi上編譯DTS,請(qǐng)?jiān)诮K端上執(zhí)行以下命令在Raspbian上安裝devicetree編譯器:

sudo apt-get updatesudo apt-get install device-tree-compiler

運(yùn)行DTC并提供輸出DTBO的名稱和源文件的路徑作為參數(shù)。例如:

dtc -I dts -O dtb -o anavi-play-phat.dtbo anavi-play-phat.dts

Raspberry Pi Foundation提供了一個(gè)GitHub存儲(chǔ)庫(kù),其中包含HAT的機(jī)械,硬件和軟件規(guī)范。它還包括三個(gè)非常方便的工具:

  • eepmake:使用設(shè)置從文本文件創(chuàng)建.eep文件

  • eepdump:用于調(diào)試,因?yàn)樗鼘⒍M(jìn)制.eep文件轉(zhuǎn)儲(chǔ)為人類可讀的文本

  • eepflash:向EEPROM 寫入或從EEPROM 讀取.eep二進(jìn)制映像

該eeprom_settings.txt文件可以作為一個(gè)模板。Raspberry Pi Foundation和MagPi雜志提供了有用的文章和教程,因此我不會(huì)涉及太多細(xì)節(jié)。如上所述,推薦的EEPROM是CAT24C32,但它可以替換為具有相同技術(shù)規(guī)格的任何其他EEPROM。使用帶有8引腳,通孔,雙列直插式(DIP)封裝的EEPROM,業(yè)余愛(ài)好者可以更輕松地進(jìn)行閃存,因?yàn)樗梢酝ㄟ^(guò)面包板完成。以下示例命令使用Raspberry Pi GitHub存儲(chǔ)庫(kù)中的eepmake工具創(chuàng)建準(zhǔn)備在EEPROM上閃存的文件:

./eepmake settings.txt settings.eep anavi-play-phat.dtbo

在繼續(xù)閃爍之前,請(qǐng)確保EEPROM已正確連接到Raspberry Pi上的主I2C總線(引腳3和5)。(您可以參考上面鏈接的MagPi雜志文章,討論接線示意圖。)然后運(yùn)行以下命令并按照屏幕上的說(shuō)明閃爍EEPROM上的.eep文件:

sudo ./eepflash.sh -w -f=settings.eep -t=24c32

在將EEPROM焊接到印刷電路板之前,將其移至面包板上的輔助I 2 C總線并進(jìn)行測(cè)試,以確保其按預(yù)期工作。如果在測(cè)試面包板上的EEPROM時(shí)檢測(cè)到任何問(wèn)題,請(qǐng)更正設(shè)置文件,將其移回主I 2 C總線,然后再次閃爍。


測(cè)試游戲手柄


終于可以盤它了,是時(shí)候使用Raspbian測(cè)試附加板了,您可以從RaspberryPi.org 下載。啟動(dòng)后,打開終端并輸入以下命令:

cat / proc / device-tree / hat / product cat / proc / device-tree / hat / vendor

輸出應(yīng)該類似于:

如果是的話,恭喜!已成功讀取EEPROM中的數(shù)據(jù)。

下一步是驗(yàn)證Play pHAT上的鍵是否設(shè)置正確并正常工作。在終端或文本編輯器中,按下八個(gè)按鈕中的每一個(gè),并驗(yàn)證它們是否按配置運(yùn)行。

最后,終于可以玩游戲了!默認(rèn)情況下,Raspbian的桌面包括Python游戲。

從應(yīng)用程序菜單啟動(dòng)它們,進(jìn)行音頻輸出選擇并從列表中選擇一個(gè)游戲。我最喜歡的是Wormy,一款類似貪吃蛇的游戲。作為一名前Symbian移動(dòng)應(yīng)用程序開發(fā)人員,我發(fā)現(xiàn)玩Wormy讓我夢(mèng)回諾基亞的崢嶸歲月。

RetroPie復(fù)古游戲


Raspbian很棒,但RetroPie為復(fù)古游戲迷提供了更多的東西。它是一個(gè)GNU / Linux發(fā)行版,針對(duì)復(fù)古游戲進(jìn)行了優(yōu)化,并結(jié)合了開源項(xiàng)目RetroArch和Emulation Station。它適用于Raspberry Pi,Odroid C1 / C2以及運(yùn)行Debian或Ubuntu的個(gè)人計(jì)算機(jī)。

它提供了用于加載ROM的仿真器 - 游戲卡帶的數(shù)字版本。值得一提的是,由于版權(quán)問(wèn)題,RetroPie中不包含任何ROM。在啟動(dòng)RetroPie之后,您必須找到適當(dāng)?shù)腞OM并將它們復(fù)制到Raspberry Pi。

開源硬件游戲手柄在RetroPie的菜單中運(yùn)行良好,但我發(fā)現(xiàn)在啟動(dòng)一些游戲和模擬器后鍵失敗。調(diào)試之后,我找到了一個(gè)確保它們?cè)谟螒蚰M器中工作的解決方案:添加一個(gè)Python腳本,用于密鑰的其他軟件模擬。該腳本可在GitHub上獲得。以下是如何獲取它并在RetroPie上安裝Python:

sudo apt-get updatesudo apt-get install -y python-pip sudo pip install evdev cd~ git clone https://github.com/AnaviTechnology/anavi-examples.git

最后,將以下行添加到/etc/rc.local中,以便在RetroPie啟動(dòng)時(shí)自動(dòng)執(zhí)行:

sudo python /home/pi/anavi-examples/anavi-play-phat/anavi-play-gamepad.py &

完成以下步驟后,您可以創(chuàng)建一個(gè)完全開源的硬件游戲手柄作為任何帶有40針頭的Raspberry Pi型號(hào)的附加板,并與Raspbian和RetroPie一起使用!

將免費(fèi)和開源軟件與開源硬件相結(jié)合既有趣又不困難,但需要大量時(shí)間。在業(yè)余時(shí)間創(chuàng)建開源硬件游戲手柄之后,我在Crowd Supply進(jìn)行了一次適度的眾籌活動(dòng),在我的家鄉(xiāng)保加利亞普羅夫迪夫進(jìn)行小批量生產(chǎn)。當(dāng)然使用的還是開源硬件項(xiàng)目BG000007,另外還使用了保護(hù)電路板免受灰塵影響的丙烯酸外殼,也是使用免費(fèi)開源軟件OpenSCAD創(chuàng)建的開源硬件。

如果你也心動(dòng)了,可以嘗試使用KiCad為Raspberry Pi創(chuàng)建自己的開源硬件附加板。最后祝大家玩的愉快!下次再有人問(wèn)再跟你說(shuō)“要是把玩游戲時(shí)間都用在學(xué)習(xí)上”,告訴他們你學(xué)會(huì)了Raspberry Pi、開源硬件和Linux。

作者:Leon Anavi

Professional software engineer and an open source enthusiast

原文地址:https://opensource.com/article/19/3/gamepad-raspberry-pi

編譯:付斌

嵌入式ARM

掃描二維碼,關(guān)注更多精彩內(nèi)容

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉