33import  usys 
44import  ustruct  as  struct 
55import  utime 
6- from  machine  import  Pin , SPI 
6+ from  machine  import  Pin , SPI ,  SoftSPI 
77from  nrf24l01  import  NRF24L01 
88from  micropython  import  const 
99
10- # Slave  pause between receiving data and checking for further packets. 
10+ # Responder  pause between receiving data and checking for further packets. 
1111_RX_POLL_DELAY  =  const (15 )
12- # Slave  pauses an additional _SLAVE_SEND_DELAY  ms after receiving data and before 
13- # transmitting to allow the (remote) master  time to get into receive mode. The 
14- # master  may be a slow device. Value tested with Pyboard, ESP32 and ESP8266. 
15- _SLAVE_SEND_DELAY  =  const (10 )
12+ # Responder  pauses an additional _RESPONER_SEND_DELAY  ms after receiving data and before 
13+ # transmitting to allow the (remote) initiator  time to get into receive mode. The 
14+ # initiator  may be a slow device. Value tested with Pyboard, ESP32 and ESP8266. 
15+ _RESPONDER_SEND_DELAY  =  const (10 )
1616
1717if  usys .platform  ==  "pyboard" :
18-  cfg  =  {"spi" : 2 , "miso" : "Y7" , "mosi" : "Y8" , "sck" : "Y6" , "csn" : "Y5" , "ce" : "Y4" }
18+  spi  =  SPI (2 ) # miso : Y7, mosi : Y8, sck : Y6 
19+  cfg  =  {"spi" : spi , "csn" : "Y5" , "ce" : "Y4" }
1920elif  usys .platform  ==  "esp8266" : # Hardware SPI 
20-  cfg  =  {"spi" : 1 , "miso" : 12 , "mosi" : 13 , "sck" : 14 , "csn" : 4 , "ce" : 5 }
21+  spi  =  SPI (1 ) # miso : 12, mosi : 13, sck : 14 
22+  cfg  =  {"spi" : spi , "csn" : 4 , "ce" : 5 }
2123elif  usys .platform  ==  "esp32" : # Software SPI 
22-  cfg  =  {"spi" : - 1 , "miso" : 32 , "mosi" : 33 , "sck" : 25 , "csn" : 26 , "ce" : 27 }
24+  spi  =  SoftSPI (sck = Pin (25 ), mosi = Pin (33 ), miso = Pin (32 ))
25+  cfg  =  {"spi" : spi , "csn" : 26 , "ce" : 27 }
26+ elif  usys .platform  ==  "rp2" : # Hardware SPI with explicit pin definitions 
27+  spi  =  SPI (0 , sck = Pin (2 ), mosi = Pin (3 ), miso = Pin (4 ))
28+  cfg  =  {"spi" : spi , "csn" : 5 , "ce" : 6 }
2329else :
2430 raise  ValueError ("Unsupported platform {}" .format (usys .platform ))
2531
2834pipes  =  (b"\xe1 \xf0 \xf0 \xf0 \xf0 " , b"\xd2 \xf0 \xf0 \xf0 \xf0 " )
2935
3036
31- def  master ():
37+ def  initiator ():
3238 csn  =  Pin (cfg ["csn" ], mode = Pin .OUT , value = 1 )
3339 ce  =  Pin (cfg ["ce" ], mode = Pin .OUT , value = 0 )
34-  if  cfg ["spi" ] ==  - 1 :
35-  spi  =  SPI (- 1 , sck = Pin (cfg ["sck" ]), mosi = Pin (cfg ["mosi" ]), miso = Pin (cfg ["miso" ]))
36-  nrf  =  NRF24L01 (spi , csn , ce , payload_size = 8 )
37-  else :
38-  nrf  =  NRF24L01 (SPI (cfg ["spi" ]), csn , ce , payload_size = 8 )
40+  spi  =  cfg ["spi" ]
41+  nrf  =  NRF24L01 (spi , csn , ce , payload_size = 8 )
3942
4043 nrf .open_tx_pipe (pipes [0 ])
4144 nrf .open_rx_pipe (1 , pipes [1 ])
@@ -46,7 +49,7 @@ def master():
4649 num_failures  =  0 
4750 led_state  =  0 
4851
49-  print ("NRF24L01 master  mode, sending %d packets..."  %  num_needed )
52+  print ("NRF24L01 initiator  mode, sending %d packets..."  %  num_needed )
5053
5154 while  num_successes  <  num_needed  and  num_failures  <  num_needed :
5255 # stop listening and send packet 
@@ -90,23 +93,20 @@ def master():
9093 # delay then loop 
9194 utime .sleep_ms (250 )
9295
93-  print ("master  finished sending; successes=%d, failures=%d"  %  (num_successes , num_failures ))
96+  print ("initiator  finished sending; successes=%d, failures=%d"  %  (num_successes , num_failures ))
9497
9598
96- def  slave ():
99+ def  responder ():
97100 csn  =  Pin (cfg ["csn" ], mode = Pin .OUT , value = 1 )
98101 ce  =  Pin (cfg ["ce" ], mode = Pin .OUT , value = 0 )
99-  if  cfg ["spi" ] ==  - 1 :
100-  spi  =  SPI (- 1 , sck = Pin (cfg ["sck" ]), mosi = Pin (cfg ["mosi" ]), miso = Pin (cfg ["miso" ]))
101-  nrf  =  NRF24L01 (spi , csn , ce , payload_size = 8 )
102-  else :
103-  nrf  =  NRF24L01 (SPI (cfg ["spi" ]), csn , ce , payload_size = 8 )
102+  spi  =  cfg ["spi" ]
103+  nrf  =  NRF24L01 (spi , csn , ce , payload_size = 8 )
104104
105105 nrf .open_tx_pipe (pipes [1 ])
106106 nrf .open_rx_pipe (1 , pipes [0 ])
107107 nrf .start_listening ()
108108
109-  print ("NRF24L01 slave  mode, waiting for packets... (ctrl-C to stop)" )
109+  print ("NRF24L01 responder  mode, waiting for packets... (ctrl-C to stop)" )
110110
111111 while  True :
112112 if  nrf .any ():
@@ -122,8 +122,8 @@ def slave():
122122 led_state  >>=  1 
123123 utime .sleep_ms (_RX_POLL_DELAY )
124124
125-  # Give master  time to get into receive mode. 
126-  utime .sleep_ms (_SLAVE_SEND_DELAY )
125+  # Give initiator  time to get into receive mode. 
126+  utime .sleep_ms (_RESPONDER_SEND_DELAY )
127127 nrf .stop_listening ()
128128 try :
129129 nrf .send (struct .pack ("i" , millis ))
@@ -144,7 +144,5 @@ def slave():
144144print ("NRF24L01 pinout for test:" )
145145print (" CE on" , cfg ["ce" ])
146146print (" CSN on" , cfg ["csn" ])
147- print (" SCK on" , cfg ["sck" ])
148- print (" MISO on" , cfg ["miso" ])
149- print (" MOSI on" , cfg ["mosi" ])
150- print ("run nrf24l01test.slave() on slave, then nrf24l01test.master() on master" )
147+ print (" SPI on" , cfg ["spi" ])
148+ print ("run nrf24l01test.responder() on responder, then nrf24l01test.initiator() on initiator" )
0 commit comments