2020年12月05日

iPhone/iPadとのシリアル通信

今回はiPhone/iPadを使用して簡易的なシリアル通信(UART)を使用する方法について紹介します。残念ながらTypeCを介したUSBシリアルアダプタはMacOSのみでiOSには対応していません。今回はSiliconLabs製BLE5モジュールBGX13PとiOSアプリBGXCommanderを用いてBLEを介して簡易的なシリアル通信(UART)を行います。

文字列以外のバイナリデータの送受信やボタンといったUIを実装することはできませんが、文字列の送受信といった一般的なデバッグ用途の使用であれば容易に実現可能です。SiliconLabs製BLE5モジュールBGX13Pを実装したBLE5モジュール変換基板を使用しました。なお、BLE5モジュール変換基板の他、BLE5モジュール変換基板V2も同様にBGXCommanderを用いて使用できます。



BLE5モジュールBGX13PのUARTをマイコン等に接続し、3.3V電源を供給します。TX、RXはマイコン側とBLE5モジュールBGX13P側でクロスさせて接続します。BLE5モジュールBGX13Pのシリアル通信(UART)のボーレートはデフォルトで115,200bpsとなっています。必要に応じて下記のコマンドをiOSアプリBGXCommander か、UARTを介してTeraterm等のPCから事前に設定を変更します。

ボーレートを変更する場合はコマンドモードで
>set ua b 9600
>uartu
という感じでコマンドを入力することでボーレートを変更できます。uartuコマンドで実際に設定が有効化されます。saveコマンドでROMに設定を保存するとフラッシュに設定が書き込まれるため、電源再投入でも再度、設定を変更する必要はありません。

なお、ボーレートを取得する場合は
>get ua b
コマンドで取得できます。

iOSアプリBGXCommanderをSTREAMモードにするとマイコンから出力されたシリアルデータの文字列をiOSデバイスからマイコンのシリアル通信のデータを確認することができます。

iphone.jpg

iPhoneからだと上記のような感じです。

ipad.jpg

iPadからでも同様に確認することができます。

文字列を入力する欄から文字を入力すると受信だけでなく、送信もすることができます。今回はマイコンとして先日販売を開始したエアクオリティセンサ基板の専用変換基板と接続しました。デバッグ用ポートJ4の出力をBLE5モジュールBGX13Pと接続してiOSで受信させました。UARTをRS232Cに変換するアダプタを使用すれば、RS232C接続の機器でも接続できます。ちょっとした遠隔でのデバッグ等で大活躍できそうです。


参考
iOSからBLE通信する方法として上記のアプリの他により簡単な下記のようなAPIを使用する方法があります。
posted by Crescent at 00:00| Comment(0) | 電子部品 | このブログの読者になる | 更新情報をチェックする

2020年10月31日

CO2センサ比較

以前にCO2センサを紹介しました。混み具合や換気状態を監視する用途としても昨今、CO2センサが注目されています。

今回は手持ちの下記のCO2センサを夕方から夜、夜から朝方の2回、日常生活の中でCO2センサを設置して比較してみました。NDIR(Non Dispersive Infrared)方式とMOX(Metal Oxide)方式の2種類で比較する予定でしたが、手持ちのNDIR式のMH-Z14Aの調子が悪いため、MOX(Metal Oxide)方式内で比較しました。

 Adafruit SGP30 2.0.0ライブラリを使用
 ZMOD4410_IAQ_2nd_Gen_2.1使用
・AMS製 CCS811 (生産終了)
 Adafruit CCS811 1.0.3ライブラリ使用


18時頃から0時頃までリビングのダイニングテーブルにCO2センサを3つ並べて、TeratermのLog機能で連続測定しました。

・19時頃から夕食の準備でガスレンジを使用
・20時頃にダイニングテーブルで食事
・20時半頃に窓を開けて換気
・22時頃にダイニングテーブルでお茶


day1.jpg

今回のセンサはすべて400ppm〜測定可能なため、最小が400ppmとなっています。一般的には屋外のCO2濃度は400ppm前後、閉め切った人の多い部屋で800ppm前後、1000~2000ppm以上で眠気や不快を感じると言われています。MOX(Metal Oxide)方式は直接CO2を検出しているのでなく、間接的にCO2に変換しているため、メーカにより差が出ています。ただ、大まかな傾向としては同じ結果となりした。基準となるCO2センサがないため、根拠はありませんが、24時間換気を弱設定で11畳くらいの一般室内のため、最大でも1000ppm程度だと思います。SGP30とCSS811で1000ppmを超えるタイミングが2、3か所ありますが、大きな値ダイニングテーブルに設置したため、呼気や人の動きの風等の影響を受けたと考えられます。

