[Micropython][ ESP8266] TPYBoard V202之Network

實驗目的

  • 學習在PC機系統中網絡(network)的使用方法。
  • 學習TPYBoard V202連接網絡的使用。
2.準備工作


所需元器件

  • TPYBoard V202一塊
  • 數據線一條
  • 電腦 1臺(本次實驗以win7爲例)所需軟件


ESPlorer(3)下載地址

http://www.tpyboard.com/download/tool/169.htmlNetwork庫的使用方法網絡模塊用於配置WiFi連接。一共兩種模式,模式一,是tpyboardv202當sta節點,即連接路由器的節點。模式二,是tpyboardv202做爲ap,充當路由。使用以下命令創建這些對象的實例:(1)當ESP8266連接到路由器時:
import network
wlan = network.WLAN(network.STA_IF)      # 創建一個站(當ESP8266連接到路由器時)接口
wlan.active(True)                          # 激活接口
wlan.scan()                                 # 掃描接入點
wlan.isconnected()                         # 檢查站點是否連接到路由器
wlan.connect('essid', 'password')        # 連接到路由器
wlan.config('mac')      # 獲取接口的MAC地址
wlan.ifconfig()         # 獲取接口的IP / netmask / gw / DNS地址



檢查是否連接是否建立:wlan.isconnected()

檢查接口是否活動:wlan.active()

檢查接口的網絡設置:wlan.ifconfig()

在這教大家TPYBoard v202上電自動連接本地網絡:
from machine import Pin
import network
import time
def led_state():
        p2 = Pin(2, Pin.OUT)
        p2.value(0)
        time.sleep_ms(500)
        p2.value(1)
        time.sleep_ms(500)
        p2.value(0)
        time.sleep_ms(500)
p2.value(1)
        time.sleep_ms(500)
def do_connect():
        sta_if = network.WLAN(network.STA_IF)
        p2 = Pin(2, Pin.OUT)
        sta_if.active(False)
        if not sta_if.isconnected():
                p2.low()
                print('connecting to network...')
                sta_if.active(True)
                sta_if.connect('TurnipSmart', 'turnip2016')
                while not sta_if.isconnected():
                        pass
        if sta_if.isconnected():
                print('connect success')
                led_state()
                print('network config:', sta_if.ifconfig())
do_connect()

只需要將上面代碼寫入boot.py,在開發板上電後,就看到藍燈常亮(正在連接網絡),然後藍燈交替閃爍兩次,控制檯打印connect success,證明已經連接到本地網絡。


(2)當其他設備連接到ESP8266時:
import network
ap = network.WLAN(network.AP_IF) #創建接入點接口
ap.active(True)         # 激活接口
ap.config(essid='ESP-AP') # 設計接入點的ESSID



(3)向指定地址發送數據的方法:
def http_get(url):
        _, _, host, path = url.split('/', 3)
        addr = socket.getaddrinfo(host, 80)[0][-1]
        s = socket.socket()
        s.connect(addr)
        s.send(bytes('GET /%s HTTP/1.0\r\nHost: %s\r\n\r\n' % (path, host), 'utf8'))
        while True:
                data = s.recv(100)
                if data:
                        print(str(data, 'utf8'), end='')
                else:
                        break
        s.close()



4.實驗

(1)實驗要求

當TPYBoard v202未連接到網絡時,led亮起警示,當連接成功後,熄滅。(2)main.py程序代碼

import network
from machine import Pin
sta_if = network.WLAN(network.STA_IF)
p2 = Pin(2, Pin.OUT)
#我們在這裏把接入點接口禁用,方便觀看實驗效果,非實驗可以去掉
sta_if.active(False)
if not sta_if.isconnected():
        p2.low()
        print('connecting to network...')
        sta_if.active(True)
        sta_if.connect('TurnipSmart', 'turnip2016')
        while not sta_if.isconnected():
                pass
if sta_if.isconnected():
        print('connect success')
        p2.high()
        print('network config:', sta_if.ifconfig())



(3)實驗效果

當我們復位,把程序寫進去的時候會看到TPYBoard V202板載的藍燈亮起來,當連接成功後藍燈熄滅,控制檯打印connect success。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章