<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://w.electrodragon.com/w/index.php?action=history&amp;feed=atom&amp;title=NRF24L01-Mirf</id>
	<title>NRF24L01-Mirf - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://w.electrodragon.com/w/index.php?action=history&amp;feed=atom&amp;title=NRF24L01-Mirf"/>
	<link rel="alternate" type="text/html" href="https://w.electrodragon.com/w/index.php?title=NRF24L01-Mirf&amp;action=history"/>
	<updated>2026-06-09T03:33:02Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.37.2</generator>
	<entry>
		<id>https://w.electrodragon.com/w/index.php?title=NRF24L01-Mirf&amp;diff=25232&amp;oldid=prev</id>
		<title>Chao at 18:54, 5 February 2020</title>
		<link rel="alternate" type="text/html" href="https://w.electrodragon.com/w/index.php?title=NRF24L01-Mirf&amp;diff=25232&amp;oldid=prev"/>
		<updated>2020-02-05T18:54:42Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Progarmming Use Mirf ==&lt;br /&gt;
*[http://www.arduino.cc/playground/InterfacingWithHardware/Nrf24L01 Mirf]&amp;lt;br&amp;gt;&lt;br /&gt;
*Download library[http://www.arduino.cc/playground/InterfacingWithHardware/Nrf24L01 Mirf ]for arduino and install it. &lt;br /&gt;
*Connect nrf24l01 module to arduino as follow, add logic shifter for 5V-3V3, Power by 3V3:&lt;br /&gt;
DI 12 - MISO, DO 11 - MOSI, SCK 13 - SCK, CS 9 - CE, 3V3 - VCC, GND - GND, NC - IRQ&lt;br /&gt;
'''Demo codes '''&lt;br /&gt;
* Setup, same for sender and receiver)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot;&amp;gt;&lt;br /&gt;
//first included your library&lt;br /&gt;
#include &amp;lt;SPI.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Mirf.h&amp;gt;&lt;br /&gt;
#include &amp;lt;nRF24L01.h&amp;gt;&lt;br /&gt;
#include &amp;lt;MirfHardwareSpiDriver.h&amp;gt;&lt;br /&gt;
void setup(){&lt;br /&gt;
   Serial.begin(9600);&lt;br /&gt;
    Mirf.spi = &amp;amp;MirfHardwareSpi;&lt;br /&gt;
    //Mirf.csnPin = 10; (This is optional to change the chip select pin)&lt;br /&gt;
    //Mirf.cePin = 9; (This is optional to change the enable pin)&lt;br /&gt;
    Mirf.init(); &lt;br /&gt;
    Mirf.setTADDR((byte *)&amp;quot;serv1&amp;quot;);&lt;br /&gt;
    Mirf.payload = 32;&lt;br /&gt;
    Mirf.config();&lt;br /&gt;
    Serial.println(&amp;quot;Beginning ... &amp;quot;); // &amp;quot;Beginning ...&amp;quot; on sender, or &amp;quot;Listening ...&amp;quot; on sever (Receiver)&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The completed Demo Code ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Sender !! Receiver&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
* Send string in char directly&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot;&amp;gt; &lt;br /&gt;
void loop(){ &lt;br /&gt;
    Mirf.send((byte *) &amp;quot;Hello&amp;quot;);&lt;br /&gt;
    delay(500);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Send string in char (Optional writing)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot;&amp;gt; &lt;br /&gt;
void loop(){ &lt;br /&gt;
    char a[6] =&amp;quot;abced&amp;quot;; // char&lt;br /&gt;
    Mirf.send((byte *) a);&lt;br /&gt;
    delay(500);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
* Or:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot;&amp;gt; &lt;br /&gt;
void loop(){ &lt;br /&gt;
    int Vals[6] = {2, 4, -8, 3, 2};&lt;br /&gt;
    Mirf.send((byte *) a);&lt;br /&gt;
    delay(500);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|| Receive standard 32 Bytes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot;&amp;gt; &lt;br /&gt;
void loop(){ &lt;br /&gt;
     byte data[32]; // or int data[32];&lt;br /&gt;
     if(!Mirf.isSending() &amp;amp;&amp;amp; Mirf.dataReady()){&lt;br /&gt;
          Serial.println(&amp;quot;Got packet&amp;quot;);&lt;br /&gt;
          Mirf.getData((byte *) &amp;amp;data);&lt;br /&gt;
          Serial.write(byte(data[0])); //h&lt;br /&gt;
          Serial.write(byte(data[1])); //e&lt;br /&gt;
          Serial.write(byte(data[2])); //l&lt;br /&gt;
          Serial.write(byte(data[3])); //l&lt;br /&gt;
          Serial.write(byte(data[4])); //o&lt;br /&gt;
          Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
     }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Receive more than 32 bytes&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot;&amp;gt; &lt;br /&gt;
Mirf.getData(data);&lt;br /&gt;
int i;&lt;br /&gt;
for (i = 0; i &amp;lt; sizeof(data); i++)&lt;br /&gt;
    {&lt;br /&gt;
    Serial.println(data[i]); //Serial.print(data[i], DEC);&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot;&amp;gt; //first included your library&lt;br /&gt;
#include &amp;lt;SPI.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Mirf.h&amp;gt;&lt;br /&gt;
#include &amp;lt;nRF24L01.h&amp;gt;&lt;br /&gt;
#include &amp;lt;MirfHardwareSpiDriver.h&amp;gt;&lt;br /&gt;
void setup(){&lt;br /&gt;
   Serial.begin(9600);&lt;br /&gt;
    Mirf.spi = &amp;amp;MirfHardwareSpi;&lt;br /&gt;
    Mirf.csnPin = 10; //(This is optional to change the chip select pin)&lt;br /&gt;
    Mirf.cePin = 9; //(This is optional to change the enable pin)&lt;br /&gt;
    Mirf.init(); &lt;br /&gt;
    Mirf.setTADDR((byte *)&amp;quot;serv1&amp;quot;);&lt;br /&gt;
    Mirf.payload = 32;&lt;br /&gt;
    Mirf.config();&lt;br /&gt;
    Serial.println(&amp;quot;Beginning ... &amp;quot;); // &amp;quot;Beginning ...&amp;quot; on sender, or &amp;quot;Listening ...&amp;quot; on sever (Receiver)&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  void loop(){ &lt;br /&gt;
    Mirf.send((byte *) &amp;quot;Hello&amp;quot;);&lt;br /&gt;
    delay(500);&lt;br /&gt;
} &amp;lt;/syntaxhighlight&amp;gt;|| &amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot;&amp;gt; //first included your library&lt;br /&gt;
#include &amp;lt;SPI.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Mirf.h&amp;gt;&lt;br /&gt;
#include &amp;lt;nRF24L01.h&amp;gt;&lt;br /&gt;
#include &amp;lt;MirfHardwareSpiDriver.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void setup(){&lt;br /&gt;
   Serial.begin(9600);&lt;br /&gt;
    Mirf.spi = &amp;amp;MirfHardwareSpi;&lt;br /&gt;
    Mirf.csnPin = 10; //(This is optional to change the chip select pin)&lt;br /&gt;
    Mirf.cePin = 9; //(This is optional to change the enable pin)&lt;br /&gt;
    Mirf.init(); &lt;br /&gt;
    Mirf.setTADDR((byte *)&amp;quot;serv1&amp;quot;);&lt;br /&gt;
    Mirf.payload = 32;&lt;br /&gt;
    Mirf.config();&lt;br /&gt;
    Serial.println(&amp;quot;Beginning ... &amp;quot;); // &amp;quot;Beginning ...&amp;quot; on sender, or &amp;quot;Listening ...&amp;quot; on sever (Receiver)&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
void loop(){ &lt;br /&gt;
     byte data[32]; // or int data[32];&lt;br /&gt;
     if(!Mirf.isSending() &amp;amp;&amp;amp; Mirf.dataReady()){&lt;br /&gt;
          Serial.println(&amp;quot;Got packet&amp;quot;);&lt;br /&gt;
          Mirf.getData((byte *) &amp;amp;data);&lt;br /&gt;
          Serial.write(byte(data[0])); //h&lt;br /&gt;
          Serial.write(byte(data[1])); //e&lt;br /&gt;
          Serial.write(byte(data[2])); //l&lt;br /&gt;
          Serial.write(byte(data[3])); //l&lt;br /&gt;
          Serial.write(byte(data[4])); //o&lt;br /&gt;
          Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
     }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Result'''  Turn on the serial port on receiver arduino, it will show up:&lt;br /&gt;
 Beginning ... &lt;br /&gt;
 Got packet&lt;br /&gt;
 Hello&lt;br /&gt;
 Got packet&lt;br /&gt;
 Hello&lt;br /&gt;
 Got packet&lt;br /&gt;
 Hello&lt;br /&gt;
 Got packet&lt;br /&gt;
 Hello&lt;br /&gt;
* During the &amp;quot;beginning ...&amp;quot; line, press the restart button on the sender arduino, then reset the board and let it start to send data.&lt;br /&gt;
&lt;br /&gt;
=== Properties:  ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! byte !! Function !! Default !! Note &lt;br /&gt;
|-&lt;br /&gt;
| cePin || CE Pin controls RX / TX || 8 || -&lt;br /&gt;
|-&lt;br /&gt;
| csnPin || CSN Pin (Chip select not) || 7 || -&lt;br /&gt;
|-&lt;br /&gt;
| channel || RF Channel 0 - 127 or 0 - 84 in the US || 0 || -&lt;br /&gt;
|-&lt;br /&gt;
| payload || Size in bytes || Default 16, max 32 || Channel and payload must be the same for all nodes.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Functions  ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Function !! Decsription !! example&lt;br /&gt;
|-&lt;br /&gt;
| void init(void) || Initialize the module, set the pin modes for the configurable pins and initialize the SPI module.|| Mirf.init(); &lt;br /&gt;
|-&lt;br /&gt;
| void setRADDR(byte *addr) || Set the receiving address. Addresses are 5 bytes long. || Mirf.setRADDR((byte *)&amp;quot;addr1&amp;quot;); &lt;br /&gt;
|-&lt;br /&gt;
| void setTADDR(byte *addr) || Set the sending address. || Mirf.setTADDR((byte *)&amp;quot;addr1&amp;quot;);&lt;br /&gt;
|-&lt;br /&gt;
| void config(void) || Set channel and payload width. Power up in RX mode and flush RX fifo. || Mirf.payload = 32;&amp;lt;br&amp;gt;Mirf.channel = 2; &amp;lt;br&amp;gt;Mirf.config();&lt;br /&gt;
|-&lt;br /&gt;
| bool dataReady(void) || Is there data ready to be received? || if(Mirf.dataReady()){&amp;lt;br&amp;gt; //Get the data to play with.&amp;lt;br&amp;gt;} &lt;br /&gt;
|-&lt;br /&gt;
| void getData(byte *data) || Get the received data. 'data' should be an array of bytes Mirf.payload long. || byte data[Mirf.payload]&amp;lt;br&amp;gt;Mirf.getData(data);&lt;br /&gt;
|-&lt;br /&gt;
| void send(byte *data) || Send data. 'data' should be Mirf.payload bytes long. || -&lt;br /&gt;
|-&lt;br /&gt;
| bool isSending(void) || Return true if still trying to send. If the chip is still in transmit mode then this method will return the chip to receive mode. || Mirf.send(data); &amp;lt;br&amp;gt;while(Mirf.isSending()){&amp;lt;br&amp;gt; //Wait.&amp;lt;br&amp;gt;} //Chip is now in receive mode.&amp;lt;br&amp;gt; NB: Lots more information is available from the status registers regarding acknolagement or failure status. See Mirf.cpp:218. &lt;br /&gt;
|-&lt;br /&gt;
| bool rxFifoEmpty(void) || Is the RX Fifo Empty. || - &lt;br /&gt;
|-&lt;br /&gt;
| bool txFifoEmpty(void) || Is the TX Fifo Empty. || - &lt;br /&gt;
|-&lt;br /&gt;
| byte getStatus(void) || Return the status register. || - &lt;br /&gt;
|-&lt;br /&gt;
| void powerUpRx(void) || Power up chip and set to receive mode. Also clear sending interrupts. || - &lt;br /&gt;
|-&lt;br /&gt;
| void powerUpTx(void) ||Power up tx mode. || -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[category: NRF24]]&lt;/div&gt;</summary>
		<author><name>Chao</name></author>
	</entry>
</feed>