著者:麻生 二郎
センサーをつないで状態を監視するだけのIoT(モノのインターネット)を
始めるには、小型コンピュータボード「Raspberry Pi」は高機能かつ高価で
す。そこで1000円以下で購入できるマイコンボード「ESP32 ESP-32S」を使
って、簡単なプログラムと共にI oTを始めてみましょう。
シェルスクリプトマガジン Vol.66は以下のリンク先でご購入できます。
図2 ネットワーク接続プログラム(wlan.py)
1 2 3 4 5 6 |
import network wlan_if = network.WLAN(network.STA_IF) wlan_if.active(True) wlan_if.ifconfig(('192.168.1.100', '255.255.255.0', '192.168.1.1', '192.168.1.1')) wlan_if.connect('SSID', 'パスワード') wlan_if.inconfig() |
図3 簡易サーバーを立ち上げるプログラム(webserver_test.py)
1 2 3 4 5 6 7 8 9 10 |
import picoweb app = picoweb.WebApp(__name__) @app.route("/") def index(req, resp): yield from picoweb.start_response(resp) yield from resp.awrite("こんにちは") app.run(debug=True, host = "192.168.1.100") |
図12 Webブラウザから湿温度・気圧を取得するプログラム(web_bme280.py)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
import picoweb, machine, bme280 i2cpin = machine.I2C(scl=machine.Pin(22), sda=machine.Pin(21)) bme = bme280.BME280(i2c=i2cpin) app = picoweb.WebApp(__name__) @app.route("/") def index(req, resp): bme280values = bme.values yield from picoweb.start_response(resp) yield from resp.awrite("気温:" + bme280values[0]) yield from resp.awrite("|湿度:" + bme280values[2]) yield from resp.awrite("|気圧:" + bme280values[1]) app.run(debug=True, host = "192.168.1.100") |
図16 明るさによってライトの点灯を促すプログラム(web_cds.py)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import picoweb, machine adc = machine.ADC(machine.Pin(36)) adc.atten(machine.ADC.ATTN_11DB) app = picoweb.WebApp(__name__) @app.route("/") def index(req, resp): csdvalue = adc.read() yield from picoweb.start_response(resp) if csdvalue < 2500: yield from resp.awrite("明かりをつけましょう") else: yield from resp.awrite("十分な明るさです") app.run(debug=True, host = "192.168.1.100") |