2020/02/10

スケーラブル植木鉢

 日々の開発の途中、息抜きで多肉植物のための自動照明植木鉢を作っている。単体で卓上栽培できる全自動化が目標だ。

動機

 多肉植物は、季節によって必要な日照量がかなり変化する。 また日本の多湿な気候ではかなりデリケートなものが多い。日照が少なければ徒長してしまうし、水の量を間違えても腐ってしまう。
 水はスケジュールに従い、むしろ水やりしすぎないようにすればいいけれど、日照管理は窓辺など場所が限られてしまう。 そもそも観賞したいのに、窓辺に遠ざけるのも悲しい。

 単純にLED灯で栽培する例はいろいろあって、多肉専用のおしゃれなLED照明(USB 5V給電)なども売っている。フレキシブルなLED灯を改造し、栽培灯の自作もしたけれど、手動で点灯管理する必要があり、一鉢しか育てられないため、株個体が増えてきた場合にその都度5V電源が必要になってしまう。 電源の問題はレイアウトの自由度に直結する。
システムのスケール問題を解決するには、初めから対応した設計が必要だ。
まずは、一株程度を植えられる容器を3Dプリンタで出力。個々のパーツをジュラコンスペーサで積み上げる方式。

コントローラは試作したAdafruit ItsyBitsy専用拡張基板を流用。単体で栽培時の環境モニタやリソース管理のために必要な拡張に対応している。
もともとデイジーチェーン方式のバス式接続規格の研究用にこしらえたので、この基板も多数の同規格の基板を連結することができる。システムとしては一つの通信バスでシーケンスを可視化し、異常なボードは電気的に切り離し、プログラムバスで一か所の接続点から全基板を書き換えできる。

 ItsyBitsyボードにはもともとNeopixel駆動専用のポートが用意されていて、DMAで点灯制御ができる。 ただし、今回は複雑なパターンを点滅させるわけではない。色温度調節、輝度調整、点灯、消灯制御がメインだ。
 スイッチも要らず、コントローラ一つでポットの数だけ照明をデイジーチェーンすることができる。スケーラブルなポットとして必要な要素だ。



 サンプルを実行した結果ゲーミングPCのように虹色に輝く多肉植物というサイケデリックなものが出現してしまった。直ちに単なる照明としてのコードに替える。
 16個のリングを輝度最大にすると500mAも引っ張る。ユニットが増えてくると、5V電源の容量、電源配線の許容値も検討しないといけない。
 幸い、半分以下の電流による輝度でも3㎝先で5000ルクスを確保できた。 徒長対策には十分な明るさがある。
 せっかく細かく調節できるので、時間に応じて色温度を変化させたり、輝度を調節して自然の日照を模擬するところまで実装してみたい。

2020/01/28

ISS軌道を撮る

天頂を通過するISS 380km分の航跡が写っている

 国際宇宙ステーション(ISS) の可視パスを撮り始めた。
 仰角が80°を超える好条件では、天頂付近でマイナス4等星近くまで明るくなる。

人々の暮らしの頭上を人類の宇宙基地が音もなく渡っていく。 第一宇宙速度で移動しているにもかかわらず、400㎞も離れると見かけの移動速度は航空機に近い。

参考:ISSの可視パスを出してくれる便利なサイト https://www.heavens-above.com
可視パスでフィルタをかけ、予報の中で仰角が50度を超える好条件な日を狙うと良い。

 三脚に設置したカメラでこの軌跡を撮るにはいくつか方法があるけれど、お手軽なコンポジット撮影を試みた。
 Nikon1 J5に1 Nikkor 6.7-13mmを付けて待ち構える。



この機種ではインターバルは最短で5秒、インターバルが遅延しない最大の露出時間は2.5秒となる。 換算18mmだと地平線から天頂までを映せるので、到来方向の空にカメラを向け固定し、撮影してみた。

撮影後は比較明合成をして完成。

11月21日
 最初の撮影は光害カットフィルタ(kenko スターリーナイト)のみでの撮影。急いだためピント出しに失敗したが、明るい点光源が強調され、ソフトフィルターと同じ効果をもたらした。拡大しなければ問題ない


1月21日
 プロソフトンAを入手したのでピントを出してから撮影。時刻的にはほぼ同一なのに、季節変化で空が明るくなっているのが分かる。


2回のパスを比較すると以下のようになる(Orbitronを使い、当時の軌道元期で比較)。 1月のパス軌跡がかなりまっすぐ。

軌道の途中から赤い線になるのは、地球の影に入ったということ。 この日は天頂通過後に日陰に突入した。 直前、ISSの反射光が夕焼け色に赤く変わり、あっという間に消えていった。低軌道衛星の夕焼けは短い。


 合成した画像の個々の破線は、2.5秒間にISSが移動した距離も表している。軌道速度は秒速7.66kmだから、露光する間にISSは約19㎞移動している。

 眼で追う場合、地平線近くで識別するのは至難の業だ。都市部なので、仰角が40度を超え、輝度がマイナス等級に達するあたりから周囲の星よりも目立ちはじめて気が付きはじめる。

