×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
Raspberrypiで温湿度 SHT31
今回はI2C接続のSHT31を使って高精度温度測定に挑戦
秋月電子のSHT31-D15使用センサモジュールキット
回路
VCC、GRDにSDAとSCLを接続
設定
sumbusとI2Ctoolsを導入し、i2cを有効可
プログラム
・秋月電子のデータシートに基づいて
・アドレス 0X45 sudo i2cdetect 1でサーチ
・SHT31にbus.write_i2c_block_data(0x45, 0x2C, [0x06])でコマンドを送信
・しばらく待って 温度2秒 湿度4秒 テストでは1秒
・0x00から6バイト読み込み bus.read_i2c_block_data(0x45, 0x00, 6)
・0バイト目 温度のMSB 1バイト目 温度のLSB
・3バイト目 湿度のMSB 4バイト目 湿度のLSB
・MSBを8ビットシフトしLSBとAND
temp = data[0]<<8|data[1] バイト単位なのでdata[0] * 256 + data[1]でも可
・秋月電子のデータシート計算式で温度と湿度
全プログラム
今回はI2C接続のSHT31を使って高精度温度測定に挑戦
秋月電子のSHT31-D15使用センサモジュールキット
回路
VCC、GRDにSDAとSCLを接続
設定
sumbusとI2Ctoolsを導入し、i2cを有効可
プログラム
・秋月電子のデータシートに基づいて
・アドレス 0X45 sudo i2cdetect 1でサーチ
・SHT31にbus.write_i2c_block_data(0x45, 0x2C, [0x06])でコマンドを送信
・しばらく待って 温度2秒 湿度4秒 テストでは1秒
・0x00から6バイト読み込み bus.read_i2c_block_data(0x45, 0x00, 6)
・0バイト目 温度のMSB 1バイト目 温度のLSB
・3バイト目 湿度のMSB 4バイト目 湿度のLSB
・MSBを8ビットシフトしLSBとAND
temp = data[0]<<8|data[1] バイト単位なのでdata[0] * 256 + data[1]でも可
・秋月電子のデータシート計算式で温度と湿度
全プログラム
import smbus
import time
# I2CBUS = 1
bus = smbus.SMBus(1)
# address
# sudo i2cdetect 1
#0x45 comand upMSB 0x2C downMSB 0X06
# address comand bytedata
bus.write_i2c_block_data(0x45, 0x2C, [0x06])
time.sleep(1.0)
# Read data back from 0x00(00), 6 bytes
#data
#data[0]+dat[1]+data[2]+data[3]+data[4]+data[5]+data[6]
# MSB +LSB +CRC +MSB +LSB +CRC
data = bus.read_i2c_block_data(0x45, 0x00, 6)
# Convert the data
#msb+lsb
#temp = data[0] * 256 + data[1]
temp = data[0]<<8|data[1]
temp = -45 + (175 * temp/(pow(2,16) - 1))
#humi =(data[3] * 256 + data[4])
humi =(data[3] <<8|data[4])
humi = 100 * humi/ (pow(2,16) - 1)
# Output data
print ('Temp: %.3f C' %temp)
print ('Humi : %.2f %%RH'%humi)
PR
vb.net DataGridViewにボタンの追加と色をつける
初期設定でPopup指定
Dim butcol As New DataGridViewButtonColumn
butcol.FlatStyle = FlatStyle.Popup
butcol.UseColumnTextForButtonValue = False
butcol.Text = "選択"
butcol.Name = "SELECTS"
GridSS.Columns.Add(butcol)
ボタンの色のセット
GridSS(8, i).Style.BackColor = Color.Blue
GridSS(8, i).Style.ForeColor = Color.Yellow
GridSS(8, i).Value = "選択"
イベントは
Private Sub DataGridView1_CellContentClick(ByVal sender As Object, ByVal e As DataGridViewCellEventArgs) _
Handles GridSS.CellContentClick
Dim dgv As DataGridView = CType(sender, DataGridView)
'"Button"列ならば、ボタンがクリックされた
Dim i, k As Short
Select Case dgv.Columns(e.ColumnIndex).Name
Case "SELECTS"
初期設定でPopup指定
Dim butcol As New DataGridViewButtonColumn
butcol.FlatStyle = FlatStyle.Popup
butcol.UseColumnTextForButtonValue = False
butcol.Text = "選択"
butcol.Name = "SELECTS"
GridSS.Columns.Add(butcol)
ボタンの色のセット
GridSS(8, i).Style.BackColor = Color.Blue
GridSS(8, i).Style.ForeColor = Color.Yellow
GridSS(8, i).Value = "選択"
イベントは
Private Sub DataGridView1_CellContentClick(ByVal sender As Object, ByVal e As DataGridViewCellEventArgs) _
Handles GridSS.CellContentClick
Dim dgv As DataGridView = CType(sender, DataGridView)
'"Button"列ならば、ボタンがクリックされた
Dim i, k As Short
Select Case dgv.Columns(e.ColumnIndex).Name
Case "SELECTS"
End Sub
RaspberyPiでソレノイド ONOFF
VCC3V電池
|-----------------------|
ダイオード ソレノイド
|-----------------------|
D
pin8----1k------- G FET
| S
| |
10K |
| |
GND-------------------------
ソレノイド ZHO-0420S
ダイオード 1N4007
FET 2SK2232
1k 信号安定用
10k 信号入力が不足の時にGNDへ
VCC3V電池
|-----------------------|
ダイオード ソレノイド
|-----------------------|
D
pin8----1k------- G FET
| S
| |
10K |
| |
GND-------------------------
ソレノイド ZHO-0420S
ダイオード 1N4007
FET 2SK2232
1k 信号安定用
10k 信号入力が不足の時にGNDへ
#!/usr/bin/env python
import RPi.GPIO as GPIO
import time
pin=8 #ピイ番号で指定
GPIO.setmode(GPIO.BOARD)
GPIO.setup(pin, GPIO.OUT)
while True:
try:
GPIO.output(pin, True)
time.sleep(2)
GPIO.output(pin, False)
time.sleep(2)
except KeyboardInterrupt:
GPIO.cleanup()
break
GPIO.cleanup()を忘れると実行時エラー
GPIO.cleanup()を忘れると実行時エラー
RaspberryPiで温湿度 DHT11
今回は秋月電子で購入したDHT11で温湿度測定
ピンアサイン
1-5V
2---10k--GPIO14
3-NCC
4-GND
http://qiita.com/Fendo181/items/469469d143d3568fc692
を参考にさせていただきながら
https://github.com/szazo/DHT11_Python
からソースを作者に感謝しつつGitClone
あとはDHT11_Pythonのサンプルを実行する
それらしい温度と湿度を表示
今回は秋月電子で購入したDHT11で温湿度測定
ピンアサイン
1-5V
2---10k--GPIO14
3-NCC
4-GND
http://qiita.com/Fendo181/items/469469d143d3568fc692
を参考にさせていただきながら
https://github.com/szazo/DHT11_Python
からソースを作者に感謝しつつGitClone
git clone https://github.com/szazo/DHT11_Python.git
あとはDHT11_Pythonのサンプルを実行する
それらしい温度と湿度を表示
LM61CIZ Raspberrypi mpc3208 pythonで温度測定
LM35については、電圧*100なので簡単に温度が測定可能である。
マイナスには対応していないので、LM61CIZを購入してテストして
みた
意外な事にgoogle先生に聞いてもRaspberryPiとLM61のサンプルが
あまり見当たらない
MPC3208を12ビットで読みだして、ポート0にLM35を
ポート1にLM61を接続した
ともにVCCは3.3vで使用
データシートを見ると
V=(0.01*T)+0.600
温度1度につき0.01vでオフセットが0.6vという式である
T=(v-0.600)/0.01 で計算できる
結果はLM35に対して+2度ほど温度が高い
データシートを見ると20度で+-2.5度という事で誤差範囲だが
ちとこれでは使えない
サンプルプログラムは以下である
#12ビット精度で読み出し
#LM35用ボルト温度変換
#LM61用ボルト温度変換
#実行
LM35については、電圧*100なので簡単に温度が測定可能である。
マイナスには対応していないので、LM61CIZを購入してテストして
みた
意外な事にgoogle先生に聞いてもRaspberryPiとLM61のサンプルが
あまり見当たらない
MPC3208を12ビットで読みだして、ポート0にLM35を
ポート1にLM61を接続した
ともにVCCは3.3vで使用
データシートを見ると
V=(0.01*T)+0.600
温度1度につき0.01vでオフセットが0.6vという式である
T=(v-0.600)/0.01 で計算できる
結果はLM35に対して+2度ほど温度が高い
データシートを見ると20度で+-2.5度という事で誤差範囲だが
ちとこれでは使えない
サンプルプログラムは以下である
import spidev
import time
import sys
spi= spidev.SpiDev()
spi.open(0,0)
#12ビット精度で読み出し
def adc_read12(ch):
r = spi.xfer2([4|2|(ch >> 2), (ch & 3) << 6,0])
v=((r[1] & 0xF) << 8 ) + r[2]
return v
#12読み出しデータをボルトに変換
#12読み出しデータをボルトに変換
def conv_volts(data,places):
volts = (data *3.3)/float(4096)
volts=round(volts,places)
return volts
#LM35用ボルト温度変換
def conv_temp(volts,places):
temp = volts * 100
temp =round(temp,places)
return temp
#LM61用ボルト温度変換
def conv_temp61(volt,places):
temp = (float)(volt -0.600) / 0.01
temp =round(temp,places)
return temp
#実行
while True:
try:
d=adc_read12(0)
print("adc : {:8} ".format(d))
v=conv_volts(d,4)
print("volts: {:8.2f}".format(v))
t=conv_temp(v,4)
print("temp : {:8.2f}".format(t))
d=adc_read12(1)
print("adc : {:8} ".format(d))
v=conv_volts(d,8)
print("volts: {:8.4f}".format(v))
t=conv_temp61(v,8)
print("temp : {:8.2f}".format(t))
print("------------------------")
time.sleep(5)
except KeyboardInterrupt:
break
spi.close()