屋外GPS時計

屋外での作業は暗くなると工具を外に置き忘れたりするので日没までの残り時間が知りたい

機能など:
 ・昼間でも見える高輝度LEDを使う
 ・屋外作業中にしか使わないので毎回時刻合わせを不要にするためGPSを使う
 ・緯度、経度と年月日から日没までの残り時間は機械的に計算できる...はず
 ・普通の時計としても使えるようにする
 ・ディスプレイは汎用的に使える物にする


2015-09-19

5mmのLEDを並べて7セグメントディスプレイを作る。色に特に意味は無い
高さは約10cm
通信はSPI準拠にしてarduinoから制御
数珠つなぎ接続して配線数を少なくする
汎用のディスプレイにする予定なのでそのままの状態では小数点表示、180度ひっくり返すとコロン表示
コロンとドットを同時に使うことはあり得ないのでLEDを実装するか否かで切り替える
点灯は輝度を稼ぐためスタティック
電源電圧12V。一桁あたり最大440mAの大食い仕様

R0026867.jpg

2015-09-25

100x74サイズなのでスカスカになると思ったが意外と密な感じ。消費電力が大きいので太いパターンを通しておきたいが部品の隙間を縫ってパターンを通せない。数珠つなぎするときは太めの電線で配線することにする
LEDは大量に使うのでAliexpressで安い物を探す。ハズレを買ってしまうこともあるが秋月電子よりかなり安いので買い直せば良い。安い部品は秋月電子の1/5程度の物も有るが逆に高い物も有る。配送に時間がかかるのと商品説明がテキトーなのが欠点。メーカーの直販もあるが価格はやや高め。現在まで60品種の電子部品&製品(オシロスコープなど)を注文したが不着事故や品質が悪くて使い物にならなかったりした物は無い。梱包はきわめて簡素でピン曲がりなどがたまにあるが1個ずつ袋詰めされていないのがむしろありがたい

R0026954.jpg

表面はLEDだけ

R0026955.jpg

裏面

R0026956.jpg

AliexpressはLEDの種類が豊富

2015-09-26

ポリゴンで配線した。これで3A程度流せる

R0026973.jpg

2015-09-26

7セグメント+カドの6カ所 という表示方法も考えられる

R0026979.jpg

2015-10-10

中国製のLEDが届いた。直射日光を当てても発光しているのは解るがレンズが無いに等しいので発光面積が小さく見える。超高輝度タイプのLEDも先端の丸みを削り落としてしまうと光が拡散するのでそれほど明るくは無い

R0027123.jpg

2015-11-01

基板到着

R0027391.jpg

2015-11-25

7セグメントでは無くサイコロパターンで数値を表すという方法も有りか。ネオン管で作ったらいい感じになりそう。ゼロは全消灯なのでネオン管を下からLEDで照らす。中国製のネオン管なら1個¥10程度。そのうち実験してみる

saikoro.png

2015-11-26

1セグメントだけ点灯テスト。直視すると目が痛い。電圧12V。4個直列の3ストリング

R0027660.jpg

表示する値は2線式の通信で送るのでデータ構造を決める。ディスプレイは数珠つなぎ接続する。次の表示装置には1クロック分だけ遅れてデータが届く。コントローラーのクロックが停止すると最後尾のディスプレイへのクロックも即座に止まる。データは1ビットだけ遅れて届くので最後尾にデータを送るためには接続されているディスプレイの数だけダミーのクロックを送る必要がある。この仕組みはコントローラ側のプログラムを複雑にするがディスプレイ側のプログラムは自らクロックを生成する必要が無いため単純になる

datastruc.png

2015-11-27

写真だと明るく光っているようには見えないが肉眼だと十分な輝度に感じる。ガソリンスタンドの価格表示板程度の明るさ

R0027666.jpg

2015-11-28

ネオン管を注文しておいた。3種各50個。1個約¥10。中国製なのでたぶん200V。用途が違うので届いたら別ページで作り始める->ネオン管時計はこのページ

R0027697.jpg

2015-12-08

本体の回路が無いので回転計多機能版Ver2で表示部だけの動作テスト。輝度を最低に落としても室内では眩しいので紙を置いている

R0027810.jpg

