查看“MCookie-nRF/zh”的源代码
←
MCookie-nRF/zh
跳转至:
导航
、
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
{| style="width: 800px;" |- |[[file:mCookie-bt-rect.jpg|300px|left]] || ::<p style="color: #000000;font-size:200%"><br><br><br><br><br>'''mCookieBLE'''</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;" |- | <p style="color: #333333;font-size:155%">'''技术规格'''</p> :[[file:mCookie-nRF24-1Big2.jpg|800px|thumb|center|mCookie-nRF24 Spec]] <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> *低应用成本,链路层完全集成在模块上,非常便于开发; *自动重发功能,自动检测和重发丢失的数据包,重发时间及重发次数可软件控制; *自动存储未收到应答信号的数据包; *自动应答功能,在收到有效数据后,模块自动发送应答信号,无须另行编程; *可同时设置六路接收通道地址,可有选择性的打开接收通道; *标准插针Dip2.54MM 间距接口,便于嵌入式应用; *小巧、便宜、堆叠、开放; *开源的硬件电路设计,与 Arduino 兼容的编程开发环境程; *统一的 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> 编程手册:[[Protocol_Reference]] <br> ---- <p style="color: #333333;font-size:135%">'''示例教程'''</p> *'''蓝牙通信程序(通用)''' 1、将核心+模块和nRF通信模块堆叠在电池盒上。<br> 2、将USB连接线一段插入电池盒,另一端连接PC电脑,并打开电池盒的电源开关。<br> 3、准备另外一组同样的模块,分别作为发射端与接收端。<br> '''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> *模块提供天线吗? **提供 *如何工作,软件实现还是有硬件完成? **自动重发功能,自动检测并重新发送丢失的数据包。重传时间和重传次数,可以通过软件来控制; **自动存储未收到应答信号的数据包; **自动回复功能,收到有效数据后,模块将自动发送应答信号,无需再编程; *模块上支持5V 到3.3V 降压转换吗? **在Core 和Core+ 上不支持DC-DC 5V->3.3V的转换,用户可以叠加BM,USBTTL,DUO,UNO 来完成这个功能。 *如何控制该模块运行在低功耗模式或者直接关掉? **可以使用Arduino 库提供的函数 powerDown() 函数。 *此模块的工作范围? **'''空阔地域'''大约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产品系列页面]]
返回至
MCookie-nRF/zh
。
导航菜单
个人工具
创建账户
登录
名字空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
Welcome
首页
创客大赛
大赛详情
3D打印
安装月球车
图形化编程
操控月球车
升级月球车
编程工具下载
软件下载
Arduino
Processing
Mixly
Scratch
模块套件
Microduino 102
mCookie 102
mCookie 202
mCookie 302
IBC
其他
应用套件
四轴飞行器
平衡车
小车CUBE
音乐播放器
刷卡音乐播放器
wifi气象站
彩虹音乐触摸灯
分贝检测仪
迎门汇报
LED点阵时钟
LED点阵屏幕
硬件
mCookie
Sensor
Microduino
MicroWrt
MicroNux
MicroRobot-Core
MicroRobot-CoreESP
ideaBoard
ideaBox
MicroMV
MicroAI
帮助
常见问题
帮助
工具
链入页面
相关更改
特殊页面
页面信息