めちゃくちゃ久しぶりの書き込みです。 たまたま、家の玄関の電灯を制御しているサーボの動作に異変が起きたので、サーボモーターを交換しました。 とは言え全く動かなくなった訳ではないので、別のRaspberry piに接続して動きを見ようと思いました。が、新たにダウンロードした Raspbian にServoBlaster が上手くインストール出来ません。 で、色々調べた結果かなり前に開発が停止して全くメンテナンスされておらず、最新のOSでは動作不能という結論に達しました。我が家のサーバーは特に必要もないので古いOSのままで運用しているので問題はないのですが、一応最新版ではどうすれば良いのかだけ調べておきました。 結論方言えば、Python でプログラムを書けば良いだけの話でした。私の場合 iPhone を使用しているので HomeBridge とシェルで利用していたのでサーボのコントロール部分だけ Python にしてそこを呼べば良い様です。まっ、今の所新しいOSに載せ替える気もないのでそのまましばし放置する予定ですが、備忘録として Python からの制御の仕方を書いておきます。 先ずはこんな形で必要なライブラリの読み込みなどを行なっておきます。 import RPi.GPIO as GPIO from time import sleep servo1 = 17 ← 単純にサーボを接続するGPIOのピン番号を定義しておきます。 servo2 = 18 ← 同上 frequency = 50 ← サーボへのPWD信号の周波数を設定 angle_0 = 2.5 /20 * 100 #duty: 12.5% ← 角度をPWMのDuty比で定義する。 angle_90 = 1.5 /20 * 100 #duty: 7.5% ライブラリにして角度を算出した方が実用的でしょうけれど、 angle_180 = 0.5 /20 * 100 #duty: 2.5% 私の場合今回はあくまでテストなので。 GPIO.setmode(GPIO.BCM) GPIO.setup(servo1, GPIO.OUT) ← 出力ピンの数(サーボの数)だけ定義する。 GPIO.setup(servo2, GPIO.OUT) pwm1 = GPIO.PW
少し前に「子供向けのプログラミング教室を開催したい」という話をとある会社さんからいただきました。 普通に考えたら今小学校で教えている「スクラッチ」を使った教室という事になるのでしょうが、既に大手教育教室が先行して開催していますので、もう少し特色のある教室にしないとダメなのでは? という事でネットを探したらちょっと面白い ロボットカー を見つけました。 スクラッチ似の「EzBlock」という言語でプログラミングできるのですが、特徴としてPythonでもプログラム出来るところにあります。 子供の成長に合わせてビジュアル・プログラミングの考え方をそのままに、本格的なプログラミング言語に移行出来るってことです。 あるいは親子で一緒にプログラミングを学べるって事にもなります。同じ動作をするロボットを、子供はビジュアル・プログラミングで、親はそれを元に本格的な Pythonでという形ですね。 という事で話を進めたのですが、残念ながら応募に対して参加者数が少ないと教室の話は流れてしまいました。小規模なエンジニアの派遣会社なので、当初は反応が悪いのは当たり前。 最初は少々の赤字覚悟で初めてその反応などを利用して宣伝しないとと思うのですが、最初からそこそこの人数を集めるつもりだった様です。 というわけでプログラミング教室の話はぽしゃったのですが、このロボットカーがあまりにも面白かったので個人的にも購入してしまいました。 制御の中心となるのは私のブログではお馴染みの Raspberry pi です。なので今回は最新の Raspberry pi 4ではなく、手持ちの3で組み上げました。 で、会社で購入して組み上げた時の経験からRaspberry pi の搭載向きを前後逆にしています。これはロボットのカメラケーブルが Robot Hat のスピーカーからのノイズが元でかなりノイズが乗ってしまうから。会社のものはノイズの事をメーカーに聞いたところ「Robot Hatのスピーカーが原因」との回答を得たのでちょっと特殊なアルミテープと絶縁ケーブルで対策をしましたが、ふと前後逆に載せてやればケーブルがスピーカーの下を通らないと気づいて試してみました。 その結果ノイズ対策が不要になっただけでなく、Raspberry pi のSDカードのすぐ上をカメラケーブルが通過しているということで取り出しや