network.WLAN 使い方
先の記事で「電波も入出力するマイコン」にも書きましたが、ESP32の特徴の一つWiFi接続の使い方を書いてみます。
「Google Sheets にログ出力」なども、WiFi接続が無いと出来ないことなので、順番が逆だったように思います。(反省)
これが出来るおかげで、マイコンの守備範囲が広がります。LAN内のデバイスとsocket通信したり、FTPでファイルをアップロードしたりと応用が楽しみです。
あまりいろいろ書くと、後々必要な情報を探すのが面倒になりそうなので、今回は接続と切断だけの話にとどめます。
network モジュールをインポート
以下のようにインポートします。
import network
モジュールとクラス
import モジュール名 . クラス名
と書くことから、networkはモジュール、machine.PWMはクラスと認識していますが、間違いなどありましたら教えてください。お願いします。
wlanオブジェクトの作成
オブジェクト wlan を作成しています。
wlan = network.WLAN(network.STA_IF)
接続から切断まで
ステーションインタフェースをアクティブにします。
wlan.active(True)
WiFi に接続します。
wlan.connect('<your ESSID>', '<your password>')
接続の確立状態を確認します。
wlan.ifconfig()
ステーションインタフェースを無効にします。
wlan.active(False)
用途にもよりますが、交信頻度が低い(例:30分毎)などでは都度切断しますから、ステーションインタフェースを無効にします。
実際の使用例
sub1.py に以下のようなクラスを作ります。
(当然ですが、print行は無くても機能します。)
import network
class wifi: # Wifi
def __init__(self):
self.apn = 'AP_name' # AP_name
self.app = 'AP_pw' # AP_pw
def connect_wlan(self):
self.wlan = network.WLAN(network.STA_IF)
if not self.wlan.isconnected():
#cv = ('192.168.11.xxx', '255.255.255.0', '192.168.11.1', '192.168.11.1')
#wlan.ifconfig(cv) #固定IP
self.wlan.active(True)
self.wlan.connect(self.apn, self.app)
timeout = 10 # DHCP 待ち
while not self.wlan.isconnected() and timeout > 0:
print('.')
sleep(1)
timeout -= 1
else:
print('already conntcted')
print('connect : ', self.wlan.ifconfig())
def stop_wlan(self):
print('stop : ', self.wlan.ifconfig())
self.wlan.disconnect()
self.wlan.active(False)
AP_name 、AP_pw はお使いの環境に合わせてください。
コメントアウトの部分は固定IPで接続する時に使います。
main.py から次のように使います。
import sub1
wifi = sub1.wifi()
wifi.connect_wlan()
wifi.stop_wlan()
RTC や socket の話は別途記事にする予定ですが、以上のようにWiFi接続されいる前提で書くことになると思います。
引き続き、宜しくお願いいたします。
いいなと思ったら応援しよう!
出来ればサポート頂けると、嬉しいです。
新しい基板や造形品を作る資金等に使いたいと思います。