西山 茂丸 について

組み込みマイコンでエンジニアを続けてきました。今の時代で見えない部分についても体験してもらってより深い理解を得てもらいたい広報教育活動をしています。

STM32マイコンの評価ボードで開発支援

フリーランスでの仕事をいただくと実機前に適用マイコンに近い評価ボードで実装してみて開発環境に用いている。今回のマイコンはSTM32F103CBT6で128kBのFlashと20kBほどの組み込みマイコンではMidRangeのものだ。アーキテクチャの近いものとしてSTM32F103RBが搭載されているNucleo-103RBを用いて開発をしている。実際の機器との違いはピンアサインなど種々あるのだが、必要なI/Fについては割付先の違いくらいなのでコード生成機能(CubeMX)を用いて変更する程度で処理としては簡単に変更するのも最近のツール進化で楽になっている。

こうした評価ボード自体も、そのまま小規模なシステムに組み込んで用いてしまうことも多いのは昨今のチップ不足などもあり普通に見かける。評価開発にブレッドボードやArduino互換での端子なども含めて便利だからでもある。

ArduinoのAVRなどに比べるとARM-CoreM3が搭載されているこのボードは強力でクロックは72MHzまで高める事が出来るし内蔵の周辺機能も沢山集約されていてマイコンメーカーとして名をはせているST Micro社が世界に沢山出している人気マイコンでもある。

SPI/I2C/UART/ADC/TIMER/GPIOが多く搭載されているので、仕事でよくいただく測定器のファーム開発ではとても有用だし開発ボードにデバッガも組み込まれているのでUSBでPCと接続すればそのままソースコードをみつつ確認動作が出来る。USB一本でVCPチャネル経由でのアプリからの通信処理も確認できるので、主にシリアルコマンドで動作させることが多いのでこれも便利な一面だ。

さて、今回の開発では多くのアナログ信号のセンサ処理でフィードバックしたりセンサデバイスの線形補間処理も行って所要機能の精度確保を実現したりする必要もある。ADCからのデータ収集を一括して常時DMAで集信することも出来て処理としては過去のデータから移動平均を取るなどの作りこみも容易だ。ちなみに今回は6chを10ms周期にそれぞれ64回測定したものをオンデマンドで平均処理をして返送するという使い方だ。タイマから25uS周期でトリガを発生させて順次20uS程度の取り込み処理でADCがメモリ配列に取り込んでいく。DMAでサイクリックバッファに取り込むわけだ。

いろいろと稼働させていくと標準の動作クロック8MHzのままではリソース不足となりPLL設定のクロック割付にして高速にしていく。コアの速度・周辺クロックをそれぞれ調整して必要なものに変えていく。むやみに上げるとCMOS構造故に消費電力は周波数に比例して上昇する。USB接続で動作する構造のボードなので5Vから3.3Vのレギュレータを経て、300mA/100mAの二種の設定が出来るもののこれを越す場合には別途電源を供給する必要がある。USBハブの能力を上げてもこれは解決できない。しかしながら、このマイコン自体の消費電流からみても十分だということが分かった。ARM CortexM3クラスのマイコンなので消費電流は100mA程度に収まるらしい。拡張基板などを搭載したりする場合を除いては十分なものだろう。

今回は、デバッグ時点で応答しないという現象が多発して「Target not responding」というようなメッセージが出ていたのだが、評価基板の回路図と照らして間違ったIOの設定をしたりして端子同志がショートしたりといった事象が起きてしまったからのようだった。ともあれ。必要十分な低めのクロックを与えて消費電流を抑えることは必要だろう。コマンドとアイドルループ処理で凡そ0.6mS程度でソフトは回っているようだ。表示LEDにフリックを入れてオシロで確認できた。ADC以外にもシリアルコマンドの受信はDMAに任せていてコマンド処理ループ側で取り込みバッファからの読み出しで実行している。

測定器として接続されるのでホストからの処理を取りこぼしてはならないので、DMA任せにしているのは気楽だ。DACで出力した結果のADCを読みだす必要もあり、時間経過後に取り込んだADCバッファを移動平均処理したものを扱うには時間経過のポスト処理も必要だ。タイマ割り込みでの時間経過通知などで対応している。

 

CADデータからサンプルを作りたい

