ボクにもわかる電子工作

Raspberry Pi、IchigoJam、Wi-Fi、BLE、XBee、RN-42、ESP-WROOM-02、ESP32

Raspberry Pi

[ リスト | 詳細 ]

記事検索
検索

全6ページ

[1] [2] [3] [4] [5] [6]

[ 次のページ ]

MicroPythonの実行が可能なXBee3 ZigBeeモジュールでワイヤレス通信の実験を行ってみました。
XBee 3 ZigBee子機(下図・右側)の内蔵温度センサで測定した温度値をZigBee送信し、Raspberry Piに接続したXBee親機(下図・左側)で受信します。

イメージ 1
親機(左側):Raspberry PiへXBeeを接続して製作する。子機で測定した温度情報を受信する。
子機(右側):XBee3内蔵マイコン上で動作するMicroPythonスクリプトで温度を測定し、親機へ送信する。

子機・XBee3 ZigBee の構成・MicroPythonスクリプトの書き込み方法

子機にはXBee3 ZigBeeモジュールを使用します。
MicroPythonのスクリプトを書き込むには、XBee USBエクスプローラとPCなどが必要です。スクリプト書き込み後は、電源を供給するだけで動かすことが出来ます(工作が得意な人であれば、XBee USBエクスプローラは1台だけでよい)。
使用可能なXBeeモジュール:XBee3 シリーズ
必要な機器:XBee USBエクスプローラ (スクリプト書き込み時に必要)、PC(DiGi X-CTUに必要)
必要なソフト:DiGi X-CTU(スクリプト書き込み時に必要)
サンプルスクリプトは、下記に公開しました。
XBee3 ZB用MicroPythonサンプル集

温度送信用サンプル bas04_tx_temp.py
以下に、設定方法、書き込み方法を示します。
Digi MicroPython 設定方法
1. DIGI XCTU (最新版)の「Radio Modules」のアイコン[+](Add a radio Module)で使用するシリアルCOMポートを選択する。 
2. シリアル接続したXBeeモジュールが画面左側のフレームに表示されるので、それを選択する。 
3. 右フレーム「Radio Configuration」にXBee 設定画面が表示されるので、スクロールして、「AP APIEnabe」で[MicroPython REPL [4]]を選択する。 
  [Radio Configuration]
  ▼ UART Interface
   AP APIEnabe
    MicroPython REPL [4]
4. 右フレームの上部の鉛筆アイコン(Write)をクリックする。 
5. XCTUの「Tool」メニューから[MicroPython Terminal]を選択し、接続アイコン(Open)をクリックする。
(Tera Termを使用する場合は、通信設定=9600-8-N-1・フロー制御なし、改行コード=CR、ローカルエコー=無しなどを設定する。) 
サンプル・スクリプトの書き込み方法
1.サンプルスクリプトをメモ帳や秀丸エディタで開き、[Ctrl]+[A]の操作で全選択し、[Ctrl]+[C]でクリップボードにコピーします。
2.XCTU の MicroPython Terminal または TeraTermなどで、[Ctrl]+[F]を操作し、プログラムをXBee3 ZigBeeモジュールへ書き込むモードに設定します。
3.右クリック操作でペーストを行い、クリップボードに保持したサンプルスクリプトを転送します。
4.[Ctrl]+[D]を操作し、コンパイルを実行します。
5.「Automatically run」に対して[Y]を入力すると、起動時やリセット操作時に、自動起動させることが出来ます。
6.[Ctrl]+[R]でフラッシュメモリ内のプログラムを実行します。Automatically runを設定していた場合は、リセット操作[Ctrl]+[D]で実行することも出来ます。

親機 XBee ZigBee Coordinator の構成

親機は、Raspberry PiへXBee USBエクスプローラ経由でXBeeモジュールを接続して製作します。
XBeeモジュールには、最新のXBee3 ZigBeeシリーズ、従来のXBee ZB S2Cシリーズ、S2シリーズが利用できます。
使用可能なXBeeモジュール:XBee3 シリーズ、XBee ZB S2Cシリーズ、S2シリーズ
必要な機器:Raspberry Piとその周辺機器、XBee USBエクスプローラ
必要なソフト:後述(ダウンロード)

