ページ

2022/02/26

Raspberry Pi Picoに触ってみる①

Raspberry Pi Pico(ラズピコ)を購入。ラズピコはラズパイと異なり、OSが動かない。より低位のマイコンと呼ばれるものだ。なぜ買ったかというと、500円と安かったことと、複雑な処理を必要としないIoTネタ(最終的にやりたいと思っている分電盤センサもそう)にいちいちラズパイを使っていたのでは宝の持ち腐れで、小遣いもなくなってしまうということである。世の中のラズパイ系のブログを見ると、・・・をやってみたでおわり、そのあと恒久的に運用している印象は受けないが、自分は長期間のデータを取りたいと思っているアイデアが多いので、各アイデアにラズパイを使っていると出費がかさむのである。

ラズピコの初期設定は以下を参照した。

【ラズパイPico】MicroPythonをラズパイから書き込む/Lチカ

ラズパイでChromiumからデータを落としてこい、という趣旨なのだが、Chromiumが途中でフリーズ。。描画が追い付いていないっぽい。根気が足りないのだろうか。Ctrl+alt+f2とプロセスキルで脱出し、Windowsからのインストールを探る。

ラズパイ(Raspbian)のスワップ容量を変更する

結果的には上記サイトを参照し、ラズパイのスワップファイルサイズの拡大でできた。スワップファイルはもともと100MBしか用意されていなかった。うーん、100MBでは確かに足りないだろう。これはラズパイの初インストール時にやるべき作業だな。100MBでは、ブラウザ起動しただけで100%になってしまう。なお、コメントにあるように、SDカードのサイズがなんであろうが、2GBまでしか設定できないので注意。また、フリーズはしなくなるが、microSDのスワップのため、最初のページ表示までが遅いのは変わらない。外付けUSBメモリにスワップを移す方法もあるらしいが、今回は試さない。

その後、エルチカ成功。ラズパイとラズピコをつないで開発するメリットが体感できた(?)これは楽だわ。←正確には、Windowsにラズピコをつないで開発する不便さを体感しないと、何と比べて楽なのか、言えない。

ここで疑問。
ラズパイThonnyでコーディング

プログラムをラズパイに保存

Thonnyで実行ボタン

の流れはわかりやすいんだが、ラズピコのみを電源につないでも動かない。毎回Thonny経由で実行するのは、逆に面倒くさいこともある。というかマイコンのイメージではない。

Pico: main.pyとrshellの取り扱い

これがその答え。mainというファイル名で保存するとラズピコ電源投入→自動実行になるらしい。と同時にラズパイから認識できなくなる。そのリカバリ方法も示されている。これはとりあえず、モノができたらおためしだな。




2022/02/20

自動車バッテリーテスタを使って性能測定(スズキ ソリオ)

 前回記事でスズキ ソリオのバッテリーを交換した。
タイミングが遅くなってしまったが、中華性バッテリーテスタを購入したので、試してみる。テスタはKINGBOLEN BM550というAliExpress購入品。1820円。


測定時に、測定対象バッテリーのCCA値を入力しなければならないのだが、日本のメーカーはCCA値を公表していないことが多いらしい。参考になるか分からないが、JIS値でいうと以下の通り。
交換前のバッテリーであれば55B24 CCA370、交換後バッテリーであれば65B24 445か?少なくとも実際はこれ以上ということだろう。走査的にいろいろなCCAで測定した。

以下、交換前のバッテリーの測定結果。SOHはStatus of Healthの略らしい。




交換後のバッテリーはこれ。












交換前バッテリーと交換後バッテリーを比較した図。交換後バッテリーを長距離走ってエンジンルームを温めた後の測定結果も合わせた。温めると測定結果がよくなるようだ。
SOHというのは実際のCCA/事前設定CCAのことかと思っていたが、そうでもないようだ。
割り算しても一定値にならない。テスタの内部アルゴリズムで決まっているようだ。
ということは、バッテリーの劣化を見るためには、特定のCCAで測るのではなく、毎回CCA400~1000を測定し、グラフのカーブ自体が段々下がっていく様子を見ていくのがよさそう。今後継続的に見ていこう。

