Arduinoで学ぶ組み込みハンズオン合宿をしてきました(1)

先週末11/24と11/25は、依頼された組み込みハンズオン合宿の講師をしてきました。開催場所は茨城県神栖市の旅館を借りてのものでした。オープンソース活用などを進めておられた知己が地元の母校(波崎工業高校)の後輩たちもターゲットにして開催する刺激を与えることを目的として企画されましたが、実際には若手抜きでの開催となり準備推進といった様相となりました
先日開発したスポーツ用の12秒タイマーの実装例などの解説を中心にしてカスタマイズや、センサー・アクチュエータを活用できるところまで参加された方々のIDE環境のセットアップから二日間で漕ぎつけるというものでした。ほかにも教育研究されている宇都宮大学の先生や波崎工業高校の先生のお話も交えての内容で縦軸が私の担当するハンズオンの合宿でした。

地域の工業高校生の参加勧誘に向けては、社会連携などの活動としてのお話しにつなげていく中でのものでしたので準備に手間取り実際の生徒さんたちの都合には十分な宣伝期間などが不足して、社会人の方たちの参加のみに限定されましたが教える側としてのトライアルとしては寧ろIT環境になれない方たちも含めてのものとしての挑戦でもありました。

最初に、自身の邂逅となるマイコン遭遇となる組み込み人生について自己紹介をかねての経歴説明の中でマイコン開発の進め方にどう携わってきたのかを話して開発環境への取り組みが35年ほど遡る時代背景での高級言語Cのマイコン実装実現での経験について話をして、現代にいたるまでの話をつなぎました。これには今日のハンズオンへの伏線を隠していました。同様な内容は先月開催されたヒューマンネットワーク高専の全国交流会でのプレゼンと被ります

手元に皆さんが使えるようにしたのは中華製のArduino互換基板です。今回参加された方々はUbuntu, Windows, MacOSと様々なタイプのマシンを持ち込まれていたのでIDEのインストールを通じて最近のライセンス問題やArduino自身の出自や、Arduinoプロジェクトの御家騒動、USB変換チップの模造品問題などについても触れて今回のものに搭載されているものが中華国家が推進しているCH340が搭載されていることに触れて、識者の方にも経験のあるUSBケーブルが動作しなくなったある時期の時代背景についても触れて実態について紹介しました。こうした技術上の現代史を知らないまま、これからの時代を生きていくうえでは重要な点と理解しています。

折角の機会なのでマイコンの構造を解き明かしつつ内部の構成についても解説を加えるという回りくどい教え方でもありました。

Arduinoのベースとなるマイコンの基本を知ってもらう意味で機械語の動作が目視でみたりすることが出来るマイコン黎明期に登場したAlnair/IMSAIなどのレプリカマシンであるLegacy8080(科学少年出版)を持ち込みマイコンとしての動作の概念であるメモリ、バスライン、デバイスの仕組みについて解説して自身が開発して成果を上げてきた話とシンクロしながら説明をして、組み込みの基本となるリセットからのマイコン動作も含めてデモすることで実際にマイコンをステップ動作させることで理解した雰囲気に導きました。

Arduinoの良いところはプロトタイピングのために徹底した抽象化が図られていて本当の意味で知らなければならない細かい所作については理解しなくても使い込んでいくことが出来ることでもあるのですが、そうした隠ぺいした部分について詳細な理解までは別にして気にする程度に説明することで実際のモノづくりに必要なことを実装例を通じて示していきました。

実際に作ったスポーツタイマーは12秒計測を行う大型のLEDでフラッシングを脈動するような形で色や照度を変えつつ表示計測して任意に停止したり巻き戻したり進めたりという実現したものの説明を先に行いました。これで参加される方がこれから説明しようとするものについての動作上の理解をしてもらうことが出来ました。

具体的な動作例を示すことで、その中身のソースコードを説明していくことで必要な記述が何を示していくのかについての関心が増します。

