※Raspberry Pi ZeroとCDSとMCP3425の接続は以下の記事を参照してください。
Raspberry Pi ZeroとCDSとMCP3425で明るさを測る
https://serverarekore.blogspot.com/2021/04/raspberry-pi-zerocdsmcp3425.html
開発手順
1. pipenvの導入pipenvをインストールしていない場合は、以下のコマンドを実行します。
sudo apt-get update
sudo apt-get -y install python3-pip python3-distutils python3-dev
sudo pip3 install --upgrade pip
sudo pip3 install --upgrade setuptools
sudo pip3 install pipenv
echo "export PIPENV_VENV_IN_PROJECT=true" >> ~/.bashrc
source ~/.bashrc
2. paho-mqttモジュールとsmbusがインストールされた仮想環境作成
pipenvを使用する場合は以下のコマンドで、paho.mqttとsmbus用の仮想環境を作成します。
mkdir -p ~/smbus_mqtt
cd ~/smbus_mqtt
pipenv --python 3
pipenv install paho-mqtt smbus
pipenv shell
3. paho MQTTでメッセージを受信するプログラムを作成する
以下のプログラムで受け取った明るさのデータを表示します。
mosquitto_sub_cds.py
import paho.mqtt.client as mqtt
import time
topic = "mosquitto/test"
host = "localhost"
port = 1883
secs_keep_alive=60
def on_connect(client, userdata, flags, rc):
print("Connected with result code "+str(rc))
client.subscribe(topic)
def on_message(client, userdata, msg):
print("received: {}".format(msg.topic))
print(str(msg.payload))
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect(host, port, secs_keep_alive)
client.loop_forever()
・実行方法
以下のコマンドで受信プログラムを実行します。止める場合はCtrl+Cで止めてください。
python3 mosquitto_sub_cds.py
5. 明るさデータの送信
以下のプログラムで明るさデータを送信します。
mosquitto_pub_cds.py
import paho.mqtt.publish as publish
import smbus
import time
i2c = smbus.SMBus(1)
addr_mcp3425=0x68
FIELD_PGA_GAIN_1X = 0x00 # gain 1X
FIELD_SAMPLE_RATE_15SPS_16BIT = 0x08 # 15SPS 16bit sampling
FIELD_CONV_MODE = 0x00 # one-shot
FIELD_READY = 0x80
def read_cds():
i2c.write_byte(addr_mcp3425, FIELD_PGA_GAIN_1X | FIELD_SAMPLE_RATE_15SPS_16BIT | FIELD_CONV_MODE| FIELD_READY)
time.sleep(0.15)
dat = i2c.read_i2c_block_data(addr_mcp3425, 0x00, 3)
val = (dat[0] << 8) | dat[1]
return val
topic = "mosquitto/test"
host = "localhost"
port = 1883
secs_keep_alive=60
val = read_cds()
publish.single(topic, "cds:{}".format(val), hostname=host, port=port, keepalive=secs_keep_alive)
・実行方法
以下のコマンドで送信プログラムを実行します。
python3 mosquitto_pub_cds.py
0 件のコメント:
コメントを投稿