标签:javascript stm32 开源硬件 arduino espruino
http://blog.csdn.net/qwert1213131/article/details/35853747
本文属于个人理解,能力有限,纰漏在所难免,还望指正!
【小鱼有点电】
NRF24L01+ | Name | Espruino | Type |
---|---|---|---|
1 | GND | GND | GND |
2 | 3.3V | 3.3 | 3.3v |
3 | CE | B1 | GPIO Out |
4 | CSN | B0 | GPIO Out |
5 | SCK | A5 | SPI SCK |
6 | MOSI | A7 | SPI MOSI |
7 | MISO | A6 | SPI MISO |
8 | IRQ | unused | GPIO In |
由于NRF24L01P使用SPI接口,因此需首先配置SPI接口,SPI1.setup({sck:A5, miso:A6, mosi:A7});然后调用NRF24L01P模块,var nrf =require("NRF24L01P").connect( SPI1, B0, B1);
配置从机:
SPI1.setup({sck:A5, miso:A6, mosi:A7}); var nrf = require("NRF24L01P").connect( SPI1, B0, B1 ); function onInit() { nrf.init([0,0,0,0,1], [0,0,0,0,2]); } onInit(); setInterval(function() { nrf.slaveHandler(); }, 50);配置主机:
SPI1.setup({sck:A5, miso:A6, mosi:A7}); var nrf = require("NRF24L01P").connect( SPI1, B0, B1 ); function onInit() { nrf.init([0,0,0,0,2], [0,0,0,0,1]); } onInit(); setInterval(function() { nrf.masterHandler(); }, 50);需要注意的是,init函数里面的两个地址,一个是接收地址,一个是发送地址,将init函数放到onInit()函数中,可以在Espruino启动时自动调用onInit()。把以上代码分别下载进两个板子后,就可以开始下面的操作了。
我们在web IDE中,操作主机板使用sendCommand函数来向从机发送命令,则会收到从机返回的结果。
若输入nrf.sendCommand("1+2",function(r){print("=="+r);});则会收到“=3”。
若输入nrf.sendCommand("LED2.set()",function(r){print("=="+r);});则会收到“=undefined”,并且从机的LED2点亮。
当然我们还可以对Espruino无线编程,
nrf.sendCommand("function on() { LED3.set(); }"); nrf.sendCommand("on();");
当然slaveHandler和masterHandler不是必须的,我们还可以直接调用send和dataReady来进行通讯,示例如下所示:
发送端代码如下:
SPI1.setup({sck:A5, miso:A6, mosi:A7}); var nrf = require("NRF24L01P").connect( SPI1, B0, B1 ); function onInit() { nrf.init([0,0,0,0,1], [0,0,0,0,2]); } onInit(); setInterval(function() { var value = analogRead(A0); // 读取A0电压值 nrf.sendString(""+value); //将电压值发送出去 }, 5000);接收端代码如下:
SPI1.setup({sck:A5, miso:A6, mosi:A7}); var nrf = require("NRF24L01P").connect( SPI1, B0, B1 ); function onInit() { nrf.init([0,0,0,0,2], [0,0,0,0,1]); } onInit(); dataLine = ""; setInterval(function() { while (nrf.dataReady()) { var data = nrf.getData(); for (var i in data) { var ch = data[i]; if (ch===0 && dataLine!=="") { console.log(dataLine); // 我们可以将数据保存到SD卡,使用require('fs').appendFile("log.txt", dataLine+"\n"); dataLine = ""; } else if (ch!==0) { dataLine += String.fromCharCode(ch); } } } }, 50);
【Espruino】NO.15 nRF24L01+无线收发器,布布扣,bubuko.com
【Espruino】NO.15 nRF24L01+无线收发器
标签:javascript stm32 开源硬件 arduino espruino
原文地址:http://blog.csdn.net/qwert1213131/article/details/35853747