構成: [Raspberry Pi]----[XBee USB エクスプローラ]----[親機XBee]-  -  -  -[子機XBee3]
XBee3とS2Cシリーズの場合は、後述のZigBeeモード設定ツール「xbee_zb_mode」を使って、Coordinator APIモードに設定します。S2シリーズの場合は、X-CTUを使ってCoordinator API用のファームウェアを書き込みます。
また、筆者が作成したXBee テスト用ツール「xbee_test」を使って、子機が送信した温度情報を受信する実験を行います。

Raspberry Pi用のプログラムを下記のコマンドでダウンロードし、コンパイルしてください。
Raspberry Pi用プログラムのダウンロード
pi@raspberrypi:~ $ git clone -b raspi https://github.com/bokunimowakaru/xbeeCoord.git
pi@raspberrypi:~ $ cd xbeeCoord/tools/
pi@raspberrypi:~/xbeeCoord/tools $ make
ZigBeeモード設定ツール「xbee_zb_mode」を起動し、XBee Coordinator APIモードに設定して下さい。下記の実行例の引数「B0」は、XBee USBエクスプローラのUSBシリアルポートです。ポートが「/dev/ttyUSB0」の場合は「B0」、「ttyUSB1」の場合は「B1」といった具合に指定してください。(ttyUSBポートが不明な場合は、マウスやキーボード以外のUSB機器を外し、Raspberry Piを再起動してから、「~/xbeeCoord/tools/xbee_zb_mode」を入力してください。)
実行後、「10」と「Enter」を入力すれば、設定できます。設定時にエラーが出た場合は、やり直してください。
ZigBeeモード設定ツールxbee_zb_mode
pi@raspberrypi:~/xbeeCoord/tools $ ./xbee_zb_mode B0
CONNECTED 0(0x00):176(0xB0)
ZIGBEE Device Type Switcher for XBee ZB S2C / XBee3 Series
00:Coordinator AT,  01:Router AT,  02:End Device AT
10:Coordinator API, 11:Router API, 12:End Device API
Mode =10
設定が完了したら、XBee テスト用ツール「xbee_test」を起動してください。末尾の「B0」は「ttyUSB0」の場合です。
XBee テスト用ツールxbee_testを起動する
pi@raspberrypi:~ $ cd ~/xbeeCoord/tools
pi@raspberrypi:~/xbeeCoord/tools $ ./xbee_test B0
ここで重要な作業「ペアリング」を行います。
xbee_testは、XBeeモジュールを常時ペアリングが可能なモードに設定します。このため、通常は自動的にペアリングが行われ、xbee_testに「recieved IDNT」が表示されます。しかし、周囲に他のZigBeeが動作していた場合、他のネットワークに参加してしまうことがあります。この場合、子機のコミッショニングボタンを4回、押して、初期化して再実行する、または親機と同じPAN IDを子機に設定するなどが必要になることがあります。

ペアリング後に、子機XBee3から温度情報が送られてくると、「recieved UART」に続き、温度値と電源電圧値が表示されます。下記の例では、温度19.0℃、電源電圧3.302Vが得られました。
--------------------
recieved UART
--------------------
from   :0013A200 xxxxxxxx
status :02 broadcast packet
length :10 (0x0A)
data   : 19.0, 3.302
AT>

XBee3 MicroPythonで受信する

受信用のMicroPythonサンプル・スクリプトも準備しました。
(受信の確認には、子機XBee3をX-CTUのMicroPython Terminalに接続しておく必要があります。)
データ受信用サンプル bas05_rx.py
デバイス検索用サンプル bas06_rx_disc.py
親機となるRaspberry Piから送信を行うにはXBee テスト用ツール「xbee_test」から「tx=HELLO」のように「tx=」に続いて文字列を入力してください。

