アルドウィーノを使った
オープンソース、オープンハードの
ローコストECU
テージのECUが壊れているみたいなので
Speeduinoに装換します。
その12:ハーネスの作製の続き
SMT32_megaCPUボード
2024年
6月28日
3Dプリンタを購入しました。産業廃棄物のXYZテーブルを使ってDIYで3Dプリンタを作ったのは2014年でした。その後、レーザ加工機に改造したため、3Dプリンタとしては動かなくなっていました。最近のものは高速で良くて出来ています。
![](tn_ender3_v3_plus.jpg)
フロントカウル内のリレーと3連ホルダは防水ではないため、3Dプリンタでカバーを作製します。
![](tn_240628_3.jpg)
2DCADのQcadで平面図を作成します。必要なのはカバーの外側と内側です。リレーとホルダの寸法は58x37x52mmですが、2Dでは高さの52mmの概念は無いので、角の取れた58x37mmの内側、1mm大きい外側の図面をDXFで保存します。
![](RE_CO_Qcad.jpg)
3DCADのHeeksCNCにDXFをインポートして、3Dに変換します。手順は外側を複製して名前を変えておき、内側と外側に52mmの高さ付けて立体化します。立体化した外側から内側を減算すると側面ができます。その後、複製して名前を変えた外側に1mmの高さを付けて立体化し、側面と加算すると厚みが1mmのカバーができます。開口部を上にして図面を作ります。完成した立体はSTLで保存します。
![](RE_CO_Heeks.jpg)
3DプリンタのスライサにSTLを読み込んで、スライスします。フィラメントはTPEを使います。TPEは柔軟性のある熱可塑性エラストマーです。条件が似ているTPUの設定を使います。
![](CR_PRN_imp_stl.jpg)
TPEフィラメントはこの3Dプリンタに付いている0.4mmのノズルでは出が悪いので0.6mmノズルに変更します。
![](CR_PRN_0P6_nozzle.jpg)
少し糸引きと側面が荒れていますが、50分位で無事出力できました。柔らかいTPEフィラメントは印刷速度を非常に遅くする必要があり、付属のPLAであれば10分以下で出力できると思います。
![](tn_240628_1.jpg)
そのままでは取り付け出来ないので奥側にスリットを入れます。カバーは雨がリレーとホルダに直接かからないようにするためですが、大量の雨は防げないです。
![](tn_240628_2.jpg)
上から被せてリレーホルダに取り付けました。思いのほか柔軟性があり、強度も少し引っ張ったくらいでは破れません。側面の荒れは条件を変えると、もう少し良くなると思います。別の1個使いのリレー用に小さい物も作ってみます。
![](tn_240628_4.jpg)
6月30日
燃料警告用の1個使いのリレーのカバーも作製します。
![](re_cover3_heeks.jpg)
フィラメントは同じTPEです。スリットは無しです。
![](tn_240630_1.jpg)
こちらは被せるだけで、設置完了です。
![](tn_240630_2.jpg)
ブリーザボックスを廃止したので、エアクリーナボックスとの接続穴を塞ぐ必要があります。グロメットの代わりにプラグを3Dプリンタで作製します。
![](tn_240630_3.jpg)
QcadとHeeksCNCで段付きの円柱の図面を作成します。分割して貼り合わせます。
![](AC_CAP_QCAD.jpg)
![](AC_CAP_Heeks.jpg)
3Dプリンタで印刷しました。寸法は良さそうなので、追加で同じものを印刷しました。
![](tn_240630_4.jpg)
2個の段付き円柱をセメダインのスーパXを塗ってクリーナボックスを挟むようにボルトで固定しました。
![](tn_240630_5.jpg)
7月1日
気筒間を通る配線の車体左側はステアリングアームの可動部分に近いので、干渉しないようにタイラップでフレームのスペーサに固定しておきます。
![](tn_240701_1.jpg)
大分前にTEMUでハーネス用の絶縁テープを4個購入しました。
![](tn-harness_tape.jpg)
後ろ側に伸びる配線を絶縁テープでまとめてみます。下は右側に通るリアライト/ウインカ、ブレーキスイッチ、ニュートラルスイッチです。
![](tn_240701_2.jpg)
続いて、右側の燃料ポンプ/残量センサの配線です。
![](tn_240701_3.jpg)
7月2日
フロントカウルを一度元に戻して干渉を確認します。元々、外しにくく、戻すのも大変なのですが、リレーとヒューズがかさばっているので、以前より戻しにくくなっています。
![](tn_240702_1.jpg)
左がレギュレータとSpeeduinoのコネクタ付近です。右はSpeeduino本体とヒューズ付近です。良いようです。
![](tn_240702_2.jpg)
![](tn_240702_3.jpg)
7月3日
タンクを一度元に戻して干渉を確認します。
![](tn_240703_1.jpg)
先日取り付けたブリーザフィルタとドレンホースが干渉していました。
![](tn_240703_2.jpg)
ブリーザフィルタのホースを少し長くして、シート下へ移動しました。
![](tn_240703_3.jpg)
7月4日
SpeeduinoのCPUボードはアルドウィーノMEGAですが、BMWのチューナがMEGA互換のSMT32のCPUボード、STM32_megaを作っています。動画も公開しています。元々SpeeduinoプロジェクトはSTM32をサポートしていますが、MEGAのコネクタと違う基板なので、そのままでは使えないです。この肝はMEGA基板互換のSTM32ボードということです。作製した下基板はそのまま、CPUボードを32bitARMに交換できます。
![](tn-stm32_github.jpg)
こちらは部品表です。緑色が半導体デバイスです。搭載デバイスの内SPIのNANDフラッシュのパッケージがLGA−8ピンで、これは上から半田ゴテで半田付けできないです。これは使わなくても動くみたいです。
![](tn-ST32_bom.jpg)
部品表から、プロセッサはSTMF407VET6です。ARMのCortexーM4、クロック168MHz、フラッシュ512KB、RAM192KB、SDIO付です。SDカードへログが取れるのも良いです。MEGAは8BitのRISCですがクロックが8MHzのため、こちらの方が断然パフォーマンスが良さそうです。
![](tn-STM32F407.jpg)
手持ちにSTM32の評価ボードがありましたが、これはSTM32F401でちょっと違いました。
![](tn_240704_1.jpg)
テージ用のSpeeduinoの基板を作製したPCBWAYでこのボードが購入できます。基板のみ、5枚で$41です。円安なので、7000円弱です。
![](tn-STM32-MEGA-PCB.jpg)
回路図があるので、確認してみます。MEGAの電源が5Vなのに対してSTM32は3.3Vです。CPUボード上にレベル変換を設けています。赤枠上はアナログ入力でオペアンプのボルテージフォロワでバッファしてレベルを下げているだけです。気になるのはボルテージフォロワの入力がオープンになので、別の車種で使わない端子ならプルダウン処理した方がいいです。赤枠下はデジタル出力をHCTデバイスでTTLレベルから5VのC−MOS系に変換しています。直接続の端子もあり、5Vトレラントなので5Vを入れても大丈夫です。また、レベルが3V系でも良ければ出力も可能です。問題は端子が決め打ちなので、任意のポートを自由に入出力にアサインできず、BMW用に合わせて作られているということです。
![](tn-STM32_mage_cir.jpg)
今動いているソースコードを見ると、このCPUボードを作った人のコードが既に入っています。下はポートの初期化をしているinit.cppです。これを見ると、ボードIDとCPU種別を適切に設定してポートを合わせれば動きそうな感じです。ただ、STM32用のツールは別にインストールする必要がありあます。
![](tn-init.cpp.jpg)
7月5日
リアシート下にブリーザフィルタを移動したので、緩衝材とついでに断熱グラスウールを貼ります。テージのシートはモノコック構造でシートレールはありません。接着面を脱脂して断熱グラスウールを貼ってみましが、全然、接着しませんでした。
![](tn_240705_2.jpg)
![](tn_240705_3.jpg)
代替えとして、シリコンコーキング剤で接着してみます。断熱グラスウールを切って重りを載せて密着させます。
![](tn_240705_4.jpg)
7月7日
断熱グラスウール貼りの続きです。シリコンコーキングだと接着力が弱いのでセメダインスーパーXに変更しました。この日は38℃の予想で暑さで午前9時頃までしかガレージ作業ができないです。
![](tn_240707_2.jpg)
![](tn_240707_3.jpg)
7月8日
STM32_megaの続きです。BMWチューナのページを参考に、SMT32をアルドウィーノのコードで動かすのに必要な、PlatformIOをVisualStudioCodeにインストールして、ちょっといじってみました。下のplatform.iniファイルをボードに合わせて修正します。今回は上記の手持ちのNucleoーF401REボードを使います。frameworkをarduinoにするとアルドウィーノのお作法が使えるようになります。因みに、VisualStudioCodeはVisualStudioとは別物の、MSの無償拡張機能付のエディタです。
![](tn-nucleo_stm32f401_VC_ini.jpg)
Lチカを作って、コンパイルしてダウンロードします。アルドウィーノでないボードがアルドウィーノ作法で簡単にプログラムできるようになりました。これでSTM32_megaのコードもコンパイルできそうです。
![](tn-nucleo_stm32f401_VC_src.jpg)
Lチカの動画です。クリックすると短い動画をダウンロードします。
![](tn_240708_1m.jpg)
7月9日
断熱グラスウールとブリーザフィルタの緩衝材を貼ったリアシートを戻しました。少しでもシートが熱くならないと良いです。
![](tn_240709_1.jpg)
STM32_megaの続きです。ソースをコンパイルするときに上書きするファイルにBLACK_F407の名前が出てきます。STM32_megaボードの元となったのはSTマイクロのBLACK_F407ボードのようです。
![](tn-F407_block_core_file.jpg)
調べると、STマイクロが出しているアルドウィーノUNO互換のボードです。
![](tn-F407_block_alie_board.jpg)
回路図をダウンロードすると、JTAG/SWDコネクタが付いてます。
![](tn-F407_block_cir.jpg)
PlatformIOではST−Linkがサポートされていてます。下はアリエクスプレスで売っているST−Link2です。インターフェースはSWDと思います。一方、STM32_megaボードはデバッグコネクタは無く、代わりにSDカードが接続されていました、がっかり。まあ、ECUのプログラムはCPUを止めると、エンジンも止まるので、ブレークポイントなどは限定的にしか使えないですが。
![](tn-alie_stlink.jpg)
ETCのLEDインジケータをメータユニットに付けるホルダを3Dプリンタで作製します。2DのDXFを作成して、3Dに変換します。
![](tn-led_holder_heeks.jpg)
ABSフィラメントで出力しました。4分位で完了です。
![](tn_240709_2.jpg)
写真ピンボケですが、艶消し黒の缶スプレーでペイントしました。
![](tn_240709_3.jpg)
![](tn_240709_4.jpg)
両面テープでメータユニットの左上に接着しました。
![](tn_240709_5.jpg)
7月12日
バッテリ周辺の配線が少しエアクリーナボックスと干渉しているので、整理しました。
![](tn_240712_1.jpg)
STM32_megaの続きです。platform.iniに定義されているボード種類はツールの下にあるボタンを押すと上部にプルダウンメニューが出て選択できます。bluetoothを使うにはblack_F407VE_FTDIを選択してUART1を有効化する必要があります。
![](tn-platformio_bd_sel.jpg)
ボードの選択後は、ソースコード内の#ifxxの定義されている部分の輝度はそのまま、されていない部分は輝度が落ちて見やすくなります。
![](tn-platformio_ifdef.jpg)
7月13日
エアクリーナボックスとバッテリカバーを仮止めしてます。緑線の高さがほぼ面一になってケーブルの干渉が無くなりました。
![](tn_240713_1.jpg)
7月14日
ケーブルの干渉が無くなったので、スロットルボディを固定しました。インジェクタをスロットルボディに戻して、燃料ホースも取り付けました。
![](tn_240714_1.jpg)
7月16日
Speeduinoのコネクタ結線を確認します。右ハンドルスイッチの燃調MAP切替のピン番を間違えていました。コンタクトを抜くより、基板側で入れ替えた方が簡単と思います。
![](tn_240716_1.jpg)
基板のジャンパ線を移動して対応しました。
![](tn_240716_2.jpg)
STM32_megaの続きです。BMWチューナの提供しているCPUボードのピン定義ファイルをオリジナルのファイルと比較してみます。左がオリジナルの407Vxで、右がMEGA用です。ポートの定義をMEGAに合うように変更しています。
![](tn-var_h_diff.jpg)
下はソースのinit.cppのsetPinMapping関数で、どの機能の端子に何ポートを使うか定義しています。この部分をテージに合わせれば、SMT32で動くようになるはずです。ソースにコメントを入れてみました。赤枠の1段目はインジェクタ出力でテージと同じです。赤枠の2段目は直接続のイグニッション出力で、スマートコイルなので3V系でも問題無さそうです。緑枠はカム角パルス入力でテージと同じです。青枠はアナログセンサ入力で殆ど同じ定義になっています。修正する所は少し良さそうです。
![](tn-init_cpp_mod.jpg)
7月17日
STM32_megaの基板と部品を発注しました。レジストは赤にしました。価格は送料込みで、160円換算で5枚で約6400円です。1週間から10日で到着すると思います。
![](tn-STM32_mega_pcb.jpg)
部品はDigikeyだと欠品が多いので、3台分をLCSCに発注しました。元々部品表にLCSCの型番が入っています。160円換算で約9000円でした。LCSCで欠品のDIPSWと0.1%の470Ωの2点はマウザーで購入して2500円でした。マウザー
はPSoC5LPボードを1枚追加して送料を無料にしました。LCSCは中国のDigikeyみたいな電子部品通販で価格は安いです。因みに
STM32F407が1400円、Digikeyだと約2000円です。LCSCは残念ながら、幾ら買っても送料は無料になりません。後で考えたら、アナログセンサ用のオペアンプは使わないものもあるので、数を減らした方が良かったです。LCSCは部品表をアップロードすると、在庫が直ぐに確認できて、部品表がエクスポートできます。
![](tn-STM32_mega_bom.jpg)
![](back.gif)