150個のLEDピースが連結されたNeoPixelというデバイスが三本の線で接続されていることを示しつつ、信号線の定義をソース上で行うこと、実際の基板の上での読み方や複数のピンが存在する中で使える二つのタイプのピンAnalogの入力にもつかえるピン、デジタルの入出力に使えるピンなとの機能についての説明や配置上の自由などにふれ、これから制御しようとしているLEDのシリアルテープ構造のもの自体が一つずつにマイコンが搭載されていて3色のLEDの色情報と輝度情報を持っていることを教えます。セグメント構造、色の制御、時間経過での色と照度変化のための構造定義とロジックについてから前後しますが、ArduinoのプログラムにはMainが存在せずにSetupとLoopしかないことを説明して、普通のブログラミングであればMainから終了すると終わってしまうのが、Setupが最初に一度だけ呼ばれてから、Loop関数は繰り返し呼ばれてしまう構造であることを伝えて、ようやくソフトの制御の流れについての読み方を説明していくことを伝えます。スポーツタイマーではBluetoothの端末からのコマンドで動作することを示していたことは示していましたが、あえてシリアルインタフェースは使わずにソフトシリアルを使っていることを理由も含めて説明していくことで深みに嵌めていきました。

7セグメントの構造の1.5桁構成の表示機で制御するためのLED構造が数珠つなぎで一番Arduinoに近いものからアドレスが降られていることを伝えて制御したいセグメントを定義するスタートとエンドの番号を定義していく箇所。

そのセグメントが0から12までどの様に点灯するのかということを定義したデータ配列。

三色のバランスを段々変えていき、緑から始まって、徐々に赤くなっていく色の変化を定義した配列。

一秒刻みで毎回ハッキリと輝度を上げて表示しつつ経過時間で薄くなっていくための輝度調整の計算ロジック。

以上開発した関数を組み合わせて、ある経過時間での残り時間を、その時の秒数と、その時の輝度と色で150個のLEDに与えるデータとして編集する関数群として呼び出す仕組み。

最後に一気にそのデータを瞬間的に高速に払い出すための関数。

TA7291Pでリレー制御

IoT機器開発の依頼がありコンサル対応しています、ラッチングリレー制御をネットで行いたいということでArduinoとSakuraIOに繋がるrelayシールドと、その筐体実装のサポートをしました。プロジェクト自体は現役高専生がベンチャーの会社で任されて進めていて、組み込みの里ではそのフォローサポートならびに試作製造といったことをしています。

途中経過は、試作基板を削りで作成していましたが、最終的にシールド基板のみを開発することになりました。

量産基板には設定切り替えなどをJumperで出来るようなフットプリントを付けようとしているのですが、使っているKicadが色々と難癖をつけてきて妥協と解析対応をしつつ進めています。

若者がモノづくりの主体として関与するこうした取り組みを任されているベンチャーの方とのコラボはとても良い実体験になると思います。スマートに解決できることばかりではなく、お客様との打ち合わせなども体験しながら進めているプロジェクトの発信源は、やはり高専OBの熱い方でした。

仕様変更の調整なども踏まえて少し余計にかかりましたが、夏休み前にお話しを聞いていた時から長い高専生の夏休みの実務アルバイトは大きなインターンシップ以上のものになっていると思います。

試作基板には、仕様変更の対応でターゲット装置の遠隔監視などの観点で温度センサーが追加で実装されることになりました。ユニバーサルエリアを作らなかったので孫基板の実装となりました。

里では何年か前に話題になった例の温度センサーを使っています。(Hi)

NC加工をしてみる(4)

今回のお題は、市販の防水樹脂筐体に収めるある程度数を作ることを想定したモノづくりのお手伝いだ。里の加工で出来ることはしれているのだが、そこはベンチャー会社の人たちにしてみたら他に頼むことよりも出来るだけ作れるものなら最初にどこまで作れるのかは知りたいということらしい。

基板手配は、当初の課題だったが、サイズの問題などからEAGLEからKiCADに移行して新しい機能などを覚えて試作品としてOriminを用いたUSBCNCで削り出して試作評価というフェーズが簡単に崩れてしまった。良くも悪くも今までの使い方がCADというよりもアートワークを手で引いているようなPCBEだったりしていたことから制限を外して挑戦しようということでもあったのだが、試作用もう少し融通の利く環境構築も必要のようだ。

