趣味のマイコンいじり

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

三菱エアコン霧ヶ峰奮闘記

趣味のマイコンいじりからは話題がそれるのですが、参考になればと思い
我が家のエアコンが動かなくなった時に対応した内容を記事にしました。

<症状>

夜中にエアコンが止まったのですが、その時は外気温が低くなっていたので
その為に止まったのだと思っていました。数日後、再び熱くなったので寝る
時にエアコンを入れたら、次の様な症状でエアコンとしての動作はしません
でした。 

  f:id:I_Satoh:20200825204757p:plain

      1.最初は運転ランプが点灯するが、数分経過すると点滅になる。
      2.点滅のパターンは一定で繰り返す。

<機種>

室内機および室外機の機種は次の型名のものです

  f:id:I_Satoh:20200825205337p:plain

       f:id:I_Satoh:20200825205417p:plain

       室内機は「MSZ-J227-W」で室外機は「MUZ-J227」

<対応>

対応としては、室外機で電源の有無を確認した所、電源がオフとなっており
また、室内機の様子を見ていると、次の様な動作をしている事が判りました。

      1.室内機の電源をコンセントを再投入してリモコンで動作を開始させる。
      2.最初は運転ランプが点灯状態で室内機のファンが回り、数分後に、
             室内機の室外機へ電源投入用のリレーがオンする音がして室外機に
             電源が供給されている様な感じになるが、その後直ぐにリレーがオフ
             する様な音がして運転ランプが点滅状態となる。

以上の事から、最初は室内機の不具合と想定して室内機のあちこちを調べた
のですが、症状は直りませんでした。我が家は同時期に同一機種のエアコンを
2台購入していたので、室内機の基板を一つづつ交換して見たのですが、
やはり直りませんでした。ネットを調べると、室外機の基板の不良が圧倒的
だと有ったので、室外機の基板を交換して見ました。すると、今度は正常に
動作する様になりました。室外機の基板交換は次の手順で行いました。

 [室外機の内部と基板]

  f:id:I_Satoh:20200825211512p:plain

  f:id:I_Satoh:20200825211553p:plain

      1.上蓋の4カ所のネジを外して上蓋を外す。
      2.前蓋の6カ所のネジを外して前蓋を外す。
      3.基板の金属蓋を外す。(蓋はフック止め)
      4.基板を外す。(基板はフック止め)
      5.基板上および基板端子が付いているコネクタとアース線止め用の
             ネジを外す。(基板へのコネクタにはロックが掛かっているので
     ロックノブを押しながらコネクタを抜く)

  f:id:I_Satoh:20200825212312p:plain

 [室外機基板の交換]

室外機の交換基板に関しては、2020年8月の現時点でも三菱電機から
6千円台で購入できる様です。ただし、一般の人には販売して頂けない様で、
ネットでは、電気工事師の資格保持者と言う事で売って貰ったと言う記事が
有りました。でも、代理店を通すと購入できる様で、ネット上に次の2店を
発見しました。

      1.家電の修理センター(こちらの方が親切で安い?)            

http://www.kaden-shuuri.com/company/index.html

      2. エアコンパーツマニア     

http://www.eakon-partsmania.com/html/info.html

 

時間的に急いでいたので、最初に発見した2の方で修理基板を発注しましたが
基板そのものが1より千円位高く、しかも送料が二千円以上しましたので、
結局一万円位かかりました。また、2のお店が休みに入る為、納入が3週間後
になるとの事なので、壊れていた基板の状況をチェックして見ました。

 [不良室外機基板のチェック]

      1.切れているヒューズは無し。
      2.室外機のCPUから駆動しているテスト用LEDがセット状態では
           点灯せず。(もちろん点滅もなし)
       3.基板単体で5Vの端子に電源を与えるとテスト用LEDが点灯
       4.外観検査で、半田の浮きや割れは発見されず。
  5.電解コンデンサの容量をチェックしても不良品は発見されず。
  6.CPU電源生成用のICをチェックすると、異常な端子を発見。

  f:id:I_Satoh:20200825215434p:plain

なお、このICに関しては、秋月や若松の通販サイトでは発見されません
でしたが、Amazonで売っている事が判明しました。その中で香港から
発送するので早いと書いてあったのを選んで10個千円で頼みました。
結果的に早く無かったのですが、本日到着しましたので、交換したら
エアコンが動作する様になりました。結局、交換用の基板と、ICの残り
9個は使わないままで終わる様になり、勉強代に無駄な一万円を使って
しまいました。以上です。

 

 



 

STM32F103C8 ボード上での Arduino IDE の利用

<STM32F103C8ボードの概要>

   購入したSTM32F103C8のチップを搭載したものは次のもので、前にも
    Arduinoでの対応状況を調べたのですが、状況が変わっている様なので  
   再度調べて見ました。なお、今回のArduinoIDEでは書き込みツール
   として数種類が用意されていましたので、その中で手持ちのUNOの流用
   が可能はシリアル形式と、メモリの消費が2KB以下の「HID bootloader」
   を取り上げました。その時の状況は次の様なものでした。

