カテゴリー「電子工作」の191件の記事

2017年5月19日 (金)

RaspberryPi 3の電源事情好転せず。ESP32に手を出す

 RaspberryPi 3(以下Raspi3)による監視カメラはほぼ完成したが、恐れていた通り実際の観測には重い腰が上がらなくなった。現役時代の習い性だろう(若い時はそうではなかったので、一種の職業後遺症)。こういうプロジェクトを計画なしに始めることに強い抵抗があるのだ。

 どんな仕事でも一旦始めると、それを中止する大義名分が見つからない限り止められなくなる習慣が出来ている。途中でやめることに強い罪悪感を覚える。作業を始める前に具体的な目的と目標を決めておくのが決まりになっている。

 これまでに何度か気楽に始めてそれが止められず、といって順調に事は進まず、その葛藤で、へとへとになってしまったことがある。とまあ、出来ない屁理屈をこねているが、実はそれよりもっと深刻なことがある。Raspi3そのものの動作がまだ安定しない。

 USBセルフパワーHUBと電源のACアダプターを共通にすると大量にHUBの方から電力を供給してしまう問題は、特定のHUBの逆流と結論付けたのだが、念のため単独でテストしたところマスター側には電圧がかかってこないし(LEDが点かない)、このHUBを分解して中身を確認しても、しっかりVBUS側にはSBD(ショットキーバリヤーダイオード)が入っていたりする。

 別のHUBに交換し、ケーブルを吟味した結果、定常的な電源容量不足は一時的に稲妻の警告がでるものの、相当な負荷をかけても(カメラと自前ブラウザーなど)、ほとんど落ちることはなくなった。しかし、今度は、本体そのものが電源を入れてもブートしなくなるというトラブルが発生し始めた。Dsc01110

 必ず起きるということではなく、何度か電源を入れ直したり、HDDにつながるセルフパワーHUBの電源を別にしたり、あとからUSBを接続したりすると正常にシステムが立ち上がるので、それほど神経質になることはないのだが、安心して運用テストに入れるレベルにない。

UARTの字化けはあっさり解決。ボーレートがおかしかっただけ(4/17/2017)
 
Tiny13を使ったRaspi電源制御装置も、最初、電圧低下でRaspi3では不安定だったのだが、ケーブルやHUBを交換しているうちに安定して作動するようになっている。この制御装置は、電流量のモニターが出来るので、このまま使いたい、しかし肝心のUARTシリアル出力が盛大な字化けをしているのが気になる。Dsc01111

 で、これを先に直すことにした。久しぶりにオシロを動かして、ボーレートを調べる。明らかに9600bpsのボーレートより遅い(1ビット10.4μsのはずが12μs近く)。ネット情報によれば、Teratermはボーレートが設定画面で自由に変更できるというのでオシロのタイミングに合わせてボーレートを下げてみたが(9600 -> 9000近辺)、不思議なことに全く改善されなかった。

 どうも他の原因が考えられる。自作のソフトUARTのソースコードをじっくり見直した。すると送信期間はボーレートを守るため割り込み禁止(cli();)にしているところを、ストップビットを出した直後、解除(sei())してしまっているのを発見した。 

 ふーむこれか。もしここで割り込みが入ってしまうと、規定よりストップビットが長くなって字化けする。ただ、シリアル出力は、500msに一回の電流測定のときだけで、かかる時間は、9600bpsで30 字だしてもせいぜい3ms(1文字10ビットで1ms)だ。他と被ることはないはずだ。

 しかし、さらにコードを調べていくと、待ち時間をループでなく8ビットタイマーで作っていることがわかった。それもその割り込みは1ms単位だ。もしかしたら、ペンディングになっていたタイマー割り込みがここで入ってUARTと被るのかもしれない。

 ロジアナでも持ち出して測れば一発で原因がわかると思うが、何しろTiny13は8ピンでプローブに使えるピンが一本も残っていない。面倒なので、ボーレートの調整と、この修正(割り込み解除をひとつずらしただけ)を一緒に直してテストしてみた。Ws000019

 ピンポーン!見事に字化けはひとつもなくなった。やっぱり被っていたのか。念のため、割り込み解除のステートメントを元に戻してみた。何と、何と。それでも字化けは解消している。被ってはいなかったのだ。

 単なるボーレートの修正だけで直ってしまった。通信ソフトのTeratermのボーレート変更では治らなかったのに何故だ?心残りではあるが、余りこればっかりやっているわけにもいかない。先に進もう。

10インチのHDMIモニターを入れてRaspi環境が改善(4/18/2017)

 現在のRaspi3のOSはJessieで、HDMIコンソールからブートするようになっている。今まではPCのHDMIモニターを共用にしてディスプレイのSWで切り替えていたのだが、電源のトラブルシューティングで頻繁に再起動をする状況ではどうも具合が悪い。 

 例の7インチIGZOパネルをこのときとばかりに使いたいのだが、1920x1080の解像度では、動画を見るのならともかく、コンソールは猛烈に字が小さくなりデバッグなどはとても出来ない。フォントを拡大するコマンドは入れたが、実用性に欠ける。迷った挙句、適当なHDMIディスプレイを別個に買うことにした。Dsc01115

 ウェブで調べてみる。沢山ある。10インチ近辺のモニターは、車載用のTVモニターの需要があるらしい。爆安店で探せば数千円で買えるかもしれないが、買いに行く時間が惜しい。通販でも1万円近くだせばスピーカーまでついた本格的なHDMIモニターが買える。アマゾンで注文する。良い時代になったものだ。

 ほどなく品物が届いた。タッチパネル式のスイッチ、リモコンまでついて立派なものである(1024X600)。動かしてみる。おおお、少し小さいがコンソールを見るには十分だ。これで格段にRaspiの開発環境は整備された。いちいちPCのディスプレイをスイッチで切り替えなくて済む。Dsc01116

 専用のディスプレイが出来たので、Raspi3そのものの整備が楽しくなった。Raspi3はBluetoothもあるし、NOOBSのデスクトップには、既にいくつものブラウザーが動くようになっている。電源問題が先に進まないので、つい色々なことに目移りしてしまう。

 前にも書いたが、Raspi3の性能は大したもので、ウェブサーフィンも殆どストレスを感じない。居間で使っているASUSの古いネットブック(CPUはAtom)より早いかもしれない。感心なことにデスクトップにはBluetoothのドライバーまでインストール済みだ。

秋葉原で久しぶりの買い物。秋月の最大ACアダプターなど(4/21/2017)
 暫くご無沙汰だった秋葉原に仕事の帰り立ち寄り、秋月電子でいくつか部品を買ってきた。これからの電子工作プロジェクトの候補である。現状が迷走しているので、何らかの起爆剤になることを期待している。

・LTC1799
オシレーターチップ。電波時計の電波(JJY 40/60khz)をこれで発生させ、ESP8266などで、ネットのNTP(Network Time Protocol)で得た時刻を標準電波形式にスイッチングする。要するに電波時計リピーター(別経路のリピーターだが)を作ろうというものである。

ウェブサーフィンをしているときに、これを使い、ESP8266のArduinoIDEで作っている記事を見つけた。電波の届かないところでも電波時計が使える。面白そうなのでとりあえずICだけを調達する。Dsc01129

・ソリッドステートリレー (シャープ 8A 250V)
AC機器をリモートで入り切りするために在庫がなくなったので補充した。これまでのESP8266が遊んでいるので、これにウェブサーバーを立てて、ブラウザーからの指示でAC機器を制御する。典型的なIOTの第一歩である。WiFiモジュールは、新しいESP32も買ってあるが、この程度の制御にはもったいないので別の用途を考えることにする。

・4Aの定電圧5V ACアダプター
 Raspi電源制御の切り札、秋月電子内の最大容量の5Vアダプターである。自前で強力な5V安定電源を作る前に、本当に電源容量だけの問題かこれで確かめようというもの。

・ブレッドボード用DIP基板のついたUSBコネクター    
 Raspi電源問題解明で何らかの回路をUSBバスに付加してテストするため。ブレッドボードでハンドリングできるDIPピンのついたUSB Aタイプコネクター。ブレッドボードそのものは接触不良のかたまりみたいなものだが、何とか藁をも掴む思いである。          

4AアダプターでもRaspi電源事情は改善せず。好い加減あきてきた(4/22/2017)
 当研究所には、5V定電圧ACアダプターなら山ほど揃っている。秋月で買った3Aと2.5Aのものを始め、例のUSBセルフパワーHUBの2.6Aや、2.1Aなど、数えてみたら5つもあった。

 今さら、さらに買い足す必要もないのだが、何となく意地になって4AのACアダプターを思い切って買ってみた(といっても¥900)。帰宅して、とるものもとりあえずまずこのアダプターの実験をする。しかし、残念ながらRaspiの電力環境は好転しなかった。これまでのACアダプターと殆ど変わりはない。

 相変わらず稲妻マークは出るし、時々最初のブートが効かない問題は依然としてなくならない。USBプラグを抜き差しすると変化があるので、アダプターの容量の問題ではなくこのあたりの接触不良の疑いも出てきた。

 ウェブで「電源 ロードレギュレーション向上」などのキーワードで、関連情報を探すが、出てくるのはプロ向けのおおがかりな回路設計の話ばかりで、アマチュアが手軽に試せるようなことは何も見つからない。

 本当は、自前で高性能の3端子レギュレーターなどでACから5Vにする定電圧装置を作るべきなのだろうが、このあたりは、素人なのでとっかかりがなく、もどかしい。

 解決の方向が見えない。ブートを失敗するのは、電源投入時の瞬間的な電圧降下であろうとあたりはつけているが、確認するにも現象が固定化されない(どのACアダプターでも起きる。長時間OFF後はほぼ必ず発生。一旦成功すると、そおあとは失敗しない)。具体的な手段が見つからない。段々飽きてきた。

Raspi3のオーディオ環境整備にはまっている(4/30/2017) 
 そういうこともあるが、このところはRaspi3の環境整備にはまっている。専用のディスプレイでデスクトップ環境が格段に使いやすくなったこともある。

 Raspiのオーディオは無印のころから、これまで全く手を出していない。Raspiのオーディオも結構人気のようである。まずはオーディオ関係を整備することにする。

 Raspi3にはアナログ(単なるステレオジャック)と、HDMI出力、それに情報によれば、入出力ピンにI2Sが出ているということだ。この10インチディスプレイはスピーカーがついているのでHDMIからの音が出るはずだ。Dsc01128

 とりあえずRaspi3のデスクトップのメニューバーにオーディオ選択のダイアログがあったので、これをHDMIにしてみる。ブラウザーで適当な音源を選び音を出す。簡単に音が出た。小さなスピーカーなので音質はお世辞にも良いとは言えない。「音も出ます」程度の音である。

 次は、アナログである。内蔵DACは11ビットというのでこれも音質は期待できない。ヘッドフォンを取り出しジャックにつなぐ。おやあ、シーッと量子化ノイズが耳ざわりだ。11ビットならもうちょっと良いはずだが。

 音を出してみる。小さいスピーカーに比べれば、音はましだが、やはりノイズが気になる。ウェブで評判を調べる。うーむ、このアナログの評価は散々だ。

