一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

電子發(fā)燒友App

硬聲App

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

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

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>20bps數(shù)字?jǐn)?shù)據(jù)無線收發(fā)器

20bps數(shù)字?jǐn)?shù)據(jù)無線收發(fā)器

2023-01-05 | zip | 0.02 MB | 次下載 | 免費(fèi)

資料介紹

描述

?

?
poYBAGO0HRSADg0cAABoGw4whDw411.png
比特流與摩爾斯電碼
?

介紹

在我的數(shù)字通信課上,我試圖通過發(fā)現(xiàn)領(lǐng)域問題并解決它們來幫助我的學(xué)生學(xué)習(xí)數(shù)字通信/計(jì)算機(jī)網(wǎng)絡(luò)在上一節(jié)課中,我們使用激光和 LDR構(gòu)建了一個(gè)摩爾斯電碼發(fā)射器/接收器

今天,我將其擴(kuò)展到傳輸數(shù)字?jǐn)?shù)據(jù);以0和1的流編碼的數(shù)據(jù)。在摩爾斯電碼中,'dot'和'dash'相當(dāng)于數(shù)字?jǐn)?shù)據(jù)的0和1。但是,我們有 0/點(diǎn)的明確信號(hào)。沒有信號(hào)不被解釋為零。這使得渠道成本更高。我可以達(dá)到每分鐘約 18 個(gè)單詞(PARIS 通常用作此計(jì)算的參考單詞)。這相當(dāng)于每分鐘 75 個(gè)字節(jié)或10bps 。

發(fā)射機(jī)

由于我的發(fā)射器是一個(gè)具有開和關(guān)狀態(tài)的激光二極管,關(guān)閉狀態(tài)可以被認(rèn)為是 0,而打開狀態(tài)可以被認(rèn)為是 1。然而,這提出了一個(gè)挑戰(zhàn),即如何區(qū)分代表數(shù)據(jù)的一組 0 和0代表靜默(沒有數(shù)據(jù)傳輸)。

編輯代碼

由于我們遇到了這個(gè)問題,我添加了一個(gè)開始消息頭/模式 (1011) 和一個(gè)結(jié)束消息頭/模式 (1101)。我不斷地在我的 LDR 接收器上采樣數(shù)據(jù),并將讀取值 0/1 添加到我的數(shù)據(jù)中。然后,我檢查結(jié)束模式,如果找到,我檢查 8 位數(shù)據(jù)之前的起始標(biāo)頭。

1011 <8 位數(shù)據(jù)> 1101

H: 1011010010001101
E: 1011010001011101
L: 1011010011001101
L: 1011010011001101
O: 1011010011111101

我可以在我的接收器上解碼這個(gè)模式。

?
poYBAGO0HRaAR2-_AAAMFiIqM4k623.png
解碼消息
?

然而,這種封裝消息的簡單模式并非萬無一失。它很容易被流氓數(shù)據(jù)系列破解。

?
poYBAGO0HRmAJXWYAAAz55Z45sM270.png
帶有垃圾數(shù)據(jù)的解碼消息
?

那么如何驗(yàn)證接收到的數(shù)據(jù)是否真的是另一端發(fā)送的數(shù)據(jù)呢?

我在數(shù)據(jù)末尾添加了一個(gè)小簽名;設(shè)置位數(shù)。由于我的數(shù)據(jù)是 8 位,我又添加了 4 位來表示可以在數(shù)據(jù)中設(shè)置的最多 8 位。

1011 <8_bit_data><4_sign_bits> 1101

H: 10110100100000101101
E: 10110100010100111101
L: 10110100110000111101
L: 10110100110000111101
O: 10110100111101011101

我也可以解碼這個(gè)模式。結(jié)果,我可以過濾掉一些垃圾:

?
pYYBAGO0HRuAFgtXAAAtG-W6LLg365.png
沒有垃圾的解碼消息
?

我確實(shí)有數(shù)據(jù)丟失,但現(xiàn)在垃圾更少了。那么我該如何進(jìn)一步改進(jìn)呢?我可以修復(fù)傳輸錯(cuò)誤嗎?我可以更好地利用符號(hào)位嗎?大量可能的改進(jìn),但當(dāng)我們遇到問題并且我們確信該問題值得解決時(shí),我們將解決。可能是下節(jié)課……

發(fā)射機(jī):