f:id:I_Satoh:20200131102233p:plain

 [STM32F103C8ボード]

    1.CPU : STM32F103C8T6, 32bits, ARM Cortex-M3
            (この青い基板のものは Blue pill と呼ばれている様です。)
    2.ROM 64Kバイト/RAM 20Kバイト
    3.最大動作周波数 : 72MHz
 4.CPU電源電圧 : 2.0-3.3V

 [Arduino IDEインターフェイス対応状況]

    1.STM32CubeProgrammer(SWD) --- ST-Link (動作は確認)
    2.STM32CubeProgrammer(Serial) --- 今回の調査対象
    3.HID Bootloader --- 今回の調査対象
    4.Maple Bootloader (動作は確認)

 [調査内容のビデオ]

   


 
<関連資料>

    1.回路図
            URL : https://github.com/dhylands/stm32-test/blob/master/board-STM32F103-Mini/STM32F103C8T6-Schematic.pdf

<調査内容>

   今回の導入状況の検討目標は次のものとしました。

       1.コードの作成から書き込みへの操作が連続して行えるかを確認
       2.コード書き込みに関しては、特別な追加デバイス不要な手段が
              有るかどうかを確認
       3.作成したコードがボード上で問題無く動作する事を確認

      結果としては、以前のものよりかなり使い易くなっていると思い
      ました。なお、作成したコードの書き込みに関しては、最も便利
      なのがST-Linkによるものでしたが、シリアル(USB to TTL-UART)
      による方法でも、新しいコードをコンパイルする前にボートの
      リセットを行うだけで良く、配線が多少複雑になるだけで、
      ST-Linkと同様に便利な方法だと思いました。ブートローダによる
      方法に関しては、HIDではターゲットのプログラムを書き込んで
      実行すると、USBの接続が切れ、BOOTピンの操作とリセット
      スイッチの操作のみで再度ブートプログラムを起動しても、
      USBの接続が切れたままでPC側のドライバーが再インストール
      されませんでした。その為、BOOTピンの操作の後、一旦ボードの
      電源をオフ/オンして再起動する必要が有り、操作が多少不便でした。
    (USB端子も壊れそう)そこで、CPUをリセットするとUSB端子で
      プルアップされている部分をGNDに落とす回路を付けて、ボードの
      リセットのみでもUSBが再接続される様にしました。ブートローダ
      方式として他にMapleが有りましたが、こちらでは同じ問題は
      有りませんでしたが、その代わりにIDEが書き込みを始める直前に
      ボートのリセットを行う必要が有りました。またフラッシュメモリ
      消費がMapleでは7%程度大きくなっていた為、そこで検討は
       止めました。いずれにしても、以前に比べて、ArduinoIDEが利用
       しやすくなっている事が良く判りました。UNOの代わりにこの
       ボードを利用する時には重宝するかと 思いました。

 [Arduino IDE の拡張]

       ArduinoIDEに対しては次の拡張を行います。  

        1.環境設定に「stm32duino」のボードマネージャーのURLの追加

               f:id:I_Satoh:20200126105159p:plain

               URL : https://raw.githubusercontent.com/stm32duino/BoardManagerFiles/master/STM32/package_stm_index.json

         2.ボードマネージャーに「STM32 Cores」のライブラリをインストール
                f:id:I_Satoh:20200126105344p:plain

         3.ボードパラメータの設定
               <Serial>
                   f:id:I_Satoh:20200131104156p:plain

              <Bootloader>

                   f:id:I_Satoh:20200131104431p:plain

 [書き込みツールのインストール]

      Serialの書き込みツールとしては、IDE指定の「STM32CubeProg」を
      インストールして利用します。

         f:id:I_Satoh:20200126105625p:plain

 

 [モードピンの設定]   

       コード開発中はピンの接続を次の様にします。

            Serial flash : BOOT0=1, BOOT1=0
            HID boot :
                 1.ブートローダ起動
                      BOOT0=0, BOOT1=1 then CPU Reset
                  2.ブート起動後元に戻す
                         BOOT0=0, BOOT1=0

                     f:id:I_Satoh:20200131105301p:plain

 [書き込みツールの接続]

       Serialの書き込みの時はUNOの「USB to TTL-UART」の部分を利用して
       次の接続を行います。

           f:id:I_Satoh:20200131105509p:plain

 [ブートローダのダウンロード]

       HIDのブートローダとSerialでの書き込みツール(stm32flash)の入手は
       以下から行います。
         f:id:I_Satoh:20200131105702p:plain

        f:id:I_Satoh:20200131105801p:plain

 [ブートローダの書き込み]

       ブートローダの書き込みはSerialの書き込みで、「stm32flash」を
       利用して行います。

         f:id:I_Satoh:20200131105933p:plain

 [ボードの改造]

      ブートローダを利用する場合、ボードのリセットのみでUSBの
      再接続を行うには次の改造がボードに必要です。

       f:id:I_Satoh:20200131110124p:plain

 

 

