小林@筑波技大/福祉工学やら支援技術やら

カテゴリー: ハードウェア

プログラミング出前講座など

昨年度に引き続きR5年度もプログラミング出前講座を企画させて頂いています。3学期の実施ご希望が多く、1月末より2月中旬にかけて新潟よつば学園様・和歌山盲学校様・群馬盲学校様へ訪問させて頂きました。

新潟では科学へジャンプイン東京でも実施したバーコードワークショップを、和歌山盲さんと群馬盲さんではVBS体験、群馬盲さんの小学部の皆さんにはCodeJumperを体験して頂いたりしました。

CodeJumperは今回、3組同時に走らせるという形態で実施しました。これまでで多分最大数?だったのではないかと思います。最初Bluetooth接続がうまく行かず焦りましたが、なんとか復旧して楽しんで頂けました。

情報システム学実験2023

情報システム学実験は、オムニバス形式で進められる3年生の科目で、教員1人につき3週間9コマが割り当てられています。私の担当部分ではクラスを3から4チームに分けて、それぞれがArduinoマイコンを使ったシステムを作って発表する、というものを実施しています。昨年まで少し古いESP8266を使っていましたが、今年はBluetoothを使えるESP32にしてみました。条件としては、必ず無線機能を使うこと、としています。WiFiは設定でつまづくことが多いのですがBluetooth シリアルが使えるので、とりあえずシリアル通信で何かしら実現できるのは授業的には助かります。

今年のクラスは人数的に3名もしくは4名の3チームになりました。今日は3週目で最後の時間にデモを含むショートプレゼンをします。チーム名はESP8266を使っていた頃にピンヘッダの色が赤・黄・青・白・黒などがあったことからチームレッド・チームブルー・チームイエローなど色になっています。

ハードウェアの絡むプログラミングは初体験という学生さんもいますし、慣れている学生さんもいますが、今回のシステムは以下のようなものが揃いました。

  • 赤外線LEDを使って家電をコントロールするリモコンシステム。Nature Rimoみたいな感じでしょうか。筐体もしっかり作りこんでくれています。
  • 明るさによってカーテンを開閉するシステム。Cdsの出力によってステッピングモーターを回転させます。さらにBluetoothで手動での開閉にも対応します。授業内容として、王道のコンテンツといった感じですね。
  • インスタント麺にお湯が注がれたらその重さによって適量値を判断し手元のスマホに知らせ、さらに時間計測を始めるシステム。ハードウェアとしてはロードセルからのデータがメインですが、スマホインタフェースや通知の音楽などに凝っています。

完成したチーム・未完成で発表日を迎えてしまったチーム、それぞれですが皆何かを作り上げる喜びは感じてもらえている…はず。と信じています。

パラメトリックスピーカー

2008年発売の秋月のキット、2012年くらいに一つ作っていましたが、10年ぶりにもうひとつ組んでいます。半田づけ作業中、眼鏡を外した方が楽になってしまいましたが…

合計100個の超音波素子をつける作業も終わりました。

組みあがったパラメトリックスピーカーキット

前回↓はエネループ10本の電池ボックスをグリップにしてハンドガンぽくプラ板で仕上げましたが、今回はどういう筐体にするか思案中です。

10年前のパラメトリックスピーカー、ハンドガン仕様前面
10年前のパラメトリックスピーカー、ハンドガン仕様背面

ラズパイPicoで2サーボ

これまでArduinoやESPだけしか触ってきませんでしたが、Micropythonで動くので学生受けもよさそうかな…と思ってRaspberry Pi Picoに手を出してみることにしました。

とりあえずサーボです。「Raspberry pi Pico servo/サーボ」などと検索すれば1つ動かすサンプルはいくつも出てくるのですが、スレッドで2つ動かしたいので適当に書いてみます。

ブレッドボード上のRaspberry PI Picoとサーボ・電池ボックス
from machine import PWM, Pin
from time import sleep
import _thread

servo_1 = PWM(Pin(0))
servo_1.freq(50)
servo_2 = PWM(Pin(1))
servo_2.freq(50)

angle_0 = int(2.5 / 20 * 65536)
angle_90 = int(1.5 / 20 * 65536)
angle_180 = int(0.5 / 20 * 65536)

def Move_1():
    while True:
        servo_1.duty_u16(angle_0)
        sleep(0.5)
        servo_1.duty_u16(angle_90)
        sleep(0.5)
        servo_1.duty_u16(angle_180)
        sleep(0.5)

def Move_2():
    while True:
        servo_2.duty_u16(angle_0)
        sleep(1)
        servo_2.duty_u16(angle_90)
        sleep(1)
        servo_2.duty_u16(angle_180)
        sleep(1)

