趣味のマイコンいじり

安価なマイコンを利用して作成したアプリの紹介です。

1ドルCPU(STM8S103F3)ボードで時計を作って見ました

以前、Arduinoの検討の時に使用したDS3231のRTCモジュールが手元に有ったので
表示部と時刻設定用のキー入力部を組み合わせてSTM8S103F3ボードで動かして
時計を作って見ました。今回実現させた機能は100円ショップで購入できる程度の
ものでしたが、マイコンチップの8KバイトでもRTC、LCD、KeyPadの3つの
モジュールを動かす事ができる事が判りました。また、この実装状態でも、
プログラムメモリには更に1.5KB程度の空きが有ったので、RTCを別の用途でも
利用可能である事もりました。以下がその検討状況です。

<使用したRTC関係モジュールの概要>
   以前、Arduinoでの検討で利用した手持ちのRTC(DS3231)モジュール、I2Cで
   動作するLCD1602モジュール、および後で購入したアナログのキーボードを
   利用して、STM8S103F3のボードによる時計を作って見ました。
    イメージ 1
   

   1.I2Cシリアルバス対応
   2.温度センサーをチップ内に内臓
   3.4KバイトのEEPROM (24C32) を基板上に搭載
   4.I2Cアドレス
        DS3231 : 0x68, EEPROM : 0x50~0x57 (all open 0x57)
   5.時計駆動用電池の充電回路付き

    イメージ 2

  1.16x2のLCDは4ビットモード、I2C変換ボードを利用してI2Cモードで
           利用
  2.使用電源電圧は5V
  3.I2C変換ボードのチップはPCF8574でI2Cアドレスは0x20-0x27、
          デホルトは0x27 (チップがPCF8574Aの場合は0x38 - 0x3F、
          デホルトは0x3F)
  4.LCDドライバICはHD44780

    イメージ 3

  1.抵抗分割方式で、スイッチオン時にスイッチ固有の抵抗分割となる方法を
          利用
  2.使用電源電圧は利用するマイコンのA/D入力の最大値

  [動作状況]
    

<関連資料>
   DS3231に関しては以前Arduinoで作ったこちらの記事を参考にしました。
     (駆動用の移植元のライブラリはこの記事で紹介した「RTClib」です。)

    LCD1602に関しては以前作ったこちらの記事を参考にしました。

<テスト内容と結果>
    今回の目的は、RTCのDS3231モジュールをSTM8S103F3ボードで動作させる
    事でしたが、Arduinoの様にPCからUartを通してのデバッグが利用できない為、
    表示用として手持ちのLCD1602モジュールを用い、また、DS3231の設定用に
    購入してあったAnalog Key Padを利用して行いました。

       1.RTCのDS3231の動作をSTM8S103F3ボード用に修正したプログラムで
             確認
       2.同時に、表示用としてLCD1602、設定用としてAnalog Key Pad も
             同時に動作させられるかを確認

   動作させた結果としては、次の様なものでした。

       1.ArduinoのRTC用ライブラリの移植に関しては、I/Oの機能ブロックの
             部分を置き換える事で対応できました。
       2.ただし、元のArduinoのRTC用のライブラリには、DS3231モジュール
             以外のものも対応できる様になっていましたが、プログラムサイズを
             小さくする為にDS3231モジュール専用としました。
       3.DS3231には、Arduinoの元のライブラリが対応していないアラーム
             機能や、不揮発性のメモリも搭載されていて、これらを利用すれば
             面白い機能が実現できると思われましたが、これらは次に必要となった
             時に対応する事とし、今回はDS3231のモジュールの動作の確認に
             留めました。
       4.また、DS3231にはチップ内の温度センサーの情報が外部に取り出せる
             様になっており、古いライブラリでは対応していたのでそれも表示する
             様にしました。ただし、チップ内の温度なので外部温度に換算するには
             チップ内の温度上昇分の2~3度を引いたものにする必要が有る様です。
            (現状はそのままの表示で補正無し)

 [テストでの機器の接続]
     イメージ 4

       イメージ 5

 [コード類]
     コードの開発にはIARのシステムを利用しました。
  (STM8S103F3P6ボードののコード開発に 関してはこちらの記事
         参照して下さい。)

     Code download URL : https://www.dropbox.com/s/x80k4z73wftd9ym/IAR_RTC_STM8S.zip?dl=0