curious4dev

中国旅行、Arduinoなどを使った電子工作、その他色々。

*

無線モジュールでモールス信号

 

お疲れ様です。高橋です。

無線モジュールnRF24L01Pを使った、なんちゃってモールス信号機を作りました。使った、とは言いません。作った、とだけ言います。理由は後述。。

IMG_5471

作る上でとても参考になったのが、たまささんのnRF24L01モジュールで無線通信というサイトです。今回の実験は、いつも以上にほとんど丸パクリです

作り方

モジュールの調達

まずは、無線モジュールをクライアント側、サーバ側、それぞれ1個ずつ、合計2個準備します。

nRF24L01Pを使った無線モジュールが、aitendoでは1個390円で売っています。

このモジュールは8本のピンが出ています。どの位置のピンがどの役割なのかがわからなかったので、ググってみると、下記のような感じです。

24L01Pinout-800

って事はこんな感じです。

IMG_5470

結線

クライアント側(ボタンを押す側)の回路図

042602

サーバ側(ピエゾスピーカー側)の回路図

042603

いい感じに線を繋げます。

IMG_5471

こんな時のために、リボン型のメスーオスケーブルがあると、非常に便利です。

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);
}

全体シーケンスは下記のような感じ。

042601

これで、クライアント側のタクトスイッチを押していると、押している間、サーバ側のピエゾスピーカーから442Hzが流れるはずで、スイッチを離すと音が止むはずです。

使わない理由

  • 日本国内で無線を何らかの形で使い、発信する場合、「無線局」となる。
  • 無線局になるには免許及び登録が必要となる。
  • 例外として、ラジコンやワイヤレスマイク等の微弱電波がある。
  • 微弱電波とは下記の通り。(総務省HPより引用)

  • 今回買った2.4GHz帯だと、35μV/mの電界強度以下であれば、免許はいらない。
  • 免許はいらないが、微弱電波(35μV/m以下)である事を証明する必要がある。
  • 証明するため、結局は技適マークが必要。

以下は、総務省 電波利用ホームページより引用。

技適マークが付いていない無線機を使用したらどうなりますか?
一部の無線機を除いて、技適マークが付いていない無線機を使用すると、電波法違反になる恐れがあります。
また、技適マークが付いていても無線局を開設するためには総務大臣の免許を受けなければならない無線機(アマチュア無線、パーソナル無線など)がありますので、使用には十分ご注意下さい。
(免許を受けずに無線局を開設若しくは運用した場合は電波法違反となり、1年以下の懲役又は100万円以下の罰金の対象となります。また、公共性の高い無線局に妨害を与えた場合は、5年以下の懲役又は250万円以下の罰金の対象となります。)

所感

前時代的な法律のせいで、のびのびと実験できず、若干のストレス。総務省のwebサイト 不法無線局の特徴・影響・障害事例を見てみると、摘発事例はほとんどが下記のような感じで、個人利用の微弱電波利用については問題が無いように思える。

042604

技適対応のモジュールだと、有名どころでは東京コスモス電機(TOCOS)のTWE-Lite DIPなんかがありますが、aitendoで1,500円します。日本語マニュアルが豊富で、高機能ですが。

 

以上、よろしくお願い致します。

 - 電子工作

  関連記事

遠隔でRaspberryPi+DCモーターを制御してaitendoの名刺をクルクルさせる。

お疲れ様です。高橋です。 「猫×おもちゃ×動画×アプリ」のための要素技術として必 …

ルネサス RX621でLチカするまで

お疲れ様です。高橋です。 とある事情のため購入した、ルネサスのRX621マイコン …

Pro Mini互換機でFF2戦闘音楽を使ったYMZ動作試験

お疲れ様です。高橋です。 電子オルゴールの最終形をイメージしてブレッドボード上で …

ルンバにスピッツを演奏させてみた

お疲れ様です。高橋です。 家にあるルンバにArduinoを挿して、スピッツの「涙 …

aitendoのArduino用生シールド基板を1枚120円で買った。

お疲れ様です。高橋です。 今日もaitendoに行ってきたのですが、120円のシ …

上司離着席検知システムの開発

お疲れ様です。高橋です。 下記、フィクションでイメージです。 背景 何かしらの相 …

電子オルゴール 回路図

お疲れ様です。高橋です。 電子オルゴールの回路図を書いてみました。 実体配線図よ …

耳コピミキサー 半田付け #1

お疲れ様です。高橋です。 耳コピ用ミキサーの半田付けを行いました。 ブレッドボー …

YMZシールドの作成 #2

お疲れ様です。高橋です。 先日から作っていたYMZシールドですが、本日完成しまし …

【完成】 耳コピミキサー

お疲れ様です。高橋です。 作成途中だった耳コピミキサー、やっと完成しました。 思 …