スキップしてメイン コンテンツに移動

投稿

ServoBlaster が使えない。

 めちゃくちゃ久しぶりの書き込みです。 たまたま、家の玄関の電灯を制御しているサーボの動作に異変が起きたので、サーボモーターを交換しました。 とは言え全く動かなくなった訳ではないので、別の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
最近の投稿

PiCar-Xで遊んでみました:ロボットカー(子供向けビジュアル・プログラミングの件)

 少し前に「子供向けのプログラミング教室を開催したい」という話をとある会社さんからいただきました。 普通に考えたら今小学校で教えている「スクラッチ」を使った教室という事になるのでしょうが、既に大手教育教室が先行して開催していますので、もう少し特色のある教室にしないとダメなのでは? という事でネットを探したらちょっと面白い ロボットカー を見つけました。 スクラッチ似の「EzBlock」という言語でプログラミングできるのですが、特徴としてPythonでもプログラム出来るところにあります。 子供の成長に合わせてビジュアル・プログラミングの考え方をそのままに、本格的なプログラミング言語に移行出来るってことです。 あるいは親子で一緒にプログラミングを学べるって事にもなります。同じ動作をするロボットを、子供はビジュアル・プログラミングで、親はそれを元に本格的な Pythonでという形ですね。 という事で話を進めたのですが、残念ながら応募に対して参加者数が少ないと教室の話は流れてしまいました。小規模なエンジニアの派遣会社なので、当初は反応が悪いのは当たり前。 最初は少々の赤字覚悟で初めてその反応などを利用して宣伝しないとと思うのですが、最初からそこそこの人数を集めるつもりだった様です。 というわけでプログラミング教室の話はぽしゃったのですが、このロボットカーがあまりにも面白かったので個人的にも購入してしまいました。 制御の中心となるのは私のブログではお馴染みの Raspberry pi です。なので今回は最新の Raspberry pi 4ではなく、手持ちの3で組み上げました。 で、会社で購入して組み上げた時の経験からRaspberry pi の搭載向きを前後逆にしています。これはロボットのカメラケーブルが Robot Hat のスピーカーからのノイズが元でかなりノイズが乗ってしまうから。会社のものはノイズの事をメーカーに聞いたところ「Robot Hatのスピーカーが原因」との回答を得たのでちょっと特殊なアルミテープと絶縁ケーブルで対策をしましたが、ふと前後逆に載せてやればケーブルがスピーカーの下を通らないと気づいて試してみました。   その結果ノイズ対策が不要になっただけでなく、Raspberry pi のSDカードのすぐ上をカメラケーブルが通過しているということで取り出しや

AUの通信障害について感じた事。

 今回のAU通信障害、このブログを書いている時点ではまだ復旧していません。 利用者の皆さんはさぞ不便な思いをされている事でしょう。 逆にいえば私たちの生活はそこまで携帯通信機器に依存してしまう様になりました。 少し前まではこんな事はなかった気がします。 で、今回の障害で一番驚いた事が気象庁のAMEDASがその影響を受けて一部の気象データが取得できなくなってしまった事。私が過去に関わったシステムのほとんどが通信回線を含めたシステムの冗長化がされているのが常識の世界だっただけにこれには驚かされました。 気象データは災害の防止の為の基礎的なデータとして非常に重視されていると思っていましたが、たかが1通信会社のミス(機器交換時の新しい機器の不具合から切り戻し作業時に輻輳が発生したとNHKのニュースでは伝えています)で通信が途絶えるとは災害発生時に重要なデータが収集できない可能性が高いわけです。 なぜ、複数社の回線を契約していなかったのか? 素人の「無駄経費」という指摘でもあったのか? ぜひ気象庁の説明を知りたいですが、なぜかこう言った事には普通のメディアは無関心の様で困ります。 先日の観光船の「業務無線」代わりに「携帯電話でも良い」とか、しかも現場ではそれすら無視して「アマチュア無線」を使っていたなんて件でも「アマチュア無線局」では本当の緊急時を除いて「業務通信」をする事が違法行為であることを伝えたニュースも見ていません。 ついでに言えばアマチュア無線技士の免許とアマチュア局の免許も取っていたのかすら報道無しですね。ログも取っているとは思えませんから一体どれだけ法律違反を重ねているのやら。 これは山登りなどする人が「人命が掛かっているんだ」とか言って最初から無免許でアマチュア無線きを連絡に使うなんてケースも同じ。小学生でも合格する様な免許するら取らずに胸を張って違法行為を正当化する人もいる一方、普通に携帯電話が使える様な山登りであっても安全のため複数キャリアの携帯電話を携帯するまともな考えの人もいます。 閑話休題:話が逸れてしまいました。 気象庁はAMEDASのデータの重要性をどう考えているのでしょうかね? というのはさておき、今回の事故を考えると仕事で使うスマホなどはメインの回線の他に格安SIMで良いのでもう1回線別キャリアのサブ回線を用意しておかないといけないかなと。