見ずらいため、拡大した推移が下記の通りです。

day1_zoom.jpg
ZMOD4410は少し鈍い推移ではありますが、呼気や人の動きの風等の影響を受けずに比較的現実的なCO2濃度で推移した結果となりました。


続いて、呼気や人の動きの風等の影響を低減させるため、0時から6時まで寝室の足元に設置して測定してみました。0時に換気をして空気を入れ替えた状態で測定を開始しています。

night.jpg

6畳程度の閉め切った寝室では時間経過とともにCO2が増加しました。今回の条件では呼気や人の動きの風等の影響を受けないため、比較的どのセンサも近い傾向となりました。

センサにもよりますが、CO2を安定して測定するためには呼気や人の動きの影響を受けない場所に設置する必要があることが分かります。また、閉め切った部屋では人の呼気でCO2が上昇するため、定期的な換気が大切ということが分かります。今後はNDIR式のセンサも合わせてどのような傾向になるのか検証してみたいと思います。

posted by Crescent at 00:00| Comment(0) | 電子部品 | このブログの読者になる | 更新情報をチェックする

2020年09月19日

STM32G030J6 注意点

STM32G0シリーズは従来のSTM32F0シリーズに比べてクロックが向上し、価格も安くなっています。さらに新しいラインアップとしてG0**Jが登場し、SO8パッケージも追加されています。特にF0やG0といった低価格帯かつ小さいパッケージでI2Cを2つ搭載しているものはG0シリーズしかないため、I2Cを複数使用したい場合には非常に魅力的です。

ただ、SO8パッケージはSTM32マイコンのペリフェラル機能を8ピンに凝縮しているため、様々な犠牲が出ています。その1つとして困った現象が生じたため、今回紹介します。


STM32G030J6.jpg

主なSTM32G030J6、STM32G031J6のパッケージ起因犠牲点
@NRST、BOOTといったシステム関連のピンも他のピン機能と共用
AVBATが使用できない
BHSE(高速外部クロック入力)が使用できない

A、Bは用途によっては全く問題ありませんが、@がペリフェラル設定によっては厄介な問題を引き起こします。

データシートを見るとP.34 Table 12. Pin assignment and descriptionの注釈に「For the device in SO8N package, the PA0, PA1, and PA2 GPIOs are bonded with NRST on the pin 4. In order not to interfere with device functions, they must not be set in alternate function or in output but remain at all times in input configuration.」と記載がありました。

デバイスの機能と干渉を防ぐためには4番ピンは他の機能ピンや出力ピンとして設定禁止ということです。他の機能割付けや出力として設定するとリセットが効かなくなり、ファームの書き換え等ができなくなります。

また、PA14、PA13をSWCLK、SWDIOとして設定しない場合も注意が必要です。一度、I2CやUARTとして設定したファームを書き込みすると以降はST-Link Utility等からボタン操作1つでは認識できず、ファーム書き換えが簡単にはいきません。今回、困った現象としてPC14、PA14をUartに設定したところ、ST-Link Utilityから認識できない現象が発生し、ファームの書き換えができなくなってしまいました。

この現象はSO8パッケージ以外でもSWD端子に他の機能を割り付けると発生する問題ですが、従来のSTM32シリーズではBOOTピンがあったため、BOOTピンをHighにすればファームがロードされずに起動させることでファーム書き換えができました。STM32G0シリーズのパッケージによってはBOOTピンが除かれているため、従来の方法が使えません。

Cube1.jpg
このような場合にファーム書き換えをする場合は4番ピンをGNDにつないだリセット状態で電源を投入します。ST-Link Utility等のConnectボタンを押してすぐに4番ピンをGNDから外すと再び認識し書き換えできるようになります。4番ピンを他の機能割付けや出力ピンとして設定するとこの方法も使用できないため、完全にファーム書き換えができなくなります。

Cube2.jpg
STM32G030J6では4番ピンは未使用にした上で、ピンの制約はありますが、可能な限りPA14、PA13はデバッグ、書き込み用としてSWCLK、SWDIOを確保して設定した方が良さそうです。
posted by Crescent at 00:00| Comment(2) | 電子部品 | このブログの読者になる | 更新情報をチェックする

2020年09月05日

