2019年1月29日火曜日

Raspberry Pi Zero Wで動画配信

先日AliExpressで注文したRaspberry Pi Zero W用のカメラケーブルが到着しました。もっとかかるかと思いましたが10日程で到着しました。


小さな袋がポストに投函されていました。
AliExpressではユーザの手元に商品が到着して問題なければ、AliExpressのサイトにログインして「Confirm Goods Received」をクリックすると代金が出店者に支払われるようです。早速Raspberry Pi Zero Wに接続して問題ないことを確認してからポッチと押しておきました。


Raspberry Pi Zero Wとの接続はこんな感じです。


ケーブルの表裏に気を付けて接続して下さい。


カメラ側は




早速カメラを使って動画の配信をしたいと思います。

RAPIRO完全無線化計画では鉄人28号のようなコントローラでの操作を予定していますが、その時にカメラ映像を動画配信してコントローラでモニタできるようにすることでよりリアルな体験ができるようにしたいと考えています。

ということで「Raspberry Pi 動画配信」で検索すると前人の知恵を見ることができますが、mjpg-streamerでいきたいと思います。GitHubのサイトにも説明がありますが、組み込み系を想定していてRasPiカメラ用のモジュールも標準で用意されています。あとはBuilding & Installationに書かれている通りにコマンドを打ち込んでいけば問題なく動きます。


以下はRaspberry Pi Zero Wにsshでログインして実行したコマンドです。
なお、ソース用のディレクトリとしてsrcを使っています。

$ cd src
$ git clone git://github.com/jacksonliam/mjpg-streamer

必要なパッケージをインストールします。

$ sudo apt-get install cmake libjpeg8-dev
$ sudo apt-get install gcc g++

mjpg-streamerのコンパイルをします。

$ cd mjpg-streamer/mjpg-streamer-experimental
$ make
$ sudo make install

起動コマンドは長くなるのでスクリプトを作っておきます。とりあえずホームに作成しますが適当なディレクトリに作成していただければと思います。

$ cd
$ vi streaming.sh
#! /bin/sh
export LD_LIBRARY_PATH=/usr/local/lib/mjpg-streamer
mjpg-streamer -o "output_http.so -w /usr/local/share/mjpg-streamer/www" -i "input_raspicam.so -fps 5 -x 480 -y 320"

$ chmod +x streaming.sh
$ ./streaming.sh

ここでパソコン等からブラウザで「Raspberry Pi Zero WのIPアドレス:8080」にアクセスするとmjpg-streamerのページが表示されますので、左側のメニューから「Stream」をクリックするとカメラ映像がストリーミングで確認できます。

2019年1月23日水曜日

Raspberry Pi zero WのAudio出力

やっとVISAバーチャルカードが来ましたので早速AliExpressで部品の注文をしました。おかしな日本語も時々混ざってはいますが、日本語のページもあるので注文についてそれ程迷うこうはありませんでした。注文後は、進捗状況がメール配信されるので好感が持てましたが、到着まではしばらくかかるでしょうからノンビリと到着を待ちたいと思います。

さて、その間にRaspberry Pi Zero Wから音声出力ができるようにしておきたいと思います。

Raspberry Pi 2や3にはイヤフォンジャックが着いていますがZeroには着いていません。Raspberry Pi Zero用のDACも販売されています(Pi-DACZeroHiFiBerry DAC +pHAT DACなど)が、以前Raspberry Pi 2の時に使っていたアンプがあるのでこれを流用したいと思います。Raspberry Pi ZeroではHDMIかGPIOを利用して音声出力は可能なので、GPIOから音声信号を取り出してアンプに接続します。

「Raspberry Pi Zero Audio」で検索すればGPIOを利用した音声出力に関するサイトがたくさん出てきますが、基本的にはAdafruit のサイトを参考にしているようです。

Adafruitのサイトでは二通りの方法が掲載されていますが、boot時にDTO(Device Tree Overlay)を利用してGPIO端子にPWMを割り当てる方法では設定の変更にリブートが必要となりますが設定は簡単です。(今回はRAPIROへの組み込みを前提としているので、こちらの方法で問題はありません)自由度が高い方法はOption 2の方なので、今回はこちらを試したいと思います。

基本的にはAdafruitのサイトに記載されている通りに実行していけば良いのですが、Raspberri Pi Zeroを前提に手順が示されているので、Raspberry Pi Zero Wかつ無線LANへの接続が終了している条件で、Raspberry Pi Zero Wにはパソコンなどからsshで接続している状況での作業を説明したいと思います。私の場合は別のRaspberry Pi 2(有線LANでネットワークには接続)のGUI画面で端末を開いてsshで接続しています。