by
ボクにもわかるRaspberry Pi
https://bokunimo.net/raspi/
ボクにもわかるXbee
https://bokunimo.net/xbee/

開く コメント(4)

Digi XBee3 ZBが、スイッチサイエンスより販売されましたので、公開中のXBee制御用ライブラリxbeeCoordのRaspberry Pi 版のXBee3対応を行いました。

イメージ 1
スイッチサイエンスでの国内販売が開始されたXBee3 ZBモジュール。

ツールxbee_zb_modeのXBee3 対応

従来のXBee シリーズ2では、ZigBeeデバイスタイプを変更する際に、ファームウェアの書き換えが必要でした。
XBee ZB S2Cモジュールからは、XCTUや当方が作成したツールxbee_zb_mode(書籍「Wi-Fi/Bluetooth/ZigBee無線用Raspberry Piプログラム全集」付属のCD-ROMに収録)を使うことで、ファームウェアの書き換えなしに変更できるようになりました。

今回のXBee3シリーズについても、xbee_zb_modeを使ってデバイスタイプの変更が可能です。

書籍を買っていただいた方は、P.89の「新しいXBee ZB シリーズS2Cについて」に記載している方法で、XBee3シリーズのデバイスタイプを変更することが出来ます。

書籍をお持ちでない方は、後述の「XBee3対応・最新版xbeeCoord一式のダウンロード」の方法で、GitHubからダウンロードください。

イメージ 2
XBee3を使った実験の様子。従来の開発ボードで問題なく動作した

XBeeライブラリ xbee.cのXBee3 対応

XBeeライブラリについては、XBee3対応版へ更新が必要です。GitHub上のxbee.cをダウンロードして入れ換える、もしくは一式をダウンロードしてください。

XBee3対応・最新版XBee.cのダウンロード方法

下記はXBee用ライブラリxbee.cのみをダウンロードする方法です。

pi@raspberrypi:~ $ cd ~/xbeeCoord/libs
pi@raspberrypi:~/xbeeCoord/libs $ mv xbee.c xbee_old.c
pi@raspberrypi:~/xbeeCoord/libs $ wget https://raw.githubusercontent.com/bokunimowakaru/xbeeCoord/raspi/libs/xbee.c

XBee3対応・最新版xbeeCoord一式のダウンロード方法

下記はRaspberry Pi用XBeeライブラリxbeeCoord一式をダウンロードする方法です。
pi@raspberrypi:~ $ mv xbeeCoord xbeeCoord_old
pi@raspberrypi:~ $ git clone -b raspi https://github.com/bokunimowakaru/xbeeCoord.git
pi@raspberrypi:~ $ cd xbeeCoord/tools
pi@raspberrypi:~/xbeeCoord/tools $ make clean; make
pi@raspberrypi:~/xbeeCoord/tools $ ./xbee_zb_mode B0
Running ./xbee_zb_mode
Serial port = USB0 (/dev/ttyUSB0,0xB0)
CONNECTED 176(0xB0):176(0xB0)
ZIGBEE Device Type Switcher for XBee ZB S2C Series
00:Coordinator AT,  01:Router AT,  02:End Device AT
10:Coordinator API, 11:Router API, 12:End Device API
Mode = 12
End Device API
Sending AT commands in AT mode
AT command (AT) :OK
AT command (ATAP01) :OK
AT command (ATCE00) :OK
AT command (ATSM04) :OK
AT command (ATWR) :OK
AT command (ATFR) :OK
> ~
SUCCESS
by
ボクにもわかるRaspberry Pi
ボクにもわかるXbee

開く コメント(0)

スイッチサイエンス製 SSCI-031288 と Lazurite 920J との組み合わせで、CR2032コイン電池による長期間動作の確認を行ったので、報告します。

イメージ 1
試算上1年間の動作が可能な Lazurite 920J を用いて、長時間駆動の動作確認を行ってみた。 

