欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(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ù)無(wú)線收發(fā)器

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

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

資料介紹

描述

?

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

介紹

在我的數(shù)字通信課上,我試圖通過(guò)發(fā)現(xiàn)領(lǐng)域問(wèn)題并解決它們來(lái)幫助我的學(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)。沒(méi)有信號(hào)不被解釋為零。這使得渠道成本更高。我可以達(dá)到每分鐘約 18 個(gè)單詞(PARIS 通常用作此計(jì)算的參考單詞)。這相當(dāng)于每分鐘 75 個(gè)字節(jié)或10bps 。

發(fā)射機(jī)

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

編輯代碼

由于我們遇到了這個(gè)問(wèn)題,我添加了一個(gè)開(kāi)始消息頭/模式 (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
解碼消息
?

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

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

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

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

1011 <8_bit_data><4_sign_bits> 1101

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

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

?
pYYBAGO0HRuAFgtXAAAtG-W6LLg365.png
沒(méi)有垃圾的解碼消息
?

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

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

編輯

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

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é)通過(guò)此測(cè)試。

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

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

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


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

評(píng)論

查看更多

下載排行

本周

  1. 1DeepSeek:從入門(mén)到精通
  2. 5.36 MB   |  25次下載  |  1 積分
  3. 2中興通訊的PCB設(shè)計(jì)規(guī)范
  4. 23.03 MB   |  2次下載  |  5 積分
  5. 3IP6823 支持 qi 認(rèn)證的無(wú)線充電發(fā)射控制 SOC
  6. 1.01 MB  |  1次下載  |  免費(fèi)
  7. 4IP6824? 全集成QI?無(wú)線充電發(fā)射控制SOC
  8. 1.22 MB  |  1次下載  |  免費(fèi)
  9. 5工程師入門(mén)必學(xué)的二十個(gè)模擬電路
  10. 0.37 MB   |  1次下載  |  1 積分
  11. 6PESD18VY1BBIF保護(hù)二極管規(guī)格書(shū)
  12. 4.56MB   |  次下載  |  免費(fèi)
  13. 774HC4050緩沖器規(guī)格書(shū)
  14. 217.58KB   |  次下載  |  免費(fèi)
  15. 874HC73-Q100雙JK觸發(fā)器規(guī)格書(shū)
  16. 220.85KB   |  次下載  |  免費(fèi)

本月

  1. 1A7159和A7139射頻芯片的資料免費(fèi)下載
  2. 0.20 MB   |  55次下載  |  5 積分
  3. 2零死角玩轉(zhuǎn)STM32F103—指南者
  4. 26.78 MB   |  41次下載  |  1 積分
  5. 3PIC12F629/675 數(shù)據(jù)手冊(cè)免費(fèi)下載
  6. 2.38 MB   |  36次下載  |  5 積分
  7. 4DeepSeek:從入門(mén)到精通
  8. 5.36 MB   |  25次下載  |  1 積分
  9. 5PIC16F716 數(shù)據(jù)手冊(cè)免費(fèi)下載
  10. 2.35 MB   |  18次下載  |  5 積分
  11. 6GD32F4xx用戶手冊(cè)
  12. 14.49MB   |  14次下載  |  免費(fèi)
  13. 7dsPIC33EDV64MC205電機(jī)控制開(kāi)發(fā)板用戶指南
  14. 5.78MB   |  8次下載  |  免費(fèi)
  15. 8STC15系列常用寄存器匯總免費(fèi)下載
  16. 1.60 MB   |  7次下載  |  5 積分

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935124次下載  |  10 積分
  3. 2開(kāi)源硬件-PMP21529.1-4 開(kāi)關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
  4. 1.48MB  |  420063次下載  |  10 積分
  5. 3Altium DXP2002下載入口
  6. 未知  |  233088次下載  |  10 積分
  7. 4電路仿真軟件multisim 10.0免費(fèi)下載
  8. 340992  |  191367次下載  |  10 積分
  9. 5十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
  10. 158M  |  183335次下載  |  10 積分
  11. 6labview8.5下載
  12. 未知  |  81581次下載  |  10 積分
  13. 7Keil工具M(jìn)DK-Arm免費(fèi)下載
  14. 0.02 MB  |  73813次下載  |  10 積分
  15. 8LabVIEW 8.6下載
  16. 未知  |  65988次下載  |  10 積分