STM32F030F4 ボード上での Arduino IDE の利用

<STM32F030F4P6ボードの概要>

     購入したSTM32F030F4のチップを搭載したものは次のもので、
     ArduinoIDEでの開発にも対応している様なので調べて見ました。
    その時の状況は次の様なものでした。
   f:id:I_Satoh:20200126103851p:plain

        1.搭載されているCPUはSTM32F030F4P6 (16kB Flash, 4kB SRAM)
        2.ボードに付加されているもの マイクロUSBポート
        3.使用電源電圧 2.4V~3.6V
        4.ボードサイズ 30mmx46mm

 [調査状況]

     
 

<関連資料>

      1.回路図
               URL : http://www.haoyuelectronics.com/Attachment/STM32F030-Dev-Board/STM32F030F4P6.pdf

 

<調査内容>

     STM32F030F4ボードへArduinoIDEを導入する時の検討目標は次の
       ものとしました。

            1.コードの作成から書き込みへの操作が連続して行えるかを確認
            2.コード書き込みに関しては、特別な追加デバイス不要な手段が
                    有るかどうかを確認
            3.作成したコードがボード上で問題無く動作する事を確認

        結果としては、Arduinoの他の種類のボートの場合と同じ様にコードの
        開発ができるのを確認しました。なお、ST-Linkが利用できる事は確認
        していましたが、今回はST-Linkを使わない方法としてブートモードでの
        シリアル(TTL-UART)による方法を確認しました。その場合、
        USB->TTL_UARTの変換用のデバイスが必要となりますが、これに
        関しても手持ちのUNOのUSB->TTL_UARTの変換部分を利用する事で
        対応できました。調査をする中で、最初は、購入したボードのメモリに
        プロテクトが掛かっていて、テストコードが書き込めませんでした。
        これに関しては、ST-Linkを繋いで「ST Visual Programmer」で
       「Option Byte」を変更すれば問題が解決する事が判りました。その為、
         シリアルでの書き込みは諦めかけましたが、前にWeMosD1のモータ
         シールドを検討していた時に使ったコマンドライン形式の「stm32flash」
         が利用できる事を思い出し、そちらでメモリプロテクトの解除ができる
         のを確認しました。その為、シリアルでの方法のみでもコード開発が
         できるのが確認できました。ただし、Arduinoのプラットホームでかなり
          コード容量を消費する様で、単純なブリンクのテストでもコード容量の
          半分近くを消費する様で、小さいプログラムでしか利用できない事も
          確認しました。いずれにしても、Arduinoを利用すれば、面倒なCPUの
          初期設定が不要となり、小さなプログラムをお気楽に作る時には重宝
          するかと思いました。

 [Arduino IDE の拡張]

       ArduinoIDEに対しては次の拡張を行います。

        1.環境設定に「stm32duino」のボードマネージャーのURLの追加

               f:id:I_Satoh:20200126105159p:plain

               URL : https://raw.githubusercontent.com/stm32duino/BoardManagerFiles/master/STM32/package_stm_index.json

         2.ボードマネージャーに「STM32 Cores」のライブラリをインストール

                f:id:I_Satoh:20200126105344p:plain

         3.ボードマパラメータの設定

                 f:id:I_Satoh:20200126110617p:plain

 [書き込みツールのインストール]

       書き込みツールとしては、IDE指定の「STM32CubeProg」をインストール
       して利用します。

           f:id:I_Satoh:20200126105625p:plain


 [ブートモードの設定]

       コード開発中はピンの接続をブートモードにして書き込みを行い、
       書き込み終了後に元に戻して動作の確認を行います。

          f:id:I_Satoh:20200126105826p:plain

 [書き込みツールの接続]

      コード開発中は次の接続を行います。

         f:id:I_Satoh:20200126110015p:plain

      コード開発中のArduinoIDEとの連携は次の様に行います。

        1.ボードをブートモードに設定
        2.ボードをリセット
        3.IDEコンパイル開始(マイコンボードに書き込む)
        4.書き込み終了後にボードのブートモードを元に戻す
        5.ボードをリセット
        6.コードの動作を確認

 [メモリプロテクトの解除]

      メモリのプロテクトが掛かっていて、新しいコードが書き込めない時は
       次の様にします。

       f:id:I_Satoh:20200126110316p:plain

       1.stm32flashをインストール
       2.ボードをブートモードにセット
       3.ボードのCPUをリセット
       4.stm32flashのファイルが有るホルダで次のコマンドを実行
              stm32flash -k COMx
                    x : 書き込みツールのシリアルポートの番号

 



STM32F407VE/G ボードでの MicroPython

<STM32F407VE/G ボードの概要>

    手持ちのSTM32F407VE/Gのチップを搭載したものは次の2種類で、
    ボード上へのMicroPythonの導入コードも紹介されていましたので
    調べて見ました。その時の状況は次の様なものでした。

 f:id:I_Satoh:20200120092144p:plain