=================================
通信データの書式
=================================
・表示には1つの表示装置に付き2バイト送信する必要がある
・コマンドに続けてデータを送る
・コマンドの先頭ビットは常に1、データの先頭ビットは常に0
・コマンドの書式
  7ビット目  -常に1 コマンドとデータはここで区別できる
  6ビット目  -0:通常データ 1:dummyデータ、デイジーチェーンの次の表示装置にクロックを送るための物 dummyコマンドはコマンドだけで完結しているので続けてデータは送らない
  5~4ビット目-0:通常データ 1:輝度 2:通常データ表示反転 3:予備  表示反転はトグル動作では無い
  
 この方が良いか--------------  
  6~4ビット目-0:dummy
          1:通常
          2:通常+DP
          3:反転
          4:反転+DP
          5:輝度
          6:予備
          7:予備
  ---------------------        
  
  3~0ビット目-0~15:表示装置ID 各表示装置はIDで識別される
・受信方法 CLKの立ち上がりでDATAを読む。先頭ビット(=7ビット目)が先に送られてくる
・送信方法 CLKの立ち下がりでDATAをセットする。先頭ビットを先に送る
・データの書式
  通常データ-7ビットASCIIコードキャラクタ
  輝度データ-1~10バイナリ 1:暗い 10:明るい
・8ビットデータ受信中にクロックが0.8msec以上変化しない場合はエラーで受信中のデータ破棄。先頭ビットの受信待ちになる
・表示装置がデータをデコードするより早く次のデータを送るとデータ破壊が起こる。最短時間は実測で求める(現在未計測)

2015-12-09

1/100秒表示はたぶん無理
ファイル ファイルタイプ 添付ファイルの解説
digitmv.wmv MOVIE 1/10秒表示

2015-12-11

在庫のアクリル板。30cmだと思ったらちょっと小さい。1個74mm幅なので296mm必要。290mmしか無い

R0027849.jpg

2015-12-12

追加で3個作る。スポンジを敷き上から軽く押さえながら半田付けするとLEDが浮かない

R0027875.jpg

2015-12-14

半田付け終了。最上位桁は1か2なのでセグメントを1カ所省略している

R0027933.jpg

2015-12-24

GPSは時刻の校正だけに使うのでリアルタイムクロックも必要。arduinoで¥10リアルタイムクロックDS1307の動作確認をしておく。水晶の両端子を数pFのコンデンサ経由でGNDに接続すると周波数を下げることが出来るがソフトウェアで校正する方が万能。水晶の個体差や温度の影響もある。水晶を内蔵していないリアルタイムクロックの精度は外付けの水晶に依存する

R0028047.jpg

水晶も安い中国製

R0028044.jpg

RTCの出力を周波数カウンタで計測。32.768kHzの水晶。これだと日差6秒

2016-01-09

色つきのアクリル板は高いので透明を使うことにした。基板を貼り付けて穴開け

R0028199.jpg

2016-01-22

ディスプレイ部分の組み立ては完了。送信用のクロックを自己生成しないといろいろな制約が出て面倒になるのでソフトは作り替えることにした

R0028343.jpg

2016-01-23

電圧12Vでpickit3を壊してしまった。中国製のクローンではなくオリジナルの方を。2個無いと送受信プログラム作りの効率が悪いのでpickit3が届くまでしばらく中断

R0028345.jpg

2016-02-25

点灯テスト。1桁分のデータ転送に700μ秒かかる

R0028616.jpg

2016-03-10

表示が合わない。たぶんデータを取りこぼしている

R0028692.jpg

2016-03-11

大型表示器のタイム計測器での動作確認
ファイル ファイルタイプ 添付ファイルの解説
tmkeisokukit.wmv MOVIE 最大16桁対応。全桁更新には約0.032秒かかる

2016-05-02

基板到着

R0029604.jpg

2016-08-11

旧基板でテスト環境を完成させた。時計では1分に1回しか表示が変わらないのでタイム計測器でしばらく使ってテストする。輝度変更のロジックを入れてみたが大電流のスイッチングの影響でデータ送信時にノイズが入って文字化けしてしまうので輝度変更機能は取り去った

R0031189.jpg

バッテリー保護回路のスケッチ。屋外テストではリチウムポリマーバッテリーを使うため過放電防止回路を付加する。3.2V×3セル=9.6V以下になったらバッテリーから回路を切り離す

R0031165.jpg

2016-08-17

バッテリ保護回路完成

R0031274.jpg

回路図。MCP100はリセットIC。VDDが4.75V以下になると出力が0Vになる。4.75V以上の時の出力電圧はVDDと同じ。ヒステリシスがほとんど無いので閾値電圧(4.75Vx2=9.5V)でON/OFFを繰り返してしまうがバッテリ保護にはなる

battprotect.png

リチウムポリマー3セル2100mAH電池で駆動。消費電力は888888表示で1.2A程度なので一般的な使い方なら2~3時間程度

