できたぁ! – WebIOPi によるサーボモータ制御 –


■できたぁ! – WebIOPi によるサーボモータ制御 –

やっと・・・。やっとである・・・。

苦節二ヶ月半。

ようやく、ブラウザからサーボモータを制御する事に成功した。

最初は Node.js にトライするも、情報量不足で断念。

代替策を探し求めて、WebIOPi にたどり着く。

最初は順調にインストールまで実施出来た。

が、raspbian stretch だとうまく動かないという現象に遭遇。

何とか解決策を探し出し、起動する所までは持っていけた。

さぁいよいよサーボモータの制御だ!

と意気込んだはよいものの、ここでも大苦戦。

サーボモータに信号は送れても、意図どおりに動かない。

WiringPi なら解決できるかと思いきや、別要因で動かない。

それならば、と python コードの理解に取り組み出した。

で、ここ最近、いろんなサイトのコードをみながら勉強。

完全に理解できないまでも、凡その挙動は理解できた。

それを元に、実際に python コードを修正してみた。

結果、多少動くものの、意図どおりには動かない。

GPIO.pulseAngle()

GPIO.pulseRatio()

での操作がどうしてもうまく行かない。

操作してないのに一定時間で勝手に動く。

操作したら、一応それっぽく動くが、カメラ位置が元に戻る。

これだと思った通りに動かせていることにはならない。

で、再度色々調べてみたものの、

GPIO.pulseRatio()

の情報も少なく、挙動が最後まで良く分からなかった。

実際のサーボモータの動きと仕様上の記載がマッチしないのだ。

さすがにもう限界か?

サーボモータ如きも制御できないのか!?

と、思いつつも、諦めたくなくて、考えを再度整理してみた。

まず、index.html では、

・Javascript を使ってボタン生成

・生成したボタンを押すと、python コードを呼び出す

ということをやっているだけだ。

で、呼び出された python コード側の、

GPIO.pulseRatio()

を適切に使いこなせていないため、意図どおり動かない。

ではその関数の挙動を理解しようと思うも、情報が少ない。

当たれる情報には凡そあたったように思える。

やっぱり限界かなぁ、コンソールから直操作なら動くのになぁ、

と思った際に、ふと気がついた。

ん?

コンソールからなら直動かせてるよね???

コンソールからって、python で動かしてるよね?

index.html から呼び出してるのも、python だよね?

だったら、コンソールで動かしてた時のやり方使えるんじゃね???

ということで、ちょっと考えてみた。

サーボモーターを動かす!

でも書いたように、コンソールから動かす際は、

root@raspi-03# python3

で python を起動した後、

>>> import pigpio
>>> pi = pigpio.pi()

としている。

ということは、WebIOPi から読み込む python コードにも、

import pigpio
pi = pigpio.pi()

を書いておけば、コンソールから動かした際と同じ関数が使えるはず。

ということで、python コードにまずこれを挿入。

続いて、初期化処理等を記載した後、

index.html 中の javascript から呼び出す関数

を定義している所に、

pi.set_servo_pulsewidth(18, 1500)

等の関数を書いてやれば、意図どおり動かせるはずである。

ということで、祈るような気持ちでやってみた。

・・・。

動くじゃねーか!

意図どおり動くじゃないか!

ざまぁみろ!俺!

ということで、現在、変な動きもなく、順調に動いている。

長かった・・・。本当に長かった・・・。

でも、諦めずにやってきてよかった。

これらに関しては、

・こうすれば動く
・こういうトラブルと解決策がある

ということを、

WebIOPi で遠隔操作(サーボモータ制御編)!

として、後日記事にまとめておこうと思う。

次のステップは、ブラウザ上にカメラ画像を表示させることだ。

が、怪我の功名とはよくいったもので、

こちらに関しては、色々調べていた過程で既に目処がついた。

もちろん、ハマればまた長期化するが、今の所道は開けている。

なんとか実現させて、記事にまとめた上で、

・Raspberry Pi から音を取得してスマホ側で再生する

・スマホから声を取得して Raspberry Pi 側で再生する

という所まで持っていきたいと思う。

そこまで出来れば、再度記事をまとめ直して、

・ラズパイで遠隔操作監視カメラを作る!

的な感じで書いておきたいと思う。

いやぁ、ようやく停滞から脱出出来そうだ!

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

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

に成功。

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

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

各々実現。

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

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




Copyright (c) 2017 Webmaster of this site All Rights Reserved.
カテゴリー: ブログ, ラズパイで電子工作 タグ: , , パーマリンク

コメントを残す

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

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