#仕様
BMP280がI2C接続で接続(秋月電子)
1–VCC 2–GND 3–VCC 4–SDA 5–GND 6–SCL
SDA 16番ピン(GP12) SCL17番(GP13) 18番GND 36番VCC(2A)
BME280_ADDR = 0x76 I2C_SDA = 12 I2C_SCL = 13 I2C_CH = 0
SDA,SCLにVCCから4.7KΩを介してpullupする
#bmp280のライブラリは、ネット上のライブラリを使用
#動作
1.WIFI接続開始
2.NTPで時刻を取得
以下ループ
3.bmpライブラリを使って温度、湿度、大気圧の読み込み
4.データをjsonに
5.ポストでサーバー送信
6.サーバーからステータス受信
7.時間待ち
#ポイント
サーバー側のファイアオールに注意
header = {‘Content-Type’:’application/json’}
WifiのOnOFFはGp23
machine.Pin(23, machine.Pin.OUT).high()
machine.Pin(23, machine.Pin.OUT).low()
from machine import Pin, I2C
import time
import bme280
import sys
import urequests
import ujson
import wifi_onoff
import config
import lib_NTP
BME280_ADDR = 0x76
I2C_SDA = 12
I2C_SCL = 13
I2C_CH = 0
i2c = I2C( I2C_CH, scl=Pin( I2C_SCL ), sda=Pin( I2C_SDA ), freq=100000)
i2c.scan()
sensor = bme280.bme280( i2c, BME280_ADDR )
sensor.setup()
wifi = config.wifi_set ()
print( "wifi:",wifi)
ip_add = "no connect"
if wifi == 1:
ip_add = wifi_onoff.wifi_onoff('on')
# NTP にて時刻合わせ
lib_NTP.NTP_set()
print("ip:",ip_add)
while True:
( temp, humi, press ) = sensor.get_value()
#データをDICT型
data = {"D1":temp,"D2":humi,"D3":press}
#jsonデータで送信するという事を明示的に宣言
header = {'Content-Type':'application/json'}
#HTTPリクエストをPOSTと
url='http://192.168.11.12/mytest/test_post.php'
res = urequests.post(url,data = ujson.dumps(data).encode("utf-8"),headers = header)
#サーバ側からのレスポンスを受け取って表示
print (res.json())
#終了
res.close()
print( "Temperature:{:.2f}C Humidity:{:.2f}% Pressure:{:.2f}hPa".format( temp, humi, press ) )
#sys.exit()
time.sleep(2)