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に与えるデータとして編集する関数群として呼び出す仕組み。

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

BLEを使おうとしたら嵌ったerror: too many asp_ble_gattc_open(esp_gatt_if_t, uint8_t*, bool)’

ESP32の開発環境をArduinoに構築してとりあえず、LEDテープが動作したりするのは確認できたので、bleを使うために最新のライブラリを取り込んでみたのだが、表題のエラーがでる。ソースコードを確認していくと新しいライブラリで新たなincludeディレクトリとしてapiというものが出来ていた。まだBLEが最新版に統合されていない状況で個別にかぶせる形で展開したためにエラーとなる関数のヘッダーが新旧と同時に存在して探索パスの順序から古いものが参照されていたというオチだった。

apiに存在しているもので、上のディレクトリにあったものは削除することで解決した。

私の場合は、D:\User2\Documents\Arduino\hardware\espressif\esp32\tools\sdk\include\bluedroid

ここの下に新しいBLEライブラリはapiというヘッダが作られていた。

Arduino 環境 1.8.5
ESP32 最新版
BLE  0.4.16

思い立ったら組み込みの里で実験しよう

赤外線リモコン開発に挑戦中

日曜日にはバイトがないというN君は、思い立って土曜日に組み込みの里に連絡を入れて、作業をしたい旨を伝えてきた。赤外線リモコンの開発をしたいということを伝えて使いたい設備はオシロだと伝えていた。

日曜の来訪に備えて、たぶん使うことになるロジックアナライザ(ロジアナと略す)を使えるようにまずは、使用ソフトをインストールしていたマシンのWindows更新を進めておき、また必要なロジアナのドライバーも更新してすぐに使えるようにしておいた。

使うはずの赤外線受光部と赤外線LEDも用意しておいた。

昼過ぎにやってきたN君だったが、オシロとロジアナを使えるようにしてみせて、まずはざっくり波形をアナログのオシロで見て確認してからサンプリング時間などの設定をするように伝えてロジアナで実際に見てもらった。トリガのかけ方と表示範囲の設定や取り込みメモリ容量の設定などを伝えたのだが、実際には使い方を次々と発掘してCSV にデータを吸い上げて解析を進めていたようだった。やるねぇ高専生・・・。

現在は、アパート生活をしている専攻科生のN君だが、部屋のインフラとしてスイッチなどが無くてリモコンだらけなのだという。これを解決するソリューションとしてArduinoで学習リモコンを作ってカスタム仕様のスイッチを付けたいというのが彼の発想だったらしい。

持ってきたリモコンのうち、一つはニトリの掃除ロボットのリモコンでこれだけは、赤外線ではなくて2.4Gの無線制御だった。これについてはいろいろと調べていたようだが結局スタートキーだけをハードハックしてArduinoからスタートが制御できるようにするというのが彼の判断だった。

ニトリのリモコンの開封が一つのハードルだつたがなんとか達成して、里のワイヤストリッパーも堪能してもらい分解に必要な手業としての低温半田による組成変性で半田を溶かすということも体験理解してもらって分解に成功してリューターも使ってもらい線の引き出しに成功した。

赤外線の信号の動作確認がロジアナで取れるようになったので、まずは部品選定を進めなければならないスイッチハックの制御について実験をしていたようだ。彼の理解は、フォトカプラだったが実際にスペックを確認して無理そうだと理解したようだ。提案したのはトランジスタ、FET、最後はリレーだった。2SC1815と2N7000と3Vのリレーだった。実際にはFETはほとんど学んだだけで使ったことはないらしい。実際に馬力をあげて次々と確認していき、結局リレーに落ち着いたらしい。

とりあえず、こうした部品がすぐに手当て出来るのも、里のオープンラボの所以である。ホームセンターや秋葉に行かずともそろって実験が出来るのだ。

アイデアと腕さえあれば、彼のように次々と挑戦して新たな道具と対峙してキャッチアップして自分の思索を深めていくことが出来ますよ。

彼のデバッグは、まだ続くようです。里で見かけることがあれば声援してあげてください。

ブログラミングスクールでも電子工作の波か

2020年から始まる小学校でのブログラミング教育必修の流れを受けて、各地でブログラミングスクールでもスクラッチを用いたクラスが始まったりしているようですが、IchigoJamやArduinoを活用して電子工作との流れとの連携もいろいろと模索されているようです。里の開設以来お話しをさせていただいている教室ではLEGOからスクラッチに発展したりという流れで今さらに3Dプリンターの活用なども推進されているようです。

木更津市内でもいくつかのブログラミングスクールが立ち上がっているようで、母校の学生さんもアルバイト講師として活躍されている事例もあるようです。

