在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

電子發燒友App

硬聲App

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
電子發燒友網>電子資料下載>電子資料>20bps數字數據無線收發器

20bps數字數據無線收發器

2023-01-05 | zip | 0.02 MB | 次下載 | 免費

資料介紹

描述

?

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

介紹

在我的數字通信課上,我試圖通過發現領域問題并解決它們來幫助我的學生學習數字通信/計算機網絡在上一節課中,我們使用激光和 LDR構建了一個摩爾斯電碼發射器/接收器

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

發射機

由于我的發射器是一個具有開和關狀態的激光二極管,關閉狀態可以被認為是 0,而打開狀態可以被認為是 1。然而,這提出了一個挑戰,即如何區分代表數據的一組 0 和0代表靜默(沒有數據傳輸)。

編輯代碼

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

1011 <8 位數據> 1101

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

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

?
poYBAGO0HRaAR2-_AAAMFiIqM4k623.png
解碼消息
?

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

?
poYBAGO0HRmAJXWYAAAz55Z45sM270.png
帶有垃圾數據的解碼消息
?

那么如何驗證接收到的數據是否真的是另一端發送的數據呢?

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

1011 <8_bit_data><4_sign_bits> 1101

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

我也可以解碼這個模式。結果,我可以過濾掉一些垃圾:

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

我確實有數據丟失,但現在垃圾更少了。那么我該如何進一步改進呢?我可以修復傳輸錯誤嗎?我可以更好地利用符號位嗎?大量可能的改進,但當我們遇到問題并且我們確信該問題值得解決時,我們將解決。可能是下節課……

發射機:

#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;
} 
?

順便說一句,我使用此處發布的最終代碼實現了每秒約 1 字節數據的速度。包括標頭在內,達到每秒 20 位

編輯

為了檢測數據中的錯誤,我在數據中添加設置位數的簽名機制并沒有被證明是好的。我需要一個不會增加大量數據開銷的更好、更便宜的解決方案。

I XOR 高半字節和低半字節以生成 4 位簽名。此簽名不太可能失敗,因為錯誤(位翻轉)必須發生在高半字節和低半字節的相應位上。

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

正如預期的那樣,結果比以前更好。我很少看到惡意字節通過此測試。

?
poYBAGO0HR2AEia1AAAs7sNWPGE113.png
XOR 簽名的結果
?

在理想情況下,我不會出錯。我還沒有看到流氓字節,但我確實看到數據包被丟棄了。我如何確保以正確的順序收到所有數據?

這是下一個要解決的問題。為每個數據包構建一個 ACK??,以便發送方可以確認他發送的內容確實已收到。我計劃發回收到的異或符號。但是我沒有其他激光二極管用于此目的...


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

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數據手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關電源設計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數字電路基礎pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅動電路設計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費
主站蜘蛛池模板: 国产精品不卡片视频免费观看 | 四虎美女| 免费网站色 | 黄网在线看 | 天天干天天色综合网 | 国产人成高清视频观看 | 狠狠色伊人亚洲综合第8页 狠狠色依依成人婷婷九月 狠狠色影院 | 狠狠色综合网站久久久久久久 | 黄色日比 | 一级片一级片一级片 | 精品视频在线观看视频免费视频 | 6080yy午夜不卡一二三区 | 69女poren16| 六月婷婷视频 | 男人j进女人j视频 | 天天干影视 | 依人成人| 色无欲天天天影视综合网 | 午夜视频精品 | 女人aaaaa片一级一毛片 | 天天干天天玩天天操 | 日本黄色片段 | 天天舔天天干天天操 | 丁香婷婷六月天 | 伊人网网 | 欧美成人免费网站 | h国产在线 | 四虎最新紧急更新地址 | 欧美网站黄 | 亚洲韩国日本欧美一区二区三区 | 欧美性生交xxxxx久久久 | 欧美成人猛男性色生活 | 欧美性白人极品1819hd | 一级毛片aa | 久久综合九色综合精品 | 五月婷婷色网 | 国产一区二区三区免费大片天美 | 67pao强力打造 | 色色免费| 天天躁狠狠躁狠狠躁夜夜躁 | 国产精品福利午夜在线观看 |