2018年12月29日土曜日

読者の方々の声

本ページでは、読者の方々のレビューなどをご紹介したいと思います。

紹介記事


ご紹介に感謝



以下、twitterでの反応をまとめます。




32 件のコメント:

  1. 4章のLCD表示で使用する秋月の完成キット(M-09109、AQM0802A-RN-GBW)ですがPi2-Bと相性が悪いようです。SDAを2K程度でプルダウンしないとi2cdetectで認識しません。

    返信削除
  2. すいません、記述が間違っていました。
    変換基板上のプルアップ(10K)は有効になっています。(デフォールトのままです)この状態でADT7410は認識しますがLCDは認識しません。
    現状ではLCDのSDAのみに2kほどはさんでGNDに落とすとLCD、温度計とも正常に認識して動作しています。たびたび申しわけありませんが、ご報告まで。

    返信削除
    返信
    1. 私のほうにもLCDが届きましたので、検証してみました。

      結論から述べますと、KBJさんと全く同じ状況でした。すなわち、
      「i2cdetectで認識しない。SDAとGNDを2kΩで結ぶと正常動作する」です。

      これはKBJさんにお知らせいただけなければ知ることができなかったことですので、とても助かりました。ありがとうございます。

      原因は、LCDの仕様書などを見てもよくわからず、現時点ではLCDの個体差ではないか、としか言いようのない状況です。

      対処法については、少し調べた結果をお知らせします。

      まず、これまで述べてきたように、LCDには基板のプルアップを有効にした「PUあり」と無効にした「PUなし」という2状態が存在します。完成品を購入すると「PUあり」です。

      そして、SDAとGNDを結ぶ抵抗の大きさをRとしますと、Rとして許されるのはおよそ下記のようでした。
      PUあり:ほぼ2kΩのみ
      PUなし:2kΩ~4kΩ(5kΩにするとI2Cの通信エラーがやや増える)

      既に述べました通り、SDAとGNDを抵抗で結びますと、小さいながらも電流が流れ続けますので(「PUあり、R=2kΩ」で0.93mA、「PUなし、R=4kΩ」で0.57mA)、Rとしては大きい抵抗を用いるのが望ましいでしょう。

      以上から、私としましては、
      「LCDのPU部のはんだを除去し、SDAとGNDを結ぶ抵抗を4kΩか5kΩ程度にする」
      ことをお勧めします。

      ところで、「SDAとGNDを2kΩで結ぶ」というKBJさんの対処法はどのようにして思いついたのでしょうか?私では思いつきそうにありませんので、少し気になりました。

      削除
  3. 再現させていただいてありがとうございました。
    原因はよくわかりませんが、分圧してSDAの電圧を下げると
    ACKを認識するのはないかと考えました。
    Pi2-Bの応用可能性について、今後もご指導をお願いします。

    返信削除
  4. 突然おじゃまします。
    私も同じ問題で頭を悩ませていたのですが
    現時点での解決方法をまとめました。

    http://itoi.jp/raspberrypi.html

    返信削除
    返信
    1. 秋月の回答(FXMA2102を用いる方法)を試してみましたが、LCDは認識されませんでした。

      これを用いても「今まで動いていたLCDは動くが、動かないLCDはやはり動かないまま」という結果です。

      現時点ではKBJ様が上で書かれている方法でしか動作に成功していない、といったところです。

      削除
    2. いろいろ調べて頂いてありがとうございます。m(_ _)m

      FXMA2102を用いる方法を私も試したのですが
      認識しませんでした。
      2個作って複数の液晶で試しました。

      秋月の公式がクローズされた事と合わせると
      この対応では対処出来ないみたいですね。

      またKBJ様の対処方法で認識することは確認しました。
      ただし私の持っている個体ではチャージポンプが動作した後
      認識出来なくなりました。電源断で再度認識します。

      バックライトありの個体ではKBJ様の対処方法でも認識しませんでした。

      削除
    3. Raspberry Piで動作しないLCDについて、秋月電子より回答を頂きました。
      「LCDの新しいロットでは電流の引き込み能力が低いためACK信号が十分小さくならず、Raspberry Piで認識しない」、
      「Raspberry Piで動作させるには、Raspberry Piの基板上の1.8kΩのプルアップ抵抗を取り外し、別途10kΩのプルアップ抵抗を取り付ける(私は試すつもりはありませんが、ショップでは確認済だそうです)」、
      「今後Raspberry Piで動作するLCDが用意できれば(別商品かもしれません)、Webに明記して販売する」
      だそうです。

      ストロベリーリナックスで売られている類似のLCDで同じ問題が起こる可能性があるかどうかについては「わからない」とのことです。

      取り急ぎ以上です。

      削除
  5. 調査していただいてありがとうございます。
    ACKの仕様について結果がわかったら教えてください。

    返信削除
    返信
    1. Raspberry Piで動作しないLCDについて、秋月電子より回答を頂きました。
      「LCDの新しいロットでは電流の引き込み能力が低いためACK信号が十分小さくならず、Raspberry Piで認識しない」、
      「Raspberry Piで動作させるには、Raspberry Piの基板上の1.8kΩのプルアップ抵抗を取り外し、別途10kΩのプルアップ抵抗を取り付ける(私は試すつもりはありませんが、ショップでは確認済だそうです)」、
      「今後Raspberry Piで動作するLCDが用意できれば(別商品かもしれません)、Webに明記して販売する」
      だそうです。

      ストロベリーリナックスで売られている類似のLCDで同じ問題が起こる可能性があるかどうかについては「わからない」とのことです。

      取り急ぎ以上です。

      削除
    2. 情報ありがとうございます。秋月電子さまには長くお世話になっておりますが… 現時点で仕様?変更に近い状況に関して告知しないことはちょっと優しくない(らしくない)対応だと思います。ストロベリーリナックスの製品は数個確認しましたが同様の問題は起きていません。

      削除
    3. 中国のメーカーからの回答の直後に電話で取り急ぎ連絡を下さった、という形でしたので、Webにはいずれ掲載されるのではないかと思います。

      また、電話での口頭のみでのお話だったので書こうか迷ったのですが、Raspberry Piユーザーで動作しなかったという方には返金も考えている、というお話でしたので、アプローチしてみると良いかもしれません。
      (私は動作しないものは1つしか持っていませんので、資料として持っておこうと思っています)

      削除
    4. お久しぶりです。小型LCD(AQM0802)について、既に解決済みとは思いますが、小型LCD(AQM0802)の新しいロットがRaspberry Piで動作しない件について、正式な対処法が公開されましたのでお知らせします。

      本書発売後の追加情報
      http://raspibb2.blogspot.jp/2015/12/blog-post.html

      において、

      p.108:完成品のLCDを購入しても認識されない場合の対処法
      <LCD対処法:予備知識>
      <LCD対処法:暫定版>
      <LCD対処法:正式版(ただし上級者向け)>
      の順で記しましたので、ご参考ください。

      この「正式版」で用いられているI2Cリピーターは、トランジスタ技術8月号付録の基板でも用いられているものです。
      http://toragi.cqpub.co.jp/tabid/807/Default.aspx

      削除
    5. お久しぶりです。秋月電子通商さんより、Raspberry Piで正式に利用可能なLCDモジュールが発売されたので解説を追加しました。

      http://raspibb2.blogspot.jp/2015/12/blog-post.html
      の「4章全般:利用できるLCDについて1~秋月電子編」です。

      削除
  6. ご丁寧にありがとうございます。m(_ _)m 製品説明にも公式にコメントされていました。

    返信削除
    返信
    1. お久しぶりです。小型LCD(AQM0802)について、既に解決済みとは思いますが、小型LCD(AQM0802)の新しいロットがRaspberry Piで動作しない件について、正式な対処法が公開されましたのでお知らせします。

      本書発売後の追加情報
      http://raspibb2.blogspot.jp/2015/12/blog-post.html

      において、

      p.108:完成品のLCDを購入しても認識されない場合の対処法
      <LCD対処法:予備知識>
      <LCD対処法:暫定版>
      <LCD対処法:正式版(ただし上級者向け)>
      の順で記しましたので、ご参考ください。

      この「正式版」で用いられているI2Cリピーターは、トランジスタ技術8月号付録の基板でも用いられているものです。
      http://toragi.cqpub.co.jp/tabid/807/Default.aspx

      削除
    2. お久しぶりです。秋月電子通商さんより、Raspberry Piで正式に利用可能なLCDモジュールが発売されたので解説を追加しました。

      http://raspibb2.blogspot.jp/2015/12/blog-post.html
      の「4章全般:利用できるLCDについて1~秋月電子編」です。

      削除
  7. 前作に続き、今作も非常に楽しませてもらっています。ありがとうございます。
    しつもんなのですが、
    6.6.1 mjpeg-streamerのインストールと起動
    の、コマンド
    (3) git clone https://・・・
    を実行すると、ユーザー名とパスワードを求められます。ここには何を入力すればよいのでしょうか。

    返信削除
    返信
    1. (3)のコマンドですが、少し長いので、打ち間違えるとユーザー名とパスワードが求められます。コピーできるように以下に全てのコマンドを書いてみると以下のようになるでしょうか。
      (このスペースも横幅が狭いので折り返しが出来てしまうかもしれませんが)

      (1) sudo apt-get update
      (2) sudo apt-get install libjpeg8-dev cmake
      (3) git clone https://github.com/jacksonliam/mjpg-streamer.git
      (4) cd mjpg-streamer/mjpg-streamer-experimental
      (5) make
      (6) cd
      (7) sudo mv mjpg-streamer/mjpg-streamer-experimental /opt/mjpg-streamer

      なお、この章ですが、「p.228:WebIOPiの起動に失敗する問題」に注釈を記しましたように、WiringPi2-Pythonを対策済みのものをインストールし直さないと動作しない可能性があります。合わせてご確認ください。

      削除
    2. 打ち間違えだったようです。大変ご迷惑をおかけしました。おかげでちゃんと動作するようになりました。
      お忙しい中ありがとうございました。

      削除
  8. 根本的な解決策ではないですが、ソフトウェアI2CによりRasPi3BでAQM0802Aを動かしてみました。
    AQM0802Aを購入されたのに動作をあきらめた方もいると思いましたので参考になればと考え公開してみました。
    ※直リンクに変更しました。
    http://firewall.asablo.jp/blog/2016/07/18/8133829

    返信削除
    返信
    1. お知らせ頂き、ありがとうございます。

      本ページのコメント欄、ややツリーが複雑化して見にくくなってきました。
      AQM0802AをRaspberry Piで動かすための情報は
      http://raspibb2.blogspot.jp/2015/12/blog-post.html
      の「p.171:完成品のLCDを購入しても認識されない場合の暫定的な対処法」にまとめておりますので、合わせてご覧ください。

      よろしくお願いします。

      削除
    2. お久しぶりです。秋月電子通商さんより、Raspberry Piで正式に利用可能にしたLCDモジュールが発売されたので解説を追加しました。

      http://raspibb2.blogspot.jp/2015/12/blog-post.html
      の「4章全般:利用できるLCDについて1~秋月電子編」です。

      削除
  9. 本ページのコメント欄ですが、ツリーがやや複雑化して見にくくなってきました。
    流れを損なわない範囲で、いくつかのコメントを削除させて頂きました。ご了承ください。

    また、LCDであるAQM0802AをRaspberry Piで動かすための情報は

    http://raspibb2.blogspot.jp/2015/12/blog-post.html

    の「p.108:完成品のLCDを購入しても認識されない場合の暫定的な対処法」にまとめましたので、合わせてご覧ください。

    返信削除
  10. はじめまして。
    lircのリモコン作れました。感動です!
    今はAmazon Alexaを入力にして、IFTTT、beebotteを経由して作ったラズパイリモコンでテレビを操作しています。快適です。

    ところで、一点質問があります。
    テレビリモコンではテレビがつくのに、ラズパイリモコンではテレビがつきません。
    ※テレビがついている状態で電源オフはできます。

    確認すべき点など、アドバイスいただけないでしょうか。

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

      テレビの電源はlircd.conf内で「power」というコマンドで制御するようにしています。
      ご質問の内容は、この「power」コマンドが、
      電源オフ時には機能するが、電源オン時には機能しない、ということでしょうか?

      経験のない状況ですので、どこに問題があるのかを特定したいところです。

      まず、Raspberry Piのみで、すなわち、ターミナルで以下のコマンドを実行したとき、
      テレビのオンオフの両方は行えるでしょうか?
      それともオフしか行えないのでしょうか?

      irsend SEND_ONCE TV power

      もし上記コマンドで、「オンオフの両方が行える」場合、
      Amazon AlexaからRaspberry Piへの処理の過程で何か問題が起こっていると考えられます。

      もし、上記コマンドでもやはり「オフしか行えない」場合、
      Raspberry Pi + LIRC側に問題がありそうです。

      まず、書籍にあるように、

      irsend -# 2 SEND_ONCE TV power

      と「-# 2」とオプションを付けてみると何か変わらないでしょうか。
      これは「powerに対応する波形を2回送る」という意味になるので、
      数字の部分は変更して構いません。

      ただし、テレビの機種によっては「-# 2」によって
      テレビのオンとオフが一回ずつ実行される、
      という挙動になるので、このオプションを使うか使わないか、
      お使いのテレビに応じて判断する必要があります。

      上記オプションでも状況が改善しない場合は、
      テレビの「オン信号」と「オフ信号」が異なる、という可能性はあるのかもしれません。
      その場合、「オン」の信号と「オフ」の信号を別々にLIRCに登録する必要があります。

      なお、「オン信号とオフ信号が異なるテレビ」が実際に存在するのか、
      私は聞いたことがないのですが、
      テレビ以外の家電(例えばオーディオ機器)ではそのような機種は存在するそうです。

      削除
    2. アドバイスありがとうございます。

      irsend -# 2 SEND_ONCE TV power
      をターミナルから実行することでテレビを
      起動する事ができました。

      使用しているテレビはSHARP製で
      「クイック起動設定」という機能があり、
      この設定とLIRCコマンドが関係してるように
      みえましたので、ご報告いたします。

      以下、ターミナルからコマンド実行した結果です。

      ▪️クイック起動設定がオンの場合
      ⇒ irsend SEND_ONCE TV power を使用
      電源オン:◯ 電源オフ:◯

      ▪️クイック起動設定がオフの場合
      ⇒ irsend SEND_ONCE TV power を使用
      電源オン:X 電源オフ:◯

      ⇒ irsend -# 2 SEND_ONCE TV power を使用
      電源オン:◯ 電源オフ:◯

      理由はわかりませんが、このような結果になりました。

      削除
    3. ご報告ありがとうございます。

      確かに、「クイック起動設定」の内部の仕組みがわからないと
      なんとも言えませんが、それでも期待した動作が得られたようで
      良かったです。

      削除
  11.  初心者の私には「実例で学ぶRaspberry Pi電子工作}と「カラー図解 最新 Raspberry Piで学ぶ電子工」とてもわかりやすい書籍いろいろと参考にさせて頂いております。
     今回はアドバイスが頂けたらと思い投稿させて頂きました。
     解析したテレビリモコンの信号を利用してRaspberryのGPIOを制御する。例えば「Raspberry Piで学ぶ電子工作」のキャタピラ式模型をテレビリモコンで動かしたいのですがどのようにすればよいのかアドバイスをお願いします。
     /etc/lirc/lircrc に
    begin
    prog = irexec
    button = POWER
    config = sudo shutdown -h now
    end
    のように設定しておくと、LIRCの起動と同時にirexecというプログラムが起動し、赤外線の信号を受け付けるというのもネットから調べしたが、それぞれのリモコンキーに対応させて、模型を前後左右に動かすようなところまではこれではむずかしいのではないか。解析した信号をPythonのプログラムで利用できる方法を是非教えてください。よろしくお願いします。

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

      書籍の範囲外の内容ですので、アイディアのみのお知らせになること、
      そして、私はlircrcを使ったことがないので動作の保証はできないこと、
      の2点をご了承ください。

      lircrcの方式に従うのであれば、
      「実行すると機体が前進するプログラム (例えば forward.py)」
      「実行すると機体が後退するプログラム (例えば backward.py)」
      「実行すると機体が停止するプログラム (例えば stop.py)」

      のように、一つ一つの動作に対応するプログラムが個別に必要になります。

      そして、リモコンのコマンド一つ一つに上記のプログラムの動作を割り当てます。
      例えば、下記のように実行したいコマンドの分だけ
      begin~endを列挙することになるでしょうか。
      (button 名は仮のものです)

      begin
      prog = irexec
      button = POWER
      config = python /home/pi/forward.py
      end

      begin
      prog = irexec
      button = VOLUME
      config = python /home/pi/backward.py
      end

      begin
      prog = irexec
      button = CHANNEL
      config = python /home/pi/backward.py
      end


      問題は、forward.py、backward.pyなどをどう作るかですが、
      これには、以下に示すように
      Pythonプログラミングと電子工作についての知識が
      それなりに必要になります。

      まず、これらのプログラムは
      「プログラムはモーターに指令を出した後に終了し、
      その後モーターはその指令に従って動き続ける」
      という条件を満たす必要があります。

      この条件を満たし、なおかつ最も簡単な実現方法は、
      「速度制御をせず(PWM制御を行わず)、
      HIGH/LOWの組み合わせのみで制御を行う」という方式です。
      PWMを用いようとすると難易度が一気に上がります。

      さて、キャタピラ式模型の場合、前進のためのfoward.pyプログラムは、
      モーター2個に4つの入力が必要になりますので下記のようになるでしょう。

      import RPi.GPIO as GPIO

      GPIO.setmode(GPIO.BCM)

      GPIO.setup(25, GPIO.OUT)
      GPIO.setup(24, GPIO.OUT)
      GPIO.setup(23, GPIO.OUT)
      GPIO.setup(22, GPIO.OUT)

      GPIO.output(25, GPIO.HIGH)
      GPIO.output(24, GPIO.LOW)
      GPIO.output(23, GPIO.HIGH)
      GPIO.output(22, GPIO.LOW)

      25ピンから22ピンに対するHIGH/LOWの組み合わせは
      カラー版Raspberry Piで学ぶ電子工作のp.199図8-10に
      基づいています。HIGH(1)とLOW(0)の組み合わせで
      モーターを正転させているわけです。

      なお、この正転ではモーターの回転が速すぎるという場合、
      乾電池の数を4個から3個に減らすなどすると良いでしょう。
      PWMで速度調整しようとすると難易度が上がってしまいますので、
      電池の数で速度を調節するわけです。

      同様に、静止用のstop.pyは下記のようになるでしょう。

      import RPi.GPIO as GPIO

      GPIO.setmode(GPIO.BCM)

      GPIO.setup(25, GPIO.OUT)
      GPIO.setup(24, GPIO.OUT)
      GPIO.setup(23, GPIO.OUT)
      GPIO.setup(22, GPIO.OUT)

      GPIO.output(25, GPIO.LOW)
      GPIO.output(24, GPIO.LOW)
      GPIO.output(23, GPIO.LOW)
      GPIO.output(22, GPIO.LOW)

      LOW(0)とLOW(0)の組み合わせでモーターは静止します。

      なお、LIRCと組み合わせる場合、
      「実例で学ぶRaspberry Pi電子工作」ではLIRCを用いる際に
      25番ピンと24番ピンをLIRC用途で用いていますので、
      かぶらないよう、別のピンに振り替える必要がありますので
      ご注意ください。

      以上、アイディアのみをお示ししました。

      削除
  12. 「カラー図解 最新 Raspberry Piで学ぶ電子工作」補足情報
    p.209:WiringPi-Pythonのインストールコマンド
    (1) sudo apt-get update
    (2) sudo apt-get install python-dev python-setuptools swig
    (3) git clone --recursive https://github.com/WiringPi/WiringPi-Python.git
    (4) cd WiringPi-Python/WiringPi
    (5) wget https://raw.githubusercontent.com/neuralassembly/raspi/master/wp-pwm-warning.patch
    (6) patch -p2 -i wp-pwm-warning.patch
    (7) sudo ./build
    (8) cd ..
    (9) swig -python wiringpi.i
    (10) sudo python setup.py install
    PDF20:Python3用WiringPi-Pythonのインストールコマンド
    (1) sudo apt-get update
    (2) sudo apt-get install python3-dev python3-setuptools
    (3) cd WiringPi-Python
    (4) swig -python wiringpi.i
    (5) sudo python3 setup.py install

    「実例で学ぶRaspberry Pi電子工作」補足情報
    p.193:WiringPi2-Pythonのインストールコマンド
    (1) sudo apt-get update
    (2) sudo apt-get install python-dev python-setuptools
    (3) sudo apt-get install python3-dev python3-setuptools
    (4) git clone https://github.com/neuralassembly/WiringPi2-Python.git
    (5) cd WiringPi2-Python
    (6) sudo python setup.py install
    (7) sudo python3 setup.py install

    質問1
     上記のgit clone --recursive https://github.com/WiringPi/WiringPi-Python.gitとgit clone https://github.com/neuralassembly/WiringPi2-Python.gitの部分で使用しているものは
    共にPython2用のWiringPi-Pythonのようなのですが、別物なのでしょうか。
     「カラー図解 最新 Raspberry Piで学ぶ電子工作」と「実例で学ぶRaspberry Pi電子工作」でPython2用のWiringPi-Pythonが違うのでしょうか。出来れば、Python2用のWiringPi-Pythonを一箇所にインストールして利用したいと考えますが、「カラー図解 最新 Raspberry Piで学ぶ電子工作」でのインストールだけでは「実例で学ぶRaspberry Pi電子工作」のプログラムはうごかないのでしょうか。うまく統一する方法があれば教えてください。

    質問2
     OpenCV を Python 3 で用いる方法を教えていただけないでしょうか。

    変な質問で申し訳ありませんが、よろしくお願いします。

    返信削除
    返信
    1. ご質問ありがとうございます。
      WiringPi-PythonとWiringPi2-Pythonは
      Python2/Python3のバージョンと関係があるわけではなく、
      下記のような意味があります。

      WiringPi2-Python:WiringPiをPythonで用いるツールの旧バージョン
      (Python2でもPython3でも使える)

      WiringPi-Python:WiringPiをPythonで用いるツールの新バージョン
      (Python2でもPython3でも使える)

      WiringPi2-Pythonの方が旧バージョンというのは奇異に思えるかもしれませんが、
      それが正しいです。

      ですから、統一するならカラー版で紹介した新バージョン、すなわち
      WiringPi-Pythonが良いでしょう。

      2つのバージョン用のプログラムの違いは、import文のみです。

      WiringPi2-Python用のimport文:
      import wiringpi2 as wiringpi

      WiringPi-Python用のimport文:
      import wiringpi

      ですから、「実例で学ぶRaspberry Pi電子工作」のプログラムの中の
      「import wiringpi2 as wiringpi」の行を「import wiringpi」と
      書き換えることで、WiringPi-Pythonのみのインストールで済みます。


      次に、Python3用のOpenCVですが、
      Python2用のような「簡単な」インストール方法はありません。
      ただし、Googleなどで「Raspberry Pi Python3 OpenCV」で検索することで、
      いくつか方法は見つかるでしょう。
      しかしそれらは、難易度が高かったり、
      実行するタイミングで成功したり失敗したりするため、
      書籍で紹介する方法としては適切ではないと私は考えています。

      ですので、本書では、Python3でのOpenCVの利用はサポートせず、
      OpenCVはPython2での利用に限らせて頂いております。
      (OpenCVを用いないプログラムでしたら、Python2とPython3の両方で
      動作するよう記述しています)

      この方針は、
      「沢山いらっしゃる読者の方が途中で挫折することなく最後の演習までたどり着けること」
      を目指して決定させて頂きました。ご理解頂けますと幸いです。

      削除