動作条件
子機(センサ)側のハードウェア構成は、以下の通りです。実験には、別途、親機が必要です。
Lazurite 920J

Lazurite mini用環境センサ基板
Lazurite 920Jは、試算上、コイン型リチウム電池で1年間の動作が可能ですが、今回は、送信間隔60秒、送信出力20mW、通信速度100Kbpsの厳しい条件で、確認してみました。以下に今回の条件を示します。
条件
送信間隔 60秒
送信出力 20mW
通信速度 100Kbps
使用電池 CR2032 (約200mAh) 

実験結果
上記の条件にて、67日間の動作が可能であることが分かりました。下図は期間中の測定結果です。

イメージ 2
温度、湿度、気圧、電圧の4データを約1分に1度67日間にわたり送信し続けた。

ただし、実際にデータが得られたのは64日間で、最後の3日間は同じ値を送信していました。センサ側の動作電圧が不足して取得できなくなっていたものと思います。

イメージ 3

停止時の電池電圧は2.63Vと、まだ残っている状態ですが、電池の内部インピーダンスや無線動作時の負荷によって、動作できなくなったものと考えられます。また、最後の3日間についても、環境センサ(Bosch製 BME280)の起動時に最小動作電圧(1.8V)を下回る状態になっていたのでしょう。
結果まとめ
終止時の電池電圧 2.63 V (開放電圧)
送信回数 97,675回
データ送信日数 67.04日
うち有効データ送信日数 64.32日
最後に
試算だけでは、分からない実際の動作時間。試算条件へフィードバックして相違点を埋めてゆくことで、より長い動作が可能になるかもしれません。

もし、似たような環境で異なる結果が得られているようでしたら、ぜひ教えていただけるよう、お願いします。

By ボクにもわかる電子工作

開く コメント(0)

Raspberry Pi用ラジカセ風Speaker pHATをケースへ入れるだけで、音質が格段にアップします。
スピーカユニットだけでは、振動版の背面の空気振動が、前面にも放射されるので、スピーカから効率よく音波を出力することが出来ません。スピーカボックスには、振動版の背面の空気振動を吸収したり、ボックス内で反射した振動により振動版を効率よく振動させたり、あるいはスピーカボックスそのものをほどよく振動したりするといった役割があります。

イメージ 1

前回は、Raspberry Pi用ラジカセ風スピーカ Pimoroni製Speaker pHATの使い方について説明しました。今日は、このSpeaker pHATをポリプロピレン製のケースに収容してみました。
(前回の記事)
Raspberry Pi用ラジカセ風スピーカ Pimoroni社Speaker pHATの使い方

ポリプロピレン容器の蓋にSpeaker pHATを取り付ける

イメージ 2

まずは、下図のように容器の蓋へSpeaker pHATを取り付けます。Speaker pHAT基板の裏側に実装されている電子部品をポリイミド製のテープなどで絶縁保護し、ケースの蓋をくり抜いて、装着します。
ご注意:
ここでは、ポリプロピレン製の耐熱容器を使用しましたが、ポリプロピレンは良く燃える素材です。火花や内部発熱などによって引火すると、火災の原因になります。十分に注意して実験し、実験後はACアダプタなどを抜き、電源を切って安全な場所に保管ください。
基板の4隅では、直径2.6mmのネジで容器へ固定します。さらに、背面の空気振動が前面に漏れたり、異音が発生したりしないように、接着剤を使ってスピーカとケースの長手方向を固定しました。

イメージ 3

Speaker pHATには8個のナットが付属しています。このナットをスペーサとしてSpeaker pHAT基板とスピーカユニットとの間に入れると、隙間が出来てしまい、背面の空気振動が前面へ漏れてしまいます。したがって、基板とスピーカとの間にはナットを入れないようにしましょう。

Raspberry Pi Zero Wを取り付け、電源コードをハンダ付けする

Speaker pHATにRaspberry Pi Zero Wを取り付けます。写真の赤のコードが5V、黒がGNDです。

イメージ 4

