さくらのIoT Platformでパトライトを光らせる
この投稿は さくらインターネット Advent Calendar 2016 の 15日目の記事です。
パトライト時代の到来
今、パトライト社製の積層信号灯(以下パトライト)が空前の大ブームです。ネットワークやサーバーなどの真面目な監視からパカパカ付けたり消したりするだけの面白半分までありとあらゆる場面でパトライトが活躍しています。
パトライトを持たせて喜ぶ我々のような人種がパトライトを見てまず考えるのは「自分でプログラムを書いて好き勝手パトライトを付けたり消したりしたい」とかそういった類のことでしょう。パトライト社もそういった需要に応えるべくEthernetでLANに接続し、TCPなどで操作が可能なパトライトを製造、販売しています。しかし、Ethernetコントローラーの載ったパトライトの販売価格は数万円もし、個人が面白半分で買うのには敷居が高い商品となっています。
PATLITE(パトライト) PHN-3FBE1-RYG パソコン制御信号灯 (Ethernet) (電源電圧: DC5V) (40φ) (赤黄緑) SN
- 出版社/メーカー: パトライト
- メディア: エレクトロニクス
- この商品を含むブログを見る
一方、Ethernetコントローラーや点灯に必要な回路を含まない積層信号灯のみの部品であれば6000円強で購入することが出来ます。
ということは、点灯に必要な回路とEthernetコントローラーなどの遠隔操作に必要なインターフェースが載ったハードウェアをある程度安価に製作できれば、既製品を買うより大幅に安く、またおもちゃとしては既製品より遙かに優れたパトライトが手に入ることになります。
これらの目的を達成するためのハードウェアとしてまず始めに思い浮かぶのがRaspberry Piでしょう。しかしパトライトを制御するのには少々冗長で、おまけにハードウェアとしての安定性もいまいち(1ヶ月連続稼働させたらmicroSDが物理的に破壊されるなど)です。
Ethernet喋れるマイコンどっかから持ってくるかな、めんどくさいなー等と考えていたところ、ちょうどその辺にさくらのIoT Platformのαモジュール(以下さくらの通信モジュール)が転がっており、せっかくならということでこれに適当なマイコンをくっつけて3G回線経由で遠隔操作可能なパトライトを製作することとしました。
目標
「さくらの通信モジュール経由で遠隔操作可能なパトライトを点滅させるハードウェアの製作」が大きな目標となります。これを大まかに分けると
- パトライトの点滅を行うための回路やさくらの通信モジュールとマイコンを駆動するための電源回路などを含んだ基板
- さくらのIoT Platform αから指示を受けてパトライトを点滅させるマイコンのファームウェア
の製作が必要となります。
ハードウェア
まずパトライトですが、LCE-302A-RYGをAmazonで購入しました。この記事の執筆時点ではモノタロウで買った方が安いのでそちらが良いでしょう。
余談ですがLCEシリーズは2017年9月で生産終了予定だそうです。後継機種はLR4型とのことですが実物を持っていないため今回の回路が使用できるかは不明です。
マイコンの選定ですが、使った経験があり安心感があることからSTM32を用いることとしました。具体的には秋月でチップ単体が販売されていることからSTM32F303K8T6を使用します。 変換基板を用いればユニバーサル基板でも作れますが、せっかくなのでEAGLEでプリント基板の設計もすることにします。
さくらの通信モジュールとの接続にはUART,SPI,I2Cを使うことができますがなんとなくI2Cを使うことに。とはいえなんか事故ったら嫌だしどうせプリント基板作るのでSPIとかも出来るだけ配線していく方針。
電源が少々曲者で、通信モジュールが5V、STM32が3.3V、パトライト本体が24Vを必要とします。 この中でダルいのはもちろん24Vで、12Vぐらいならその辺に転がっていがちだけど24Vは・・・ 選択肢としては24VのACアダプタで24Vを取ってきて5Vと3.3Vを作るか、5Vあたりから昇圧して24Vにするかの2つがありました。 後者はその辺によくある5V電源を利用することができるのですが、いかんせん昇圧DCDCコンバータが微妙に値が張る割にいまいちパッとせず、それならいくら新規に購入することになるとはいえ 24VのACアダプタを新たに買った方が安く上がりそうだということで24V給電→回路上で5Vと3.3Vを作る方針にしました。
ファームウェア
以前Nucleoにmbed IDEでコンパイルしたバイナリを書き込んでさくらの通信モジュールを使おうとしたところ、何をどうやってもI2Cでは接続できず、SPIで接続すると動くなどの大変怪しい挙動をしたので開発環境としてのmbedは使わない方針に。素直にSTM32CubeMXでコード生成することにしました(CubeMXが素直かどうかは議論の余地がありますが・・・)。 まああとはHALでI2C叩いていくだけです。ファームウェアのソースはGithubに置いてあります。
基板
EAGLEで回路を書き、Fusion PCBで発注しました。 Fusion PCBでは注文フォームにガーバービューワーが付いており、ちゃんと書き出せたかどうか注文前に見ることができたのでプリント基板を発注するのが初めての私でも安心して注文できました。
送料込みで$16.03なのでちゃんと設計する手間を考えたとしてもユニバーサル基板でチマチマやってるのがバカらしく感じるお値段ですが、一番安い国際郵便で送ったため注文が11/2、到着が11/23だったので丸3週間かかりました。まあここは金を積めば早くなる?はずなのでケチるのが悪いのですが・・・ 肝心の基板の質ですが、そもそも大したことない回路なので大満足です。シルクがかすれ気味でしたがまあどうせ自分しか組まないし・・・
完成
いろいろな過程をすっ飛ばして完成図です。部品買う段になって急遽使う部品を変えたりした結果わけわからないことになりましたがひとまず動いているようです。 何をするでもなくオフィスにパトライトを放置していたところいつの間にか「出勤」「在宅勤務」「退勤」とダンボールが貼り付けられていました
おしまい
なんだかまとまらなくなってしまいましたがさくらのIoT Platform βに対応した新バージョンを発送するぜ!というメールがついさっきElecrowから来たのでその時しっかり書きたい