基板がとりあえず、KiCADのアートワーク状況を手コピーしてPCBEのスクリーンにプロットしていくのだがPCBEの柔軟な運用としてプロットポイントを自在に原点調整やピッチ変更が出来るのが幸いしてほどなく出来るのだが、あいにくと強度が必要なUSBコネクタやDCジャックの類の角穴などは折角モデルを使ったのが仇となっていたので丸で近似するしかなかった、作図は簡単だがはんだ付けの苦労はありそうだ。

これやArduinoの基板をスペーサーで保持するのだが、その設置用の穴開けが課題になりそうだということは先週のトライアルで分かった。穴あけ位置を指示する樹脂製のテンプレートを作成してそれ越しに穴あけをすることにした。これを作るのは今回は3Dプリンターで少し垂直のガイド性もつくようにした。

結局Arduino以外も含めて全体のテンプレートが丁度3Dプリンターで作れそうなので穴のサイズごとに色指示のシールを貼って効率が上がるようにしてみた。
Arduino UNOには使えないコーナーピンが一か所あり、設計上は3mmのビスを使うことになっているのだが実際にあたってしまいネジ締めが出来なかったりもしているので、ここは2.6mmのネジを一か所だけ使うようにした。そんなこともあったれして実はバタバタとしたNCデータの流用だった。転写する段階で読み間違えたりしてサイズ位置が合わなかったこともあったので、もう少しレビューを落ち着いてしたほうが良さそうだった。問題のUNOのマウントには樹脂製のスペーサーを使わないと背面のパターンも当たってショートしそうな感じもしたので手持ちのジュラコンのパーツを見つけ出してくみ上げてみた。

明日、全体試験をしてもらって来週はいよいよ顧客先で稼働評価試験となるらしい。

大型タイマーパネルを作る

大型のタイマーを作ることになり、開発要請元のご希望はアクリル板でカバーしてほしいということでしたので背面をマットな黒アクリル、前面を透明アクリル板で構成して間にNeoPixelのLEDを並べるというもので、透明モールを使うというものと、防水カバー付きのNEOPIXELをそのまま使うというものの2種類を作りました。アクリル板を挟み込むのはアルミチャンネルで、コーナーにカバーとコアとなる部品を2つ3Dプリンターで作り構成しています。

コアとなる3Dパーツと45度加工したアルミチャネル

Arduino UNOとBT-HC05

コーナーパーツは外側カバーと、内部コアです。 この積層方向はちょっと弱かった気がします。

外殻部品でなかのコアとアルミフレームを締め付けています。

NEOPIXELを150球使っています、電源は5V 8Aというものがアマゾンで見つかりましたが、NEOPIXEL用途のようですね。セグメント表示用のアプリは、この後作りました。

Arduino入門キットを寄贈いただきました

多賀様から、Arduino-UNO、Groove用シールド、スイッチサイエンスさんのArduinoを始めようキットのセットを3式寄贈していただきました。Arduino-UNOを利用していろいろと実験されたい学生さんに無償でご利用していただけます。

多賀様まことにありがとうございました。

旧友が訪ねてくれました

松下通信時代の旧友たちが、里を訪ねてくれました。F君は同世代で、T女史も少し下ですが昭和な時代を一緒に開発に取り組んでいました。今回は、野菜工場謹製のレタスをいただきさっそく皆さんでサラダにしてランチにいただきました。

田舎暮らしの別荘ライフは、考えたことがないらしいF君も興味があるようでした。

T女史は私が出向していた会社で今は仕事されていて今回はArduino環境の構築と古いPCのUbuntu対応の改造に取り組まれてきましたが、ちょっと時間切れとなりPCは、里に入院することになりました。

Vista世代のマシンでしたがメモリ増加とHDD->SSD移行などをトライしています。

クリスマス用のデコレーションを3Dプリンターで作ってみる

秋葉原で電子工作スペースを運営しているアセンブラージュさんが、アキハパラ キラキラ化計画というイベントを企画されている。参加された方が実際に電気街でクリスマス期間に使われるイルミネーションを作成するワークショップで、作成物は展示期間後に渡される形だそうです。ヒューマンネットワーク高専としてアセンブラージュさんの応援をしているので、普段やっていることで何かお手伝いできることはないだろうか考えて材料を探していましたところ。

