ホーム -> 電気工作 -> ケースに入れた自作機器 -> GPS 8x8ドット時計
2連8x8ドットLED(mega48)、GPSクロック(mega328) 制作メモ


回路図(旧) 基板図(旧) 部品表 ブレッドボード 回路図(LED+RTC) 基板図(LED+RTC) 回路図(2連LED) 基板図(2連LED) 基板が入った荷物 プラス基板(表) プラス基板(裏) 2連基板(表) 2連基板(裏) 部品表(LED+RTC) 部品表(2連LED) CPU半田付け(2連基板) 2連基板半田付け完了(表) 2連基板半田付け完了(表) 2連基板R10、R15付け替え RTC以外のIC半田付け(LED+RTC) LED+RTC基板半田付け完了(表) LED+RTC基板半田付け完了(裏) クリスタル+コンデンサ(22PF)2個 5桁の表示 表 5桁の表示 裏 GPSデータチェック回路図 TWIのSDAとSCLにプルアップ 通信データ正常 通信データ異常 OLEDとGPS取り付け GPSーRXDプルアップ 全桁表示確認 取りあえず完成 OLED表示異常(電源入切前) OLED表示異常(電源入切後)
  • 発想 2022年10月26日
    • 今の8x8ドットLEDは紫フィルターを掛けた時に暗い。もう少し明るくしたい。

  • 構想 2022年10月26日

    16F1936の物は今以上に電流が取れないので、トランジスタを追加する方法も有るが、 8x8ドットLEDのmega48(328)版を作る事にする。
    mega48(328)にすれば、もう少し電流が取れるので明るくなるだろう。 動作(表示)と、コネクタ信号関係は同じにしたい。

    8x8ドットの表示部と、RTCを載せた時計部は、別基板になると思うが、 同時に設計、製作を進める事にする。

  • 実装についての考え
    • 2022年10月26日

      mega48(328)、8x8LED(OSL641501-ARA、コラム:アノード)をドライブする。 タクトスイッチで設定を行う。通信を受けた時にLEDを一瞬点灯させる。 電源は連結の端のドライバー基板から貰う。

    • 2022年10月27日

      プログラム領域もデータ領域もmega48には入らないので、仕様を少し変更する。
      キャラクター通信に限定し、キャラクタも数字と曜日といくつかの記号に限定する。
      これでも、現状の時計に対しては同じ様に動作をする。
      (mega328を使えば、仕様的にも同じに出来る)

      プログラムの書き換えは、別に6ピンZHコネクタ(B6B)を用意する。
      通常動作時とプログラム書き込み時はスイッチで切り替える事にする。
      受信データの送信は、デバッグ用なので止める。(足ピンが足りない)
      外部にセラロックを付けて、シリアル通信の動作速度の精度を上げる。
      (規格上、内部発振の精度が調歩同期の精度に足りない)

    • 2023年1月27日

      RTCが入手できないので、秋月のGPS基板、または ケーブル接続のGPSを使い、GPS時計にする。

  • 現状
    • 2022年10月27日

      取りあえず、回路図は書いたが、まだ検討の余地は有る。
      プログラムも16F1936の物(PIC)の物をmega48(AVR)の物にしてビルドは出来た。(動くかどうかはわからない)

    • 2022年10月29日

      回路図(旧1)は完成した。 基板図(旧1)も出来た。 ガーバーファイル(旧1)も出来た。
      部品表はまだ。

    • 2022年10月30日

      SMDのセラロックが無い。10MHzとかなら有るが、8MHzはRSに寸法違いで有るが、ムラタでは無い。 この際、スペース的にはSMDでなくても入るので、スルーホールのムラタにするか、RSのSMDにするか? SMDの物も在庫して置きたいと言う気持ちも有る。ここで無理しないでもという気持ちも有る。

      今後の見通しで考えると、CPUには外部発振子は使わなくなりそう。内部発振が主になるだろう。 そうなると、SMDに限らず、発振子をそれ程種類を持っていなくても良いのではないか?。
      発振子を使うとなれば、もっと精度が必要な時(時計機能など)で、本当に精度が必要な時は高精度のRTCを 使う事になるだろう。或る程度の精度で良いから、CPUだけで済ましたい時になるが、 その時のは周波数は8MHzでは無く、分周すると1秒とか、0.1秒になる周波数になると思う。 なので、今回は8MHzセラロックスルーホール(ムラタ)を使う事にする。
      なので、回路図と基板図の変更が必要になる。(ガーバーファイルも変わる)

      回路図(旧2)も、 基板図(旧2)も、 ガーバーファイル(旧2)も出来た。、

    • 2022年11月1日

      ソフトの検討で回路図を見始めたが、単純に16F1936からMEGA48のポートに繋げてしまっていたが、 どうも、ソフトの作りがすごく面倒になりそうなので、ソフトを考えながら、回路も再検討したいと思う。

    • 2022年11月2日

      ソフトの検討で、フォントデータ(256文字分)がROMとRAMの両方にとられると領域が溢れるで、 数字と使う記号と曜日だけにしたが、プログラム的にすっきりしないので、使う時にロードする様にした。 これで、RAMはオーバーしないが、ROMがオーバーしてしまう。
      仕方がないので、英数字の限定した(128文字分)。今の所何とか80%位で収まった。

    • 2022年11月3日

      ソフトの検討で、回路的に変更した方が良いと思う所が有る。
      スイッチをアナログポートに繋いでいるが、これは普通にデジタルポートに繋げれば良いと思われる。 デジタルポートが足りないのならこういう事も有りだが、PB3(ISPのMOSI)が空いている。 スイッチなのでプログラム書き込みの時に、スイッチを押さなければそれで動作はOKとなる。 但し、外部プルアップを使うと問題が出るかもしれない(実際は10kΩ以上ならば大丈夫なはず)ので、 CPU内部のプルアップを使う事になる。

      A/DコンバータはADC7だけを見れば良いだろう。この電圧を監視してある一定以上の電圧になったら LED表示を暗くするとか出来るかもしれない。今はまだ具体的に何をするかは決まらないが、A/D変換だけはして 値を取っておけば良いだろう。

      8x8ドットLEDのCOL1と2をPB4(MISO)とPB5(SCK)に繋いでいるが、 これを、単体LEDで使っているPB1とPB2を使う事にして、 単体LEDをPB4(MISO)とPB5(SCK)にした方が、 うまくすれば、プログラム時のDIPスイッチの切り替えをしなくても書き込みができるかもしれない。 MISOもSCKも20kΩ負荷ぐらいならば、書き込み時にLEDが光ると思うが、大丈夫だと思う。

    • 2022年11月4日

      回路図(旧3)基板図(旧3)ガーバーファイル(旧3)部品表(旧1)を変更した。

    • 2022年11月5日

      COL1とCOL2の並びが逆なので修正した 回路図(旧4)基板図(旧4)ガーバーファイル(旧4)を変更した。 部品表(旧1)は変わらず。

    • 2022年11月6日

      プログラム(旧1)を作った。 実機のデバッグを行わないと本当に動くかどうかわからないが、今の所は動くつもり。

    • 2022年11月12日

      プログラム(旧2)を修正して、COLがカソードの物に対応する#defineを追加した。

      今手元に 38x38のLEDは無いが、20x20のCOLがカソードの物が有るので、 それを使ってブレッドボードで回路を組んで、動作を確認する予定。

    • 2022年11月22日

      20x20のCOLがカソードの物を使ってブレッドボードで回路を組んだ。 表示のチェックを動かしてみるが、8x8ドット部分の表示がおかしい。 COLカソードの#defineを生かしてもおかしい
      今日はここまで

    • 2022年11月23日

      20x20のCOLがカソードの物を使う時に、COLをROW、ROWをCOLに見立てれば 表示が90度傾くが、わかる文字が出ると思う。 今は、ソフトのチェックなので、90度傾いても表示が出来れば良いとして、配線を変更する予定。

    • 2022年11月24日

      COLとROWを入れ替えてみたが、まともな文字は表示していない。 但し、全部のドットが点灯とか、消灯とかでは無く、いくつかのドットが点灯して、 文字コードが変化すると表示も変化する。
      割込みでのダイナミック表示は出来ているみたいだが、 COLの制御、ROW制御がおかしいか、文字コードからデータを持って来る所がおかしいか、 この辺りだと思う。
      LED2個の点滅時にスイッチを押していると、設定に行くみたいなので、大きな動きは大丈夫みたい。
      22日の状況よりは良い感じに思えるが、今日はここまでとする

    • 2022年11月24日

      COLのデータが足りなかった。
      8x8ドットの表示は良しとする

    • 2022年11月25日

      シリアルのデータが取れない。
      「TTL-232R-5V」と「teraterm」使っているが、データが取れない。 原因がわからない。エコーが無いので、分かりづらい。仮に、TXDを生かして、エコーを返した方が チェックの時は分かり易そう。TXDのピンは今は ROW2になっている。 取りあえず動かすには繋ぎ変えれば良いのだが、基板にした時も有った方が、何かと便利だと思う。

      今までのチェックで、書き込み時用のディップスイッチはLED+22kΩが繋がっている現在は必要ない。
      但し、LEDを一つにして、空いたビットをROW2にして、 TXDを生かす時は、ディップスイッチか、ジャンパーが必要になるかも知れない。

      取りあえずは、ROW2のPD1をTXDの動作にして、 シリアルのコネクタに繋いで、シリアル受信が出来る様にするのが 先決になる。
      その後で回路変更も考える必要も有るだろう。

    • 2022年11月26日

      「シリアルのデータが取れない」問題は、以前作った「TTL-232R-5V」との接続ケーブルが良くなかった。 RXDとTXDをクロスさせる「クロスケーブル」にする必要が有ったが、クロスしていない「ストレートケーブル」だった。 以前は、これで通信のチェックをしたと思うのだが、どうしてこうなったのかわからない。
      現時点では、回路もソフトも基本的には問題が無い程度には出来ていると判断した。

      但し、TXDの問題は、もう少し良く考える必要が有りそうだ。
      今度の様なターミナルソフトを繋いだ時にエコーが無いので、動かない時の切り分けが大変になる。
      CPUからのTXDが無いのなら、コネクタの所でTXDとRXDを単純に繋いで、(ジャンパーの方が良い) エコーとした方が良さそうだが、その時はLEDを繋いで信号で光らせる位はやらないと、確認がとりにくいと思う。
      欲を言えば、ROW2を止めてTXDを生かす事が出来れぼなお良い。 そうすると、切り替えをどうするか、EEPROMの持たせて設定のするか....。 プログラムも増えるので、mega48で入るかも心配。

      今の所は、TXDとRXDのジャンパーと、RXDのLED位で、良しとしたい。

      それとCOLがカソードの物用の #defineは無しにして、その部分のソースは消しておきたい。 チェックが面倒なので。

      追加したい機能で、
      1. 英数字の右詰のEEPROMとその処理が欲しい。(出来れば、中央も) mega48で入るかわからないが、それが有ると、曜日などの漢字表示部の場所選びが少し楽になる。
      2. 00H~0FHまでのコントロールコードの表示を今の5x7で無く、8x8ドットフルに使って分かり易い物にしたい
      3. 現在の曜日の場所がいけないのだが、「日」の表示が「日曜」の日と言うより、今日は「12日」の日みたいに見えてしまう。
        なのでフォントを変更したい。
    • 2022年11月27日

      回路上の変更は、ディップスイッチの削除、RXDのechoとTXDの切り替えジャンパーの追加、RXD信号にLED追加、 を行った。それに伴い、ADC7の信号をCN1(CN2)の6ピンに変更した。

      基板図も変更したが、取りあえず線が繋がったレベルで、もう少し検討する余地が有る。

    • 2022年11月28日

      基板図は出来たとする。
      回路図(旧5)基板図(旧5)ガーバーファイル(旧5)部品表を変更した。

      ソフトを変更して
      1. 「COLがカソードの物用の #defineは無し」にした。
      2. 「英数字の右詰の処理」をした。(右に寄せる数を設定する)
      このソフト(旧3)はブレッドボードで動作チェックをしたが、 mega328で行ったので、完全に動くとは言えないが、99%動くはず。

      もう少し機能を追加したくなった。「倒立表示」が出来る様にしたい。

      これを使った時計を作ってみたい。
      同じ大きさで、続き基板で割れ目を入れれば、1枚の基板で出来そうな気がする。
      elecrowで1つとしてくれるか、わからないが、信号が繋がっているのなら大丈夫だろう。
      以前の物はmega1284を使ったが、mega328で作ってみたい。 この大きさで入るかどうか疑問だが、RTCとGPSコネクタ(シリアル出力のGPS)と両方備えておきたい。
      GPSのコネクタを付けるのだったら、十分入ると思う。 RTSだけだったら、赤外線受信機(38kHz)の600BPSの通信になると思う。
      GPSだけだったら、月日時分曜日の固定表示にして、赤外線受信機は無しで、表示切替も無しとなるだろう。 シリアルが1系統しかないので、途中で切り替えるのはマズいだろう。 赤外線とGPSを切り替えるのはタイミングが難しいだろう。出来るとしたら、赤外線信号をソフトで見るぐらいではないか?
      GPSだけにした場合、時刻設定はいらないが、場所によってはGPS電波が入らないかもしれないので、置き場所が限られるかもしれない。
      最低限、木造に2階部分では電波を拾って欲しいが、出来れば木造1階部分でも電波を拾って欲しい。
      その為のチェックが必要になるだろう。

    • 2022年11月29日

      ソフト(旧4)を変更して、鏡文字と倒立文字を表示出来る様にした。
      00H~1FHまでのフォントを修正して なるべく8x8ドットフルに使う様にした。
      あらためて表示の明るさを見たが、以前の8x8ドットの物とそれ程変わらない感じで、ちょっと明るいかなと言う所。 8x8ドットの表示器が違うので単純は比較できないが、抵抗値からしたらもう少し明るくなって欲しい。 同じ8x8ドットの表示器を繋がないと本当の所はわからないので、今はこれで良しとする。

      GPSに関しては 木造2階部分では、ガラス窓から1~2m離れていても、電波は大丈夫みたい。数分すれば、1秒信号が出てくる。 窓からはなれた所(3~4m)では、金物の雨戸を閉めても、一度電波が取れた物だと数分もかからず、1秒信号が出てくる。 本当に大丈夫かは、電源を切って、一日ぐらいたってみないと、経験上、初期状態から本当に電波を捕まえたかわからないと思う。
      数時間のOFFでは、壁に引っ掛けた状態で垂直の姿勢でも数分で電波が取れる。

    • 2022年11月30日

      GPSの電源を切って、壁に引っ掛けた状態で垂直の姿勢で 2日ぐらい経過して、もう一度、電源を入れてみたが、 数分で1秒信号が出てくる。これならばGPSだけの時計も使えるような気がする。
      今は、シリアル通信で、1mぐらい離れた所からにGPSが有るが、アンテナ一体型の基板状の物では、どうなのだろう。
      基板状の物ならCPU基板の上に積み重ねれば場所も取らず、配線もいらないので使いやすい。
      以前に ガイガーカウンタに付けた物は、窓のそばならば室内でも使えたが、離れると使えなかったような気がする。 10年位前なので、現在の物は性能が良くなったのだろうか? 今の基板状の物でチェックをしてみたい。
      秋月の「AE-GYSFDMAXB」2200円が使えるかもしれない。基板タイプで少し大きいが、今ある通信ケーブルの付いた物と同じ信号が 出ているので、CPU基板に重ねて取り付けて、線を繋げれば、置き換えられると思う。

      と言う事で、GPSコネクタとRTCを載せたCPU基板を追加する方向で進める。出来ればLCD表示器も欲しいが、 載らない様な気がする。

    • 2022年12月1日

      回路図を取りあえず決め、基板図の検討をしているが、ケーブル付きのGPSのコネクタは入りそうだが、LCDは無理みたい。 I2Cだったら、4ピンで済むので入るかも知れない。その為にはI2CのLCD又はOLEDを動かす必要が有る。
      秋月のI2CのOLEDを動かす為のブレッドボードは作って有るが、全然進んでいない。これから手を付ける必要が有る。
      今回は、シンプルにI2Cのコネクタだけを付ける事にする。VCC GND PC5(SCL) PC4(SDA)

      今の回路では、CPUのピンがずいぶん余っているので、ジャンパーピンを付けて、動作切り替えをするスイッチの替りにしたい。

    • 2022年12月2日

      このCPU基板と組で使う前提ならば、8x8ドットの表示器はビットモード専用でも良いかもしれない。 伝送フォーマットも今までの物と変更して、STXを頭に付ける方式とかにすれば、バッファも少なく済むし、 考え方も簡単になる。
      但し、ターミナルからの文字データで表示は出来ないので、使い方は制限されると思う。
      別のソフトとして、入れ替えるつもりでもう1本作る事になると思う
      これは、追々考えるとして、やらなければならないのは 基板の設計と  600BPSのソフト受信(タイマー機能使用?)が 出来る様にする事。

    • 2022年12月3日

      B6B、B5Bコネクタをサイド型にしたい。S6B「S6B-ZR-SM4A-TF」、S5B「S5B-ZR-SM4A-TF」になる。 基板の専有面積は少し広がるが 高さが抑えられる。
      6ピンの物は手元にある。5ピンの物はRSで150円位で売っている。ちょっと高いがマルツ(DigKey)でも売っている。

    • 2022年12月4日

      8x8ドットの表示器の基板とCPU基板を繋げた物で回路図と基板図を書いた。
      一番右は切り離さずに使い、他は切り離してLED部分だけ使う事になる。
      これでElecrowで1枚として作ってくれるかどうか?作ってくれないと面倒な事になる。

      取りあえず、回路としてはこの程度になる。基板図はもう少し煮詰める必要が有ると思う。
      なお、基板状のGPSを実験して使えるとなったら、もう少し変更が有るかもしれない。

    • 2022年12月6日

      表示器の部分とCPUの部分を繋げた物で 回路図(旧6)基板図(旧6)を書いた。
      ガーバーファイル(旧6)も出来た。

      今気が付いたが、GPSからの信号が3.3V系なので、変換ICを入れる必要が有る。この回路には入っていない。
      基板状のGPSの場合、何処に付けるかが決まっていない。重ねるのか、横に置いてケーブルで繋げるのか。
      また、OLEDの表示器も今の所重ねる感じでいるので、GPSと干渉するかもしれない。というか、重ねたら確実に干渉する。

      まだ、懸案事項が有るので、3.3V系の事は、懸案事項として先送りする。

    • 2022年12月7日

      OLEDを重ねる為の考慮をした。基板からはみ出ない様にした事と、リセットスイッチが隠れないように移動した。

    • 2022年12月8日

      現在、OLED、RTC、GPSの全部を付けられるように考えているが、 現実にはRTCとGPSを両方同時に付ける事は無いと思う。 6桁IN-17で両方付けられるようにしたが、実際はRTCだけで不便なく使っている。

      別の基板にして設計するのが、無駄が少なくなり良いように思う。
      それよりも、LED基板を2連にした物を作った方が使い勝手が良い様に思う。 もちろん、1つに割れる細工も必要。
      現在 elecrowでは100x100を5枚で1$のキャンペーンをやっているので 無理して、兼用基板や信号スルー基板を付ける必要はなさそう。
      と言う事で、「CPU(RTC)+LED」と「CPU(GPS)+LED」と「LED+LED」の 3種類を設計して、頼みたい。

    • 2022年12月10日

      GPSは外部に取り付けて、RTC、OLEDの 回路図基板図(旧7)を描いた。 ガーバーファイル(旧7)も出来た。
      回路的には3.3V系からの変換も追加した。

    • 2022年12月15日

      「CPU(GPS)+LED」について、 DIgkeyでは 4808(TQFP32ピン)や808(SSOP28ピン)や 1608(TQPF32ピン)の在庫が有りになっている(数百個から数千個)
      今後の事を考えたらこのシリーズ(08シリーズ)を使った方がUARTの2個以上有るし、 設計が楽になるのではないか。但し、まだ書き込みが出来ていないのが問題だが、 これは、いずれ解決するはず(しなければならない)なので、こちらの物も進めてみたい。

      なので、すぐに出来ると言う訳では無いので、別項目のタイトルにする。

      基板図を少し修正した。
      回路図基板図ガーバーファイル

      2連のLED基板を描いた。
      回路図基板図ガーバーファイル

    • 2022年12月16日

      elecrowに2種類の基板を注文した。
      一緒にsix_in17の3種類のアクリルと、tyuのアクリルと、mega32u4の基板も注文した。今年中に来れば良い方だろう。

    • 2022年12月20日

      スマホのGPSアプリで、位置が取れるかを改めてチェックしてみた。
      雨戸を閉めた状態で壁から1m位の所に置くと、10分以上経過しても位置が取れない。時間も取れない。 電波が届かないみたい。

      以前チェックした物(秋月で買ったシリアル出力の物)でも、スマホの横に置いて改めてチェックしてみた。
      スマホと同じ様な状態で、1秒信号が出てこない。

      この環境は、窓とチェック位置の間に私(人間)が有った。 私が、間から外れたら、数分でスマホは位置とれ、以前チェックした物も1秒信号の出力が、出来た。

      この様な事から、環境に左右される事が有るみたいなので、 基板タイプを使う時は、その物が簡単に移動できる物ならば良いが、 壁に固定する様な物は、秋月で買ったようなケーブルが付いているGPSで、移動できるようにした方が良いと思う。

    • 2022年12月24日

      昨日、発送したとElecrowからメールが来た。届くのは多分来週前半だろう。

    • 2022年12月28日

      今日、佐川で荷物が届いた。
      入っていたプラス基板()も 2連基板()も見た所良い様だ

      プラス基板も2連基板も簡単に折って離すにはちょっと頑丈過ぎた。

    • 2023年1月15日

      部品表(プラス基板)と、 部品表(2連基板)を書いた。

    • 2023年1月17日

      組立の為に、部品をチェックして、不足分を発注することにしたが、秋月にDS3234が無くなっていた。 RSでも、在庫切れで注文できない。マルツにはかろうじてあったが、2000円近い値段になっている。 納期も30日とあるが、取りあえず1つは注文した。どうせ、他の基板の組立チェックなどが有るので 30日後でも、良いだろう。

      それにしても、CPUだけでなく、こんなものも無くなるのだろうか?。或いは生産中止の前兆か?
      クリスタル入りのRTCが少ない。増してやSPIの物は殆ど無い。
      I2Cならば、エプソンの物がまだ有るので、これからはその辺りを使う様になるのかもしれない。

      足無のSMDならば Micro Crystalの「RV-8803-C7」dig-keyで501円(マルツで737円)というのがI2Cだが3ppmで有る。 エプソンよりは高価だが使えそう。 実装とI2Cと言う所が問題。
      「RV-2123-C2-STD-020」はSPIでdig-keyで723円(マルツで990円)。 バッテリバックアップはダイオードで作る必要がある。この辺りになるのかな?

      大きさと使う場所の問題を除けば、2200円でGPSを使う方が簡単で良いような気がする。

    • 2023年1月18日

      昨日、秋月に注文した物が午前中に佐川で届いた。これで「2連LED」の基板は組み立てられるが、 atmega32u4を先に組み立てたい。

    • 2023年1月21日

      2連基板は 取りあえず CPUは半田付けした。

    • 2023年1月22日

      2連基板は部品の半田付けが終わった。(
      まだ、電気的な確認はしていない。

    • 2023年1月23日

      ISP用のコネクタから AVR書込みアダプタを使って5V電源を入れたが、どのLEDも点灯しなかった。 おかしいと思って回路図を確認したら、電源が入った時にハード的に点灯するLEDは無かった。 スペースは有るのだから、付けておけばよかった。ちょっと後悔している。
      テスターで確認をすると電源は来ている。

      ISPを接続して、プログラムをそれぞれのCPUに書き込んだ。LED2つ(赤と緑)が点滅したので、 書き込めた事の確認と、プログラムが動き出した事の確認が出来た。

      電源ON後のスイッチ操作で、設定の画面は表示を始めたが、倒立文字になっている。 このプログラムのチェックは COLカソードでやっていたので どこか間違っているかもしれない。
      ROWの順番を変更したらよくなった。

      LED表示の明るさのついては、以前のピックの物とほとんど変わらない。ちょっと明るいかなと言うレベル。 わざわざ atmegaにするほどの事は無かったと思う。
      赤のセロファン+28%スモークを重ねると結構コントラストが上がって見やすくなる。

      シリアルで送ってくるデータが表示しない。
      ブレッドボードでストレートケーブルとクロスケーブルの件が有ったが、そこら辺の問題か?

      動作には関係が無いが8x8のLEDの足の長さが、以前のPICの時と違って少し短い。 なので、横につなげると段差が出来てしまう。フィルターのアクリルを付ければわからないかもしれないが 問題になるかも知れない。一緒に使う事は避けた方が良いかもしれない。

    • 2023年1月24日

      オシレータの設定が内部にままだったので、外部にクリスタルを使う設定にしたが、状況は変わらず、データは表示しない。

      その時、気が付いたが、設定したデータの番号が保存されていないみたい。電源(リセットでも)を切ると元に戻ってしまう。

      TDIのUSBシリアルを6ピンコネクタに接続すると、接続した方(右側)は電源が入ってLEDの点滅を始めるが、 内部で繋がっているはずの直接は接続していない方(左側)が点滅をしない。
      シリアル信号が来ると黄色LEDは両方とも光るので、信号は繋がっていると思う。
      ISPのコネクタから電源を入れると両方とも点滅を始める。 なので、右側と左側の電源は繋がっていると思う。
      状況が理解できない。
      -->なぜか もう一度TDIのUSBシリアルを6ピンコネクタに接続したら
         両方ともLEDの点滅が始まった。
         CPUの電源ピンに半田付け不良が有るか?
         よくわからないがこのまま進める事にする。

    • 2023年1月25日

      シリアル通信のBPSが有っているかチェックの為に、設定モードへ行く時にSETスイッチを押し続ける時に0.1秒間隔で そのBPSでBPS文字を送り続ける事にした。(9600bpsの時は’E’を送り続ける) スイッチを話したら送信は止めて、今まで通りの設定のモードになる。 -->デフォルトの9600の時は’E’を送り続けるので良いのだろう。
      この動作は通常の使い方では必要が無く、チェックをする時にジャンパーをTX側に付けて使う事になる。
      なお、このジャンパーは通常動作ではどちらにも付けない事になる。

      回路的には、RXDはCPUのRXDに繋がっている。 コネクタのRXDの黄色LEDは光っているので、CPUまでのパターンか? 設定か?

      R10(R26)-100ΩとR15(R30)-10kΩの取り付けが間違っている。
      横向きに取り付ける所を、縦に取り付けている。
      CPUのRXDは常にGNDに10kΩでプルダウンされている事になる。
      コネクタのRXDは常に100ΩでSPEARと接続されてしまう。
      つまり、RXDにはシリアル信号が来ない事になる。
      以前もこの様な間違いをした覚えがある。 わざと少しずらすか、間隔を空ければ良いのだが、 それが出来ない事も有るので、シルクで枠表示等で支持する必要が有るだろう。

      きょうはここまで。抵抗の修正は明日以降とする。

    • 2023年1月26日

      R10(R26)とR15(R30)の取り付けを正しくしたら、 通信データを受けて、表示出来た。

      設定した値が保存されていない件は、ソースを見ると保存はしているが、読み出しをしている所が見つからない。 読み出さなければ、デフォルト値で動く事になるので、保存していないように見えるのではないかと思う。

    • 2023年1月27日

      マルツにはかろうじてあったが、2000円近い値段で一つ頼んだ物も、「在庫切れで納期未定」と連絡が来た。
      どうしようか考えたが、替りの物(似たような物)を頼んでも、この基板には付かないので、 結局 これだけはキャンセルで、他のコネクタと電池ケースを入れてもらう様に返信した。

      RTCなしでGPSだけで表示する事になりそう。

    • 2023年1月28日

      2連の2つの表示を比べると、明るさに違いがある。 また、縦列ごとに明るさの違いも出ている。 多分、各ビットの電流を多く流した時の電圧降下の差が、出てきてしまったのだろう。 規格上は、Lの状態は20mA流して、最大0、7Vまでであり、最小値や平均値は書いていないので その辺りの違いが、実際の電流の違いになって、明るさが変わってしまったのだろう。
      抵抗をもう少し大きくして、目立たなくする必要が有りそう。

      明るさに関して、今の午後の直射日光が入る部屋(LEDには当たっていない)で、 LEDの表面に 赤のセロファン+28%のスモークを置くと、結構コントラストが取れて、見やすい。 現在使っている紫の物よりも明るく見える。

    • 2023年1月29日

      LED+RTC基板は 取りあえず RTC以外のICは半田付けした。

    • 2023年1月30日

      LED+RTC基板はスイッチ類とType-Cのコネクタは半田付けした。
      SMDのコネクタ等は周りの部品との関係で、半田ごてが入りにくくなるので、取り付ける順番を考えないと後で苦しくなる。 IN-17の6桁時計Ⅱでは、スイッチの半田付けに苦労して暖め過ぎたようで、入り切りが出来なくなったものも有った。

      GPSだけで動くので IRの信号とGPSのシリアル信号を同時に取り込む事になる。
      今の回路はGPSの入力と切り替えになっているので、IRの信号はソフトで取り込むとして、 PB0(12ピン)にジャンパー線で接続する。 この信号はGPSとRTCを切り替える為の信号として、ジャンパーピンの端子に出ているので、この端子にジャンパー線を繋ぐ事になる。

    • 2023年1月31日

      もう一つの課題は、GPSだけで動くので GPSからの1秒信号(INT1)が来ないと正確なBPSに出来ない。 通信が出来ない事が有る
      正確なBPSの為のカウンター値は、人間がタイミングを決めて、GPSの1秒信号から自動的に決めて、 EEPROMに覚えこませるのが良いだろう。
      電源ON時のスイッチの押し方で、この値をセットするモードに入り、セットすればよいだろう。 それまでは、8MHzからの計算上の値で良いだろう。
      1秒信号が入っているのに、GPSからの信号が取れなければ、 人間が気が付くから、それからセットに行っても良いだろう。

    • 2023年2月1日

      LED+RTC基板の部品は全て(RTCと電池ケースは除く)取り付けた。(

      LED+RTC基板のLED部はプログラムを書き込んだら、LEDが点滅をして、8x8ドットの表示器に斜めの線が表示されたので 多分動いているだろう。
      RTC部はプログラムがまだ無いので、電源を入れたら、緑LEDが点灯して、CPUのFUSEデータは読み出せた。
      これから、プログラムを作る必要が有る。

      取りあえず、寄せ集めでプロジェクトを作った。 余分な物も有るし、足りない物も有るし、ビットの指定などは違っているが、ビルドは出来た。

    • 2023年2月2日

      LEDとスイッチのチェックプログラムにして書き込んだら、思った通りに動いたので、 書き込みとLEDとスイッチの確認は出来た事になる。
      Type-Cのコネクタを繋いで電源を入れた時も同じように動いたので、Type-CのコネクタもOK。

      シリアルのBPSは取りあえず9600の基準に値を使う事にして、チェックを進める。
      タイマー割込みを使うスイッチ入力で、LEDの点滅が出来たので、タイマー割込みの確認は出来た。
      スイッチによるLEDの点灯/消灯の替りに、シリアルで”A”or ”B”(+cr)を出す様にしたら、 隣のLED部に表示出来た。シリアル出力も確認できた。

      今にして思うが、
      なぜ場所もポートも空いているのに LEDをもっと付けなかったのか?
      なぜ場所もポートも空いているのに スイッチをもっと付けなかったのか?
      なぜ場所もポートも空いているのに 外部発振子を付けなかったのか?
      ボーレート設定や、その他のチェックにも使えるのに....。
      邪魔だったら取り付けないだけで済むのに.....。
      使いずらい裏側でも、無いよりはマシ。

    • 2023年2月25日

      GPSのデータを時計データとして表示するプログラムにした。ビルドは出来た。まだ書き込みはしていない。
      今日はここまで

    • 2023年2月26日

      プログラムを書き込んで動かしてみた。
      ・時分表示はしているみたい。曜日も表示している。
      ・1秒信号で、LEDが点滅しない。ハードなのか、ソフトなのか、まだ原因がわからない
       -->1秒信号の割込み設定が抜けていた。
      ・約1秒間隔で 表示がチラつく。LEDが点滅しないのと関連があるかな?
       -->1秒間隔はわからないが、チラつく原因は電源が弱かった。
          外部のちゃんとした電源やUSBから電源を入れるとチラつかない。
          今まではISPの間に入れるアダプタから供給していた。電池がヘタッタようだ。
      ・月日、年の表示に切り替わらない。まだ原因はわからない。
       selスイッチを押している時は月日になる。
       しかし、離すとすぐに時分に戻ってしまう。
       -->スイッチ入力なしが続いた時に、時分に戻すためのタイマーが
          直ぐにゼロになっていた。
      ・GPSの電源は切っていないのだが、時分表示が出るまでが遅い。BPS誤差の問題か?
       1秒信号は来ている状態でも時分表示まで数10秒ぐらい時間が掛かる。
       本当にデータが来ていないのか?

      現状のソフト(LED+RTC)(旧1)で取りあえずはGPSデータを使って時計表示は出来た。

      2連LED基板の問題だが、
      ・表示部の設定で3ドット右に寄せたが、
       表示する文字によって、部分的に3ドットよらない所が有る。
       -->右寄せの所で、20H以上のコードを判断する所をコードでは無く
          ビットデータを見ていたので、ソフト(2連LED)(旧5)を変更した。

    • 2023年2月27日

      GPSからの1秒信号とデータの関係が良くわからない。データは来ている(分が変化していて、正確)のに 1秒の信号が来ていない。直接GPSの線の所で見た。
      1秒信号は有るのにデータが来ていない事になっている。これはもしかしたら、ソフトが取りこぼしている可能性もある。

      CPUのBPSの補正に1秒信号を使おうと思っているが、データが来ているのに1秒信号が無いと言うのは困る。
      もしかしたら、衛星の数が足りなくて、正確な位置は取れないが、データは吐き出している時なのか?
      基準の1秒はこれしか無いので、使うしか無いが、使う時の条件をハッキリさせたい。人間が判断すれば良いかもしれない。 見れば、有無はわかる。微妙な誤差が有ると困るが、BPSなので最悪10%以内ならば使えるはず。
      8x8のドット表示の所はセラロックなので5%は余裕の筈なので、その信号を戻せるようにしておけば良かった。
      そうは言っても、RTCが手に入らないとは思っていなかったのでしようがない。

      2連LED基板をもう一つ組み立てて、5桁にして動作を見ようと思ったが、8MHzセラロックが1つ足りなかった。 これだけを注文するのも効率が悪いので、何とか1つはセラロックなしの内部発振で行くようにするか、 8MHzのクリスタルは有るので、コンデンサ2つ(22PF位)を何とか付けて動くようにする事になると思う。

    • 2023年2月28日

      セラロックに件は、クリスタル+コンデンサ(22PF)2個)で済ました。
      これで5桁の表示が出来た。(

      時計としての動作としては、年表示、月日表示、時分表示も出来ている。
      年表示、月日表示の時、数十秒経過すると時分表示に戻る機能も出来ている。
      毎正時のアニメーションも出来ている。
      GPSの1秒信号で基板上の赤LEDも点滅している。

      BPSの誤差はGPSの1秒信号を基準として修正する動作を追加した。 電源ON時にSETスイッチが押されていたら、修正する動作をする事にした。 この動作の中では SETスイッチを長く押したら、BPS用の値を書き換える事にした。 また、この動作からは抜けないので、電源OFF->ONか、リセットスイッチを押す事にする。
      この動作で解ったが、今までのBPSの誤差は1%位しかなかった。 なので、1秒信号が来ても、データが出ない原因はBPSではない事になる。

      後は
      ・もう一つLED基板(1つだけの物)を追加して曜日も表示したい。
       (表示データとしては出力している)
      ・赤外リモコンを使える様にしたいが、どうするか保留
      ・箱に入れるか、周りをアクリルで囲いたい。

    • 2023年3月1日

      日本時間にする為の+9時間の所で、うるう年の見方が違っていた。(2月29になってしまった)
      その所を修正した。

      ソフトで赤外線データを取り込むように、関数を追加したて、ビルドは通った。
      今日はここまで。

    • 2023年3月2日

      ソフトで赤外線データを取り込むソフト(LED+RTC)(旧2)を書き込んだ。
      リモコンで操作が出来たので、良しとする。

    • 2023年3月3日

      秋月のGPS受信キット[GYSFDMAXB]使用を使いたいので接続してみた。
      1秒信号は取れているが、何時まで待ってもデータが取れない。なぜ?
      9800BPSがデフォルトなので取れるはずなのだが?
      窓際ならば 1秒信号が出るのだが、すこし離れる(50cm位)と1秒信号も無くなる。
      微妙な位置なのかもしれないが、安定性が無い感じ。やはりアンテナの位置が大事なようだ。
      データを調べる必要が有るが、この程度の安定性だと、ケーブルでつなぐ方式の方が良さそうに思えるが、 もう少し考えてみよう。

      データのチェックは、「TTL-232R-3V3」とテラタームでチェックするのが、シンプルで信頼できる。 (GPSデータチェック回路図
      繋いでみると、データは見られるので、シリアルの設定は大丈夫と言う事になる。
      来ているデータだが、来ると思っているのは「$GNRMC・・・・・」だが、これは来ていない。 似た物は「$GPRMC・・・・・」が来ている。
      通信フォーマット(NMEAフォーマット)を改めて確認してみたら、 三番目の文字は「P」、「L」、「A」、「B」、「Q」、「N」の6種類が有るみたいで、 この文字によってどの衛星を使っているかの判別が出来る様になっている。
      つまり、3番目の文字はこの6個の文字のどれかが来ると思って判断しなければいけない事になる。 プログラムの修正が必要になる。
      -->修正したソフト(LED+RTC)(旧3)では、
         データが取れて、時刻を表示する様になった。
         ケーブル付きの物でもデータが取れて、時刻表示が出来た。

    • 2023年3月4日

      秋月のGPS受信キット[GYSFDMAXB]使用接続して窓際で約1日動作させた後、 窓から3mほど離れた所に移動して、4時間経過したが、今の所正常に時刻表示をしている。
      これなら使えそうだ。
      但し、使い勝手(実装上)から言うと、DS3234の方が小さいし、基板に直付けできるし、価格も安い。 精度は落ちるが、普通の時計に使うには十分と思う。(ズレは1年で1分ぐらい)

      電源を切って、再度入れると表示位置がずれる桁や、BPSが変わってしまう桁が有る。 何度かその様な事が起きていて、特定の桁と言う訳では無い。デフォルトに戻る事が多いが、 そうでない事もある。
      経験的には、ハードが悪いと思われる。但し、普通は正しく動いていて、 たまに起きると言う事から考えると、「電源を切る」、又は「電源入れる」と言う過渡的な状態が 原因と考えられる。まだ、本当の原因はわからないが、過電圧が掛かるとEEPROMは壊れやすい。
      AVRでは電圧が低いとEEPROMの値が変わる事が有るみたい。
      それを考慮すると、「使っているUSB電源」、「回路的な問題」、「部品の配置の問題」、 「基板のパターンの回し方」などを検討する必要が有る。
      今後、検討しなければならない問題だ。そして原因を取り除くか、回避する手段を考えなければならない。

    • 2023年3月5日

      EEPROMの値が変わる件を調べる事にする。
      現在使っているUSB電源はASUSのタブレットに付属していた物で、5.2V1.35Aの物。 ケーブルはダイソーで買った「Type-Aコネクタ<-->Type-Cコネクタ、1m」の物。 実際に電圧をアナログテスターで測ると約5.2Vになっている。

      どの程度起きるのか、実験をしてみた。
      • Type-Aコネクタ(USB電源部)の抜き差し。抜いた後30秒から1分程度で再度さして、時分表示まで待つ。
        -->10回試して、すべて正常
      • Type-Cコネクタ(基板部)の抜き差し。抜いた後30秒から1分程度で再度さして、時分表示まで待つ。
        -->10回試して、すべて正常
      • AC電源の入り切り。OFF後30秒から1分程度で再度ONして、時分表示まで待つ。
        -->10回試して、4回目に異常。1番目の表示部が0番目の文字を表示する様になった。
           修正して実験続行し、以後は正常

      実験結果からは、USB電源のON時かOFF時に異常が起きるみたい為。
      5V波形を見る必要が有るだろう。 おかしな事が有ったとして、ハード的に対処できれば良い。 出来たとしても、今後の事を考えると、ソフト的にも何か対処をした方が良いだろう。

      以前仕事でEEPROMを使った時は、3つ同じ物を持って、多数決処理をした。
      読み出しの時は2つ同じならその値を使い、違っていたら諦めてデフォルト値にする。
      書き込みの時は3つ同じ値を書き込む事にする。
      この様な処理をした。

      表示文字番目、BPS、デリミタデータ、右寄せ、回転 の5個にそれぞれ3つ同じ物を持つ。
      EEPROM領域は余裕が有るが、読み出し、書き込みのプロフラムが増えるのでプログラム領域が心配。

    • 2023年3月6日

      EEPROMのデータをlong(4バイト)にして、その中の1バイトごとの多数決を取ろうと思ったが、 プログラムが100バイトぐらい増えてしまう。単純にこの様なやり方ではmega48には入らない。

      多数決ソフトの対処は、今の所やらないでおく。
      他の対処として、動き始めてから、メイン関数でEEPROMにアクサスに行くまでの時間は約100mSなので、 立下り時に停止と起動を繰り返すと、EEPROMにアクセスしている時に停止になる可能性がある。 なので、ここのディレー時間を大きくして、500mS位にしたい。

      オシロで電源を見た所、立ち上がりは結構早い。10mS以内でスパッと上がっている。オーバシュートもほとんど見えない(0.1V以下)
      下がりは結構遅い。1.8V以下になるのは80mS~100msで 約1Vが500mS以上続く。
      この立下りの遅さが気になるので、BODを4.3Vにセットすれば何とかなるだろう。 チョット余裕が無いので、ノイズで止まるのでは無いかと心配になる。その時は設定値を1段下げてみよう。

      これは表示部なので、時計部も同じようにしないと、 時計部は動いているが、表示部止まっていて、標示しないと言うような事になりかねない。

      BODを4.3Vにセットしたら、5V電圧で動作しない物が出て来た。
      5.14V以上ないとリセットが掛かって動けなくなってしまう。仕方がないので2.7Vにするが、 リセットが掛かる電圧が3.5V位になっている。
      最大でも2.9Vの筈が、なぜかこの物だけ0.6Vから0.8V電圧が高い。
      この一つだけで、他の5個は大体4.3Vで動かなくなる。(48が4個、328が1個)
      本当ならば不良ICとして、交換すべきなのだろうが、交換は大変なので、取りあえずこの一つだけ BOD電圧を低くして使う事にする。
      2連LEDプログラム(旧6)LED+RTCプログラム(旧4)も500mSのディレーにした。

      電源入り切りのチェックを20回行い、標示がおかしくならなかったので、良しとする。

      この様なマルチCPUのシステムの時はリセット信号は専用のリセットICで出力して、共通に使うのが良いのだろう。 現在、リセット信号線は通っているのだが、それをコントロールするのは手動のスイッチだけとなっている。 ここにリセットICを繋げるべきなのだろう。

    • 2023年3月18日

      OLEDの表示を行う事にした。取りあえずは電源ONでタイトルを表示する事にした。 TWIのSDAとSCLは10kΩのプルアップ無いと安定しないので、 取りあえずは動かす為にOLED側に付けたが、基板側に付ける必要が有る。
      タイトルは表示したので、通常動作の表示と、調整の時の表示をどうするか?

      通常の動作時は 年月日時分秒を表示した。 秒の動きがぎこちない時があり、等間隔で上がらない。 値が飛ぶ時がある。1秒信号は見た目は等間隔で来ている。
      調整時はまだ考えていない。 今日はここまで

    • 2023年3月19日
      秒の動きがぎこちない件を考える。
      1. 本当にデータが来るタイミングがおかしいのか?
      2. 内部のループが遅くなって、取り損ねる事が有るのか?
      3. OLED表示だけが遅いのか?
      以上の事を検討してみる。

      1.昨夜(23時頃)は結構ぎこちなかったが、今(11時頃)はほとんど気が付かない。
      場所は窓から2~3m位で、移動はしていない。
      夜は、雨戸(鉄)を閉めているが、今は全て空けている。
      この現象から考えると、送られてくるデータが遅くなっているか、飛んでるか、の状態が一番しっくりくる。
      但し、1秒信号はおかしくなかったので、データだけ遅れる事は有るのだろうか?
      GPSの上にアルミのケースを置いてみた。完全ではないにしろ、ある程度電波は遮断されたと思うが、 ぎこちなさは出てこなかった。衛星の位置も有るので、データが遅くなっていたのかどうかは、まだハッキリしない。
      TTL-232Rを使って、データを盗み見すればわかるかも知れないが、ぎこちなさを再現しないと確認が出来ない。

      2.内部ループが遅いかどうかは、ループの途中で空きポートに信号を出して、オシロで見るのが速いだろう。

      3.OLED表示を止めて、8x8に秒を表示させてみればわかるだろう。

      何にしても、再現しないと確認が出来ない。
      鉄の箱に入れるしかないか?
      GPSの基板(アンテナ付き)をHDDで上下を挟んでみたが、ぎこちなさは起きない。
      原因がわからないが、他の処理を考える事にする。

      何となくぎこちなくなる原因は場所みたい。電源ONでは無いが、電源コードは刺さっているノートパソコンの上に置いた時で、 壁から30cm位だが、雨戸の収納場所なので、雨戸とその場所のカバーみたいな鉄板が2枚入る。 この様な状態だと、秒がぎこちなくなったり、飛んだりする。 但し、途中でパソコンの上から降ろして、すこし経過してからパソコンの上に戻してもぎこちない感じは出てこない。
      電源ONの始めからパソコンの上にあるとぎこちなくなるみたいだ。
      と言う事は、多分GPS基板からの信号が1秒毎でなく、不規則なのだと思う。この件に対するソフトの対策はやらない事にする。

      GPSデータ「$GPRMC」を表示する様にした。
      データが有効でない。(AでなくVの時)でも時分秒、年月日が来る。(他のデータはおかしかったり、無かったり) なのでそれを表示するが、データの周期がおかしい。
      これが原因の一つで、でぎこちなさが出ているのだと思う。この時は1秒信号は来ていない。

    • 2023年3月21日

      ぎこちなさは、OLEDの表示を追加してから気になるようになった。表示をするとループの時間が掛かっているみたい。 もう少し検討の余地が有りそう。

      通常時は、ぎこちなさを除けば、基本的な表示は出来た。

    • 2023年3月23日

      TWIのSDAとSCLのプルアップ(10kΩ)を基板側に追加した。 (OLEDに付けた抵抗は外した)

      BPS用の値の設定画面のOLEDの表示も出来た。

      通常時のぎこちなさはプログラム上で、ちょとおかしな処理をしている所が有ったので修正したが、 まだ、ぎこちなさは消えない。
      今までは、秋月のアンテナ一体型の基板状の物でチェックをしていたが、 ケースに入っていて、ケーブルで接続する物でチェックしたら、ぎこちなさは起きない。

      秋月のアンテナ一体型の基板状の物のデータを表示させてみると、表示周期が不規則で 時分秒の値も 秒の所が1づつ変化せずにまとめて4とか変わる事がある。(小数点以下はいつも000)
      分の桁ではその様な事は無いので、現在は実際の使い方に支障は出ないが、どうも面白くない。 但し、まだ、本当にGPSからのデータの周期がおかしいのかどうか。
      もしかしたら、こちらのソフトで取りっぱぐれている可能性も残っている。

    • 2023年3月24日

      表示のぎこちなさは、一晩経過し、朝に見ると 表示周期も一定で、秒が飛ぶようなことも無い。
      やはり、GPS基板からの通信周期が一定ではないのだと思える。

      午後になると、また、ぎこちない表示で、秒数も飛ぶ事が有る。確実にGPSからのデータの周期を確認しないと 原因がハッキリしない。
      TTL-232Rで見ればわかる様な気がする。

      TTL-232Rを繋ぐ前に、GPS基板のTXD端子にLEDを繋げて、光り具合を見た。
      その結果、1秒毎にある程度の時間は通信をして、休み時間も有る。
      但し、この時はぎこちない表示にはなっていないので、ぎこちない表示の時にどうなるかを見る必要が有る

    • 2023年3月25日

      TXD端子のLEDの光り具合を見ていると、休み時間の有る時と、休み時間が無くて連続で光る時が有り、 連続の時は秒の表示がぎこちなく、値が飛ぶ時も有る。
      なぜこの様になるかはわからない。
      連続の時に、目的のデータ($GPRMC)が1秒周期でないのならば、このまま表示するしかないが、 連続でも、目的のデータ($GPRMC)が1秒周期で来ているならば、 ソフトで対処して、ぎこちなさを無くしたい。

      どちらなのか判断をするには、何か治具が必要になる。
      TTL-232Rで見るだけではタイミングがわからないので、$GPRMCが来た時に信号を出すような物を作り、 その信号周期を見る事にすれば周期はわかるだろう。
      判断は、受信データをバッファリングしないで行わないと、本当のタイミングがわからない。
      なので、受信割込みの中でその判断をする必要が有る。
      と言う事は、現在メイン側で$GPRMCのデータを取っているが、 その処理を割込みの中で行う様にして、そこで信号を出すようにすれば良いと思う。
      結局、取りっぱぐれを無くす対策と同じ様な感じになる。

      割込みの中では、$GPRMCの1連のデータだけを取り、それをメインに知らせるだけで、 年月日時分秒の抽質はメインで行う事にする。
      $GPRMCのデータを入れる所は2つ持ち、メインに知らせたらば、次のデータはもう一つの所に入れるにする。
      メインには入れた場所も知らせ、メインでは知らされた場所から、年月日時分秒を求める。 -->この方式でソフト変更を行った。

      安定して等間隔で秒を表示している時と、ぎこちなく表示して値が飛ぶ時が有る。
      受信データを見ると、表示間隔はぎこちなく、秒が飛ぶ時、戻る時が有る。 TXDのLEDを見ると休み時間なしで連続して送っている様に見えるが、その原因はわからない
      ソフトが正しい動作をしているとすると、GPSからの送信データが乱れている事になる。
      やはり、TTL-232Rで見る必要が有りそう。
      その前にデバッグ用の信号を出しているので、オシロで見て周期がどうなっているか確認する必要が有る。

    • 2023年3月26日

      GPSの受信データの確認はするとして、実際の表示がぎこちないのは良くない。
      なので、秒の表示を設定で選択できるようにしたい。
      表示なし、値表示、1秒信号を使った丸(記号)点滅、1秒信号を使った横バー伸長、の4つを選択にしたい。
      ケーブルで接続する物では、標示のぎこちなさは確認していないので
      値表示も出来る様にしたい。

    • 2023年3月27日

      連続してデータを送ってくる時の問題として、今はサムのチェックをしていないが、 もしかして 連続で置くてくるときはデータがおかしくてサムが狂っているのかもしれない。
      時間が掛かっても サムチェックを行う必要が有るだろう。 -->サムチェックを入れた。ビルドは通った。今日はここまで

    • 2023年3月28日

      サムチェックを追加した物をCPUに書き込んで動かした。
      良い時も有るが、 置く位置によって 結構CR+LFにならないエラーが多いみたい。
      秒が飛ぶ事は有るが、戻る事は少なくなった。でもまだ有る。

      関係が有るかどうかわからないが、GPSのRXD信号には何も入っていない(オープン)ので、 ノイズが入る可能性が有る。なので10kΩで3.3Vにプルアップした。
      今の所 良くなったかはわからない。悪くはなっていないみたい。

      秒表示の選択とその形式の表示を追加した。ビルドは通った。
      今日はここまで

    • 2023年3月29日

      RXDのプルアップは効果がある様だ。現在はGPS基板の中でプルアップ抵抗を付けているが、 外側で付けたい。簡単なのは5Vにプルアップだが、GPS側で入力を5Vまで許容出来ない様なので、 抵抗分割で3V位を入れる事にする。GPS基板の入力はCMOSなので入力電流は無視できるとする。

      秒表示の選択とその形式の表示を追加したソフトをCPUに書き込んだ。
      手直しをしながら 一通りの動作は確認できたので、ソフトは良しとする。
      TWIの動作クロックを400kHzにした。この方が少しはキビキビ表示する。

      GPS基板をどの様に実装するかを考える必要が有る。
      ユニバーサル基板に取付穴とコネクタを付けるのが速いと思う。 そうすれば、今は直付けしているLEDや抵抗もその基板に乗せる事が出来る。
      鋸とドリルで作る事になると思う。

    • 2023年4月3日

      OLED基板とGPS基板はユニバーサルを切り抜いて取り付け、 基板(LED+RTC)に取り付けた。
      RXDのプルアップ抵抗(22kΩと33kΩで5Vから約3V)は ユニバーサル基板に取り付けた。

      曜日も表示したいので、もう一つ基板(2連LED)を作ろうとしたら、 部品が足りないので、注文の必要が有る。
      もう少し、組立を進めてから、最終的な不足分など注文したい。
      取りあえず、以前のPICの1桁だけの表示器を追加して、 表示出来る事は確認したが、LEDの高さが合わないので、 新しい基板(2連LED)を作る必要が有る。

    • 2023年4月6日

      秋月には不足の部品を注文した。夕方には発送されたので、明日には手元に来るだろう。

    • 2023年4月7日

      秋月から部品が届いた。
      基板(2連LED)は組み上がったが、まだプログラムを書き込んでいない。
      今日はここまで

    • 2023年4月9日

      プログラムをCPUに書いた。
      ISPコネクタのRESET端子の半田付け不良で手間取ったが、無事に表示まで確認できた。
      曜日の「日」のフォントがあまり良くない感じ。どうするかは後で考える。 ダメという訳では無いが、他の曜日の物と違っているので良くない感じが有る。
      今日はここまで

    • 2023年4月10日

      ケースに入れる代わりに、取りあえずはアクリル板で挟んだ。
      以前のPICの物より明るく感じるが、コントラスト的にはまだどちらが良いか。
      実用的には、日光が入る部屋でどの程度見えるかで決まる。
      取りあえずは、これで完成として、資料の作成、整理を行う必要が有る。

    • 2023年4月11日

      日光が入る部屋でも普通に見える。(直射日光は当たらない場所で)
      夜に部屋の明かりを落として、暗くなった時は、明るすぎる感じ。 なので、周囲の明るさで、LEDの明るさを変えたい。
      これは、LEDの表示基板で処理をしなければならないが、明るさの検知はGPSが有る基板でしか 検知出来ない。
      なのでその検知結果を6Pのコネクタの空き信号(6ピン、PC2信号))に乗せる事にする。
      表示基板では、この空き信号(6ピン)はAD7に接続されているので、A/D変換で値を見て 5Vか0Vかを判断すれば、明るさを変える事が出来る。 明るい(今の明るさ)と暗い(真っ暗でちょうど良い)の2段階になる。
      表示基板のプログラム領域が今は一杯なので、どうにかしてこの明るさ変化のプログラムを入れなければならない。 これが大変だろう。

      GPS基板の1秒点滅が、夜はうっとうしい。ソフトではやりようが無いので、 物理的に何かで 遮蔽(フィルター)したい。

    • 2023年4月12日

      表示部の明るさ変化の部分んは、取りあえず入れ込んでから、プログラム領域に収まるように算段を考える事にする。

      追加する処理としては
      1. A/D変換を追加し、値を取得する。
        現在、変換ルーチンは割込みの中で呼んでいるが、初期化をしていないので 実際の動きは無く、値も取れていない状態。
        初期化をして、メイン側で値を取得する関数を呼べば、値は取得できるハズ。
      2. タイマー割込みを250uSして、8x8LEDの表示の周期を4倍にして、 明るさが今まで通りの時は、いつも表示して、暗くするときは4回に1回表示する事にする。 つまり、パワー的には1/4にする。どの位の暗さかはやってみて調整をする。
      3. タイマーを250uSにするので、今までの1mS前提のタイマーを250uSに対応させる。 1mS前提のタイマーは無く、 10mSのタイマーなので1mSから10mSを作るカウンターの値を変更する。

      表示部の明るさ変化のプログラム(旧7)は出来た。プログラム領域もギリギリ4086バイトでに収まった。
      感覚的にはもう少し暗くしたいが、これで様子を見る。

      LED+GPSの基板の修正を考えた。
      1. A/D変換を追加し、Cdsの値を取得する。
        現在、A/D変換の関係は入っていないので、
        初期化とタイマー割込みの中の処理を追加する。
        メインから呼ばれるA/D値を取得する関数も追加する。
      2. メインのループの中で、一定時間ごとにA/D値を監視して、 或る値(600+50)を超えたら、6ピンコネクタのSPAREの信号(PC3)をHigh にする
        Highの時にその値が或る値(600-50)を下回ったら、Lowにする。
        Highにする値とLowにする値は変えてヒステリシス(100)を持たせる。
      3. PC3を出力に設定して、最初の出力はLowにする。
    • 2023年4月13日

      LED+GPS基板の明るさ変化のプログラム(旧5)は出来た。
      表示部を繋げて、試してみたら、やはりもう少し暗くしたいが、これで様子を見る。

    • 2023年4月14日

      表示の明度の変更タイミングがそれぞれの桁でズレる。実質的に問題は無いのだが、見た目が良くない。
      今は、約1秒間隔で暗くする信号の平均値を見ているが、この信号はデジタル信号なので、平均値の必要は無いし、 間隔もLEDの表示のタイミング(ダイナミック表示の所)で見ても良いと思える。 表示部のプログラムを変更したい。

      LED+GPSの所の暗くする信号の有無をOLEDに表示しているが、 その表示方法が良くない。秒をバー表示している時はバーを書き換えた時に消えてしまうので 位置を変更して、印ももう少し見やすい物にしたい。
      -->プログラムを変更して四角印で位置を上にずらしてた。

    • 2023年4月15日
      表示の明度の変更タイミングがそれぞれの桁でズレる件を改善する。
      1. A/D変換はタイマー割込みの中で、10mSに1回にする
      2. 平均値を求める元になるA/D値は4個にする
      3. 10mSを作る為の変数の値で、
        1でA/D変換をして、2で[0]の値を求め、3で[1]の値を足して、 4で[2]の値を足して、5で[3]の値を足して、 6で平均値を求めて、明暗用のグローバル変数をセットする
      4. ダイナミック表示では、
        分割した表示の0番目で、且つ、0番目のカラムの時に、 明暗用グローバル変数を関数内のスタティック変数に入れて スタティック変数で明暗の判断をする。
      5. 10mSを作る為の変数の値で、
        1でA/D変換をして、 3で[0]の値を求め、[1]の値を足して、[2]の値を足して、 5で[3]の値を足して、平均値を求めて、 7で明暗用のグローバル変数をセットする
      6. ダイナミック表示とは直接関係ないが、
        10mS後との1秒を作る為操作は、10mSを作る為の変数の値で、 9の時に行う。

      プログラムは修正した。

    • 2023年4月20日

      GPS用のジャンパーとOLED用の抵抗を赤字で回路図に追加した。
      この追加はネット情報には反映されないので、このまま基板図を作っても、追加前の基板と同じになる筈。

      GPS時計の取扱説明書を書いた。

    • 2023年4月22日

      2連8x8ドットLEDの取扱説明書を書いた。

    • 2023年8月3日

      2連8x8ドットLEDの1ブロック(右から2番目のコロンの所)が点灯しなくなった。 バラして単体で動作させてみたが、原因がハッキリしない。CPUが動いていないみたい。
      使えないと不便なので、表示のちょっと暗い予備の物に交換して、取りあえずは使う事にした。

    • 2024年1月3日

      上記の1ブロック動作しなくなって交換した物をだいぶ時間が経過してしまったが、修理した。
      CPUを交換して、プログラムは書き込めるので 書き込んだのだが動作しない。
      電源電圧とか見ても、4.97Vは入っているので問題は無いだろう。
      色々とヒューズ設定をいじった結果、4.3VのBODLEVELでは動かない事が判明した。 以前(2023年3月6日)の製作途中で、BODLEVELを4.3Vにしたら動かない物が有ったが、 それは2.7V設定で使っている。
      やはりBODLEVELは精度が落ちるのだろうか?(規格上は4.1V~4.5V)となっているのだが)
      交換する前のCPUの実際のBODLEVELがいくつなのかはわからないが、見た目の動作しない時の状況を見ると BODだったのかもしれない。とすると、BOD電圧は経年変化が大きい事になる。これに頼るのは危ない感じ。
      取りあえず、この基板は予備として保管する。

    • 2024年11月1日

      昨日の夜、OLEDの表示がおかしい事に気が付いた。 内容と明るさのムラが有って何が書いて有るかわかりにくい。8x8ドットの時計表示は正常。
      電源の入切を行っても、明るさのムラはまだ有るが、内容は時計表示みたい。
      カメラで撮影してからよく見ると電源入切の前の表示は、GPSデータみたいに見える。

      原因が何かわからないが、結果的にはOLEDは壊れた。他の所に異常はない。
      電源に何かノイズが乗ったか、なども考えられるが本当の所はわからない。

      2023年8月3日でも、8x8ドットLEDのブロックが一つおかしくなった。 今使っているUSB電源は良くないのか?

      1年以上連続動作で、本体の8x8ドットの表示は何も問題が無いので、 この機器の決定的な欠陥にはならないと思う。
      ただ、OLEDは1年半以上の連続使用に耐えられるか?
      連続動作に使用したのはこれが初めて。
      ノイズに弱いとかは有るかもしれないので ノイズで誤動作はしょうがないと思うが、 電源入切では復帰してほしい。
      恒久的な破損は回避したい。
      これ以外のパーツや、同じUSB電源の機器は何とか動いているので。

  • 参考資料

ホーム          カメラと写真        2024年11月1日更新 Taishi