• 正文
    • 通信原理
    • 特殊的編碼方式
    • 滾動碼
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

聊一聊基于433Mhz的遙控器

03/21 15:00
1053
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

遙控器在我們?nèi)粘V薪?jīng)常用到,基于紅外的電視遙控器,基于2.4G的電腦遙控器,還有宇樹機(jī)器人的遙控器,但這些都不是今天要聊的,今天的主角是下面這種按鍵式遙控器。

這應(yīng)該是遙控器行業(yè)里面最Low的一種存在了,看門的大爺們?nèi)耸忠粋€,我工作中第一次涉及到這種遙控器還是做最早期的那種大型平衡車的時候,它的鎖車解鎖功能就是使用的這種遙控器,4個按鍵:鎖車,解鎖,鳴笛,亮燈。

這種遙控器的原理是什么?他是如何傳遞這四個按鍵信號的呢?

通信原理

首先,遙控器的基本原理肯定是基于無線通信,也就是對載波信號進(jìn)行調(diào)制和解調(diào),這部分在無線通信的專題文章中談到過。

無線通信初探 (一)

無線通信初探(二)

只不過這里的載波是433MHz附近,這是一個豁免的通信頻段。

這種遙控器采用的調(diào)制方式被稱為OOK,從之前的文章得知,無線信號的調(diào)制方式有ASK,FSK....

似乎沒有提到這個OOK,其實OOK是ASK的一種叫法。

ASK 即“幅移鍵控”又稱為“振幅鍵控”,把振幅修改為0振幅和一個非零振幅,就像開關(guān)一樣,可以稱為“開關(guān)鍵控”(通斷鍵控)的,所以又記作 OOK(On-Off keyed)信號。

ASK 是一種相對簡單的調(diào)制方式。幅移鍵控(ASK)相當(dāng)于模擬信號中的調(diào)幅,不同的是與載頻信號相乘的是二進(jìn)制數(shù)碼。幅移就是把頻率、相位作為常量,而把振幅作為變量,信息比特是通過載波的幅度來傳遞的。如下圖所 示,ASK 調(diào)制方式的典型時域波形,虛線部分表示二進(jìn)制的 0 和 1,紅色實線部分表示調(diào)制信號

那么,4個遙控器的按鍵可以使用2個bit來表示,把這個兩個bit調(diào)制上去就可以了吧。

特殊的編碼方式

按理說應(yīng)該是這樣,但是解調(diào)后,如果只是檢測高低電平來解析出原數(shù)據(jù)不是很可靠,采樣時機(jī)不好把握。

所以做遙控器芯片的人想了個辦法,他們不靠檢測高低電平,而是檢測高低電平的持續(xù)時間,如果你玩過WS2812就很容易理解。

固定一個周期,在這個周期內(nèi),高電平持續(xù)12個單位,低電平持續(xù)4個單位,這樣的波形記錄為1.反之,則記錄為0。

如此一來,我們檢測到邊沿的時候開始計數(shù)就能準(zhǔn)確地找出0和1的信息。

為了區(qū)分多個遙控器,我們在按鍵信息前面再加上20個bit的地址信息。

為了讓檢測更加準(zhǔn)確,可以輕松同步,我們在發(fā)送信息開始的時候增加一個同步幀,也就是特殊一點的,把低電平拉長到124個單位。

就這樣,我們收到同步信息后,等于讀取了地址+按鍵數(shù)據(jù)。

這樣,我們就可以輕松的把特定遙控器的某一個案件是否按下的信息傳遞出去了,這里有一個問題,假設(shè)地址只有20個bit,這個地址將會被用完的,想想看,現(xiàn)在IPV4的地址都不夠用了呢。

這里到真的不用怕,因為IPV4地址是在全球范圍內(nèi)保持唯一性,還有MAC地址也是一樣的,它的適用范圍是全球的。但是對于我們的遙控器來說,范圍就沒有這么大,即使有重碼,碰撞的幾率也很小。

不過我還真遇到過,一次我在常州出差的時候,站在一個車庫門口玩我的汽車鑰匙,隨意摁了幾下,車庫的桿突然抬起來了,保安大哥疑惑的走來走去,掏出手中的遙控器操控者把桿放下,我又摁了一通,桿又抬起來了,著實把保安大哥給整郁悶了。

這種固定碼還有個缺點,那就是非常容易被破解,我只要監(jiān)聽一下就可以破解這個編碼。那么如何來解決這個問題呢?

滾動碼

沒錯,我們可以讓地址碼滾動起來,每次發(fā)射的時候都不一樣。

遙控器檢測到按鍵輸入, 同步記數(shù)加1 , 與地址碼一起經(jīng)密匙加密后形成密文數(shù)據(jù), 連同鍵值等數(shù)據(jù)發(fā)送出去。

由于同步計數(shù)值每次發(fā)送都不同, 即使是同一按鍵多次按下也不例外。同步計數(shù)自動向前滾動, 發(fā)送過的碼字不會再發(fā)生。因此被稱為滾動碼。

同步計數(shù)跟地址碼組合成一個64位的數(shù)據(jù),一起經(jīng)過DES加密,DES密鑰為廠家獨有,「必須保密」。加密之后的密文則通過射頻系統(tǒng)發(fā)射出去。

接收端接收到密文之后,通過廠家的DES密鑰進(jìn)行解密,解密之后得到同步計數(shù)和地址碼。

首先檢測地址碼是否與接收器的地址碼相對應(yīng),如果對應(yīng),就檢測同步計數(shù)是否在同步窗口內(nèi),也就是說是否大于本機(jī)保存的同步計數(shù),但是又不大得太多,如果大得太多,本機(jī)就再作一次同步。如果在同步窗口中,通知執(zhí)行機(jī)構(gòu)執(zhí)行用戶命令,比如說打開門鎖或者關(guān)閉門鎖之類的。

由于加密算法能夠把明文打亂,因此,碼的滾動會使得發(fā)射的碼變化差異很大而難以破解,又由于同步計數(shù)的存在,重復(fù)發(fā)送也沒有效果,因此要攻破該類系統(tǒng)就要攻破DES算法。

同步計數(shù)為16 位, 可達(dá)2的16次方 =65536 , 若每天用10 次, 則有18年的使用周期。32位的序列號, 容量為232 = 42 億, 這足夠用了。

相關(guān)推薦

登錄即可解鎖
  • 海量技術(shù)文章
  • 設(shè)計資源下載
  • 產(chǎn)業(yè)鏈客戶資源
  • 寫文章/發(fā)需求
立即登錄

多年硬件從業(yè)經(jīng)驗,專注分享從研發(fā)到供應(yīng)鏈,再到精益制造過程中的經(jīng)驗和感悟!