無線モジュールでモールス信号
お疲れ様です。高橋です。
無線モジュール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円します。日本語マニュアルが豊富で、高機能ですが。
以上、よろしくお願い致します。
関連記事
-
-
FM音源YM2203をArduinoで鳴らしたい #2
お疲れ様です。高橋です。 先に結論 FM楽曲及びPSG楽曲の演奏に成功しました。 …
-
-
音階LED実装 #1
お疲れ様です。高橋です。 今日の進捗 音階LEDの半田付け 1日目です。 ICソ …
-
-
電子オルゴール 基板実装 #1
お疲れ様です。高橋です。 Pro Mini互換機を贅沢に使った電子オルゴールの仮 …
-
-
音階LED実装 #4
お疲れ様です。高橋です。 今日は音階LEDのIC-IC間、GNDの敷設、そして1 …
-
-
【完成】 耳コピミキサー
お疲れ様です。高橋です。 作成途中だった耳コピミキサー、やっと完成しました。 思 …
-
-
耳コピミキサー 試作
お疲れ様です。高橋です。 iPhoneから流す音と電子ピアノから流す音を合成する …
-
-
ArduinoIDE1.6.4+ATTiny13Aで赤外線リモコン
お疲れ様です。高橋です。 先日実験したArduinoで赤外線リモコンの問題点、そ …
-
-
秋月製ESP-WROOM-02が動いた
お疲れ様です。高橋です。 秋月で買ったESP-WROOM-02が動きました。AT …
-
-
電子オルゴール設計
お疲れ様です。高橋です。 電子オルゴールがどんな形状になるのか、実体配線図を作っ …
-
-
電子オルゴール 回路図
お疲れ様です。高橋です。 電子オルゴールの回路図を書いてみました。 実体配線図よ …
- PREV
- 遅刻の言い訳アプリのDL数が急増した原因
- NEXT
- ファイナルファンタジー2 戦闘テーマ1