ESP32

ESP32 / ESP8266 MicroPython: Automatic connection to WiFi

기하 2021. 8. 16. 03:45

소개

이 게시물의 목적은 프롬프트에 모든 개별 명령을 삽입할 필요 없이 MicroPython의 WiFi 네트워크에 자동으로 연결하는 방법을 설명하는 것입니다. 이 절차는 ESP32와 ESP8266 모두에서 테스트되었습니다. 인쇄는 ESP32에서 테스트한 것입니다. ESP8266에 자동으로 인쇄되는 메시지는 ESP32의 메시지와 다르므로 결과는 이 튜토리얼의 스크린샷과 다릅니다. 그럼에도 불구하고 동일한 방식으로 작동합니다.

모듈에서 기능을 가져와서 WiFi 네트워크에 연결하기 위해 필요할 때마다 실행해야 하는 접근 방식과 부팅 후 보드를 완전히 자동으로 WiFi 네트워크에 연결하는 방식의 두 가지 접근 방식을 확인할 것입니다.

두 솔루션 모두 MicroPython의 파일 시스템에 파일을 업로드해야 합니다. 자세한 설명은  이전 자습서를 참조하십시오 . 또한 WiFi 네트워크에 수동으로 연결하는 방법에 대한 설명은  자습서를 확인 하십시오 . 모든 단계는 기본적으로 모듈의 기능으로 캡슐화하기 때문에 중요합니다.

 

모듈 호출 시 연결

이 첫 번째 섹션에서는 모듈에 정의된 함수를 호출할 때 WiFi 네트워크에 자동으로 연결하는 방법을 설명합니다. ESP32 / ESP8266을 사용할 때마다 항상 WiFi 네트워크에 연결하지 않으려는 경우에 유용합니다. 그래서 언제 그것을 할 것인지 결정할 수 있는 통제권을 줍니다.

이 방법을 구현하기 위해 연결 절차를 구현하는 간단한 Python 함수를 정의합니다. 이 함수를 connect 라고 부를 것 입니다.

1
2
def connect():
#Python code goes here

그런 다음 WiFi 네트워크에 연결하는 기능에 액세스하는 데 필요한 네트워크 모듈을 가져옵니다. 작업을 용이하게 하기 위해 두 개의 변수에 네트워크 자격 증명( ssid  password ) 도 저장 합니다.

1
2

4
import network


ssid = "yourNetworkName"
password = "yourNetworkPassword"

다음으로 스테이션 WiFi 인터페이스의 인스턴스를 가져와 변수에 저장합니다. 그런 다음 이미 WiFi 네트워크에 연결되어 있는지 확인합니다. 그렇다면 경고를 출력하고 실행을 마칩니다.

1
2

4
5
station = network.WLAN(network.STA_IF)


if station.isconnected() == True:
    print("Already connected")
    return

아직 연결되지 않은 경우 이전에 선언된 변수에 저장된 자격 증명을 사용하여 네트워크 인터페이스를 활성화하고 실제 연결을 수행합니다.

1
2
station.active(True)
station.connect(ssid, password)

연결에 시간이 걸릴 수 있으므로 isconnected 메서드 의 출력을 확인하여 연결될 때까지 활성 대기를 수행합니다 . 있습니다 패스  가 아무것도하지 않기 때문에 문이 단지 때문에 파이썬 구문의 필요합니다.

또한 단순함을 위해 우리는 연결을 무한히 기다릴 것이므로 예를 들어 WiFi 자격 증명이 잘못된 경우 모듈이 연결을 시도하는 동안 무한정 중단된다는 점을 고려하십시오. 당연히 더 강력한 실제 시나리오의 경우 일종의 시간 초과 메커니즘을 구현해야 합니다.

마지막으로 성공 메시지와 WiFi 구성을 인쇄합니다.

1
2

4
5
while station.isconnected() == False:
    pass


print("Connection successful")
print(station.ifconfig())

모듈의 전체 코드는 아래에서 볼 수 있습니다. .py 확장자 를 사용하여 선택한 디렉토리에 파일을 저장합니다 . 원하는 대로 이름을 지정할 수 있지만 이 자습서에서는 ConnectWiFi.py 라고 합니다 .

1
2

4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
def connect():
    import network


    ssid = "yourNetworkName"
    password =  "yourNetworkPassword"


    station = network.WLAN(network.STA_IF)


    if station.isconnected() == True:
        print("Already connected")
        return


    station.active(True)
    station.connect(ssid, password)


    while station.isconnected() == False:
        pass


    print("Connection successful")
    print(station.ifconfig())