[STM32F407VEボード]

  1.搭載されているCPUはSTM32F407VET6 (512kB Flash,
         192+4kB SRAM)
  2.ボードに付加されているもの
      ミニUSBポート、SDカードスロット、NRF2401ソケット、
         フラッシュメモリ、電池ケース
  3.使用電源電圧1.8V~3.6V
  4.ボードサイズ 73mmx85mm

[STM32F407VGボード]

  1.搭載されているCPUはSTM32F407VGT6 (1MB Flash,
         192+4kB SRAM)
  2.ボードに付加されているもの
       マイクロUSBポート
  3.使用電源電圧1.8V~3.6V
  4.ボードサイズ 46mmx58mm

 [解説ビデオ]

  


<関連資料>

    1.STM32F407VEボード
            URL : https://github.com/mcauser/BLACK_F407VE/blob/master/docs/STM32F407VET6_schematics.pdf

                      https://os.mbed.com/users/hudakz/code/STM32F407VET6_Hello/shortlog/

    2.STM32F407VEボードへのMicroPythonの導入
             URL : https://github.com/mcauser/BLACK_F407VE

    3.STM32F407VGボード
             URL : http://dubstylee.net/v/diy-more-stm32f407vgt6/

     4.STM32F407GVボードへのMicroPythonの導入
              URL : https://github.com/BLavery/STM32F407VG-Micropython

<作業内容>

    STM32F407VE/GボードへMicroPytnonを導入する時の作業は次の
      ものでした。

       1.Linuxでのファームウェアの作成
       2.MicroPythonへ対応するためのボード改造方法の確認
       3.ファームウェアの書き込み方法の確認
       4.コード作成方法の確認
       5.SD交換のみでプログラムの変更ができるのを確認

       結果としては、Linux上のコンパイルおよび書き込み等はWeb上の
       記事を参照しながら問題無く行えました。改造に関しては、
       STM32F407VEボードでは、当初、基板上のリセットのみではSDの
       交換が上手く行かなかったのですが、USB端子処理をPyboardと同じ
       にする事(プルアップ抵抗を外す)と上手く行くようになりました。
       STM32F407VGのボードは、SDカードの対応が無かったのですが、
       公開されていたボード対応のコードの一部を変更する事により対応
       できる様になりました。SDカードをマウントすると、コード用の
       領域が今までのRAM領域の制限から、SDカードの容量に変更される
       ため、コードサイズの問題で悩む事はなくなった様です。(本格的な
       コードを作成では未確認ですが) いずれにしても、速度を気にしな
       ければ、SDカードを利用する事により、ほぼ自由にコードの作成が
       できる様になった様でとても良いかと思っています。

  [ファームウェアコンパイル]

   ファームウェアコンパイルは、手持ちのPCにインストールしている
   VMLinux(Ubuntu)を使って行いました。今のLinuxの操作感はWindowと
   良く似ていて、余りLinuxに詳しく無い私でも問題無く行う事ができました。
   また、コンパイル出力もネットを通じての共有がとても便利で、簡単に
   受け渡しができました。作業の流れとしては、以下の順番で行いました。


     <ソースコードの入手先>
        MicorPython : http://micropython.org/download

        STM32F407VE : https://github.com/mcauser/BLACK_F407VE

        STM32F407VG : https://github.com/BLavery/STM32F407VG-Micropython

     <STM32F407VE/G ボードフォルダのMicroPythonコードへのコピー>
        MicroPythonコードコピー先フォルダ : micropython/ports/stm32/boards/
        各ボード用コードのコピー元フォルダ :
               STM32F407VEは「BLACK_F407VE-master」
               STM32F407VGは「STM32F407」
     <「arm cross compiler」 のインストール>
        Linuxコマンドで
        wget https://launchpad.net/gcc-arm-embedded/5.0/5-2016-q3-update/+download/gcc-arm-none-eabi-5_4-2016q3-20160926-linux.tar.bz2
        tar xvfj gcc-arm-none-eabi-5_4-2016q3-20160926-linux.tar.bz2
        sudo apt-get -y install lib32z1 lib32ncurses5
     <ファームウェアコンパイル
        先に「mpy-cross」をコンパイル(Linuxコマンドで)
        cd micropython/mpy-cross
        make
        次にファームウェア全体をコンパイル
        cd micropython/ports/stm32/
        make BOARD=xxxxxxx CROSS_COMPILE=~/gcc-arm-none-eabi-5_4-2016q3/bin/arm-none-eabi-
        xxxxxxx :
           STM32F407VE では「BLACK_F407VE-master」
           STM32F407VG では「STM32F407」
     <コンパイル出力の取り出し>
        cd build-xxxxxxx/
             Hex output : firmware.hex
             Dfu output : firmware.dfu
                xxxxxx はファームウェアコンパイルのものと同じ