今後はそれでよいとして、このテスタの数字だけ見ると、交換前のバッテリーはまだまだ使えたのではなかろうか・・・「アイドリングストップ車のバッテリーは3年しか使えないらしい、突然死する前に交換しよう」といった手前、家族には言えないが。アイドリングストップ車のバッテリーは3年で交換というのは、商売文句だったのだろうか。





2022/02/06

自動車バッテリーの交換(スズキソリオ)とコスト比較

 マイカーが3年目車検を受けた。そこでバッテリー交換を勧められたが、自分でやると安いようなのでやっていたという記録。

車種:スズキ ソリオ(マイルドハイブリッド)
メーカー推奨バッテリー:N-55
ディーラー見積:18000円(N-60使用)

市中にはN-55というバッテリーはそもそも売っていなかった。

今回の候補

  • パナソニック Caos N-N80/A3 \16370
  • GSユアサ ECO.R Revolution ER-N-65/75B24L \14290
  • 古河電池 エクノIS UltraBattery N-55/B24L \17340
  • エナジーウィズ(旧昭和電工マテリアルズ) Tuflong PREMIUM PLUS PPAN70LB24L9A \12790
他にも海外製のバッテリーで廉価なものがたくさんあるが、今回自分でバッテリーを交換するのが初めてで、しかも壊れた時に家族に責められるのも不安なので、日本製から選択した。独身時代であれば間違いなく海外製にしていただろう。

バッテリーの性能値では、パナソニック>エナジーウィズ≒?GSユアサ>古河電池となるが、価格はこの順ではない。
パナソニックが高性能・高価格なのはいいとして、古河電池の価格の高さはいったい何だろう?メーカーサイトを見てみると、キャパシタを使うことでバッテリーの劣化を抑える仕組みがあるようだ。これにより、JIS規格の性能値には表れない性能の高さがあるのだろうか。
自動車のバッテリーについては製品間を公平に比較したレビュー記事が皆無なので、このあたりは本当なのかよくわからない。ほかの電気製品に必ずある製品間の比較試験をしているサイトがないのがっても不思議。
また、GSユアサは性能値が65なのか75なのか分からない品番になっている。
パナソニックは追加パーツでバッテリーの経年劣化をリアルタイムでチェックできるというのが魅力だが、ちょっとコストかけすぎかなーというところ。限界ギリギリまでバッテリーを使い切るという方針だと家族から不安に思われそう。

結局コスパの比較というのはできないので、感覚で選ぶことにした。
パナソニックは数か月前に原材料高騰による値上げをしており、GSユアサも2022/2/1から10%以上の値上げをプレスしている。バッテリーを選んでいる時点でGSユアサはまだ値上げされていなかったので、買い急ぐ感じでGSユアサを選んだ。

ちなみにバッテリー交換後見てみたら、ソリオに初期装備としてついていたバッテリーは日立化成(昭和電工マテリアルズの前身)製のN-55であった。

今回バッテリーテスターを買ったので、CCAや内部抵抗の変化を見ていこう。
現在の総走行キロは19219km。購入後ちょうど3年。


さて、アイドリングストップ車(IS車)は得なのかということを考えてみたい。
ソリオはマイルドハイブリッドであり、積算節約燃料というものが表示できる。
現時点で66633ml。最近は記録的な原油高で、ガソリンも高い。170円/ℓとして、1万円強節約していることになる。
ソリオの非ハイブリッドモデル(5BA-MA27S)を見てみると、バッテリーの形式は46B24L。同等かそれ以上の性能ランクのバッテリーを見ていくと、8000円台からある。GSユアサ製でも12000円。非IS車は3年より長くバッテリーが使えるとは思うが、同じ使用期間を仮定すると、バッテリーの1交換サイクル3年で2000円~4000円の差。10年乗ったとすると、ガソリン価格が常に高い状態でトントンくらいか。実際はIS車が負けている可能性大。
さらにIS車と非IS車の車両価格差は30万円弱で、ここまで考慮すると、IS車はもっと歩が悪い。もちろん、この価格差は自動スライドドア等の付加価値が入っていて、購入時はそれが決め手になったので、非IS車を選べるわけではないが。
少なくとも我が家の乗り方ではIS車の恩恵はないということが分かった。

