これは何?
raspberry piのGPIOをリモートから制御するためのテストプログラムです。
諸事情によりリモートでGPIOを制御する必要があり、急遽設定してみました。
もろもろの設定から
詳しくは、こちらをどうぞ。
shell
$ cat /etc/systemd/system/multi-user.target.wants/pigpiod.service
[Unit]
Description=Daemon required to control GPIO pins via pigpio
[Service]
ExecStart=/usr/bin/pigpiod -l
ExecStop=/bin/systemctl kill pigpiod
Type=forking
[Install]
WantedBy=multi-user.target
起動します。
shell
$ sudo systemctl enable pigpiod
$ sudo systemctl start pigpiod
$ sudo systemctl status pigpiod
● pigpiod.service - Daemon required to control GPIO pins via pigpio
Loaded: loaded (/lib/systemd/system/pigpiod.service; enabled; vendor preset: enabled)
Drop-In: /etc/systemd/system/pigpiod.service.d
└─public.conf
Active: active (running) since Tue 2020-04-28 20:59:18 JST; 1h 16min ago
Process: 3643 ExecStart=/usr/bin/pigpiod (code=exited, status=0/SUCCESS)
Main PID: 3644 (pigpiod)
Tasks: 4 (limit: 4915)
Memory: 568.0K
CGroup: /system.slice/pigpiod.service
└─3644 /usr/bin/pigpiod
4月 28 20:59:18 raspi4 systemd[1]: Starting Daemon required to control GPIO pins via pigpio...
4月 28 20:59:18 raspi4 systemd[1]: Started Daemon required to control GPIO pins via pigpio.
リモートPCにも、必要なモノをインストール。
私の場合は、Raspberry Pi 3なのでpigpioをインストール。
LEDチカ
テスト用のプログラムです。
python
import time
import pigpio
PI = pigpio.pi("リモート側のip address", 8888)
PI.set_mode(23, pigpio.OUTPUT)
PI.set_mode(24, pigpio.OUTPUT)
PI.set_mode(25, pigpio.OUTPUT)
try:
while True:
PI.write(23, 1)
time.sleep(0.1)
PI.write(23, 0)
PI.write(24, 1)
time.sleep(0.1)
PI.write(24, 0)
PI.write(25, 1)
time.sleep(0.1)
PI.write(25, 0)
except KeyboardInterrupt:
pass
PI.set_mode(23, pigpio.INPUT)
PI.set_mode(24, pigpio.INPUT)
PI.set_mode(25, pigpio.INPUT)
PI.stop()
GPIO23,24,25にLEDを3つつないでいます。
ローカルホストから実行した場合は気になりませんが、リモートからの実行だと回線速度の影響と思われますが、動きがたどたどしくなります。
今回は100V電源のON/OFFのためのリレーの制御で、高速で切り替える必要はないため問題はありません。