[ボードの改造]

  STM32F407VのMicroPythonはPyboardが雛形で、STM32F407VEの
  ボードでは、USBの端子処理によりボード上のリセットだけではUSBの
  切り替えに対応できていませんでした。 (ボード電源のオフ/オンが
  必要) その為、USBの端子処理を雛形のPyboardに合わせました。また、
  STM32F407VGにはSDカードの対応がされていない為、SDカードの
  対応ができる様にしたものも用意しました。

   <STM32F407VEボード>
   
      f:id:I_Satoh:20200120124442p:plain

      USB端子処理をPyboardと同じにして、ボード上のリセットのみで
      USBの切り替えを行える様にする為です。

   <STM32F407VGボード>
      f:id:I_Satoh:20200120124650p:plain 

    f:id:I_Satoh:20200120124753p:plain

      f:id:I_Satoh:20200120124950p:plain

      STM32F407VGボードにはSDカードのスロットが無い為、これを
      取り付けてPyboardと同じ様にする為です。

 [ファームウェアの書き込み]

   ファームウェアの書き込みを行う時は、まず、ボードの設定をDFU
   モードにします。
     f:id:I_Satoh:20200114202004p:plain

      f:id:I_Satoh:20200114202124p:plain

    書き込みツールは2種類有り、hex or bin ファイルの時は次のものが
    有効です。
      f:id:I_Satoh:20200120130953p:plain

 

     dfu ファイルの時は次のものが有効です。hex or bin を dfu ファイルに
     変換するツールがこのツールをインストールする時に付いていて、
     それを利用して hex or bin のファイルに対応する事も可能です。

      f:id:I_Satoh:20200120131137p:plain

  [SDカードの初期化]

    SDカードを利用する場合、SDカードに初期ファイルを書き込む必要が
    有ります。作業的には、SDカードなしで読みだ出せる内容をSDカードに
    コピーする事になりますが、一旦SDカード無しの状態で起動し、それを
    PC上に読み出して、次にSDカードを挿入した状態にしてSDカードに
    コピーする事で対応可能です。

    f:id:I_Satoh:20200120131449p:plain

[コードの開発]

   コードの開発はIDE(Thonnyがお勧め)を用いて行う事ができますが、
   SDカードに対応した場合、シリアルポート用のターミナルプログラム
 (Tera Term等)とエディタでSDカードの内容を編集する事によっても
   行えます。

     f:id:I_Satoh:20200120131809p:plain

      SDカードの内容に関しては、次の方法でも有効です。

      f:id:I_Satoh:20200120131957p:plain

       CPUを中断状態にすると、SDカードの内容は他のPC上の
       ファイルと同様に扱えます。 (編集、追加、削除が可能) また、
       REPL用にターミナルソフトを使うのは、デバッグ時のエラー
       状態等を表示させたりCTRL+Cによるプログラムの中断や
       DTRL+Dによるプログラムの起動を行う為です。

[SD交換によるコードの交換]

   SDカード内にはMicroPythonのコードのみで、STM32(Pyboard)系
   では同じコードで有る為、SDを交換すれば、そのプログラムも交換
   できます。

      f:id:I_Satoh:20200120132243p:plain

[ファームウェアと関連資料]

   こちらでコンパイルしたファームウェアと関連資料は次のURLから
   ダウンロード可能です。

      Code download URL : https://drive.google.com/file/d/1FaJeYM9XlG2brANwQMq2FqrOrtKjNFVN/view?usp=sharing

 



 







 

 





 

 

STM32F407VE/G ボードでの Arduino IDE の利用

 <STM32F407VE/G ボードの概要>

     購入したSTM32F407VE/Gのチップを搭載したものは次の2種類で、
     ArduinoIDEでの開発にも対応している様なので調べて見ました。
     その時の状況は次の様なものでした。

        f:id:I_Satoh:20200114163035p:plain

   [STM32F407VEボード]

      1.搭載されているCPUはSTM32F407VET6 (512kB Flash, 192+4kB SRAM)

      2.ボードに付加されているもの
          ミニUSBポート、SDカードスロット、NRF2401ソケット、
             フラッシュメモリ、電池ケース
      3.使用電源電圧1.8V~3.6V
      4.ボードサイズ 73mmx85mm

   [STM32F407VGボード]

      1.搭載されているCPUはSTM32F407VGT6 (1MB Flash, 192+4kB SRAM)
      2.ボードに付加されているもの
          マイクロUSBポート
     3.使用電源電圧1.8V~3.6V 
      4.ボードサイズ 46mmx58mm

  [対応状況]

       

<関連資料>

     1.STM32F407VEボード
             URL : https://github.com/mcauser/BLACK_F407VE/blob/master/docs/STM32F407VET6_schematics.pdf

                        https://os.mbed.com/users/hudakz/code/STM32F407VET6_Hello/shortlog/

      2.STM32F407VGボード
               URL : http://dubstylee.net/v/diy-more-stm32f407vgt6/

