Photon で遊んでみる
会社で知った Photon というArduinoに近い電子工作のプロトタイピングツールを知りました。
Arduino と大きく違うところといえば、Wifiモジュールが既についているところにあります。
これにより、インターネット経由でコンパイルした実行ファイルをPhoton側にアップロードし、随時電子回路の動きを変えることができます。
まだ試していないですが、おそらく通信モジュールは既に持っているものとして、プログラム上からインターネットへの接続もできるのでは。と踏んでおります。だとしたら、とっても便利。
いざ、下準備
気軽に始められるか思っていたものの、日本語のドキュメントは少なく、導入が少し困ったので、メモを残します。
node を入れておく
最近updateがアツい node をまず手元環境に入れておきます。(Macで話をすすめます)
$ brew install node
particle(Photon)用のコマンドラインツールも導入
$ npm install -g particle-cli
実行した後、photon をUSB経由でつなぎ、初期設定に移ります。
$ particle setup
おもむろに particle.io のアカウントを作らされます。
むしろ、このアカウントが無いと、その後の作業に差し支えるようで、作らざるを得ない模様。
アカウントを作った後、こんな感じで作業が進んでいきます。
ただ、何故か私の環境では、何度か setup を試さないと最後まで設定が完走しませんでした。。不具合が多いとは聞いていたけど、本当だったのね。。
$ particle setup
_ _ _ _
_ __ __ _ _ __| |_(_) ___| | ___ (_) ___
| '_ \ / _` | '__| __| |/ __| |/ _ \ | |/ _ \
| |_) | (_| | | | |_| | (__| | __/_| | (_) |
| .__/ \__,_|_| \__|_|\___|_|\___(_)_|\___/
|_| https://particle.io/
> Setup is easy! Let's get started...
> It appears as though you are already logged in as #{YOUR_MIAL_ADDRESS}
? Would you like to log in with a different account? No
! PROTIP: Hold the MODE/SETUP button on your device until it blinks blue!
! PROTIP: Please make sure you are connected to the internet.
> I have detected a Photon connected via USB.
? Would you like to continue with this one? Yes
! The Photon supports secure Wi-Fi setup. We'll try that first.
! PROTIP: Wireless setup of Photons works like a wizard!
! PROTIP: We will automagically change the Wi-Fi network to which your computer is connected.
! PROTIP: You will lose your connection to the internet periodically.
? Found "Photon-NNSD". Would you like to perform setup on this one now? Yes
! PROTIP: You will need to know the password for your Wi-Fi network (if any) to proceed.
! PROTIP: You can press ctrl + C to quit setup at any time.
> Obtained magical secure claim code.
> Hey! We successfully connected to Photon-NNSD
> Now to configure our precious Photon-NNSD
! PROTIP: If you want to skip scanning, or your network is configured as a
! PROTIP: non-broadcast network, please enter manual mode to proceed...
? Would you like to manually enter your Wi-Fi network configuration? Yes
? Please enter the SSID of your Wi-Fi network: #{YOUR_WIFI_SSID}
? Please enter your Wi-Fi network password (leave blank for none): #{YOUR_WIFI_PASSWORD}
? Please select the security used by your Wi-Fi network: #{YOUR_WIFI_SECURITY}
> Here's what we're going to send to the Photon:
> Wi-Fi Network: #{YOUR_WIFI_SSID}
> Password: #{YOUR_WIFI_PASSWORD}
> Security: #{YOUR_WIFI_SECURITY}
? Would you like to continue with the information shown above? Yes
> Obtaining device information...
> Requesting public key from the device...
> Setting the magical cloud claim code...
> Telling the Photon to apply your Wi-Fi configuration...
> The Photon will now attempt to connect to your Wi-Fi network...
> Configuration complete! You've just won the internet!
? Would you like to return this computer to the wireless network you just configured? Yes
> It looks like your Photon has made it happily to the cloud!
! PROTIP: Your Photon may start a firmware update immediately upon connecting for the first time.
! PROTIP: If it starts an update, you will see it flash MAGENTA until the update has completed.
? What would you like to call your photon? myparticle
> Your Photon has been bestowed with the name myparticle
> Congratulations! You've just won the internet!
> Ok, bye! Don't forget `particle help` if you're stuck! <3
What would you like to call your photon?
はphotonにつける名前なのですが、意外と後の作業で使う名前になるので、ちゃんと扱いやすい名前をつけてあげた方がよいです。
Lチカプログラミング
続いて、作業ディレクトリに移動し、サンプルコードを書いてみます。
仮に、blink.ino
というファイル名にしましょう。
また、デジタルピンはD0, GND を使うものとします。
#define PIN D0
int state = 0;
void setup() {
//tell the device we want to write to this pin
pinMode(PIN, OUTPUT);
}
void loop() {
//alternate the PIN between high and low
digitalWrite(PIN, (state) ? HIGH : LOW);
//invert the state
state = !state;
//wait half a second
delay(500);
}
ファイルをセーブした後、コマンドラインにて
$ particle flash particle1 blink.ino
これを実行することで、ネット経由でプログラムが particle1
に飛ばされ、初期化が終了した後に電子回路が動き始めます。
まとめ
まだ試し始めたばかりですが、ブラウザ上からもinoの形式でプログラミングを行い、書くphotonにプログラムを転送することもできそうな感じです。
合わせて、ウェブ上にUIを作りボタンを押すことでスイッチ代わりにするといったこともできるみたいでした。
電子工作はLチカ止まりになりがちですが、Photonを使うことで、ネットを経由しつつ、家周りをもっと便利に。という夢も広がります。
ひとまず僕は、サービスのヘルスチェックを可視化するようなものを作ってみたいと思ってます。
また、photonはかなり頻繁にアップデートをしていたりするので、このブログの内容が古くなることも容易に想像できます。
つまずいたときには、ぜひ以下のページを参考にしてみてください。
参考
- https://docs.particle.io/guide/getting-started/start/photon/