IoT 家中の赤外線リモコン製品をpythonから操作する。Raspberry 編

# Raspberry PI(ラズパイ)をIoTのHome server にする。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/274715/678e0d76-abb4-d81c-47f8-ff03f1be565b.png)
#### Raspberry Pi（ラズベリー パイ）は、ARMプロセッサを搭載したシングルボードコンピューターです。1万円以下で入手できます。IoTのホームサーバを構築するのに最適です。もちろん、python言語も標準で搭載されています。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/274715/7a6e365b-ed12-b426-aaa1-b71bb8f1b998.png)
ラズパイは、OSは、Raspbianが標準(unix風)で、PCが成り立つための周辺機器をつなぐためのインターフェイスを搭載している。
付属のsd-card(raspbian)を差しhdmiにモニターusbにころがっているK/Bを差し、ネットワークケーブルをつないで電源を投入するとインストールが始まる。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/274715/c6315fb8-3943-a8e4-b8db-b34daebbafba.png)
初期ユーザー名：pi
初期パスワード：raspberry
アップデートのおまじない「おいしくなーれ　パイ」
```
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get dist-upgrade

$ sudo apt-get install -y rpi-update
$ sudo rpi-update

$ sudo reboot
```
環境整備としてvim(慣れているエディタ)のインストール
```
$ sudo apt-get install -y vim
```
### 最初の一歩 Hello world
```hello.c
#include <stdio.h>
int main(){
        printf("hello world\r\n");
}
```
```
cc hello.c
./a.out
hello world
```
c言語のコンパイル成功の確認　新しいドライバーを追加できる。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/274715/40a269ce-f72d-e12e-6cd3-b50e863ddf07.png)
中華製arduino(ch340使用)リレーをテストする。

``` #install ch340 driver
wget https://github.com/aperepel/raspberrypi-ch340-driver/releases/download/4.4.11-v7/ch34x.ko
cd /lib/modules/$(uname -r)/kernel/drivers/usb/serial
sudo insmod usbserial.ko
sudo insmod ch341.ko
sudo reboot
```
### 確認する
```
pi@raspberrypi:~ $ ls -al /dev/*USB*
crw-rw---- 1 root dialout 188, 0  1月 15 13:31 /dev/ttyUSB0
pi@raspberrypi:~ $ 
```
/dev/ttyUSB0が表示されれば大成功!!
## pythonからオン・オフさせる。
### シリアルドライバのインストール
``` 
pi@raspberrypi:~/src $ pip install pyserial
Collecting pyserial
  Downloading https://files.pythonhosted.org/packages/0d/e4/2a744dd9e3be04a0c0907414e2a01a7c88bb3915cbe3c8cc06e209f59c30/pyserial-3.4-py2.py3-none-any.whl (193kB)
    100% |████████████████████████████████| 194kB 1.3MB/s 
Installing collected packages: pyserial
Successfully installed pyserial-3.4
```
テストプログラムの作成

```helloworld.py
print('hello world')
```
pythonも実行確認

```
pi@raspberrypi:~/src $ python3 helloworld.py
hello world
pi@raspberrypi:~/src $
```
### リレーのon/off確認
```onusb.py
import serial 
ser = serial.Serial('/dev/ttyUSB0', 9600,timeout=0) 
ser.write(bytearray(b"\xA0\x01\x01\xA2"))
ser.close()
```
```offusb.py
import serial
ser = serial.Serial('/dev/ttyUSB0', 9600,timeout=0) 
ser.write(bytearray(b"\xA0\x01\x00\xA1"))
ser.close()
```
```
pi@raspberrypi:~/src $ python3 onusb.py
pi@raspberrypi:~/src $ python3 offusb.py
pi@raspberrypi:~/src $ python3 onusb.py
pi@raspberrypi:~/src $ python3 offusb.py
```
LED チカチカ

```onoff.py
from time import sleep
import serial
def on():
    ser = serial.Serial('/dev/ttyUSB0', 9600,timeout=0) 
    ser.write(bytearray(b"\xA0\x01\x01\xA2"))
    ser.close()
def off():
    ser = serial.Serial('/dev/ttyUSB0', 9600,timeout=0) 
    ser.write(bytearray(b"\xA0\x01\x00\xA1"))
    ser.close()
for i in range(20):
    on()
    sleep(0.3)
    off()
    sleep(0.5)

```
LEDチカチカ大成功

![20190115-01.gif](https://qiita-image-store.s3.amazonaws.com/0/274715/a3aa9b02-99dc-8f1f-345d-c80c934980fd.gif)

#　つづく
気に入ったら「いいね」してね。