資料介紹
描述
嗨朋友:)
我想與您分享另一個(gè) Nanoframework 項(xiàng)目。
讓我們從換向裝置開(kāi)始吧!
今天,換向是一個(gè)非常重要的概念。
我們有許多設(shè)備和協(xié)議可以與其他事物通信,例如藍(lán)牙或 Wi-Fi 或有線……。
當(dāng)我們想要控制遠(yuǎn)程汽車或電燈或……時(shí),特別是在物聯(lián)網(wǎng)項(xiàng)目中,通信非常重要。
?

我之前使用過(guò) esp32 Wi-Fi 和簡(jiǎn)單的電線。
所以我決定使用名為 NRF24L01_PA_LNA 的新模塊
NRF24L01_PA_LNA 是與 SPI 配合使用的無(wú)線模塊
?

我準(zhǔn)備了一個(gè)基礎(chǔ)納米框架庫(kù)來(lái)控制 NRF24L01_PA_LNA。(AP.NanoFrameWork.NRF24L01PALNA)
實(shí)際上,我正在研究它,我將繼續(xù)為 Nanoframework 開(kāi)發(fā)這個(gè)庫(kù)。
好的,讓我們通過(guò)示例項(xiàng)目向您展示我的庫(kù)用法:
首先,我們需要兩個(gè)“esp32 wroom32”開(kāi)發(fā)套件。(我有一個(gè)開(kāi)發(fā)套件 v1 和開(kāi)發(fā)套件 v4)
?

?

我們需要兩個(gè) NRF24L01_PA_LNA 模塊
第一步:將 NRF24L01_PA_LNA 連接到 esp32 開(kāi)發(fā)套件。
接地到接地
VCC 到 VCC 3.3
IRQ 到 GPIO 17
CE 到 GPIO 16
MOSI 到 MOSI(GPIO 23 或 GPIO 13 ??)
MISO 到 MISO(GPIO 19 或 GPIO 12 ??)
SS 到 SS(GPIO 15 或 GPIO 5 ??)
?

當(dāng)我們查看 esp32 引腳時(shí),我們發(fā)現(xiàn)它有 2 個(gè) SPI 接口(VSPI、HSPI),這里的問(wèn)題是哪個(gè)接口必須連接到 NRF24L01_PA_LNA ??!!!
?

為了找到答案,讓我們來(lái)看看 Nanoframework spi 示例
?

嗯,對(duì)于這個(gè)示例,我無(wú)法理解執(zhí)行哪個(gè)接口 Nanoframework spi 庫(kù)?!
經(jīng)過(guò)大量研發(fā),我找到了它;Nanoframework SPI 庫(kù)與 SPI1 配合使用。因此,我們需要為 SPI1 設(shè)置 PinFunction。
我用的是VSPI。所以,我應(yīng)該像這樣設(shè)置 PinFunction:
?

?

現(xiàn)在,我們應(yīng)該用這個(gè)參數(shù)初始化 SPI:
?

注:該參數(shù)根據(jù)NRF24L01PALNA文檔進(jìn)行初始化
然后,使用 AP.NanoFrameWork.NRF24L01PALNA,我們可以輕松地發(fā)送和接收數(shù)據(jù):
最初的:
?

注意:您可以在發(fā)送方和接收方上設(shè)置 PA 和數(shù)據(jù)速率
發(fā)件人:
初始交易
?

或者
?

發(fā)送數(shù)據(jù)
?

收到:
初始接收
?

開(kāi)始接收
?

有些參數(shù)在我的庫(kù)中是硬編碼的,但我會(huì)開(kāi)發(fā)它并使其更靈活
?

?