ガレージのシャッターの汚れ

  既に20年近く経つ我が家のガレージのシャッター。 時折水で流したりはしたもののかなりくたびれた感は免れません。 で、車のコート材を塗ったら綺麗になるのかなと思い試してみることに。 当然普通はシャンプー洗車してから使うのもですが、試すだけならとわざと水洗いもせずに塗りやすそうな位置の横1本分だけに塗りたくって軽く磨いてみました。 塗るのに使ったのはワックスが染み込んだティッシュ型のものを使用後に軽く洗って干してあったウェス。 そこに グラニタイズという会社の クリアコートグレイズという一応コーティング剤になるのかな? これを付けて汚れ落としとコーティングを一遍にしてみました。 使ったウエスには汚れと共に劣化した塗料と思える色がべっとりと。 流石に下地自体が荒れていて色むらもあるので綺麗な光沢とは言えませんが、一部はそこそこ綺麗になりました。 1本だけ綺麗でちょっと変ですが、これだけ綺麗だと効果は十分ですね。 壁がうっすらと写っています。 端の方が塗れていませんけどまぁとりあえずはいいかなと。   これでこの状態がどの程度続きますかね? 良さそうなら全体に塗るけれど1本で足りるかな? 全体をやるならまずは洗剤付けて洗って、軽く下地処理して・・・ となると面倒だな。 洗う程度で下地処理は省略かな? 2021/11/14(翌日)の追伸: 見直したら1本だけ変にツヤがあるのもおかしいので、全体をざっと洗濯洗剤(泥汚れを落とす時とか、古いワックスカスを落とすので色々なところに応用が効く)でざっと洗ってやったら、それだけで劣化した塗装汚れがかなり流れ出して来ました。 で、水ですすいで グラニタイズを軽く伸ばしました。 前日ほど気合を入れていたら途中で挫折するのは目に見えていたので、本当にざっと伸ばしただけ。 でもかなり汚れが目立たなくなりましたね。 写真で変に黒く垂れているのは間に入り込んだ水が垂れているところですね。 乾けば気にならないはず。 夕方に見直したらムラもほとんど目立たないし、これで様子見することにしました。 ただし、やはり昨日気合を入れて磨いてみた1本だけは写真でも判別可能ですね。 後はなんとなく、撥水性のある グラニタイズよりも親水性の簡易スプレーのコーティング剤の方が雨で汚れが流れていいのかなって気もします。 でもとりあえずなのでわざわざ買ってくるのもね。

Raspberry pi の設定など(その6:シャットダウンスイッチ)

  前回までの話 でほぼホームアプリ用の設定の話は終わったなと思っていたのですが、シャットダウン・スイッチの話を忘れていました。 昔 WatchDog のプログラムを書いて実装したのですが、ちょっと面倒だったりしていたのと、最近は変に通信が不安定になってリモートからシャットダウン出来なくなることもなく、あまり不便を感じていませんでした。 でもやっぱり何かの時にはボタンひとつでシャットダウン出来たり、電源の抜き差しなしで起動できたほうが便利ですよね? で、Raspberry pi  のシャットダウンの話をググってもほとんどが「プログラム書いて・・・」って話ばかりですが実は今ではそんなことは必要ないんですね。 設定ファイルに1行書き加えるだけ。ついでなのでランプ動作中は点滅する様にしちゃいましょうかね? Zeroの方は停止すると赤ランプも消えるので必要ないですけど。 設定は /boot/config.txt にそれぞれの設定を1行書き加えるだけです。 シャットダウンスイッチの方は、 dtoverlay=gpio-shutdown,gpio_pin=21,debounce=2000 電源の方は dtparam=pwr_led_trigger=heartbeat  # 動作中は電源の赤ランプが点滅 または dtparam=act_led_trigger=heartbeat  # 動作周波アクセスの緑ランプが点滅 LEDランプの方は説明不要ですよね。 シャットダウンスイッチの方は、gpio_pin=21 で使用するGPIOピンを指定しますけど、この番号は gpio readall で一覧表示した時のBCMの項目の番号です。21番ならば物理ピンの最後、40番のピンになります。 で、debounce=2000 はボタンが反応するまでのm秒での指定。2000msですから2秒ですね。 デフォルトは100なのでちょっと触っただけでシャットダウンしてしまいそうなので2秒にしてみました。 配線は21番ピンをプッシュオンのスイッチを経由してグランドに繋げるだけ。 隣のピンがちょうどグランドなので隣同士を繋げば良いということでこのピンにしました。 ついでに言うと起動時には基盤上の「RUN」と書かれたところをちょっとショートさせれば起動します。ZeroだとちょうどGPIOの最後のすぐ横に並んでい