R0031276.jpg
プリント基板CAD 回路図
ファイル ファイルタイプ 添付ファイルの解説
LiPo_protector.zip EAGLE EAGLE V4.15以上用

2016-09-01

ネオン管時計が完成したので改造してGPS時計に仕立て直す

R0031534.jpg

基板レイアウト

R0031533.jpg

2016-09-04

配線を修正したのでタイム計測器で動作確認

R0031570.JPG

2016-09-05

夏場は溶けるのが早い。ネオン管時計の実験回路を両面テープで貼り付けて2枚同時にエッチング

R0031595.jpg

2016-09-08

リアルタイムクロックとI2C通信できないのでブレッドボードに必要最小限の回路を組んで実験。PIC16F1508ではmikrobasicのI2Cが動作しないというのが結論。違うかもしれないが実績のある18F14K22に変更。これはネオン管時計と同じなので絶対動く

R0031628.jpg

大型ディスプレイと通信もうまくできず。いまだ原因不明。ディスプレイはタイム計測器(デジタル回転計多機能版Ver2)に接続すると正しく動作するのでディスプレイ側の問題ではない。Arduinoでテストプログラムを書いてみると同じくダメな症状。デジタルオシロで波形を見てもおかしなところはない

R0031651.jpg

輝度の確認。直射日光が当たっても読める。実験中は文字が目に焼き付くので青いフィルムを張っている。アクリル板の保護紙も剥がしていない。ディスプレイは立てて使うので昼間の上からの日射は問題にならない。朝日と夕日のほうが影響が大きい

R0031617.jpg

2016-09-09

ディスプレイ側にバグが残っていた。追加した輝度変更機能を消し忘れていた

R0031654.jpg

2016-09-13

文字の間隔が詰まりすぎている感じ

R0031691.jpg

150x100の基板から2枚取れるようにサイズを決めている

R0031690.jpg

電流は9Vでこの程度

2016-09-15

ネオン管時計から移植したのに全く同じGPSが動かず。ブレッドボードで同じ回路を組んで実験。原因は割り込みをENABLEにしてからdelayを入れていたためにシリアル通信のオーバーランエラーが起こっていたというつまらない物。
GPSから緯度、経度が得られるため日没時刻は計算できる。ネットで拾ってきたロジックをmikrobasicに移植した

R0031696.jpg

原因調査中

R0031706.jpg

バグをつぶして動作テスト。日没までの時間はマイナス表示

GPSモジュールを取り付けて完成。
仕様;
 ・日没まで10時間以上あると--:--表示となる
 ・緯度経度はEEPROMに書き込んであるので電波を受信できなくてもリアルタイムクロックのバックアップ電池があれば表示できる
 ・GPSから時刻を得られているときはコロンが点滅する。リアルタイムクロックだけで動作しているときはコロンは点灯したまま点滅しない
 ・スライドスイッチで 普通の時計/日没までの時間 を切り替えられる

R0031735.jpg

設計上は12V電源。9Vでも視認性はそんなに悪くない。回路図などは以下の添付の通り。大型ディスプレイは別ページ(現在キット化するか未定)。基板に修正が入っているがリンク先の物は修正不要。大型ディスプレイは1桁に88個もLEDを使うのでキット化したときにLEDを大量仕入れする必要があるため売れ残ると困る

R0031734.jpg

回路図。R5はプログラムを書いている途中でRXを出力にしてしまったときにGPSモジュールを壊さないようにするための物。プログラムが正しければ無くて良い。大型ディスプレイのディップスイッチ設定は
1分桁:0 全部OFF
10分桁:1 1のみON
1時桁:2 2のみON
10時桁:3 1,2をON
大型ディスプレイはとの接続は
VCC:大型ディスプレイの5V電源と接続
GND:大型ディスプレイのGND(電源マイナス)と接続
DATA:大型ディスプレイのDATAと接続
CS:大型ディスプレイのENABLEと接続
CLK:大型ディスプレイのCLKと接続

gpsclocksch.png
回路図など
ファイル ファイルタイプ 添付ファイルの解説
GPS_clock_eagle.zip EAGLE 回路図&基板レイアウト
GpsClock_mbasic.zip mikroBasic プログラムソース&HEXファイル一式

2016-09-16

明るさの違い。日没30分前は昼間とあまり変わらない。シャッタースピード一定で撮影。肉眼の場合は暗さに慣れるので写真よりずっと変化が少なく感じる。前ゼロは目障りなのでプログラムを修正した。写真は修正前の物

R0031737.jpg

31分前

R0031741.jpg

17分前

R0031743.jpg

9分前

R0031746.jpg

5分前

R0031749.jpg

日没