100円均一ショップで売っている耐震ジェルを見つけました。6個セットです。

%e8%80%90%e9%9c%87%e3%82%b2%e3%83%abこの粘着性の柔らかい樹脂(エラストマーゴム)はサイズが25mm四方で厚みが3mmというものです。

間に紙でアイコンを切り抜いたものを挟み、横からLEDで照明して両サイドからアイコンが照らされて浮かび上がるという作戦です。

 

image使うLEDはフルカラーでシリアル制御可能なWS2812Bの基板実装済のもので、10mm径の円盤で厚み3ミリというものです。

IchigoJamでの制御可能にするという課題についてはIchigoLampというパッケージをLPC810に焼きこむことで対応するというのが槙野さんところでの方針らしいので、それに準じます。

img_80691とりあえず、エラストマーゴムと基板二つを挟み込む樹脂パーツを3Dプリンターで試作してみました。

 

 

 

 

 

 

img_80611基板の実装イメージはこんな形ですが、給電配線は方向としては、間違いで中に向けて入りと出の双方でY字を描くようにするのですが、まずは点灯してイメージの確認です。

 

 

 

 

img_80591でこんな感じです。

しかしながら、実際に試作したケースでは、この太い給電線を収容できなかったので・・・img_80672ワイヤリングペンで配線することで、まずはアイコンを挟んで照らすことを評価しましたよ。色を変えてみてもよさそうでした。

コントローラは、とりあえず、ArduinoにNEOPIXELのスケッチを入れて評価しました。

収容部分の給電線の余裕をみた形にして3D設計しなおして作成したものは、こらちにUPしてあります。

エラストマーゴムは粘着性ですので、表面にもゴミが付きやすいのですが、この用途に限っては汚れてもグミのような感じになるだけで、照明の結果としては透明よりも良い感じになるようです。

むろん取り外して洗えますので、問題はないです。img_80661

嵌合に使用したネジはM2の8ミリです。
IchigoLampやArduinoなどからの給電能力から考えると、このペンダントとしての連結制限は6個くらいかもしれません。(12個のWS2812B)

輝度を下げる指定をすれば増やすことは可能ですし、別電源で供給するならば問題はありません。

作成しました3Dプリント部品やWS2812の基板については頒布いたしますので、希望者はお知らせください。

ニキシー管入荷しました (IN14)

image image ニキシー管時計キットの基板をベースに必要なパーツは、ほぼそろいました。今回のニキシー管はIN14です。USEDですが、状況はよさそうです。6個で6000円です。

このタイプのニキシー管には専用のソケットはなく、このリード線を基板に直付けか、丸ピンのICソケットを使うか・・・・

時計製作されるかたの相談に乗ります。
材料費はACアダプター含みで10000円程度かと思います。

ソフトウェアはArduinoベースです。

ニキシー管時計を作ろう (更新3)

レトロな映画で最近も見かける表示器だが数字のエレメントが重なり0-9あるいは単位などの表示ものもあるようだ。高専に入学したころ(1971)には、電子計算機室という名前で、実際にはこの表示器のついた大型電子卓上計算機が並んでいる部屋だったりもした。当時はSONY製やカシオ製の電子式卓上計算機が鎮座していた。ルート計算ができるモデルがあったが、計算をすると途中経過の表示などが確定していくさまでは表示が前後する形のこの表示管の味わいがありました。このチューブはソケットの上部から覗くようになっていてパネル面につけるタイプのものなのだろう。現在はロシアで生産しているようで、ソケットと合わせてチューブを購入した。中身はネオンサインと一緒で高圧200V程度をかけて当該のエレメントが点灯するようになる。

IMG_5821

真空管のソケットタイプではなく、ニキシー管の専用のソケットになっているらしい。
これを立てて取り付けるパネルを3Dプリンターで作成した。
IMG_5824

制御基板はATMEGAでArduino開発ベースとなっていた。基板には、高圧発生回路、フォトドライバー、高圧対応のBCDデコーダとなり、別にリアルタイムクロックのモジュールとi2cで接続する形だ。

IMG_5820