RaspiAudioの音質不良はrpi-updateで少し改善。Bluetoothも(4/28/2017)
 ウェブをさまよい歩くうち、Raspiのアナログ音の出力は、ここのサイトによるとファームウエアがバグっていてサンプリングビットが1ビット少なく10ビットになっているという情報を得た。(オリジナルはここ

 ここには、バグの修正版のダウンロードサイトも紹介されている。2012年の古いパッチのようだが、正規のupdateにはなっていない。現在の最新バージョンには反映されていないようだ。ふーむ、恐らく何か別の不具合があってのことかもしれない。

 まあ、ものは試しである。一式をダウンロードして、インストールしたあと、ファームウエアの書き直し、rpi-updateをかける。エラーもなく順調にrpi-updateは終わった。

 音を出してみる。うーん、少しは良くなったか。確かに少しノイズが少なくなったが、音は驚くほど良くなったとは言えない。まあ11ビットDACは、二昔前のPCのサウンドカード程度なのでこれ以上の向上は無理のようだ。

 Raspiオーディオで検索をかけると沢山ヒットする。いわゆるハイレゾオーディオの中継基地として安上がりなのが人気なのだろう(この手のオーディオ機器は信じられないほど高価)が、当研究所は今のところハイレゾ再生には行かないことにしている。

 というので、次はBlueToothでの音の再生にチャレンジした。キーボードは動いたが手持ちのBluetoothヘッドフォン(サンワのMM-BTSH30)は、認識はするものの、音がすぐ切れる。ブラウザーや、デスクトップのScratchという教育ソフトの猫の音もでないので、BlueToothの問題だと放置していたのだが、あるとき、コンソールから、

aplay /usr/share/sounds/alsa/Front_Center.wav

というコマンドを入れたら、何と、Bluetoothでの音の再生に成功した。だとすると、ウェブに沢山情報のあるとおり、bluetoothのオーディオパッケージBluezと、これまでのLinuxのオーディオALSAとの衝突がどこかで起きている可能性が高い。

 Raspi内のどれかのオーディオパッケージをインストールし直せば、うまく行くのかも知れないが、問題は深そうで簡単に行く話ではない。ウェブでは調べた限りでは、こういう話題がヒットしない。解決策が見つかる可能性は低い。これも少々あきてきた。

ESP32-WROOM-32のテストに着手する(5/4/2017)
 というので、このあいだ買ったままになっていたESP-WROOM-32(以降ESP32)を試してみることにした。このESP32はWiFiモジュールESP-WROOM-2(以降ESP8266)のグレードアップ版である。Dsc01127

 中華製のWiFiモジュールには信じられないほど安価なのが多いが、日本の電波機器の技術適合証明、いわゆる技適をとっていないのが殆どである。しかし、ESP32はいち早く技適をとり、秋月からはPCへのUSB-UARTまで装備したブレークアウトボード(¥1480)も売り出された。単体の値段もESP8266と殆ど変わらない(¥550 と¥700)。

 これまでのESP8266の弱点、CPUが遅い、I/Oピンが少ない、SRAMの量が今一つという不満を一気に解消しており、これはお買い得と、少し前、予定もないのに単体と、ブレークアウトボードをひとつづつ買ってしまってある。

 以前ESP8266で画像付きのサーバーを作ったことがあるが、画像を出すだけ一息の時間が必要で、簡単なGPIOの操作ならまだしも、ちょっと手の込んだ遠隔制御には使えそうになかった。それがこのESP32ではだいぶ使えそうである。

 その割には日本ではまだブレークしていないようだ。技適はついているし、秋月などでもオリジナル(Espressif)社のブレークアウト基板を廉価で出しているに不思議だ。調べてみて何となく理由がわかった。

 どうもESP8266ほど周辺のソフト開発環境が進んでいないようだ。ESP32の開発元、Espressif社が、Arduinoではない独自の開発環境 ESP-IDEというのを作ったようだが、そのあたりの情報が不足している。一本道ではなく、いくつもの開発環境があるというのは、初心者にとってはかえって弊害になる。

 検索をかければ、ウェブには山ほど紹介記事が出てくるのだが、どれも今までのものと何か違和感がある。一例をあげれば、ここなどは、懇切丁寧な記事の大部分は、トリッキーな空中配線や、ブレッドボード上の配線法なので、読み流しているうち、急に複雑なウェブサーバーの紹介になってびっくりする。 

 ここのサイトは、詳細なESP32の情報が掲載されている。でも、ここの情報だけで、初心者がESP32を動かすことは難しいだろう。膨大な情報があるが、多すぎて、恐らくどこかで折れたら(書かれている通りに動かないなど)最後、手も足も出なくなるだろう。

 この違和感は、これらサイトの筆者の責任ではない。明らかに電子工作のやりかたがArduinoなどをきっかけに大きく変わってきたからではないだろうか。要するにハードやソフトウエアの複雑さが比較にならないほど大きくなって、全貌を簡単に把握できなくなっているのだ。

 結論から言えば、素人が手を出しにくい。WiFiによるスマホとの連携ひとつをとっても、その実現は膨大な技術の蓄積で可能になっている。本当の初心者なら電子工作はもっと少ない要素でできている8ビットのPICやAVRで経験を積む方が結局早道なのではないか。

 悪態をついてばかりいても先には進めない。とりあえずは開発環境から整備を始めることにする。何しろ沢山サイトはあるが、ちょっと目を通しただけではなかなかわからない。当研究所には、ESP8266を開発したArduinoIDEがある。当然この環境と一緒にしたいのだが、このあたりの解説が少ないのである。

ESP32のWiFiサーバーまであっさり動く(5/10/2017)
 このサイトを参考に、既存のArduinoIDEに、ESP32関係のパッケージをインストールする。ここを見つけるまでは、殆どのサイトが新規にArduinoIDEをインストールするところから始まっているので苦労した。要するに既にArduinoIDEがあるのなら、所定のディレクトリーにダウンロードしたパッケージを解凍して入れるだけで良い。IDEを再始動すれば、すんなりESP32関係がロードされる。

 ハードの方はいたって簡単だ。ブレークアウトボードなら、追加する配線は殆どない。LEDと制限抵抗を適当なGPIOピンにつなぐだけである。電源はとりあえずUSBから貰う。ここも電源問題が大変なようだが、まあ、実験レベルなのでこのまま行く。

 ArduinoのLチカのコードをコピペし、ビルドする。何事もなく、終了した。次は、ファームへの書き込みである。おお、無事に書き込みが始まったようだ。心なしかESP8266より速いような気がするが、これは、ファーム焼きこみのシリアルの速度が921600bpsとべらぼうに早いためで、本体が早いわけではないようだ。

 ファームの書き込み終了のメッセージと同時に、LEDが点滅し始めた。あっけなくLチカ成功である。ブレークアウトボードのおかげで、前の手製のESP8266開発キットに比べると、動作モードをタクトスイッチで切り替える必要がない(勝手にボードでGPIOピンを切り替えてくれる)。

 勢いに乗って、WiFiサーバーまで動かしてみることにする。ESP32のライブラリーにある、SinpleWebServerのソースを読み込み、このサイトを参考に、Lチカで使ったLEDをブラウザーからスイッチするコードに組み替える。

 これもビルド、ファーム書き込みともNO ERRORで終わった。立ち上げる(といっても何もしないで良い)。恐る恐る、PCに戻り、ESP32のIPアドレスを調べ(まだ固定化していない)、該当のIPアドレスでアクセスする。Ws000020

 やった。小さなメッセージだが、サーバーからの画面が出た。必要な所はクリック可能な色に変わっている。ONのところをクリックする。おめでとうございます。LEDが点いた。とりあえずESP32はウェブサーバーまであっけなく動くことが確認された。

 これから、ESP8266とどの程度高性能なのか調べていくことになるが、紙数も増えてきたので、このあたりで記事を区切ることにする。

| | コメント (2) | トラックバック (0)

2017年4月16日 (日)

motionの動体検知はRaspi3の電源が安定しない

フィールドテストの開始(3/25/2017)
 適当なパラメーター(前記事参照)を設定して、いよいよmotionによる自宅前の道路の動体検知の監視を始めた。道に面したサンルームのブラインドにカメラのレンズが通るだけのの隙間をわずかに開けて、そこに三脚に固定したカメラを設置する。外から見ると、ブラインドに隙間が空いて何か不自然だけれど、実験なのでとりあえずはこのままに。

Dsc01104 RaspiはWiFiにしたので引き回すケーブルは電源ケーブルだけで良い。設置は楽になった。HDDは三脚の下に置いた菓子折りの空き箱にHUBと一緒に載せる。電源スイッチを入れてその場を離れる。地下の工作室に戻ってPCからSSHを開き、motionを起動する。

 よーし、これでmotionは、ストリーム画像を送りながら、動きがあった時だけ、動画(aviファイル)と静止画(jpegファイル)をSAMBAサーバーの所定のフォルダーに画像を残していくはずである。念のため、PCのブラウザーでストリーミングを確認する。うむ画像が出た。102017032517352505 小一時間、カメラをサンルームに置き、データを収集した。ファイル数200ばかり。容量にして80MBくらいが溜まった。これくらいなら一日放置しても大した量にはならないか。

 データの中身をチェックする。自動車は監視対象ではないが、動体検知するのは車のときが殆どである。カメラの位置は進行に対して90°なので自転車の追尾は結構難しい。この場所からでは流れ映像しか撮れない。

 歩行者は問題なさそうだ。動体検知画素数1000程度で十分捕捉している。それでもタバコを人家の庭にポイ捨てする不届き者の人相を完全に把握するのは難しそうだ。 Ws000017

 ファイルは動体検知をしたセッション単位にひとつづつ数が増えていく。現在は、イベント番号(検知セッションの中での連番)というのがファイル名の先頭に来るので、ソートがうまくいかない。ファイル名を工夫しないといけない。

監視カメラの仕様がなかなか決まらない(3/28/2017)
 フィールドテストは始まったが、本格的な運用に入るまでに解決しなければならないことがブラインドの不自然な隙間だけでなく、まだ沢山ある。

 現在、撮影は室内から窓ガラス越しにやっているが、本当は外に置きたいところだ。しかし、外に置くとなると、カメラの防水、防風、防塵などの対策がただちに大ごとになる。レンズを近づけてガラスの影響を少なくする場所があれば良いのだが、今のところ都合の良さそうな所は見つからない。

 また、三脚にカメラを固定し、付属物を横に置いているが、これももう少し工夫したい。掃除はしにくいし、機動的な移動はできない。それに、まだ猫に気づかれていないが、HDDは僅かだが音を出す。長時間放置した場合の音に敏感な猫の対策も考えておかないといけない。

 さらにカメラの運転仕様が悩ましい。吸い殻を捨てる不届き者の特定を当面の目標にしているから、長時間の監視が求められる。人通りの少ない早朝か深夜が考えられるので、もしかしたら赤外線カメラにする必要があるかもしれない。自動的な時間制御もあった方が良い。

 出来上がった映像のチェックがこれまた大変である。motionを使っているので、歩行者、自転車が通過するときだけの映像になっているはずだが、映像をチェックするPC側のビュワーの機能だけでなく、現在のファイル名を今よりもうすこし合理的なものにしたい。

 先述したように、現在のmotionの録画したファイル名の先頭は、ひとつの動き検知のなかの複数の動きの番号(イベントNo)で、ソートするときとても不便である(ここの1や2は余り意味をなさない)。これはmotion.confのファイル名設定で換えられそうだが。Dsc01110_

 世の中の監視カメラの整理はどうやっているのだろうか。やっぱりしらみつぶしに映像を見ていくしか能がないのか。悩ましい所である。

電源制御装置を入れるだけで電圧降下の警報マークが出る(3/29/2017)
 フィールドテストをしながら、Raspiを安定して動かす電源の検討をしている。Raspbianのデスクトップには、電力不足になると画面右上に警報の稲妻型のロゴが出る(4.65V以下)ことを知り、これで、たくさんあるこれまでのACアダプターの性能比較が楽になった。

 ブート時はCPUにロードがかかり手持ちのすべてのアダプターで一部に稲妻が出る。結構敏感である。しかも必ずしも容量の大きい(流せる最大電流)アダプターの方が安定しているとは言えない。秋月の5V 3Aより、セルフパワーHUBについていた容量表示が2.6Aの方が何故か稲妻の出方が少なかったりする。ただ、少々稲妻が出てもすぐRaspiがダウンするわけではない。

 電源ケーブルとして使っているUSBケーブルでも大きな違いがある。太いケーブルの方が相対的には良いが、これとて余り長いと細い短いケーブルに負ける。秋月電子のRaspi専門の商品棚にあった長さわずか10センチくらいのUSBケーブル(タイプA->マイクロB)がやはり最強だ。

 先だって作った自慢のRaspiの自動電源制御装置(スイッチ押下で電源が入り、シャットダウンで小電流になると電源OFF)は、レギュレーションを間違いなく悪化させる。これを経由させると稲妻が出る頻度が高くなり、システムが不安定になってしまうことがある。

 この電源制御装置は0.22Ωのシャント抵抗で電流を計測している。500mA流れても、0.1Vの低下にしかならないので影響は少ないはずだが、どうしてなのだろう。

 以前買った、USBソケット内にLCD電流計を入れたやつはもっと良くない。入れただけで電圧が下がり、正常に立ち上がらない。表示は4.7V以上だが、恐らく瞬間的な大電流のとき表示以上の電圧降下があるのだと思われる。Dsc01113

 オシロでこの瞬間的な電圧降下を測定したいと思うが、トリガーをどうかけて良いのかわからない。入力をACにして、高感度にし、トリガーをnormalやsingleにしてみるが、全く引っかからない。

 こうした瞬間的な降下を回避したいのだが、どうもうまく行かない。下手なインダクターは無用の直流の電圧降下があるし、コンデンサーも大容量のものが既に付いている。これ以上の追加は突入電流が心配だ。

 どうも、Raspiの電源コネクターになっているマイクロUSBのソケットを疑いたくなってきた。2A以上の電流が流れるというのに、あの接点の小ささは気になる。あまり結果は期待できないが、これも例のやり方に替えて試してみることにする。

電源をGPIOピン経由にしても改善せず(4/1/2017)

 それは、以前の無印Raspiで愛用していた、GPIOピン配列に一緒に設定されているVccピンに直接5Vを供給する方法である。無印RaspiはUSBからのパワー供給は、ポリスイッチが間に挟まっており、こいつが悪さをして電源が安定しなかった。

 このポリスイッチを無効にすることで安定化したのだが、最も簡便なのはそのあとにピンに出ているVccピンに電源を供給してしまうことである。ポリスイッチが有効に動くのは、raspi基板内でショートなどで電流が流れることで、それは通常考えられない。これがなくても余り問題にならないという判断である。

 今度のRaspi3は、電源供給用に特化したUSBマイクロソケットがついており、その先の配線はRaspi2までと変わることはない。しかし、マイクロUSBのような小さな接点で、2Aを越す電流を安定的に送れるとは思えない。不安定さの要因のひとつになっているのではないか。

 そこで、前の無印Raspi同様、GPIOピンのVccに電源を供給し、いくつかの同じテスト(ブラウザー2本立ち上げ、motion動作、自分でストリーム受信など)をやってみた。残念ながら、マイクロUSBからの給電に比べ大きく改善されることはなかった。

電源制御装置で奇妙なトラブルにはまる (4/3/2017)
 問題なさそうなケーブルやACアダプターを選んで、何とか自作の電源制御装置を入れても安定して電源が供給されるようになった。

 ただ、SAMBAサーバーに使っている2.5インチHDDの電源供給(USBから給電)は、ただでさえ逼迫しているRaspi3の電源事情を考えて、当初から、セルフパワーのHUBを追加している。しかし、これでは、監視カメラを動かすのに2台のACアダプターが必要になり、取り回しが悪い。

 そこでせめて、ひとつだけのACアダプターでRaspi本体と、HDDをドライブするセルフパワーのHUBの電源にしようとした。ただ、セルフパワーHUBのACアダプターの受け口は、当研究所標準の2.1ミリジャック(秋月電子の標準と同じ)と違うので少々の加工が必要である。

 ところがこのテストをしているうち、妙な挙動に悩まされることになった。電源制御装置にACアダプター端子を追加し(単に入力をパラにしただけ)テストした時のことである。ブートしてRaspiのデスクトップ画面が順調に立ち上がった途端、電源制御のリレーが動いて切れてしまった。

 はじめは過電流が流れてRaspiがリセットしたのかと思ったのだが、勿論そんな状況ではなく、正確にリレーが働いて電源を切っており、症状は再現する。つまり、これはRaspiの消費電流量がシャットダウン時とみなされるまで低下していることを意味する。これはおかしい。Raspiは電源が切れるまで、ブートメッセージを始め、正常な動きをしている。Dsc01109

なんとUSBセルフパワーHUBが犯人(4/5/2017)
 こういう状況を放置しておけないのが所長の習性である。何が原因なのだろう。突き止めるまでは先に進めなくなった。幸いこのTiny13の電源制御装置は、裏蓋を開けるだけでデバッグ用のUARTにアクセスできる。字化けが何故か多いが(未解明)、そのときの消費電流と測定カウント、インターバルなどを表示する。

 このUARTをつないでスタート時からの電流量をモニターして驚くべきことが分かった。何と、このHUBのときは、Raspiには通常の1/3の電流しか流れていない。Raspiは普通、立ち上がりの時はかなり電流が流れるが、デスクトップが出てしまえばRaspiは200mA前後に落ち着く。これが通常の1/3だとシャットダウン時に想定している最高電流80mAを下回る。で、制御装置はシャットダウンと判定したのだ。 Dsc01111

 しかし、電流量が減ったのが全く理解できない。ブートは通常通り行われており、問題はない。するとHUBの電源を共通のACアダプターからとっていることが、これまで違ったところなので、これが原因であることは明らかである。しかし、理屈が合わない。USBコネクターから電源が供給される?そんな馬鹿な。

 試しにHUBを取り替えて別のHUBにしてみた。ははは、この問題は全く解消した。本当だ。セルフパワーのUSB-HUBの中には、スレーブからでもマスターのUSBパワーの電源を戻してやることがあるのだ。

体制は整ったが、突然、工作意欲がなくなる(4/14/2017)
 妙な現象は、手持ちのセルフパワーHUBの特性であることがわかった。症状の出ない別のHUBに切り替え、Raspiの監視カメラの電源整備はとりあえず一段落である。

 三脚の上にカメラ付きのRaspi3を置き、そこから電源用と、HDD接続用のUSBケーブルを2本出す。三脚の下にHDDとセルフパワーHUBを配置し、そこからACアダプターへの電源ケーブルを引くというレイアウトである。Dsc01108

 これをサンルームに持ち込み、テスト開始と意気込んだところに、珍しく風邪を引いた。これがかなり酷く、熱は微熱なのだが咳が止まらないうえ、声がしゃがれて出なくなった。こんなに喉をやられたことは記憶にない。無精して医者に行くタイミングを逃し、家人からあきれられた。

 そんなことで、突然工作意欲が湧かなくなった。電源制御装置のモニターのUARTの字化けを直そうと、久しぶりにAtmelStudioを立ち上げたりしているのだが、次の一歩が出ない。実はこのあいだネットで評判になっているESP8266の発展版、ESP32も買ってきてあるのだが、これも手が付かない。

 これまでにやった工作らしい工作は、傘の骨の修理(東急ハンズで修理用パーツをゲット)。DVDレコーダーリモコンの修理(これはカラ割には成功したが赤外線LED点灯せず。アマゾンで買い直し)。このあいだてこずったRaspiのBlueToothのテスト(キーボードは簡単につながったが、タイムアウトがあって使いにくい)、と脈絡のないことばかりである。

 まあ、これは意欲が戻るのを待つしかない。ブログもこのままではまずいので、とりあえず、中身はないが、これまでの報告ということで。

| | コメント (2) | トラックバック (0)

2017年3月25日 (土)

RaspberryPiのmotion動体検知の実用化に向けて

 このところRaspberryPi(以下Raspi)にはまっている。これを電子工作というのにはちょっと抵抗があるが、システム開発と言うのも何か大げさだ。まあ、Raspiは簡単にI/Oピンをいじれるマシンなので電子工作と言っても間違いではないだろう。

 巷(ちまた)には、Raspiに関する情報は溢れかえっている。しかし実用的な工作まで解説しているサイトは意外に少ない。あっても、詳しいのは導入までの工程で、そのあとの作業について解説しているところが少ないのだ。

 監視カメラに使うといっても、電源や、設置場所、耐天候対策、映像データの蓄積・管理など、検討すべき項目は数多い。この分野も既に専門家による大きな市場ができているので、素人が立ち入る場所がなくなっている。アマチュアがちょっと手軽にやってみるときの情報が少ないのは仕方がないのかもしれない。

 それに、アマチュアは作って動くところまでが楽しみで、動いてしまうと急激に興味が薄れるものだ(かく言う所長もその傾向を否定できない)。しかも、応用の方向は個人によって千差万別なので、参考にならないことが多い。このあたりは自分なりに開拓していくしかないのだろう。Dsc01068

 それはともかく、やっとmotionで想定した通りの動体検知システムが動き始めた。この監視カメラの運用までは、まだやることが沢山あるが、とりあえず一段落したのでブログに報告する。例によって時系列でまとめてあるので、話題が飛び飛びになることはご勘弁願いたい。

サブネット越しの名前解決(3/8/2017)
 直前の記事は、Raspi3をWiFiでつなぎ、SAMBAサーバーを動かすところまでだった。WiFiそのものは何事もなく動き、映像ストリーミングも快調に流れるのだが、SAMBAがなぜか通らない。撮りためるmotionの映像データは、何もしないとすべてRaspi3のSDカードに収容されるので、SDカードの耐久性が心配で、別のメディアを用意しておきたい。

 SAMBAにしておけば、リモートから監視映像を確認することもできるので一石二鳥だ。というので、SAMBAにこだわっているのだが、有線なら通るSAMBAが無線のWiFiではつながらないのである。

 WiFiルーターはブリッジで使っている(はずな)ので、同一のサブネットだと思うのだが、どうもSAMBAサーバーでは別のネットになるらしく、WindowsがRaspiを見つけられない。

 調べてみると、ウェブでは既知の問題点らしく、色々なところで解決法が紹介されている。要約すると以下のようになる。

(1)直接、PCでSAMBAサーバーのIPアドレスを指定してリモートドライブを定義する。WiFi越しでも通る(はずだ)。

(2)PC側のhostsファイルにサーバー名とIPアドレスを登録する。Windowsにもhostsファイルがあるとは知らなかった。しかし、これがとんでもないところにある。C:\Windows\system32\drivers\etcという深いパスの下にある。

(3)PC側のlmhostsファイルにサーバー名を登録する。これが正道なのだろう。lmhostとは、NetBIOSというWindowsのネットワークサービスの名前解決法である。このファイルも、hostsファイルと同じディレクトリにある。

 それぞれ試してみた。(1)は問題なく動いた。但し、固定アドレスをいちいち打ち込むのは運用上うまくない。他をあたってみた。(2)は、最初このファイルを変更することが出来なかった。さらに調べて、管理者権限が必要とわかり、エディター(Terapad)を管理者権限で実行させて変更に成功した。これも問題なくPCはサーバーを見つけてくれた。

 (3)も(2)と同じやりかたで、ホスト名とIPアドレスのセットを登録すると、WiFiでもSAMBAが動くようになった。一番、もっともらしい(3)にする。

Raspi3不調。OS入れ直し(3/9/2017)
 Raspi3の新機能のうち、まだ試していない機能がある。Bluetoothである。ただ、現在は、Bluetoothは、シリアルコンソールのUARTとぶつかるということで、停止している。実際に、ウェブにあるBluetooth関連のコマンドはエラーで戻って先に進まない。

 しかし、情報によれば、シリアルコンソールは、RaspiのBIOSにあたるconfig.txtに、クロックを固定する core_freq=250という設定だけで正常に戻るというのである。しかもBluetoothも動くという。

 今、Bluetoothを使う必要はないのだが、この方法が果たして有効なのかを確認するためBluetoothを動かしてみた。確かに、Bluetoothのセットアップコマンドは有効になり、Bluetoothが動き始めたような感じになった。

 ところが、Bluetoothのディバイスを持ち出して動作を試そうとしている間に、何故かRaspiそのものが正常にブートしなくなったのである。延々とエラーメッセージを吐き出すだけでブートが終わらない。ログインプロンプトまで行かないので何もできない。

 これまで加えたUART関連の変更(config.txtはPCから操作できる)を少しづつ元に戻してみるが、現象は変わらない。一番最初まで戻ったが、同じ状態である。恐らく何らかのBluetoothの設定ファイルが作られてしまい元に戻らないのだろう。設定ファイルをいじろうにもシステムが立ち上がらないので手の施しようがない。暫し途方に暮れる。

 余計なことをして、全く先に進めなくなってしまった。こういうときの一番の解決法は、OSを作り直すことだ。あれこれ悩んでいるくらいなら最初からシステムSDカードを作り直す方が手っ取り早い。Noobs

 手元に16GBのSDカードが見つかった(安売りショップで余りの安さに衝動買い)ので、今度はここに本格的なRaspbianをインストールしなおすことにする。ウェブを改めて調べる。どうも以前と様子が違ってOSのインストール方法が変わったようだ。

NOOBSって何だ?(3/10/2017)
 RasPiも例によって横道からつまみ食いをして動かしてきたので、最近の動向が良く見えていない。このNOOBSというやつが良くわからない。ウェブをさらにさまよい、これが複数のOSを選択インストールできる最新の方法であることがわかった。

 以前やっていたOSのカーネルをイメージファイルで、そっくりコピーする方式はどこへ行ったのだろう。ちょっと探したところでは見つけることが出来なかった。で、このNOOBS方式(ノービス、初心者向けということか)を試してみることにする。

 どうもこいつは、HDMIケーブルを使った画像デスクトップを要求するようだ。Raspiのデスクトップは、この前のSharpの7インチIGZOパネルを用意していたが、これが新しいOSで動くためには、またあのconfig.txtに修正を加える必要がある。面倒なので、PCのディスプレイと共用にする。

 太いPC用のHDMIケーブルを接続し、SDカードに展開したファイル群に起動をかける。よーし、画面にそれらしい起動画面があらわれた。ここではおなじみのRaspbianを選ぶ。他の選択肢にも興味をそそられたが他のは情報が圧倒的に少ないので選択の余地はない。

 Windowsと同じようなビルド画面が延々と続き、数十分でセットアップは終了した。そうか段々こいつもWindowsに似てきたな。キーボードとマウスをUSBハブにつけ準備を整える。順調にデスクトップが立ち上がる。ウェブブラウザーは既に日本語化されていた。20170324234018_1920x1080_scrot

 それにしてもあらためてRaspi3の速さを実感する。1920x1080の画面がスムーズに動く。ネットサーフィンも全くストレスなしに楽しめる。Linuxで動かす分にはもう十分な実用性があるように思えた。

新しいOSはデスクトップからでしか動かない?(3/13/2017)  
 デスクトップからの立ち上げには成功した。ところがシリアルから立ち上がるコンソールが動かないのである。SSHは動くが、シリアルは無反応である。シリアルはハードに直結しているので、ネットがおかしくなったり、デスクトップがおかしくなった時の緊急時のために動かしておきたい。

 ウェブを探していたら、何と、Raspi3からはシリアルはオプションで通常はdisableだという。(ここがとても参考になった。)

 あわてて、デスクトップの仮想ターミナルで、raspi-configを入力し、シリアルをenableにしようとした。なんと、そこにはシリアルを有効にする項目がないのである。ありゃー、これはどういうことなのだ?

 気を落ち着けて、ウェブの説明を最初から読み直す。なになに、デスクトップの「設定」メニューにはシリアルのenable/disableボタンがあるではないか。画面から「設定」を選び、最初のconfig.txtの部分を開く。ほんとだ。ちゃんとある。

 これをenableにして、rebootをかける。おおー、コンソールにブートメッセージが戻ってきた。やれやれ、これで一安心である。それにしても、以前のイメージファイルからのOSは何だったのか。

Raspi3は少しづつ元に戻る。マウントの制作(3/15/2017)
 OSを入れ直して、さらにWiFi化や、SAMBAサーバー、motionのインストールなど原状復帰の作業を進める。そのかたわら、定点監視カメラの本格的な実装に向けた工作も始めた。

 まず、ヨドバシでカメラ用の安い三脚(¥4000)を手に入れ、マウント台をアクリル板から自作する。マウントへのRaspiの固定は当初は輪ゴムで良いだろう。本格的にはいずれ別の方法を考える。Dsc01067

 久しぶりのアクリル工作である。楽しい。アクリル板からRaspiを載せる10X8(cm)の台座と、固定用の1/4インチボルト(これは万国共通のようである)を埋め込む2枚のホルダーを切り出す。以前、USBカメラを固定するのに使った方式と全く同じやり方である。

 これを2液混合のエポキシ系接着剤で接合した。乾燥のため一日放置し、これで丈夫になっただろうと実際に三脚に付けてみた。これが何と、少し力をかけただけでポロッと簡単にはがれてしまった。

 えー、エポキシ系ってアクリルにはつかないのか。前のUSBカメラのときは問題なかったのに。あわててGoogle先生にお伺いを立てる。接着面があまり滑らかだと接着力が落ちるらしい。そういえば前のUSBカメラの表面は梨地だった。

 そこでアクリル板の接合面を紙やすり(#200以下)で表面が曇るまでこすり、念のため別の新しい2液混合の接着剤にしてやり直してみた。今度も一日乾燥させる。試してみた。うむ、今度は大丈夫なようだ。 Dsc01071

 ついでに、近くのDIY店で、滑り止めのゴムシート(厚さ1ミリ、商品名エラストマーシート)を買ってきて、台座に合わせて貼り付ける。これは強力だった。輪ゴム程度の固定でしっかりカメラは固定された。よし、これで定点カメラの固定は万全になった(屋内専用)。

カメラモジュールのパイロットLEDの明度を下げる(3/17/2017)
 定点カメラにするためには直しておきたいところがある。カメラモジュール正面のLEDだ。動き出すと赤く光るのでわかりやすいが、カメラの正面に煌々と赤い光が点くのはまるで威嚇しているようにみえてまずい。

 このLEDをソフト的に消すことはできる。設定ファイルのconfig.txtで、disable_camera_led=1とすれば消えるが、カメラが動いているかどうかの確認が出来なくなるのも困る。

 そこで、LEDの位置を変えようとカメラモジュール基板を色々調べる。カメラチップのピンがビアを通して正面に出ている。これを利用して裏に移すことを考えたが、裏面にはスペースが余りない。しかもこれはかなりな手間だ。 Raspiled

 で、結論はLEDの制限抵抗を増やして暗くすることにした。基板についている抵抗は220オームである。どれくらいの抵抗が良いのか、適当な赤LEDをブレッドボードに差して(同色なら似たような特性と仮定)試してみる。

 10Kオームくらいでも結構明るく輝く。100Kではさすがに暗すぎる。久しぶりに例の低温ハンダを持ち出す。LEDのところに広がらないよう細心の注意を払ってハンダをつける。よーし、簡単に抵抗ははずれた。低温ハンダをハンダ吸い取り線で入念に除去する。

 部品箱の中から昆虫採集のように残してあったチップ抵抗のコレクションから10KΩを探し出し、交換する。パターンは1005だったが、手持ちの1608でも実装可能だった。交換作業は30分もかからなかった。

 試してみる。うん、10Kでも明るすぎるくらいだが、これくらいなら目立たないで良い。いや、くだらない作業だったが、何かとても充実した気持ちになった。

本格的なmotionの設定。画像はとれたが管理が大変(3/22/2017)
 準備が進んできたので、いよいよ、motionの監視用のソフト仕様の検討に入る。motion.confの膨大な設定パラメーターを、我慢して最初から読みはじめる。

 バージョンに新旧があるようで少し混乱するが、読み込んでみるとそう難しい構造ではなかった。大きく分けると静止画(動きを確認したところでのスナップショット)と、その前後の動画の2種類をアクションごとに保存していくようだ。Motion1 Motion2

 沢山のパラメーターがある(動きを検知する前の画像の処理とか、動かなくなってからの動画の記録をどこで止めるとか)。

 管理的には、スナップショットの静止画と、動画は別々のフォルダーに残しておきたいが、これはどうも無理なようだ。

 記録を始める動きの範囲の大小は、実際に動かして見て決めるしかないだろう。ファイルの置き場所は、SAMBAのHDDに指定する。とりあえず、以下のようなパラメーターで監視を始めることにする(変更したところのみ)。

width 640     (320)      Raspi3ならこれくらい画像を大きくしても十分見られる
height 480    (240)
framerate 12  (2)          あまり大きくすると時間遅れが大きくなるようだ
netcam_keepalive on (off)       HTTP/1.1を使ってストリーミングの性能向上
threshold 3000 (1500)             これはとりあえず。これでも結構敏感に反応する
pre_capture  1    (0)                      検知する前の画像も記録する。
event_gap    5    (60)                     検知したあと、不感となる時間(秒数)
max_movie_time 10  (0)                 動画記録の最大時間(秒数) 0は制限なし
output_captures best (on)        検知した一連の画像のうち最大変化量の静止画を残す
output_debug_pictures on (off)   静止画を検知するときの2値化した画像で残す ffmpeg_output_movies  on (off)    検知した時の動画を記録する
locate_motion_mode    on (off)     検知した画像の部分を4角で囲む
target_dir /SAMBAファイルのパス (/var/lib/motion)記録データの保存場所
stream_motion   on  (off)            ストリーム配信をする
stream_maxrate  20  (1)          ストリーム映像のフレームレート
stream_localhost off     (on)        ストリーム配信を自分以外にもする
webcontrol_localhost off   (on)  各種パラメーターの設定を自分以外でも変更可能

 以上の設定で、工作ルームでのテストでは、手を振ったり、動いたりすれば確実に画像が記録されるのを確認した。これが実際の道路を移して所定の画像がとれるのかはわからない。

Dsc01070  このあとは三脚をサンルームの道路に面した場所に置き、観測を開始することにする。さて、どんな映像がとれるか、久しぶりにわくわくする気分である。このあたりで今回の記事は一区切り。次回をお楽しみに。

| | コメント (0) | トラックバック (0)

2017年3月 6日 (月)

やっぱりRaspberryPi3は早い

 RaspberryPi(以下Raspi)の定点カメラのハードとOS周りの整備は完成した。次はアプリである。定点カメラの細かい仕様は、まだ決まっていない。とりあえずは、通行中の人や車をチェックする(家の前で何が起きているか監視する)ぐらいのことを考えておく。厳密なものではない。

無印Raspiは遅い。motionはすんなり動いたがカクカク(2/3/2017)

 満を持して無印Raspi(初代のRaspberryPi B)に、motionパッケージをインストールする。Raspi3は電力消費が大きいので、無印の方で動くなら動かしたい。無印RaspiのOSはこのあいだ更新した。アプリを入れる前にapt-get updateと、upgradeをかける。

 うーむ、何かエラーが起きているようだ。updateが進まない。エラーメッセージは「サイトが見つからない」と怒っている。えー何故だ。apt-getを中止して、pingをかける。何だ何だ、ネットワークが外へ出ていっていない。

 そう言えば、RaspiのIPアドレスを固定にするため。staticアドレスに変えた。設定ファイルを確かめる。DNSはちゃんと定義してある。何で行かない? 面倒なので、DHCPに戻す。問題なく外部へpingが通り、apt-get updateは無事終わった。upgradeに入る。これがまたえらく時間がかかる。小一時間かかった。件のmotionの方は何のことはない数分でインストールされた。

 このあと、IPアドレス設定ファイル(/etc/dhcpcd.conf)の中を見るともなく見ていて、とんでもないミスを発見した。DNSを定義する設定行domain-name-servers=XXX.... が、server=になっていた。Linuxは無口で、こういう誤りは教えてくれない。

 motionの設定でもまた少しまごついた。最初の設定値(デフォルト)ではサーバー外へのストリーミングを許さないのだ。ウェブ上の情報と、実際のパラメーターの名前が微妙に違うので結構混乱する。それにしてもこの設定量の多さには辟易する。ここの記事が親切だ。

 エディター(nanoこいつは便利だ)の検索機能(ctl+W)を使って目的のパラメーターを探し出した。stream_localhost off (ウェブ上ではwebcam_localhostになっている) これを直せば、すぐに画像が表示された。

 しかし、遅い! 前はもう少し早かったような気がするが、640ドットはお話にならないくらい遅い。320x240の画面でもカクカクして見にくい。景色を見るだけならともかく監視には使えない。シリアルコンソールには、motionが残しているファイル名が延々と出ているので、無駄な設定をしている可能性はある。うーむ、無印Raspiでこのまま行くか、Raspi3に上げるか迷うところだ。

mjpg-streamerは早かった(2/6/2017)
 motionは動体検知の機能がついているので動きが重い。320x240の画像のストリーミングでも2~4fps(フレーム/秒)がせいぜいだ。動きを検知するたびにデータフォルダーにaviファイルを大量に残しているようなので余計遅くなっているようだ。

Mjpgstreamer  これを止めようと、あれこれ設定をいじったが、うまくいかない。これからの目的(路上の不審者の究明)には、このソフトがうってつけなのだが、なかなか手ごわい。motionの仕組みそのものを理解していないので、どう止めるのか行き当たりばったりである。一番無駄な方法だ。

 motionばかりにこだわっていても先に進まない。で、以前使ったもう一つのストリーミングソフトmjpg-streamer(これにapache2とでライブカメラにした)を導入することにした。動体検知はできないがライブカメラとして使える。motionより早いはずだ。

 このアプリは、ソースコードからである。この前は、ダウンロードに手間がかかり、コンパイルエラーが出たりして大騒ぎだったが、今回はスムーズにインストールされた。バージョンが上がったのかも知れない。

 早速試してみる。おおお、こいつは早い。無印Raspiでも640x480の画像が滑らかにでる。Raspi3ならもっと早いだろう。motionのように動体検知は出来ないが、ストリーミングだけならこれで十分だ。

Raspi3に切り替える。シリアルコンソールが字化け(2/14/2017)

 Raspiのカメラモジュールは当初の目的(定点カメラ)をほぼ実現した。ただ、2つの無印Raspiには既にお役目がある。ひとつはSAMBAサーバー、もうひとつはパンチルトが出来る外部ライブカメラのメインマシンである(いずれも最近は使っていないけれど)。

 Raspi3は現在具体的な用途が決まっていない。こちらに移した方が合理的である。それに無印では遅かったmotionも早くなって、最終目的の動体検知が実用になるかもしれない。 折角、無印Raspiで動いているのを改めてRaspi3に移すのも二重手間だが、どれくらい早くなるのかも試してみたかったので移し替えることにした。

Dsc00976 まずは、Raspi3のケースに、カメラを固定する工作を加えなければいけない。Raspi3のケースを手に取っているうち閃いた。カメラの固定は、無印の時はケースについている段差(というより縁)を利用している。これをRaspi3の時も使えば良い。そう、縁のかわりをアクリルの細い棒で再現するのだ。

 早速、アクリル棒を切り出し、瞬間接着剤で固定する。差してみる。おお、うまくはまった。ちょっとテーバーが付いているので(勝手にできたのだが)、ピッタリだ。よーし、良いぞ。こんなささいなことでも、何かとても幸せな気分になれる。次はソフトだ。

 当研究所のRaspi3は、去年の6月に買ったので、OSはJessieで、例のカメラモジュールのディバイスファイル化は済んでいる。7インチのIGZO液晶パネルを動かすため、日本語化までやったがアプリは全く入れていない。久しぶりに火を入れることにする。シリアルコンソールをつなぎ電源をON。

Dsc00977

 おやあ、シリアルが字化けだ。前はどうした。あ、前は、HDMIケーブルでデスクトップ画面を出していたのでこれを使っていない。あわててシリアルの接続ピンを確認する。間違っていない。そりゃそうだ、化けた文字がでているのだからハードがおかしいのではない。

 こういうときは、Google先生に聞くのが一番だ。調べてみるとすぐに原因が明らかになった。Raspi3では、そのままだとシリアルコンソールがまともに動かないとある。入出力ピンが新しく入ったBluetoothのUARTと共用になったためらしい。

 これはあとの話だが、SAMBAのインストールをしたらまたおかしくなった。この解決は、ここ(http://akkagi.info/20161004_web/)に詳しい。要はmdline.txtの中を変えれば良い(と言ってもconsoleの順番を変えただけ)。これでやっとシリアルコンソールは安定した。

Raspi3にもSAMBAサーバー(2/19/2017)

 ついでに、このRaspi3にもSAMBAを入れる。SAMBAはすんなりインストールされたのだが、WindowsからSAMBAディスクが見えない。Raspi側の状況は問題ないのに。なぜだ。

 居間で使っているWinXPのネットブックではいつもどおりディスクが見えるので、これはこのWindows10の問題である。これもWebに情報を求める。うーむ、SAMBAの認証がえらく面倒くさくなったようだ。

 まず、Raspi側でSAMBAサーバーにsmbpasswdにユーザーIDとパスワードを定義し、Windows側ではネットワーク資格情報なる登録がいるようだ。この前までは、何もしなくてもすんなり読み書きができたのになぜだろう。

 SAMBAの設定パラメーターも、motionに負けず劣らず膨大な量なので、ことは簡単ではない。いくつかのウェブ情報を頼りに、せっせと設定を入れ込む。うまく行くときと行かないときがあって混乱する。

 リモートディスクの設定方法が複数あるのが混乱のもとだ。このユーザーIDというのはWindowsのなのかLinuxなのか、SAMBA固有なのか良くわからない。うまく行くとユーザーIDの入力は求められないが、求められたときは、正しい(と思われる)IDを入れてもはじかれる。

 何度もやっているうち、何とか安定してディスクがつながるようになった。Windowsは「ネットワークドライブの割り当て」から始めるのが確実なようだ。しかし、この「割り当て」のアイコンを出すのが結構難しい。Windowsのエクスプローラー(ファイラー)も機能が肥大してしまっている。

Raspi3のmotionは早かった(2/21/2017)

 まあ寄り道ばかりしていても仕方がない。本来の目的に移ろう。motionのインストールだ。これは問題なくインストールされ、定義ファイルの修正も何度目かなので順調に終わった。カメラモジュールが動くことは、raspistillなどの専用のコマンドで確認してある。

 Raspi3のOSは、Jessieなのでカメラモジュールは既にディバイスファイル(/dev/video0)になっている。motionは何もしないで動くはずだ。動作させる。赤いLEDが点灯し動き始めた。しかし、ストリーミングは始まらない。

 コンソールには何か延々とバックアップの画像ファイルを残していくメッセージが出るだけだ。えーなんで。何も変えていないよ。設定ファイルがおかしいのか、もういちど確認する。いや無印のときと変わっていない。

 OSもアプリも全く同じだ。それなのになぜRaspi3では動かない。設定ファイルを何度も確認するが、変わったところはない。暫く途方に暮れる。仕方がない、派手に出ているmotionの起動直後のメッセージを地道にひとつひとつ調べていくことにした。

 すると、コマンドを入れた直後のメッセージで、motionの設定ファイル/etc/motion/motion.confがないというメッセージが見つかった。ええー、そんな馬鹿な。さっきエディターで編集したばかりだ。何故だ? ああー、もしかすると motionに設定ファイルを読む権限がない? つまりmotionをsudoをつけずに動かしているからか。

 そのとおりだった。sudoを付けて動かすと問題なくストリーミングが始まった。しかしそれにしても、今までsudoをつけていたっけ?motionの設定ファイルmotion.confの属性がおかしい。オーナーがrootになっているのはともかく、他ユーザーに読めないようになっている(パーミッション600)。

 これではsudoがないと動かないはずだ。以前は一般ユーザーでも動いていたように思う。まあ、それはともかく、chmodで属性を644に替え、一般ユーザーで見えるようにする。動かしてみる。うむ、正常に立ち上がった。

 ストリーミングはどうだ。焦る手でPCのブラウザーを開く。出た。おおお、こいつは早い。無印に比べたら雲泥の差だ。640x480でも軽く20FPSくらいはいっていそうな滑らかさだ。さすがRaspi3だ。遅延は少し(0.5秒程度か)あるが、監視には全く問題がない。

 これはRaspi3で決まりだな。電源は元から電池にするつもりはないのであまり障害ではない。ACアダプターに大きいのが必要なだけだ。

自宅前の定点カメラのテスト順調。夕方でも鮮明(2/25/2017)
 いよいよフィールドテストに入る。自宅前の道路に面したサンルームの一角に3脚を据え付けカメラ付きのRaspi3を固定する。電源を入れ、LANケーブルを延長して(早くWiFiにしよう)接続する。動作中を示すカメラの前の赤LEDが眩しく、道行く人は不審に思うかもしれないが、これはいずれ消せる。

Raspi3_motion  ネットブックを持ち出し、ストリーミング映像を確認する。うん、良く映っている。窓ガラス越しだが、視認性は高い。解像度も問題ない。車の通行も飛ばないで映っている。いやあ、これは簡単だ。定点カメラとしての実用性は十分だ。

 日が暮れてきた。人間の目ではかなり暗いが、映像ではまだ十分な明るさだ。これでmotionの動体検知の機能を稼働させ、画像ファイルをSAMBAに入れて、遠隔地からその画像を確認するという手順が可能になった。

 カメラの固定がまだ仮りの状態なのと、引き回すのに有線LANではなく、WiFiにすることが課題に残っているが、今回のプロジェクトは何とか想定通りに進みそうである。

無線LANでもmotionは快調に動いたが。SAMBAが不調(2/28/2017)
 最後の仕掛けに挑戦する。Raspi3から実装されたWiFiである。定点カメラの移動の際、有線LANではなく無線(Wifi)にできればとても楽だ。セキュリティの問題はあるが、どうせ家の中から撮った外の景色が外に漏れたとしても大した問題ではない。

 Raspi3の無線LANの設定は多数のウェブサイトに紹介記事があり、インストールに不安はない。適当なサイトを選んで設定を進める。ただ最近の改定で、設定方法がかわり(dhcpの指定ファイルが一元化された)、設定方法が複数あるようで少し混乱する。

 LANケーブルがなければカメラの移動は大変楽になる。電源ケーブルさえ気にしていればいいからだ。motionの結果は、ストリーミングを利用して他のサーバーに送ったり、SAMBAディスクに記録して離れたところから眺めたりできる。

 WiFiの設定は、簡単にできた。ifconfigでIPアドレスを確認する。ここも、固定アドレスにする。メインPCからSSHでRaspi3にログオンする。よーし、入った。次はいよいよ動画ストリーミングだ。

 おお、何の問題なく画像が出た。動きは有線のときと全く遜色ない円滑さである。いやいや、これは楽だ。今後、Raspi3を移動体に載せて動画中継をすることも可能になる(電源が大変だけど)。

 勢いに乗って、SAMBAサーバーが動くか確認する。しかし、Wifi経由では、SAMBAがつながらなかった。確かに、有線LANと無線LAN2つに経路が出来たとき、経路を選ぶ設定パラメーターはSAMBAにはない。何か別の理由があるようだ。

 調べ始めると、意外に根の深い問題であることがわかった。そのうち確定申告の期限が迫ってきて、電子工作に時間がかけられなくなった。このあたりで記事をまとめて、話の続きは次回に報告するとしよう。

| | コメント (0) | トラックバック (0)

2017年2月 1日 (水)

RaspberryPiのカメラモジュールで定点カメラの野望

 今年もみなさまに新年のご挨拶をする前に、1月も終わりになってしまいました。昨年同様、正月早々、家族が酷い風邪にやられました。だいたい年末のお節料理の準備で精魂つきはてるようです。

 そんなことで初詣にも行けない散々な状況でしたが、本人だけは5日に学生時代の仲間と珍しく正月七福神詣でをすませ、とりあえず年神さまには義理をはたしました。

Dsc00830 その話はあとでするとして、電子工作の方は相変わらず低調です。というのも昨年来のPCのビデオボードのトラブルが解決せず、これにこだわって万事が進みません。MPU6050の次のテーマとして、滞留在庫の整理を兼ね、RaspberryPiの組み込みカメラモジュールの動作テストをするつもりでしたが、具体的な目的が決まるまで迷走が続きました。

 昨年予定していた忘年会が色々な都合で持ち越しになり、このところ連続して新年会があったことも進まない原因のひとつです。それでも何とか、試行錯誤でアクリル板のカメラマウントをでっちあげ、想定した定点カメラが形になってきたのでブログに上げることにします。以下の報告は備忘録を兼ねているので時系列でわかりにくくすみません(2/1/2017記)。

ビデオカードの不具合に悩まされる(12/29/2016)
 暮れも押し迫ってきたが、電子工作は思わぬ展開で先に進まない。ジャイロセンサーMPU6050の3Dライブラリーのために替えたビデオボードのせいで、メインのPCが頻々とフリーズを繰り返し、安心してPC作業が出来なくなってしまったのだ。

 症状は、ワープロぐらいでは起きないが、動画を見たり、ゲームをしたりすると、画像が途切れエラーメッセージが出る。そのあと復帰することが多いが、時にはフリーズしたり、システムがリセットしたりする。このPCは電子工作専用ではなく、汎用的に使っているので何とかしなければならない。

 出てくるエラーメッセージは「ビデオドライバーの応答がないので、システムをリセットする」というもので、例によってこのキーワードでネットを検索すると、膨大な量の記事がヒットする。Win7時代からの古い問題のようである。何らかの原因で、GPU(ビデオボードのCPU)の応答が遅いと、OSがそのアプリの実行を止めてしまうというものだ。

 少なくとも、元々の内蔵ビデオインターフェース(Intel)では起きていない。ウエブにある症例では、NVIDIA系のボードが圧倒的に多いが、AMDのRADEON系で全く起きないわけでもないという。ワープロや簡単なウェブサーフィンくらいでは起きないが、グラフィック画面で(ゲームのトランプのカードの移動だけでも)大体おかしくなる。

 年賀状も書き終えて、少し暇になったので、色々な対策を片っ端から試してみた。まず、デフォルトで2秒というレジストリーのパラメーターのタイムアウトの時間を、レジストリエディターで5秒に延長する。これでエラーの様子が少し変わったが、頻度はかえって多くなったような気がする。

 次が、ビデオドライバーの更新である。ビデオカードに付属していたドライバーはネットで調べると少し古いので最新のものにとりかえる。全く変化なし。古いドライバーが残っているとおかしくなるというので、ユーティリティを使って古いドライバーの削除とクリーンインストール。これも駄目。

 サイトによっては、NVIDIAのコントロールパネルでのオプションの設定変更だけで綺麗に治ったというのがあったが、全く効果なし。こんな簡単なことで治るわけがないと思う。

 さまざまなことを試してみた。結局のところ最初に比べれば発生頻度は少なくなったような気もするが、完治はしない。頻度が少なくなったとはいえ、ゲームで遊んでいて大事なところでフリーズに見舞われると気晴らしにもならない。フリーズは1分ほど待つと前の状況に復帰することが多いのだが、タイミングが悪いとそのアプリが落ちたり、システムが完全に止まったりする。

 マザーが古すぎて新しいビデオカードと合っていないというのが、どうも最大の原因のような気がする。しかしマザーを変えるとなると、CPUとメモリーまで入れれば、やはり数万円はかかるだろう。そんな馬鹿なことはしたくない。3Dを見るだけのためにとんだ疫病神を引き込んでしまった。

ビデオカードの不具合に決着つかず。別のボードを発注(1/2/2017)

 いずれにしても、こんなに長い間(少なくともWin7時代から)ユーザーを悩ましている問題が全く解決されていないというのも、このPC業界の不思議なところだ。最近のビデオボードのオプションは3D関係(恐らくDirectXというパッケージ)だけで軽く10個以上あり、何か技術の末端肥大を感じさせる。モンスター化して制御不能になってしまっているのではないか。

 年が明けても、あきらめきれず色々しつこく試していた。最も基本的なハードの部分、カードスロットの接触不良を疑い、ビデオボード基板の接点の掃除と差しなおしを何回かやったが、事態は進展しなかった(これで劇的に治ったという報告もある)。

 メモリーとの不適合を指摘するサイトがあり、そこではメインメモリーを交換したら解決したとあったが、この少し古いPCのメインメモリーを買いなおすのはやりたくない。(このサイトは系統的に良くまとめられている。高知の自作パソコンショップが2009年に詳細な調査を行っている。結論はメモリの相性問題ということだ。)

 メモリ交換でなく、PCのBIOSのアップデートでも解決したというサイトもあった。これなら費用もかからない。早速試してみた。久しぶりのBIOSのアップデートである。マザーボードのASUSのサイトを探すと幸い現在のバージョンより先のBIOSが見つかったので(もう2年も前のやつだったが)、入れ替えてみた。

 動かしてみる。ふむ、起きない。これが原因だったのか。暫く使う。駄目だ。1時間ばかり経って、やはり再現した。頻度は明らかに前より少なくなったようだが、全く0にはならない。

 マイクロソフトの基本ドライバーでは全く起きないので最悪の場合はこれに戻せば良い。ただ、このドライバーは3Dをサポートしていないので、Processingの飛行機は動かない。元の内蔵ボードに戻しても動かないことは同じだ。PCを取り替えるという手段も本末転倒である。だとすると、どういうことになる? そう、トラブルの報告の少ないRADEONのビデオボードをウェブで発注してしまったのだ。

谷中七福神詣でをしてきた(1/5/2017)
 しかしお正月なので、品物はすぐには来ない。というので新年での行事をご紹介しておこう。このあいだの筑波山歩きの山(街)歩き仲間が誘ってくれた七福神めぐりである。例年この仲間は、新年に都内の七福神詣でをしているそうだ。今年は、江戸最古という触れ込みの谷中(やなか)の七福神である。

Dsc00839 Dsc00845

 出発点は田端駅近くの福禄寿を祭った東覚寺で、ゴールは上野不忍池の弁天堂である。距離にしておよそ12キロ。街歩きとしては丁度頃合いの長さだ。昔の人は良く考えている。我々一行は正月5日、田端駅に集合した。

 歩き始めてまず驚いたのは、お正月ということもあるが、参詣者の多さである。それも高齢者の小団体が多いのでうっかりしていると他のパーティに紛れて迷子になる。我々も参加者が10人を越えていたので、グループを2つにわけて行動した。 Dsc00857 最近は御朱印帳で参詣の印を押してもらうのがはやっているが(スタンプラリーと同じ趣向)、ここには七福神をイラストした色紙(¥1000)が売られている。ここに各寺、神社の朱印を押してもらう(各¥200)。帰って壁に貼ると結構な正月飾りになる。

 田端駅近くの最初のお寺が少し離れているだけで、ほかは、いわゆる谷中墓地に点在するお寺の敷地内に七福神の祠がある。人通りが多いのはみんな七福神詣の人たちである。お寺によっては長い行列ができている。Dsc00849

 幸い、風もなく絶好の散歩日和で、不忍池の弁天堂で満願成就である。ちょうど日も落ちて来て、お酒を飲んでも後ろめたくない時間になってきた。解散する前に近くのビヤホールで新年を祝って乾杯である。いや生きてきてよかった。

ビデオカードはカードの交換でけり(1/9/2017)
 発注していたビデオカードが届いた。正月休みだったのでネット販売にしては少し時間がかかっている。今度はNVIDIAでなくてRADEON(ATI)である。

 こちらは3Dゲームなどには関心がない。安物で十分だ(玄人志向のHD6450 ¥4000少々)。実は年の暮れ、また秋葉原を覗いたのだが安いものは店頭には殆ど売っていなかった。店頭販売では単価の低い商品は効率が悪いからだろう(数万円が売れ筋のよう)。通販のポイントが溜まっていたので、出費は¥2000程度ですんだ。 Dsc00865 早速、とりかえる。PCI Expressの仕様がやっとわかってきた。前のビデオカードGT710は、PCI Express X8で、今度のHD6450は、X16(スロットのバス巾)ということが始めてわかった。最初のボードのスロットにすき間があったのはそういうことだったのだ。

 結果は予想した通り、トラブルは完全にきれいさっぱり解消した。何時間動かしても、全くフリーズは起こらない。古いマザーとの相性問題というが、これはやっぱり、NVIDIAの不具合としか言いようがない。性能的には、GT710より、3D性能が少し低いが、2DはむしろRADEONの方が高く、何といっても安定しているのが一番である。

 やれやれ、3週間近く悪戦苦闘したあの時間は何だったのか。この執筆時点(1/31)でも起きていない。PC関係で、このあいだのマザーボードといい、このNVIDIAのビデオカードといい、不要不急の部品がまた増えてしまった。ともあれ、これでやっと、本題の電子工作に戻れる。

RaspberryPiのカメラモジュールはあっけなく動いた(1/12/2017)

 電子工作の話に戻る。テーマは、このあいだRaspiのディスプレイを買ったときについでに買ってあったカメラ(Raspi カメラモジュールV1.3 ¥3000少々)はまだ一度も動作させていない。部品棚に眠ったままである(このモジュールは既にV2になって画素数も800万と高性能になっている。価格は高くなってしまった) Dsc00855

 実用ということでは、はっきりした目的はない。自宅の前の道から吸い殻を車寄せに捨てる不届き者がいて家族が怒っている。これを動かして、定点カメラか、ドライブレコーダー的な使い方をしてみれば面白いかもしれない。

 現在、当研究所には、3台のRaspiがある。無印のRaspiが2台(SAMBAサーバー、パンチルトの出来るライブカメラでいずれも最近は電源が入っていない)と、Raspi3が一台である。Raspi3は用途が決まっていないが、電力喰らいなので、無印のSAMBAサーバーにカメラをつなぐ。

 カメラは、最初、逆刺し(絶縁面に接点側が入るので副作用は心配なし)して動かなかったが、このサイトの案内で、専用のコマンド(raspistill や、raspividなど)を使い、簡単に静止画や動画を撮ることができた。

 検証は、SAMBAなのでWindowsディスクにコピーして、PC側で見る。RaspiでXwindowを動かすほどのことでもない。SAMBAサーバーにカメラをつけたのはこれが理由である。

 500万画素もあるので鮮明な画像だ。ビデオも問題なく撮れた。ビデオの再生は、WinPCでは動かなかったので、例の7インチのIGZOパネルを使った。

 config.txtの設定データをこのSAMBAサーバーに移してデスクトップを表示させた。これも順調に液晶パネルが動作し、例の超微細なデスクトップが現れる。シリアルターミナルから、ウェブサイトで教えられた動画プレーヤーomxplayerを実行させる。

 画面はデスクトップ画面である。何かもうひとひねりしないと画像が出ないと思っていたが、一息待ち時間があったあと、突然、画面全体に、工作室を逆さ(カメラモジュールが逆さまになっていた)に映した動画が見事再生された。5秒で10MBばかりのハイビジョンクラスの画像である。とても滑らかな再生で驚く。

久しぶりのアクリル工作は大変だった(1/17/2017)
 さて、カメラは動いたが、課題が2つ残っている。カメラのマウントと、カメラを汎用的なビデオディバイスにすることである。現在は専用のコマンドからで、motionや、mjpg-streamerのようなライブカメラのシステムを動かすには、/dev/videoなどのディバイスファイルにしないといけない。

Dsc00854  それはさておき、まずはカメラマウントの制作である。カメラモジュールは2センチ四方の小さな基板だけであり何らかのマウントが必要だ。それに、FFC(フレキケーブル)が短く、堅いのでカメラの固定が難しい。定点カメラにするならRaspiごと固定する手段が必要だ。

 手持ちのアクリル板を、いつものアクリル曲げ器を使って、カメラマウントに加工することにした。モデルは以前作った赤外線センサーのマウント台である。アクリル板を曲げて2つのコの字フレームを作り、ヒンジで接合する。

 部品庫に眠っていたA4ほどのアクリル板(厚さ2ミリ)をサーキュラーソーで、切り出す。小さなサーキュラーソーなので、20センチ近い長い板の切断は苦手だ。切断面がどうしても歪んできて回転部分の摩擦が大きくなり、下手をすると大事故の心配がある(材料の破損とか飛散)。 Dsc00862

 何とかだましだまし切り出した後、アクリル曲げ器でコの字型のフレームに曲げる。温度が少し低すぎるのか、どうもうまく曲がらない。久しぶりなのでノウハウを忘れてしまっている。温度を上げて何度か曲げを調整しているとき、少し力を入れて整形していたら、ポリっと割れてしまった。

 アクリル板は何度も同じところに熱をかけて曲げていると強度が極端に落ちることを忘れていた。焦げない程度に一気に強い熱を加え一回で曲げ切らないと材料が劣化することを、終わってから思い出す。やれやれ年はとるものではない。 Dsc00863

 結局、外側のフレーム(マウントを固定する方)は2回作り直した。2回目はサーキュラーソーが心配でコッピングソー(糸鋸盤)を使った。外側を半円形に切ると、少しそれらしくなった。

 このあと苦労したのが、チルトさせるためのヒンジの穴あけである。平面時に穴あけして正確な位置合わせをすることは殆ど不可能なので、曲げたあとから穴をあけるしかない。正確な位置決めのため小さいドリル穴から全部リーマーで直径15ミリまで円形を広げたのだが、これが大変で、指に豆を作ってしまった。

 苦労の結果、何とかそれらしいマウントが出来た。ただ、リボンケーブルが固くてマウントそのものを固定しないとカメラを安定した位置に止めることができない。実用的には、Raspiのケースそのものに固定する必要がでてきた。

試行錯誤の結果、まずまずのマウント(1/30/2017)
新年会が続いて工作の時間がとれなかったが、少し落ち着いたので、久しぶりにAitendoに行き、FFCケーブルと無印Raspiのケースが安売りされていたので購入した。

 FFCケーブルは、カメラのケーブルを下から出したくて順目のケーブルを買ってきたのだが、つけてみて大失敗に気づく。このまえのESP8266変換基板のときと全く同じである。FFCケーブルの接続面を替えたら接続は全く逆になる! これをつけてからそれに気が付く馬鹿さ加減にまた暫し呆然となる。

 これは買いなおすとして、はずみで買ったRaspiのケースはあたりだった。うまいぐあいにケース上段に段差が出ていたのでそれにあわせてマウントに溝を作り、きっちりその段差に固定する。おお、ぴったりカメラは固定された。こいつはうまくいった。嬉しくて記念撮影。

Dsc00864  さて次はソフトである。motionなどのライブカメラで動かすには、汎用的なディバイスファイルにするしかけが必要である。もとのSAMBAサーバーのOSはV3のWheezyで汎用的なビデオパッケージVideo4Linuxをサポートするカーネルモジュールが入っていない。最初、このサイトの情報でインストールを試みたがうまくいかなかった。

 そこで、OSの取り換えを試みる。最新バージョンのJessieが無印のRaspiで動く保証が得られなかったがだめもとで入れてみた。幸い、何事もなく順調にインストールに成功。めでたく/dev/video0というディバイスファイルが出た。

 これであとはmotionや、jpeg-streamerなどのインストールをすれば定点カメラが完成する。ブログの紙数も増えてきたので、このあたりで報告を一段落しよう。

| | コメント (0) | トラックバック (0)

2016年12月22日 (木)

ジャイロセンサーMPU6050とProcessingで飛行機の3D姿勢表示

 前から少しづつ進めていたプロジェクト、6軸の加速度・ジャイロセンサーMPU6050をESP8266のArduinoで動かして、PCの画面に3Dの画像(飛行機)を表示する開発がやっと一段落した。MPU6050の基板を手で動かすと、PCの飛行機がそれに合わせて動く。Dsc00804

 当研究所の大きな縛り「実用品を開発する」ことなら、MPU6050は本来ならドローンや2足歩行のロボット(まあ、これも実用品ではないが)に使って始めて開発と言えるのだが、そこまでの足慣らしということで始めた。ところがこれが思ったより難航したのである。Ws000011

Processingの3Dライブラリーが動かない(12/3/2016)
 Processingそのものは、すでに前回、単独で動くことを確認している。これからやりたいことは、MPU6050で検索すると必ず出てくる3Dの飛行機やティーポットをPCのProcessingの画面上で動かすことである。

 ところが3Dに必要なProcessingのリソースをダウンロードしようとすると、殆どの日本語サイトが紹介しているダウンロード先のAndrocityというサイトが変わってしまっていて、先に進めない。

 片っ端からウェブサイトを探し回って何とかファイルを見つけ、インストールには成功した。toxiclibというライブラリーも見つかった。しかし、動かしてみるとProcessingの3D出力のドライバーOpenGLでエラーが出る。平面図形は至極順調に動くのだが、OpenGLが以下のメッセージを出してエラーとなる。

Framebuffer error (framebuffer unsupported), rendering will probably not work as expected

 調べてみると、PCのグラフィックドライバーが古いと動かないようだ。このライブラリ(OpenGL)だけでなく他の3Dライブラリでもトラブっているようで、エラーメッセージをキーにすると海外のサイトが多数ヒットする。

Ws000009

 回避する方法は、残念ながら紹介されていない。基本的には新しいビデオカードに替えるか、メーカーがビデオドライバーを更新してくれるのを待つしかないようだ。しかし後者はこちらの場合望み薄である。

 現用のPCのビデオインターフェースが古すぎる。マザーに内蔵のビデオインターフェースはIntelのG33で、恐らく7年は経っている。最新のIntel汎用ドライバーに更新しようとしても、メッセージは「これが最新です」と出て、状況は変わらない。

 うーむ、買ってくるしかないか。前のPCで使っていた古いRADEONのボードは部品庫に残っているが、これとてかなり古く、動く保証はない。変なところで頓挫してしまった。余り意地になるのはやめようと思うが、どうも気になって他のことに移る気分にならない。

 本来の工作の方向ではない(単なるMPU6050の動作テスト)ので、潔く他のことをすれば良いと思うのだが、へそ曲がりなもので、出来ないとなると余計悔しくて気持ちが納まらない。因果な性分である。

ビデオボードを買ってきて解決(12/6/2016)
 色々迷ったが、次にやることが見つからないので、くだらない話だけれどビデオカードを更新することに決めた。ということで、買うことは決めたのだが、いざ具体的には何を買えばよいのか見当がつかない。PC自作から遠ざかって15年は経っている。

 ネットで久しぶりに「ビデオカード」をキーワードに検索をかけてみた。おお、出てくるわ出てくるわ。この世界はまだまだ活況のようだ。そのうち全体を俯瞰できる親切なサイトを見つけた。なにー、10万円を超すビデオカードが沢山市販されている。中には30万を越すボードもある。これ業務用ではないよね。ハイエンドPCゲーマー御用達のボードのようだ。

 こんな高いボードにはもとより縁はない。お値段は¥5000以下(さっきのサイトのランクでは5段階の下から2番目)、冷却ファンのない静かなボードが条件である。仕事の帰り、秋葉原に寄り、この前PC電源を買い替えたお馴染みのTwoTopで、適当なボードを物色する。ASUSのGeforce GT710を選んだ。¥4200余り。

 家に帰って久しぶりのPC拡張ボードの工作である。ビデオインターフェースのコネクター規格PCI Expressがえらく複雑になっていて悩ましい。バージョンが1から3まである上、2には枝番としてx1だのx16だのに分かれている。買ったきたビデオカード(2.0 x8)が現用のマザーに入るか心配だ。

 スロットに差してみると、何か接続されないピンの空きが多い。不安がよぎったが、とりあえずはきっちり入ったので試しに動かしてみた。BIOSは今のところ何もいじらない。新しいカードの方にビデオケーブルのコネクターをつけて電源を入れてみる。

 良かった。BIOS画面が映った。ビデオカードを自動認識してこちらを使うようだ。ドライバーを入れていないので、MicroSoftの汎用ドライバーで画像は荒いが、Win10までちゃんと動く。付属のDVDからビデオドライバーをインストールすると、正規の1920ドットの画面になった。やれやれ。

 さあ、目的のOpenGLのProcessingはどうだ。おおう、あっさり飛行機が出た。Arduinoとつないでいないので、飛行機はまだ正面を向いたまま動かないが、3Dの部分は問題なく動いているようだ。

 ビデオカードの効果は他にもあった。これまでMicroSoftの無料ゲームの中に、画像の乱れがあったり、やけに動きが遅かったりしたゲームがあったのだが、これらの不具合がすべて解消された。まあ、お金をかけたことは無駄ではなかった。

Processingで画像がグリグリ動く(12/7/2016)
 3Dが出たので、また暫くProcessingで遊ぶ。それこそティーポットやヨット、シリンダーなどの3D図形がマウスの操作で自由に動く。素晴らしい。

 すごく親切なProcessingのガイドがウェブで見つかった。それを夢中になって試す。いやいや、昔に比べると、良くインタプリターだけでこれだけ滑らかな動きが出来るものだと感心する。

 このサイトにも例の3D飛行機(MPUTeapot)の丁寧なインストール方法の紹介がある。この通り忠実に手順を踏めば簡単に動きそうだが、どうもこの前のスマホの無線操縦のように動いた後、何も出来なくなるような気がしてきた。

 もう少し基本からProcessingとArduinoを勉強した方が、のちのち良いような気がする。少し回り道でも、ひとつづつ段階を経て動作を確認していくことにした。ArduinoでMPU6050をドライブし、そのシリアル出力をPCのProcessingで受けて、画像ルーチンの入力にする過程を確認していこう。

 だいたい、MPU6050の6軸のセンサー値の意味も完全に理解しているわけではない。加速度センサーだけで測れるのは、飛行機で言えば、縦揺れ(ピッチング)と横揺れ(ローリング)だけで、縦軸(Z軸)の回転(ヨーイング)は、角速度センサー(ジャイロセンサー)で値を積分しないと測れないはずなのだが確証はない。ちょっとソースを覗いてみたけれど、全く手も足もでなかった。

 独自開発しようと意気込んでいたが簡単に白旗をあげた。このJeff Rowberg氏の開発したMPU6050関係のライブラリーは膨大で、MPU6050.cppなどは3000ステップを超える。I2Cのドライバーだけでも1000ステップ以上で、これを無償で公開されているのには頭が下がる。

ProcessingとArduinoの連携に目鼻がついた(12/10/2016)
 それでも、単にソースをコピーしてきて動かすことだけは避けたい。理由は、コピペだけでは身につかないProcessingとArduinoの技術を少しでも習得しておきたいからである。センサー、MPU6050のI2Cはライブラリを拝借するが、3Dの画像を出す部分は、せめて少しでも理屈を知っておきたい。

 作業を以下のように細かく分割して、ひとつづつ確認していくことにした。

(1)    Processingの学習  例のこのサイトがとても親切に教えてくれる。
(2)    Arduino スケッチとライブラリ構築の復習 これは上記のサイトのここが詳しい。 
(3)    Processingシリアル入出力のテスト
(4)    ProcessingとArduinoのシリアル連携 ここを参考にさせてもらった     
(5)    ArduinoとMPU6050の接続テスト
(6)    ProcessingとArduinoのハンドシェイクプロトコルの決定
(7)    ProcessingとArduinoの接続テスト
(8)    Processingの画像出力のスケッチ作成
(9)    MPU6050とProcessingのテスト

 現在は、(4)まで済んでいる。(5)が課題だ。ArduinoのシリアルコンソールにMPU6050の数値を出すスケッチはたくさんのサイトで紹介されている。これを試すことにする。

ステップ(5)MPU6050の接続テストまですんだ(12/12/2016)
 簡単に通過するはずだったのだが、意外に手間取った。原因はESP8266のI2Cの接続ピンの勘違いである。以前使ったピンアサインのメモに基づいて配線したのだが、MPU6050を認めないメッセージが出る。 

コピペさせてもらったソースに間違いはない(はずだ)。動かないとなると、途端に何も出来なくなるのがArduinoである。ピンの接触不良や、AD0ピンのプルダウンなどを疑うが問題はない。オシロなどを出して波形を見るまでもなく、何か基本的な間違いだと思うが、最初は以前自分で書いたメモを信じていたので途方に暮れた。

 気を取り直してESP8266の正式なピンアサインをネットで確かめる。あっあっあー、SDAピンが違うぞ。なぜだ。どうして間違ったところにメモしたのだ。正しい方にピンを差しなおしテストする。よーし、いいぞ。それらしい値が出てきた。

ステップ(6)(7)は既製のスケッチを流用(12/14/2016)
 次はArduinoのMPU6050のメッセージがProcessingのテキスト画面に出ることを確認する。これは問題なく動いた。ただし、Processingのテキスト画面はスクロールしないので単に、忙しく数字が変化するだけで、見映えはしない。

Procesingserial  Processingのテキスト画面をスクロールするように直したい気持ちが激しく盛り上がったのだが、やっとのことで自制する。ここで脱線するとまた戻れなくなる。我慢、我慢である。

 とりあえず、これでESP8266につないだMPU6050のデータは正しく、Processingに到着した。残るは最後の関門、画像表示である。既成のスケッチのソースを見て調べるが、そう難しいハンドシェイクはしていない。単にメッセージの頭に特定のキャラクター($)を入れて、それをトリガーに後続データを配分しているだけのようだ。

 難しいのはやはりセンサー値の加工である。色々ネットで調べる。クオータニオン(四元数、しげんすうと読む)という3Dでは常識らしい用語を発見して珍しく興奮し、暫く勉強する。いやあ、奥が深い。 

 これからMPU6050から出てきた数値を気安く加工しようと思っていたが、一筋縄で触れるものではなさそうだ。ここは素直に、既成のスケッチを使わせて貰うことにしよう。まずは動かすことが先決だ。

ステップ(8)(9)はMPUTeapot2のプロジェクトをそのまま使う(12/15/2016)
 人さまの動いたソースを借用するのだから、すんなり動くのかと思っていたが、そうは問屋が卸さなかった。参考にしたサイトは、すでに紹介したここである。

 このサイトは、以前、懸命に探し回ったリソースがちゃんとダウンロードできるようになっており、ここだけですべてが動く(実は大きな落とし穴があったのだが)。順調にMPUTeapot2のライブラリを入れてArduinoとProcessingを動かした。しかし、エラーメッセージが出るだけで機体は動かない。

 例のArduinoの弊害である。 スケッチソースは長大で、ちょっと目検したくらいでは何がおかしいのか見当はつかない。手も足も出ない状態だ。まあ、救いは、散々連携テストをしてきたので、ハードなどの問題はなく、動かない原因は現在入れたアプリケーションソフト(のはずだ)だ。

 ただ、エラーメッセージが奇妙である。つながったことを示すステートメントは出るが、何か(割り込み)を待つというステートメントのあと、タイムアウトが起きてリセットされ、これが延々と続く。

Initializing I2C devices...
Testing device connections...
MPU6050 connection successful

 

Send any character to begin DMP programming and demo:
Initializing DMP...
Enabling DMP...
Enabling interrupt detection (Arduino external interrupt 0)...
DMP ready! Waiting for first interrupt...

 

Soft WDT reset  (以下繰り返し)

 何らかの外部割込みをArduinoが待っているような感じだ。しかし、参考にしたサイトの結線図にはMPU6050の割り込みピンの接続はない。他のサイトを見るとMPU6050のINTピンが結線されている配線図や、動画が見受けられる。

 うーむ、どっちなんだろう。Arduino UNOでは割り込みピン#0に繋ぐという説明があるが、ESP8266には外部割込みピン#0はない(GPIO#0はあるが、これは制御用に使っている)。つまり繋ぐところが見当たらない。 Dsc00802

 こうなったら本当にMPU6050が割り込み付きで動いているのか(ソフトで設定できるようだ)、確かめるのが先決だ。もし、割り込みモードで動いているのなら、先の配線図が誤りということになる。

 オシロを持ち出して、MPU6050のINTピンを観測した。ピンポーン!当たりだった。I2Cのメッセージが出される前後に派手に割り込み信号が上がっているのを確認した。そうか、やはり必要なのだ。しかし、割り込み入力はESP8266のどこに入れたら良いのだ?

 恐る恐るArduinoのスケッチソースを調べ始める。良かった。見つかった。setup()ルーチンの中に、割り込みピンの定義をしているらしい以下のステートメントを発見した。

attachInterrupt(0, dmpDataReady, RISING);
mpuIntStatus = mpu.getIntStatus();

ふーむ、ここが0になっている。ESP8266のピン0は、ファーム書き込みの制御ピンのためプルアップされたままで入力には使えない。

やっとのことで飛行機が動いた(12/16/2016)

 ここを適当なピンに定義し直せば良いのはないか。希望の光が見えてきた。こいつをESP8266の適当なピンにアサインする。とりあえず2にしてみる。あせる手でジャンパーをMPU6050のINTピンの間に飛ばし、再ビルドする。

Ws000010_2  動く予感がする。まず、Processingを動かす。Arduinoはまだ電源を入れない。続いてArduino(ESP8266)の電源を入れる。これまではタイムアウトのメッセージが出るだけだったがどうだ。おおー、コンソールに字化けしたメッセージが出始めた。しかし依然として飛行機は動かない。

 割り込みジャンパーコードを抜き差ししているうち、突然メッセージが規則的なデータ列になった。同時に飛行機がズルッと動いた。何かのタイミングでMPU6050が暴走するようだ。ESP8266を立ち上げてから割り込みを有効にすると暴走しないことが多い。

Dsc00807  やった、やった。MPU6050を載せたミニブレッドボードを動かすと飛行機が姿勢を変える。反応はとても早い。やれやれビデオボードまで新調してやっとのことで、画像を動かすことに成功した。何度も電源を入れ直し動作を確認する。ささやかな達成感で胸が膨らむ。

 最後が少し手間取ったが(サイトの記述を信用しすぎた)、動いてしまえば何の問題もない。冷静になって考えれば、実にくだらない作業なのだが、仮説をたてて、ひとつづつ問題を解消し、それが思い通りになったときは、どんな小さなことでも嬉しい。これが電子工作の醍醐味である。

| | コメント (2) | トラックバック (0)

2016年11月28日 (月)

行き当たりばったりの電子工作(2)

 WiFiモジュールESP8266とスマホを組み合わせた玩具のクローラーの無線操縦は、ウェブのソースをそっくり頂戴して、すんなり動いた。しかし、Arduinoによる開発なので経験値はさっぱり上がらない。達成感にも欠けるし、先に進もうという意欲がどうも盛り上がらない。

 そうこうするうちに、前回のブログからもう一か月が経ってしまった。これまでの経験で、記事の間隔をこれ以上開けると内容をまとめるのに苦労する。で、まとまりに欠けるが、これまで書き貯めたメモを元にこれまでの活動をご報告する。相変わらずの行き当たりばったりでごめんなさい。

AtmelStudio7がすんなり入った(10/21/2016)
 ESP8266周りの制作が一段落したので、このあいだうまく行かなかったWin10でのAtmelStudio7のインストールを再度試みてみた。AtmelStudioの中核アプリVisualStudioは好きではないが、一旦動けばデバッグ機能が豊富なので動くことに越したことはない(まあ、AVRあたりのソース量ぐらいではあまりメリットはないが)。

 新しくインストーラーをダウンロードし直し、インストールをやってみた。これが何ということか、全く問題なくインストールが終了したのである。時間もそう長くかからなかった。理由はよくわからない。狐につままれた心境である。Ws000000 確かにWin10は1週間ほど前、更新が入った(不本意ながら)。AtmelStudioのインストーラーのバージョンも以前の、7.0-1006から7.0-1188に上がっている。しかし、どうも、これだけの理由だけとも思えない。動いたのは良いけれどあまり気分は良くない。

 実際にプロジェクトを入れて試してみた。正常に動いた。ただ、以前のAVRStudioのプロジェクトは認めてくれない。古いバージョンのImport/exportができるというのでやってみた。Importそのものは正常に終わったが、ビルドしてみるとmakefileでエラーになる。

 以前のAtmelStudio6のときも、こんなことがあったような記憶がある。ライブラリーのディレクトリ位置が、makefileの中身とずれているようだ。こういう統合環境のデバッグは意外に厄介である。ウェブ上で解決策を探るが、有力な情報は得られなかった。

 当面、includeするソースをカレントルート(main.cがあるところ)に置いておけば、正常にコンパイルできるはずなので、とりあえずそのままにしておくことにする。現在、AVRでの開発プロジェクトはない。

あっけなくDRV8835は稼働。こんな簡単で良いのか(10/29/2016)
 最近、秋月電子では、DRV8835というモータードライバーICが売られている。こいつはひとつだけで、2つのモーターの正逆転を個別に制御でき、容量も一回路あたり1.4Aまで流せる。以前試したBD6211あたりより容量が大きい。しかも今、作っているMP4212などよりはるかに安い(MP4212はひとつだけで¥380、DRV8835は2つ動かせて¥300)。

Dsc00767 モード0、1(2つのピンの1が正転、逆転になるか、一つのピンがON/OFF、もうひとつのピンが正転と逆転)の動作テストもする。これも全く問題なく動いた。

 このあいだ、秋月でMP4212のドライバーのフォトカプラーを買うときに、矛盾するけれどこいつも買ってしまったことは、前の記事ですでに紹介した。ただ、買っただけでテストはしていない。このままにしておくと部品箱の肥やしになってしまいそうなので、動かしておくことにした。

 動かすと言っても、ブレッドボードに刺して、ジャンパーコードで電池とモーターを接続するだけである。部品はいらない。とりあえずシングルモーターでテストする。何の問題もなくモーターは正転逆転した。少々回しっぱなしにしても、クローラーに使ったFA130くらいのモーターなら、チップはちょっと暖かくなる程度で楽勝である。

 MP4212で苦労した配線や、ダンパー抵抗も必要ない。あまりにも簡単に動きすぎて、気が抜ける。基板面積は恐らく1/10くらいだろう。Hブリッジを知らなくても、これくらいのモーターなら何も考える必要がない時代になったのだ。

 今まで秋月C基板の1/4近くを占めて作ったMP4212のモーター基板はいったい何だったのか。まあこれはもっと大きなモーター(数A)に使えるから良いものの、何かやるせなさを感じる。Arduinoと同じ展開だ。モーターの経験値は上がらないし、一旦動かなくなれば対処不能だ。

ジャイロセンサーMPU6050をどう料理するか(11/6/2016)
 スマホなどの普及で、安価なペリフェラルディバイスが大量に市場に出回っている。以前なら考えられない高性能なセンサーが破格の値段で買える時代になった。

 このMPU6050もそのひとつだ。4、5年前なら3軸の加速度センサーだけで数千円していたのが、こいつは、加速度、ジャイロあわせて6軸のセンサーなのに¥1000以下で手に入る。これもアマゾンで、ウェブの話題につられて、使うあてもないのにポチッとして買ってしまった。

 次のプロジェクトは、この部品箱の肥やしになっているジャイロセンサーMPU6050をESP8266に絡ませることにしよう。ウェブサイトには沢山の応用例を見ることが出来る。これはArduinoのおかげである。

 どうもI2Cで簡単に動くようだ。ただ、動かすだけでは面白くない。これまでに何度も懲りている。「入れました。動きました」で終わりたくない。もう少し、手の込んだことをやっておきたい。

 とはいえ、倒立一輪車や、ドローンなどの姿勢制御まで一気に進むのは簡単ではない。最近のスマホなどの動画をブレなく撮影できる手持ちジンバルなども食指をそそられるが、これもすぐに思いついて作れるレベルでもない。

 色々迷ったが、とにかくMPU6050を動かすことを当面の目的とし、結果を少し凝ることにした。単にコンソールに数字を出すだけでなく、PC上でポットや飛行機などの姿勢が変わるシステムを作りたい。Arduinoと連携して、PC上に動画を出すProcessingというアプリがあるらしい。

Processingのインストールなどで参考にしたサイトは、
   http://kimizuka.hatenablog.com/entry/2015/05/01/000000
である。Processingそのものの解説は以下が詳しい。
    http://robo.mydns.jp/Lecture/index.php?Processing

 しかし、構想ばかりが膨らんで、なかなか具体的な計画にならない。メモに構想(妄想)を書き散らすだけの日々が過ぎていく。

本日ESP8266で全くの徒労。最近こういうのが多いな(11/10/2015)

 このところ雑用で忙しかったが、久しぶりにまとまった時間が出来たので、そろそろ次のプロジェクトのハードのため、一つ残っていた予備のESP8266をピッチ変換基板に実装する工作をやった。

 これまでの2つのESP8266には何らかのファームが入っており、これをつぶすのに抵抗があったのと、何か手を動かしていないと落ち着かない性分になってしまったこともある。しかし、これが2日間の泥沼の作業になるとは予想してもいなかった。

 ピッチ変換基板は、Aitendo製で、milピッチのレイアウトがこれまでの一列づつの両側ではなく下に2段にまとまった基板だ。以前、この2種類を2つづつ4枚買ってあった。リセットSWやレギュレーターを配線したブレークアウト基板を共通にしたいため、ブレークアウト基板の方に2段目のソケットを追加して動くようにした。 Dsc00769

 よく考えれば、こんなことはあり得ない(ピンアサインが両側一列と下側2段と同じ)のだが、何を勘違いしたか、両側1列の片側をそっくり寄せてレイアウトして実装してしまったのである。これがまた情けないことに、すべての半田付けを終わって動作テストしたときに始めて気が付いた。

 テスターで調べたら、全くピンアサインが違っている。極く当たり前の話なのだが、これを今頃になって気が付くおのれの愚かさに暫し呆然となる。9本の配線のハンダ付け18か所が全く無駄になった。お馬鹿にもほどがある。

 まあ、ここで自暴自棄にならないところが、自分で自分を褒めてやりたいところだ(と必死に自分をかばう)。叫びたい自分を押し殺し、低温ハンダを持ち出して、ブレークアウト基板に増設したピンソケットをとりはずした。さらに普通のハンダを盛って、ハンダ吸い取り線で丁寧に掃除する。

Dsc00766 ここでさらに失敗をしたら破滅的なことになるので、慎重に作業を進める。やっと前の状態に戻った。このままでは腹の虫が収まらない。愚かな自分を慰めるために汎用基板の切片を取り出してピッチ変換基板のさらに変換基板を作り始めた。

 下段2段のピンアサインは、調べたら両側一列とは全く異なり、通常のピン順序を無視した無茶苦茶な配列で、どうもアートワークを簡単にするためらしい。ということで変換基板の配線はむしろ簡単に済んだ。ちょっと背が高くなったが、問題になるレベルではない。

Dsc00763 ほぼ2日かけて、新しいピッチ変換基板の変換基板が完成した。恐る恐るテストする。最初の誤接続でのESP8266の破損を心配したが問題なく動いた。一安心である。実にくだらない作業だったけれど、何とか事態を収拾した。不思議なことに、こんな後ろ向きの仕事なのに満足感がある。

Processing単体では問題なく動く(11/14/2016)
 MPU6050をテストするのにビジュアルなベンチを用意したいということで始まったProcessingだったが、インストールのあと、本題を忘れて、もっぱらProcessingの画像表示を楽しんでいる。

 当初、PCで動くProcessingは、外見がArduino IDEに似ているので、何かと思ったが、動かしてみれば単なるJAVAのインタープリターで、画像などを簡単に出せるものだということがわかった。Arduinoそのものとは直接の関係はない。

 「Processing 入門」などのキーワードで調べると、沢山のウェブサイトが見つかる。適当なものを選んで演習する。これは楽だ。実にあっけなくPC上で図形を加工しながら動画にできる。また年寄りの繰り言になるが、あのC言語でグラフィックLCDに円を描く関数を開発していたのは何だったのかという気分になる。

 Arduinoとの連携は、単に、Arduinoのデバッグ用のシリアルインターフェースを利用しているだけで、大層なしかけがあるわけではない(と思う)。 要するに、どちらかのトリガーで、あらかじめ決めたデータをArduinoが送り、それによってProcessingの画像が動くと考えれば良い。

 理屈がわかってしまうと、途端に先に進む意欲が低下する悪い癖が出て、開発のテンポが落ちる。適当な応用例がサイトで見つからないのだ。みんな沢山のライブラリーが必要なようで、やってみる気がなかなか起こらない(気位ばかりは高いが実はへたれである)。

筑波山に登ってきた(11/17/2016)
 そこで、電子工作以外の話題をひとつ。所長は関西の出身で、東京に出てきた京都の高校の同級生がここ15年近く健脚自慢のメンバーで定期的に山や街歩きをしている。今回は、筑波山に登るというので仲間に加えてもらった。Dsc00690

 ちょうど紅葉のシーズンなのでそれも楽しみだが、筑波山あたりは関西から東京に出てきた者にとっては全く盲点と言っていいくらい知らないところで、殆ど行く機会がない。しかもつくばエキスプレスという新しい鉄道に乗るのもはじめての経験で、何かわくわくする(所長は元鉄道おたくである)。Dsc00706 Dsc00732

 筑波山に登るといっても、ロープウエイとケーブルカーが整備されており、ほとんど登る行程なしに、男体山、女体山という2つの峰に行くことが出来る。それでも一週間も前に古い軽登山靴を物置から出して磨く。家族から、「まるで小学生の遠足ね」と冷やかされる。

Dsc00735 Dsc00746  朝8時に秋葉原に出る。ウイークデイなので長いエスカレーターは上りの通勤客の大群にはばまれ、地下の深いホームにたどりつくだけで一苦労である。終点のつくば駅からのバスは平日にもかかわらず乗客で満員だった。驚いたことに外国人のパーティが1/3近くおりバスの車内は外国語で溢れていた(彼らは大声ではしゃぐ)。 

Dsc00750  寒いとおどかされていたが、好天に恵まれて絶好の山日和である。男体山は、女体山より標高は7mも低いのに、山道は岩だらけの急坂で、かなり息が上がったが、女体山の方はアプローチが長いので簡単に頂上に出た。

 女体山からは霞ケ浦が一望できる。ただ、もやで残念ながら富士山は見ることはできなかった。それでも、帰りのロープウェイからの極彩色の紅葉は素晴らしかった。

PC連動ACコンセント自作に脱線する(11/21/2016)
 さらに、くだらない寄り道をしている。当研究所のメインPCには、PC電源連動タップが装備されており、メインの電源の入り切りで、周辺の機器(ディスプレイ、スキャナー、オーディオなど)も連動して作動するようになっているのだが、このタップの具合が最近おかしくなってきた。

 足元に置いてあるタップが足で動かされると、偶(たま)にだが、PC本体の電源が瞬断し、PCがリセットしてしまう。作動中のPCの突然の電源断は、Win10では少し丈夫になったようだが(セーフティスタートを強制されない)、この前の電源故障のときに懲りている。何とかしないといけない。

 この連動タップは10年以上経っているので買い替えても良いのだが、電子工作の経験を積んで来ると工作心が刺激されて、ただ買い替えるだけでは芸のない話である。で、脱線して、この連動コンセントを作り始めた。昔のPCならいざ知らず、今はUSB端子があるのでわざわざPC電源から5Vを引き出す必要もない。USBから5Vを出しリレーひとつで出来上がるはずだ。

Dsc00755

 ACインレット、アウトレットなどの工作だけである。プリンター電源のLAN制御のとき使った15Aを入り切りできるメカニカルリレーの予備があるが、せっかくだからもうひとつのAC制御、SSR(Solid State Relay シャープS108T02)を使ってみることにした。

Dsc00761  何の電子工作らしいところはない。単にケースの工作だけのようなものだけど久しぶりのコッピングソーやボール盤(んな大げさのものでなく単なるドリルスタンド)を持ち出しての工作は楽しかった。配線は、単に入力にLEDの制限抵抗を入れ、インレットとアウトレットのACの太い配線をはんだ付けしただけである。

 それでも慎重を期して、10項目に上る作業項目をメモに書き、赤ペンで消していく。SSRを普通のリレーと勘違いして、直接5Vを端子にかけ、ひとつ¥280もするSSRをお釈迦にしたことは秘密である。Dsc00759

 出来合いのヒートシンクをつけ、接合部分には本式に伝熱グリスを塗り、USBソケットを補強し(ソケット部は特に必要)、あれこれ3つ以上買ったケースの中から作りやすいケースを選び、半日かけてSSRによるPC連動スイッチが完成した。

 勇躍テストに入る。ACを扱うのでバラックで事前に動作テストは済んでいるが、PCで動かすのは初めてである。動いた! 念のためオシロでUSBが立ち上がる波形を見る。PCのUSB電源の立ち上がりは、起動スイッチと同時にUSB側も立ち上がるようで、パルス状ではなく徐々に(立ち上がり6ms程度)で5Vになるようだ(電源断も同じカーブ)。

 PCも無事立ち上がり、shutdownで電源も切れる...ん、切れない。えー、どうして?調べた結果、このPCのマザーは、待機時にWake Up LANなどのためにUSBがOFFにならないUSBコネクター部があるようで、USBプラグを待機時にOFFになるところを選んでOKとなった(マザーボード上のピンでOFFにすることもできるようだ)。

 とりあえず、工作の目的は果たした。少々足で電源をいじっても瞬断の心配はなくなった。きりの良い所なので、報告をここらで一段落する。

| | コメント (2) | トラックバック (0)

2016年10月20日 (木)

ESP8266とスマホでクローラーの無線操縦をためす

 メインPCの電源故障でWindows10をこわしてしまい、再構築したのだが有力なアプリが全滅してしまった。電子工作どころではない。ブログを書き込むだけの最小限のソフトを再インストールして、前回の記事は何とかアップしたが、その後も悪戦苦闘が続いた。

ロジックアナライザーのドライバーが入らない(9/15/2016)
 この間やっとWindows7からWindows10に切り替えた直後にこの事件である。ワードやエクセルは幸いインストールCDが手元にあったので簡単に戻り、ブログの記事のアップや会社の決算などは無事終わったが、電子工作の開発環境のアプリなどは、ショートカットが残っているだけで本体は殆ど影も形もない無残なありさまだ。

 アプリを使う機会のたび、少しづつ修復作業を続けた。大方のソフトは生き返ってきたが、この前も、てこずったZEROPLUSのロジアナLAP-C16128がうまく入らない。みんなWin10で苦労しているようだ。

 それでも最近は販売元が、win10をサポートする最新版を出しているので大丈夫だという情報を見つけた。しかし何度やっても、その公式インストーラーは変なエラーメッセージではねられる。例のエラーメッセージを直接Googleに喰わせる方式で探索すると、ウェブからは解決法が沢山でてきた。しかしどれを試してもうまくいかない。 Ws000008 何か汎用的な相性問題のようで、特定(ZEROPLUS)のアプリのウェブの記事は少ない。いくつかあるZEROPLUSの記事はみんなWin8時代のものばかりである。最初にWin10に入れる時も苦労している。このときは、何回か失敗したあと、いつのまにか動いた。どうも悪い予感がする。

悪戦苦闘。遂にLAP-C16128のドライバーインストール成功(9/20/2016)
 この1週間、喉に小骨が刺さったように気になっていた、ドライバーのインストールが、どういうはずみかうまく入った。何が原因だったのかはわからない。色々な方法を試すうち、偶然のようにうまく動いた。どうにも気分が悪い。

 製造元のWin10で動くというインストーラーでエラーが出る。このインストーラーはドライバーとアプリケーションを別々にインストールするようになっている。まずドライバーをインストールすると、途中で以下のメッセージが出てインストールが中断される。Win10のディバイスマネージャーのZEROPLUSのアイコンの下のLAP-Cドライバーには故障のマーク(!)がついたままだ。

 アプリケーションは最初の1回はなぜか問題なく入ったが、環境を元にもどすため、一度アンインストールして再度入れようとしたらその後は全く入らなくなった。エラーメッセージは、ドライバーもアプリも同じで以下のようなものである。
  1608: Unable to create InstallDriver instance.
  Return code -2147221021

このエラーメッセージを直接、Googleに放り込んで見ると、海外を含めてさまざまな解決法が出てくる。インストール時の共通のエラーのようで、沢山のソフトでの発生事例が報告されているようだ。どうしてこういうこと起きるのかという説明が不足しているので手探りである。

原因が何かがわからない。何かの拍子にwindowsのインストーラー関係のリンクがおかしくなるのだそうだ。こちらはWindows10を再インストールしているので、このあたりは大いに可能性がある。

 いくつかのサイトをまわるうち、以下の方法(Idriver.exeを独自に実行してから、インストーラーを動かす)をやると、少なくとも上記エラーは出ないで先に進むことがわかった。しかし、ドライバーは正常にインストールされない。

c:\Program Files\Common Files\InstallShield\Driver\1150\Intel 32>idriver

 レジストリーを綺麗にするユーティリティ(CCleaner)を見つけたので、これで不審なレジストリーを消去するが変わらない。仕事場のノートPCで試しにインストールしたら、何の問題もなくドライバーが入った。やはり、この自宅のPCの固有の問題であることは明らかだ。

 自宅にもどり再度挑戦する。こういうのは気になったら止められない性分である。CCleanerのメニューの中に、レジストリーだけでなく不要なプログラムを消す機能がある。これを見ていると、消したはずのLAP-Cのドライバーが存在していた。これは怪しい。とりあえず、それを消した。

 これが良かったのかもしれない。インストーラー始動前に、必ずこれ(Idriver.exeの実行)をやるようにし、さらに管理者権限で必ず、setup.exeを始動するようにした。何度目かのトライで何と、インストーラーが順調に動き、ディバイスマネージャーのアイコンから!マークが消えた!

 LAP-Cが問題なく動いた。ふー、やれやれ。決め手がなんであったのか確証がないのが心残りだが、とにかくこれで他のことに移れる。それにしてもOSの変更は大型機の時代からユーザーにとっては実に厄介なイベントである。

 昔は、性能が良くて安価な新しいハード機器を動かすために、渋々替えてきた(これはメーカーの戦略)。バージョンアップはそれなりにユーザーに利益をもたらしたのだが、今や、バージョンアップは、ユーザーにとって何の役にも立たない作業になり果てている。ベンダー、メーカーの都合に付き合わされるのは、もうそろそろ止めて貰いたい。

今度はAtmelStudioが入らない。これは少し静観(9/24/2016)

 次のAVRの開発環境、AtmelStudioは、結局、諦めた。これがなければAVRを動かせないわけではない。あの愚鈍な象のように重いVisual Studioは正直言って、あまり愉快な環境ではない。

 当研究所は、AtmelStudioで使っているのはエディターとビルドだけで、書き込みは、ChaNさん謹製の超軽いAVRSPである。コマンドプロンプトに一旦入れておけば、コマンドのリピートキー一発で何度でもビルドを繰り返せる。

 それでも一応は入れておこうと、最新版のAtmelStudioをダウンロードし、インストールを始めた。延々とVisualStudioをインストールし始める。そのうちインストーラーがハングアップしたようで、一時間近くほっておいても終わらなくなった。リソースマネージャーで見ると、どこかでループしていることは明らかだ。

 サイトの情報にも、いくつかハングアップの事例が報告されている。抜本的な解決策は見つかっていないようだ。まあ、AtmelStudioは必須の環境ではない。なければAVRtool Chainをインストールして裸でmakeしてもかまわない。これは少し静観することにする。

 そのうちWindows10に入っている無料のゲームソフトが思いのほか面白く、PCを立ち上げても、それに時間をとられて、まともなことをやる気力が盛り上がらなくなった。ゲームにはまって気が付いたら深夜という繰り返しの毎日で、電子工作そのものの動きが停滞してしまった。

久しぶりに秋葉原に行きモータードライバーなどを調達(9/30/2016)
 それでも、Win10のインストール騒ぎの最中、実は少しづつ続けていたハード工作がある。8月に面白がって買ったアームクローラーの工作である。モータードライバーをMP4212で作っていた。ブレッドボードでのテストでは問題なく動いた。

 クローラーにESP8266基板と、MP4212を2つ載せたモータドライバー基板を2階建てで取り付けるつもりで準備を進める。ブレッドボードから汎用基板に部品を移して配線する。久しぶりのはんだ付けを楽しむ。

Pa207520 クローラーについているモーター程度(マブチのFA-130)でMP4212を使うのは少し勿体ないが、以前、1Aまで流せるというBD6211というモータードライバーをこのモーターに使っておかしくしてしまったことがある。モーターが止まるほどの過負荷をかけると、こんな小さいモーターでも1A以上が流れこわれてしまったらしい。用心に越したことはない。

 このサイトの情報を参考に、最終的には、ESP8266とスマホでラジコン化するのが当面の目的だ。片側のMP4212の実装が済んだので、実際にモーターの電源を利用してHブリッジの動作を確認する。電源は、ニッケル水素電池2つか、800mAhのリチウム電池である。

 ところがMP4212のモータードライバーの動きがどうもおかしい。4Vのリチウム電池では何か瞬間的に貫通電流が流れるらしく、瞬断してうまく回らない(動くときもある)。回路的に悪いのか。あのフォトカプラーを直接論理回路化した回路が悪いのか。

 FETの動作原理を復習する。どうも、直接、ロジックだけであのHブリッジを動かすのは無理な感じがしてきた。あのままでは、FETのゲートに電荷が溜り誤動作するような。要するに単なるスイッチではドライブが出来ない感じがする。

 念のため、オリジナルが正しく動くどうか、フォトカプラー(TLP250)を試してみたくなった。久しぶりに秋葉原の秋月にでかける。行ったついでに、1.4Aまで動くというデュアルモータードライバーモジュールDRV8835(¥300)を買った。これはひとつで2つのモーターを動かせる。さっきのフォトカプラーの回路ならフォトカプラーだけで4つ(¥150X4=¥600)もいるところでこちらは断然お得だ。

 しかし、MP4212のモータードライバーの片側も実装し、電源の接続ピンを新しくしたら、Hブリッジは全くトラブルなく快調に動いた。MP4212モータードライバーの不可思議な動きは、どうもピンヘッダーの接触不良の疑いが濃厚だ。今、別個にテストしているが何の問題もない。

ESP8266の復習を始める。フラッシュファイルシステムも戻った(10/4/2016)    
 ESP8266をおさらいする。まずは、棚からとりだしたESP8266モジュールの埃をはらい、動作の確認をする。これまでやった実験(フラッシュファイルシステム、RTC、ATコマンドファームの書き戻しなど)を次々に追試した。

 フラッシュファイルシステムが動かなかったが、これはATコマンドモードに戻したとき、ファイル本体とディレクトリのリンクが切れてしまうらしく、フラッシュファイルをもう一度書き込んだらOKになった。こうしたリハビリでESP8266周りの視界が広がり、最終目的(スマホでラジコン)開発の体制が整ってきた。Dsc00584 最終目的は、ESP8266はソフトAPモードにして、peer to peerでスマホとつなぎ、ラジコン化することだ。このウェブ記事のソースをそのまま借用することにしている。このスケッチのスマホのボタンで、クローラーの前後進、左右移動が、ボタンのタップで出来るはずだ。

 まずは、ATコマンドでソフトAPモードにする。これは問題ない。簡単にスマホにサイト名が出た。勢いに乗って参考サイトのコマンドを入れて、スマホと接続。ESP8266のコンソールから接続を知らせるメッセージが出た。しかし、このあとのHTMLシーケンスはないので何もできない。これはここまで。

ESP8266とスマホでクローラーの無線操縦ができた(10/13/2016)
 人様のソフトをそっくりいただいて、ESP8266をAPモードにし、スマホとpeer to peerで結んだリモコンで、めでたく、このあいだ作ったアームクローラーが動いた。スマホのタップによる動作指示は、やはり少し遅れるので本格的な操縦というより「動きます」というのを確認できる程度と考えて良い。スマホのタッチスクリーンの操作をこれからマスターしていかないと実用にはならない。Dsc00588

 電源は、モーターをニッケル水素の乾電池2つ(2.8V)、ESP8266の方はリチウム電池(3.7V)に独立させた。ESP8266基板に、低ドロップレギュレーター(AMS1117)を実装して3.3Vにしている。

 このニッケル水素乾電池のフォルダーをシャーシーに固定するのにえらい時間がかかった。始めはフォルダーをかっこ良くはめ込み止めにしようと、アクリル曲げ機まで動員して、アクリル加工をしようと試みたのだが、意外に難しく(薄いアクリル板は曲げるとそこが極度に弱くなる)、バッテリーフォルダーの素材が瞬間接着剤を受け付けないタイプ(ポリスチロールか)で接着はあきらめた。Dsc00590

 かわりにリアフェンダー(アームクローラーは角度をつけて動くので)に、アクリル小片でバッテリーフォルダーをはさみ、ねじ止めした方法が、簡略だがとても具合よくバッテリーを固定することが出来た。始めから奇をてらわずこうしておけば良かったのだ。

 今回もソフトウエアはAruduinoのスケッチをそっくり拝借したので、全く経験値は上がらなかった。まあ、一旦決めたこと「ESP8266とスマホでラジコン」という命題を何とか挫折なく最後までやりとげたことが救いといえば救いだ。

 次のテーマが問題だ。折角買ったDRV8835はまだ動かせていない。いまだに、あの「ときめき」が電子工作では復活していない。当研究所の活動にはまだまだ暗雲が垂れ込めている。

また新東名を走ってきた(10/16/2016)
 ここで電子工作以外の話題をひとつご報告。車で関西に法事と墓参りのため、帰省した。3年近く前、亡くなった長姉の見舞いに来て以来の長距離ドライブである。例の新東名(第二東名から名を替えたらしい)は以前に比べると車の量が増えたが相変わらず快適だ。Dsc00632

 しかし、トンネルなどの一部は十分な3車線の広さがあるのに、速度超過を心配したのか、路側帯を広くしてわざと2車線にしている。確かに次元を超えたスピードが出るので何とか速度を落とさせようという魂胆なのだろうが、せっかくの機能を台無しにする、いかにも日本の行政らしい「余計なお世話」である。

Dsc00648 お墓は大阪(豊中)にあるが、法事は京都で行われた。いつも、京都では錦市場でおみやげを買って帰るだけだが、今回は珍しく市内の行事を調べて銀閣寺で特別公開があるというので、何十年ぶりかに東山の銀閣(慈照寺)に足を延ばした。

 特別公開は、足利義政の持仏堂で書院造りの原点といわれる東求堂(とうぐどう)の内部と与謝蕪村などの襖絵である。「写真はとるな。角のある持ち物をふりまわすな。壁にもたれるな」とやけにうるさい。まあ、国宝なのだから仕方あるまい。

Dsc00643

 ちょうど雨上がりで、庭園の緑がとても美しかった。義政は西の苔寺(西芳寺)を愛していたらしく、豊富に苔が各所に使われて庭を引き立てている。有名な砂の山や、砂の海原は江戸時代の考案らしく、義政本人の趣向には見えない。

 錦市場で、いつもの、三木鶏卵の卵焼き、打田の漬物、丹波の栗などをしこたま買い込んで、機嫌よく、秋の京都をあとにした。それにしても外国人の数はすさまじい。初日のホテル(ノク京都)は外資系もあるが、90%は外国人で、日本人の数に入れていた隣の夫婦連れは、近くを通ったら日本語を喋っていなかった。

Dsc00641 前回と違い、帰りの東名は幸い大きな渋滞にもあわず(海老名で30分くらいの事故渋滞だけ)、5時間余りで東京に戻ってきた。昔、正月一日に、がらがらの東名をしゃかりきに飛ばした私のコースレコード5時間ちょうどに迫る記録だ(もっともそのときの距離は506キロ、今は480キロ)。

| | コメント (2) | トラックバック (0)

2016年9月11日 (日)

電子工作は復活できるか。行き当たりばったりの工作

 また更新が遅れている。とうとう8月は記事を一本も出せなかった。このブログの大きなテーマである電子工作をろくにやっていないので書くことがない。当然と言えば当然なのだが、電子工作を始めてもう10年近く、ブログも8年を経過し、このブログは自分の備忘録として欠かせない存在になっている(物忘れがひどいのでこれが頼り)。

 大げさに言えばこれが人生の一部になってしまったような感じで、何か書いていかないと、自らの存在を否定してしまうような恐怖感を覚えるほどだ。ということで、読者の方には甚だ申し訳ないが、今回も脈絡のない行き当たりばったりの電子工作の記事を読んでいただくことになる。申し訳ない。

赤外線学習リモコンはとりあえず撤退。復旧作業に入る(8/1/2016)
 Windows10のインストールにかまっていたら、あっというまに8月になっていた。前回はやっとのことでブログ記事を上げたが、電子工作の部分は極くわずかで、大部分は、同窓会と病気とPCの話ばかりである。工作机のブレッドボード上の学習赤外線リモコンの配線は、ロジアナのプローブで山盛りのように盛り上がったままである。

 とにかく、先に進む意欲が生まれない。迷路に入ってしまったこともある。テスト対象にしている赤外線リモコンボリューム(自作)の方が頻々と暴走を繰り返すので、本題の学習リモコンのトラブル解明が進まないのだ。

 ロジアナで見る限り、ちょっと見たところでは、正しいビット配列を指定の時間間隔で出しているように見える(リーダービットなど)。しかし受け側の赤外線リモコンボリュームは全く反応しない。手持ちの市販リモコン送信機では苦も無く反応するのに、どうにも気分が悪い。

Ws000006 このリモコンボリュームは、Tiny2313を使っているので、SRAMが128バイトしかない。必要なデータを表示しようと思うと、すぐスタックがオーバフローし、リセットされてしまう。こいつのデバッグをしていると何かとても無駄なことをやっているような気がして気分が盛り上がらない。

 別のテストベンチを作るか、記録するデータを長さのデータではなく、一度デコードする方式に換えれば、先に進むのだろうが、これらを変えるのは、すべてかなりの手間(恐らく今のTiny861では無理)になるので、さらにやる気が起こらない。

 暫く放(ほう)ってあったが、このまま立ち枯れ状態になっているのも始末が悪い。とにかく、このテーマからは撤退することにした。ロジアナのプローブを片付けて机を整理する。テストのため、いじっておかしくなった(時々止まる)リモコン電子ボリュームの復帰から始める。

Dsc00525

 現在この電子ボリュームは使っていないとはいえ、元通りにはしておきたい。ソースに入れたテストステートメントをすべて抜き出して再コンパイルする。暴走はしなくなった。しかしこのボリュームの売りである電源を切る前のボリュームの位置を再現しなくなった。

 このしかけは、リセットICを使って、電源が切れる寸前に制御信号を入れ、EEPROMにその時の音量レベルを記録することで実現している。ソースコードを調べているうちに、リセットICの制御ピンとUART受信ピンが被っていることを発見した。テストのためのUART受信を生かしたままになっていた。

 やれやれ年は取るものではない。これまでのソースやブログの記事に明記していなかったので、このことをすっかり忘れていた。UART受信を無効にし、これで電子ボリュームは完全復活した。組み立てなおして所定のオーディオラックの位置に戻す。

アームクローラーの玩具を買ってみる(8/10/2016)
 simさんのブログに載っていた、キャタピラーが2重になった不整地走行可能なアームクローラーの玩具が急に欲しくなり、いつのまにかアマゾンの購入サイトでボタンを押してしまっていた。

 何かの当てがあるわけでもない。どれくらいの不整地まで踏破できるのか試してみたくなったような気がするが、これは衝動買いを正当化する言い訳で、要するに気分が乗っただけである。電子工作も本来はこういう「ときめき」から始めるべきで、無理にやるのは無駄が多い。自戒である。

 キットは、単に直進するだけの機能で価格は¥2000しない。しかし¥2000以下だと送料がかかる。良くしたもので、2モーターのリモコン対応の部品をつけると送料無料の金額になるセット販売の案内がある。躊躇なくこちらを選ぶ。昔はこういうのに抵抗があったが、今は全くない。

Dsc00569 到着したタミヤのプラモデル風のクローラーの組み立てに熱中する。作りながら、これをこれまでのリモコン用の機器をどう組み合わせるかあれこれ考える。もうXbeeは良いだろう。ESP8266かIntel Edisonか、それともRaspberry Pi(以下、Raspi)か。

 いずれにしても手を動かしていると、スランプを忘れる。2モーターのモーターアセンブリーも一緒に組み立てる。組み立てたあと、シャフトが違うことに気が付き、もういちどギヤボックスの組み立てをやりなおし。説明書が微妙に不親切だ。

 モーターの配線に2か月振りにハンダごてに火を入れ、雑音抑止のコンデンサーとリードをハンダ付けする。モーターを回してみる。問題なく両方動いた。とりあえずこれでメカの部分は完成である。

IGZOの液晶パネルを買ってしまう(8/18/2016)
  そのうち、オリンピックが始まった。予想外の選手がメダルを獲ったりして、日本が盛り上がっている。いつものようにメディアが金属回収業者のように「メダル、メダル」と叫び、例年このプレッシャーに負ける選手が続出するのだが、今年は続々と表彰台にあがる日本人選手の笑顔が何度も画面に映る。

 吉田沙保里の4連覇は実現しなかった。五輪主将はメダルをとれないというジンクスがあるらしい。しかし銀メダルなら大威張りではないか。若手が台頭してきたのだから先輩は喜ぶべきで、表彰式まで泣きじゃくるのは少々大人げない感じがした(主将なんだから)。

 クローラーの組み立ては終わったが、これをリモコンにするための実装の良いアイデアが浮かばずそのままになっている。そのうち、ウェブをみているうち別のものに関心が移ってしまった。

Dsc00553_2 これもどなたかのブログで、Raspiの液晶パネルの話が出て、以前から気になっていたのだが、急に再燃して欲しくなってしまった。夏休みで10日近く休んでいた事務所に出た帰り、久しぶり(2か月以上)に、秋葉原を訪れる。秋月電子はいつものようにごったがえしていた。

 この盛況を見る限り、電子工作が下火になった感じはしない。Raspi用の液晶パネルは前と同じ、店の前の平積みのカウンターに無造作に積み上げられていた。ついでに500万画素もある専用カメラなども購入。珍しく2万円近い出費である。

IGZOパネルは最初は気難しかった(8/20/2016)
 秋月には、2種類のRaspi用のパネルが売り出されている。ひとつは、純正のタッチパネルがつき、専用のインターフェースにつける、800x480のもの、もうひとつは、SHARP製の、何と1920x1200のパネル。どちらも7インチだが、SHARPのIGZOパネルは、HDMIインターフェースである。Dsc00551

 値段はどちらも1万円を超すが、どちらにするか迷うところだ。結局、汎用性、性能対価格比の優るIGZOを買うことにした。7インチで1920ドットである。フレキケーブルが微妙だというので、専用のスタンドも一緒に購入した(¥2000)。

 帰宅して、液晶パネルを取り出す。まず驚くのがその薄さである。スタンドのアクリル板の保護シートを、傷をつけないよう慎重にはがし、パネルを挟み込む。2枚ある基板を付属の取り付けポストを使って背面のアクリル板に固定する。

Dsc00552_2  ここまでは、それほど難しい作業ではないが、一番難儀したのが、薄紙のように薄いFP(フレキ)ケーブルの接続である。不安定な状態でパネルを持ち、基板側のソケットにケーブルを接続しなければならない。

 特に電源側は、4ピンしかなく、髪のように細い。ブログにも、この4ピンFPケーブルがコネクターに刺さらず泣いたという話が紹介されている(ハッチの上がる方向が逆)。こちらも何回か予行演習をしたあと何とかつながった。

P9057517 しかし、基板とFPケーブルの周りは裸で、このままでは何かの拍子に、ものが当たって、ケーブルが切れる心配が十分ある。色々考えた挙句、コネクター周りにプラスチックのガードを2面つけた。それにしてもこの細かさは尋常ではない。

config.txtはRaspiのBIOSだった(8/21/2016)
 久しぶりにRaspi3に火を入れる。順調にシステムは立ち上がったが、液晶は真っ暗のままだ。電源はシステムが立ち上がる前に入れておかないといけないとか、画面が出ているときに不意に電源を切ると液晶ピクセルが壊れるとか脅されている。えらく気難しい。

 何度か説明書を読み込み、指定通りのconfig.txtをtelnetを使って作ったが、画面は出てこない。config.txtを戻して、これまでのPCのHDMIケーブルを差し替えると、問題なくRaspiのデスクトップが出るので、犯人はこのconfig.txtの設定か、液晶パネルそのものである。

 心配なので、FPケーブルのコネクターの差し込みをやりなおす。念のため、実体顕微鏡を持ち出して、コネクター周りを視認する。大丈夫なようだ。とするとconfig.txtの設定誤りということになる。

 調べてみると、config.txtとは、RaspiのBIOSにあたる部分で、ハードに密着しており、少しでも違うとおかしくなることは十分考えられる。試しに、このパネル用のconfig.txtで立ち上げると既存のPCディスプレイでも真っ暗になる。

 もういちど説明書の、config.txtの記述と、実際のコーディングとの違いを調べ始めた。その結果、2か所も間違っていた。最初の、hdmi_pixel_freq_limit=200000000の0がひとつ多すぎるところと、frame_buffer_height=1200をmaxと同じ1920にしてしまっていた。Dsc00558

 これらを直して、祈る気持ちで再度、raspiの電源を入れる。おーし、液晶パネルのバックライトが明るく点灯し、画面右上隅にアイコンが現れた。とみるまに立ち上げのメッセージが矢のように流れ始める。間もなく、順調にデスクトップが現れた。いやあ小さい、しかし実に鮮明な画像だ。

いやあそれにしても小さい。すごい(8/23/2016)

 IGZOの7インチデイスプレイがやっとのことで動いた。嬉しくて記念撮影をする。HDMIケーブルが大きすぎてパネルが動く。もっと細いケーブルを買ってこなくては。マウスポインターは糸くずのように微小で、文字は殆ど読むことが出来ない。残念ながら画像や動画ビュワー以外の実用性には欠けるようだ。Dsc00555

 アマゾンでHDMIのスリムケーブルを入手した。届いたケーブルを見て吃驚(びっくり)する。こんな細いので大丈夫? 無事つながることを確認した。面白いので以前使っていたケーブルと比較写真。これまでのケーブルではケーブルを動かすと本体が動いた。

 デスクトップ画面の実用化のため、画面拡大の方法を模索する。調べた結果、Ubuntuにkmagという画面拡大のアプリがあり、これが一番使いやすそうである。しかし、raspiのOSは同じdebian系統だが、ubuntuではない。ウェブを調べたが、確証はとれない。

Dsc00566  だめもとで、試しにraspiで apt-get install kmagをやってみたら、感心にもインストールを始めた。無事、エラーもなくインストールされたので、勢いでkmagをターミナル端末から直接入力した。なんと、無事にubuntuのkmagがraspberryPiでも動いた。

 今のところ、kmagを立ち上げるところだけが細かいが、そのあとはそう苦労せずにターミナルからのコマンド投入が行えるようになった。少しは実用に近づいたかもしれない。

MP4212の回路に大きな誤解があった。モータードライバーを作る(8/15/2016)
 ウェブで刺激されて買った、キャタピラーが2重になって荒れ地を走行できるクローラーの玩具の話に戻る。モーターが動くところまでで止まってて、次はこれを何でドライブするかである。モータードライバーは、MP4212にしようと思っている。

 世間には数限りないモータードライバーが売られているが、へそ曲がりの所長としては、出来合いのモータードライバーを使うのには抵抗がある。どうせなら、裸に近い形から作りたい。といっても「へたれ」なので、単体のFETやパワーTRから組みこむのは疲れる。

 そこで、MP4212だ。このFETモジュールICはとうに生産停止になっているが、まだ在庫があるようで、入手性はそう悪くない(千石やサトー電気で買える¥300程度)。モーターの正逆転回路、HブリッジをひとつのICで実現できるようコンプリメンタリーなFET(N-MOSとP-MOS)が2つづつ入っている。

 このFETモジュールは、以前、自作サーボモーターの時使って、回路図まで公開している。しかし、今度のクローラーで調べているうち、もっと安全で簡便な回路があることがわかった。前の回路は、間違っているわけではないが、使い方によっては、ICを燃やす危険がある。

 前の回路は、正転と逆転のそれぞれの制御信号があるが、これを両方Highにすれば、貫通電流が流れる危険があるのだ。ソフトでそうならない保証はない。今度見つけた回路は、正転、逆転の2つの制御信号が同時にHighになっても、モーター部が短絡するだけで(ブレーキがかかる)、電源側は短絡しない。しかも前は必要だったドライバーのトランジスターが不要である。

 この回路図をみつけたので、急に自分も作りたくなった。オリジナルは、ドライバーにフォトカプラーを使っているが、同じVccを使うならこれもいらない。ブレッドボードで手早く作り、動くことを確認した。

リアルタイマークロック(DS3231)の月差は1秒以下(8/27/2016)
 クローラー工作の続きで、ESP8266のPWDでモーターを動かそうと、棚に放置していたESP8266を引っ張り出した。このブレッドボードには、I2C機器のテストに使ったRTC(DS3231)が付けたままになっている。Dsc003860002 ヘルスチェックのつもりで通電し、今年の4月1日に接続したままの時計の計測をしてみた。このRTCは以前のブログ記事に、月差が2秒以内と紹介した記憶がある。

 今測れば、4か月、149日間の誤差を測ることになる。シリアルポートを生かし、時計の表示を見る。いやあ、これは驚いた、遅れが3秒以内だ。30.4日を1ヵ月として、3X30.4/149 は、月差で0.61秒である。置いてあったところが地下室で温度の変化が少ない所とはいえ、信じられない精度だ。

いやあひどい目にあった。PC突然死亡。結局、電源不良だった(9/8/2016)
 メインのPCが急に動かなくなって、この4日間、これにかかりきりだった。おかげで遅れたブログのアップがさらに遅れて気の抜けたビールのようになってしまった。

 事件は、突然に起きた。いつものようにPCの起動ボタンを押したが、反応がない。電源コンセントがはずれているのかと確かめたが、何も変わっていない。起動ボタンを押して電源ランプが一瞬点くが、すぐに消えてしまうことがわかった。CPUのファンさえ回らない。

 思い当たることは何もない。突然、メインのPCが動かなくなってしばし呆然となる。あちこちいじっているうち、BIOSの画面までは出るようになった。どうもACプラグの差し込みがゆるかったかのような感じである。しかし、Windowsの立ち上げが始まると必ず途中で電源が切れる。

一旦切れたあとは、リセットボタンも、起動ボタンの押下の反応もなくなるので、最初はてっきりマザーボードが、ご臨終になったものだと考えた(これが重大な誤りだったことはあとでわかったのだが、この時点ではマザーだとばかり思っていた)。

 マザーのトラブルは交換するしかない。あわてて、サブのノートPCを使ってウェブで、ASUSの同じ機種のマザーを探す。5年以上も前のマシンなので、もうCPUのチップセットLG755の新品は売っていない。中古のこのマザーの後継機種らしいものを見つけて注文した。

 3日で届いた。いや助かった。すぐ組み立てにとりかかる。久しぶりの自作パソコンの工作である。いくつか切り傷を作りながら(安物のケースは特に危険)、これまでのマザーを取り外し、届いたマザーに組み替える。最初、メモリーだけ積み替えて苦笑い。CPUを忘れていた。

 さあ、組みあがった。電源を入れる。何と、何と、前と同じ症状で、電源が途中で切れた。うはあ、これは大変だ。これはマザーではなく、電源不良の可能性が高い。リセットボタンが効かなかったのでマザーとばかり思っていたが、ウェブによるとこれは電源不良の特徴なのだそうだ。

 時間が惜しいので、直接、秋葉に買いに行くことにした。車を飛ばし、近くのコインパークに車を止め、パソコンショップをはしごする。いわゆるDOS/V通りは、以前と様変わりしてパソコンショップはもう数えるほどしかなかった。

 昔懐かしいTwoTopがまだやっていたので、ここで適当なATX電源(玄人志向の500W)を買い込んで自宅へトンボ帰りする。電源の交換は、マザーほど大変ではない。組み替えて、本当に祈る気持ちで起動ボタンを押す。おお、動いた。OSの立ち上げまで行った。

 しかし、立ち上げの途中で突然電源が切れることを何度も繰り返したため、Windows10は、再起不能の状態で、システムの再構成を要求してきた。仕方がない。それに従うことにする。1時間近くかかって再構成は終了した。電源が切れることはなくなったが、システムの中身は散々な状態になっていた。

 ほとんどのアプリケーションが削除されてしまっている。このあと何とかWordなどを再インストールして、このブログを書ける状態までになった。それでも数多くのアプリが死んだままだ。とりあえず今の状況を報告して、今回の記事を終わることとする。

| | コメント (2) | トラックバック (0)

2016年7月21日 (木)

赤外線学習リモコンはデータ再現で挫折したまま進まず

 キャプチャーした赤外線のデータ列をロジアナで確認し、学習リモコンの工作は峠を越したと考えたのは甘かった。あれ以来すっかり電子工作への意欲が湧かなくなって、気が付けばもう2か月近くが経とうとしている。

 深刻なスランプである。何とか先に進めようと、作業の前にこれからの作業項目をメモに列挙し、気力を奮い立たせてPCに向かう。開発環境を立ち上げ、メモの手順に従って開発する。

Dsc00524

 これまでなら、一旦作業が流れに乗ると自然に手が先に進んでいくものなのだが、最近は少し結果が出ると、何故かそれ以上のやる気を失い、ほかのことに気をとられてしまう。これが愚にもつかないゲームや、ウェブサーフィンだったりする。困ったものだ。

 責任を転嫁する気持ちは毛頭ないが、どうも最近は電子工作そのものも前に比べると盛り上がりに欠けているように感じる。所長が始めた8年前は、活発な活動をしている掲示板やブログサイトが沢山あって、大いに参考にさせてもらったものだ。

 ところが、現在はみな低調で閑古鳥が鳴いている掲示板が多い。電子工作関連の雑誌も、以前はFPGAや32ビットCPUの基板が盛んに付録につけられて、みんなでわくわくしながら動かしていたものだが、最近はこういう話も聞かない。

 実は、所長の電子工作が低調なのは理由があって、5月の末、体調を崩し病院通いをしていたせいもある。工作をする気持ちのゆとりがなく、一時は、狭心症の疑いまでかけられたのだが、幸い誤診だったようで、今は全く症状はない。

 この話はあとですることにして、趣味の電子工作全体が低調な原因には思い当たる節がある。個人的で一方的な仮説にすぎないが、この低調さは最近のArduinoの普及と大きな関わりがあるように思える。

Arduinoの功罪
 商売の邪魔をする気は全然ないのだが、Arduinoで電子工作の世界は大きく変わった。しかし反面、つまらなくなった。まずメリットの方はご存知のように次のようなものだ。

ハードウエアのI/Oインターフェースが統一されているので、初心者は、面倒なI/Oピンの初期化に気を遣わないですむ。誤配線や誤設定をする恐れが少ない。最近は機種を超えて共通なのでハードウエア設定はさらに楽になり失敗はほとんどなくなった。

各種のペリフェラル(UARTやI2C、SPI)の設定も、スケッチライブラリーが全部用意されているので、プログラムを書くのが大変楽になった。ほぼデータの中身だけを心配すればよい。

各種のシールド(増設するディバイス)とそのライブラリーが用意されているので、簡単に高度な機能を実現できる。

 経費的には、はるかに高額になったとはいえ、便利になったことは間違いない。所長もESP8266では大いに恩恵を受けた。その反面、この道はあらゆるテクノロジーの世界がこれまでに経験したことと全く同じ道である。

Ws000003

 便利になればなるほど、細部を知らないでも先に進めるので、技術を身につける機会を奪ってしまう。つまり情報が隠蔽化され、ブラックボックスになっていけば、必然として次の弊害が起きる。

組み立てて、それで動けば問題ないが、一旦、動かないとなると、どこから手を付けて良いのか全く見当がつかなくなる。故障や、ちょっとした不具合にも対応することが出来ない。

作った製品の改善や、改良は殆ど出来ない。製品の応用もできなくなる。いわゆる技術力は身につかない。

それでもこうした複雑になったしかけを短時間に理解し、その応用ができる技術者は一部に存在する。しかし以前にも増してその数は限られる。これにより技術者間の格差はさらに広がる。大多数の一般の人は作って動かしただけで終わってしまう。

 最近の電化製品は、一旦故障が起きると一般の電気店では殆ど修理不能で、自動車もそうだ。ボンネットの中は完全なブラックボックスで点火プラグひとつ素人が交換できない。その製品を使うことが目的ならそれでも良いが、電子工作というのは作る過程を楽しむ趣味でもある。

 従って、電子工作にすぐ飽きる人が増える。ちょっと見は楽そうなので一時的に参入者は増えるかもしれない。しかし長い目で見ていると、参加人口はどんどん減っていくという寸法である。これまで繰り返されてきた、知らずに自分で自分の首を絞めているという業界の悲劇がここでも起きているように思う。

サードオピニオンまで聞いて何とか安心(6/23/2016)
 それはさておき所長の病気の話である。ある朝、コーヒーを淹れようとミネラルウオーターの2リッターペットボトルを持って機嫌よく階段を上がっているとき、突然、息切れがして胸が苦しくなりその場に座り込んだ。息切れは間もなく解消したが動悸がおさまらず、その後はちょっとした運動をするだけで、すぐ息切れがする。

 近くの医院で心電図や血液検査をしてもらうが、特に異常はない。最初は熱中症だと言われた。しかし気温が30 度以下の室内では考えにくい。頻脈は心理的なことでも起きるというので最初にもらった薬は何と精神安定剤だった。

 数日経って息切れはだいぶ良くなったとはいえ、洗車をしただけで息が上がる。近所の医院の医者は大病院で精密検査をすることを勧めてくれた。最初に行った大病院では、心臓エコーなどの検査を受けた。しかし、ここでも特に異常なしと言われる。症状は殆ど改善していたが、原因がわからないのは不安だ。

 さらにまた別の大病院に行く。ここの医者は症状を聞いて、「これは狭心症しか考えられない」と宣言する。なんだ、やっぱり狭心症なのか、そういえば血液が高脂質だと注意されている。ニトロ舌下錠までもらって覚悟を決める。ただ念のため、造影剤を使った心臓CTスキャンを撮ることになった。

 近くの医者に報告する。「すっかり病人にされちゃったのね」と笑う。このとき、こちらは狭心症を見抜けなかったこれまで2人の医者は藪(やぶ)だと思っていたので内心は穏やかではない。

 心臓CTスキャンの結果が出た。見せられた自分の心臓の血管はプラモデルでつくったようにつるつるで動脈硬化のかけらもなかった。医者はあっさり狭心症の見立てを取り下げた。で、同じときに撮ったCTスキャンの肺臓にいくつか血栓のあとがみられるので、肺塞栓症、そう、いま流行のエコノミークラス症候群だろうということに落ち着いた。

 そうか、前の2人の医者は藪ではなかったのだ。医者の見立てというのは恐ろしい。CTスキャンがなければ、ずっと狭心症の薬を飲まされているところだった。1週間飲んでいた薬が、動脈から静脈に急に変わって、薬局の薬剤師が笑っていた。

 とはいえ狭心症より、肺塞栓症の方が始末が悪い。血栓が出来る要因がはっきりしないからだ(2月に海外旅行にでかけているが3か月も前の話)。ただ一過性なので今は全く問題ないというのが有り難い。それに心臓が思ったよりきれいだったので安心している。

2年ぶりの小学校の同窓会。今度は世界遺産の宇治上神社と平等院(5/20/2016)
 さらに、電子工作とは関係ない話題をもうひとつ。実は前記事をアップする直前、例の、京都の小学校の同窓会が2年ぶりに宇治で行われたので行ってきた。そのときの写真を少しご紹介しておこう。

Dsc004520001

 宇治は硬貨の裏にも彫刻され、世界遺産にもなっている平等院の鳳凰堂が有名だが、実は、それ以外にも世界遺産に指定されているところがある。それが、平等院の川向うの北東に位置する、宇治上(うじがみ)神社である(京都のお寺や神社がすべて世界遺産ということではなく、全部で17か所)。

 所長も行ったことがない。同窓会をその近くで行うというので、また日帰りで京都へ行ってきた。同窓会の前に、その神社に行ったのだが、何の変哲もない神社で完全に足をすくわれた(これは予想した通りでもあったが)。

Dsc004530002

 世界遺産に指定された理由は、国宝となっている日本で一番古い神社の本殿が残っていることらしい。しかし別に驚くような建物でもない。これだけで他には何にもない。実にあっけない世界遺産だった。まあ観光客が殆ど来ていなくて、のんびりと散策できたことは収穫だった。

 今度の同窓会は、この世界遺産と、遠方から珍しい同級生(何十年ぶり)が来るというのに釣られて来たのだが、まさに60年ぶりに会った同級生は、頭が薄くなっていたが、話をしているうちに完全に小学校時代の面影が再現し、とても感動した(相手があまり自分のことを覚えていなくて少し残念だったが)。

Dsc004570006

正しいサブキャリア―周波数を作る(6/2/2016)
 電子工作の話に戻ろう。工作そのものは、前回記事のあと少しやっただけで、その後は殆ど進展していない。もともとは、無線WiFiモジュールのESP8266で学習する赤外線リモコン遠隔制御装置を、それこそArduinoで作るつもりだった。

 ウェブにはいくつかのソースコード(スケッチ)が公開されている。ここここのソースを拝借すれば恐らく問題なく動くのだろうが、それだけでは何となく面白くない。赤外線リモコンは応用範囲が広いので、ハードなどの技術をマスターしておきたい。そこであえてマイコンのAVRで基本的なところから作りこんだ。それが、深みにはまっている。

 赤外線の学習リモコンというのは、既存の赤外線リモコンの送信データを、受信してそっくり記録し、あらためて必要に応じて、その赤外線データを送信するもので、前回のブログ記事の通り、データ受信と記録の機能は、Tiny861を使って(最初Tiny441で失敗)、開発に成功している。

 次は送信部である。赤外線のデータ規格はさまざまな種類があるので、汎用的にするため、ここでデコードすることはやめ、忠実にその長さに基づいて赤外線を発信する方法をとることにする。エラー率は高くなるが、とりあえずはこれに挑戦する。

 送信用の赤外線LEDはこれまで使ったことがない。まずはミニブレッドボードに、送信用赤外線LEDとFET(2SJ377)をつけて、赤外線LEDがon/offできるか確かめる。確認のため普通の発光LEDを並列につける。問題なく動いた。制限抵抗が300Ω程度でも1m位は受信するようだ。

Dsc00527

 次はソフトウエアである。これまでの受信部とこの送信部を少し大きめのブレッドボードに統合したあと、送信側のロジックを開発する。キャリアーパルスはPWMでなく、通常のGPIOをタイマーで駆動して、duty比1/3のサブキャリアーを作った。

 割り込みルーチンにこれを組み込み、ON/OFFはメインループのフラグで行う。タイマー割り込みはサブキャリアーの2倍(on/off)のタイミング13μsで発生させる。メインループのON/OFFは、最少でも500~600μs単位なのでこれで十分動くはずだ。

 動かしてみる。オシロでサブキャリアーの周波数を測定する。うーむ、30Khzを下回っている(およそ28Khz)ので受信モジュールが正しく動かない可能性がある(仕様上は30~38Khz)。

 遅れる原因をチャートを書いて調べる。キャリアーパルスの遅れは、タイマー割り込みが起きて割り込みルーチンに来るときの時間(オーバーヘッド)だけが問題で、割り込みルーチンの中の処理は関係しない。実測してみるとこのオーバーヘッドは、8Mhzのクロックで4μs内外のようだ。

 それを加味して、タイマーの時間を調整する。しかし、どうも計算通りにならない。思い切って値を減らす。対症療法だが、これでやっとサブキャリア―が30Khzを超えた。まずはこんなもので良いだろう。

送受信の分離にてまどる(6/8/2016)
 受信で得たパルスデータの配列(立ち上がりと立下りの間の時間1バイト)から赤外線パルスを作るのは簡単だ。送信の指示があれば配列をループに入れ、先頭から配列データに入っている待ち時間を計算してウエイトし、データの最後まで送信LEDのスイッチをon/off(exclusive OR)させるだけである。

 しかし、最初はうまくいかなかった。同じCPUに送受信ルーチンを入れ込んであるため、送信赤外線が出始めると、受信側が割り込みを開始して動いてしまう。送信パルスは間隔を単なるループ回数で決めているので、正確な間隔にならなくなる。

 受信側の割り込みを動かないようにすれば良いのだが、これが意外に面倒だった。どうしても、最初のパルス受信を止めることが出来ない。送信パルスの発生は、タイマーの割り込みルーチンで動いているので始終動いており、受信モジュールの割り込みを止めるステートメントの場所が難しいのだ。

Led1

 停止をするステートメントの前後を割り込み禁止にし、ペンディングの割り込みを事前にクリアするステップを追加してやっとのことで、受信を黙らせることに成功した。その後はロジアナで波形を見ながら少しづつ送信波形を記録したデータに近くなるよう調整していく。

 ロジアナがまたも大活躍である。これがなかったら全く手も足もでなかっただろう。ロジアナさまさまである。Tiny861の20ピンが大いに役立った。いくらでもプローブ点を作れる。5本で解析すれば、だいたいのことはわかる。

Dsc00526

 現在の我が家にあるリモコンは5種類以上ある。学習リモコンの最終ターゲットはエアコンだが、このデータ列は長大なので、とりあえずは電子ボリュームに使ったSONY仕様のリモコンを当面のターゲットにして調整する。簡単といっても、こいつもリピートとして同じ信号が必ず5本近く出るので、正確な信号を再現することは結構難しい。

やっとのことで3機種の再生に成功したが、本体が受け取らない(6/22/2016)
 徐々にではあるが、学習赤外線リモコン送信部がそれらしい赤外線データを再生し始めた。SONY仕様の12ビットの信号も、ロジアナで見る限り、10%内外の誤差でデータをだしているようだ。

 リピートの処理はリピートとリピートの間の40msの間隔でタイムアウトをとり、2番目以降のデータを無視することで正しいデータが得られるようになった。エアコンのリモコンに対象を移す。データは多いが、何とか512バイト内(Tiny861のSRAMサイズ)に納まっている。

 いよいよ、当面のターゲット、寝室の最近新しくしたリモコンデータである。おやあ、Tiny861がリセットする。ええー、こいつは512バイト以上なの? 測ってみた(数だけ勘定する)。何と何と、こいつは292イベント(146ビット)もあり、しかも念の入ったことに、10ms程度の休みのあと同じデータが繰り返されていて軽く配列データが512バイトを超えてしまう。

Led2

 仕方がない。リピートのタイムアウトを10msに縮めて最初のデータだけを記録することにする。さらにテストを続ける。今度はデータ列の最後のイベントの割り込みがペンディングになり、これが次のデータ列とみなされて本来のデータが消えてしまうトラブルに悩まされる。これは、割り込みリクエストのクリアをいたるところに入れて回避する。

 悪戦苦闘の結果、3つのリモコンそれぞれで、ほぼ原形通りの波形を出力するようになった(まだ実地テストはやっていない)。こんなに長い間かかるとは当初考えても見なかった。原因は、それぞれのリモコンが持っている、リピート信号を除去するのに手間取ったことが一番大きかった。もうちょっと、プログラムの構造を考え直す必要があるかも知れない。

再生したデータで本体動かず。意欲がわかない。完全なスランプ(7/4/2016)
 体調はすっかり戻った。週2回のジムでも、プールで300mが楽に泳げるようになった。ただ、電子工作への集中力が途切れている。送信部のデータがほぼ想定通り出たので、実機でのテストに入る。対象は、まずは電子ボリュームにしているSONY仕様の一番簡単なリモコンのテストだ。

 オーディオコーナーに設置してある電子ボリュームを工作机に移し、ケースを外してデバッグ用のUARTを取り出す。うまく動けば良いが、動かないときの用心である。苦労して設定し、いよいよテストに入る。

Dsc00525

 だめだ。全く動かない。UARTにすらメッセージが出ない。送信データのデコードがうまく出来ない。一番簡単なSONYフォーマットのデータを受け付けない。たかだか12ビットのデコードが出来ないのだから、100ビット以上あるエアコンのデコードなど思いもよらない。

 何が原因か。赤外線の出力をちゃんと受け取っていることは確認した。出力波形は、入力とほぼ同じになっている。少しづつ違うようだが、誤差は20%もないだろう(600usが500us程度)。ただ、このあたりは10 %以下でないと駄目なのかもしれない。

 こうなると意地になるのが常である。電子ボリュームのソフトをいじって中身のデータを出せるような体制に入る。しかし、この機器のCPUはTiny2313で、SRAMが128バイトしかない。ちょっと詳しいデータを出そうとすると、スタックのオーバーフローで簡単に暴走してしまう。

 このあたりで集中力が切れた。このままでは泥沼である。体制をもういちど見直して最初から仕切り直しをしたほうが結局効率が高そうだ。しかし、電子工作への意欲が落ちているのでなかなか次の一歩が進めず、いたずらに時間が経つばかりである。

Windows10インストールで最初の犠牲者(7/12/2016)

 そんなことで別のことに興味が移ってしまった。Windows10である。今さらの感もあるが、今月末に無償アップグレード期限が切れるというので、渋々入れることにした。Windows7で何とか動いていたMSのFlight Simulator(FS 2004)が心配だが、まあそれはあとで考えることにして、これまでさんざん無視していたWindows10移行のボタンを押す。2時間近くかかった。

 ソフトは大体無事だったが、いくつかのハードがらみのアプリに問題が出た。Epsonのスキャナーは何とか、このサイトの情報で助かる。LAP-Cのロジアナはバージョンアップの情報があったのでうまくいくと思ったが、以前のファイルが残っていて正常に動かすのにてこずった。

 AtmelStudioや、Win95時代の定番のエディターや、ターミナルは無事だった。もちろんChaNさんのAVRSPも問題なし。開発環境はほぼ整った。やれやれ。

 FS2004は遂に動かなくなった。そもそもCD-ROMを入れないと動かないソフトは全滅のようだ(セキュリティの関係らしい)。OSそのものは確かに軽くなった。もっともこれは、Win10とともにメモリを増強したことが原因かも知れない(AtmelStudioがメモリ喰らいで、メモリを2Gから4Gにした)。

 大所が動いて、細かいところのテストに入る。意外なところがダメだった。サンワのUSB BlueToothドングルは、現在ほとんど使っていないが、こいつが動かなくなった。サイトを見るとなんと「Win10はサポートしていない」というではないか。最初の犠牲者だ。

 こいつは、仕事の帰り、ヨドバシに寄ってWin10対応のものを買いなおした。なんと、¥1000少々。気が抜ける価格だ。ウェブ上では、BlueToothの世界も沢山のバージョンがあり、色々な話が渦巻いているようだ。まあ、最近のボードは、このあたりはすべて内蔵だから、ドングルに関心が薄れたのかもしれない。

Dsc00530

 ヨドバシ秋葉原店は、膨大な売り場面積だが、BlueToothのドングルは5種類くらいしか売っていなかった。動かないという苦情が多いせいなのかもしれない。

 ともあれ、Windows10は今のところ順調に稼働している。ブログの紙数も増えてきたようなのでとりあえず活動報告をここで一区切りすることにする。

| | コメント (6) | トラックバック (0)

より以前の記事一覧

その他のカテゴリー

ARM | AVR | EAGLE | Edison | ESP32 | esp8266 | FPGA | FreeRTOS | Node | Processing | Raspberry | STM8S | Xbee | 電子工作