<対応内容>

    STM32F407VE/GボードへArduinoIDEを導入する時の検討目標は
       次のものとしました。

          1.コードの作成から書き込みへの操作が連続して行えるかを確認
          2.コード書き込みに関しては、特別な追加デバイス不要な手段が
                 有るかどうかを確認
          3.作成したコードがボード上で問題無く動作する事を確認

        結果としては、Arduinoの他の種類のボートの場合と同じ様にコードの
        開発ができるのを確認しました。なお、当初はST-Linkを利用して
        検討を進めていましたが、今回インストールした書き込みソフトの
      「STM32CubeProg」にはUSBポートからのDFUモードを利用した
        書き込みもサポートされており、それを利用する事により、ST-Linkも
        不要となる事が判りました。ただし、コード書き込み時にはDFUモード
        への設定が必要でブートモードの端子処理をした後、STM32F407VG
        ボードでは単にボード上のリセットスイッチの操作のみで対応できる
        のに対して、STM32F407VEボードでは、USBポートの切/入の再接続が
        必要な事が判りました。これは、USBポートの端子処理の違いから
        来るものかと思いました。 (STM32F407VGではUSB端子直結で、
        保護抵抗もプルアップの抵抗も無し) いずれにしても、これにより
        他のSTM32のIDEの様に面倒なCPUチップの初期設定や、また、他の
        Arduinoのボードの様にメモリ容量も気にする事無く動作部分のコードの
        開発ができるのがとても良いと思いました。、

  [Arduino IDE の拡張]

        ArduinoIDEに対しては次の拡張を行います。

          1.環境設定に「stm32duino」のボードマネージャーのURLの追加

                  f:id:I_Satoh:20200114201142p:plain

                   URL : https://raw.githubusercontent.com/stm32duino/BoardManagerFiles/master/STM32/package_stm_index.json

          2.ボードマネージャーに「STM32 Cores」のライブラリをインストール

                  f:id:I_Satoh:20200114201536p:plain

 [書き込みツールのインストール]

       書き込みツールとしては、IDE指定の「STM32CubeProg」を
       インストールして利用します。
        f:id:I_Satoh:20200114201752p:plain

 [DFUモードの設定]

      コード開発中はピンの接続をDFUモードにして、開発が終了したら
       元に戻して利用します。

        f:id:I_Satoh:20200114202004p:plain

        f:id:I_Satoh:20200114202124p:plain

        また、ブートピンをDFUモードしても、コード書き込み終了後に
       解除されるので、コードの更新の時にはDFUモードに再設定する
       必要が有ります。再設定には次の方法が有効です。

          STM32F407VEボード --- USBポートの切/入の再接続
          STM32F407VGボード --- ボード上のリセットスイッチのON/OFF

 [ドライバとツールの設定]

      DFU用のPCのドライバを更新して、書き込みツールを「USB」
      に変更します。

         1.DFUドライバの更新     

              f:id:I_Satoh:20200114202744p:plain

         2.「STM32CubeProg」の設定

              f:id:I_Satoh:20200114203023p:plain

 

 [IDEの設定]

       Arduino IDEのボードの設定は次の様に行います。

        f:id:I_Satoh:20200115085759p:plain

        1.ボードは「Generic STM32F4 series」を選択
        2.Board pat number は F407VE / F407VG を選択
        3.Upload method は 「STM32CubeProgrammer(DFU)」を選択

 [コード作成サンプル]   

       サンプルとして、blinkをロードしてボード上のLEDのポートを指定して
        利用しました。

          1.STM32F407VEボード(LEDポートはPA6とPA7)

                f:id:I_Satoh:20200114203317p:plain

                 LEDのポートを切り替えた時には、再コンパイルしたコードを
                 再書き込みする為にUSBポートの切/入の再接続を行って、
                 DFUモードへの再設定が必要となります。

          2.STM32F407VGボード(LEDポートはPE0)

                  f:id:I_Satoh:20200114203552p:plain

 

 

 



 

簡単マイコンボードプログラミング [Annex WiFi RDS]

<Annex WiFi RDSの紹介>

    前にESPBASICの記事をブログに出したら、同じ様なものとしてこの
   「Annex WiFi RDS」の紹介がコメントとして有ったので、調べて見ました。
    Web上のヘルプの冒頭にESPBASICから派生したものとの記述も有り、
    同じくBASICを利用したWeb上でESP8266のコード開発を行うもの
    でした。ただし、こちらの方が処理速度も速く、安定性も有る様に思われ
    ましたが、Html関連の部分に関しては、オプションと自由度が大幅に大きく、
    その分、Htmlの知識が無いと少しハードルが高くなるのではないかとも
     思われました。以上、調べた内容は次の様なものでした。

      f:id:I_Satoh:20191219195817p:plain

      特徴はESPBASICと同じで次の様な内容となります。

    1.IDEはCPUのファームウェア内に有り、別途IDEは不要
    2.コード開発はWIFIを利用してWebページ上で行い、CPUボードからの
              配線は不要
    3.ファームウェアはESP8266を搭載したボードで可能

 [動作状況]
      
   