#define PULSE 50
#define START_MSG one(); zero(); one(); one();
#define ??END_MSG one(); one(); zero(); one();
#define MSG_PACK(x) START_MSG x END_MSG
void setup() {
 ?pinMode(13, OUTPUT);
}
void loop() {
  // <8_Data_Bits><4_Sign_Bits>
 ?//H: 2 set bits
 ?MSG_PACK(zero(); one(); zero(); zero(); one(); zero(); zero(); zero(); \
 ??????????zero(); zero(); one(); zero(); )
 ?//E: 3 set bits
 ?MSG_PACK(zero(); one(); zero(); zero(); zero(); one(); zero(); one(); \
 ??????????zero(); zero(); one(); one(); )
 ?//L: 3 set bits
 ?MSG_PACK(zero(); one(); zero(); zero(); one(); one(); zero(); zero(); \
 ??????????zero(); zero(); one(); one(); )
 ?//L: 3 set bits
 ?MSG_PACK(zero(); one(); zero(); zero(); one(); one(); zero(); zero(); \
 ??????????zero(); zero(); one(); one(); )
 ?//O: 5 set bits
 ?MSG_PACK(zero(); one(); zero(); zero(); one(); one(); one(); one(); \
 ??????????zero(); one(); zero(); one(); )
 ?//CR: 3 set bits
 ?MSG_PACK(zero(); zero(); zero(); zero(); one(); one(); zero(); one(); \
 ??????????zero(); zero(); one(); one(); )
 ?//LF: 2 set bits
 ?MSG_PACK(zero(); zero(); zero(); zero(); one(); zero(); one(); zero(); \
 ??????????zero(); zero(); one(); zero(); )
}
void zero()
{
 ?digitalWrite(13, LOW);
 ?delay(PULSE);
}
void one()
{
 ?digitalWrite(13, HIGH);
 ?delay(PULSE);
} 
?

接收者:

#define SOM 0xB
#define EOM 0xD
#define PULSE 50
unsigned long data = 0; 
void setup() {
 ?// put your setup code here, to run once:
 ?Serial.begin(9600);
}
void loop() {
 ?// put your main code here, to run repeatedly:
 ?int val = analogRead(4);
 ?unsigned long sign = 0;
 ?data = (data << 1);
 ?if(val >= 10){
 ???data |= 1;
 ?}else {
 ???data |= 0;
 ?}
 ?//check tail signature
 ?if(EOM == (data&EOM))
 ?{
 ???//check head signature
 ???if(SOM == ((data >> 16)&0xF)){
 ?????sign = (data>>4)&0xF; // 4 bits of signature
 ?????data = (data>>8)&0xFF;// 8 bits of data
 ?????if(sign == getSetBits(data))
 ?????{
 ???????Serial.print((char)data);
 ?????}
 ?????//Diagnostics
 ?????//if(data==72||data==69||data==76||data==79||data==13||data==10){
 ???????//data
 ???????//digitalWrite(13, HIGH);
 ?????//}else{
 ???????//error
 ???????//digitalWrite(12, HIGH);
 ?????//}
 ?????data = 0;
 ???}
 ?}
 ?delay(PULSE);
 ?//digitalWrite(13, LOW);
 ?//digitalWrite(12, LOW);
}
unsigned long getSetBits(unsigned long n)
{
 ?unsigned long count = 0;
 ?while(n)
 ?{
 ???n &= (n-1);
 ???count++;
 ?}
 ?return count;
} 
?

順便說一句,我使用此處發(fā)布的最終代碼實(shí)現(xiàn)了每秒約 1 字節(jié)數(shù)據(jù)的速度。包括標(biāo)頭在內(nèi),達(dá)到每秒 20 位

編輯

為了檢測(cè)數(shù)據(jù)中的錯(cuò)誤,我在數(shù)據(jù)中添加設(shè)置位數(shù)的簽名機(jī)制并沒有被證明是好的。我需要一個(gè)不會(huì)增加大量數(shù)據(jù)開銷的更好、更便宜的解決方案。

I XOR 高半字節(jié)和低半字節(jié)以生成 4 位簽名。此簽名不太可能失敗,因?yàn)殄e(cuò)誤(位翻轉(zhuǎn))必須發(fā)生在高半字節(jié)和低半字節(jié)的相應(yīng)位上。

// (sign == (right ^ left))
if(sign == ((data & 0xF) ^ ((data >> 4) & 0xF))){
       Serial.print((char)data);
}

正如預(yù)期的那樣,結(jié)果比以前更好。我很少看到惡意字節(jié)通過此測(cè)試。

?
poYBAGO0HR2AEia1AAAs7sNWPGE113.png
XOR 簽名的結(jié)果
?

在理想情況下,我不會(huì)出錯(cuò)。我還沒有看到流氓字節(jié),但我確實(shí)看到數(shù)據(jù)包被丟棄了。我如何確保以正確的順序收到所有數(shù)據(jù)?

這是下一個(gè)要解決的問題。為每個(gè)數(shù)據(jù)包構(gòu)建一個(gè) ACK??,以便發(fā)送方可以確認(rèn)他發(fā)送的內(nèi)容確實(shí)已收到。我計(jì)劃發(fā)回收到的異或符號(hào)。但是我沒有其他激光二極管用于此目的...


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

評(píng)論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
  2. 1.06 MB  |  532次下載  |  免費(fèi)
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費(fèi)
  5. 3TC358743XBG評(píng)估板參考手冊(cè)
  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元宇宙底層硬件系列報(bào)告
  14. 13.42 MB  |  182次下載  |  免費(fèi)
  15. 8FP5207XR-G1中文應(yīng)用手冊(cè)
  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è)計(jì)實(shí)例指南
  8. 未知  |  21549次下載  |  免費(fèi)
  9. 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費(fèi)
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費(fèi)
  13. 7電子制作實(shí)例集錦 下載
  14. 未知  |  8113次下載  |  免費(fèi)
  15. 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
  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é)會(huì)AVR單片機(jī)與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)