2022/01/16

Raspberry Piで作るアルコールチェッカー④

 アルコールチェッカー、というよりはアルコール成分の有無検出器といったレベルのものができたのだが、もう少し追求してみる。

MQ-3Bのデータシートを頑張って読み解いて、測定電圧をアルコール濃度に変換しなければならない。こちらは残念ながら、比較対象となる正確なアルコール気体がないので、ただ自分が満足するレベルを追い求める世界。一応、世の中にはエタノール蒸気の濃度が保障された気体が販売されているようだが、趣味で手が出る金額ではなかった。

ちなみに自分でアルコール濃度を出力するプログラムを作り、自身の酒酔いの呼気を吹きかけてみた数字から概算すると、60~70ppmとなる。酒気帯びのサイトを調べると、これはそもそも死んでいる値ではなかろうか?センサー(MQ-3)を使ってラズパイからアルコールを計測してみたのサイト上だと0.6ppmとなり、これはまあそんなかんじかなという値である。

しかし、上記サイトはMQ-3のモジュール化キットのデータシートであり、今回使っているMQ-3Bというセンサ単体と同じにしてよいのかという疑問があるし、元のセンサのデータシートがなぜこんば記載になっているのかという話もある。きちんと英語を読めばわかるかもしれない。

調査を進めるうち、分かったのは、ppmとmg/lの単位変換は、測定対象の分子(量)により異なるということ。さらに、測定時点の温度、湿度、気圧も変換式のパラメータに入ってくる。きちんと変換式を通してみたら、それらしき値になった。

ラズパイには気圧計をつけていないので、気圧は1013hPaで固定でよいとしても、温湿度は手元にセンサがあるので合体させてみようか。

もう一点気になるのが、アルコールなしの状態の電圧V0が安定しないことだ。長時間測定していると、数百秒単位でトレンドが変化していくので、どれがV0だかわからない。これも温湿度の影響か?


どちらのグラフも、線が突出しているのはアルコール呼気を吹きかけてみた瞬間。

MQ-3Bのデータシートをみると、このセンサは使っていなかった期間によって初期エージングの必要期間がだいぶ変わる。1週間単位でつけっぱなしにしたので、エージングとしては問題ないと思うが。。例えば朝方に急に電圧が下がっていたりして、なんとも気持ち悪い。正確なV0がわからないと、アルコール濃度の絶対値もわからない。短時間で使う相対値チェッカーとしては使えるのだけども。

というわけで、温湿度を合わせて取ることにした。もしかするとVrefの安定化も必要かも。V0が安定しない原因は調査中だが、ADコンバータのVrefもそもそもブレているかもしれないと思い、Vrefとしてラズパイ出力の3.3V系を採用してみたが、結果に変化はなかった。

【 中級コース : RaspberryPi を改造してみましょう。 】

このサイトによると、ラズパイの3.3V系はすでにスイッチングレギュレーターが入っている。ノイズは入るが、平均値は正確そうである。逆に、ラズパイの5V系はACアダプタの性能がそのままでそうな構成。

うーん、5V電源を1回昇圧して、シャントレギュレータで5Vに落としてやれば安定なVrefやV0が得られるんだろうか。アルコール検知器にそこまでやってもしょうがないか?将来的にラズピコで動かすときは、正確性より省電力が重要になるだろうしな。

と、ここで問題発生。DHT11の実行結果でたまに温度湿度が0になるときがある。

DHT側のモジュールの中身を少しいじってエラーコードを詳細に吐き出すと、ERR_MISSINGDATA とERR_CRCという種別のエラーコードがぱらぱらでていた。