<関連資料>

      1.Annex WiFi RDS
             URL : https://sites.google.com/site/annexwifi/

<テスト内容>

  動作の検証に関しては、ESPBASICと同じく次の事を目標としました。

      1.手持ちの色んなESP8266搭載ボードでファームウェア
              インストールできる事を確認
      2.簡単な例題を用意して、そのプログラムを開発する時の状況を確認
      3.数種類のアプリケーションプログラムを組んで見て、それの動作状況を
             確認

    その為のプログラムサンプルとしては、次のものを用意して対応しました。

      1.LEDオン/オフコントロールオンボードのLED)
      2.ブリンクコントロールオンボード上のLEDのLチカ)
      3.PWM(LED輝度)コントロール
      4.センサー(DHT11)入力
      5.センサー(HC-SR04)入力
      6.サーボモータコントロール
      7.OLEDコントロール
      8.DCモータ(2WDカー)コントロール

    結果としては、ESPBASICと同様に非常に簡単にプログラムを組む事ができ、
    期待通りでした。ポートのアクセスに関しては、ESPBASICと多少異なる程度
    でしたが、制御を行う為のWeb上のアクセスは大幅に異なり、Htmlの文法に
    限りなく近いものでした。(ESPBASICで使えたWeb画面上の処理で有効
    だったprint文はシリアルポートだけのものとなっている様でした。)
    安定性と速度に関しては、ESPBASICよりかなり改善されている様で、
    ESPBASICの様にコード上の工夫は特に必要有りませんでした。また、
    DCモータの低速回転時の為にはPWMの周波数を下げて使う必要が有り、
    当初の安定版のファームウェアでは100Hz以下の設定ができません
    でしたが、フォーラムのコメントに最新版では修正したとの説明が有り、
    代わりに最新の暫定版を利用する事により対応可能となりました。
     ファームウェアの更新も頻度良く行われていると思いました。
    以上から、Htmlに詳しい場合はこちらの利用がお勧めですが、まだHtmlに
    それ程詳しくなく、しかも簡単なプログラムで良ければ、ESPBASICの方が
    お勧めなんじゃないかと思いました。

 [機器の接続]
     サンプルプログラムでの配線は次の様なものでした。    

    f:id:I_Satoh:20191219201234p:plain

 [ファームウェアの書き込み]
      ファームウェアの書き込みに関しては、ツールキットが良くできていて、
      これを利用すれば問題無く対応できる様です。ただし、手持ちのESP-01では
      デホルトで上手く書き込みが出来なくて、次の様にオプション指定で対応
      する必要が有りました。

       f:id:I_Satoh:20191219201604p:plain

      なお、書き込みツールキットにはWiFiのネットワークのDHCPから割り
      振られたデバイスIPアドレスを検索する為の機能も付いていて、次の様に
      書き込み時に表示されたMACアドレスとIP検索時のデバイスMAC
      ドレスを照合する事により、ボードが簡単に検索できる様になっています。
       f:id:I_Satoh:20191219201812p:plain

     [コード類]
       Code download URL : https://drive.google.com/file/d/1lL6qrr-mDz0LFj1cw5P8E6VBTyrIcmed/view?usp=sharing

 

 

お気楽マイコンボードプログラミング [ESPBASIC]

<ESP-BASICの紹介>  

    ESP8266のチップ上で動くファームウェアとして「ESPBASIC」が
    ネット上で紹介されていたので調べて見ました。このファームウェア
    を利用すると、Web上で簡単にESP8266のプログラムを特別なIDE
    不要で組む事ができ、とても面白いと思いました。その時に調べた
    内容は次の様なものでした。

     f:id:I_Satoh:20191126124707p:plain

  1.IDEはCPUのファームウェア内に有り、別途IDEは不要
  2.コード開発はWIFIを利用してWebページ上で行い、CPUボードからの
            配線は不要
  3.ファームウェアはESP8266を搭載したボードで可能

 [動作状況]
    

<関連資料>

    1.ESPBASIC
            URL : http://www.esp8266basic.com/

    2.ESPRESSIF(Flash tool の提供元)
            URL : https://www.espressif.com/en

    3.IPチェックツール(Advanced IP Scanner)
            URL : https://www.advanced-ip-scanner.com/jp/

