最終更新日:2020年11月26日
BluePillという名称で流通しているマイコンボードが有ります。とても安価で200円程度で販売されているお店もあります。このボードを使用して、LabVIEW等からLAN経由で制御出来るようにして使いたい というのが今回の課題です。まずBluePillについてです。
STマイクロシステムズの提供するMPU:STM32F103C8T6を乗せたボードで、SolderMask色が青色であることからそう呼ばれているようです。
製造元メーカが不定です。ということで、正直使いづらいです。問い合わせも出来ませんし。
オリジナルの回路である、ボストンLeafLabs社のMaple Miniは既に販売していません。しかし、LeafLabs社は開発環境も提供していました。この開発環境がArduinoIDEに移植され、現在ではSTM32duinoとして、ArduinoIDEで扱えます。このことで、AVRに比べ高機能で安価なSTM32がリーズナブルに扱えるようになりました。安定して入手出来るメーカモデルを探したところ、RobotDyn社がオフィシャルサイトで提供しているSTM32MINIがリーズナブルだという事が確認出来ました。Arduino用のbootloaderが予め書き込まれているため、USB接続でArduinoIDEと接続して使えます。BluePillの場合、自分でbootloaderを書き込まないとUSB接続でArduinoIDEと接続出来ません。また、価格も$3.89です。Arduino Microの$19.80と比べても遙かに安価であることが判ります。
当然LabVIEWからも気楽に使えるデバイスとして準備したいと思いました。
シリアル接続でボードと通信することも当然出来ますが、やはりLAN経由で使うのがIoTバリでいいです。
- LAN接続となると、いろいろなプロトコルで接続可能です。LabVIEWを意識しなければ、Webブラウザからアクセス出来るようにしておきたいです。
- STM32MINIに接続出来るShieldが提供されていると調子がいいと思いましたが、ArduinoのようにEtherNetShieldは存在しないです。
ArduinoNano用にEtherNetShieldが存在するのですが、こんな感じでコンパクトだといいですね。
- BluePill用のShieldとなると、GRBL用の物が存在する程度です。
RABPSは典型ですね。RABPSの調査ページも書いてみました。
電源供給をどうするのか要検討の課題はありますが、BluePillはUSBから5Vの供給を受けた際、基本最大500mAが供給されると期待できます。
STM32MiniにはMIC5207-3.3という電圧レギュレータ が搭載されています。Output 最大180mA/3.3Vです。
一方WI850ioは最大132 mAを要求します。なんとか使えそうですが、周辺回路には省電力版を期待する必要があります。
※W5100だと147mA、ENC28J60だと250mAも必要という情報があります。その意味で電源を別途用意しないのであればW5500を採用するしか有りません。
※chip内でどの程度のマクロコードが搭載されているのかも重要です。実際にライブラリを含めたbuildコードで実行すると空きRAMサイズに可成り違いが出ます。
HWでスタックコードが搭載されているWIZNETのchip優位です。ただ、STM32にはAVRより多くのメモリが搭載されているのでバランスも必要ですが。
- STM32duinoでW5500が使えるかどうかですが、WIZNETのライブラリはちゃんと使えます。Ethernet3というライブラリが調子いいです。
- STM32duinoではSPIのコードもちゃんと置き換えていますが、W5500のライブラリを使うにはSPI2を使うのは困難の様です。SPI1で対応する必要があります。
- ModbusライブラリはArduino用にはあるのですが、STM32duinoではどうしてもうまく使えません。作りがちょっと雑なMgsModbusをレタッチして使う事にしました。
レタッチしたこともありINOと同じフォルダに入れて使用します。
- EtherNetで使う際気になる点としてソースコードにMacアドレスやIPアドレスを埋め込んだだけでは、都度いちいちソースコードを弄ってBuildしボードにダウンロードする必要があります。これでは問題があります。STM32にはEEPROMが搭載されていません。AVRには搭載されているのに。
幸い、STM32duinoにはEEPROMの代替機能が用意されております。この機能を利用してMacアドレスやIPアドレスをボードに搭載するようにします。
- MacアドレスやIPアドレスを変更する場合はWebブラウザでアクセスします。そのため、WebServerのコードを搭載しておく必要があります。
- CANbusについてはLeafLabs社がライブラリを残しているのでそれを使います。
- WebブラウザからIOコントロールする方法はいろいろな提案がありますが、ここではAjaxで実現するコードを提供しています。これによりIPさえ通ればWifi経由でiPhoneからの制御も実現します。
※ブラウザの種類によって表現が異なってしまいます。外部からscriptをダウンロードするとかが出来ないので致し方ないです。
- LabVIEWの評価プログラムですが、
- ブラウザ制御用はありません。
- Modbus制御用はMasterとしてアクセス出来るモノを用意しました。
- CANbus用はExampleをレタッチしたモノです。USB-8473を使ったExampleを真似ています。
当初は手組み基板でデバッグしていたのですが、いろいろな機能を組み替えることをする上で、手組みでは時間が掛かりすぎると判断しました。
そこで、汎用のshieldボードを作ってみようと思い立った次第です。EAGLE(AutoCAD)の勉強も兼ねています。
※数年前からEAGLEを習得したいと思っていました。Fritzingではガバーデータ作成が出来ません。KiCADはUIが直感的なのでいいのですが、部品ライブラリがEAGLEに比べ少ないですし、自動配線機能がないので気が遠くなりました。操作性に問題があるとか、無償で使える基板サイズが小さいとかいろいろな制限はあってもユーザが多く情報取得も容易で、自動配線機能が使えるEAGLEは優位性が有ると思っています。また、業者によってはEAGLEのプロジェクトのまま受け付けるとか、EAGLEに配線ルール等の情報を提供している業者があり、選択業者次第では一択となってしまいます。汎用のshieldボードのコンセプトはBluePill用EtherNetshieldです。極力BluePillのIOピンはすべて利用できるモノにしたいと思いました。結果として設計したボードがこのボードです。
BluePillとWIZ850ioを実装して、USB端子から電源供給(500mA以上)ができれば動くモノを想定してます。BluePillからは3.3Vが180mA供給可能だとして、WIZ850ioは駆動可能だとしています。USBから500mA供給されないととても不安定です。USB3.0のポートは900mAの供給もサポートしています。
BluePillだとボード幅がちょっと広いため、引き出しておいたPINHOLEが使いづらいですが、RobotDynのSTM32MINIであればすべてのピンを使う事が可能です。
ちなみにブレッドボードで組むとBasicな配線がこんな感じになります。ブレッドボードサイズで収められそうだと云う事もこの時点で感じました。I2Cに割り当てているPB6/PB7についてはPullUp10KΩを接続しておく必要があります。I2Cが接続されているかどうかの判断をするだけでも外部PullUp抵抗がないとプログラムが止まってしまいます。
I2C_ModuleにおいてSTM32duinoで利用できるライブラリを調査しておく必要があります。基本殆ど使えるはずなのですが。。。
物理的に使えるかどうかという問題はあります。Vcc=5V、IOも5Vというモジュールは避けるべきだと思います。基本VccもIOも3.3V仕様を選ぶべきです。
※I2CモジュールGYのPINアサインに評価ボードのアサインを合わせている関係でこのモジュールを中心に検討しています。
具体的には 1:Vcc,2:GND,3:SCL,4:SDAです。
モジュール名 Chip名 利用ライブラリ 温度センサ GY-21 HTU21D Adafruit_HTU21DF 湿度センサ GY-21 HTU21D Adafruit_HTU21DF 照度センサ GY2561 TSL2561 SparkFunTSL2561 照度センサ GY-30 BH1750 このモジュールのpinアサインは不適です。 照度センサ GY-302 BH1750 気圧センサ GY-68 BMP085 ジャイロセンサ GY-521 MPU6050 周囲光検出 GY-9960 APDS-9960 色彩認識センサー GY-31 TCS3200 このモジュールのpinアサインは不適です。 UV 検出センサ GY-8511 VEML6075 このモジュールのpinアサインは不適です。 照度センサ GY-49 MAX44009 https://www.arduinolibraries.info/libraries/max44009-library
普通に動きます。加速度センサー GY-61 ADXL335 このモジュールのpinアサインは不適です。
オブジェクト自体はベクター殿のストレージをお借りしています。
本ソフトウエアは、あなたに対して何も保証しません。本ソフトウエアの関係者(他の利用者も含む)は、あなたに対して一切責任を負いません。
あなたが、本ソフトウエアを利用(コンパイル後の再利用など全てを含む)する場合は、自己責任で行う必要があります。本ソフトウエアの著作権はToolsBoxに帰属します。
本ソフトウエアをご利用の結果生じた損害について、ToolsBoxは一切責任を負いません。
ToolsBoxはコンテンツとして提供する全ての文章、画像等について、内容の合法性・正確性・安全性等、において最善の注意をし、作成していますが、保証するものではありません。
ToolsBoxはリンクをしている外部サイトについては、何ら保証しません。
ToolsBoxは事前の予告無く、本ソフトウエアの開発・提供を中止する可能性があります。
Microsoft、Windows、WindowsNTは米国Microsoft Corporationの米国およびその他の国における登録商標です。
Windows Vista、Windows XPは、米国Microsoft Corporation.の商品名称です。
LabVIEW、National Instruments、NI、ni.comはNational Instrumentsの登録商標です。
I2Cは、NXP Semiconductors社の登録商標です。
その他の企業名ならびに製品名は、それぞれの会社の商標もしくは登録商標です。
すべての商標および登録商標は、それぞれの所有者に帰属します。