配線自体は、基本的に横一線で同じエレメントを数珠つなぎとしてアノードを各自に配線する。IMG_5825

制御基板やrtcモジュールを載せるシャーシも3dで作成した。ここにニキシー管パネルを立てる

IMG_5826

配線の終わったニキシー管パネルをつけた。

IMG_5831

これを落とし込む100円均一で買った木製ボックスにいれてみた。
この窓からニキシー管が見える予定。

IMG_5829

全体を接続して動作確認をしてみると点灯しない文字があるのでデバッグ開始

IMG_5835

今回のキットはチェコの方の作品だが、基板の改版とコードのメンテナンスがシンクしていないようで、atmegaからの引き出しピンが私の入手した基板ではあっていないようだ。古い基板をくれたのかもしれない。ソースは開示されているので修正することにして、まずケースに収めてつけてみた。こんな感じ
IMG_5845
問題点は、明らかになり基板のバージョンが古いらしいこととソースコードとマッチしていないことだった。基板をソースコードに合わせて修正してソフトを書き戻した。RGBとTICKのLEDにPWM制御をかけたいらしく仕様変更があったようだ。最新の図面は提供されていないがソースには、そのように書かれている。基板のパターンも訂正されていないのでパターンカットとジャンパーで筆者がしたであろう状態にしている。予備の基板が一枚あるので、作りたい方は、ジャンパーのみ実施していただく必要がある。パターンカットは実施済。

表示できない文字や配線していないはずの小数点が表示されるなどの挙動がありさらに追及するとニキシー管のソケットナンバリングと向きが想定外になっていて180度異なっていたことが判明した。スペックシートとまったく反転しているのには驚いた。下記のスペックシートをみて、実際のTUBEを正立で見た際に天が12ピンではないのだとは・・・・。

in-12adiagram

ソケットを180度回すだけの配線の余長があったので幸いでした。

image

操作キーは秋月の基板を天板のアクリルにとめつけて操作ボタンとLEDを出すことにしたのだが、基板加工機を使ってNCマシンの代行にさせようとしたのだが失敗してしまった。アクリル加工には基板加工とは違って出来るだけ発熱をしないようにしないといけないのだ。ドリル径より大きな穴をスイングしてあけさせようというのは周辺が溶け出してしまいみっともない形になった。1mm程度のドリルで上下の打ち抜きのみをさせるように次回はしたいと思います。
image

出来上がりを確認してみると1,2,5の文字が表示できないという現象となり74141がおかしいようだ。ついてきたパーツはロシア製の互換チップのK155だったが、中華マーケットに手配をかけたが、いまさら秋葉原にもなさそうなので、入荷したら再開しよう。

原因は、基板のパターン間違いだった。A-Dが入れ替わっていた。途中表示をしなかったのは、10進デコーダの範囲外となっていたからだった。うーん、困ったものでしたがソース修正して無事表示が出るようになりました。

DSC_0587

予備の基板がありますので、作りたい方はNIXIE管の手配で作れそうです。

DSC_0588

追加のバグ報告 アノードの出力ピンがコネクタ順で時刻の10位と1位が入れ替わっていました。なぜか、この基板設計した人は間違ったままにしていたようです。表示がおかしいので、ソース側で修正しつつ、基板の間違いを確認しました。

作者からソースコードの旧ハード(Revisionなし)に対応するものが提供されましたが、若干の相違があったのでレポートを返しておきました。

時刻表示もOKです

image

カレンダー表示もOKです

image

トランジスタテスターキットの実力は?

image

Arduinoベースのトランジスタテスターです。トランジスターの極性判定、HFE測定やLCRの計測なども出来るキットですが、簡易な目的ならば、それなりに使えると考えられる人も多そうなので電子工作をされる方が持っていそうな測定器と比較することにしました。

測定に供したものは、以下の通りです。

image

緑LED

image

1/6W 680kΩ

image

FET 2SK1250

image

セラミックコンデンサ 0.1uF(100nF)

image

フィルムコンデンサ 0.22uF (220nF)

image

NPNトランジスタ S9014

比較したのは、里にもある秋月で取り扱いの英国PEAKS社の4機種です。
比較目的は、あくまでも、このテスターキットの確認ですが、必ずしもPeaks社の商品と同じ使い方が出来るわけではありません。

