- 센서에 입력되는 신호가 임계값을 넘으면 Low/High를 출력하는 센서 모듈
- Low/High를 출력하는 센서 모듈 예
- PIR(인체 감지) 센서모듈(HC-SR501)
- Sound 센서모듈(SZH-EK033)
- 홀 센서(Hall Sensor) WSH131
- Low/High를 출력하는 센서 모듈을 제어하는 구성도
- Low/High를 출력하는 센서 모듈을 제어하는 프로그램 예
- Analog 전압을 출력하는 센서 모듈
- ADC(Analog to Digital Conversion) object(class ADC)
- Analog 전압을 출력하는 센서 모듈 예
- 물 수위 센서(Water Level Sensor)
- 포토 센서(GL5516)
- 온도 센서(LM35DZ)
- Analog voltage를 출력하는 센서 모듈을 사용하는 구성도
- Analog voltage를 출력하는 센서 모듈을 사용하는 프로그램 예
- 펄스폭(Pulse width) 출력 모듈
- Single-Wire 통신을 사용하는 센서
- I2C 통신을 사용하는 모듈
- ESP8266/ESP32 센서와 제어모듈 관련 페이지 보기
- Low/High를 출력하는 센서 모듈 예
- Low/High를 출력하는 센서 모듈을 사용하는 구성도
- Low/High를 출력하는 센서 모듈을 제어하는 프로그램 예
- Low/High를 출력하는 센서 모듈을 제어하는 프로그램 예: sensor_event_handler.py
- 실험을 위한 준비
- ESP32 개발보드와 센서 모듈 연결
- ESP32 개발보드 Event input pin(GPIO14) <-> 센서의 Output pin
- ESP32 개발보드 VDD <-> 센서 Vdd pin
- ESP32 개발보드 GND <-> 센서 GND
- 실험 방법
- 위 "sensor_event_handler.py" 프로그램 파일을 Download하여 저장한다.
- Thonny IDE를 실행하고 Thonny IDE의 사용 환경(Thonny 실행에 사용할 장치와 COM Port 선택)이 바르게 되어 있는지 확인한다.
- Thonny IDE의 Python shell 창에 prompt( >>> )가 출력되었는 확인한다.
- Thonny IDE의 "파일 -> 열기"를 실행하여 python_wev_server_STA_led_basic.py 파일을 Open 한다.
- Thonny IDE의 "파일 -> 열기"를 실행하여 "sensor_event_handler.py"를 Open 한다.
- 실험
- "실행 -> 현재 스크립트 실행"을 실행하거나 Toolbar의 "실행" Icon을 클릭하면 스크립트가 개발보드에 전송되고 프로그램이 실행된다.
- 로그램이 실행되면 센서에 임계치 이상의 신호를 인가 한다. 센서에 임계치 이상의 신호를 인가되면 LED가 지정된 시간(2Sec) 동안 Turn on 된다.
- 센서에 임계치 이상의 신호를 인가하는 방법 예
- PIR(인체 감지) 센서모듈(HC-SR501): 센서 앞에 손(인체)을 가까이 접근 시킨다.
- Sound 센서모듈(SZH-EK033): 센서에 큰 소음이나 진동(입으로 후하고 마이크에 진동)을 가한다.
- 홀 센서(Hall Sensor) WSH131: 먼저 홀 센서 회로를 구성하고 홀 센서 앞에 자성체(자석)를 접근 시킨다.
아래 사진은 자주 자용하는 Low/High를 출력하는 센서 모듈의 예 이다. 아래 예 센서는 입력 신호가 미리 정해진 임계치를 넘으면 Low 상태에서 High 상태(or High 상태에서 Low 상태)로 천이(Rising edge or Falling edge)하기 때문에 External Interrupt 처리 방식으로 제어 할 수 있다.
윗 예의 센서 모듈은 모두 입력 신호가 임계치를 넘기면 Low 상태에서 High 상태로 천이하기 때문에 모두 아래와 같은 External interrupt 방식의 프로그램으로 구현 할 수 있다.
주: 센서에 따라 전원 전압은 5V 또는 3.3V 일 수 있으니 확인 바람.
참고자료: 홀 센서 회로 예
- ADC(Analog to Digital Conversion) object(class ADC)
- ADC object 생성자(Constructors): classmachine.ADC(id)
- id: Pin 객체. Pin 번호는 32-39 까지 사용할 수 있다.
- Method
- ADC.atten(attenuation): DC 입력의 감쇠량을 설정한다. 이는 정확도를 희생하면서 가능한 더 넓은 입력 전압 범위(동일한 비트 수가 더 넓은 범위를 나타냄)를 허용한다. 가능한 감쇠 옵션은 다음과 같다.
- ADC.ATTN_0DB: 0dB 감쇠. 최대 입력 전압 1.0v(Default configuration)
- ADC.ATTN_2_5DB: 2.5dB 감쇠. 최대 입력 전압 1.34v
- ADC.ATTN_6DB: 6dB 감쇠. 최대 입력 전압 2.0v
- ADC.ATTN_11DB: 11dB 감쇠. 최대 입력 전압 3.6v
- ADC.width(width): ADC 결과 반환되는 비트 수를 설정한다. 가능한 비트 수는 다음과 같습니다.
- ADC.WIDTH_9BIT: 9 bit data
- ADC.WIDTH_10BIT: 10 bit data
- ADC.WIDTH_11BIT: 11 bit data
- ADC.WIDTH_12BIT: 12 bit data(Default configuration)
- ADC class 사용 예
- Analog 전압을 출력하는 센서 모듈 예
- Analog voltage를 출력하는 센서 모듈을 사용하는 구성도
- Analog voltage를 출력하는 센서 모듈을 사용하는 프로그램 예
- ESP32를 사용하여 Analog voltage를 주기적으로 측정하여 출력하는 프로그램 예: sensor_analog_voltage_esp32.py
- ESP8266를 사용하여 Analog voltage를 주기적으로 측정하여 출력하는 프로그램 예: sensor_analog_voltage_esp8266.py
- 실험을 위한 준비
- 개발보드와 센서 모듈 연결
- 신호선: ESP32인 경우 개발보드 ADC input pin(GPIO36) <-> 센서의 Output pin
- ESP32인 경우: 개발보드 ADC input pin(GPIO36) <-> 센서의 Output pin
- ESP8266인 경우: 개발보드 ADC input pin(ADC0) <-> 센서의 Output pin
- 전원: 개발보드 VDD(3.3V) <-> 센서 Vdd pin.
- GND: 개발보드 GND <-> 센서 GND
- 실험 방법
- Thonny IDE를 실행하고 Thonny IDE의 사용 환경(Thonny 실행에 사용할 장치와 COM Port 선택)이 바르게 되어 있는지 확인한다.
- Thonny IDE의 Python shell 창에 prompt( >>> )가 출력되었는 확인한다.
- Thonny IDE의 "파일 -> 열기"를 실행하여 프로그램 파일(sensor_analog_voltage_esp32.py or sensor_analog_voltage_esp8266.py)을 Open 한다.
- 실험
- "실행 -> 현재 스크립트 실행"을 실행하거나 Toolbar의 "실행" Icon을 클릭하면 스크립트가 개발보드에 전송되고 프로그램이 실행된다.
- 프로그램이 실행되면 센서 출력 전압을 디지털 값으로 변환한 결과가 출력된다.
ESP32의 ADC 기능은 핀 32-39에서 사용할 수 있다. 기본 구성인 경우 ADC 핀의 입력 전압은 0.0v와 1.0v 사이(1.0v 이상이면 4095로 읽음)이어야 한다. 사용 가능한 전압 범위를 늘리려면 감쇠(Attenuation)를 적용하여야 한다.
주: ESP8266은 별도의 ADC0 입력 핀을 갖고 있다. ADC0 만 사용가능 함
from machine import ADC
adc = ADC(Pin(32)) # create ADC object on ADC pin
adc.atten(ADC.ATTN_11DB) #voltage range roughly 0.0v - 3.6v
adc.width(ADC.WIDTH_9BIT) # set 9 bit return values (returned range 0-511)
adc.read() # read value using the newly configured attenuation and width
아래 사진은 자주 자용하는 Analog 전압을 출력하는 센서 모듈의 예 이다. 아래 예 센서는 입력 신호의 크기에 따라 출력 전압이 변동하기 때문에 센서 모듈의 출력 전압을 디지털 값으로 변환하는 A/D 변환기를 사용하여야 한다.
윗 예의 센서 모듈은 모두 Analog voltage 신호를 출력하기 때문에 ADC를 사용하여야 한다.
윗 프로그램을 복사하여 File name "sensor_analog_voltage_esp32.py"로 저장 한다.
윗 프로그램을 복사하여 File name "sensor_analog_voltage_esp8266.py"로 저장 한다.
포토 센서(GL5516)를 사용하는 경우: 전원(Vdd) <-> 10K 저항 <-> GL5516 <-> GND를 연결한다. 여기서 10K 저항과 GL5516를 연결한 점이 신호 출력(센서의 Output pin에 해당)이다.
- 초음파 거리 센서(HC-SR04)
- 초음파 거리 센서(HC-SR04) 모듈을 제어하는 프로그램 예
- 초음파 거리 센서(HC-SR04) 모듈을 제어하는 프로그램 예:
- 윗 프로그램을 File name "sensor_pulse_width_HC_SR04.py"로 저장 한다.
- 실험을 위한 준비
- ESP32 개발보드와 센서 모듈 연결
- ESP32 개발보드 Pulse input pin(GPIO4) <-> 센서의 echo pin
- ESP32 개발보드 Trigger output pin(GPIO5) <-> 센서의 Trig pin
- ESP32 개발보드 VDD(3.3V) <-> 센서 Vdd pin(센서에 따라 5V 전원을 사용하는 것도 있음)
- ESP32 개발보드 GND <-> 센서 GND
- 실험 방법
- Thonny IDE를 실행하고 Thonny IDE의 사용 환경(Thonny 실행에 사용할 장치와 COM Port 선택)이 바르게 되어 있는지 확인한다.
- Thonny IDE의 Python shell 창에 prompt( >>> )가 출력되었는 확인한다.
- Thonny IDE의 "파일 -> 열기"를 실행하여 프로그램 파일 "sensor_pulse_width_HC_SR04.py"를 Open 한다.
- 실험
- "실행 -> 현재 스크립트 실행"을 실행하거나 Toolbar의 "실행" Icon을 클릭하면 스크립트가 개발보드에 전송되고 프로그램이 실행된다.
- 프로그램이 실행되면 2초 간격으로 초음파 거리 센서와 물체와의 거리가 출력된다. 센서 앞 물체의 거리를 변동시키며 출력 값과 비교한다.
초음파 거리 센서(HC-SR04) 모듈을 사용하는 구성도 예
초음파 거리 센서(HC-SR04) 모듈은 초음파를 반사하는 물체까지의 거리에 비례한 Pulse 폭을 출력한다.
- 온도/습도 센서(DHT11/DHT22) 모듈
- 온도/습도 센서(DHT11/DHT22) 모듈을 제어하는 프로그램 예
- 온도/습도 센서(DHT11/DHT22) 모듈을 제어하는 프로그램 예:
- 윗 프로그램을 File name "sensor_single_wire_comm_DHT11.py"로 저장 한다.
- 실험을 위한 준비
- ESP32 개발보드와 센서 모듈 연결
- ESP32 개발보드 Data input pin(GPIO14) <-> 센서의 data pin
- Data input line Pull up 저항(1K - 10K): DHT11/DHT22 모듈에 Pull up 저항이 내장된 경우 생략하여도됨.
- ESP32 개발보드 VDD(3.3V) <-> 센서 Vcc pin
- ESP32 개발보드 GND <-> 센서 GND
- 실험 방법
- Thonny IDE를 실행하고 Thonny IDE의 사용 환경(Thonny 실행에 사용할 장치와 COM Port 선택)이 바르게 되어 있는지 확인한다.
- Thonny IDE의 Python shell 창에 prompt( >>> )가 출력되었는 확인한다.
- Thonny IDE의 "파일 -> 열기"를 실행하여 프로그램 파일 "sensor_single_wire_comm_DHT11.py"를 Open 한다.
- 실험
- "실행 -> 현재 스크립트 실행"을 실행하거나 Toolbar의 "실행" Icon을 클릭하면 스크립트가 개발보드에 전송되고 프로그램이 실행된다.
- 프로그램이 실행되면 2초 간격으로 측정된 온도와 습도 값이 출력된다. 센서에 손가락을 대고 있으면 습도가 변동한다. 유사한 방법으로 온도를 변동 시키며 측정 결과와 비교한다.
DHT11/DHT22 센서 모듈을 사용하는 구성도 예
온도/습도 센서(DHT11/DHT22) 모듈은 측정한 온도/습도 값을 디지털 데이터로 변환하여 Single-Wire 통신 프로토콜로 출력한다.
- 디지털 출력 온도 센서(DS1621)
- 디지털 출력 온도 센서(DS1621)를 제어하는 프로그램 예
- ESP8266/ESP32 센서와 제어모듈 관련 페이지 보기
I2C 통신을 이용한 측정 과 제어 시스템 구성도
주: I2C Pull-Up 저항은 ESP 모듈에 내장되어 있기 때문에 이 구성도에는 생략되었음.
디지털 출력 온도 센서(DS1621)를 사용하는 시스템 구성과 프로그램 예는 "ESP32 I2C(Inter-Integrated Circuit) 통신"에서 설명하였으니 참고하기 바람.