はじめに
本ページは、2016年7月に発売された金丸隆志著「カラー図解 最新 Raspberry Piで学ぶ電子工作」(講談社ブルーバックス)の補足情報をまとめるためのページです。2020年6月に発売された本書の改訂版のページは「ラズパイ4対応 カラー図解 最新 Raspberry Piで学ぶ電子工作」
ですのでご注意ください。
補足情報一覧
以下では、Raspberry PiのOSの更新に伴う内容の変更や、正誤情報などを記していきます。さらに、Raspberry Piをより便利に使うための情報が下記になります。
- 本書の演習を picamera2 (libcamera) で実行する方法
- 本書の演習をウェブカメラで実行する方法
- ディスプレイ・マウス・キーボードを接続せずにRaspberry Piを利用する(1)~VNC編
- ディスプレイ・マウス・キーボードを接続せずにRaspberry Piを利用する(2)~SSH編
- Raspberry PiのIPアドレスを固定する
旧版の記事へのリンク
本書の旧版「Raspberry Piで学ぶ電子工作」のサポートページには、新版の読者の方にも役立つ記事がいくつかあります。それらへのリンクを貼ります。現在でも動作するようメンテナンスは継続しています。
こちらの書籍を参考にキャタピラロボットを作成しておりますが、質問があります。
返信削除291ページに記載のシェル10-02-stream.shについて、ラズパイに直接接続するタイプのカメラを利用したシェルスクリプトだと思いますが、USBカメラを接続し、video1と認識させた場合どのように書き換えればよろしいでしょうか?
また、可能であればカメラ2台(書籍のケース+USBカメラ)の場合のシェルスクリプトの書き換えについても教えていただけませんでしょうか。
宜しくお願いします。
お問合せありがとうございます。
削除USBのWebカメラの利用ですが、本書の対象外となりますので、
基本的にはお答えできません。
以下に、いくつかのヒントを記しますが、下記の点をご了承ください。
・下記に記す内容について、内容を保証することはできません
・この件に関しましては、この回答を最後とさせて頂きます。
さて、/dev/video1 と認識されているWebカメラをストリーミングするには、
10-03-stream.sh というファイルを作成し、例えば下記ように記せば良いでしょう。
#!/bin/sh
cd /opt/mjpg-streamer
export LD_LIBRARY_PATH="$(pwd)"
./mjpg_streamer -i "./input_uvc.so -d /dev/video1 -r 640x480 -f 15" -o "./output_http.so -p 9000 -w ./www"
なお、「./mjpg_」で始まる行は1行ですのでご注意ください。
640x480が解像度、15がフレームレート、9000がサーバーのポート番号ですので
適宜変更してください。
ただし、確か上記のスクリプトが動作するのは、MJPEGモードをサポートした
Webカメラのみだったと思います。
経験上、Logicool社のWebカメラはMJPEGモードをサポートしてることが
多いと思いますが、全てを確認したわけではありません。
また、他社製品はMJPEGモードをサポートしていないことも
多いでしょう。
このように、世の中に多数存在するWebカメラをサポートしきれないことが、
本書でUSBのWebカメラを用いなかった理由です。
次に、ストリームの複数起動です。10-02-stream.sh には
mjpg-streamerの複数起動を抑制するコードが入っているので、
それを削れば複数起動が可能になります。10-02-stream.sh で
下記の行だけを残せばよいでしょう。
#!/bin/bash
LD_LIBRARY_PATH=/opt/mjpg-streamer/ /opt/mjpg-streamer/mjpg_streamer -i "input_raspicam.so -fps 15 -q 50 -x 640 -y 480" -o "output_http.so -p 9000 -w /opt/mjpg-streamer/www" > /dev/null 2>&1&
なお、複数起動の際は、2つのストリームのポート番号を変える必要がありますのでご注意ください。
例えば9000と9001、などのようにポート番号を変えます。
回答は以上です。
なお、二つのストリームの映像の同時表示などは、
プログラム(本書で言えば javascript.js)の
大幅な書き換えが必要となりますのでお答えできません。
ご了承ください。
早速のアドバイス大変ありがとうございます。
返信削除いただいたヒントを参考に試したところ、おかげさまでUSBカメラでの2カメラのWeb表示に(HTMLで記述したためリサイズせず単なる表示ですが。。。)成功しました。
今回BSW200MBKという広角のUSBカメラを使用しておりますが、フレームレートを30にした時のみmjpg-streamerで認識しました。ご指摘の通りUSBカメラによって相性?等あるようです。
javascript.jsの方の書き換えにもチャレンジしたいと思います。
テキストはカラー版を使用してます。
返信削除2018 MAY 13 webiopi をインストールしました。
OS は最新の strech で ラズパイはModel 3 B です。
テキスト通り、インストールは成功したように思います。
カラー版のP226にはwebiopi の起動として
sudo service webiopi start と書かれていますが、
これでは、Fail になります。起動しません。
インストール時の最後のメッセージでスタートは
sudo /etc/init.d/webiopi start と表示されていたの
を思いだし、この方法を試しましたら起動したようです。
これで、今後の実習が可能なのでしょうか?
また、テキスト通りに stop したり kill しても
プロセス番号が表示され、停止してないようです。
正しい stop 方法 もお教えください。
お問合せありがとうございます。
削除WebIOPiのインストールコマンドは、
p.224の5コマンド、p.226の2コマンドの計7コマンドあります。
症状から推測するに、p.226の2コマンドが正常に実行されていない
ように思われます。
もし、上記のコマンドを「コピー&貼り付け」により実行していないのでしたら、
「コピー&貼り付け」による実行を行うことをお勧めします。
また、その際、p.224の5コマンドの方にも問題がないとは言えませんので、
WebIOPiを再インストールするのが最も安全に思えます。
そのための手順を示します。
まず、ターミナルを起動し、下記のコマンドを実行することで、
以前のWebIOPiのインストールに用いられたディレクトリ
「WebIOPi-0.7.1」を削除してください。
(これもコピー&貼り付けでお願いします)
sudo rm -rf WebIOPi-0.7.1
そして、補足ページ
https://raspibb1.blogspot.jp/2016/07/blog-post_19.html
の「p.224:WebIOPiのインストールコマンド」に記された7つのコマンドを
一つずつコピー&貼り付けにより実行してみてください。
WebIOPiが再インストールされます。
以上で症状が何か変わるかどうか、お試しください。
アドバイスありがとうございます。
削除私の Rasbian は strech だったので、テキストやWWW補足で書かれている jessie にはあたらないと思いP226 の2行はパスしたのですが、いただいた解説で再インストールして成功しました。
webiopi が動作しているかどうかや、JOB No はデスクトップ標準アプリのタスクマネジャーでも確認できました。
ただし、タスクマネジャーではコマンド名が Python3 と表示されていますので、今までずっとPython2 で実習してきたので、今後どうなるのだろうと少し先回りな心配をしています。
それでもPython2 でゆっくりなLチカを実行して、
Windows10側からのGPIO header画面で ゆっくりLチカが確認できましたので、杞憂なのかもしれません。
明日から9.2.5 演習以後の学習に進みます。
ありがとうございました。
その後、順調にテキスト内容どおりに実習は進みましたが、P262の図9-13の左右矢印がブラウザに表示されませんでした。GPIOにも信号は届いてないようです。ただし、これはブラウザがIE11(Windows10-32bit build 1804)の場合で、試しにEdge を使うと成功しました。Fire-Foxはだめでした。I-pad から Safari ブラウザもIE-11 と同じ状況でダメでした。Safari がダメなので、次章のキャタピラ模型をI-padから操縦するのは無理そうに思います。インストール時期の問題とか、個人の環境の違いとか、webiopi は HTML JAVA PYTHON3 CSS を理解する以前の時点で、なかなか難物なようです。
返信削除考えられる原因として2つ思いつきます。
削除(1) アドレス(http://...:8080/bb/04/ など)の末尾に「/」(スラッシュ)をつけていないこと (p.261などに書かれています)
(2) ブラウザと相性が悪いこと (p.235に書かれています)
しかし、私は上記の(2)が原因であるとは考えにくいと考えています。
その理由は下記の通りです。
・(2)が問題となるのは、図9-5のデモアプリのみである場合がほとんどなこと
・(2)が問題になるにしても、章ごとに相性が変わること (9.5章は成功して9.6章は失敗するなど) は考えにくいこと
ですので、私としては(1)の可能性が高いと考えています。
もし仮に、(2)が原因だとしても、Google ChromeというブラウザがWindows/macOS/iPadにありますので、
そちらで試すという手もあります。
webiopi を用いたキャタピラ式ロボットを作成しています。
返信削除モーター確認を行なったところ、スマートフォンで画面を表示することはできたのですが、矢印を押しても反応がありません。
ロボット側に原因がある気がするのですが、考えられる原因はどのようなものになりますか?また、解決策があれば教えていただきたいです。
よろしくお願いします。
下記を順に確かめてみてください。
削除1. /etc/webiopi/configのmyscriptの行が
myscript = /usr/share/webiopi/htdocs/bb/05/script.py
のように5番目のスクリプトを指定していること
2. WebIOPiのインストールが正常に行われたか
これは、
「p.234 GPIO Headerによる動作確認」
および
「9.3 ブラウザのボタンによるLEDの点灯」
を試し、ブラウザからLEDの点灯状態が変わることを
確かめることでチェックできます。
これらはWebIOPiを用いた最も簡単な演習なので、
これらがうまくいかないならば、WebIOPiの
インストールがうまくいっていないことが考えられます。
インストール法は
https://raspibb1.blogspot.com/2016/07/blog-post_19.html
の「p.224:WebIOPiのインストールコマンド」に記されています。
なお、9.3の演習を行う際のmyscript行は
myscript = /usr/share/webiopi/htdocs/bb/01/script.py
ですので注意してください。
3. 組んだ回路は正しいか
上の1. および2.が問題なければ、組んだ回路(図10-4)を良くチェックしてください。
ブレッドボードの上下のマイナスラインをジャンパワイヤで結び
グラウンドを共通化することも忘れないでください。
10kΩの抵抗の位置にもよく注意してください。
なお、この演習は
「9.6 タッチイベントの利用~DCモーターの速度制御」
がベースとなっています。
こちらの演習のほうが回路が簡単ですので、
こちらの動作を確認してから10章を試すというのも手です。
(その場合、myscriptは
myscript = /usr/share/webiopi/htdocs/bb/04/script.py
です)