組み込みの里では、電子工作というには厳しい掟を課しているので鉛フリーの半田で電子工作をさせるという大リーグボール養成ギブスのような厳しさではんだ付けの基本となる部材への加熱と半田の濡れを感じてもらえるようにしていますが、小学三年生のお子さんからこうした取り組みをさせていただいてきました。

スクールの方が電子工作を導入するのに体験したいということで訪問されたりする事例も出てきました。6年ほどの運営が続く中で宣伝もしない中で口コミだけでつながってきたということになります。実際に必要な機材や材料環境などの整備に面食らったりしているのも目にしていますが、こうした方々が増えて子供たちに刺激を与える機会が増えていけば幸いです。

いろいろな階層の方々に出来るだけ経験に基づく指導をしているのが実情です。

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

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

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

IchigoJamを作って未来を切り開くグルがやってきたぞ

組み込みの里電子工作オープンラボを訪ねてきてくれたのは、福井県鯖江市にあるJIGの福野社長さんらです。携帯のブラウザ開発などアプリやサービス、オープンデータ活用など幅広く手掛けられていますが、福井高専OBで専攻科に進学するも直ぐに起業に移ってしまったというアクティブな方です。

子供ブログラミングの中心は、IchigoJam。2000円を切る価格で子供たちがはんだ付け体験したりして完成させてアナログモニターに表示する世界は管理人の世界ではノスタルジックなものでありますが、カラーグラフィックがあふれた現在においても子供たちの想像力を掻き立てるものに相違ないようです。ネットに接続しないまま、セルフでブログラミングが学べる環境は親御さんにも安心な素材といえます。

2014年に鳥羽商船にお邪魔して講演した際に、その後の福野さんを担当の先生がお呼びして鳥羽商船高専で講演されたとお聞きして以来、なにか引き合うものがありました。定年退職後の充電期間で高専フォーラムの場で講演されることでお会いできて、その後も管理人が活動の支援をしている秋葉原のモノづくり刺激プレース Assemblageさんの活動のスポンサーとしてご協力いただくことになり、秋葉原でお会いすることも増えました。

母校の木更津高専での講演も何度かされていて、今年の夏休みの子供ブログラミングのイベントを開催に合わせてお立ち寄りいただけることになり、実現しました。

KSF2017(キッズ・サイエンス・フェスティバル2017)の開催案内がでたぞ

木更津高専にて例年夏休みに開催される、このイベントは小学生を対象にした科学好き少年少女を育成するこのイベントでは、清見台の丘にある木更津高専の先生方や学生さんが丁寧に小学生に対応してくれる人気イベントです。申し込みは7/3から7/11までの期間に、申し込みサイトからの手続きを行ってください。詳しい内容はこの資料に記載されています。当選するとはがきで当選通知がされます。

今回は、話題のIchigoJamを開発されたjig.jpの福井さんが来られて行う特別企画もあります。高学年の方はIchigoJamの組み立てから、低学年の方は完成品でそのままプログラミングからできます。参加費200円以外には実費負担が3000円ありますが、優しい福野さんの手ほどきで楽しい企画です。

 

講座 講座の時間
(1) おもしろサイエンス/ネオジウム磁石発電機を作ろう
小学校高学年(保護者同伴なら低学年でも可)
定員16名/回

世界一強い磁力を持つ「ネオジウム磁石」を使って,簡単な手動発電機を作ってみよう。これさえあれば,停電のとき,電池が無くてもLEDを点灯させることができるよ!
工作をはじめる前には,磁石を使ったおもしろ実験も実演します!

① 10:30~12:00

② 13:00〜14:30

(2) オリジナルの木製フォトフレームをつくろう!
小学校低学年
定員15名/回

木製のフレームを組み立てて,木工用ボンドで接着すればフォトフレームになります。
さらに色を塗ったり,イラストを描いたりするとオリジナルの木製フォトフレームが完成します。
手作りの木製フォトフレームでものづくりの楽しさを体験してください。

① 10:30~12:00

② 13:00~14:30

(3) 金属探知機を作って宝探し
小学校低学年・高学年
定員16名/回

ブレッドボード上に,トランジスタ,コイル,コンデンサなどの電子部品を差し込んで,金属探知機を作ります。
できあがった金属探知機を,磁石や鉄,アルミなどにあててみましょう。
そのあと,教室内で宝探しをしましょう!

① 10:30~11:30

② 12:30~13:30

③ 14:00~15:00

(4) 電子オルゴールをつくろう
小学校高学年(保護者同伴なら低学年でも可)
定員16名/回

指先サイズのコンピュータを使って電子オルゴールを作ります。
部品を板に突き刺して,誰でも簡単に作れます。
プログラム書き換えで,お好きな曲を持ち帰れます。

① 10:30~11:00

② 11:15~11:45

③ 12:30~13:00

④ 13:15~13:45

⑤ 14:00~14:30

