웹기반 임베디드 시스템 7‐8주차 내용 정리 - Jecroia/Class_Embedded_System GitHub Wiki

웹기반 임베디드 시스템 7-8주차 내용 정리

목차

  1. DHT11 온습도 센서와 실습
  2. Node-RED + DHT11 센서 실습
  3. Node-RED + DHT11 센서 + DB 실습

DHT11 온습도 센서와 실습

DHT11 센서란?

  • 정격 전압 : +5 V (3.5V~5.5VDC)
  • 측정 온도 범위 : 0-50 °C ± 2 °C
  • 측정 습도 범위 : 20-90% RH ± 5%

DHT11 센서 실습 진행

  1. 사전 환경 구성

    1. 운영체제 업데이트 환경 구성 전 라즈베리 파이의 운영체제를 최신 상태로 업그레이드 해줍니다.

      sudo apt-get update 
      sudo apt-get upgrade 
      

      KakaoTalk_20241016_221353492

    2. Python 버전 확인

      python -V 
      

      KakaoTalk_20241016_221452278

    3. DHT11 실습 파이썬 코드 라이브러리 설치

      1. Adafruit Python DHT 라이브러리 설치

        git clone https://github.com/adafruit/Adafruit_Python_DHT.git  
        

        KakaoTalk_20241016_221727006

      2. 라이브러리 폴더 이동, 설치 스크립스 실행

        cd  Adafruit_Python_DHT
        sudo python setup.py install  
        

        KakaoTalk_20241016_222043949

      3. libgpiod 설치

        cd ~
        sudo apt-get install –y libgpiod-dev  
        

        KakaoTalk_20241016_222120871

      4. 라이브러리 설치

        sudo pip3 isntall adafruit-circuitpython-dht 
        

        KakaoTalk_20241016_222845301

        error: externally-managed-environment 오류가 생긴다. 이를 해결하기 위해서 가상환경을 활용하여 라이브러리를 다운로드하였다.

        python3 -m venv ~/venv
        source ~/venv/bin/activate
        pip3 isntall adafruit-circuitpython-dht 
        

        KakaoTalk_20241016_223924595

        sudo rm /usr/lib/python3.11/EXTERNALLY-MANAGED
        
        • 코드를 사용해서 문제를 해결하는 방법도 존재한다.

        KakaoTalk_20241030_223101601

        무사히 install가 진행된다.

  2. 하드웨어 연결

  1. 실습 진행

Node-RED + DHT11 센서 실습

DHT11 센서 실습 진행

  • Dashboard 노드 다운로드

KakaoTalk_20241031_001025153

  • DHT11 Node 구성

KakaoTalk_20241030_232835114

  • msg.humidity function 노드
msg.payload = msg.humidity;
return msg;
  • 실행 결과

KakaoTalk_20241030_233342790

Node-RED + DHT11 센서 + DB 실습

DHT11 센서 실습 진행

  1. 데이터베이스 환경 구축

    1. MariaDB서버 설치 sudo apt-get install mariadb-server

    KakaoTalk_20241030_233531028

    2.서버 서비스 활성화 및 확인

    sudo service mysql start
    sudo service mysql status
    

    KakaoTalk_20241030_233655182

  2. DB 구축 및 유저 생성

    1. root계정으로 로그인

    sudo mysql -u root -p

    KakaoTalk_20241030_233805247

    1. DB 생성
    create database raspi_dht11
    character set utf8
    collate uft8_general_ci;
    

    KakaoTalk_20241030_233955454

    1. DB 접속

    use raspi_dht11

    1. 테이블 생성
    create table collect_data
    temp_c float,
    temp_f float,
    humidity float,
    collect_time datetime not null default current_timestamp);
    
    • 테이블 상세 정보가 잘 만들어지기 위해 확인하는 코드

    desc (테이블이름)

    KakaoTalk_20241031_012256892

    1. 테이블생성 확인

    show tables;

    KakaoTalk_20241030_234552090

    1. 유저 생성 및 권한 부여
    CREATE USER 'user'@'%' IDENTIFIED BY 'id';
    GRANT ALL PRIVILEGES ON raspi_dht11.* TO 'user'@'%';
    FLUSH PRIVILEGES;
    

    KakaoTalk_20241031_000620618

    KakaoTalk_20241031_000707821

    KakaoTalk_20241031_000645804

  3. Node-RED + Mysql + MariaDB

    1. mysql 노드 다운로드

    KakaoTalk_20241031_000913375

    1. mysql 노드 추가 및 DB연결
    • 노드 구성

    KakaoTalk_20241031_004621214

    • 데이터 처리 함수
    msg.topic = "INSERT INTO collect_data (temp_c, temp_f, humidity) VALUES (?, ?, ?)";
    msg.payload = [msg.payload.temp, msg.payload.humi, msg.payload.ftemp];
    return msg;
    
    • mysql 노드 설정

    KakaoTalk_20241031_015544464

  4. 구현 결과

KakaoTalk_20241031_015408093 KakaoTalk_20241031_015423242

dht11센서, 플로우 정상 작동 및 mariaDB 연결 상태 양호

KakaoTalk_20241031_015358353

그러나 데이터 삽입이 되지 않는 에러 발생. 추후 해결 필요.