色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

電子發燒友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次下載  |  免費
主站蜘蛛池模板: 99精品成人无码A片观看金桔| 办公室日本肉丝OL在线| 色播播影院| 色婷婷五月综合中文字幕| 日日夜夜撸 在线影院| 丝袜美腿美女被狂躁在线观看| 跳蛋按摩棒玉势PLAY高H| 亚洲 欧美无码原创区| 一个吃奶两个添下面H| 92午夜免费福利757| 成人毛片免费播放| 国产精品色欲AV亚洲三区软件| 国精产品砖一区二区三区糖心| 久久免费看少妇高潮A片特爽| 男人插曲女人的叫声| 日韩AV无码一区二区三区不卡毛片| 无码137片内射在线影院| 野花韩国在线观看| gay台湾无套男同志xnxⅹ| 国产高清在线观看| 久久本道久久综合伊人| 年轻老师毛茸茸自由性 | 99久久精品免费国产一区二区三区 | 国产精品久久久久a影院| 嘿嘿视频在线观看 成人| 蜜芽资源高清在线观看| 色内射无码AV| 伊人久久大香线蕉电影院| 爱穿丝袜的麻麻3d漫画acg| 国产亚洲精品香蕉视频播放| 免费果冻传媒2021在线看| 四虎永久在线精品国产免费| 影音先锋av电影| 俄罗斯aaaaa一级毛片| 久久re热线视频国产| 日本人六九视频| 一二三四在线播放免费观看中文版视频| 99久久香蕉国产线看观看| 国内精品久久久久影院亚洲| 欧美含羞草免费观看全部完| 亚洲福利视频导航|