nRF24通信

View Source

nRF24通信モジュールは、日本国内で無線機器を使用するために必要な認証を取得していません。そのため、日本国内では使用してはいけません。使用すると電波法違反になります。

手順1

nRF24通信モジュールは、無線LANではありません。このモジュールを使うことで、Tesselを使った省電力なメッシュネットワークを作ることができます。

注意:nRF24通信モジュールは、nRF24チップが使用されている機器とだけ通信することができます。そのため、このページの例では、2台のTesselにそれぞれnRF24通信モジュールを挿しこんで使用します。もしも、Arduinoを持っているなら、こちらの例を使えばArduinoと通信することができます。

以下のコマンドを入力して、「tessel-code」ディレクトリーの中に、もうひとつディレクトリーを作ってください: mkdir nrf24 いま作ったディレクトリーの中に移ってください。 cd nrf24

手順2

nRF24通信(nrf)モジュールをTesselのポートAに挿しこんでください。このとき、六角形のTesselロゴの面が裏側、電子部品が有る側を表側になるようにしてください。最後に、TesselとパソコンをUSBケーブルで接続してください。

手順3

以下のコマンドを入力して、パッケージをインストールしてください。npm install rf-nrf24

手順4

nrf24.jsという名前のファイルを作成し、以下の内容を書き込んで保存してください。

/* tessel to tessel
 * requires 2 nrf24 modules (and ideally two tessels)
 * put one tessel+nrf on "ping" mode and another one on "pong" mode
 */

var tessel = require('tessel'),
	NRF24 = require('rf-nrf24'),
	pipes = [0xF0F0F0F0E1, 0xF0F0F0F0D2],
	role = 'ping'; // swap this to pong if you want to wait for receive

var nrf = NRF24.channel(0x4c) // set the RF channel to 76. Frequency = 2400 + RF_CH [MHz] = 2476MHz
	.transmitPower('PA_MAX') // set the transmit power to max
	.dataRate('1Mbps')
	.crcBytes(2) // 2 byte CRC
	.autoRetransmit({count:15, delay:4000})
	.use(tessel.port['A']);

nrf._debug = false;

nrf.on('ready', function () {
	setTimeout(function(){
		nrf.printDetails();
	}, 5000);

	if (role === 'ping') {
		console.log("PING out");

		var tx = nrf.openPipe('tx', pipes[0], {autoAck: false}), // transmit address F0F0F0F0D2
			rx = nrf.openPipe('rx', pipes[1], {size: 4}); // receive address F0F0F0F0D2
		tx.on('ready', function () {
			var n = 0;
			setInterval(function () {
				var b = new Buffer(4); // set buff len of 8 for compat with maniac bug's RF24 lib
				b.fill(0);
				b.writeUInt32BE(n++);
				console.log("Sending", n);
				tx.write(b);
			}, 5e3); // transmit every 5 seconds
		});
		rx.on('data', function (d) {
			console.log("Got response back:", d);
		});
	} else {
		console.log("PONG back");
		var rx = nrf.openPipe('rx', pipes[0], {size: 4});  
			tx = nrf.openPipe('tx', pipes[1], {autoAck: false}); 
		rx.on('data', function (d) {
			console.log("Got data, will respond", d);
			tx.write(d);
		});
		tx.on('error', function (e) {
			console.warn("Error sending reply.", e);
		});
	}
});

// hold this process open
process.ref();

手順5

もう1台のパソコンとTesselを用意し、上記のプログラムをコピーしてください。一方のパソコンでは、プログラムの中の「role = 'ping';」となっている「ping」の部分を「pong」に変更してください。それぞれのパソコンで、以下のようにプログラムを動かしてください。

以下のコマンドを入力してください。tessel run nrf.js

手順6

nRF24通信モジュールが送受信したデータが表示されます。

おまけ:送信するデータを変更してみましょう。

nRF24通信モジュールの機能についてもっと知りたい場合は、モジュールのドキュメントを参照してください。

手順7

あなたはこの nrf24 で他に何を行うことができますか コミュニティプロジェクトを試してみてください

あなたは何を作っている あなたの本を共有する

何か困ったことがあったら、nRF24通信モジュールの掲示板で聞いてみてください。

他のモジュールを試す

あるいは、ここを飛ばして無線LANに進んでください。

Fork on Github