一緒に都立産業技術高専で非常勤講師を勤めている友人から、ある製品のCADデータに基づいて3Dプリンターでサンプルが作れないのかという相談を頂いた。学校の研究室にあるそれを使ったら出来るのではないだろうというレベルの話だった。以前から、授業に使う教材を支える道具や治具的なものを自宅工房で作成したりしたものを共有していたことからそんな相談になった。
「データがあったら始められるんでしょ」的な話ではあったものの、彼と私の出勤日も異なるので私の出勤日に合わせてその授業前後で依頼した人も交えてチャチャッと
済ませられるものだと思っていたようだ。まずはどんな形式のファイルなのかもわからないままに時間が経ち、学校は夏休みになってしまった。木更津の工房にある3DプリンターではFDMモデルなので制限事項が多いことから、そうした目的にはかなわないかも知れないが、まずはCADデータが入手出来たら確認するよと話を結んでいた。
そんな工房でのオープンも既に夏休み体制も終わろうとしていた時にデータが入手できたのでと送られてきた。メッセージは、いつ行ったら良いかな的なノリだった。
届いたものはSTEPフォーマットだった。レジャー用に設計された船らしい。沢山の製造部品がそのまま集大成になっていてどうしたものかと思いつつ、一つずつの部品のボディをSTLに変換していくと40弱のパーツになってしまった。これではプラモデルにもならないし組み立てるの大変だろうと一旦回答をしておいた。相談に伺いたいという話だったが、自宅のプリンタで済むかどうかも含めてネットでオンラインで知人への依頼主交えて状況を説明することにしておいた。
何か解決策はないだろうかと探っているとSTEPファイルでFusion360に取り込まれていた全体を纏めてSTLファイルとしてExportできることが分かった。時間はかかるもののCloud側で処理されて暫くしてからダウンロード出来た。
早速、DMM.makeにuploadして見積をしてみた。元々のファイル指定ではサイズを1/20にしたつもりだったが、350cm(1/2サイズ)になっていたらしく出力不能となった。再度スケーリングして1/20サイズで長さ35cmにしたところ18万円弱というものだった。展示会などで説明するモックアップにしても高すぎるのだろうと思い、サイズを更に20cmにすると4万円弱ほどになり体積見合いであることが分かると共に一括でSTLにしたため一番大きな船体部分が全て体積として計算されていることが支配的な理由だろうと判明した。
あいにくと一括で一つのSTLにしたファイルはMeshモデルなので空洞化させる為の演算などは出来ずソリッドモデルに変換する必要があったが、とりあえず依頼元の方と知人交えて目的のサンプル作成というゴールについては手の届きそうな費用範囲になりそうなのでデータを渡してDMM.makeに発注することを勧めておいた。
Meshからsolidに変換することは主要な最大部品である船体に限れば自分のマシン環境でも出来たので、中にたい焼きでいうところの餡子部品を作成して引き算することで空洞化処理をできた。他の部品も全てsolid化したのだが次に結合しようとすると末端のマシンではリソース不足になるらしく諦めた。ちなみにマシンのメモリは16GBしかないのだ。
最初に立ち帰って全てのsolidモデルのまま凡そ150ほどの部品を纏めてSTLに再度Exportすることで解決した。無理をしないことが肝要だ。なお、空洞化するだけでは不足で穴をあけて固体化しない材料が抜け落ちるようにしないとモデルとしてはNGだ。底面に3か所の穴をあけてこれらに対処した。
同様な条件でDMM.makeで見積を取ったところ13000円ほどになったから良いのかと思います。

ラジオの製作は難しい!?

6石スーパーAMラジオキット

電子工作オープンラボ開設に至った経緯からも、どこでも鳴らすことが出来るラジオとして6石スーパーラジオを取り上げて中華メーカーのキットを扱ってきた。ゲルマラジオのキットを都会で鳴らすことは現在の住環境では難しく電子工作の入口にはふさわしくない状況になっていることを知ったからでもあります。

さて、そんなラジオキットですが安価故に懐かしいベークの片面基板です。部品は中華仕様ではありますが日本の中波ラジオの範囲はカバーしています。中間周波数が465kHzになっていたりするのは国情を表しているのかもしれません。2028年秋には、AM放送の国内民放局は停波することになっており、既にFM移行も始まっています。電波の不思議を学ぶためにはAM放送はとても良い機会なのです。

しかなしがらそんなAMラジオを今の子供たちは聞くことはありません。タクシーの運転手も聞きながら運転しているという光景にもならなくなりました。車の中ではデジタルオーディオかCDなどを聞くようになりました。かつての自動車ラジオというジャンルはナビに置換されています。311のような大災害が起きたときに安定に離れた地域からの放送を聞くメソッドはAM放送しかありません。あの時に、「おばあちゃんの家ではラジオしか聞けなかった」という話をしていた少年を思い出します。

