Zopfcode

かつてない好奇心をあなたに。

蚊取りルーター・スマートノーマット

本記事はルーターハックAdvent Calendar 7日目の記事です。

さて、前回までに OpenWrt のインストールやカスタマイズまで軽く紹介したところで、7日目の今回は「イベントとかで発表したけど記事にしてなかった過去作」の紹介企画、【過去作供養】コーナー第1弾である。

第1弾のハックは、その名も「蚊取りルーター・スマートノーマット」だ!

おことわり

技適 に関する筆者の配慮や考えについてはカレンダー1日目「技適とルーターハック」をご覧ください。本記事で紹介する内容は、法を遵守するための慎重な注意をもって書かれています。

www.zopfco.de

当時

2016年は5月、まだ春の気温が続く頃、こんなツイートがバズっていた。

『Wi-Fi繋がりそうな勢い』…!!? ルーターにしちゃえばいいじゃん!!!

ツイート主にちゃんとDMで許可を取り、実際に小さなルーターを中に入れてマジのルーターにしてしまうことにした。

ノーマットの解剖

写真の商品は、蚊取り装置の代表とも言えるアース・ノーマットの電池式だった。薬液がしみこんでいるカートリッジに風を当て、まわりに蚊を忌避する成分を拡散させる仕組みだ。

www.earth.jp

買った。

f:id:puhitaku:20160523185257j:plain

即バラした。

f:id:puhitaku:20160523191313j:plain

部品を並べたのが以下。羽根の間からドライバーを差し込んでグリッとやらないと外れないパーツがあったりと案外複雑だった。

f:id:puhitaku:20160523191117j:plain

f:id:puhitaku:20160627222331j:plain

基板部を拡大してみると、TSOP8 と思われるパッケージの IC と、モーターが回るだけにしては案外複雑な周辺回路が見える。カートリッジ残量が減るとLEDで知らせる 仕組みがある(カートリッジにボタン電池がついていて、おそらくこれの電圧をADCしている)ことや、モーターの回転数を一定量に保つ必要もあるであろうことから、それなりに複雑になるのかもしれない。

…いやそれにしてももっと簡素になりそうなものだが。

ルーター選定

当時、上海問屋で売ってるやたら安くてコンパクトなルーターとして NEXX WT1520 が話題になっていた。見た感じだとノーマットに入りそうということで、早速買ってみた。

f:id:puhitaku:20160522233327j:plain

そしてバラす。

f:id:puhitaku:20160522231512j:plain
グリッと。

f:id:puhitaku:20160522231648j:plain

CPU に Ralink RT5350 @ 360MHz、Flash 8 MiB、RAM 32 MiB の構成。USBポートも元からあるのでコンパクトさに対してずいぶん遊びやすいルーターだ。

基板を取り出しノーマットの電池ボックスにあてがうと、これまたサイズがピッタリ。ノーマットに入れてくれと言わんばかりのピッタリさだ。

ノーマットの加工

そうと分かればあとはノーマットを加工してルーターを繋ぎこむだけだ。配線途中の画像がこちら。

f:id:puhitaku:20160628001432j:plain
LEDを交換し、ファン・LED・電源スイッチを配線。

f:id:puhitaku:20160628005451j:plain
ICはもう要らないので、ひっぺがしてランドにはんだ付け。

f:id:puhitaku:20160628005546j:plain
雑に配線。

今見てもかなり雑な配線である。モーターの消費電力がもともと小さくできているので、3.3V な GPIO の出力を 直接モーターに接続しても いい感じに回るのでこうした記憶がある。GPIO 番号と実際のテストポイントの対応については下記画像が参考になった。

f:id:puhitaku:20181208203358j:plain
from: https://tuxotronic.org/post/clone-wt1520/

そしてそして、電池ボックスのフタを削って組み付けたのが以下の画像である。

f:id:puhitaku:20160628221714j:plain

f:id:puhitaku:20181208205045j:plain

f:id:puhitaku:20181208205134j:plain
フタの固定はとりあえずマスキングテープw

うーんピッタリ!!

OpenWrt のインストールによって無線が使えないうえ、内蔵フラッシュが 8 MiB と遊ぶ幅がないので、rootfs を拡張するための USB メモリと、Wi-Fi ドングル(単体で技適認証を受けたもの)も配置した。

USB ハブは秋葉原で適当に買った小さいものだが、USBポートが横向きでそのままでは取り出せないので、USBハブも分解して体積を減らして詰め込んだ。

f:id:puhitaku:20181208204949j:plain
今思えば、ハブのコネクタは残す必要がなかったし直に繋げばよかったかも。

スマホから制御できるようにする

これだけではモーターは回らない。せめてスマホから操作できなければ「スマート」ノーマットとは呼べない。そこで API サーバーとフロントエンドを実装した。コードは GitHub に上げていた記憶があるのだが、実際に見てみると初手のコミットしかなくそのままになっている。めっちゃ頑張ってフロント書いたのに!過去の自分を呪いたい。

github.com

バックエンドは GPIO を書き換えるほかは静的ファイルをサーブするだけなので Flask でパパッと記述した。フロントエンドに関しては、当時社内ツールで React を使ったのでノリで React + JSX で書いた。

f:id:puhitaku:20181208205922p:plain
実際のスクショ。

上の画像では残量表示とか AUTOMATIC SWITCH なる項目が未実装で適当だが、実機にChromeでアクセスして得たスクショである。ボタンを押すと裏で XHR が走り、GPIO がスイッチされる。

ちなみに、ON にするときの API へのリクエストは DELETE 192.168.1.1/api/mosquitoes である。

当時公開しなかった理由

AUTOMATIC SWITCH が示唆するように、当時は窓を開けるとスイッチオンとか、GPS で自動でノーマットの電源を入れるみたいな機能を構想していた。だが、その自動制御を手前にしてやる気の灯火が消えてしまい、明治大学で開催された ABPro 2016 で発表した程度でお蔵入りになってしまった。結局長い不作の期間と共に夏も終わり、完全に発表するチャンスを逃してしまったのだ。

まあネタとしては面白かったし、今でもルーターハックの語り草としてよく登場させる印象的なハックだった。Advent Calendar として成仏させられてよかったと思う。

次回

さて、1日遅れで展開しているルーターハック Advent Calendar の次回は、ルーターのブートシークエンスについて書こうと思う。どっちかというと、U-Boot 〜 Login shell までの流れについて、個人の理解のために書く感じだ。乞うご期待。