趣味のマイコンいじり

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

STM8S103F3ボードとGY-271で電子コンパスを作って見ました

前にArduino UNOで検討したGY-271による電子コンパスをSTM8S103F3ボードでも
動かして見ました。今回はさすがに8Kバイトのコード容量の制限がきつかった
のですが、なんとか同じ動作をさせる事ができました。以下がその状況です。

<GY-271 システムの概要>
   GY-271の磁気センサーに関しては、以前、Arduino UNOで動作させましたが、
   今回はSTM8Sのボードで同じ動作をさせて見ました。動作させたデバイス
   組み合わせも前回と同じ次のものでした。
   イメージ 1


   1.磁気センサーはGY-271 でI2Cで接続
   2.表示は0.96インチのOLED でI2Cで接続
   3.コントロールはSTM8S103F3P6ボード
   4.OLED表示内容は右側にコンパスを表示、左側に計測数値を表示

   [動作状況]
     

<関連資料>
     前回の磁気センサーの記事はこちらでOLEDに関してはこちら

   磁気センサーからのセンサー情報の読み出しに関してはこちらのHMC5843用
     のライブラリを参考にしました。
       URL : http://www.timzaman.com/wp-content/uploads/2011/04/HMC1.zip     

 <テスト内容と結果>
    今回の磁気センサ―のテストは、前回、Arduino UNOで行った同じ内容でも
    STM8S103F3のボードに移植可能かどうかを検討して見ました。

       1.磁気センサーの内容表示には三角関数が必要となるが、これの実装方法と
             動作の確認
       2.RAM容量の制限からグラフィック描画が左右の半分づつしかできない
             OLEDでの動作状況の確認
       3.このCPUボードの小さなコード領域での必要な機能jを実装する方法の
             検討と動作の確認

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

       1.磁気センサ―の内容表示に必要な三角関数の全てで標準の「math」
             ライブラリーを利用すると、コードの量が8Kバイト内に収まらなくなり、
             解像度が低い為ラフな値で良いサイン/コサインの関数はテーブルを
             利用する方法を検討して、これに置き換える事で対応しました。
       2.半分の画面づつのグラフィック表示に関しては、右をグラフィック画面、
             左をテキスト画面にする事で、前回と同等な表示を行う事ができました。
       3.必要な機能を全て実装すると、最初はコードの量が8Kバイトを超えて
             しまいましたが、コンパイルの最適化のオプションをLowからMedium
             にしたら8Kバイトの制限内に収める事ができました。
       4.前回利用したライブラリーの磁気センサーデータ読み出し方法では、
             最初にセンサーのキャリブレーションの為にグルグル回す必要が
             有りましたが、今回参考したライブラリーの方法ではこれは必要
             なくなりました。

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

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

     Code download URL : https://www.dropbox.com/s/m2dq9du1l1tdhu5/IAR_GY-271_STM8SS.zip?dl=0