あ!、ブラウザでAdafruitのサイトを表示しておいて下さい。


以下、Raspberry Pi Zero W側で必要な作業だけ記述して行きたいと思います。

$ sudo apt-get update
$ sudo apt-get install raps-gpio

$ cd
$ git clone git://git.drogon.net/wiringPi
$ cd wiringPi
$ ./build

ここでwiringPiのbuildがうまくいったかを確認します。

$ gpio -v
$ gpio readall

次にGPIOの割り当てを変更するツールをコンパイルします。(viは適当なエディタを使って下さい)また、ここでは作業用ディレクトリを使いますが、すでに作成済みなら読み替えてください。

$ cd
$ mkdir tmp
$ cd tmp
$ vi gpio_alt.c

ここで、Raspberry Pi 2(またはパソコン)のブラウザに切り替えてAdafruitのサイトからgpio_alt.cのソースをコピー(Changing the GPIO ALTsの下、Here's the code in entirety:でCopy Codeをクリックする)&ペースト後、保存します。

$ gcc -o gpio_alt gpio_alt.c
$ sudo chown root:root gpio_alt
$ sudo chmod u+s gpio_alt
$ sudo mv gpio_alt /usr/local/bin/

$ gpio_alt -p 13 -f 0
$ gpio_alt -p 18 -f 5

変更されたかの確認

$ gpio readable

次に音声出力をヘッドフォン固定に変更します。

$ sudo raspi-config

8 Advanced Option -> A9 Audio -> 1 Force 3.5mm (Headphone)


ここで、一旦Raspberry Pi Zero Wの電源を切ってアンプとスピーカを接続します。

Raspberry Pi Zero WにはGPIOピンが標準では付いていないので、ハンダ付けしてアンプをつなぎます。(アンプ出力もヘッドフォンジャックからメスのジャンパワイヤに変更してあります)


配線が判りづらいですが、Raspberry Pi Zero用のピン配置の物理ピン番号で説明すると

電源+ →1番(3.3V)
電源− →9番(GND)
音声R+ →12番(GPIO 18)
音声L+ →33番(GPIO 13)
音源− →34番(GND)

音源R−と音源L−はアンプ側で接続して1本で配線しています。


Raspberry Pi Zero Wの電源を入れ直して、

$ gpio_alt -p 13 -f 0
$ gpio_alt -p 18 -f 5
$ aplay /usr/share/sounds/alsa/Front_Center.wav

で問題なく再生されました。

ここで電源投入のつどgpio_altを入力するのは面倒なので「Automate it!」以下を行なって起動時に自動的にgpio_altを実行するようにします。

$ sudo vi /root/pwmaudio.sh

先程と同じように「and inside put:」以下のシェルスクリプトをコピー&ペーストして保存します。

$ sudo chmod +x /root/pwmaudio.sh
$ sudo vi /lib/systemd/system/pwmaudio.service

同じく「and in there stick:」以下のシェルスクリプトをコピー&ペーストして保存します。

$ sudo systemctl enable pwmaudio.service
$ sudo systemctl start pwmaudio.service

エラーが出なければ、Raspberry Pi Zero Wを再起動して

$ gpio readall

で設定が変更されていることを確認して終了です。

2019年1月18日金曜日

アリババとバーチャルカード

RAPIRO無線化計画でRaspberry Pi Zero Wとリチウムポリマーバッテリー+USB充電回路を作成するので、リチウムポリマーバッテリーを購入する必要が出て来ました。

USB充電回路についてはGoogleさんで「リチウム電池 充電回路」で検索するといくつか出て来ますが、いつも使っているスイッチサイエンスさんでも色々と取り扱っているようです。

5V/3.3V出力付きリチウムイオン電池充電器とかLi-Po ライダー Proあたりが使えそうです。これならUSBから充電して5V出力も出来るのでそのままRaspberry Pi Zero Wの電源として利用できます。ただ価格が2,000円から3,000円程とチョットお高めです。

さらに検索を続けているとAliExpressにこんなのを見つけました。価格はUS $3.10で送料無料なので400円弱になります。さすがアリババの運営するサイトです。ついでにリチウムポリマーバッテリーも検索するとやはり格安のものがゴロゴロしています。さらにRaspberry Pi Zero Wに接続するカメラのコードもサイズが違うので、探してみると$1程でより取り見取りです。

決済についてはカード決済だけでPeyPalは利用できないようです。まあ有名なサイトですから問題はないとは思いますが、そこは中国のネット販売ということで、最近流行りのバーチャルカードを申し込んで決済しようと思います。

バーチャルカードは現在いくつかありますが、現在加入しているVISAでも利用できるので、VISAのバーチャルカードを作ることにしました。利用限度が月10万まで、カードの不正利用の補償サービスもついているので今後はネット決済は、PeyPalが使えればPeyPalで、チョット怪しいサイトでの買い物やPeyPalが使えないサイトではバーチャルカードという利用方法でいいかなと考えています。

申し込みはVpassにログインして新しいカードの追加メニューからバーチャルカードを選択すれば簡単に申し込みできます。

3日程で審査が通ったというメールが来ましたが、カード番号は教えてくれないのでバーチャルカードが手元に来るまで利用することは出来ないようです。それでも1週間ほどでカードが郵送されてくるそうなのでカードが到着次第AliExpressで注文してみたいと思います。

2019年1月17日木曜日

RAPIRO起動せず!

EdisonがRaspberry Piで使えるようになったので、ふと部屋の片隅で埃をかぶっていたRAPIROを引っ張り出して来て久々に電源を入れてみました。

が、RAPIRO起動せず!

どうやらまた基盤が飛んでしまったようです(泣)
スケッチの書き換えは出来るので、おそらくまた電源周りのトラブルかと思います。基盤の修理にチャレンジしても良いのですが、やることも多いので基盤の購入をして乗り切ることにしました。

1週間程で到着した基盤と交換すると問題なく起動しました。

が、動きが不安定です!

数回は問題なく動いていたのですが、電源ONでRAPIROが振動するようになりました。電源ONでサーボモータが全て初期位置に移動するのですが、多少のずれで音が発生することは組み立てマニュアルにも記載されていますが、調整済みのはずが体を左右に振るなどおかしな動きをはじめました。

再度分解してみると、腰のモータの接続線が一部接触不良になっているようです。

腰の部分も左右に振ることができるのですが、その時接続線が引っ張られてサーボモータ側の接続が一部断線したような状態になっているようです。もっと余裕を持って配線しておけばよかったのですが、組み立てマニュアルに記載がなかったので短くなってしまっていたようです。腕については線に余裕を持つように説明があったのですが、腰の部分にはその記載がなかったようです。

ということで、腰の部分のサーボモータの発注をしました。


ここまで資金を投入したので、以前はできなかったRAPIRO完全無線化をしたいと思います。

RAPIROにはRaspberry Piを組み込むことが可能ですが、以前はまだRaspberry Pi Zero Wは発表されておらずRaspberry Pi 2 B+を使っていたのですが、RAPIROのサーボモータやRaspberry Piの電源、Raspberry PiカメラにUSB無線LANまで組み込むと電池ではさすがに容量不足となるので、AC 100v用の電源アダプタからDC-DCコンバータで電源を2系統取っていたためケーブルを引きずることになっていました。

今回はRaspberry Pi Zero Wを使ってこれを別のリチウムポリマーバッテリーで動かして完全無線化を行ってみたいと思います。

RAPIRO標準の電池からはRAPIROのみを動かして、頭部にRaspberry Pi Zero Wとリチウムポリマーバッテリー+USB充電回路を搭載して無線化したいと思います。
頭部はネジ止めするのでエネループでは交換の度にネジを外さないといけないので面倒ですので、外部からUSBで充電できるようにしたいと思います。

以下次回に続く・・・

2019年1月11日金曜日

Raspberry PiでEdisonプログラミング

さて、前回 Raspberry PiでEdisonのプログラムを作成したところプログラムの転送ができませんでしたが、その原因はRaspberry Piのイヤフォン出力端子の出力(W:ワット)が足り無いのでは無いかという予想になりました。

そこで早速、秋月電子通商でヘッドフォンアンプキットを購入してテストしてみました。


ハンダゴテを持ち出して組み立てること1時間


久々の半田付けですが、熱に弱いICについてはソケットも同梱されているので初心者でも失敗なく完成できると思います。

1個840円と他のアンプより割高ですが、単4電池2本で動いてボリュームスイッチもついているのでこれにしました。ラズパイから電源を取ればもっとコンパクトで安いアンプも構築できますが、ラズパイもケースに入れて使っているのであまり線をごちゃごちゃと取り回すのも嫌なのでこれにしました。あとはケースを作れば簡単に持ち運べるので良いかなと思います。

完成して、早速電池を入れてプログラム転送のテストを行いましたが、ラズパイから問題なく転送できました。アンプのボリュームは80%程度でラズパイのボリュームはMAXで転送できました。

次は3Dプリンタでのケース作成かなw

--
Kei Ichimaru

2019年1月7日月曜日

Edison プログラミングロボット

新しい年を迎えて、3年以上たった久々の投稿です。

我が家のLEGO Mindstorms NXTもすでに旧型となり、各種部品も入手しずらくなったので次を考えることにしました。できるだけ安くプログラミングの勉強ができる物は無いかと物色していたところオーストラリア発のEdisonというロボットを見つけました。

Amazonでも販売していますがちょっと割高(本家はUSD 49.00)でした。
他の国内サイトでも販売していますが、直接本家から購入してみることにしました。

年末の12月27日にWebサイトで購入しましたが、年が明けた1月5日に到着しました。

香港から発送され、A4サイズ程の封筒で日本郵便が使われていました。投函されるとメールが送られて来て、郵便物の追跡が可能でした。2週間ほどかかるかと思っていましたが9日で郵便屋さんが持って来てくれました。









早速開封してみると


8cm程の箱が1つだけ入っていました。Edisonのシールを剥がすと開封できるのですが、このシールがちょっと剥がしずらかったです。
右側の写真をよくみるとシールを剥がしたところがはめ込み式になっているので、ここを開くと簡単に本体が取り出せます。外箱には簡単な説明が図で印刷されているだけの潔い梱包になっています。
本体も組み立てる必要はなく、単4電池4本を用意すればすぐに動かすことができます。

本体後部
本体後部の蓋を開けると、ケーブル(ブログラムの転送で使います)が入っていますが、これを取り出して電池を入れて、スイッチONで起動します。電池の受け部分が➕➖ともにバネのようになっているのでちょっと分かりずらいですがカバーの部分に➕➖が刻印されているので、これに合わせて電池の向きを間違えないように入れてくださいね。




底面の小さなスイッチが電源スイッチです。
すでにプログラムが登録されているので、電源ONして上面の三角のスイッチを1回押すと障害物を避けて前進するプログラムが起動されます。

次に、本体を外箱のバーコードの部分に乗せて本体上部の丸いスイッチを3回押すと、前進してバーコードを読み込みます。これで、プログラムの切り替えが完了です。三角のスイッチを押すと、光源に向かって前進するプログラムが起動されます。懐中電灯で本体前面のセンサーに向かって光を当てると光の方向に向かって首を振りながら前進します。
数種類のプログラムが内蔵されていて、WebサイトのEdBook 1(英語)にバーコードによるEdisonの楽しみ方が説明されています。

ここまで、問題もなくスムーズに来たので、次はプログラミングに挑戦です。

EdisonにはEdBlocks(初心者向け)、EdScratch(Scratch互換)、EdPy(Python互換)の3種類の開発環境が用意されていますが、全てWeb上で提供されている為、ネット接続が必須となります。今回はEdScratchを利用してRaspberry Piでテストしてみました。

まずは、EdScratchで提供されているTest_programを試してみましたがうまくプログラムの転送ができませんでした。プログラムの転送には、その昔、電話網を利用したデータ通信で利用されていた音響カプラと同じ技術(デジタル信号を音声信号に変換してデータ通信を行います。この為、ピーガーという音がするんですね)が使われているようです。
トラブルシューティングでは音量を最大にしろという指示があるので、その通りにしましたが、やはりプログラムの転送に失敗します。試しにイヤフォンを接続して確認すると、ピーガーという音がするのでデータ変換は正常に行われているようです。

そこで、Windowsパソコンで試してみると、ピーガーという音がしてプログラムの転送は正常に終了しました。

Windowsパソコンにイヤフォンを接続して試してみると、Raspberry Piよりも大きな音でピーガーが聞こえるようです。どうやらRaspberry Piのイヤフォン用出力端子の出力電力(W:ワット)が足りないようです。
できればRaspberry Piで色々と遊びたいので、アンプを接続して出力をアップして試してみたいと思います。ネットで検索するとタブレットなどで失敗している例もあるようですが同じ原因では無いかと思います。ちょっと工作が必要ですが、できるだけ安価にアンプを作ってテストしてみたいと思います。

--
Kei Ichimaru





Edisonが故障した一件

 最近またEdisonで遊んでいます。 教育用のデバイスとしてよく出来ているなと思っている Edison ですが、現在3台を所有しています。 最近このうちの1台が調子が悪くなってしましました。具体的にはBeep用のデバイスが壊れたようです。購入時にチェックをしたつもりですが今回久...