Arduino互換機を使ったマルチメーターの制作〜その1〜準備と最初の第一歩

カスタム

このブログもずいぶんと放ったらかしになっている。その間に色々と僕のスーパーカブも見た目が変わったりしているのだけど、何か大きな変化がないとこうして記しておこうという気にならない。

今回はちょっと自分の中では大きな変更をしたと思っているので、その過程を同じものを作ってみたいと思う人が迷うことなくできるように頑張って書いてみようと思う。

続きを読む: Arduino互換機を使ったマルチメーターの制作〜その1〜準備と最初の第一歩

マルチメーターってどんなもの?

タイトルに書いた通りのマルチメーターなるものを制作した。こんな感じ。

機能は以下の通り

  • 時刻と日付の表示
  • 気温の表示
  • バッテリー電圧の表示
  • シフトインジケーター
  • タコメーター

僕もほぼ手探りで作っていったのだけど、参考にしたものはKJさんが作ったマルチメーター。KJさんのものよりずいぶん見劣りする見た目になってしまったが、そこは見なかったことにするくらいのマインドスキルを僕は持っている。

こんなところで大体マルチメーターとはどんなものかはお分かりいただけたと思う。

概要(しくみ)

このマルチメーターの核部分には、Seeeduino XIAOという小型のマイコンボードを使っている。これはArduinoというマイコンの互換機で、いくつかのピンを持ち、それらのピンの電気の入出力をプログラムで操作できる。

大体親指の先位の大きさで、USB-Cケーブルをつないでプログラムをコンピューターと同期する

したがって、制作するためには、ハンダ付けなどの電子工作とプログラミングをおこなうことが必須となる。

今回これを記すにあたっては、電気・電子工作やプログラミング はやったことがないけど自分の可愛いスーパーカブのためにチャレンジしてみようという人に「あ、自分でもできそう」と思ってもらえるように書いてみようと思うので、順を追って事細かくいこうと思う。
慣れた人にはまどろっこしい部分もあるかと思うけれど、そういう方は適宜飛ばし読みしてもらいたい。

試作バージョンを作る

何事にも順序があるということで、まずは試作品を作ってそこから実装するのはとても大切だ。

シフトインジケーター部

僕が今回作ったものはもともとはシフトインジケーターを作ろうと思って始めたのが、いつの間にか発展してしまってタコメーターまでついてしまった。
最初から全てをまとめて解説できないので、まずはシフトインジケーター部分についてお話ししようと思う。

準備物

シフトインジケーター部分についてはマイコンとジャンパー線だけあればシミュレーションできる。

スーパーカブJA44(おそらくAA09も同様)ではチェンジペダル近くのギアポジション信号を出している線はカプラー接続されていて、ニュートラル信号だけがそこからメーター部まで接続されている。
他の1速〜4速までもポジションを感知する接点から下のカプラーまでは配線されているので、それらの配線を延長して信号を取り出してやりさえすればギアポジションを知ることができる。

ポジションの信号線はグランド(バッテリーのマイナス側に接続される)になっており、選択したギアの配線のみに通電するという仕組みらしい。したがって「1〜4速の配線のうち、電気が流れている配線のギアがその時選択されているギア」という単純な判断基準が使える。これを使ってプログラムを組む。

ブレッドボード上の接続

プログラムを書く前にブレッドボード上で配線を済ませておこう。といっても配線は超簡単。Seeeduino XIAOの2〜5番ピンにジャンパー線を接続するだけ。ジャンパー線の反対側はどこにも接続しない。

Seeeduino XIAOをブレッドボードの適当な位置に差し込んで、2〜5番ピンに当たる場所にジャンパー線を差し込む。

この状態はスーパーカブのギアポジション信号線がSeeeduino XIAOに接続されている状態をシミュレーションしている。

この状態でSeeeduino XIAOの2〜5番ピン(ポジション信号線が接続されているピン)に(プログラム上から)電圧を常にかけた状態にする。

前述した通り、ポジション信号線はグランド=マイナスなので電気信号の出口です。ギアを入れて繋がれば電気の出口が開かれる状態になる。つまり電気が流れた線のギアが入っているということになる。

ではそれらのピンにかけられた電圧の状態を知るためにプログラムを書いていこう。

Arduinoの準備