CCDラインセンサ

今回はCCDラインセンサTCD1304(PDFリンク)を紹介します。CCDラインセンサはバーコードスキャナ等に搭載されるフォトダイオードアレイセンサでTCD1304の場合は1x3648の解像度で光の強度を取り込むことができます。バーコードスキャナ以外の用途としてはプリズムと組み合わせて自作の分光スペクトル測定装置を作る例があるようです。

TCD1304_1.JPG

一般的なイメージセンサの場合、画素が多く、ArduinoやSTM32マイコン等で処理できなくはありませんが、メモリや処理能力が制限される中で複雑な処理が難しいです。一方、CCDラインセンサは画素が1x3648でマイコンでも十分処理が可能です。また、接続インタフェースはタイミング信号に合わせてアナログで各画素が出力されるため、同様に扱いやすいです。

Arduinoを使ってTCD1304を試食してみました。

TCD1304_2.JPG

TCD1304で取り込んだ各画素の光強度をエクセルの条件付き書式で色付けしてみました。
横軸が各画素、縦軸が時間経過です。光の強い左側が反応していることが分かります。

TCD1304_3.JPG

こちらの例のようにきれいなオブジェクト検出になっておらず、光の強さと露光時間の調整が必要なようです。TCD1304は画素の検出部が30mmと長いため、分光スペクトル測定装置の他、高分解能なラインセンサや位置センサ等、いろいろマイコンと組み合わせて応用できそうなセンサだと思いました。接続インタフェースが特殊なため、SPIやI2Cといった汎用シリアルで通信できる変換基板を作成しようかと思います。
posted by Crescent at 00:00| Comment(0) | 電子部品 | このブログの読者になる | 更新情報をチェックする

2020年08月15日

AC電流センサ基板

今回は非接触(電流を検出したいケーブルを加工しない)電流センサ基板について紹介します。一般的にAC電流を検出するためにはシャント抵抗を挟んで電圧差を増幅させるか、片側をクランプ式の電流センサ(CT)を挟んで電流を検知する方法があります。他にはロゴスキーコイルを用いた方法などがあります。

その中でもクランプ式電流センサ(CT)は構造が容易で非接触(電流を検出したいケーブルを加工しない)で電流を検出できることから電流センサとして多く使用されています。クランプ式電流センサ(CT)は理論的には片側の電源ケーブルのみをクランプする必要があります。電源ケーブル2本をクランプすると180度位相が互いに打ち消すため、近接した2本の電源ケーブルから電流を検出することはできません。分電盤などでは片側のみをクランプすることが容易であっても多くの家庭用電源ケーブルは2本合わせて1つの束となってるため、ケーブルを加工しない限り、片側のみをクランプすることが難しい場合が多いと思います。

sensor.jpg


家庭用電源ケーブルの多くは被覆で覆われている中で2本平行に並んでいるため、ミクロでみると個々に磁界が発生しています。この2つの磁界の差を利用して、近接したホール素子で磁界を検出することで非接触かつ、多くの家庭用電源ケーブルで検出可能な電流センサ基板を設計してみました。

accs0.JPG


この電流センサ基板は電源ケーブルの2本の線から発生する磁界を2つの近接して配置したホールセンサで検出します。検出した磁界の差を増幅してピークをホールドさせることで電源ケーブルの電流を電圧として出力します。電源ケーブルの2本の線に対するホールセンサの位置や電源ケーブルの被覆厚によって検出できる電流の範囲は異なりますが、電流センサ基板上のゲインを調整することで100Vの場合、数10w〜1kw程度までの電流を検出することが可能なことが確認できました(照明とエアコン、ドライヤーで検証)。

accs.JPG

電流の絶対値を知りたい場合にはクランプ式電流センサの方が優れます。一方で電流が既知の場合や大まかに電流の変化を知りたい場合には市販の電源ケーブルを加工せずに使用可能なため、電流センサ基板は使いやすいと思います。

なお、磁界変化をピークホールドさせるため、急激な電流変化や微小な電流変化の検出はできません。また、同じ電流であっても電源ケーブルの種類や取り付け位置によっても磁界の大きさが変化し、出力も合わせて変化します。電源ケーブルと電流センサ基板の取り付け位置は固定させる必要があります。

センサ位置やゲイン調整の検証をして問題なければ、諸情報を公開したいと思います。
posted by Crescent at 00:00| Comment(0) | 電子部品 | このブログの読者になる | 更新情報をチェックする