ただし、Raspberry Pi Zeroシリーズの5V電源には過電流保護の部品が入っていません。そこで、ヒューズを挿入しました。

イメージ 5

ヒューズは0.3A以上、かつACアダプタからの供給でヒューズが溶断できるものを選びます。音楽を聴くような場合は、0.5Aくらいのヒューズを使用し、1.0AくらいのACアダプタを使用すれば良いでしょう。1時間に、数回程度、音声で時報や警報、連絡事項などをアナウンスする程度であれば、0.25Aくらいでも良いでしょう。ボクは長さ20mmのミニガラス管ヒューズを使用しました。

GPIOコネクタ部をより美しく

GPIOコネクタのハンダ付け部は、FMラジオのチューニングのようなデザインになっています。ピンを基板のギリギリまでニッパで切断し、ハンダを丸く盛ると、より美しく仕上がります。ただし、若干、挿抜耐回数が下がるかもしれません。製作後にHATを取り外さないのであれば、問題ないでしょう。

イメージ 6

レベルメータの動作の様子(動画)


音楽の再生方法や、テキストの音声読み上げ方法については、下記の前回の記事をご覧ください。

(前回) Pimoroni製Speaker pHATの使い方

by ボクにもわかるRaspberry Pi
https://bokunimo.net/raspi/

開く コメント(0)

Pimoroni社(英国)はRaspberry Pi用の虹色のケースで有名なメーカーです。最近はRaspberry Pi用の拡張ボード(HAT)などを次々に開発しており、SwitchScienceや秋月電子通商でも取り扱われるようになりました。
その拡張ボードのなかから、スピーカ、DAコンバータ、スピーカ用アンプ、10個のバーLEDが実装されたラジカセ風スピーカSpeaker pHATを紹介します(部品は全て裏面に実装されている)。

イメージ 1

写真は、Raspberry Pi Zero 本体+Pibow Zero ケース+Speaker pHATを組み合わせた時の一例です。懐かしいラジカセのような図柄と、再生音とともに変化するLEDバー表示、そして基板の背面では白色LED(バーLED兼用)が透過色のPibow Zeroケースを照らします。
音楽とともに揺れる光を想像してみると、ワクワクしませんか?

Pimoroni

なお、ハードウェアを製作するには、ピンヘッダとスピーカ端子の半田付け、スピーカのビス止め作業が必要です。また、Raspberry Pi Zero には、Micro SDカード、ACアダプタを始め、開発用の周辺機器(モニタ、キーボード、マウス、USBハブ、USB無線LANアダプタ等)が必要です。
スピーカを基板へビス止めするときは、スペーサ用のナットを使用せずに、スピーカ本体を基板へ接触させてください。Pibow ケースの天面がスピーカのマグネット部に接触するので、スペーサを入れると、その厚みで下記長IOコネクタの接触が不十分となります(ケースに入れない場合はスペーサを使っても良い。音質はスペーサなしのほうが良いが、スペーサが無いと大音量時に音が割れる)。

インストール方法と使い方

インストールを行うには以下のcurlコマンドを実行します。
test.shを実行すると簡単な音声と音楽を再生します。test.pyはLEDのテスト用です。
また、mpg321でMP3ファイルの再生が出来ます。
$ sudo apt-get install mpg321
$ cd Pimoroni/speakerphat/test
$ ./test.sh                                                  # LED+オーディオデモ(mpg321なしでも再生可能)
$ ./test.py                                                  # LEDテスト用
$ mpg321 test.mp3                                      # MP3再生デモ
$ mpg321 再生したい音楽ファイル.mp3           # 好きな曲を再生しよう。

AquesTalkで漢字交じりのテキスト読み上げ(音声再生)