さて、ベーク基板は柔らかく銅箔の厚みも薄いので慣れない手つきで子供たちがはんだ付けで加熱し続けると剥離してしまいパターンが切れてしまいがちです。部品の密度も多くて昔の電子工作キットでは2石レフレックスなどの構成でも同様なもので慣れない手つきでのはんだ付けでパターンが切れてしまったときには途方に暮れた小学生時代のことを思い出します。無論、ブリッジしてしまい、回路が繋がってしまったりもします。最近では、鉛フリーの半田を使うと昔以上に半田付け不良が多発してしまうこともあります。見た目と接続は異なります。

地道に回路図から電源と信号の流れをおっていくことになります。

部品は間違えなくついているのか。抵抗のカラーコード、ダイオード・電解コンデンサの向き、トランジスタの品番とその向き。

ついている部品はただしいのか、バーアンテナのコイルは断線していないか、中間周波トランスのコイルは導通しているか、中点タップも導通しているのか。低周波トランスも同様。

「一通り見て回って怪しい箇所は吸い取ったりハンダを入れ直したりしたら薄っすらと受信するようになりました。でも、特定の局がスピーカーに耳を当てると聞こえる程度です。 電圧を調べると3と4が降圧されずに1.5vです。 430Ωの抵抗も所定の位置です。 何か考えられる事有りますでしょうか?」

こうした問い合わせをいただいた。ラジオキットを買い求められて、一つ目は鳴らすことが出来ずに2つ目をご購入いただいて挑戦して成功されたとのことだった。

スーパーラジオなのでBG1の所での局部発振とミキサーが動作しているのかどうかが最初の課題だが、局が受信できているとのことなのでBG1/BG2での中間周波変換までは動作しているのだろう。バリコンを回して同調がとれているのであれば、トラッキングをしていけばよいのかもと思うが、大体中間周波トランスの設定は予め調整できているのが最近の中華品質なのでまずは検波されてからの段階での問題かもしれない。

BG3/BG4でのトランジスタ端子に掛かっている電圧の確認をされているようだが、BG4以降は1.5Vが直接かかっているのだが、BG3までは100Ωを介しての接続なので1.5Vが観測されるということは、足回りで導通確認をしていただくことが必要かとも思う。それぞれのトランジスタのベースとコレクタから電源+の間、エミッタから電源-の間の抵抗などを見て頂くのが必要だろう。

あやしいのは、R7の抵抗、ボリュームの辺りになるかとも思われますが、果たして・・・。

スライスチーズの場所を作る

頂いた奥様からの設計メモ
冷蔵庫内部を測っていただいたチーズのサイズも含めてのものです
2つの部品に分けて設計した。
厚みは2mmPLAでサポート無しで強度を確保する作戦チーズを束ねる枠についてはひっかけ側から挿入してくびれで支える

出力時間はそれぞれ7時間ほど

これで設計メモのイメージのものとなった筈。

実際のデータはこちらにあげている

ラミネーターの故障と修理

電子工作オープンラボの開設をしてから10年が経過して、変遷も含めていろいろな機材についても改廃が進んできた。
会員証や説明カードの作成などにラミネーターを導入して用いてきたが、動かなくなっていた。中身を確認すると交流の低速同期モーターが回らなくなっていて内部で部品が外れている様子だった。ラミネータの故障はヒーターにシートが焼き付いて吸い込めないというものも多いようでモーターに異常のないものが見つけようとメルカリやヤフオクで探してA4機種を手に入れて故障機種からのニコイチで復活させた。

開設から10年がたち諸々問題の対応中

  • 光回線がダウンした

7/7に里に赴くと、光回線がダウンしていました。ルーターとONUなどを確認していると光ファイバーから光が届いていないようです。どこかで断線した模様です。Sonetの窓口に電話をしました。こちらで切り分けをした経緯と症状を伝え説明したつもりでしたが、「ONU」をお送りするので交換してほしいといった返信をされた。必要事項としての各ランプの状態も説明している通り、外部で引き込み線が断線しているので来ていただくしかないと説明をして対応していただける工事業者の日程を確認してもらい次の三連休明けに来ていただけることになった。ネットがダウンすると、いろいろと出来なくなる。ネットありきでつないでいるGoogleのCASTも動作しないし、Alexaも同様だ、リモートでつないでいるテプラも、プリンターすら動作しない。最低限としてプリンターが使えるように、プリンターをスマホのテザリングに繋いで使えるようにはした。

  • パソコンが遅くて使えない

