見出し画像

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接続されいる前提で書くことになると思います。

引き続き、宜しくお願いいたします。


出来ればサポート頂けると、嬉しいです。 新しい基板や造形品を作る資金等に使いたいと思います。