M5Stack計(jì)算機(jī)的終極遙控器
M5Stack計(jì)算機(jī)上的終極遠(yuǎn)程
剛開(kāi)始的時(shí)候,我對(duì)紅外通信毫無(wú)經(jīng)驗(yàn)。所以我做的第一件事是深入研究紅外協(xié)議是如何工作的,定時(shí),脈沖,載波頻率,編碼。只有在我理解了基本原理之后,我才開(kāi)始考慮實(shí)現(xiàn)。
我想把整個(gè)紅外數(shù)據(jù)庫(kù),數(shù)千個(gè)。ir文件分散在數(shù)百個(gè)文件夾中,打包到一個(gè)手持設(shè)備中。真正的挑戰(zhàn)不只是將文件復(fù)制到SD卡上;它將該文件結(jié)構(gòu)解析為閃電般的C數(shù)據(jù)模型,因此固件永遠(yuǎn)不會(huì)感覺(jué)正在加載。
但目標(biāo)不僅僅是速度,還在于確保完整的數(shù)據(jù)庫(kù)可以直接包含在固件中,讓用戶(hù)甚至不需要SD卡就能立即訪問(wèn)數(shù)千個(gè)遠(yuǎn)程服務(wù)器。
我設(shè)法生成了兩個(gè)包含整個(gè)數(shù)據(jù)庫(kù)的。h文件:
一個(gè)用于命令定義
另一種是將原始紅外信號(hào)數(shù)據(jù)作為一個(gè)大的C結(jié)構(gòu):一個(gè)制造商列表,每個(gè)制造商都包含自己的遙控器列表,而遙控器又包含一個(gè)紅外命令列表。
remotecomcommands .h包含30321條命令,RemoteData.h包含141598行IR數(shù)據(jù)。
協(xié)議支持和IR編碼
為了支持如此廣泛的遠(yuǎn)程和命令,我需要一種方法來(lái)為每個(gè)協(xié)議準(zhǔn)確地編碼IR信號(hào)。我最終改編了John Fine在2004年寫(xiě)的一段c++代碼。他的工作包括定義和生成從原始數(shù)據(jù)到Pronto十六進(jìn)制字符串的紅外信號(hào)的邏輯。下面是系統(tǒng)中使用的一個(gè)簡(jiǎn)單的Pronto十六進(jìn)制字符串的例子
這種格式定義了一個(gè)完整的紅外信號(hào),包括載波頻率、定時(shí)單位和開(kāi)/關(guān)脈沖序列。通過(guò)解碼和生成這樣的字符串編程,固件支持精確的,協(xié)議精確的傳輸為大范圍的設(shè)備。
用戶(hù)界面設(shè)計(jì)
用戶(hù)界面從頭開(kāi)始設(shè)計(jì),讓人感覺(jué)快速和直觀。有成千上萬(wàn)的遠(yuǎn)程瀏覽,流暢的導(dǎo)航是必須的。我確保用戶(hù)可以通過(guò)盡可能少的操作從主菜單切換到正確的命令,并提供收藏夾、掃描儀和快捷鍵等有用的功能。對(duì)于普通用戶(hù)來(lái)說(shuō),它足夠簡(jiǎn)單,但對(duì)于技術(shù)環(huán)境中的快速遠(yuǎn)程切換,它的響應(yīng)性和功能足夠強(qiáng)大。
為什么電腦是完美的選擇
讓Cardputer在這個(gè)項(xiàng)目中大放異彩的不僅僅是內(nèi)置的紅外LED,還有集成的鍵盤(pán)。通過(guò)輸入幾個(gè)字母就能快速搜索到一個(gè)品牌,這讓瀏覽一個(gè)龐大的遠(yuǎn)程數(shù)據(jù)庫(kù)變得異常順暢。不需要無(wú)休止地滾動(dòng)。與明亮的顯示屏相結(jié)合,它為遠(yuǎn)程狩獵這樣可能乏味的事情創(chuàng)造了一個(gè)響應(yīng)迅速、令人愉快的用戶(hù)體驗(yàn)。
功能概述
?廣泛的數(shù)據(jù)庫(kù):包含3?498遠(yuǎn)程配置文件從636制造商開(kāi)箱即用。
?協(xié)議支持:了解60+ IR協(xié)議,從NEC和RC5到晦澀的Kaseikyo口味。
?大規(guī)模命令集:超過(guò)30?000個(gè)單獨(dú)的命令準(zhǔn)備傳輸。
?SD卡支持:瀏覽存儲(chǔ)在SD卡上的額外遠(yuǎn)程無(wú)限擴(kuò)展。
?掃描和查找:自動(dòng)掃描模式通過(guò)遠(yuǎn)程循環(huán),直到您的設(shè)備響應(yīng),然后讓您保存匹配。
?收藏夾:引腳多達(dá)40個(gè)遙控器,以閃電般的速度訪問(wèn)(加上已包含的40個(gè)默認(rèn)值)。
?文件兼容性(.ir):從Flipper - IRDB讀取。ir文件,因此您可以重用Flipper社區(qū)的龐大庫(kù)。
?文件夾導(dǎo)航和搜索:跳過(guò)文件夾,鍵入搜索,并立即加載遠(yuǎn)程。
本文編譯自hackster.io