シェルスクリプトマガジン

特集1 1000円から始めるIoT(Vol.66記載)

著者:麻生 二郎

センサーをつないで状態を監視するだけのIoT(モノのインターネット)を
始めるには、小型コンピュータボード「Raspberry Pi」は高機能かつ高価で
す。そこで1000円以下で購入できるマイコンボード「ESP32 ESP-32S」を使
って、簡単なプログラムと共にI oTを始めてみましょう。

シェルスクリプトマガジン Vol.66は以下のリンク先でご購入できます。

Part2 ESP32で電子回路を制御する

図2 ネットワーク接続プログラム(wlan.py)

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)

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)

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)

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")