1月のパスで破線を数えてみると、地平線近くは太陽光の名残りで明るく識別できないが、45個の破線を確認できた。天頂まで写したコンポジット画像には差し渡し1723kmの軌道が写っていることになる。

 この日も肉眼ではっきりと視認できたのは、ISSの仰角が金星を超え、距離が800㎞を切ったあたりからだった。

おまけ ISSの軌道高度変化(5年分)



ここ5年間の軌道要素から高度変化を算出して見てみると、高度410㎞前後に維持されている。


2019/11/23

Arduino Nano Everyを試す

 秋月で売っていたAtmega8と、感光基板でエッチングしたArduino互換ボードを製作してみて、次に本家ボードも買って…  と気が付いたら10年が経過していた。
ATmega328Pはいまだに手軽さでは抜きんでている。

 今は32bitMCUの低価格化、高性能化、低消費電力化が著しい。動作周波数も100MHz超えが当たり前で、30mA程度しか消費しない。

 動作電圧範囲が広く、単純な8ビットMCUが不要になることはまだないだろうけど、クラシックなAVRマイコンは値上がりしており、価格競争力は無くなりつつある。
そしてコモディティ化により、公式ボードでは不可能な値付けの安価な互換ボードがたいていの需要を満たすようになってしまった。

 Arduino Nano Every


 そんな中、Arduino本家がリリースした新しいNanoボードの一つ。
 他のボード2種はATSAMD21(Cortex-M0+)と無線モジュールを搭載したArduino zero(生産終了済み)ベースのIoT向けボードだが、 Nano EveryはWifi Rev2と同じくAtmega4809を採用していて、安価で5V単電源な8ビットのボードだ。


Atmega4809はATmegaと名がついているが、アーキテクチャはXMEGAベースなので、クラシックAVRとのコード互換はない。
 https://blog.kemushicomputer.com/2018/08/megaavr0.html
もちろん、ArduinoAPIのみで記述されたスケッチやライブラリは普通に動作するし、I/Oレジスタ操作についてはAPIでエミュレーションするコンパイルオプション(328Pモード)がある。

megaAVR-0はプログラミング方式がUPDIになったため、プログラマ・USBCDCとしてATSAMD21が搭載されている(中央の四角いQFNパッケージ)。UPDIは外部に配線が引き出されていない。

ATmega4809ボードとしてのピンマップを調べてみたのが下の図。

(公式の回路図 https://content.arduino.cc/assets/NANOEveryV3.0_sch.pdf )


引き出してあるI/Oが少ないので気になっていたが、UARTについてはハードウェア的に4chを使うことができそうだ。
ただし、公式のボード定義では互換性を優先し、2ポートしか使用していない。

MCUの潜在力を引き出したいならば、有志が開発しているmegaAVR0向けのボード定義 megaCoreX(https://github.com/MCUdude/MegaCoreX)を利用するのが良いだろう。

過去のArduino Nanoと比べたメリットは以下のようになる。

・RAM ROM容量の増加 (6kB / 48kB)
・ピン単位の割り込みが可能
・シリアル通信は2ポート定義されている
・ブートローダー形式ではないので、起動時に余計な処理が入らない
・シリアル通信のボーレートは1Mbpsくらいまでは文字化けもせず送受信できる
   (※ただし、230k以上はCPUの処理が追い付かなくなり、だんだんバイト間に隙間が開きはじめる。 USB CDCも500kbps程度が限度だ)

・analogRefelence Vref電圧の増加
  (0.55V 1.1V,  1.5V, 2.5V, 4.3V)
  INTERNAL0V55
  INTERNAL1V1
  INTERNAL1V5
  INTERNAL2V5
  INTERNAL4V3

・5V系のために降圧DCDCを搭載している。


 ボード設計で気になったのはアナログ入力兼I2Cのピンだ。megaAVR0ではI2Cとアナログ入力は別の端子なので、アナログ入力のあるピンと、I2C専用のピンを束ねて、Arduino Nanoの328Pの端子を再現しているらしい。ボード仕様の継承って大変だなぁ…

 低価格とはいえ、5V系の電源はかなり余裕がある設計となっている。
VINには6V~21Vと幅広い電圧入力が可能になっていて、DCDCによる降圧方式が採用されているため、9V以上の電源から駆動してもレギュレータの発熱で動かないということが減る。
 VIN経由であれば、最大で1.2Aまで負荷を駆動できるようなので、サーボモーターなどを繋ぐ用途でも駆動には余裕があるだろう。(USB接続時は、USBから5Vをとるため、USB側の供給能力に左右される)