日の出、日の入り時刻からアナレンマを描く(中間まとめ)
このところ取り組んでいる Ambient へアナレンマを描く実験ですが、データーのアップロードが順調に出来ていて、一段落した感があります。ということで、現在のハード/ソフトの状態についてまとめておきます。
▼回路

ブレッドボードに組んだ状態で動かしています。接触不良などで止まるといけないので、ユニバーサル基板で作り直したいところですが、それは暇を見てやりたいと思います。
▼回路図

左下の太陽電池の電圧をESP-WROOM-02で読むようにしてあります。太陽電池は最大で2Aくらいの電流供給力があり、ショートが発生すると配線などの焼損の恐れがあります。そこで、安全のため10kΩの保護抵抗(R50)を入れて線を引き出しています。
VR1で感度調整出来ますが、これはデバッグ時の入力電圧変更に使い、通常は最大感度側に回し切って使っています。約25VでADCのフルスケールになります。
当初はI2Cのキャラクタ液晶に電圧や時刻を表示させるつもりでした。しかし、使い易いライブラリが見つからなかったこと。それに、もしI2Cバスがハングアップすると全体が止まってしまうのが怖いので止めました。実は作り込むのが面倒くさかったのが本音ですが、パネル電圧はほぼリアルタイムでAmbientのグラフで表示しているので、そっちを見る方が確実です。
▼スケッチ
スケッチはこちら(20161214_AnaLtest-x)(拡張子を inoに変えるとArduinoのIDEで読めます。また、Ambient.h Ambient.ccpが必要です。)
先人の方のプログラムを参考させていただきました。普段はブログの記事中に見える形で公開しているのですが、今回はあまりきれいに書けていないので、リンクの形で公開します。
下記がポイントです
1) ネットの接続処理は毎回行う
必要になったタイミングで毎回WiFiなどの接続を確立させています。プログラムの最初に一度だけネットの接続処理をしておく手もあります。でもそうすると、もし回線断などが発生した場合は回復不能になりそうで怖いです。何しろメンテナンスフリーで連続運転出来ないと困ります。
2) AmbientのIDは二つ使う
パネル電圧の変化(1分間隔)とアナレンマを描くための情報(1日一回)を一つのチャンネルに混ぜるのは無理がありそうなので、別のチャンネルに送信しています。(ch:200とch:202)
3) 日の出/日の入りの検出
日の出/日の入りは太陽電池パネルの電圧監視で行いますが、誤判定防止のため大きなヒステリシスを持たせています。なお、日の出/入りの判定は10秒周期でチェックし、結果のAmbientへの送信はパネル電圧記録のタイミング(つまり1分刻み)で実行しています。
4) IPアドレスは固定
WiFiの接続時間短縮のためIPアドレスは固定しています。(179行目)
5) NTPはnict を使用
参考にしたプログラムではアメリカのNTPを使っていましたが、たまに接続ミスが発生したので、国内のNTPサーバーに変更。(31行目)
6) 日付連番
Ambientに作図するのに日付連番があった方がいいので、NTPから作成しています。但し2016年1月1日が1から始まるという俺様ルールになっています。ちなみに2017年1月1日の日付連番は367になります。(2016年は閏年なので366日あります)
◆まとめなど
ということで、ともかくAmbientへのデーター登録は開始しました。登録したデーターは下記で公開しています。
アナレンマを描く (チャネルID: 200)
ソーラーパネル電圧 (チャネルID: 202)
果たしてこれでアナレンマの8の字を描くことが出来るのか興味深いところです。この観察方法は天候の影響を受けるので、綺麗な8の字を描くのは難しいと思います。でもたぶん、8の字の下側の○くらいは何とか確認できるのではないかと期待しています。ともかく1年後にどんな結果になるのか楽しみです。
この実験の結果は、観測場所の緯度/経度の違いに影響を受けますが、地球の公転軌道や自転軸の傾きの影響も受けます。そういう影響を総合した結果としてアナレンマの8の字が書ける訳です。つまり、大げさに言うとこの実験は天体観測をやっていることになるはずです。
ちなみに、天候の影響が少ないきれいな8の字を描くにはどうすればいいか、考えるのも面白いと思います。気象の変化の少ない砂漠の真ん中で実験するといいのでしょうが、そうもいきません。どういうセンサーをどういうふうに使うのが良いか、試すのも面白いと思います。ソフトの工夫で異常データーを外す手もあるし、他にもいろんな対策が考えられると思います。これ、学校の天文部で取り組むと楽しそうです。
あと、マイコンの不具合などで Ambientに変なデーターを書いてしまった場合に備え、下記を参考に定期的にデーターをダウンロードしてローカルに保存しておくと良いと思います。
データーのダウンロード機能をリリースしました
上のリンク内に書いてありますが、Ambientでは1年を超えるデーターは削除されるそうです。
▼回路