Arduinoを使って勉強に来ているインド人親子には、先日も使ってきたパソコンが不調で遅すぎるマシンとか、電源がうまく入らないマシンとか開設して10年経過する中で切り替えや修理が必要な更新時期になっていることも事実だった。LenovoがIBMを買う前の時代のIdeaPadというAMDのA6の4コアマシンにWindows10までを入れて使ってきたのだったがRAM8Gに増設をしてはいたもののHDDやクロックも含めて中古機材の適当なものに切り替えることにした。

  • Windows11が動作する中古マシンを2台手配、タッチパネルマシンも修理

RAMを8GにしてSSDに換装したマシンを中古で手配した。日常使いしているLet’sNoteだ。普通に買うと高いLet’sNoteだが幸いにもビジネスユースで使われてきたものがリース終了品となったモデルで拡張性が残る世代(8G/16G)の程度のよいジャンク品を集めていた、こうした多数の部品在庫などもあったことから慣れたマシンということでこれにした。無骨なマシンだがタフでもある。キーボードだけは不具合がないように交換した。メルカリで販売してきたラジオキットなどの代金が充当できたので相殺できた。かつて、両面画面のパソコンとして対面指導などに良いかと思って導入したASUSのノートパソコンは高速ではあるものの4GBのメモリ制限なので里での活用で利用継続すべくこちらも修理をして電源アダプターなどの更新をした。

年代物のパソコンだが、今まで使ってきたマシンよりは高速なものに置換

  • 6石AMラジオキットは、AM停波の時代が近づく今メルカリで販売中

6石AM中華ラジオキットは、沢山死に在庫となっている。秋葉原での販売窓口にこられていた工作会で使いたいので100台まとめて安く手配してほしいという方からの申し出で手配したのだが、そのまま雲隠れされてそのまま負債として抱えてしまっていたのだ。まだまだ在庫があるので絶賛販売中だ。クリックポストでの配送でこうしたキットの送付などがとてもスムーズで安価に出来ることはメルカリなどのお陰といえますね。

DSC_0509

  • 郵便受けに書いてあった表札が薄くなり読めなくなっていた

郵便局から連絡はがきが投函されていた。内容は、住所と氏名が分からないので配達先リストには登録されていないので記入の上返却すること並びに表札を明示するようにとのお知らせだった。届かない郵便物があったのかも知れないと思いつつ、今の時代では配達は他のメディアもあって気づいていなかったのかもしれない。

表札の更新

消えない表札文字・・・でもしっかり付けないと

アクアリウムのランプ修理

長年しまい込んであったボール型のアクアリウムを出してメダカを入れることになった。カラーLEDがフルカラーで点滅する仕様なのだが、スイッチ不良なのか安定に動作しない。スイッチ接触なのか、基板不良なのか。
基板を外してきて見ることにした。開けてみると表面実装のダイオードらしきものが4つあり整流回路となっていてアダプターはACACで15Vが来ているようです。故障対策なのか、アダプターの極性間違いなどで壊れないようにと設計されているようにも見える。

DSC_0222


ダイオードは壊れている物もあり、全数シリコンダイオードに交換した。順方向電圧からシリコンダイオードだったことは確認している。
発光ダイオードも直列にしたものがいくつがあり点灯しないものがあり、在庫のものと、交換することにしたが低頭のものだったので現物の蓋は少しさくる必要もありそうだ。

DSC_0223

ルンバみたいな掃除機を作りたい(3)

