Tibbo-Pi[P2] で L チカをする

# [Tibbo-Pi[P2]](https://co-works.co.jp/tibbo-pi/) で L チカをする

Tibbo-Pi[P2]（以下、Tibbo-Pi）を開封して何もさわっていない状態から、 L チカまで頑張りたいと思います。

<img src="https://qiita-image-store.s3.amazonaws.com/0/48543/0993420c-cf7c-3c0a-be24-ab0e77f7f646.jpeg" width=70%>

一応注意ですが、
この記事は Tibbo-Pi の公式でもなんでもないので、
試す際は自己責任でよろしくお願いいたします。

## 1. Tibbo-Pi の ip を知る

まず、 Tibbo-Pi の ip がわからなければ、 L チカもプログラムもなにもできないので ip を知ります。
通常の RaspberryPi と同様に、これを知る方法はいくつかあるかと思います。

Tibbo-Pi に Ether ケーブルを接続し、電源をいれます。

<img src="https://qiita-image-store.s3.amazonaws.com/0/48543/86b5d06f-ce60-50c9-ed86-b3900b10b8b3.jpeg" width=70%>

DHCP から ip アドレスが払い出されれば、 [この記事の方法](https://qiita.com/xshell/items/af4e2ef8d804cd29e38e)などを使って、
LAN 内にいる RaspberryPi の ip アドレスを調べます。
ちなみに私は、別の RaspberryPi に SD カードを移して、固定の ip アドレスを付け、元に戻すという、面倒な作業をしました。
モニタを接続してもよいのですが、以下の画像のように HDMI のポートがふさがってしまっており、
USB などから接続する必要がありそうです（ HDMI は使えない、ということなんでしょうか）。

<img src="https://qiita-image-store.s3.amazonaws.com/0/48543/df442211-f2a3-63c5-4b2a-f113061c9540.jpeg" width=70%>

私の Tibbo-Pi の ip アドレスは `192.168.1.188` ということがわかりました。
ip アドレスが分かれば、あとは `ssh` でログインなどができるようになります（ `sshd` は自動で起動する設定になっているようです）。

```
[][] $ ssh pi@192.168.1.188
pi@192.168.1.188's password:
Linux raspberrypi 4.14.34-v7+ #1110 SMP Mon Apr 16 15:18:51 BST 2018 armv7l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Wed May 23 18:22:18 2018 from 192.168.1.104

SSH is enabled and the default password for the 'pi' user has not been changed.
This is a security risk - please login as the 'pi' user and type 'passwd' to set a new password.

pi@raspberrypi:~ $
```

`adduser` したり、いつもの環境を構築したり、しなかったりします。

## 2. Node-Red を見てみる

`Node-Red` が立ち上がっていることを確かめます。
ブラウザで、`http://{ip}:1880`にアクセスします（私の場合は、`http://192.168.1.188:1880`）。
以下の画像のような空っぽの `Node-Red` の開発画面が立ち上がるはずです。

<img src="https://qiita-image-store.s3.amazonaws.com/0/48543/a934943c-775e-c21b-d04e-866c99523de4.png" width=70%>

立ち上がることが確認できたので、
次は、実際にブロックを基板に刺していこうと思います。

Tibbo-Pi をシャットダウンするときは、 `poweroff` を実行し、
電源付近の緑色の LED が消灯するのを待ちます。

## 3. LED ブロックと、ボタンブロックを刺す

LED ブロックと、ボタンブロックは `#00-3` のブロックを介して接続するようなので、その通りに接続します。
刺す向きがあるので、よく**注意**します。

<img src="https://qiita-image-store.s3.amazonaws.com/0/48543/3690d186-25a0-c358-2262-bc1909a34691.jpeg" width=70%>
<img src="https://qiita-image-store.s3.amazonaws.com/0/48543/cecb829e-ae3e-12b1-db2d-5617af5de5d9.jpeg" width=70%>

`スロット4` に LED 、 `スロット5` にボタンを接続しました。

<img src="https://qiita-image-store.s3.amazonaws.com/0/48543/a5fcb72d-05bb-80fa-b146-00059e329e7d.jpeg" width=70%>

蓋を全て閉め、再度電源を入れます。

## 4. Node-Red でプログラムを組む

私が書いた、 L チカのプログラムです。

```json
[{"id":"92e399cf.4e998","type":"tp-initialize","z":"da6502f5.d66bf8","name":"","make":true,"x":241,"y":77.5,"wires":[]},{"id":"6599e78b.988d4","type":"Tibbit-#38 in","z":"da6502f5.d66bf8","name":"","tpSlot":"S05","outputOnly":true,"communication":"GPIO","pinA":"IN_Edge","pinB":"other","pinC":"other","pinD":"other","connectedStatus":"start","host":"","x":258,"y":248.5,"wires":[["a95f40a.6f6f2c","2cf4499e.310166"]]},{"id":"2cf4499e.310166","type":"Tibbit-#39 out","z":"da6502f5.d66bf8","name":"","tpSlot":"S04","communication":"GPIO","pinA":"OUT","pinB":"other","pinC":"other","pinD":"other","connectedStatus":"start","host":"","x":654,"y":248.5,"wires":[]},{"id":"a95f40a.6f6f2c","type":"debug","z":"da6502f5.d66bf8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":468.5,"y":337,"wires":[]},{"id":"1b64f474.7764bc","type":"inject","z":"da6502f5.d66bf8","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":266,"y":183.5,"wires":[["84824c7c.9a8a1"]]},{"id":"84824c7c.9a8a1","type":"function","z":"da6502f5.d66bf8","name":"ON/OFF LED","func":"msg.payload = ~flow.get(\"flag\")||0;\nflow.set(\"flag\", msg.payload);\nreturn msg;","outputs":1,"noerr":0,"x":452,"y":182.5,"wires":[["2cf4499e.310166"]]},{"id":"d5b11be7.b2a1c","type":"inject","z":"da6502f5.d66bf8","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":true,"onceDelay":0.1,"x":425,"y":76.5,"wires":[["f335f79a.5f7098"]]},{"id":"f335f79a.5f7098","type":"function","z":"da6502f5.d66bf8","name":"init LED","func":"flow.set(\"flag\", 0);","outputs":1,"noerr":0,"x":586,"y":76,"wires":[[]]}]
```

上記のコードをコピーし、 `Node-Red` にインポートします。
開発画面の `読み込み` -> `クリップボード` を選択し、上記のコードを張り付け、 `読み込み` します。
![read.png](https://qiita-image-store.s3.amazonaws.com/0/48543/11d0a187-e0f7-27ce-a062-7ce066004fbb.png)
![code.png](https://qiita-image-store.s3.amazonaws.com/0/48543/f951c40f-2213-9db0-1978-69cb018d8eb1.png)


こんな感じになりました。

<img src="https://qiita-image-store.s3.amazonaws.com/0/48543/8c2e9c1d-211e-f46c-5a22-06720f20ba6c.png" width=70%>

右上の `デプロイ` を押すと、プログラムが開始します。
ボタンを押すと、 `LED` が光りますね。

<img src="https://qiita-image-store.s3.amazonaws.com/0/48543/beb90f56-687e-9307-84e2-e224a401955d.jpeg" width=70%>
<img src="https://qiita-image-store.s3.amazonaws.com/0/48543/0c87d928-19c6-c7da-9839-8ae8e420d9d8.jpeg" width=70%>

`Node-Red` の `timestamp` をクリックしても、 LED が光ります（画像左上の `timestamp` の左側のボタン）。

![time.png](https://qiita-image-store.s3.amazonaws.com/0/48543/32270ed2-9202-c3fe-4464-de59005f033c.png)

無事光りました、以上で終わりです。

## 感想

余計なこと（電圧とか）を考えたり準備しなくても、
ブロックを刺すだけでセンサや外部デバイスを制御できる、という手軽さに驚きました。
また `Node-Red` で GUI ライクにコードを作成できることからも、簡単に IoT を実現できる可能性を感じました。
個人的には、 Tibbo-Pi 同士なら（上記の L チカのプログラムのように）ハードを含んだコードの再利用性が効くことも、嬉しい点かと思います。