Raspberry pi の設定など(その5:Homebrdge)

 さて 前回 、 前々回 で 赤外線リモコン と、 サーボモーター の設定を終えたので、そろそろ Homebridge の設定の話に移りましょう。 何のための赤外線リモコンやサーボモーターなんだと言えば自宅の自動化が基本。 iPhone ユーザであれば Apple のホームキットにないものもホームアプリからコントロールしたいですからね。 で、こちらも 昔設定した時 からは大幅にバージョンアップしていて設定では結構迷いました。 まずはインストールから。 GitHabのこちらのページ を参照にしてインストールします。 単純で、 node.jsは既にインストール済み のはずなので、 $ sudo npm install -g --unsafe-perm homebridge homebridge-config-ui-x で本体のインストールは終了。 で、設定用のGUIがウェブサイトの形で利用できる様になっています。 そのインストールが $ sudo hb-service install --user homebridge ってこれだけ。なお赤字の homebridge のところは利用したい(管理させたい)ユーザー名にします。 私はそのままpiで利用することにしました。homebridge 専用マシンにするので。 他のパソコンから http://ラズパイのIPアドレス:8581 で設定画面に入れます。 Raspberry pi Zero でも問題なく動作してくれます。流石にZeroをGUIで起動して、そこから自分自身にアクセスなんて話だと遅くなりそうですけど。 ZeroをGUIで起動していても他のPCから繋ぐ分には気になりません。 以下の様な画面が表示されます。 デフォルトで「admin」ユーザーでパスワードも「admin」でログインできます。早々にパスワードだけは変えておきましょう。 ここで各種の設定を行い、homebridgeの再起動やログのチェックができます 左上に「プラグイン」が見えますのでここをクリックして以下の画面を表示してください。 最初は左上のHomebridge UIだけがインストールされているので、上部のところにプラグインの名前を入れてサーチします。 特定の製品向けのものもありますが、とりあえず「cmd」で検索すると色々出てきますので、上記の二つ「hom

Raspberry pi の設定など(その4:サーボモーターの設定)

  前回は赤外線リモコンの設定 を行いました。 ということで今回はサーボモーターの設定。 2024年1月追記: 20241年時点の最新 Rasbian において ServoBlaster に対応しなくなっていました。 ですので、以下の記事は古い Rasbian OS 利用者だけの限定情報となってしまいました。 どの時点で使用出来なくなってしまったかは定かではありませんが、比較的新しいOSの方へは別記事で対応方法を書きますので、こちらをご参照ください。 https://draft.blogger.com/blog/post/edit/8404129190610195115/7633747993521666234 ここからは古いOSの利用者限定情報です。 こちらも昔書いたものと大きく違うところはありません。 英語ですが $ git clone git://github.com/richardghirst/PiBits.git が役立ちます。 $ git clone git://github.com/richardghirst/PiBits.git $ cd PiBits/ServoBlaster/user $ make servod この3つのコマンドで終了。 で、今回は起動時のパラメータを説明します。 実はここもかなりトラブりました。その3で説明した「Node.js」絡みのトラブルだった様です。 これもオシロスコープでGPIO端子から出ているパルス波形を見ていて気が付きました。 パルスが間延びしていて変。で起動パラメータをいじって何とか動かしたりはしたものの、Node.js を直したらこちらのトラブルもすっかり治りました。おかげでパラメータの知識も増えました。 追記: その後も同様のトラブルが発生。Raspberry pi 3Bに最新 OSを再インストールした状態で再びサーボが動かなくなりました。 オシロを見ながら色々調整して「sudo /home/pi/PiBits/ServoBlaster/user/servod --p1pins=11,12 --min=200us --max=10000us --cycle-time=10000 --idle-timeout=2000」なんて設定で、$ echo 0=1180us > /dev/servoblaster で