ESP32 마이크로파이썬 리미트 스위치

이 가이드는 ESP32와 MicroPython을 사용하여 리미트 스위치를 활용하는 방법을 보여줍니다. 다음 세부 사항들을 다룰 것입니다:

리밋 스위치가 있는 ESP32 마이크로파이썬

준비물

1×ESP32 ESP-WROOM-32 개발 모듈 쿠팡 | 아마존
1×USB 케이블 타입-A to 타입-C (USB-A PC용) 쿠팡 | 아마존
1×USB 케이블 타입-C to 타입-C (USB-C PC용) 아마존
1×리미트 스위치 Limit Switch (KW12-3) 쿠팡 | 아마존
1×리미트 스위치 Limit Switch (V-156-1C25) 쿠팡 | 아마존
1×Wires 아마존
1×(옵션) 수축 튜브 세트 아마존
1×(옵션) 전기 인두기 아마존
1×(추천) ESP32용 스크루 터미널 확장 보드 쿠팡 | 아마존
1×(추천) ESP32용 전원 분배기 쿠팡 | 아마존
공개: 이 섹션에서 제공된 링크 중 일부는 제휴 링크입니다. 이 링크를 통해 구매한 경우 추가 비용없이 수수료를 받을 수 있습니다. 지원해 주셔서 감사합니다.

리미트 스위치에 대하여

이동하는 물체가 끝점에 도달했을 때 이를 감지하는 것이 주 기능이기 때문에 Limit Switch라고 불립니다. 또한 travel switch로도 알려져 있습니다. 또한 travel switch라고도 합니다.

핀아웃

다양한 종류의 제한 스위치가 일반적으로 사용됩니다. 예를 들어, KW12-3V-156-1C25 등이 있습니다. 각 모델에는 3개의 핀이 포함되어 있습니다.

  • C 핀: 이 핀은 공통 핀입니다. 개방 및 폐쇄 설정 모두에서 사용됩니다.
  • NO 핀: 이 핀은 열림 핀을 의미합니다. 설정이 열려 있을 때 사용됩니다.
  • NC 핀: 이 핀은 닫힘 핀을 의미합니다. 설정이 닫혀 있을 때 사용됩니다.
리미트 스위치 핀아웃
image source: diyables.io

작동 방식

리미트 스위치에는 세 개의 핀이 있지만, 일반적으로 두 개의 핀만 사용됩니다: C 핀과 나머지 두 핀 중 하나입니다. 리미트 스위치를 연결하는 방법은 네 가지가 있습니다. 다음은 네 가지 방법의 리미트 스위치 배선 및 ESP32에서의 측정 결과를 보여주는 표입니다.

C pin NO pin NC pin ESP32 Input Pin's State
1 GND ESP32 Input Pin (with pull-up) NOT connected HIGH when untouched, LOW when touched
2 GND NOT connected ESP32 Input Pin (with pull-up) LOW when untouched, HIGH when touched
3 VCC ESP32 Input Pin (with pull-down) NOT connected LOW when untouched, HIGH when touched
4 VCC NOT connected ESP32 Input Pin (with pull-down) HIGH when untouched, LOW when touched

각 방식에 대해 ESP32의 GND 핀과 입력 핀의 위치를 변경할 수 있습니다. 이를 통해 ESP32를 리미트 스위치에 연결하는 8가지 서로 다른 방법을 제공합니다.

우리는 앞서 언급된 네 가지 방법 중 하나만 선택하면 됩니다. 이 튜토리얼에서는 첫 번째 방법을 사용할 것입니다.

선연결

  • breadboard를 사용하여 ESP32와 리미트 스위치를 연결하는 방법
ESP32 마이크로파이썬 리미트 스위치 배선도

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.

ESP32와 리미트 스위치 연결 방법

ESP32 MicroPython 코드 - 리미트 스위치

버튼과 유사한 리미트 스위치는 제대로 작동하기 위해 디바운싱이 필요합니다. 디바운싱은 코드 복잡도를 높일 수 있습니다. 다행히도 DIYables_MicroPython_Button 라이브러리는 디바운싱 기능을 제공하며, 내부 풀업 저항을 포함하여 프로그래밍 과정을 단순화합니다.

두 가지 일반적인 상황은 다음과 같습니다:

  • 첫 번째: 스위치가 터치되면 어떤 작업을 하고, 터치되지 않으면 반대 작업을 합니다.
  • 두 번째: 스위치가 터치되지 않던 상태에서 터치되거나 터치되던 상태에서 터치되지 않게 되면 어떤 작업을 합니다.

두 경우 모두에서 MicroPython 스크립트를 작성하는 방법을 알아보겠습니다.

ESP32 MicroPython 코드 - 리미트 스위치의 상태 읽기

/* * 이 ESP32 마이크로파이썬 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP32 마이크로파이썬 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp32-micropython/esp32-micropython-limit-switch */ from DIYables_MicroPython_Button import Button import time # Initialize the limit switch connected to GPIO19 pin of the ESP32 limit_switch = Button(19) # Set debounce time to 50 milliseconds limit_switch.set_debounce_time(50) while True: limit_switch.loop() # Update the button state state = limit_switch.get_state() if state == 1: # GPIO HIGH print("The limit switch: UNTOUCHED") else: print("The limit switch: TOUCHED")

자세한 사용 방법

다음은 Thonny IDE를 사용하여 ESP32에서 MicroPython 코드를 설정하고 실행하는 방법에 대한 지침입니다:

  • 컴퓨터에 Thonny IDE가 설치되어 있는지 확인합니다.
  • ESP32 보드에 MicroPython 펌웨어가 로드되어 있는지 확인합니다.
  • MicroPython과 함께 ESP32를 처음 사용하는 경우, 단계별 안내를 위해 ESP32 마이크로파이썬 - 시작하기 가이드를 참고하세요.
  • 제공된 도면에 따라 ESP32 보드를 리미트 스위치에 연결합니다.
  • USB 케이블을 사용하여 ESP32 보드를 컴퓨터에 연결합니다.
  • 컴퓨터에서 Thonny IDE를 실행합니다.
  • Thonny IDE에서 Tools Options로 이동합니다.
  • Interpreter 탭 아래의 드롭다운 메뉴에서 MicroPython (ESP32)을 선택합니다.
  • 올바른 포트가 선택되어 있는지 확인합니다. Thonny IDE가 보통 자동으로 감지하지만, 경우에 따라 수동으로 선택해야 할 수도 있습니다(예: Windows의 COM12 또는 Linux의 /dev/ttyACM0).
  • Thonny IDE에서 Tools Manage packages로 이동합니다.
  • 검색창에 “DIYables-MicroPython-Button”을 입력한 후, DIYables에서 만든 Button 라이브러리를 찾습니다.
  • DIYables-MicroPython-Button을 클릭한 후, Install 버튼을 클릭하여 Button 라이브러리를 설치합니다.
ESP32 마이크로파이썬 버튼 라이브러리
  • 제공된 MicroPython 코드를 복사하여 Thonny의 편집기에 붙여넣으세요.
  • 다음 단계로 ESP32에 코드를 저장하세요:
    • Save 버튼을 클릭하거나 Ctrl+S를 눌러 저장합니다.
    • 저장 대화상자에서 MicroPython device를 선택합니다.
    • 파일 이름을 main.py로 지정합니다.
  • 녹색 Run 버튼을 클릭하거나 (또는 F5 키를 눌러) 스크립트를 실행합니다.
  • Limit switch를 누르고, 계속 누른 상태에서 놓으면서 Thonny 하단 Shell에 표시되는 메시지를 확인합니다.
Shell x
>>> %Run -c $EDITOR_CONTENT
MPY: soft reboot The limit switch: UNTOUCHED The limit switch: UNTOUCHED The limit switch: UNTOUCHED The limit switch: UNTOUCHED The limit switch: UNTOUCHED The limit switch: TOUCHED The limit switch: TOUCHED The limit switch: TOUCHED The limit switch: TOUCHED The limit switch: TOUCHED The limit switch: TOUCHED The limit switch: TOUCHED The limit switch: TOUCHED The limit switch: UNTOUCHED The limit switch: UNTOUCHED The limit switch: UNTOUCHED
MicroPython (ESP32) • CP2102 USB To UART Bridge Controller @ COM12 ≡

ESP32 MicroPython 코드 - 리미트 스위치의 터치/언터치 이벤트 확인

/* * 이 ESP32 마이크로파이썬 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP32 마이크로파이썬 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp32-micropython/esp32-micropython-limit-switch */ from DIYables_MicroPython_Button import Button import time # Initialize the limit switch connected to GPIO19 pin of the ESP32 limit_switch = Button(19) # Set debounce time to 50 milliseconds limit_switch.set_debounce_time(50) while True: limit_switch.loop() # Update the button state if limit_switch.is_pressed(): print("The limit switch: UNTOUCHED -> TOUCHED") if limit_switch.is_released(): print("The limit switch: TOUCHED -> UNTOUCHED")
  • 위의 코드를 복사하여 Thonny IDE의 에디터에 붙여넣으세요.
  • 스크립트를 ESP32에 저장하세요.
  • 스크립트를 실행하려면 녹색 Run 버튼을 클릭하거나 F5 키를 누르세요. 스크립트가 실행됩니다.
  • Thonny 하단의 Shell에서 메시지를 확인하면서 리미트 스위치를 누르고, 유지한 후, 떼세요.
Shell x
>>> %Run -c $EDITOR_CONTENT
MPY: soft reboot The limit switch: UNTOUCHED -> TOUCHED The limit switch: TOUCHED -> UNTOUCHED
MicroPython (ESP32) • CP2102 USB To UART Bridge Controller @ COM12 ≡

동영상

비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.