資料介紹
PCB圖如下:
描述
RA-02 帶電平轉換器的分線器
面包板和初學者友好型 RA-02 分線模塊
?
大多數創客和電子愛好者可能已經知道 RA-02 LoRa 模塊。他們中的許多人可能擁有一兩個 RA-02 Breakout 模塊……對于那些擁有的人,他們肯定會知道使用這個特定的 Breakout 模塊時遇到的問題……
RA-02 模塊本身就是一個很棒的套件,當在定制 PCB 上使用時,它的設計考慮了該模塊的所有小秘密,是一種樂趣。然而,以現有的外形尺寸使用 RA-02 分線模塊確實會帶來很多獨特的挑戰,如果您沒有意識到這些挑戰,可能會導致很多令人沮喪的時刻,甚至會導致模塊永久損壞。 ..
這些挑戰是什么:
1) 該模塊基于 Semtech 的 SX1278 芯片,為 3v 設備。IO 引腳不兼容 5v,但與 5v 一起使用時似乎可以工作幾個小時左右……這導致很多人,尤其是在 Youtube 上,認為可以向該模塊發送 5v 邏輯信號……
我還沒有看到任何 Youtube 視頻告訴觀眾至少使用電阻分壓器或邏輯轉換器......人們只是不知道,而那些知道的人似乎保持沉默!
添加邏輯轉換器實際上由數據表指定。
2) 添加邏輯轉換器意味著添加額外的布線,對于基于面包板的項目,這會增加復雜性。
3) 您總共需要連接 4 個接地引腳。沒有連接所有這些,會導致有趣的事情發生,從過熱到失敗......(我在研究這個項目時的個人經驗)
4)現有的分線模塊不兼容面包板,導致浮動組件到處都是電線,導致連接不穩定等......
基本上類似于下圖:
在這張圖片中,我有一個現有的 RA-02 分線模塊,帶有一個 8 通道邏輯轉換器和一個 Arduino Uno 克隆,以及使此設置成為可能所需的所有接線......確實有很多電線......
我的解決方案:
我設計并使用了很多 LoRa PCB,在所有這些 PCB 上,我使用 BSS138 N-MOS Mosfet 和 10k 電阻器實現邏輯轉換。這是一種便宜且可靠的解決方案,但它會占用 PCB 上的大量空間,因為如果我要為 RA-02 的所有 GPIO 和 IO 引腳提供電平轉換,這意味著需要 11 個 Mosfet 和 22 個 10k 電阻。 ..
我還經常遇到許多不必要的電線的問題,其中許多電線有時會直接開箱即用,在制作原型時。我通過設計一些專用的 PCB 解決方案部分解決了這個問題,但這并不總是理想的,
在面包板兼容模塊上使用專用邏輯轉換器 IC 和基于 Mosfet 的轉換器來彌補差異似乎是個好主意,因此我繼續設計了以下解決方案:
分線板模塊與面包板兼容,并且有明確標記的引腳以指示模塊的 3v 和 5v 側。
測試模塊:
使用 5v 設備(Cytron 的 Maker Uno)
對于我的第一次測試,我決定使用 Arduino Uno Clone 進行測試,因為這是大多數創客和學生都可以使用的。我使用了 Cytron 的 Maker Uno 平臺,該平臺配備了一些附加功能,例如診斷 LED 等,以使原型制作更加容易。
可以清楚的看到,只需要接模塊的5v邏輯端,同時給模塊提供3v和5v+GND
在這個測試中,我使用了 Sandeep Mistry 的 LoRa 庫和 Arduino IDE 來做一個快速測試草圖。
連接如下:
RA-02 模塊制造商 Uno
味噌 D12
莫西D11
SCK D13
NSS D10
RST D9
DIO0 D2
OE D8
(完整代碼將在下面提供下載)
不過,讓我們看一些重要的部分,以徹底了解如何使用該模塊:
引腳聲明
#include
#include
常量 int csPin = 10; // LoRa 無線電芯片選擇
常量 int resetPin = 9; // LoRa 無線電復位
常量 int irqPin = 2; // 改變你的板子;必須是硬件中斷引腳
常量 int OEPin = 8; // 輸出使能引腳,使能邏輯轉換器
在設置功能中,我們需要做一些額外的工作,因為我們的 Maker Uno(或您的 Arduino Uno)是一個 5v 設備...
無效設置(){
?序列號.開始(115200);//初始化串口
?pinMode(OEPin,輸出);// 將 OE 引腳設置為 Outout
?數字寫入(OEPin,HIGH);// 并將其拉高以啟用邏輯轉換器
?而(!串行);
?Serial.println("LoRa Duplex - 設置擴頻因子");
?// 覆蓋默認的 CS、reset 和 IRQ 引腳(可選)
?LoRa.setPins(csPin, resetPin, irqPin); // 設置 CS、復位、IRQ 引腳
?if (!LoRa.begin(433E6)) { // 在 433 MHz 處初始化比率
??Serial.println("LoRa 初始化失敗。檢查你的連接。");
??而(真);// 如果失敗,什么也不做
?}
?LoRa.setSpreadingFactor(8); // 范圍從 6-12,默認 7 見 API 文檔
?Serial.println("LoRa 初始化成功。");
}
比較,使用標準 RS-02 Breakout 模塊,以及我自己的一個“Arduino 類型 PCB”
ATMEGA328P 帶有 8 通道邏輯轉換器。
正如我們所看到的,您需要更多的電線才能完成這項工作。還值得注意的是,我們在這塊 ATMEGA328P PCB 上只有 8 個電平轉換器,為了使用 RA-02 的所有 GPIO,我們還需要添加一個額外的外部邏輯轉換器。
使用 3v 設備:
Cytron 創客 Nano RP2040
對于我的第二次測試,我決定勇敢一點,嘗試使用新的 Raspberry Pi Pico(RP2040 微處理器)。我身邊有很多這樣的人,從來沒有真正用過它們,因為我不太喜歡使用 MicroPython 或 CircuitPython,而且最近發布的 RP2040 的 Arduino Core 仍然很新。 .. 我決定使用我最近從 Cytron 購買的開發板,Maker Nano RP2040,因為它具有所有附加的診斷功能,讓我的生活更輕松,我還將使用原始 Pi Pico 板進行測試,讓那里的每個人都更容易獲得它。
再一次,我使用了 Sandeep Mistry 的 LoRa 庫,帶有完全相同的 Arduino 草圖,用于Maker Uno測試。(我顯然需要更改引腳編號,因為 RP2040 對其 SPI 接口使用不同的引腳)。
Maker Nano RP2040 RA-02 分線模塊
NSS 17
莫西19
味噌 16
SCK 18
第一時間 9
DIO0 8
在這種情況下,我們不需要 OE 引腳,因為 RP2040 是原生 3v 設備。因此,電平轉換器可以保持禁用狀態,其引腳處于三態(高阻抗)模式。
如果我們查看代碼,它類似于 Maker Uno 的代碼,只有 Pin 聲明需要更改
#include
#include
常量 int csPin = 17; // LoRa 無線電芯片選擇
常量 int resetPin = 9; // LoRa 無線電復位
常量 int irqPin = 8; // 改變你的板子;必須是硬件中斷引腳
字節 msgCount = 0; // 傳出消息的計數
整數間隔 = 2000;// 發送間隔
長最后發送時間 = 0; // 最后一個數據包發送的時間
// 注意 SPI 在 RP2040 上有不同的名稱,它有 2 個 SPI 端口。我們使用了端口 0
// CIPO(味噌)在引腳 16
// COPI (Mosi) 在引腳 19
// SCK 在引腳 18 上
// CE/SS 在引腳 17 上,正如上面已經聲明的
我沒有使用面包板,以使事情盡可能簡單。
Cytron 的 Maker Pi Pico - 分線 PCB 上的 Pi Pico
為了讓事情變得更簡單,無需使用面包板,我決定使用Maker Pi Pico PCB 進行 Original Pi Pico 測試。這個 PCB 基本上是一個大的分線模塊,具有詳細的引腳編號和一些診斷 LED,但它也使用原生 Pi Pico,通過堞形孔直接焊接到 PCB 上......所以,雖然技術上不是真正的獨立 Pico,它讓我的生活更輕松,因此被用于測試,因為我可以確定引腳的標記與原始 Pico 上的完全相同。
Maker Nano RP2040使用的代碼完美運行,無需更改。
這篇文章現在已經很長了,所以我決定不在這里包括我對 ESP-12E ( NodeMCU ) 或 ESP32 開發板的測試......它們也能按預期工作。
總之
當我開始這個項目時,我著手解決一個問題(對我個人而言),這可能會幫助許多其他人使用 RA-02 模塊來完成更多的項目和任務。當前形式的 Breakout 模塊也可以與 RA-01h 模塊(915Mhz 模塊)一起使用,無需任何更改。所有 GPIO 引腳均已分線,并可通過分線模塊兩側的全邏輯轉換引腳訪問。
我希望這對某人有用。在這個階段我也不會發布完整的原理圖,因為我可能會決定在不久的將來做一些小的外觀改動。
但是,可以從 PCBWay 以當前形式訂購 PCB,并按預期 100% 工作。與往常一樣,訂購的 PCB 可提供 BOM 文件。
代碼
Maker Nano RP2040 / Pi Pico 的 LoRa 測試代碼
阿杜諾
? |
#include |
? |
#include |
? | ? |
? | const int csPin = 17;// LoRa radio chip select |
? | const int resetPin = 9; // LoRa radio reset |
? | const int irqPin = 8; // change for your board; must be a hardware interrupt pin |
? | ? |
? | byte msgCount = 0;// count of outgoing messages |
? | int interval = 2000;// interval between sends |
? | long lastSendTime = 0;// time of last packet send |
? | ? |
? | void setup() { |
? | Serial.begin(115200); // initialize serial |
? | while (!Serial); |
? | ? |
? | Serial.println("LoRa Duplex - Set spreading factor"); |
? | ? |
? | // override the default CS, reset, and IRQ pins (optional) |
? | LoRa.setPins(csPin, resetPin, irqPin); // set CS, reset, IRQ pin |
? | ? |
? | if (!LoRa.begin(433E6)) { // initialize ratio at 915 MHz |
? | Serial.println("LoRa init failed. Check your connections."); |
? | while (true); // if failed, do nothing |
? | } |
? | ? |
? | LoRa.setSpreadingFactor(8); // ranges from 6-12,default 7 see API docs |
? | Serial.println("LoRa init succeeded."); |
? | } |
? | ? |
? | void loop() { |
? | if (millis() - lastSendTime > interval) { |
? | String message = "Testing Maker Nano RP2040 "; // send a message |
? | message += msgCount; |
? | sendMessage(message); |
? | Serial.println("Sending " + message); |
? | lastSendTime = millis();// timestamp the message |
? | interval = random(2000) + 1000;// 2-3 seconds |
? | msgCount++; |
? | } |
? | ? |
? | // parse for a packet, and call onReceive with the result: |
? | onReceive(LoRa.parsePacket()); |
? | } |
? | ? |
? | void sendMessage(String outgoing) { |
? | LoRa.beginPacket(); // start packet |
? | LoRa.print(outgoing); // add payload |
? | LoRa.endPacket(); // finish packet and send it |
? | msgCount++; // increment message ID |
? | } |
? | ? |
? | void onReceive(int packetSize) { |
? | if (packetSize == 0) return;// if there's no packet, return |
? | ? |
? | // read packet header bytes: |
? | String incoming = ""; |
? | ? |
? | while (LoRa.available()) { |
? | incoming += (char)LoRa.read(); |
? | } |
? | ? |
? | Serial.println("Message: " + incoming); |
? | Serial.println("RSSI: " + String(LoRa.packetRssi())); |
? | Serial.println("Snr: " + String(LoRa.packetSnr())); |
? | Serial.println(); |
? | } |
帶有板載邏輯轉換器的 RS-02 分線板的 Arduino 代碼
阿杜諾
? |
#include |
? |
#include |
? | ? |
? | const int csPin = 10;// LoRa radio chip select |
? | const int resetPin = 9; // LoRa radio reset |
? | const int irqPin = 2; // change for your board; must be a hardware interrupt pin |
? | const int OEPin = 8;// Output Enable Pin |
? | ? |
? | byte msgCount = 0;// count of outgoing messages |
? | int interval = 2000;// interval between sends |
? | long lastSendTime = 0;// time of last packet send |
? | ? |
? | void setup() { |
? | Serial.begin(115200); // initialize serial |
? | pinMode(OEPin,OUTPUT); |
? | digitalWrite(OEPin,HIGH); |
? | ? |
? | while (!Serial); |
? | ? |
? | Serial.println("LoRa Duplex - Set spreading factor"); |
? | ? |
? | // override the default CS, reset, and IRQ pins (optional) |
? | LoRa.setPins(csPin, resetPin, irqPin); // set CS, reset, IRQ pin |
? | ? |
? | if (!LoRa.begin(433E6)) { // initialize ratio at 915 MHz |
? | Serial.println("LoRa init failed. Check your connections."); |
? | while (true); // if failed, do nothing |
? | } |
? | ? |
? | LoRa.setSpreadingFactor(8); // ranges from 6-12,default 7 see API docs |
? | Serial.println("LoRa init succeeded."); |
? | } |
? | ? |
? | void loop() { |
? | if (millis() - lastSendTime > interval) { |
? | String message = "Testing Arduino and RA-02 breakout "; // send a message |
? | message += msgCount; |
? | sendMessage(message); |
? | Serial.println("Sending " + message); |
? | lastSendTime = millis();// timestamp the message |
? | interval = random(2000) + 1000;// 2-3 seconds |
? | msgCount++; |
? | } |
? | ? |
? | // parse for a packet, and call onReceive with the result: |
? | onReceive(LoRa.parsePacket()); |
? | } |
? | ? |
? | void sendMessage(String outgoing) { |
? | LoRa.beginPacket(); // start packet |
? | LoRa.print(outgoing); // add payload |
? | LoRa.endPacket(); // finish packet and send it |
? | msgCount++; // increment message ID |
? | } |
? | ? |
? | void onReceive(int packetSize) { |
? | if (packetSize == 0) return;// if there's no packet, return |
? | ? |
? | // read packet header bytes: |
? | String incoming = ""; |
? | ? |
? | while (LoRa.available()) { |
? | incoming += (char)LoRa.read(); |
? | } |
? | ? |
? | Serial.println("Message: " + incoming); |
? | Serial.println("RSSI: " + String(LoRa.packetRssi())); |
? | Serial.println("Snr: " + String(LoRa.packetSnr())); |
? | Serial.println(); |
- V/F頻率脈沖信號轉換器,頻率脈沖信號轉換器
- Pericom通用電平轉換器應用說明
- 帶電壓電平轉換器的低功率逆變器-74AUP1T04
- 帶電壓電平轉換器的低功率逆變器-74AUP1T14
- 具有電壓電平轉換器的低功耗2輸入或非門-74AUP1T02
- SIM卡接口電平轉換器-NXT4556
- 瑞盟MS4553 雙向電平轉換器—pin對pin兼容TXB0102
- RA 02帶電平轉換器的分線器開源分享
- 精密微功率?∑ RMS-DC轉換器LTC1966 13次下載
- 寬輸入范圍電路模式DC-DC升壓轉換器芯片XL6009 17次下載
- 濕度傳感器HZ-02RA產品手冊 4次下載
- HZ-02RA濕度傳感器的規格手冊 10次下載
- 采用電流模式DC-DC升壓轉換器調節器HM6297 27次下載
- 一種芯片間USB電壓電平轉換器 11次下載
- CC4049六反相緩沖器/電平轉換器中文資料pdf
- RA6T2的16位模數轉換器操作 [14] 驗證應用項目 248次閱讀
- RA6T2的16位模數轉換器操作 [13] 運行應用項目 224次閱讀
- RA6T2的16位模數轉換器操作 [11] 配置RA6T2 ADC模塊 (8) 177次閱讀
- RA6T2的16位模數轉換器操作 [10] 配置RA6T2 ADC模塊 (7) 187次閱讀
- RA6T2的16位模數轉換器操作 [8] 配置RA6T2 ADC模塊 (5) 189次閱讀
- RA6T2的16位模數轉換器操作 [7] 配置RA6T2 ADC模塊 (4) 180次閱讀
- RA6T2的16位模數轉換器操作 [5] 配置RA6T2 ADC模塊 (2) 229次閱讀
- RA6T2的16位模數轉換器操作 [4] 配置RA6T2 ADC模塊 (1) 215次閱讀
- RA6T2的16位模數轉換器操作 [2] A/D轉換器概述 (2) 224次閱讀
- RA6T2的16位模數轉換器操作 [1] 簡介,A/D轉換器概述 185次閱讀
- 雙向邏輯電平轉換器電路圖分享 2122次閱讀
- 如何將MAX13030E–MAX13035E邏輯電平轉換器用作存儲卡電平轉換器 815次閱讀
- LED電平轉換器包括故障檢測 775次閱讀
- digilent邏輯電平轉換器介紹 1958次閱讀
- 新唐科技I2C系列電平轉換器介紹 1676次閱讀
下載排行
本周
- 1Keysight B1500A 半導體器件分析儀用戶手冊、說明書 (中文)
- 19.00 MB | 4次下載 | 免費
- 2使用TL431設計電源
- 0.67 MB | 2次下載 | 免費
- 3BT134雙向可控硅手冊
- 1.74 MB | 2次下載 | 1 積分
- 4一種新型高效率的服務器電源系統
- 0.85 MB | 1次下載 | 1 積分
- 5LabVIEW環形控件
- 0.01 MB | 1次下載 | 1 積分
- 6PR735,使用UCC28060的600W交錯式PFC轉換器
- 540.03KB | 1次下載 | 免費
- 751單片機核心板原理圖
- 0.12 MB | 1次下載 | 5 積分
- 8BP2879DB支持調光調滅的非隔離低 PF LED 驅動器
- 1.44 MB | 1次下載 | 免費
本月
- 1開關電源設計原理手冊
- 1.83 MB | 54次下載 | 免費
- 2FS5080E 5V升壓充電兩串鋰電池充電管理IC中文手冊
- 8.45 MB | 23次下載 | 免費
- 3DMT0660數字萬用表產品說明書
- 0.70 MB | 13次下載 | 免費
- 4UC3842/3/4/5電源管理芯片中文手冊
- 1.75 MB | 12次下載 | 免費
- 5ST7789V2單芯片控制器/驅動器英文手冊
- 3.07 MB | 11次下載 | 1 積分
- 6TPS54202H降壓轉換器評估模塊用戶指南
- 1.02MB | 8次下載 | 免費
- 7STM32F101x8/STM32F101xB手冊
- 1.69 MB | 8次下載 | 1 積分
- 8基于MSP430FR6043的超聲波氣體流量計快速入門指南
- 2.26MB | 7次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935119次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉換器 PCB layout 設計
- 1.48MB | 420061次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233084次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費下載
- 340992 | 191367次下載 | 10 積分
- 5十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183335次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81581次下載 | 10 積分
- 7Keil工具MDK-Arm免費下載
- 0.02 MB | 73807次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65987次下載 | 10 積分
評論
查看更多