image

LCR40 表示パラメータ及び範囲 ・L 自己インダクタンス、直流抵抗、テスト周波数、1μH~10H ・C 静電容量、テスト周波数、0.4pF~10、000μF ・R 抵抗、1Ω~2MΩ ・テスト周波数 DC、1kHz、15kHz、200kHzから自動設定

image

ESR70 ESR及び静電容量メータ コンデンサのESR (等価直列抵抗)を測定すると、コンデンサの状態がよくわかります。 Atlas ESRは回路内で使用できるので、コンデンサを取り外す手間が省けます。 回路から外してコンデンサをテストしても、静電容量が表示されます。 ESR測定範囲:0~40Ω 静電容量測定範囲:1μF~22,000μF ESR 0.01Ωの最小分解能 業界標準100kHzで解析極性なし、任意の方向で接続

 

image

DCA55 半導体アナライザ バイポーラトランジスタ、MOSFET、サイリスタ、トライアック、ダイオード、LED、その他など、 さまざまなタイプのコンポーネントを分析できるインテリジェントコンポーネントアナライザです。 コンポーネントタイプ、ピンアウト、測定可能パラメータ(ゲイン、ゲートしきい値電圧、電圧降下など)の情報を確認できます。 コモンアノード、コモンカソード、直列及び逆並列タイプなど、ダイオードネットワークの確認 トランジスタのダイオード保護又はレジスタシャントなど、特殊コンポーネント機能の識別 2又は3端子の二色タイプなど、各種LEDタイプの識別コンポーネントを自動識別 自動ピン配列識別 トランジスタゲインの測定:2~65000 MOSFETゲートしきい値の測定 トランジスタ、ダイオード、LEDの半導体電圧降下の測定 自動及び手動電源オフ

 

 

image

DCA75 多機能・高性能 半導体アナライザ <フルオート自動判別・カーブトレーサ機能搭載> ・さまざまな半導体を自動識別(2ピン、3ピンのデバイス) ・測定対象に合わせて各種電気的特性を測定・表示 ・測定プローブの接続は自由  ⇒自動判別後にプローブ色と対象端子の対応を表示 ★測定結果は電子部品記号(アイコン)とともに分かりやすく表示されます。 ◆トランジスタ(バイポーラ/MOSFET/接合型FET/IGBT) ◆ダイオード、ツェナーダイオード、LED、2色LED ◆三端子レギュレータIC ◆トライアック、サイリスタ等 ★USBケーブル(付属)でPCと接続することにより、  電気的特性曲線をオートトレースすることができます(カーブトレーサ機能)。 ・バイポーラトランジスタ:P-N接合、Ic/Vce 各特性カーブ ・MOSFET/JFET/IGBT:Id/Vds、Id/Vgs 各特性カーブ ・三端子レギュレタIC:Vout/Vin特性カーブ

トランジスターテスターの評価テスト 2016/1/7 組み込みの里  木更津高専の協力
供試サンプル LCR40 ESR70 DCA55 DCA75 M328 ZM2372 (Accuracy 0.08%)
33uF無極性コンデンサ 34.63uF 33.78uF
ESR=0.25Ω
34.75uF
ESR=0.21Ω
31.861uF (1kHZ)
224フィルムコンデンサ 221.9nF 測定範囲外 219.5nF
ESR=0.23Ω
222.39nF (1kHz)
104積層セラミックコンデンサ 91.74nF 測定範囲外 94.57nF
ESR=3.1Ω
95.3nF (1kHz)
1/6w 680kΩ 694.6kΩ 687.6kΩ 677.6kΩ
緑LED LED or Diode
Vf=1.97V
LED
Vf=1.977V
Diode
Vf=1.99V C=12pF
S9014 NPN Silion Tr
Hfe=322
Vbe=0.78V
NPN BJT
Hfe=326
VBE=0.778V
BJT-NPN
B=434 Vf=0.714V
2SK1250 = Nch Enhancemebnt mode MOSFET
Vgs=3.339V
Vgs=2.512v(off)
gm=32.9mA/V
N-E-MOS
Vt=3.4V