(5) 鉛筆オルガンをつくろう
小学校高学年(保護者同伴なら低学年でも可)
定員12名/回

鉛筆を使った電子楽器製作講座です。鉛筆の芯には黒鉛という炭素結晶が含まれています。黒鉛は電流(電気)を流す役割を持っています。
この鉛筆と金属クリップを使って紙に一筆書きの絵を描くと線の濃さや太さ,長さによってさまざまな大きさの電気抵抗器を実現することができます。
この電気抵抗器とコンデンサ(電荷:電気を貯めることができる電子部品)の組み合わせで,楽器として音楽を演奏することができます。

① 10:30~11:30

② 12:30~13:30

③ 14:00~15:00

(6) きみにも作れる防犯センサー
小学校高学年
定員16名/回

光センサーとトランジスタを使って,簡単な防犯センサーの回路製作と実験をします。製作にあたっては,小学生でも作れる様に,回路図付のボードを使って,部品を取り付けます。
実験では,光とセンサーの間に,ドロボーさん(製作者)がいた時に,ブザーが鳴るかどうか,LEDが光るかを確かめます。

① 10:30~11:30

② 12:30~13:30

③ 14:00~15:00

(7) 手作りスピーカーをつくろう
小学校高学年
定員10名/回

2つの磁石を近づけると、磁石同士が引きつけ合ったり、反発し合ったりする力が働きます。また、コイルに電池をつなぐと、クリップなどを吸い付ける、磁石の働きをします。この働きからコイルに流れる電流で磁石を動かすことができます。
多くのスピーカーはこの仕組みを利用して音を発生させています。そこで磁石、コイルを用いて簡単なスピーカーを作り、ラジオや音楽を聞いてみましょう。

① 10:30~12:00

② 13:00~14:30

特別企画「こどもプログラミング教室でっす!」(株)jig.jp 提供
小学校高学年 定員20名 (はんだ付けがあります)
小学校低学年 定員20名 (はんだ付けはありません)

こどもパソコンIchigoJamイチゴジャム)を用いて、プログラミングを楽しみます!
BASICというプログラミング言語を使って、シンプルながらも奥の深いゲームなど、小学生の皆さんも簡単にプログラミングができてしまうのです!もちろん、プログラミングがはじめてでも大丈夫!講師の方や本校の学生がしっかりとサポートします。
もちろん、保護者の方も一緒に楽しんでいただいて構いません。

★参加費(200円)と別に,こどもパソコンIchigoJam代3,000円が必要です。

高学年

13:00〜16:30

低学年

14:45〜16:30

特別企画「こどもコマ大戦 木更津高専KSF場所」(有)光精工 提供
小学校低学年・高学年
トーナメント大会・定員16名/回

◎重さの違う金属部品を組み合わせてコマを作ってみよう!
コマはなぜ倒れずに回っているのだろう?原理を勉強すればよく回るコマが作れるはず!いろいろ考えて遊びながら学ぼう!
重さの違う3種類のリング(アルミ・ステンレス・真鍮)と2種類の軸(ステンレス)が入っています。リングの組み合わせや枚数によって重心の高さが変わります。 いろいろ試してバランスの良いコマを作り長く回る最強のコマを作ってトーナメントで対戦してみよう!!

★参加費(200円)と別に,ちばコマキット代500円が必要です。

① 10:30~11:30

② 12:30~13:30

③ 14:00~15:00

 

組み立て実習は随時(数に限りがあります。)

VS 2015 CommunityがDドライブにインストールできない

道具作りの必要に駆られてVS 2015 Community(旧Express)をインストールしようとしたのだが、秋の少ないCドライブではなくてDドライブにインストールできないという事象となった。インストールパスがグレイになっていて選択できないのだった。

調べたところ既にインストールしていたAtmel Studio7が Visual Studioベースとなっていることから、影響されてしまっているようだった。まずはAtmelをアンインストールしてVS関連をさらに取り去ることで、VS 2015 CommunityのインストールでスムーズにDドライブを指定できるようになった。Atmel7もこの後に再度Dドライブにインストールしなおすことにする。

ASUSのこのマシンは256GBの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の基板については頒布いたしますので、希望者はお知らせください。

IoTの地平線は1$以下の制御ボードが先兵か

STM社の8ビットコアが搭載された1$開発ボードです。

imageMCU:   STM8S103F3P6
USB給電 レギュレータ搭載
3.3V
SWIM I/Fでデバッグ (ST-Link V2)

開発環境は、Cosmic-Softwareから無償提供、SDCCもあります。
Flash 8kB
EEPROM 640B
SRAM 1KB

I2C/SPI/UART/16bit TIMER 2/8bit TIMER 1 3.3VでのADCも内蔵しているので周辺装置拡張に向いていそうです。SWIMインターフェースが手に入ったらまた報告します。