はじめに
テクノベインズで販売しているセンサーシリーズの「近接センサー」「人感センサー」を利用した簡単なシステムを紹介します。1つ目は「近接センサー」に手をかざしてVFD表示、2つ目は「人感センサー」で人の動きを検知すると音源装置でメッセージを再生するシステムです。
使用例とサンプルプログラム
1. 近接センサーでVFD表示
■ 使用したもの
- 近接センサー
- VFD256Ⅱ (USBCOM)
- Raspberry Pi 3 (Model B+)
- Raspbian GNU/Linux 10 (buster)
■ やりたいこと
近接センサーに手をかざしてVFD256の表示を切り替えます。
近接センサーに手をかざすとVFD256に「使用中」と表示 | ||
近接センサーに手をかざすとVFD256に「空室」と表示 | ||
■ サンプルプログラム
近接センサーの動作モードを「定期的に送信」モードに設定しています。設定方法はこちらのページを参考にして下さい。
#/usr/local/src/sensorVfd.py
import serial
import os
#近接センサーを接続したUSBデバイスのポート
devSensor = '/dev/ttyUSB0'
#VFDを接続したUSBデバイスのポート
devVfd = '/dev/ttyUSB1'
#VFD256コマンド
cmdVfd = bytearray([0x1B,0x4A,0x43,0x44,0x1B,0x4A,0x44,0x35,0x1B,0x4A,0x42,0x31,0x1B,0x5C,0x42,0x31,0x00,0x00,0x00,0x08,0x1B,0x4A,0x46,0x33,0x1B,0x4A,0x6D,0x30,0x32
,0x1B,0x4A,0x57,0x30,0x00,0x00])
#使用中表示コマンド
cmdUse = cmdVfd + bytearray([0x8e,0x67,0x20,0x97,0x70,0x20,0x92,0x86])
#空室表示コマンド
cmdVacant = cmdVfd + bytearray([0x20,0x8b,0xf3,0x20,0x20,0x8e,0xba,0x20])
#使用中、空室の表示を切り替えるための変数
toggle = 1;
if(os.path.exists(devVfd) & os.path.exists(devSensor)):
#シリアル接続
serVfd = serial.Serial(devVfd,38400,timeout=None)
serSensor = serial.Serial(devSensor,38400,timeout=None)
while True:
#センサー値 読み込み
line = serSensor.read(10)
#センサー値 切り出し
sensorVal = int(line[7:10])
#センサー値は0~255の値を返します
#かざした手がセンサーに近づくほど255に近い値になります
#ここでは、センサー値が30以上の場合、手がかざされたと判断します
if(sensorVal >= 30):
if(toggle == 1):
#VFD256に使用中と表示
serVfd.write(cmdUse)
else:
#VFD256に空室と表示
serVfd.write(cmdVacant)
if(toggle == 0):
toggle = 1
else:
toggle = 0
#シリアルクローズ
serVfd.close()
serSensor.close()
else:
print("no devfile")
2. 人感センサーで音を鳴らす
■ 使用したもの
■ やりたいこと
ビル2階入り口に人感センサーを設置、3階にWSD002A-Jを設置、2階に来客があると3階で「来客です」とメッセージ音が流れます。
■ サンプルプログラム
#/usr/local/src/sensorSound.py
import serial
import os
from urllib.request import *
#人感センサーを接続したUSBデバイスのポート
devSensor = '/dev/ttyUSB0'
if(os.path.exists(devSensor)):
#シリアル接続
serSensor = serial.Serial(devSensor,38400,timeout=None)
while True:
#センサー値 読み込み
line = serSensor.read(5)
#センサー値 切り出し
sensorVal = chr(line[4])
#センサー値は0または1を返します
#人の動きを検知すると1を返します
if(sensorVal == '1'):
#WSD002A-JのIPアドレスを「192.168.1.194」に設定した場合
#WSD002A-J でメッセージ音を鳴らす
req = Request(url='http://192.168.1.194/play?notice=1', headers={}, method='GET')
with urlopen(req) as res:
body = res.read().decode()
print(body)
serSensor.close()
else:
print("no devfile")
上記プログラムを/usr/local/bin/autostart.shに以下の通り追加すると、ラズパイ起動時に自動で動作します。
#!/bin/sh
python /usr/local/src/sensorVfd.py
python /usr/local/src/sensorSound.py
おわりに
今回はテクノべインズのセンサーシリーズを使用して簡単なシステムを作成してみました。昨今はコロナ禍で不特定多数の人が触れたものへの接触に抵抗を感じる方も多いと思います。センサーを使用すると手を触れることなく機器を操作、表示器や音で通知を行えます。
テクノべインズのセンサーシリーズはOSを問わず使用できます。今回は表示や鳴動機能の実装ですが、他の機器と連動させたり、クラウド上にセンサーデータを送信したりと、様々なアプリケーションと一緒にお使いいただけます。
ここではセンサーシリーズを使用してできることをざっくりとご紹介いたしました。何かご質問などございましたらお気軽にお問い合わせ下さい。