後もうちょっと! – WebIOPi によるサーボモータ制御 –


■後もうちょっと! – WebIOPi によるサーボモータ制御 –

まだまだ続く、WebIOPi を使ったサーボモータ制御の話。

前回の段階では、

・WebIOPi 自体の起動エラーは修正完
・ほぼ動かないが、サーボモータに信号は伝わってるっぽい

と言う所までは参考サイトのおかげで達成できた。

*ちなみに、WebIOPi のインストール方法は
*『WebIOPi による遠隔操作(インストール編)
*に記載したが、NOOBSE だと更なるパッチが必要な模様。

が、その後、意図どおりに動かそうとする所で嵌っていた。

index.html で jquery-3.2.1.min.js 等を読み込む際、

404 Not Found

となってしまった。

結構お手上げ状態だったが、

・読み込めてないなら html 内に js の内容を直書きすれば?

ということでやってみる。

が、症状は変わらず。

JavaScript のエラーを確認すべく、

Firefoxでのエラー表示
https://www.ajaxtower.jp/js/error/index3.html

を参考にしながらエラー内容をみてみたが、結局解決せず。

致し方ないので、この方法での実現を断念。

別の方法として、

ものづくりエクスペリメント
Raspberry Piでサーボコントロール、
Part2 WebカメラをWebブラウザ経由で上下左右・ズームさせる
http://denshikousaku.net/control-servos-on-raspberry-pi-part2-from-web-browser

というサイトを見つけていたので、今度はこちらでトライ。

まずは動かすことが重要なので、そのままトレースさせていただいた。

すると、index.html は操作ボタンを含め、綺麗に表示された。

が、ブラウザ上のボタンを押しても、サーボ君は無反応。

全くもって動いてくれない。

普段ならここで容易に心折れるのだが、今日の私はなぜか違った。

冷静に、

なぜだ?

と考えてみた。

その結果、python コードのファイル名を変えたのに、

/etc/webiopi/config

の [SCRIPT] 部分を変更していないことに気づく。

嗚呼、何たるおバカさん!

ということで、該当部分を変更し、リトライ。

しかし、残念ながら症状は変わらず。

再度、参考サイトを見直してみると、

Raspberry Pi 2 に対応するため、RPIO なしでの方法も書く、

という内容を書いて下さっている。

ちゃんとみろよなー、俺、と思いつつ、以下の参考サイトを確認。

ものづくりエクスペリメント
Raspberry Piでサーボコントロール、Part3 Raspberry Pi 2に対応
http://denshikousaku.net/control-servos-on-raspberry-pi-part3-for-pi2

すると、ちゃんと RPIO なしの方法を記載して下さっている。

ありがたい話である。

ということで、こちらの python コードをまずは使わせて頂く。

その後、webiopi を

root@raspi-03~/: webiopi -d -c /etc/webiopi/config

で実行してみた所、まぁ予想どおりというか何というか、エラー。

inconsistent use of tabs and spaces in indentation

と怒られている。

タブとスペースで矛盾???どういうこと???

と思いつつ、コードを眺めるが、私は python など知らない。

C なら読めるが、python など触ったこともない。

どうしたもんか、と思ったが、なぜだろう、今日は全然心が折れない。

ということで、しばらくコードを眺めてみる。

うーん、別に typo とかはなさそう。

ということで、Google 先生にお伺いを立てる。

すると意外な答えが帰ってきた。

『インデントに tab と space が混在していると起こるエラー』

らしい。

え?そんなのでエラーになるの?

C ではそんなエラーでなかったぞ?

python ではエラーになるの?

うそーん、と思いながら、とりあえず他に手もない。

なので、ちまちま直してみて、再度 webiopi を起動。

・・・。

エラー内容変わっとる。

本当にそれがエラー原因だったのか・・・。

己れの無知を恥じつつ、次に出たエラーをみてみる。

WebIOPi - ERROR - The GPIO channel is not an OUTPUT or PWM Traceback (most recent call last)

えー!そんな設定どうすればいいんだー?

また調べんのかー?

と、さすがの(今日の)私も心折れそうになった。

が、とりあえずエラーメッセージをボーッと眺めながら考えてみる。

ちょっと上のメッセージを眺めてみたりもする。

・・・Z がどうのこうの、と書いている。

ん?Z?

あ、そういや参考サイトの方は、

・X 軸で左右
・Y 軸で上下
・Z 軸で前後

という形のコードを書いている、と気づく。

で、X, Y に関するエラーは出てない。

だとすると・・・。

前後操作用の(Z 軸関連の)コード消せばいけるんじゃない???

ということで、消してみた。

結果・・・

うごいたーーーーーーーー!

きたーーーーーーーーーーーーー!

と喜んだのもつかの間、今度は

ブラウザから操作してないのに勝手に動く

という恐ろしい現象が発生。

うーん、なんだこりゃ?

カメラマウントが勝手に踊ってるようにしか見えん。

ということで今日はここまで。

結局今日もうまく行かなかったが、前回よりは進んだ。

諸々トラブルもありつつ、解消しながら前にいけた。

後は python コードをちゃんと理解できれば、動かせるはず。

ようやく希望が持てる状況になってきた!

年内には何とか完全に制御したいものだ。

[2017/12/10 追記]
かなり時間はかかったが、どうにかこうにか、

・ブラウザから操作できるライブ(監視)カメラ化

に成功。

ブラウザからの GPIO 及びサーボモータの制御は WebIOPi で、

専用カメラモジュールの映像表示は RPi_Web_Cam_Interface で、

各々実現。

それぞれ、以下のページにまとめたので、よければ見ていただければと思う。

・『WebIOPi で遠隔操作(インストール編)!
・『WebIOPi で遠隔操作(サーボモータ制御編)!
・『ブラウザから操作可能なライブ(監視)カメラを作る!




Copyright (c) 2017 Webmaster of this site All Rights Reserved.

 

カテゴリー: ブログ, ラズパイで電子工作 タグ: , , パーマリンク

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください