링크모음 링크세상
링크세상 링크모음 링크 애니 웹툰 링크 드라마 영화 링크 세상의모든링크

Raspberry Pi Pico W를 위한 더 나은 웹 서버

Pico W는 환상적인 작은 장치이지만 웹 페이지를 제공하기 위해 내가 찾은 예는 내 취향에 비해 너무 낮은 수준이었습니다.

저는 경량 웹 프레임워크인 Bottle and Flask의 열렬한 팬입니다. 그리고 마이크로닷 프로젝트를 발견하게 되어 매우 기뻤습니다. 이는 특정 웹 요청에 응답하는 함수를 표시하기 위해 데코레이터 구문(@)을 사용하는 점에서 Flask 및 Bottle과 매우 유사합니다. 이로 인해 최소한의 웹 서버에 대한 코드가 이렇게 간단해졌습니다.

from microdot import Microdot

app = Microdot()

@app.route('/')
def index(request):
    return 'Hello, world!'

app.run()

이것이 바로 제가 올바른 추상화 수준이라고 부르는 것입니다. 에 대한 언급은 아닙니다 소켓 통찰력!

좋은 소식은 마이크로닷이 Raspberry Pi Pico와 호환된다는 것입니다. 모든 웹 서비스를 관리하지만 Wi-Fi 연결을 시작하지는 않습니다. WiFi 연결에는 연결 진행 상황 표시, 연결 실패 처리 및 재연결과 같은 몇 가지 미묘한 부분이 있습니다. 웹페이지를 제공하고 싶을 때마다 재발명할 필요가 없는 바퀴임은 분명합니다. 그래서 저는 해당 프로세스를 마무리하기 위해 작은 모듈을 구성했습니다. 여기에서 사용 가능합니다: mm_wlan.

일단 설치되면 Pico의 전체 웹 서버 코드는 다음과 같습니다.

from microdot import Microdot
import mm_wlan

ssid = 'my network name'
password = 'my password'

app = Microdot()  
mm_wlan.connect_to_network(ssid, password)

@app.route('/')
def index(request):
    return 'Hello, from Pico'

app.run(port=80)

단계별

1. 마이크로닷과 mm_wlan을 설치합니다. 여기에는 microdot.py 및 mm_wlan.py라는 두 개의 파일만 Pico W의 파일 시스템에 복사하는 작업이 포함됩니다.

Thonny에서 이 파일을 열고 컴퓨터에 연결된 Pico W를 선택하여 이 작업을 수행할 수 있습니다. 사본 저장 ~로부터 파일 메뉴. 메시지가 표시되면 Raspberry Pi Pico를 대상으로 선택하고 원래 이름을 사용하여 Pico의 파일 시스템에 파일을 저장합니다.

2. 시작하다 새로운 Thonny에 파일을 저장하고 바로 위의 코드를 붙여넣으세요. 변화 SSID 그리고 비밀번호 WiFi 네트워크를 일치시키고 실행하십시오. 그렇게 하면 Thonny 창 하단의 Shell 영역에 서버가 실행 중인 IP 주소가 표시됩니다.

이제 해당 IP 주소에서 웹 브라우저를 엽니다.

만세! 귀하의 Pico W는 웹 서버입니다!

다른 페이지 추가

이제 웹 서버에 두 번째 페이지를 추가해 보겠습니다. 메모리 Pico W의 여유 메모리 양을 보고합니다. 이전 페이지에서는 HTML이 아닌 일반 텍스트를 반환했습니다. 마이크로닷의 기본 응답 유형은 다음과 같습니다. 텍스트따라서 HTML 태그를 응답에 넣었더라도 문자 그대로 표시되며 브라우저에서 HTML로 해석되지 않습니다.

이 새 페이지에서는 gc(Garbage Collector) 패키지를 가져와야 합니다.

GC 가져오기

그런 다음 다음과 같은 핸들러를 추가하십시오.

@app.route(‘메모리’)
def 인덱스(요청):
응답=”

여유 메모리={}바이트“.format(gc.mem_free())
응답 반환, {‘Content-Type’: ‘text/html’}

이제 응답 텍스트를 반환할 뿐만 아니라 콘텐츠 유형도 반환합니다.

프로그램을 실행하고 브라우저에서 페이지 메모리를 가리키면 다음과 같은 내용이 표시됩니다.

페이지를 몇 번 새로 고치면 사용 가능한 메모리 변경 사항이 표시됩니다.

전체 프로그램은 다음과 같습니다.

마이크로닷에서 수입 마이크로닷

mm_wlan 가져오기

GC 가져오기

sid = ‘내 네트워크 이름’

비밀번호 = ‘내 비밀번호’

앱 = 마이크로닷()

mm_wlan.connect_to_network(ssid, 비밀번호)

@app.route(‘/’)

def 인덱스(요청):

‘안녕하세요, Pico에서’를 반환합니다.

@app.route(‘메모리’)

def 인덱스(요청):

응답=”

여유 메모리={}바이트“.format(gc.mem_free())

응답 반환, {‘Content-Type’: ‘text/html’}

app.run(포트=80)

템플릿

웹 페이지가 좀 더 복잡해지면 일종의 템플릿이 응답 텍스트를 구성하는 데 도움이 될 것입니다. 다음은 MonkMakes Plant Monitor의 예제 프로젝트에서 가져온 여러 줄 예제의 예입니다.

마이크로닷에서 수입 마이크로닷
mm_wlan 가져오기
pmon에서 PlantMonitor 가져오기


ssid = ‘네트워크 이름’
비밀번호 = ‘비밀번호’


HTML = “””



내 식물

Pico W 플랜트 모니터

물: {물}

온도(C): {온도}

습도: {습도}


“””

pm = 플랜트모니터()
앱 = 마이크로닷()
mm_wlan.connect_to_network(ssid, 비밀번호)


@app.route(‘/’)
def 인덱스(요청):
w = pm.get_wetness()
t = pm.get_temp()
h = pm.get_humidity()
응답 = html.format(물=w, 온도=t, 습도=h)
응답 반환, {‘Content-Type’: ‘text/html’}


app.run(포트=80)

여기서 깔끔한 비결은 메타 매초 자동으로 wen 페이지를 새로 고치는 태그입니다. 아마도 이를 수행하는 더 좋은 방법은 Javascript가 브라우저에서 처리하는 JSON의 센서 값을 제공하는 마이크로닷 페이지와 이를 수행하기 위한 Javascript가 포함된 홈 페이지를 갖는 것입니다. 그러나 그것은 훨씬 더 많은 작업입니다.

요약

마이크로닷 프레임워크는 웹 서비스가 필요한 Pico W 프로젝트에서 많은 노력을 기울일 것입니다. 정말 인상적인 프레임워크 코드입니다.

마이크로닷 프레임워크는 매우 완벽하여 다양한 요청 유형, 요청 매개변수 및 컴팩트한 웹 서버 프레임워크에서 기대할 수 있는 거의 모든 것을 지원합니다.

Leave A Reply

Your email address will not be published.