エラーコードが2種類混じるということは話がややこしいが、SPI通信とGPIO操作を同時に行うことがよくないのだろうか?

コードをさらに追いかけてみたが、自分の技術力では残念ながらそれ以上の原因がわからない。ちなみに前に作成した元の温湿度計測プログラムも、ログをよくよく見ると、データが取れていない瞬間がポロポロあった。

これ以上追いかけるのはやめることにした。GPIOのデータ転送を深堀しないとダメそう。測定値がゼロになってしまう頻度は低いので、前値保持にしてしまえば、実用上はそこまで問題にはならなそうである。

アルコールチェッカーの作成はここでおしまい。(ひとまず)


Raspberry Piで作るアルコールチェッカー③

 前回に引き続き、VddとVrefに3.3Vを入力した構成であれば、ラズパイへのデジタル出力までできるようになった。アルコールセンサは最大5V出力なので、Vrefをどう5V化するかが課題。

もともと考えていた分圧を成功させたい。

まず、Vdd=Vref=3.3Vのままでch0に5Vの電圧をつっこむと、ADコンバータがどんどん熱くなっていった。原理は不明だがこれは危険。前回最後にラズパイが強制再起動したのもこれが原因だろう。

その後、無事分圧に成功。Vdd=Vref=5.0Vとしつつ、Doutは出力電圧を3.3Vに減じ、アナログ電圧5Vまでをデジタル信号へ返還することができた。やはり、コーディングと同じで、配線はいきなり全部を組むのではなく、小規模から実験的に進めることが大事だと感じた。

分圧案がうまくいかなかったのは、元の配線案はVddを分圧して入れていたが、本来Doを分圧すべきだったということ。配線誤りというか、設計誤り。

そして、アルコールセンサとラズパイの接続に成功!酒臭い息を吹きかけると検出電圧が上がった(笑)

最終的な配線図は以下のようなイメージである。





Raspberry Piで作るアルコールチェッカー②

実装編。 

秋葉原で不足パーツを買ってきて、まずははんだづけの練習。
そして本番。MQ-3Bセンサを変換基盤へはんだづけ。2ピン目からこつをつかんでうまくできた。

そしてMCP3208をアダプタを介してブレッドボードにさそうとしたが、なんとささらない。というか、刺さってもブレッドボードのバネの力で押し戻される。結局MCP3208をブレッドボードに直差しにすることにしたが、アダプタとの分離が非常につらかった。アダプタは、上のチップを頻繁に差し替える場合などに有効なのだろうが、ブレッドボードというよりはユニバーサル基板で使用するのかな。

こういうことは各サイトに書いていないので、失敗して覚えるしかないが、一方で買うまえにどう見分ければよいのやら。

今回は今までで一番手づまりが発生した。

まず、回路をくみ上げてみてから電源投入の前に+とーのラインの抵抗をはかると、40Ωと低い。どこかショートしているのか?と思って調べたが、結局のところアルコールセンサのヒータ抵抗が出ているだけだった。しかし、データシートの抵抗値よりはかなり高い理由が、よくわからなかった。

次に、抵抗2個を使って5Vを3.3Vと1.7Vに分圧したつもりだが、0.8Vと4V超に分圧されている。買った抵抗は間違っていないはずだが。。どこで誤差が生じているのか、これも謎。Doutから、GPIOの耐力以上の電圧が出てラズパイが壊れても怖いので、Vddには5Vではなく、3.3Vを入れるよう暫定的に変更。これにより、アルコールセンサの上限値までは測定できなくなる。

次に、サンプルプログラムで0出力されてしまう。アルコールセンサを完全分離し、MCP3208のch0に3.3Vを入れてみるが反応なし。ということは、まずいのはMCP3208の配線か、プログラムということになる。

→結局配線ミスだった。SPI通信で使用するCLKとMISOの接続が互い違いになっていた。プログラムのデバックは慣れているんだが、物理配線のデバッグに相当する作業はどうやれば効率よくできるんだろうか。

