Vol.874 21.Jul.2023

自転車用ヘルメット・ファン M5StickC(5)〜信号入出力

H ヘルメット 〜自転車用、ヘルメット用ファン

by fjk

 2023年4月1日から、自転車の走行にはヘルメット装着が努力義務となった。しばらく大人用が品薄だったが、店舗の在庫も豊富になってきたようなので、アマゾンのプライムディに合わせて、ネットで探していると、CPSC/CE認証のヘルメットHT-35(\2,800、販売:ganen)が見つかり、色はブルーを購入した。
 早速使ってみたところ、夫婦とも頭にフィットし、デザインがおとなしく、帽子代わりとしても使えそうです。もっと安価なヘルメットもあるようですが、SG認証(日本)やCE認証(欧州)、CPSC認証(米国)など安全性が保証され、頭のサイズは調節できるものを選ぶべき。

【HT-35ヘルメットの仕様】
・頭のサイズ:58〜62cmで男女兼用(ダイヤル式)
・カラー:ブラック、ブルー、ホワイト
・テールライト:USB充電赤色LED(点灯、点滅、スロー点滅)
・重 量:320g

HT-35自転車用ヘルメット

後部LED(モードは3つ)

ヘルメットの内部

 ところで、ヘルメットと云えば、屋外作業時にヘルメットを着用しているが、夏場は頭部から汗が流れ出ることがあり、熱中症対策も考慮し、ヘルメット内に風を送れないかと考えていた。
 そこで、ネットで探してみると、@ファンをヘルメットに取り付けるもの、Aファンがヘルメットに内蔵のもの、・・が見つかった。Aの方が出っ張りがなく狭いところで使えて良さそうだが、ファンが小さく風量が不足気味とある。@は取付方法、電源の供給方法などに種類があり、ベルト式は取り付けるヘルメットを選ばないが、ベルトが緩むなど安定性が心配。また、充電電池式は便利だが、電池式に比べて重量が重そう・・。等々考え、ヘルメット取り付け型で総重量が190gのWindy3(\5,465、No.7703、ToyoSafty)を選んだ。なお、Windy3は電池式(単3×3、強で8時間)だが、充電電池も使えるとある(USB充電タイプの新型Windy4もある)。
 付属のアダプター(4種)を使うと、他社製(M安全)のヘルメットにも取り付けることができたが、同社のヘルメット(例えばNo.170)に取り付けた方が風の流れは良い。特に後頭部にウレタンがついているヘルメットでは風の流れが極端に悪くなる。一応ヘルメット内に風が流れるが、風量が大きくないので、強にしても無いよりはまし。また、充電電池でも風量が落ちることはないが、使用時間は少なくなりそう


Windy3ヘルメットファン

ファンはワンタッチで着脱可

ヘルメット内部へ送風


M はじめての M5StickC_Plus (5) 〜信号入出力

by fjk

 M5SticCPlusの端子は以下のように入出力に使える端子と使えない端子があるので注意が必要。


M5StickCPlusの入出力端子

M5StickC信号入出力テスト回路
(LEDの制限抵抗は100Ω、
VR(可変抵抗器)は10kΩ)

入出力テスト風景
(テスターで電圧をチェック)

1.デジタル出力
M5StickCPlusの端子G26にLEDを接続して点滅(0.5S間隔)。

LED点滅ブロック
2.ADC(アナログ入力)
 M5StickCのG26にLED、G36に可変抵抗器(VR)のセンター端子を接続した。
 G36とG25は端子を共有しているので、使わない方をフローティングにするよう説明があるが、フローティングに指定しなくても、正常に動作しているようです。
 M5StickCでADCを使うには、「ADCビット数」と「アッテネータ」の2つの動作条件の設定が必要。なお、設定を行わずにADCを使う場合、どの条件で動作するかは不明。
@ADCビット数(読取り解像度)
9、10,11,12ビット
Aアッテネータ(入力電圧範囲を広げるため)
0 db: 0〜1.1V
2.5 db: 0〜1.5V
6 db: 0〜2.5V
11 db: 0〜3.9V
 M5stickCのADCは、アッテネータを大きくすると直線性が良くないので±数%以上の誤差がある

単にADC入力としても・・
ADCデータが得られるが、
Max1Vと測定範囲が狭い
(多分、0db設定状態)

やはり、ADC条件の設定が必要
3.DAC(アナログ出力)
 M5StickCplusのアナログ出力は8ビット(0−255)なので、ADC(最低9ビット)データをそのまま使うことが出来ない。そこで、測定した9ビットのADCデータを2で割ったものをDAC出力とした。
 G36に接続した可変抵抗器(VR)を回すと、DACに指定したG26の出力電圧が変化し、LEDの明るさも変化した。
 なお、DACには整数値を指定しないとエラーとなる。また、ADC値が512以上になることがあり、DACに256以上を指定するとエラーとなるのでIF文で判断している

VR(ADC)入力−>DAC出力
4.PWM出力
 PWM(Pulse Width Modulation)とは「方形波の周波数を固定し、電圧がHighの時間の割合を変えることで負荷にかかる電力を制御する方法」とある。M5StickCでもPWMモジュールを使うことができる。
 回路は 3. と同じで、G26をPWM出力に指定した。PWMのデューティ(比)は0〜100(%)の範囲で指定する必要があり、(9ビット)ADCで得られた500以下のadDatを5で割った値とした。
 VRを回すとPWM出力のデユーティ比が変化し、LEDの明るさが変化した.
 なお、DACと同じくPWMのデューティ比も整数を指定する必要があり、「整数変換ブロック」を用いた。

PWM出力ブロック

オシロスコープPWM波形
(10kHz、約50%Duty)
5.IR(赤外線送信) 【8/12:全面書き換え】
UIFlowのIRブロックで、アドレス(0xE880)とデータ(0x7B84)を指定し、abc856のIR解読器で赤外線信号を受信し、受信信号をオシロでみると、搭載赤外線LEDでIR信号(NEC)を送信しているようだった。そして、解読したリモコン信号は "0xFF00FF00"であった。2バイト目・4バイト目は1バイト目・3バイト目の反転データで、どちらも1バイトしか扱えないようだ(Pythonではチャンと2バイトデータとなっているが・・)。そして、アドレス・データに変数を用いても同じだった。

16ビット送信Blockly

テラターム受信

Python画面
そこで、アドレス(0x80)とデータ(0x7B)と1バイトにしてみると、正常に赤外線送信ができた。

8ビット送信Blockly

テラターム受信

IR送信波形(オシロ)
IOデータリモコンは16ビットのデータ送信が必要で、M5StickCPlusの赤外線LEDを使って、UIFlowでIOデータのリモコンデータをIR送信することは困難と思われ、ArduinoIDEなどを使うしかなさそう。


※ 本レポートの参考・利用は、あくまでも自己責任でお願いします。


自転車用ヘルメット・ファン M5StickC(5)〜信号入出力