BT接続の沼にはまった。HC-05/HC-06ともに在庫が山の中から見つかり確認をするのだが、オリジナル品とコピー品の混在なのかも含めて曖昧で見えてきたことがあった。
PINコードの設定コマンドがエラーになり、PINコードの確認ではPINコードが6桁の表示になるのだった。
PINコード桁数については、さまざまなBT機器の中で4桁設定が占めていたのと以前の開発記録では4桁だったので混乱した。調べていくとBT規格の進展の中で6桁に代わっていったようでHC-05/HC-06の目指すIoT機器ではBLE規格などの時代になり6桁に移ったらしい。もっていたスマホアプリではPIN4桁設定だったのだが、新しい他のBT接続ターミナルアプリを調べると6桁に対応しているようで、スマホとの接続でも問題なく動作することが分かった。週末にS君が来た時にはBT子機となるHC-06タイプのモジュールを渡して彼のBT接続ターミナルソフトでも6桁設定で通信が出来た。
しかしながら、実際に彼がやりたい動作中にコマンド受信がしたいということには、別の困難があった。
彼が複数集めてきたスケッチはいわゆる単機能でloop関数の中でwhileループを組んでいるようなものばかりだったので、同時に処理をするためにはこうした処理をマージしなければならない。
S君とは哲学問答をするように、彼が実際にやりたいことを確認しつつそのためにはどうすべきかを解説する。
極端に言えば状態遷移図を彼に書いてもらうことだった。Arduino UNOの性能範囲で実現可能なハード設定にはなったので、この先は彼が設計をすすめることで出来てくるだろう。
彼には、時間管理も含めて指導したいので、予め帰りのバス時刻をめどにアラームをアレクサに頼んでおいた。普段ならばずるずるとやっていて母上に迎えに来てコールをしてからさらに続けるということだったが、アレクサがアラームした段階で進んできた内容を振り返りこのままでは、ここで出来ることも限られるので納得して今回は帰ってもらうことになった。小学生ではなくなり来月からは中学3年になるS君なのでそうした自立する姿も母上に見せられればと思う。年の離れた末っ子ぶりはわかるものの、逞しくなってほしい。

ルンバみたいな掃除機を作りたい(2)

サーバー構築が叶ったS君は、3年越しのプロジェクトであるルンバを再開した。超音波センサでの距離計測、衝突予防で後進しつつ方向転換をして走っていくというものだった。
Arduinoにモータードライバーを搭載して3つのモーターを駆動する。2つは田宮のギアメカだ。残り一つは塵取りに掻き込むブラシモーターの予定だ。
駆動系統を整理して超音波距離センサで方向転換が出来るのを確認して3年前の課題クリアと思いつつ、家に持ち帰ると動作がうまくないらしい。
単三電池二個を搭載したモーター用電源では、モータードライバーでのドロップも含めてモーター駆動には不十分のようだ。三個搭載の電源ボックスと交換して安定動作になった。
彼の思いとしてはリモコン制御でスタートストップをコントロールしたいということもあったらしく翌週には超音波センサを組み込んで動作させてみたけどモーター駆動中は、動作しないらしい。
距離センサとして用いる超音波センサと超音波リモコンで行う信号検出が性能的には厳しいらしいということがわかり、距離センサをi2Cと接続のToF距離センサに変えてみた。
IoTサポートをしてきた経験から検出精度は対象の差があるけれど近接範囲についての壁検知ならば動作しそうだと思い実験をしてもらった。超音波同様にまっすぐぶつかる場合には検知するのだが。いずれにしても二つないと検知できないケースもありそうだった。超音波リモコンの検出自体はするのだが、どうも検知したコードが化けてしまうようだ。モーター駆動でのノイズが影響するのかリモコン受信部のアースにノイズが回り込むこともあるようだ。並行処理をしつつの超音波リモコン機能はArduino UNOでは難しいと判断してBluetoothモデムモジュールを使うことを提案した。
Bluetoothモデム(HC-05/HC-06)は、かつて3×3のバスケットボール用に開発した12秒タイマーでスタート・ストップをリモコン制御するのに用いていたのでインタフェースのシリアル速度さえ抑えておけばsoftwareserialでも十分に検知制御できて、シリアル接続のLED群WS2812Bなどで構成した大型表示部も制御できていたので問題はないはずだった。
大量にどこかに在庫していたのだったが、部品棚にあったのはHC-05の親機が見つかった。サンプルのスケッチとスマホ側のアプリを紹介しておいたら、彼なりに自宅で接続テストをしたようで、あいにくとアプリは現在の彼のスマホではAPIがマッチしないのか動作しないようで、別のBT接続のアプリを見つけて実験をしていたらしい。
自宅での実験するなかで、どうもHC-05が正しく応答しないようで壊れているのではないかという話になり次回来た時に交換してほしいという連絡がLINEできた。
こちらでも動作確認をしようということで、古いスケッチを持ち出してみたのだが、どうにもBT接続のターミナル接続とコネクトできない・・・。

年度末の対応にともない2週間続けてのラボ予定をキャンセルいたします。

いつもお世話になっております。
学校の年度末指導に時間がとられてこの週末は開講できなくなりました。
先週の降雪でのキャンセルに続きまして誠に相済みません。

よろしくお願いいたします。管理人