44.개발로먹고사는남편하루/개발&코딩TIP

마이크로비트(micro:bit) 미세먼지 센서 구동(Feat. SZH-MN01)

amymom 2023. 9. 16. 19:58
728x90
반응형
마이크로비트 코딩

micro:bit - 미세먼지 측정키트 (SZH-MN01)

디바이스마트에서 28,500원에 판매합니다.

 

오늘은 기성품으로 디바이스마트에서 판매중인 미세먼지 측정키트를 이용하여 코딩을 진행해보겠다. 

일단 해당 제품에서 제공하는 코드가 있지만 일단 나만의 코딩으로 작성해 보았다.

 

코딩하는 사이트

 

https://python.microbit.org/v/3 사이트에 접속하여 microbit Python 을 작성하고

마이크로비트에 연결하여 코드를 올려보자

 

마이크로 비트 연결

 

 

마이크로비트를 연결하여 Send to micro:bit 를 눌러서 마이크로 비트에 연결해보자 

 

 

Next를 눌러서 현재 연결되어 있는 마이크로비트를 확인해보자 

 

 

연결되어 있는 마이크로비트를 연결

 

 

정상적으로 연결이 되면 Show serial 이 나타나고 클릭하면 로그창을 볼 수 있다.

 

 

현재 로그는 코딩을 마친 상태여서 로그가 나타나고 있다.  처음 시작하면 아무것도 표시되지 않는다.

 

Python 코딩
from microbit import *
# pin0 : 미세먼지 측정값
# pin1 : 측광LED를 ON , OFF
# pin2 : Red LED
# pin8 : Yellow LED
# pin12 : Green LED

# 미세먼지 센서에서 아날로그 값을 받아오는 함수
def dust_value_read():
    # LED를 ON
    pin1.write_digital(0);
    sleep(0.028);
    # 미세먼지 농도값을 읽어오는 부분
    p0 = pin0.read_analog();
    sleep(0.004);
    # LED를 OFF
    pin1.write_digital(1);
    sleep(0.968);
    return p0;

# LED제어 함수
def LED_list(a, b, c):
    sleep(300);
    pin2.write_digital(a);    # RED
    pin8.write_digital(b);    # YELLOW
    pin12.write_digital(c);   # GREEN


# 디스플레이 화면 표시
def display_list(Type):
    if Type == 1:
        display.show(Image.HAPPY);
    elif Type == 2:
        display.show(Image.ASLEEP);
    elif Type == 3:
        display.show(Image.SAD);
    elif Type == 4:
        display.show(Image.SKULL);
    sleep(1000);

# 미세먼지 농도
while True:
    # 미세먼지 농도를 측정하는 함수
    dust_val = dust_value_read();
    led_type = None;

    if (dust_val >= 0) & (dust_val <= 30):
        LED_list(0, 0, 1);
        led_type = "Green";
        display_list(1);
    elif (dust_val >= 31) & (dust_val <= 300):
        LED_list(0, 1, 0);
        led_type = "Yellow";
        display_list(2);
    elif (dust_val >= 301) & (dust_val <= 600):
        LED_list(1, 0, 0);
        led_type = "Red";
        display_list(3);
    elif (dust_val >= 601) & (dust_val <= 1023):
        LED_list(1, 1, 1);
        led_type = "All";
        display_list(4);
    # LED 깜빡임을 위해서 리셋해준다.
    LED_list(0, 0, 0);
    print("Dust Density [ug/m3] : ", dust_val , " LED : " , led_type);

 

입력하고 코드를 올려보자 

 

코드 업로드

 

1. GREEN LED : 0 ~ 30  이미지는 HAPPY
2. YELLOW LED : 31 ~ 300 이미지는 ASLEEP
3. RED LED : 301 ~ 600 이미지는 SAD
4. ALL ON LED : 601 ~ 1023 이미지는 SKULL

 

 

로그는 위처럼 표시되고 있다.

 

 

나중에 또 올리겠습니다. 다르게 만들어봐야겠네요 .

728x90
반응형