“MCookie-nRF/zh”的版本间的差异

来自Microduino Wikipedia
跳转至: 导航搜索
第1行: 第1行:
 
+
{| style="width: 800px;"
{{Language|mCookie-nRF}}
+
|-
 +
|[[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;"
 
{| style="width: 800px;"
 
|-
 
|-
 
|
 
|
[[file:mCookie-nRF-rect.jpg|400px|thumb|right|mCookie-nRF24]]
+
<p style="color: #333333;font-size:155%">'''技术规格'''</p>
mCookie-nRF24为一款高速嵌入式无线数传模块
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
==特色==
 
*低应用成本,链路层完全集成在模块上,非常便于开发;
 
*自动重发功能,自动检测和重发丢失的数据包,重发时间及重发次数可软件控制;
 
*自动存储未收到应答信号的数据包;
 
*自动应答功能,在收到有效数据后,模块自动发送应答信号,无须另行编程;
 
*可同时设置六路接收通道地址,可有选择性的打开接收通道;
 
*标准插针Dip2.54MM 间距接口,便于嵌入式应用;
 
*小巧、便宜、堆叠、开放;
 
*开源的硬件电路设计,与 Arduino 兼容的编程开发环境程;
 
*统一的 Microduino 接口规范,和丰富的外围模块,可方便、灵活的与其他符合 Microduino 接口规范的模块、传感器进行快速的连接和扩展;
 
*2.54间距的排母接口方便集成到洞洞板。
 
 
 
 
 
==规格==
 
*2.4GHz 全球开放ISM 频段,最大0dBm 发射功率,免许可证使用;
 
*低工作电压:1.9~3.6V低电压工作;
 
*SMA天线座,可自己更换兼容天线;
 
*支持六路通道的数据接收;
 
*高速率:2Mbps,由于空中传输时间很短,极大的降低了无线传输中的碰撞现象(软件设置256Kbps、1Mbps或者2Mbps的空中传输速率);
 
*多频点:125 频点,满足多点通信和跳频通信需要;
 
*低功耗:当工作在应答模式通信时,快速的空中传输及启动时间,极大的降低了电流消耗。
 
 
 
===引脚说明===
 
 
 
 
:[[file:mCookie-nRF24-1Big2.jpg|800px|thumb|center|mCookie-nRF24 Spec]]
 
:[[file:mCookie-nRF24-1Big2.jpg|800px|thumb|center|mCookie-nRF24 Spec]]
 
<br style="clear: left"/>
 
<br style="clear: left"/>
第57行: 第30行:
 
|}
 
|}
  
==文档==
+
*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:NRF24L01 datasheet.pdf]]'''
 
* 晶振:'''[[File:HCX-3SB-16M.pdf]]'''
 
* 晶振:'''[[File:HCX-3SB-16M.pdf]]'''
  
==开发==
+
----
 +
<br>
 +
<p style="color: #333333;font-size:135%">'''编程手册'''</p>
 
编程手册:[[Protocol_Reference]]
 
编程手册:[[Protocol_Reference]]
  
===Arduino库及支持包===
+
<br>
*采用RF24库类参考RF24库文件及RF24Network库文件:
+
----
**[https://github.com/Microduino/Microduino_Tutorials/tree/master/Microduino_Libraries/_03_mCookie_nRF_RF24 _03_mCookie_nRF_RF24]
+
<p style="color: #333333;font-size:135%">'''示例教程'''</p>
**[https://github.com/Microduino/Microduino_Tutorials/tree/master/Microduino_Libraries/_03_mCookie_nRF_RF24Network 03_mCookie_nRF_RF24Network]
+
*'''蓝牙通信程序(通用)'''
 +
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 无线网络发送例程
 +
*
 +
*向接收器发送数据
  
===程序下载===
+
*/
测试程序:'''[[File:Program_Test_NRF.zip]]'''
+
#include <RF24Network.h>
  
===两个mCookie core通过Nrf24通信测试===
+
/* 硬件配置: nRF24模块使用SPI通讯外加9脚和10脚 */
*所需要准备的硬件有:mCookie FT232R、mCookie Core*2、mCookie Nrf24*2;
+
RF24 radio(D9,D10);               
*所需要准备的软件有:Microduino提供的测试程序(Arduino端)、Arduino IDE(1.0版本以上)、RF24库、RF24Network库;
 
*将下载好的库文件夹放入Arduino IDE安装文件夹内的libraries中;
 
*启动Arduino IED,打开Microduino提供的测试程序,板卡选择mCookie Core (Atmega328P@16M,5V),直接下载即可;
 
*发送与接收端接线图:
 
[[File:Send.png|thumb|600px|center|发送端接线图]]
 
  
[[File:Rec.png|thumb|600px|center|接收端接线图]]
+
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;            // 记录发送时刻
**发送端按键可控制接收端一个LED开关;
+
unsigned long packets_sent;          // 记录发送次数
**发送端电位器可控制接收端另一个LED亮度。
 
  
  
 +
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>
 
*模块提供天线吗?
 
*模块提供天线吗?
 
**提供
 
**提供
第110行: 第214行:
 
**'''空阔地域'''大约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产品系列页面]]
[[file:mCookie-nRF24-t.jpg|thumb|600px|center|mCookie nRF24 Front]]
 
 
 
[[file:mCookie-nRF24-b.jpg|thumb|600px|center|mCookie nRF24 Back]]
 
 
 
 
 
|}
 

2018年12月18日 (二) 03:58的版本

MCookie-bt-rect.jpg






mCookieBLE

产品编号:XXXXXXX
Add-to-cart.jpg

mCookie-nRF24为一款高速嵌入式无线数传模块,具有信道多、通信稳定、发射功率可配置、具备低功率模式等优点。同时由于其自动重发功能,自动检测和重发丢失的数据包等功能,在制作无线应用时还可以通过软件代码对通信质量做保证。nRF模块在无线遥控、数据传输、报警系统、物联网等领域都有所应用。


技术规格


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 频点,满足多点通信和跳频通信需要;
  • 低功耗:当工作在应答模式通信时,快速的空中传输及启动时间,极大的降低了电流消耗。




技术细节

  • 低应用成本,链路层完全集成在模块上,非常便于开发;
  • 自动重发功能,自动检测和重发丢失的数据包,重发时间及重发次数可软件控制;
  • 自动存储未收到应答信号的数据包;
  • 自动应答功能,在收到有效数据后,模块自动发送应答信号,无须另行编程;
  • 可同时设置六路接收通道地址,可有选择性的打开接收通道;
  • 标准插针Dip2.54MM 间距接口,便于嵌入式应用;
  • 小巧、便宜、堆叠、开放;
  • 开源的硬件电路设计,与 Arduino 兼容的编程开发环境程;
  • 统一的 Microduino 接口规范,和丰富的外围模块,可方便、灵活的与其他符合 Microduino 接口规范的模块、传感器进行快速的连接和扩展;




主要元件



编程手册

编程手册:Protocol_Reference



示例教程

  • 蓝牙通信程序(通用)

1、将核心+模块和nRF通信模块堆叠在电池盒上。
2、将USB连接线一段插入电池盒,另一端连接PC电脑,并打开电池盒的电源开关。
3、准备另外一组同样的模块,分别作为发射端与接收端。
TX程序

// 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.");
  }
}
Tx


程序运行结果:发送端串口返回发送状态,每隔2秒发送一次。

  • 接收端程序
// 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);
  }
}


Rx

程序运行结果:接收端串口返回数据包序号以及接收到时发送端的运行时间。
该示例实现了nRF24点对点通信,玩家若想自行更改程序可参照Microduino IDE中的示例套用格式即可。


应用



Q&A

  • 模块提供天线吗?
    • 提供
  • 如何工作,软件实现还是有硬件完成?
    • 自动重发功能,自动检测并重新发送丢失的数据包。重传时间和重传次数,可以通过软件来控制;
    • 自动存储未收到应答信号的数据包;
    • 自动回复功能,收到有效数据后,模块将自动发送应答信号,无需再编程;
  • 模块上支持5V 到3.3V 降压转换吗?
    • 在Core 和Core+ 上不支持DC-DC 5V->3.3V的转换,用户可以叠加BM,USBTTL,DUO,UNO 来完成这个功能。
  • 如何控制该模块运行在低功耗模式或者直接关掉?
    • 可以使用Arduino 库提供的函数 powerDown() 函数。
  • 此模块的工作范围?
    • 空阔地域大约100米。



图库

mCookie-BT Front
mCookie-BT Back

返回mCookie产品系列页面