_thread.start_new_thread(Move_1, ())
Move_2()

無事それっぽいリズムを刻む動きをしてくれました。

最初、2つともスレッドにしていて少しハマりました。
(最終行を「_thread.start_new_thread(Move_2, ())」と書いていた)
PicoはPWMを2系統しか出せないようなので、3つ以上のサーボを動かすには別途コントローラが必要ですね。

Tune ECU

先日かなり久しぶりにStreet Tripleで出かけて帰宅したら、オイル警告灯が点いてスターターが回らなくなってしまいました。出先ではなくて良かった…と思いつつ、少しオイルを補充して回復。しかし数日後、やはりスターターが動きません。リレーかソレノイドか…と考えながら久々にECUケーブルをOSBコネクタにつないでTune ECUを起動。手元のものは6年前に落としてきたVer.2.5.8ですが、ちゃんとWin10で動きました。

Tune ECUのウィンドウ

当時購入したノーブランドのECUケーブルは、デバイスドライバ的には自動認識して仮想COMポートになります。なのでてっきりCOM指定かと思いきや、USB指定で通信が確立しました。結果的には何のエラーも出なかったので、単にバッテリーが弱っていただけと判明。最近乗る機会がめっきり減ってしまったのが良くないのですね。

いずれにせよ久々にTune ECUの動作確認ができて良かったです。特にマップをいじるとかマニアックなことはやりませんが、自分でエラーの種類を特定できるのは便利。6年前はO2センサ異常が分かったので交換できました。

さてそのTuneECUですが、サイトに行ってみると現行バージョンは5.6.37。しかもAndroid用の有料アプリになっていました。時代ですねぇ。先日(25年ぶりに!)買い替えた冷蔵庫も、製氷用の水がなくなったらスマホアプリで分かるらしいし、色々なハードウェア関連の情報に一般ユーザがスマホでアクセスできる世の中のようです。そこから「音声化」もできるのではと夢は膨らみますね。

以前家電協会さんに協力したアンケートでも、学生たちからは「スマホで家電がコントロールできるならば助かる」という声が多かったです。エアコンのリモコンなどに苦労していた様子。プロトコルがオープンならば作れそうですが、赤外線インタフェースのハードウェア入手がネックですね。今はNature remoみたいなスマート化デバイスの役目かもしれません。

Magic-Ben MAG1 キーボード交換

分かる人には分かる系タイトルです。

しばらく触れていなかったMagic-Ben MAG1のキーボードがほぼ反応せず、気づけば「t」くらいしか入力できないという壊滅状態に。運よくキーボードが入手できたので交換してみました。

ひょっとすると誰かの役に立つかもしれない…ので記しておきます。既にメーカーは存在しないようですしサポートも何もないと思われますが、作業する場合は自己責任でお願いします。

まずは6本ビスを外して裏ブタを開けます。最初にSIMスロットも抜いておいた方が良いです。続いてヒートシンクを外します。写真に示したビス4本。バッテリーの放熱板?も一緒にくっついてきますのでまとめてremove。とにかくテープが多いので再利用したければ丁寧に剥いでいきます。左にあるバッテリーのコネクタも下側に引く感じで外します。
バッテリーを外したところです既にキーボードのフレキも外れていますね。MAG1のフレキのコネクタは爪を起こして外すタイプが多いです。次の写真で右側のWWANカード(EM7330)を外していますけど、これは外さなくてもバラせるかもしれません。WWANアンテナは1本だけです。抜いておきます。マザボに被ってる黒いシートも剥がします。
とにかくキーボードまで到達すべく、どんどん外して剥いでいきます。LCDのコネクタも爪を起こすタイプです。ファンは平らなビス2本で止まっていますので外します。ファンケーブルも抜いて、ファンを取ります。タッチパッドのコネクタも抜いて、マグネティックセンサかな、左下のセンサもテープを剥がしておきます。ここはテープで押さえられているだけです。
マザボのアップ。WLAN/Bluetoothは3165D2Wです。ここをカバーしていた板、既に外れてしまった写真ですがビス1本で外します。この状態になったら2本のアンテナも抜きます。その右上、指紋センサのコネクタなんですがこれは垂直に持ち上げるだけで外れます。フレキ断線注意です。マザボも適宜ネジ数本で特に問題なく外れます。
マザボをひっくり返したところです。手前にねじれているのはマグネティックセンサ(なのかな)のケーブルです。上に伸びているのは、さっきまで下に出てたタッチパッドのコネクタです。裏側のフレキコネクタは爪を起こすタイプではなくスライドさせるタイプでした。タッチパッドコネクタの右側には使われていないコネクタがあり「JOYCON1」と書かれてました。
右側のサブボードも外していきます。この時にSIMスロット抜いておかないとダメですので注意しましょう。写真はファン下の金属パネルです。この3つの位置のビスを抜いて剥がしますが、この3箇所、キーボードのビス穴につながっているのが後から分かります。
今回一番驚いたポイント、3箇所のメス穴部品です。メス穴の板を取り付けてるだけなんですが、キーボードパーツを抑えているとも言えますしネジ穴をずらしているだけとも言えますし、謎です。精度もイマイチなので手作り感があります。いずれにせよ外さないとキーボード剥がれませんので外します。
ようやくキーボード本体が「見えて」きました。このプレートも粘着テープを丁寧に剥がしていきます。
ようやくご対面です。しかしここで出迎えてくれるのは「30本以上のビス」です。先ほどのファン下パネルを留めていた3本以外のビスを全部、外さなくてはいけません。とりあえず3つの場所を覚えておかなくてはいけないので、油性マジックで印をつけておくと良いでしょう。
…なんとか外し終えました。右側にビスの山が見えます。
キーボード分離成功。タッチパネル画面が見えました。新しいキーボードをつけて、逆の行程で組んでいきます。まずは30本超のビス留めから…