また、配線を入れ替えている最中にラズパイ強制再起動発生。そしてMCP3208の表面がかなり熱くなっていた。きっと、まずいところをショートしてしまって、発熱してしまったんだろう。危ない危ない。


Raspberry Piで作るアルコールチェッカー①

 少し寄り道して、アルコールセンサを使ってみようと思う。

秋月のページでアルコールセンサ単体MQ-3Bを衝動買いしたが、モジュール化されたものを使っている参考サイトセンサー(MQ-3)を使ってラズパイからアルコールを計測してみたとは違い単体のセンサである。よって、試行錯誤が予想される。

早速つまづく。MQ-3Bのピンはブレッドボードに刺さらなかった。

MQガスセンサ用ピッチ変換キットが必要だった。さらにいうとMQ-3Bのデータシートから、4.7kΩの抵抗も必要だった。買いなおし。。きちんとデータシートを読んだり、設計作業をしないで行き当たりばったりだとこうなってしまう。

センサで検知した値はアナログ電圧というかたちで出力されるので、それをラズパイに取り込むにはADコンバータが必要。ADコンバータは参考サイトにあるMCP3208のまま使えるか不明だが、このままいってみよう。

余談だが、秋月電子のサイトにMCP3208は2種類売っている。調べたところ、下記のような違いだった。これも間違えると実装できないので注意。

  • MCP3208-CI/P・・・PDIP(Plastic Dual In-line Package)。プラスチック筐体。ムカデのような形で、ブレッドボードやユニバーサル基板ではこちらを選択。
  • MCP3208T-BI/SL・・・SMT(Surface Mount Technology:表面実装)。

他にもデータシートを見ると、温湿度により出力電圧が変わったり、長期間通電していないと長時間のエージングが必要だったり、なかなか扱いが難しそう。まあ、ホビーユースだから絶対値はいいかげんでもいいか。

もっと予習を進めると、

  • ADコンバータMCP3208のDout出力(ラズパイに対してデジタル信号を出力する端子)はVdd入力(MCP3208を駆動する電源入力)と同じ電圧
  • ラズパイのGPIO入力端子は最大3.3Vまで対応
  • MCP3208は0V~Vref端子電圧までをはかれる(厳密には0Vではなさそうだが)
  • Vref電圧の精度がとても重要。Vref端子に与える電圧がブレると、測定結果もブレる
  • MQ-3Bは最大5V出力

ということがわかる。特に1番目と2番目と5番目をあわせると、そのままではうまくいかないように見える。つまり、MQ-3Bの5V出力アナログ電圧を測定するには、MCP3208のVrefを5Vにしなければいけない。そのためにはVddを5Vにしなければいけない。すると、Doutが5Vになってしまう。すると、ラズパイの入力制限電圧を超えてしまう。

もう少し調べると、分圧するという手法があるようだ。つまりMCP3208からのデジタル信号が5V出力であっても、ラズパイのGPIOに入れるときには3.3Vになるように分圧する。

参考にしたサイト
Raspberry PiでADコンバータ(MCP3208)を使う
ラズパイでアナログ電圧を扱う (3) 使用するパーツ
ラズパイでアナログ電圧を扱う (2) MCP3208②

これらのサイトを見ると、12ビットADコンバータの分解能を生かすにはVrefを安定化させる仕組みをきちんと作らないといけないことがわかるが、今回は気にしないこととする。

この文書も抵抗の具体値など参考になった。
A-Dコンバータとアナログ入力の インターフェース

次回、実装。


ラズパイとラズピコで分電盤センサを作成(14)

回路の実装図作成に取り掛かろうと思ったが、ここで一つ寄り道。 ADCへの入力前に交流電圧に対して直流バイアスをかける手段として、オペアンプを使う方法が出てきた。 アナデジ太郎の回路設計 というか、バイアスをかけたい場合、この方法の方がメジャー・・? と思ったのだが、オペアンプは以...