“MCookie-nRF/zh”的版本间的差异
Zhangfengfeng(讨论 | 贡献) (→文档) |
502748957@qq.com(讨论 | 贡献) |
||
(未显示2个用户的5个中间版本) | |||
第1行: | 第1行: | ||
− | + | {| style="width: 800px;" | |
− | + | |- | |
+ | |[[file:NRF SHOW.jpg|300px|left]] || | ||
+ | ::<p style="color: #000000;font-size:200%"><br><br><br><br><br>'''mCookie-nRF'''</p> | ||
+ | ::产品编号:'''<big style="color: #00A0A6">XXXXXXX</big>''' | ||
+ | |- | ||
+ | |[[File: Add-to-cart.jpg|300px|left|link=https://shop108263663.taobao.com/?spm=a230r.7195193.1997079397.2.ek3cAW]]|| | ||
+ | ::<p style="color: #000000;font-size:120%"> mCookie-nRF24为一款高速嵌入式无线数传模块,具有信道多、通信稳定、发射功率可配置、具备低功率模式等优点。同时由于其自动重发功能,自动检测和重发丢失的数据包等功能,在制作无线应用时还可以通过软件代码对通信质量做保证。nRF模块在无线遥控、数据传输、报警系统、物联网等领域都有所应用。</p> | ||
+ | |} | ||
+ | <br> | ||
{| style="width: 800px;" | {| style="width: 800px;" | ||
|- | |- | ||
| | | | ||
− | + | <p style="color: #333333;font-size:155%">'''技术规格'''</p> | |
− | + | <br style="clear: left"/> | |
+ | {|class="wikitable" | ||
+ | ! rowspan="1" | NRF24L01模块引脚名 || Microduino引脚 || 功能 | ||
+ | |- | ||
+ | | SCK|| D13 || SPI总线时钟 | ||
+ | |- | ||
+ | | SI || D12 || 数据输入脚 | ||
+ | |- | ||
+ | | SO || D11 || 数据输出脚 | ||
+ | |- | ||
+ | | CSN || D10 || SPI片选信 (程序中需要定义) | ||
+ | |- | ||
+ | | CE || D9 || RX 或TX 模式选择 (程序中需要定义) | ||
+ | |} | ||
+ | *2.4GHz 全球开放ISM 频段,最大0dBm 发射功率,免许可证使用; | ||
+ | *低工作电压:1.9~3.6V低电压工作; | ||
+ | *SMA天线座,可自己更换兼容天线; | ||
+ | *支持六路通道的数据接收; | ||
+ | *高速率:2Mbps,由于空中传输时间很短,极大的降低了无线传输中的碰撞现象(软件设置256Kbps、1Mbps或者2Mbps的空中传输速率); | ||
+ | *多频点:125 频点,满足多点通信和跳频通信需要; | ||
+ | *低功耗:当工作在应答模式通信时,快速的空中传输及启动时间,极大的降低了电流消耗。 | ||
+ | <br> | ||
+ | ---- | ||
+ | <br> | ||
+ | {| style="width: 800px;" | ||
+ | |- | ||
+ | | | ||
+ | <p style="color: #333333;font-size:155%">'''技术细节'''</p> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
*低应用成本,链路层完全集成在模块上,非常便于开发; | *低应用成本,链路层完全集成在模块上,非常便于开发; | ||
*自动重发功能,自动检测和重发丢失的数据包,重发时间及重发次数可软件控制; | *自动重发功能,自动检测和重发丢失的数据包,重发时间及重发次数可软件控制; | ||
第26行: | 第54行: | ||
*开源的硬件电路设计,与 Arduino 兼容的编程开发环境程; | *开源的硬件电路设计,与 Arduino 兼容的编程开发环境程; | ||
*统一的 Microduino 接口规范,和丰富的外围模块,可方便、灵活的与其他符合 Microduino 接口规范的模块、传感器进行快速的连接和扩展; | *统一的 Microduino 接口规范,和丰富的外围模块,可方便、灵活的与其他符合 Microduino 接口规范的模块、传感器进行快速的连接和扩展; | ||
− | |||
+ | <br> | ||
+ | ---- | ||
+ | <br> | ||
− | == | + | <p style="color: #333333;font-size:135%">'''主要元件'''</p> |
− | + | * 芯片:'''[[File:NRF24L01 datasheet.pdf]]''' | |
− | * | + | * 晶振:'''[[File:HCX-3SB-16M.pdf]]''' |
− | * | + | |
− | * | + | ---- |
− | * | + | <br> |
− | * | + | <p style="color: #333333;font-size:135%">'''编程手册'''</p> |
− | * | + | <big>'''[[Protocol_Reference]]''' |
+ | |||
+ | <br> | ||
+ | ---- | ||
+ | <p style="color: #333333;font-size:135%">'''示例教程'''</p> | ||
+ | 1、将核心+模块和nRF通信模块堆叠在电池盒上。<br> | ||
+ | 2、将USB连接线一段插入电池盒,另一端连接PC电脑,并打开电池盒的电源开关。<br> | ||
+ | 3、准备另外一组同样的模块,分别作为发射端与接收端。<br> | ||
+ | [[file:NRFBATTERY+.jpg|thumb|600px|center|Tx]] | ||
+ | '''TX程序'''<br> | ||
+ | <source lang = "cpp"> | ||
+ | // LICENSE: GPL v3 (http://www.gnu.org/licenses/gpl.html) | ||
+ | // ============== | ||
+ | |||
+ | /* | ||
+ | *nRF24 无线网络发送例程 | ||
+ | * | ||
+ | *向接收器发送数据 | ||
+ | |||
+ | */ | ||
+ | #include <RF24Network.h> | ||
+ | |||
+ | /* 硬件配置: nRF24模块使用SPI通讯外加9脚和10脚 */ | ||
+ | RF24 radio(D9,D10); | ||
+ | |||
+ | RF24Network network(radio); // Network uses that radio | ||
+ | |||
+ | const uint16_t this_node = 01; // 本机地址 | ||
+ | const uint16_t other_node = 00; // 接收器的地址 | ||
− | = | + | const unsigned long interval = 2000; //ms 发送间隔2000ms |
− | + | unsigned long last_sent; // 记录发送时刻 | |
− | + | unsigned long packets_sent; // 记录发送次数 | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | struct payload_t { // 数据的结构体、时间与计数值 | |
+ | unsigned long ms; | ||
+ | unsigned long counter; | ||
+ | }; | ||
+ | void setup(void) | ||
+ | { | ||
+ | Serial.begin(115200); | ||
+ | Serial.println("RF24Network/examples/helloworld_tx/"); | ||
+ | radio.begin(); | ||
+ | //nRF24网络初始化, 使用频道90,本机地址01 | ||
+ | network.begin(/*channel*/ 90, /*node address*/ this_node); | ||
+ | } | ||
+ | void loop() { | ||
+ | network.update(); // 网络更新,必要 | ||
+ | unsigned long now = millis(); //获取实时的运行时间,赋值给now | ||
+ | if ( now - last_sent >= interval ) //减去上次发送的时间,若大于interval则发送,小于则 //继续等待 | ||
+ | { | ||
+ | last_sent = now; //now赋值给last | ||
+ | Serial.print("Sending..."); //串口输出“sending” | ||
+ | payload_t payload = { millis(), packets_sent++ }; //发送实时运行时间与数据包序号,发送后序序 //号加一 | ||
+ | RF24NetworkHeader header(/*to node*/ other_node); | ||
+ | bool ok = network.write(header,&payload,sizeof(payload)); //发送数据 | ||
+ | if (ok) | ||
+ | Serial.println("ok."); | ||
+ | else | ||
+ | Serial.println("failed."); | ||
+ | } | ||
+ | } | ||
+ | </source> | ||
+ | [[file:NRF24 HELLOWORLDTX.png|thumb|600px|center|Tx]] | ||
+ | <br> | ||
+ | 程序运行结果:发送端串口返回发送状态,每隔2秒发送一次。<br> | ||
+ | *接收端程序 | ||
+ | <source lang = "cpp"> | ||
+ | // LICENSE: GPL v3 (http://www.gnu.org/licenses/gpl.html) | ||
+ | // ============== | ||
− | + | /* | |
− | * | + | *nRF24 无线网络接收例程 |
− | * | + | * |
+ | *监听发送器发射的数据,然后打印出来 | ||
− | + | */ | |
− | |||
− | * | ||
− | |||
− | |||
− | + | #include <RF24Network.h> | |
− | + | /* 硬件配置: nRF24模块使用SPI通讯外加9脚和10脚 */ | |
− | + | RF24 radio(D9,D10); | |
− | + | RF24Network network(radio); | |
− | + | const uint16_t this_node = 00; // 本机地址 | |
− | + | const uint16_t other_node = 01; // 发送器的地址 | |
− | |||
− | |||
− | |||
− | |||
− | + | struct payload_t { // 数据的结构体 | |
+ | unsigned long ms; | ||
+ | unsigned long counter; | ||
+ | }; | ||
+ | void setup(void) | ||
+ | { | ||
+ | Serial.begin(115200); | ||
+ | Serial.println("RF24Network/examples/helloworld_rx/"); | ||
+ | |||
+ | radio.begin(); | ||
+ | //nRF24网络初始化, 使用频道90,本机地址00 | ||
+ | network.begin(/*channel*/ 90, /*node address*/ this_node); | ||
+ | } | ||
− | + | void loop(void){ | |
− | + | ||
− | + | network.update(); // 网络更新,必要 | |
+ | while ( network.available() ) { // 接收到数据 | ||
+ | |||
+ | RF24NetworkHeader header; | ||
+ | payload_t payload; | ||
+ | network.read(header,&payload,sizeof(payload)); //读取数据 | ||
+ | Serial.print("Received packet #"); | ||
+ | Serial.print(payload.counter); | ||
+ | Serial.print(" at "); | ||
+ | Serial.println(payload.ms); | ||
+ | } | ||
+ | } | ||
+ | </source> | ||
+ | <br> | ||
+ | [[file:NRF24 HELLOWORLDRX.png|thumb|600px|center|Rx]] | ||
+ | 程序运行结果:接收端串口返回数据包序号以及接收到时发送端的运行时间。<br> | ||
+ | 该示例实现了nRF24点对点通信,玩家若想自行更改程序可参照Microduino IDE中的示例套用格式即可。<br> | ||
+ | ---- | ||
+ | <p style="color: #333333;font-size:135%">'''应用'''</p> | ||
+ | <br> | ||
+ | ---- | ||
− | = | + | <p style="color: #333333;font-size:135%">'''Q&A'''</p> |
*模块提供天线吗? | *模块提供天线吗? | ||
**提供 | **提供 | ||
第108行: | 第213行: | ||
**'''空阔地域'''大约100米。 | **'''空阔地域'''大约100米。 | ||
+ | <br> | ||
+ | ---- | ||
+ | <p style="color: #333333;font-size:135%">'''图库'''</p> | ||
+ | {| border="0" cellpadding="10" width="100%" | ||
+ | |- | ||
+ | |width="50%" valign="top" align="left"| | ||
+ | [[file:NRF TOP.jpg|thumb|400px|center|mCookie-BT Front]] | ||
+ | |width="50%" valign="top" align="left"| | ||
+ | [[file:NRF BUT.jpg|thumb|400px|center|mCookie-BT Back]] | ||
+ | |} | ||
− | + | [[MCookie_产品系列/zh|返回mCookie产品系列页面]] | |
− | [[ | ||
− | |||
− | |||
− | |||
− | |||
− |
2018年12月18日 (二) 04:17的最新版本
| |
|
技术规格
|