戻す際は、指紋認証とWiFiアンテナ周辺の取り回しや、ファン下プレート>シール>マザボ~サブボ間フレキの順番とかが少しややこしくて数回手戻りしました。間に食事挟んでしまったのもありますが、短期記憶がかなり怪しくなってきてますので途中経過の写真大事ですね。

というわけで無事キーボードが動くようになったMAG1、もう暫く稼働してもらいます。

BLE Notify

GRANBOARDのBLE Notifyについて調べたデータをメモしておきます。

点数半径方向データ
1ダブル32 2E 36 40
1外側32 3E 35 40
1トリプル32 2E 34 40
1内側32 2E 33 40
18ダブル31 2E 36 40
18外側31 2E 35 40
18トリプル31 2E 34 40
18内側31 2E 32 40
4ダブル30 2E 36 40
4外側30 2E 35 40
4トリプル30 2E 33 40
4内側30 2E 31 40

2E3(0010 1110 0011)と40(0100 0000)は固定、1バイト目下位4ビットが場所を表して、3バイト目下位4ビットの数値が大きくなると円の外側に、というようなルールかと予想していましたが、場所によってたまに異なることもあるようで少し複雑です。位置部分が2バイトのものもあります。

内側から外側にかけて数値をペアにして並べると以下のような感じになりました。7点と16点が近い値なのは良いとしても11点と3点や15点と20点、4点と13点などが近い並びなのがよく分かりません。意味があるのかないのか…

点数データペア(内側,トリプル,外側,ダブル)
1300,02,04,45
610,11,13,14
1020,21,22,43
1530,31,32,42
291,90,92,82
17101,100,102,103
371,70,72,84
1961,60,63,85
7111,112,114,86
16110,113,115,116
862,64,65,66
1173,74,75,76
14103,104,105,106
993,94,95,96
1250,53,55,56
551,52,54,46
2033,34,35,36
123,24,25,26
1812,14,15,16
41,3,5,6
Bull40
Outer Bull80

モバイルバッテリー対応バックパック

イタリア出張に備えてバックパックを新調しました。というか、古くなったバックパックを昨年いくつか処分したので手持ちがなかったのです。聞くところによるとコロナが少し下火になったことで旅行者が急増し、職員を減らしていた空港が対応しきれずロストバゲッジが増えているとのこと。いつもは機内持ち込みの荷物は小さめにしているのですが、今回は2日分くらいの着替えを持って行った方が良いかなと思ったのもバックパック購入のモチベーションです。

…というわけでネットで人気の3層のものが届きました。

価格の割にポケットも多く便利そうです。そして流行りのUSBコネクタが脇についています。メイン気室にケーブルが出ており、モバイルバッテリーを接続して使います。

しかしコレ、どうなんでしょう。使っている人いるんでしょうか。充電するのならばカバンの中でバッテリーつなげば良いだけですから、わざわざ外にコネクタ出すということは充電しながら利用するというのが想定されているみたいなんですが、うーん。そこまでするならバッテリと同時に持つような。

カフェで脇に置いたカバンからケーブル出して…みたいな絵もネットにあったりしますけど、その場合もバッテリ直付けしますよね。むむ。

唯一使えそうな用途としては、カメラとかセンサとかを外に出して、バックパックの中のコンピュータと接続するウェアラブルシステムに使う、とかですかね…その場合はUSB3以上の高速規格になってて欲しいのですが多分2.0のスピードしか出なさそうなケーブルです。