?
發(fā)送
var gpioController = new GpioController();
var p1 = Configuration.GetFunctionPin(DeviceFunction.SPI1_CLOCK);
if (p1 != 18)
{
Configuration.SetPinFunction(18, DeviceFunction.SPI1_CLOCK);
Configuration.SetPinFunction(19, DeviceFunction.SPI1_MISO);
Configuration.SetPinFunction(23, DeviceFunction.SPI1_MOSI);
}
var irq = gpioController.OpenPin(17);
irq.SetPinMode(PinMode.InputPullUp);
irq.ValueChanged += Irq_ValueChanged;
var ce = gpioController.OpenPin(16);
ce.SetPinMode(PinMode.Output);
var csn = gpioController.OpenPin(5, PinMode.Output);
Thread.Sleep(200);
SpiDevice spiDevice;
SpiConnectionSettings connectionSettings;
SpiBusInfo spiBusInfo = SpiDevice.GetBusInfo(1);
Debug.WriteLine($"{nameof(spiBusInfo.ChipSelectLineCount)}: {spiBusInfo.ChipSelectLineCount}");
Debug.WriteLine($"{nameof(spiBusInfo.MaxClockFrequency)}: {spiBusInfo.MaxClockFrequency}");
Debug.WriteLine($"{nameof(spiBusInfo.MinClockFrequency)}: {spiBusInfo.MinClockFrequency}");
Debug.WriteLine($"{nameof(spiBusInfo.SupportedDataBitLengths)}: ");
foreach (var data in spiBusInfo.SupportedDataBitLengths)
{
Debug.WriteLine($" {data}");
}
connectionSettings = new SpiConnectionSettings(1, -1);
connectionSettings.ClockFrequency = 4_000_000;
connectionSettings.DataBitLength = 8;
connectionSettings.DataFlow = DataFlow.MsbFirst;
connectionSettings.Mode = SpiMode.Mode0;
// Then you create your SPI device by passing your settings
spiDevice = SpiDevice.Create(connectionSettings);
Thread.Sleep(50);
NRFActions nrf24 = new NRFActions(spiDevice, csn, ce);
////Read Status
////..................
nrf24.InitialTXMode(NRFActions.PAState.Min, NRFActions.DataRate.d1Mbps);
Thread.Sleep(100);
while (true)
{
nrf24.SendData("Hi My Name Is Alireza Paridar.)");
Thread.Sleep(1000);
}
?
接收:
var gpioController = new GpioController();
var irq = gpioController.OpenPin(17);
irq.SetPinMode(PinMode.InputPullUp);
irq.ValueChanged += Irq_ValueChanged;
var p1 = Configuration.GetFunctionPin(DeviceFunction.SPI1_CLOCK);
if (p1 != 18)
{
Configuration.SetPinFunction(18, DeviceFunction.SPI1_CLOCK);
Configuration.SetPinFunction(19, DeviceFunction.SPI1_MISO);
Configuration.SetPinFunction(23, DeviceFunction.SPI1_MOSI);
}
var ce = gpioController.OpenPin(16);
ce.SetPinMode(PinMode.Output);
// var csn = gpioController.OpenPin(15, PinMode.Output);
var csn = gpioController.OpenPin(5, PinMode.Output);
Thread.Sleep(200);
SpiDevice spiDevice;
SpiConnectionSettings connectionSettings;
Debug.WriteLine("Hello from sample for System.Device.Spi!");
// You can get the values of SpiBus
SpiBusInfo spiBusInfo = SpiDevice.GetBusInfo(1);
Debug.WriteLine($"{nameof(spiBusInfo.ChipSelectLineCount)}: {spiBusInfo.ChipSelectLineCount}");
Debug.WriteLine($"{nameof(spiBusInfo.MaxClockFrequency)}: {spiBusInfo.MaxClockFrequency}");
Debug.WriteLine($"{nameof(spiBusInfo.MinClockFrequency)}: {spiBusInfo.MinClockFrequency}");
Debug.WriteLine($"{nameof(spiBusInfo.SupportedDataBitLengths)}: ");
foreach (var data in spiBusInfo.SupportedDataBitLengths)
{
Debug.WriteLine($" {data}");
}
connectionSettings = new SpiConnectionSettings(1, -1);
connectionSettings.ClockFrequency = 4_000_000;//96000;//10_000_000;
connectionSettings.DataBitLength = 8;
connectionSettings.DataFlow = DataFlow.MsbFirst;
connectionSettings.Mode = SpiMode.Mode0;
// Then you create your SPI device by passing your settings
spiDevice = SpiDevice.Create(connectionSettings);
Thread.Sleep(50);
NRFActions nrf24 = new NRFActions(spiDevice, csn, ce);
nrf24.InitialRXMode(NRFActions.PAState.Min, NRFActions.DataRate.d1Mbps);
while (true)
{
Thread.Sleep(1000);
var buf = nrf24.ReciveData();
if(buf==null || buf.Length <= 0)
{
continue;
}
string res = "";
for (int i = 0; i < buf.Length; i++)
{
res += $"{buf[i].ToString()},";
}
Debug.WriteLine(res);
Debug.WriteLine("");
string txt = System.Text.Encoding.UTF8.GetString(buf, 0, buf.Length);
Debug.WriteLine(txt);
Debug.WriteLine("------------------");
}
我有很多想法可以用這個(gè)模塊創(chuàng)建很多項(xiàng)目,我正在努力。完成后我會(huì)分享結(jié)果。
如果你愿意,可以在 GitHub 上加入我來(lái)開(kāi)發(fā)這個(gè)庫(kù)。
我的 GitHub (github.com/AlirezaP)
AlirezaP/AP.NanoFrameWork.NRF24L01PALNA (github.com)
NanoFrameWork 使處理硬件變得容易。忘記低級(jí) c 或 c++ 代碼,只關(guān)注想法;)
- NRF24L01遙控LED開(kāi)源分享
- nRF24L01無(wú)線模塊筆記
- 基于arm11的嵌入式linux中nrf24l01驅(qū)動(dòng)的實(shí)現(xiàn)
- 單片無(wú)線收發(fā)器芯片NRF24L01 PCB原理圖下載 0次下載
- NRF24L01的模塊資料和C語(yǔ)言程序和使用與開(kāi)發(fā)攻略合集免費(fèi)下載 42次下載
- nRF24L01無(wú)線2.4G通信模塊的詳細(xì)研究資料說(shuō)明
- nRF24L01無(wú)線模塊使用教程之經(jīng)典使用程序詳細(xì)資料合集免費(fèi)下載 153次下載
- nRF24L01相關(guān)知識(shí)詳述 27次下載
- NRF24L01程序 25次下載
- nRF24L01模塊引腳 0次下載
- NRF24l01 程序 34次下載
- NRF24L01編程心得 0次下載
- 基于nRF24L01的數(shù)據(jù)無(wú)線傳輸系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) 78次下載
- 基于nRF24L01的通用無(wú)線通信模塊設(shè)計(jì) 64次下載
- nRF24L01 pdf datasheet (Single
- nRF24L01無(wú)線通訊模塊的驅(qū)動(dòng)設(shè)計(jì)與實(shí)現(xiàn) 3524次閱讀
- stm32 24l01按鍵 改 發(fā)射頻率 3404次閱讀
- 微雪電子NRF24L01 RF Board 2.4G無(wú)線模塊簡(jiǎn)介 3075次閱讀
- 如何通過(guò)STM32驅(qū)動(dòng)nRF24L01發(fā)送數(shù)據(jù) 7777次閱讀
- 如何將芯片設(shè)置為發(fā)射模式(NRF24L01為例) 3827次閱讀
- 基于nRF24L01的無(wú)線USB控制系統(tǒng) 4990次閱讀
- 基于STM32F103和nRF24L01的近程無(wú)線數(shù)傳系統(tǒng)設(shè)計(jì) 2710次閱讀
- 基于STC89C52和nRF24L01的智能小車設(shè)計(jì) 8526次閱讀
- 基于nRF24L01的無(wú)線門禁控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) 3319次閱讀
- 一種DSP和nRF24L01的無(wú)線環(huán)境監(jiān)測(cè)系統(tǒng)的設(shè)計(jì) 2507次閱讀
- nrf24l01無(wú)線模塊傳輸距離分析 3.5w次閱讀
- 基于BOA和nRF24L01的智能家居系統(tǒng) 2824次閱讀
- 無(wú)線模塊nrf24l01中文資料_引腳圖及引腳定義_電路原理及實(shí)例 18.9w次閱讀
- nRF24L01無(wú)線模塊的傳輸速度及距離 3.7w次閱讀
- nRF24L01寄存器地址與說(shuō)明 1.1w次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來(lái)的未來(lái)-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開(kāi)發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊(cè)
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德?tīng)栔?/a>
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論