<テスト内容>

  ESPBASICの動作の検証に関しては次の事を目標としました。

      1.手持ちの色んなESP8266搭載ボードでファームウェア
             インストールできる事を確認
      2.簡単な例題を用意して、そのプログラムを開発する時の状況を確認
      3.数種類のアプリケーションプログラムを組んで見て、それの動作状況
             を確認

    その為のプログラムサンプルとしては、次のものを用意して対応しました。

      1.ブリンクコントロールオンボード上のLEDのLチカ)
      2.PWM(LED輝度)コントロール
      3.センサー(DHT11)入力
      4.サーボモータコントロール
      5.OLEDコントロール
      6.DCモータ(2WDカー)コントロール

     結果としては、非常に簡単にプログラムを組む事ができ、それは期待以上
     のものでとても面白いと思いました。ただし、ESPBASICのページから
     提供されていた書き込みツールでは、手持ちのESP-01以外にはファーム
     ウェアの書き込みが出来なかったので、別の方法を検討する必要が
     有りました。また、Web上での開発なので、シリアルポートを一般のI/O
     として利用して見た所、シリアルポートの動作も同時に働いている様で、
     シリアルポートデータの初期化がダミーで必要となる事も判りました。
     (それが無いと動作がとても緩慢となりました。)
     いずれにしても、特別なIDEは不要で、PCやスマホのブラウザから直接
     コードを打ち込めるので非常に使い易くて魅力的だと思いました。

 [機器の接続]
     サンプルプログラムでの配線は次の様なものでした。 

    f:id:I_Satoh:20191126130307p:plain

 [ファームウェアのダウンロード]
      ESPBASICのファームウェアの書き込みツールは、ESPBASICのWeb
      ページからダウンロード可能です。ただし、手持ちの数種類のESP8266の
      ボードで確認した所、ESP-01以外では書き込みが出来ませんでした。
      その為、別の書き込みツールを使う事にしましたが、ファームウェア
      新しいものが公開されているページが見つからなかった(見つかった
      GitHubは4年以上前のものでした。)ので、下記の様にESPBASICの
      書き込みツールを一度開くと展開されるものを利用しました。 

      f:id:I_Satoh:20191126130814p:plain

 [ファームウェアの書き込み]
      ESPBASICのファームウェアの書き込みは、ESPBASICからのツールが
      使えない場合、下記の様に、ESPRESSIFの「Flash Download Tools」を
      利用します。「SPI MODE」を「DIO」にして、先にESPBASICの書き込み
      ツールから展開した該当のファームウェアを指定して、一旦 消去してから
      書き込みをスタートさせます。なお、この時にMACアドレスがツールの
      下窓に表示されますので、これをチェックして置きます。
      (後でCPUボードのIPアドレスの確認で必要となります。)

      f:id:I_Satoh:20191126130610p:plain

      書き込みが終了したら、CPUをリセットして下さい。(念の為)

 [ファームウェアの設定]
      ファームウェアの書き込みが終わったら、APモードでの利用が可能と
       なっていますが、他のWIFI機器と一緒に使いたい場合はSTAモードでの
       利用に設定する為、下記の様にお使いのWIFIネットワークのSSID
       パスワードの設定が必要となります。 その為の手順は次の様になります。

        1.PC(またはスマホ)のAPをCPUボードからのものに切り替えます。
              (パスワードは不要。MACアドレスがCPUボードのSSID名に表示
                  されていますので、書き込みツールで表示されたAPモード時の
                  情報により確認できます。)                

                f:id:I_Satoh:20191126131422p:plain

   2.アクセスポイントをCPUボードからのものに切り替えたら、
                ブラウザを起動して、CPUボードのAPモード時のデホルトの
                 IPアドレス「192.168.4.1」のページを読み込みます。
                 ESPBASICの先頭ページが出てきますの、「SETTING」
                 ページに切り替えて、お使いのWIFI ネットワークのSSID
                 パスワードを設定・保存して、リセットでCPUボードを
                 再起動します。                

                 f:id:I_Satoh:20191126131643p:plain

        3.次に、PC(またはスマホ)のAPをお使いのWIFIに戻して、
                お使いのWIFIネットワークからCPUボードに割り振られた
                IPアドレスをチェックします。              

                  f:id:I_Satoh:20191126131848p:plain

        4.ブラウザのページをWIFIネットワークで割り振られたCPU ボードの
                IPアドレスに切り替えて先のAPモード時と同じページが表示
                されれば、設定は終了で、以後お使いのネットワークを変えない
                限り、そのページを通じてCPUボードとのやり取りをする事と
                なります。(お使いのネットワークを変えてSSIDとパスワードが
                変わった場合、CPUボードはAPモードで起動される為、再設定と

                なります。また、DHCPのルータを再起動してIPアドレスの割り
                付けが変更となった場合は割り振られたCPUボードのIPアドレス
                再検索する事となります。)

 [コード作成上の工夫]
      コード作成は非常に簡単に行えましたが、少し検討が必要な部分が
      2カ所有りました。

        1.無限ループの構成がWebから参考にしたものでは上手く行かず
               別な方法としました。
        2.シリアルデータ受信に割り当てられているポートを別の用途に
               利用しようとすると動作が非常に緩慢になるため、ダミーの
               シリアルデータ受信の初期化処理を付け加えて対応しました。
              (対応後は動作の緩慢さは無くなりました。)              

                f:id:I_Satoh:20191126132355p:plain

[コード類]
Code download URL : https://drive.google.com/open?id=1zmV2vHNL7ZSkfP-GqWgRgFE5ndydrAqk