無線モジュールでモールス信号
お疲れ様です。高橋です。
無線モジュール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円します。日本語マニュアルが豊富で、高機能ですが。
以上、よろしくお願い致します。
関連記事
-
-
aitendoのArduino用生シールド基板を1枚120円で買った。
お疲れ様です。高橋です。 今日もaitendoに行ってきたのですが、120円のシ …
-
-
Arduino nano互換機でオナラ検知デバイス
お疲れ様です。高橋です。 今日のお昼、会社の大先輩から、綺麗にケーシングした自作 …
-
-
音階LED実装 #4
お疲れ様です。高橋です。 今日は音階LEDのIC-IC間、GNDの敷設、そして1 …
-
-
音階LED完成、YMZのノイズの原因判明
お疲れ様です。高橋です。 音階LEDの実装が完了しました。 青色LEDが眩しすぎ …
-
-
YMZシールドの作成 #1
お疲れ様です。高橋です。 実体配線図を書き起こしておいたYMZシールドの半田付け …
-
-
音階LED仮組み
お疲れ様です。高橋です。 先日設計し直した音階LEDを、B型基板上に部品を載せて …
-
-
YMZシールドのMIDI化を検討
お疲れ様です。高橋です。 Arduino UNOにYMZシールドをくっつけ、さら …
-
-
EEPROM書き込みシールドの作成
お疲れ様です。高橋です。 先日成功したPCからのEEPROM書き込みですが、ジャ …
-
-
電子オルゴール 基板実装 #1
お疲れ様です。高橋です。 Pro Mini互換機を贅沢に使った電子オルゴールの仮 …
-
-
マウスを分解してみた(リベンジ)
お疲れ様です。高橋です。 壊れたマウスを貰った 本日、壊れたマウスを貰いました。 …
- PREV
- 遅刻の言い訳アプリのDL数が急増した原因
- NEXT
- ファイナルファンタジー2 戦闘テーマ1