마지막으로 코드를 업로드하려면 명령줄을 열고 파일을 저장한 디렉터리로 이동한 다음 다음 명령을 눌러 장치가 있는 직렬 포트로 COM5  변경 합니다.

1 ampy --port COM5 put ConnectWiFi.py

이제 선택한 소프트웨어를 사용하여 Python 프롬프트에 연결합니다. 이 튜토리얼에서는 Putty를 사용할 것입니다. 새 파일이 올바르게 업로드되었는지 확인하려면 다음 명령을 누르십시오.

1
2
import os
os.listdir()

그림 1과 같이 파일이 나열되어야 합니다.

그림 1 - WiFi 연결 모듈의 성공적인 업로드.

이제 아래와 같이 모듈을 가져오고 연결 함수를 호출하기만 하면 됩니다 .

1
2
import ConnectWiFi
ConnectWiFi.connect()

결과는 그림 2에 나와 있습니다. 마지막에 성공 메시지가 표시되어 이제 연결되었음을 나타냅니다.

그림 2 - 연결 함수 호출의 출력.

안전 장치가 제대로 작동하는지 확인하기 위해 연결 기능을 다시 호출할 수 있습니다. 이제 코드에 정의된 대로 이미 연결되었음을 나타내는 메시지를 반환해야 합니다. 그림 3에서 이것을 확인하십시오.

그림 3  - WiFi 네트워크에 연결된 후 함수 호출 시 경고 메시지.


자동 연결

구현하기 전에 먼저 일부 부팅 스크립트와 관련된 MicroPython의 특수성을 분석해야 합니다.

따라서 이전 자습서에서 보았듯이 MicroPython 설치에는 파일 시스템에 boot.py 파일이 있습니다. 이것은 보드에 전원이 공급될 때 실행되는 특정 파일입니다[1]. 이미 제거해서는 안 되는 일부 저수준 코드가 있습니다.

여기  표시된 MicroPython 문서에 표시된 대로 이 파일을 사용하여 보드 전원이 켜질 때 실행될 WiFi 네트워크에 연결하는 코드를 넣을 수 있습니다.

그럼에도 불구하고 우리는 다른 접근 방식을 따를 것입니다. 따라서 boot.py 외에 main.py 라는 파일 이 파일 시스템에 존재하면 boot.py 스크립트[1] 가 완료된 후 실행됩니다 . 그래서 우리는 그것을 생성하고 부팅시 WiFi 네트워크에 자동으로 연결하는 데 사용할 것입니다. 우리 애플리케이션에 대한 다른 종류의 코드를 구현하는 데 사용할 수 있습니다. 또한 필수 항목이 아니므로 걱정 없이 가지고 놀 수 있습니다.

이제 자동 연결을 구현하기 위해 이전 모듈을 재사용합니다. 따라서 main.py 라는 파일을 만드는 것으로 시작하십시오 . 앞에서 언급했듯이 이번에는 (이전에 정의한 모듈의 이름과 반대) 이 방법으로 호출해야 합니다. 그렇지 않으면 자동으로 실행되지 않습니다.

거기에 ConnectWiFi 모듈 가져오기  연결 함수 호출을 수동으로 했던 것과 같은 방식으로 넣으면 됩니다.

1
2
import ConnectWiFi
ConnectWiFi.connect()

이제 다음 명령을 사용하여 파일 시스템에 파일을 로드합니다(장치 포트로 COM5를 변경하는 것을 잊지 마십시오). 아직 Putty 또는 다른 소프트웨어를 통해 연결되어 있는 경우 먼저 연결을 닫아야 합니다. 그렇지 않으면 연결이 실패합니다.

1 ampy --port COM5 put main.py

이제 Python 프롬프트에 다시 연결합니다. 이전에 수행한 os.listdir() 호출 을 통해 파일이 성공적으로 업로드되었는지 확인할 수 있습니다 .

MicroPython이 이미 실행 중이므로 아무 일도 일어나지 않아야 합니다. main.py 가 지정된 대로 보드를 WiFi 네트워크에 연결 하는지 확인하려면 프롬프트가 열린 상태에서 ESP32 / ESP8266을 재설정하면 됩니다. 이제 그림 4와 같이 재부팅하고 기능을 실행해야 합니다.

그림 4  - 부팅 후 자동 연결.

ConnectWiFi 모듈을 가져오고 연결 함수를 호출하여 연결되었음을 확인할 수 있습니다. 그림 5와 같이 "이미 연결됨" 경고를 반환해야 합니다.

그림 5 - WiFi 네트워크에 다시 연결 시도 시 경고.


관련된 컨텐츠

 

관련 게시물

 

참고문헌 

[1]  https://learn.adafruit.com/micropython-basics-load-files-and-run-code/boot-scripts