2018年12月31日月曜日

「カラー図解 最新 Raspberry Piで学ぶ電子工作」補足情報トップ

はじめに

本ページは、金丸隆志著「カラー図解 最新 Raspberry Piで学ぶ電子工作」(講談社ブルーバックス)の補足情報をまとめるためのページです。

まず、書籍のサンプルファイル、回路配線図(PDF)、応用演習(PDF)が必要な方は、下記の公式サポートページからダウンロードしてください。

パーツセット

書籍59ページにて紹介した秋月電子通商さまによるパーツセットはこちらです。
なお、小型液晶 (LCD)は含まれておりませんのでご注意下さい。
書籍の9章までの演習 (ただし、LCDを用いる7.3および7.4と、オプション扱いでカメラモジュールを用いる5.6は除く) を行えます。

なお、上記以外にamazonなどで本書の名前を冠したパーツセットが取り扱われておりますが、どれも著者や出版社および秋月電子通商様が関わった商品ではありませんので、ご注意ください。

補足情報一覧

以下では、Raspberry PiのOSの更新に伴う内容の変更や、正誤情報などを記していきます。

旧版の記事へのリンク

本書の旧版「Raspberry Piで学ぶ電子工作」のサポートページには、新版の読者の方にも役立つ記事がいくつかあります。それらへのリンクを貼ります。
現在でも動作するようメンテナンスは継続しています。

感想など


8 件のコメント:

  1. こちらの書籍を参考にキャタピラロボットを作成しておりますが、質問があります。
    291ページに記載のシェル10-02-stream.shについて、ラズパイに直接接続するタイプのカメラを利用したシェルスクリプトだと思いますが、USBカメラを接続し、video1と認識させた場合どのように書き換えればよろしいでしょうか?
    また、可能であればカメラ2台(書籍のケース+USBカメラ)の場合のシェルスクリプトの書き換えについても教えていただけませんでしょうか。
    宜しくお願いします。

    返信削除
    返信
    1. お問合せありがとうございます。

      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)の
      大幅な書き換えが必要となりますのでお答えできません。

      ご了承ください。

      削除
  2. 早速のアドバイス大変ありがとうございます。
    いただいたヒントを参考に試したところ、おかげさまでUSBカメラでの2カメラのWeb表示に(HTMLで記述したためリサイズせず単なる表示ですが。。。)成功しました。
    今回BSW200MBKという広角のUSBカメラを使用しておりますが、フレームレートを30にした時のみmjpg-streamerで認識しました。ご指摘の通りUSBカメラによって相性?等あるようです。

    javascript.jsの方の書き換えにもチャレンジしたいと思います。

    返信削除
  3. テキストはカラー版を使用してます。
    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 方法 もお教えください。

    返信削除
    返信
    1. お問合せありがとうございます。

      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が再インストールされます。

      以上で症状が何か変わるかどうか、お試しください。

      削除
    2. アドバイスありがとうございます。
      私の Rasbian は strech だったので、テキストやWWW補足で書かれている jessie にはあたらないと思いP226 の2行はパスしたのですが、いただいた解説で再インストールして成功しました。
      webiopi が動作しているかどうかや、JOB No はデスクトップ標準アプリのタスクマネジャーでも確認できました。
      ただし、タスクマネジャーではコマンド名が Python3 と表示されていますので、今までずっとPython2 で実習してきたので、今後どうなるのだろうと少し先回りな心配をしています。
      それでもPython2 でゆっくりなLチカを実行して、
      Windows10側からのGPIO header画面で ゆっくりLチカが確認できましたので、杞憂なのかもしれません。 
      明日から9.2.5 演習以後の学習に進みます。
      ありがとうございました。

      削除
  4. その後、順調にテキスト内容どおりに実習は進みましたが、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 を理解する以前の時点で、なかなか難物なようです。

    返信削除
    返信
    1. 考えられる原因として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にありますので、
      そちらで試すという手もあります。

      削除