ブレッドボードに組んだ状態で動かしています。接触不良などで止まるといけないので、ユニバーサル基板で作り直したいところですが、それは暇を見てやりたいと思います。
▼回路図

左下の太陽電池の電圧をESP-WROOM-02で読むようにしてあります。太陽電池は最大で2Aくらいの電流供給力があり、ショートが発生すると配線などの焼損の恐れがあります。そこで、安全のため10kΩの保護抵抗(R50)を入れて線を引き出しています。
VR1で感度調整出来ますが、これはデバッグ時の入力電圧変更に使い、通常は最大感度側に回し切って使っています。約25VでADCのフルスケールになります。
当初はI2Cのキャラクタ液晶に電圧や時刻を表示させるつもりでした。しかし、使い易いライブラリが見つからなかったこと。それに、もしI2Cバスがハングアップすると全体が止まってしまうのが怖いので止めました。実は作り込むのが面倒くさかったのが本音ですが、パネル電圧はほぼリアルタイムでAmbientのグラフで表示しているので、そっちを見る方が確実です。
▼スケッチ
スケッチはこちら(20161214_AnaLtest-x)(拡張子を inoに変えるとArduinoのIDEで読めます。また、Ambient.h Ambient.ccpが必要です。)
先人の方のプログラムを参考させていただきました。普段はブログの記事中に見える形で公開しているのですが、今回はあまりきれいに書けていないので、リンクの形で公開します。
下記がポイントです
1) ネットの接続処理は毎回行う
必要になったタイミングで毎回WiFiなどの接続を確立させています。プログラムの最初に一度だけネットの接続処理をしておく手もあります。でもそうすると、もし回線断などが発生した場合は回復不能になりそうで怖いです。何しろメンテナンスフリーで連続運転出来ないと困ります。
2) AmbientのIDは二つ使う
パネル電圧の変化(1分間隔)とアナレンマを描くための情報(1日一回)を一つのチャンネルに混ぜるのは無理がありそうなので、別のチャンネルに送信しています。(ch:200とch:202)
3) 日の出/日の入りの検出
日の出/日の入りは太陽電池パネルの電圧監視で行いますが、誤判定防止のため大きなヒステリシスを持たせています。なお、日の出/入りの判定は10秒周期でチェックし、結果のAmbientへの送信はパネル電圧記録のタイミング(つまり1分刻み)で実行しています。
4) IPアドレスは固定
WiFiの接続時間短縮のためIPアドレスは固定しています。(179行目)
5) NTPはnict を使用
参考にしたプログラムではアメリカのNTPを使っていましたが、たまに接続ミスが発生したので、国内のNTPサーバーに変更。(31行目)
6) 日付連番
Ambientに作図するのに日付連番があった方がいいので、NTPから作成しています。但し2016年1月1日が1から始まるという俺様ルールになっています。ちなみに2017年1月1日の日付連番は367になります。(2016年は閏年なので366日あります)
◆まとめなど
ということで、ともかくAmbientへのデーター登録は開始しました。登録したデーターは下記で公開しています。
アナレンマを描く (チャネルID: 200)
ソーラーパネル電圧 (チャネルID: 202)
果たしてこれでアナレンマの8の字を描くことが出来るのか興味深いところです。この観察方法は天候の影響を受けるので、綺麗な8の字を描くのは難しいと思います。でもたぶん、8の字の下側の○くらいは何とか確認できるのではないかと期待しています。ともかく1年後にどんな結果になるのか楽しみです。
この実験の結果は、観測場所の緯度/経度の違いに影響を受けますが、地球の公転軌道や自転軸の傾きの影響も受けます。そういう影響を総合した結果としてアナレンマの8の字が書ける訳です。つまり、大げさに言うとこの実験は天体観測をやっていることになるはずです。
ちなみに、天候の影響が少ないきれいな8の字を描くにはどうすればいいか、考えるのも面白いと思います。気象の変化の少ない砂漠の真ん中で実験するといいのでしょうが、そうもいきません。どういうセンサーをどういうふうに使うのが良いか、試すのも面白いと思います。ソフトの工夫で異常データーを外す手もあるし、他にもいろんな対策が考えられると思います。これ、学校の天文部で取り組むと楽しそうです。
あと、マイコンの不具合などで Ambientに変なデーターを書いてしまった場合に備え、下記を参考に定期的にデーターをダウンロードしてローカルに保存しておくと良いと思います。
データーのダウンロード機能をリリースしました
上のリンク内に書いてありますが、Ambientでは1年を超えるデーターは削除されるそうです。