無線モジュールでモールス信号
お疲れ様です。高橋です。
無線モジュールnRF24L01Pを使った、なんちゃってモールス信号機を作りました。使った、とは言いません。作った、とだけ言います。理由は後述。。
作る上でとても参考になったのが、たまささんのnRF24L01モジュールで無線通信というサイトです。今回の実験は、いつも以上にほとんど丸パクリです。
作り方
モジュールの調達
まずは、無線モジュールをクライアント側、サーバ側、それぞれ1個ずつ、合計2個準備します。
nRF24L01Pを使った無線モジュールが、aitendoでは1個390円で売っています。
このモジュールは8本のピンが出ています。どの位置のピンがどの役割なのかがわからなかったので、ググってみると、下記のような感じです。
って事はこんな感じです。
結線
クライアント側(ボタンを押す側)の回路図
サーバ側(ピエゾスピーカー側)の回路図
いい感じに線を繋げます。
こんな時のために、リボン型のメスーオスケーブルがあると、非常に便利です。
aitendoだと、ECサイトでは380円~580円とかで売られていまますが、実店舗に行くと100円とかで短い奴が売ってるので、大変ステキです。
必要ライブラリの調達
Arduino公式のココにあるMirf.zipをダウンロードします。
解凍すると「aaronds-arduino-nrf24l01-914e46a」というディレクトリが作成されますが、必要なのは、その中にある「Mirf」というディレクトリです。Arduinoの「ライブラリをインストール」で、「Mirf」ディレクトリごとインストールします。
スケッチ作成
クライアント側のスケッチ。タクトスイッチを押すと20が送信され、離すと10が送信されます。
#include <SPI.h>
#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>
const int buttonPin = 2;
void setup() {
pinMode(buttonPin, INPUT_PULLUP);
Mirf.spi = &MirfHardwareSpi;
Mirf.init();
Mirf.setRADDR((byte *)"serv1");
Mirf.payload = sizeof(unsigned long);
Mirf.config();
}
void loop() {
const byte buttonOpen = 10;
const byte buttonClose = 20;
byte sendData[Mirf.payload];
if (!Mirf.isSending() && Mirf.dataReady()) {
Mirf.getData(sendData);
Mirf.setTADDR((byte *)"clie1");
int val = digitalRead(buttonPin);
if (val == HIGH) {
sendData[0] = buttonOpen;
} else {
sendData[0] = buttonClose;
}
Mirf.send(sendData);
}
}
サーバ側のスケッチ。20を受け付けるとピエゾスピーカーに442Hzを流し、10を受け付けると音を止めます。
#include <SPI.h>
#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>
const int speakerPin = 2;
void setup(){
pinMode(speakerPin, OUTPUT);
Mirf.spi = &MirfHardwareSpi;
Mirf.init();
Mirf.setRADDR((byte *)"clie1");
Mirf.payload = sizeof(unsigned long);
Mirf.config();
}
void loop(){
const byte buttonOpen = 10;
const byte buttonClose = 20;
unsigned long time = millis();
byte recvData[Mirf.payload];
Mirf.setTADDR((byte *)"serv1");
Mirf.send(recvData);
while(Mirf.isSending()) {
}
while (!Mirf.dataReady()) {
if ((millis() - time) > 1000 ) {
return;
}
}
Mirf.getData(recvData);
if (recvData[0] == buttonOpen) {
noTone(speakerPin);
} else {
tone(speakerPin, 442);
}
delay(100);
}
全体シーケンスは下記のような感じ。
これで、クライアント側のタクトスイッチを押していると、押している間、サーバ側のピエゾスピーカーから442Hzが流れるはずで、スイッチを離すと音が止むはずです。
使わない理由
- 日本国内で無線を何らかの形で使い、発信する場合、「無線局」となる。
- 無線局になるには免許及び登録が必要となる。
- 例外として、ラジコンやワイヤレスマイク等の微弱電波がある。
- 微弱電波とは下記の通り。(総務省HPより引用)

- 今回買った2.4GHz帯だと、35μV/mの電界強度以下であれば、免許はいらない。
- 免許はいらないが、微弱電波(35μV/m以下)である事を証明する必要がある。
- 証明するため、結局は技適マークが必要。
以下は、総務省 電波利用ホームページより引用。
技適マークが付いていない無線機を使用したらどうなりますか?
一部の無線機を除いて、技適マークが付いていない無線機を使用すると、電波法違反になる恐れがあります。
また、技適マークが付いていても無線局を開設するためには総務大臣の免許を受けなければならない無線機(アマチュア無線、パーソナル無線など)がありますので、使用には十分ご注意下さい。
(免許を受けずに無線局を開設若しくは運用した場合は電波法違反となり、1年以下の懲役又は100万円以下の罰金の対象となります。また、公共性の高い無線局に妨害を与えた場合は、5年以下の懲役又は250万円以下の罰金の対象となります。)
所感
前時代的な法律のせいで、のびのびと実験できず、若干のストレス。総務省のwebサイト 不法無線局の特徴・影響・障害事例を見てみると、摘発事例はほとんどが下記のような感じで、個人利用の微弱電波利用については問題が無いように思える。
技適対応のモジュールだと、有名どころでは東京コスモス電機(TOCOS)のTWE-Lite DIPなんかがありますが、aitendoで1,500円します。日本語マニュアルが豊富で、高機能ですが。
以上、よろしくお願い致します。
関連記事
-
-
PCとArduino間でのシリアル通信を介したEEPROM書き込み(難航)
お疲れ様です。高橋です。 Arduino Pro MiniでI2C EEPROM …
-
-
EEPROM書き込みシールドの作成
お疲れ様です。高橋です。 先日成功したPCからのEEPROM書き込みですが、ジャ …
-
-
4桁7セグLEDを基板に実装 完成
お疲れ様です。高橋です。 大失敗 前回、実体配線図を書いたこれ。 こんな感じに頑 …
-
-
音階LED実装 #4
お疲れ様です。高橋です。 今日は音階LEDのIC-IC間、GNDの敷設、そして1 …
-
-
マウスを分解してみた。
お疲れ様です。高橋です。 壊れたマウスを貰った 先日、壊れたマウスを貰いました。 …
-
-
100均で買ったボリュームコントロール付きステレオ延長コードを、バブ型スピーカーに搭載してみた。
お疲れ様です。高橋です。 先日作ったバブ型スピーカーですが、実は裏側がとても汚い …
-
-
Arduino Pro MiniでLチカしてみた
お疲れ様です。高橋です。 最近ずっと忙しく、平日はもちろん、土日も疲労のため何も …
-
-
電子オルゴール 動作試験
お疲れ様です。高橋です。 前回「電子オルゴール基板実装 #2 ~ワイヤストリッパ …
-
-
aitendoで買った4桁7セグLEDを使う
お疲れ様です。高橋です。 aitendoの4桁7セグLED aitendoで1個 …
-
-
マウスを入力I/Fとして使うのを断念してみた。
お疲れ様です。高橋です。 先日の「マウスを分解してみた」でマウスを分解し、ケーブ …
- PREV
- 遅刻の言い訳アプリのDL数が急増した原因
- NEXT
- ファイナルファンタジー2 戦闘テーマ1







