著者:米田 聡
本連載では、人気のマイコンボード「Raspberry Pi Pico W/WH」を活用していきます。同ボードは、無線LANやBluetoothの通信機能を搭載し、入手しやすく、価格も手頃なので、IoT機器を自作するのに最適なハードウエアです。第1回は、プログラムの開発環境を構築します。
シェルスクリプトマガジン Vol.85は以下のリンク先でご購入できます。
図17 初期化プログラム(boot.py)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
import sys import time import network import ntptime from machine import RTC SSID='your_ssid' PASS='your_passphrase' IFCONFIG=('192.168.1.80', '255.255.255.0', '192.168.1.1', '192.168.1.1') def wifi_connect(ssid, passkey, timeout=20): conn = network.WLAN(network.STA_IF) if conn.isconnected(): return conn conn.active(True) conn.connect(ssid, passkey) while not conn.isconnected() and timeout > 0: time.sleep(1) timeout -= 1 if conn.isconnected(): return conn else: return None conn = wifi_connect(SSID, PASS) if conn is None: print('Can not connect to ' + SSID) else: conn.ifconfig(IFCONFIG) print('Connect to ' + SSID) # 日時設定 rtc = RTC() ntptime.host = 'ntp.nict.jp' now = time.localtime(ntptime.time() + 9 * 60 * 60) rtc.datetime((now[0], now[1], now[2], now[6], now[3], now[4], now[5], 0)) now = rtc.datetime() print("%04d-%02d-%02d %02d:%02d:%02d" %(now[0], now[1], now[2], now[4], now[5], now[6])) |
図18 簡易ネットワークサーバー(main.py)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
import usocket as socket import network import time html = ''' <html> <head><title>Pico W</title></head> <body> <h1>Welcome to Pico W</h1> </body> </html> ''' sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.bind(('', 80)) sock.listen(4) while True: conn, addr = sock.accept() print('Connect from %s' %(str(addr))); req = conn.recv(1024).decode() if not req.startswith('GET / HTTP/1.1'): conn.send('HTTP/1.1 404 Not Found\r\n') conn.close() else: conn.send('HTTP/1.1 200 OK\r\n') conn.send('Content-Type: text/html\r\n') conn.send('Connection: close\r\n\r\n') conn.sendall(html) conn.close() |