1ドルCPU(STM8S103F3)ボードで時計を作って見ました
以前、Arduinoの検討の時に使用したDS3231のRTCモジュールが手元に有ったので
表示部と時刻設定用のキー入力部を組み合わせてSTM8S103F3ボードで動かして
時計を作って見ました。今回実現させた機能は100円ショップで購入できる程度の
ものでしたが、マイコンチップの8KバイトでもRTC、LCD、KeyPadの3つの
モジュールを動かす事ができる事が判りました。また、この実装状態でも、
プログラムメモリには更に1.5KB程度の空きが有ったので、RTCを別の用途でも
利用可能である事もりました。以下がその検討状況です。
<使用したRTC関係モジュールの概要>
以前、Arduinoでの検討で利用した手持ちのRTC(DS3231)モジュール、I2Cで
動作するLCD1602モジュール、および後で購入したアナログのキーボードを
利用して、STM8S103F3のボードによる時計を作って見ました。
1.I2Cシリアルバス対応
2.温度センサーをチップ内に内臓
3.4KバイトのEEPROM (24C32) を基板上に搭載
4.I2Cアドレス
DS3231 : 0x68, EEPROM : 0x50~0x57 (all open 0x57)
5.時計駆動用電池の充電回路付き
1.16x2のLCDは4ビットモード、I2C変換ボードを利用してI2Cモードで
利用
2.使用電源電圧は5V
3.I2C変換ボードのチップはPCF8574でI2Cアドレスは0x20-0x27、
デホルトは0x27 (チップがPCF8574Aの場合は0x38 - 0x3F、
デホルトは0x3F)
4.LCDドライバICはHD44780
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度を引いたものにする必要が有る様です。
(現状はそのままの表示で補正無し)
[テストでの機器の接続]
[コード類]
コードの開発にはIARのシステムを利用しました。
(STM8S103F3P6ボードののコード開発に 関してはこちらの記事を
参照して下さい。)
Code download URL : https://www.dropbox.com/s/x80k4z73wftd9ym/IAR_RTC_STM8S.zip?dl=0
表示部と時刻設定用のキー入力部を組み合わせてSTM8S103F3ボードで動かして
時計を作って見ました。今回実現させた機能は100円ショップで購入できる程度の
ものでしたが、マイコンチップの8KバイトでもRTC、LCD、KeyPadの3つの
モジュールを動かす事ができる事が判りました。また、この実装状態でも、
プログラムメモリには更に1.5KB程度の空きが有ったので、RTCを別の用途でも
利用可能である事もりました。以下がその検討状況です。
<使用したRTC関係モジュールの概要>
以前、Arduinoでの検討で利用した手持ちのRTC(DS3231)モジュール、I2Cで
動作するLCD1602モジュール、および後で購入したアナログのキーボードを
利用して、STM8S103F3のボードによる時計を作って見ました。
1.I2Cシリアルバス対応
2.温度センサーをチップ内に内臓
3.4KバイトのEEPROM (24C32) を基板上に搭載
4.I2Cアドレス
DS3231 : 0x68, EEPROM : 0x50~0x57 (all open 0x57)
5.時計駆動用電池の充電回路付き
1.16x2のLCDは4ビットモード、I2C変換ボードを利用してI2Cモードで
利用
2.使用電源電圧は5V
3.I2C変換ボードのチップはPCF8574でI2Cアドレスは0x20-0x27、
デホルトは0x27 (チップがPCF8574Aの場合は0x38 - 0x3F、
デホルトは0x3F)
4.LCDドライバICはHD44780
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度を引いたものにする必要が有る様です。
(現状はそのままの表示で補正無し)
[テストでの機器の接続]
[コード類]
コードの開発にはIARのシステムを利用しました。
(STM8S103F3P6ボードののコード開発に 関してはこちらの記事を
参照して下さい。)
Code download URL : https://www.dropbox.com/s/x80k4z73wftd9ym/IAR_RTC_STM8S.zip?dl=0