このマルチメーターはプログラムが命となるので、何はともあれプログラムを書ける環境を整える。

とは言っても、ここでプログラムについて一から解説するととんでもない量になって話もややこしくなるので、プログラムについては最小限に記述していく。参考URLを随時リンクしておくのでそちらを参考にしてほしい。

というわけでArduinoの準備に関しては以下のサイトを参考にしてほしい。

参考URLSeeeduino XIAOでArduino開発をはじめよう
https://101010.fun/iot/seeeduino-first-step.html

コンピュータのOSについては、僕はMacだったがWindowsでも変わりないはず。WindowsではSeeeduino XIAOを接続しているCOMポートの選択が分かりにくいかもしれない。

ピンの状態を知るプログラムを書こう

この制作においては、ピンの状態を知る=ギアポジションを知る、ということだ。つながって電気が流れた配線がどれであるかを知ることによってギアポジションを知ることができる。これは常に頭に置いておく。

まずは1本のピンの状態だけを知るプログラムを書いてみる。

void setup() {
  // put your setup code here, to run once:
  
  Serial.begin(9600);       // シリアルモニタのスタート
  pinMode(2, INPUT_PULLUP); // ピンに電圧をかける
}
void loop() {
  // put your main code here, to run repeatedly:
  
  Serial.print(digitalRead(2)); // 電圧をかけたピンの状態を表示
  Serial.println();             // 改行
  delay(1000);                  // 1000ms待機
}

エディタに上記のプログラムを書いてSeeeduino XIAOに書き込んでから、シリアルモニタを表示させてみよう。

これで2番ピンの状態が表示されていることになる。

シリアルモニタ上には「1」が1秒ごとに増えていっているはずだ。1というのはピンにかかっている電圧があるかどうか、を表している。もちろん1ならば電圧が「かかっている」状態だ。

さて、この状態で2番ピンにつなげたジャンパー線の反対側、つまりどこにもつなげずに放ってある方を、Seeeduino XIAOのGNDピンに挿してみよう。GNDピンはちょうどSeeeduino XIAOの組み込みLEDが入っている側の端から2番目のピンだ。

どうだろう。今まで「1」が連続していたが、GNDピンと繋げると「0」が表示されるようになった。

この状態がスーパーカブのポジション信号線が繋がった状態だ。

つまりSeeeduino XIAOの2〜5番ピンにそれぞれ1速〜4速の信号線が繋がっているとすれば、2番ピンが「0」になれば1速、3番ピンが「0」ならば2速にギアが入っていると判断できる。

上のプログラムの「2」となっている部分を3、4、5に変えてみて同様に実験してみてほしい。

実験する場合は

  1. プログラムを書き換える
  2. マイコンに書き込む

というように、必ずマイコンに書き込む操作が必要になるので注意。

また、時々マイコンへの書き込みに失敗することがあるかもしれない。どうもシリアルモニタを使うと起こる現象らしく、僕の場合はめげずに何度も書き込みボタンをクリックすると大体2〜3度程度で描き込みに成功する。

さて、どうやってギアポジションを判定するか、ということはわかった。

次回は4本の信号線をまとめて判定して、「2番ピンが0」ではなくて「1速」と表示させるためのプログラムを作成していく。

今回の最後にSeeeduino XIAOのプログラミングに関して参考になるサイトをご紹介しておく。

参考URLArduinoでプログラミング入門〜基礎編パート1〜
https://101010.fun/iot/seeeduino-first-step.html

使用しているマイコンの種類は違うが、Arduinoプログラミングに関しては変わりない。丁寧に解説されているので分かりやすい。

参考URLArduino言語リファレンス
https://101010.fun/iot/seeeduino-first-step.html

プログラミング言語のリファレンス。本家は英語なのだが日本語に翻訳してくれているので大変助かる。辞書的に利用するにはもってこい。

コメント

  1. […] Arduino互換機を使ったマルチメーターの制作〜その1〜準備と最初の第一歩 Arduino互換機を使ったマルチメーターの制作〜その2〜シフトインジケーター Arduino互換機を使ったマル […]

  2. […] Arduino互換機を使ったマルチメーターの制作〜その1〜準備と最初の第一歩 Arduino互換機を使ったマルチメーターの制作〜その2〜シフトインジケーター Arduino互換機を使ったマル […]

タイトルとURLをコピーしました