次に、漢字交じりの音声を読み上げるAquesTalkのインストールを行ってみましょう。
$ wget http://www.a-quest.com/download/package/aquestalkpi-20130827.tgz
$ tar xzvf aquestalkpi-*.tgz
$ aquestalkpi/AquesTalkPi -f aquestalkpi/test.txt |aplay
$ aquestalkpi/AquesTalkPi "漢字交じりのテキストを読み上げます" |aplay
筆者が配布しているESP-WROOM-02用のgitをダウンロード済の方は、下記のコマンドでインストールが可能です。
$ cd ~/esp/tools/
$ aquestalk_setup.sh

インストーラ:

簡易HTTPサーバで音声データ入力用のユーザインタフェースを作成

(追記:2017/8/13)
より音声データを簡単に再生するために、Raspberry Pi上で簡易HTTPサーバを動かします。下図は、パソコンやスマホのブラウザからRaspberry Piへアクセスした時の画面です。テキストボックスへ文字を入力し、[Enter]キーもしくは[送信]ボタンをクリックすると、音声が出力されます。

イメージ 2

以下は簡易HTTPサーバのBashスクリプトです。nkfをインストールしてから実行してください。
#!/bin/bash
amixer cset numid=1 200
IP=`hostname -I|cut -d" " -f1`
TALK="日本語を話します。"
HTML="\
HTTP/1.0 200 OK\n\
\n\
<html><head>\n\
<title>Test Page</title>\n\
<meta http-equiv=\"Content-type\" content=\"text/html; charset=UTF-8\">\n\
</head>\n\
<body>\n\
<h3>AquesTalkPi</h3>\n\
<form method=\"GET\" action=\"http://"${IP}"/\">\n\
<input type=\"text\" name=\"TEXT\" value=\"TALK\">\n\
<input type=\"submit\" value=\"送信\">\n\
</form>\n\
</html>\n\
\n\
"
echo "Listening HTTP port 80..."  
while true
do
    echo -e $HTML\
    |sed -e "s/\"TALK\"/\"${TALK}\"/g"\
    |sudo netcat -lw0 -v 80\
    |while read TCP
    do
        HTTP=`echo -E $TCP|cut -d"=" -f1`
        if [ "$HTTP" = "GET /?TEXT" ]; then
            TALK=`echo -E $TCP\
            |cut -d"=" -f2\
            |cut -d" " -f1\
            |sed -e "s/+/ /g"\
            |nkf --url-input` 
            echo -E "TEXT="${TALK}
            kill `pidof aplay` &> /dev/null
            sleep 0.5
            aquestalkpi/AquesTalkPi "${TALK}"|aplay &
        fi
    done
done

# ダウンロード:

音量を変更するには

音が大きすぎる時は、以下のコマンドで音量を下げることが出来ます。スピーカの振動が構造部品などで共振し、音が割れてしまう場合は、音量を下げることで、多少、改善することができます。末尾の数字を小さくするほど、音も小さくなります。
amixer cset numid=1 230

動作の一例

完成後の動作例を示す動画です。


OSのバージョンによってはSpeaker pHATが動作しないらしい

Linuxのバージョンによっては動作しないという情報を得ています。ネットに記載された情報だと、少し古い4.9.24や、4.9.25では動作しないようです。
ただし、より古いバージョンでも動作するようなので、必ずしも最新版が良いとは限りません。当方が動作確認を行った時のバージョンです。
$ uname -a
Linux raspberrypi 4.9.30+ #1001 Fri May 26 16:03:39 BST 2017 armv6l GNU/Linux
バージョンによっては下記のようなエラーが出るらしい
Unable to determine hardware version. I see: Hardware : BCM2835


つぎは、スピーカボックスへ収容します。下記のリンクをクリックしてください。

スピーカボックスへ収容したRaspberry Pi用ラジカセ風Speaker pHAT
https://blogs.yahoo.co.jp/bokunimowakaru/55859194.html

by ボクにもわかるRaspberry Pi

開く コメント(0)

全6ページ

[1] [2] [3] [4] [5] [6]

[ 次のページ ]


.


プライバシー -  利用規約 -  メディアステートメント -  ガイドライン -  順守事項 -  ご意見・ご要望 -  ヘルプ・お問い合わせ

Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.

みんなの更新記事