본문 바로가기
모두의 아두이노 환경 센서/2장 미세먼지 측정 센서

PMS7003 미세먼지 아두이노 센서 - LCD16X2 동작 확인

by 로니킴 2021. 3. 21.


LCD16X2 아두이노 실드를 이용해 실시간으로 PMS7003 미세먼지 센서의 측정값을 화면에 표시할 수 있다.  [모두의 아두이노 환경 센서] 책에서 설명하지 않았지만, LCD16X2 키패드 실드를 이용해 실시간으로 측정이 가능하고 센서 응용 동작을 구성할 수 있다.  

 

 

목차

     


    PMS7003 아두이노 센서와 LCD16X2 쉴드 활용

     

    PMS7003-아두이노-센서와-LCD16X2-쉴드-활용
    PMS7003-아두이노-센서와-LCD16X2-쉴드-활용

     

     


     

     

     

    LCD16X2 아두이노 쉴드란?

    Arduino 호환 보드 용 LCD 키패드 실드이다. 아두이노 호환 보드 용 LCD 키패드 실드이다.
    HD44780 병렬 인터페이스 칩셋과 4 비트 Arduino LCD 라이브러리를 사용한 16 행 2 열의 흰색 문자와 파란색 백라이트의 LCD 디스플레이이다. 키패드 구성은 select, up, right, down, left로 되어 있다. 

     

    아두이노-LCD-16X2-쉴드-이미지
    아두이노-LCD-16X2-쉴드-이미지


     

    아두이노 LCD16X2 키패드 실드 샘플

    키패드의 입력을 받을 수 있는 샘플 코드는 다음과 같다. 

     

    #include <LiquidCrystal.h>
    LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
    
    #define BTN_RIGHT  0
    #define BTN_UP     1
    #define BTN_DOWN   2
    #define BTN_LEFT   3
    
    #define BTN_SELECT 4
    #define BTN_NONE   5
    
    int adc_key_in = 0;
    
    void setup()
    {
      lcd.begin(16, 2);
      lcd.setCursor(0, 0);
      lcd.print("LCD key Shield");
    
    }
    
    void loop()
    {
      int lcd_key = read_LCD_buttons();
      display_LCD(lcd_key);
      delay(200);
    }
    
    
    int read_LCD_buttons()
    {
      adc_key_in  = analogRead(0);
    
      if (adc_key_in > 1000) return BTN_NONE;
      if (adc_key_in < 50)   return BTN_RIGHT;   // 0
      if (adc_key_in < 195)  return BTN_UP;      // 99
      if (adc_key_in < 380)  return BTN_DOWN;    // 256
      if (adc_key_in < 555)  return BTN_LEFT;    // 409
      if (adc_key_in < 790)  return BTN_SELECT;  // 639
    
      return BTN_NONE;
    }
    
    void display_LCD(int lcd_key) {
      lcd.setCursor(0, 1);
    
      if (lcd_key == BTN_RIGHT) lcd.print("RIGHT ");
      else if (lcd_key == BTN_LEFT) lcd.print("LEFT   ");
      else if (lcd_key == BTN_UP) lcd.print("UP    ");
      else if (lcd_key == BTN_DOWN) lcd.print("DOWN  ");
      else if (lcd_key == BTN_SELECT) lcd.print("SELECT");
      else if (lcd_key == BTN_NONE) lcd.print("NONE  ");
    
    
      lcd.setCursor(10, 1);
      clearLCD();
      lcd.print(adc_key_in);
    }
    
    void clearLCD() {
      int i = 0;
      int digit = 0;
    
      if (adc_key_in > 999) digit = 4;
      else if (adc_key_in > 99) digit = 3;
      else if (adc_key_in > 9)  digit = 2;
      else digit = 1;
    
      for (i = 4; i > digit; i--) lcd.print(" ");
    }
    
    
    동작영상1

     

     

     


     

    [Hello World] 출력 코드

    lcd 키패드에 "Hello World"를 출력하는 코드는 다음과 같다. 

     

    #include <LiquidCrystal.h>
    LiquidCrystal lcd(8, 9, 4, 5, 6, 7); 
    
    void setup()
    {
      lcd.begin(16, 2);
    }
    
    void loop()
    {
      lcd.setCursor(0, 0);
      lcd.print("LCDkeyShield");
    
      lcd.setCursor(0, 1);
      lcd.print("Hello,World!");
    }

     

     

     

     


     

    아두이노 LCD 16X2 쉴드 구입하기

    다음과 같이 아두이노 LCD16X2 키패드 실드는 알리익스프레스, 네이버 쇼핑몰, 아마존 등에서 센서를 구입할 수 있다. 

     

    [알리익스프레스]

    아두이노-LCD-16X2-쉴드-구입하기-알리익스프레스
    아두이노-LCD-16X2-쉴드-구입하기-알리익스프레스

     

     

    [네이버 쇼핑]

     

    아두이노-LCD-16X2-쉴드-구입하기-네이버
    아두이노-LCD-16X2-쉴드-구입하기-네이버

     

     

     

     


     

    PMS7003 LCD 키패드 쉴드 연결하기(UART)

    PMS7003 센서는 라이브러리를 사용하여 간편하게 동작 확인을 할 수 있다.  

     

    PMS7003-LCD-키패드-쉴드-연결하기(UART)
    PMS7003-LCD-키패드-쉴드-연결하기(UART)

     

     


     

    PMS7003 LCD 키패드 쉴드 소프트웨어 코딩

    PMS7003 센서는 코드는 다음과 같다. 

    /*
      PMS7003 Sensor
    
       @ 2018.07.10
       @ author STEAMEDU123 <steamedu123@gmail.com>
      */
      
    #include <SoftwareSerial.h>
    #include <LiquidCrystal.h>
    
    LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
    SoftwareSerial pmsSerial(2, 1);
    
    void setup()   {
      lcd.begin(16, 2);
      pmsSerial.begin(9600);
      lcd.setCursor(0, 0);
      lcd.print("PMS7003");
    }
    
    void loop() {
      pms7003_read();
    }
    
    //------------------------------------------------------------------
    void pms7003_read() {
      int chksum = 0;
      int data = 32;
      unsigned char pms[data] = {0,};
    
      if (pmsSerial.available() >= data) {
    
        for (int i = 0; i < data ; i++) {
          pms[i] = pmsSerial.read();
    
          if (i < 30) {
            chksum =  chksum + pms[i];
          }
        }
    
        if (!checkData(pms, chksum)) {
          return;
        }
    
        displayLCD(pms);
      }
    }
    
    boolean checkData(unsigned char pms[], int chksum) {
      if (pms[30] != (unsigned char)(chksum >> 8)
          || pms[31] != (unsigned char)(chksum) ) {
        return false;
      }
    
      if (pms[0] != 0x42 || pms[1] != 0x4d ) {
        return false;
      }
    
      return true;
    }
     
    void displayLCD(unsigned char pms[]) {    
      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print("1.0:");
      lcd.print(pms[10]);
      lcd.print(pms[11]);
      //  lcd.print(" ug/m3:");
    
      lcd.print(" 2.5:");
      lcd.print(pms[12]);
      lcd.print(pms[13]);
      //  lcd.print(" ug/m3:");
    
      lcd.setCursor(0, 1);
      lcd.print("10:");
      lcd.print(pms[14]);
      lcd.print(pms[15]);
      //lcd.print(" ug/m3");
    }
    

     

     

     

     

     

    PMS7003 LCD 키패드  동작 확인

    PMS7003 센서는 라이브러리를 사용하여 간편하게 동작 확인을 할 수 있다.  

     

    ------------------------------------------------------ 
    개발환경 : WINDOWS 10 
    아두이노 IDE : 1.8.13 
    ------------------------------------------------------ 
    01 라이브러리 복사 
     libraries\Steamedu123_Sensor-master 폴더는 아래 폴더에 복사 

     * 아두이노 설치 후 자동으로 생기는 폴더 
     C:\Users\s\Documents\Arduino\libraries 

    02 *. ino 파일 실행 
     - 아두이노와 PC 연결 
     - 아두이노 IDE 실행 
     - 메뉴 → 툴 → 보드:아두이노 UNO 확인 
      - 메뉴 → 스케치 → 확인/컴파일 



    03 컴파일 확인 

    스케치>확인/컴파일(CTRL+R) 를 선택해서 컴파일을 진행한다.

    PMS7003-LCD-키패드-컴파일화면
    PMS7003-LCD-키패드-컴파일화면

     


    04 아두이노 우노 업로드

    컴파일이 이상없이 완료되면 스케치>업로드(CTRL+U) 를 선택해서 컴파일 파일을 업로드 한다. 

     
    05 동작 확인

    동작화면
    동작화면

     

     

     

     

     


     

     

     

    PMS7003 미세먼지 + LCD 동작 확인 동영상

     

    LCD16X2 아두이노 실드를 이용해 실시간으로 PMS7003 미세먼지 센서의 측정값을 화면에 표시할 수 있다.  

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     


    + 이 글도 읽어보세요. 

     

     

     

     

     


     

    모두의 아두이노 환경 센서 책

    [모두의 아두이노 환경 센서] 책은 예스24, 인터넷 교보문고, 알라딘, 영풍문고, 반디 앤 루니스 등에서 구입할 수 있다. 이 책에서는 PMS7003, GP2Y1010AU0F, PPD42NS, SDS011 미세먼지 센서, DHT22 온습도 센서, MH-Z19B 이산화탄소 센서, ZE08-CH2O 포름알데히드 센서, CCS811 총휘발성유기화합물 TVOC, GDK101 방사선(감마선) 센서, MQ-131 오존(O3) 센서, MQ-7 일산화탄소, MICS-4514 이산화질소 센서, MICS-6814 암모니아 센서, DGS-SO2 아황산가스(SO2) 센서, BME280 기압 센서, GUVA-S12SD 자외선(UV) 센서, MD0550 기류 센서, QS-FS01 풍속 센서(Wind speed) 를 사용한다.  

     

     

    모두의 아두이노 환경 센서

    아두이노와 센서로 내 건강을 지킬 수 있다!다양한 환경 센서를 실생활 프로젝트에 응용해보자!시중에 판매되고 있는 간이측정기도 센서로 값을 측정합니다. 똑같은 센서를 아두이노에 연결하

    book.naver.com

     



    댓글