아두이노

[아두이노] 온도측정 센서 만들기(2) - DHT11 (온도저장하기)

봉주니 2023. 2. 14. 18:12

앞에서 측정한 온도 정보를 이용해서, DB에 저장을 해보려 한다.

 

1. DB 설치하기

데이터베이스는 mariaDB를 사용했다.

 

https://mariadb.org/download/?t=mariadb&p=mariadb&r=10.11.1&os=windows&cpu=x86_64&pkg=msi&m=blendbyte 

 

Download MariaDB Server - MariaDB.org

REST API Release Schedule Reporting Bugs … Continue reading "Download MariaDB Server"

mariadb.org

 

MSI 패키지를 다운로드 받아 설치해주면 된다.

아래와 같이 설정을 해주고 설치를 완료했다.

 

기본포트 : 3306

ID : root 

PASS  : admin 

 

2. heidiSQL 설치하기

DB접속을 위해 heidiSQL를 이용한다.

 

https://www.heidisql.com/download.php

 

Download HeidiSQL

Ads were blocked - no problem. But keep in mind that developing HeidiSQL, user support and hosting takes time and money. You may want to send a donation instead. Download HeidiSQL 12.3, released on 05 Dec 2022 Please disable your adblocker and reload the p

www.heidisql.com

 

heidiSQL을 실행 후 로컬 접속을 해본다.

 

3. 데이터베이스 및 테이블을 생성합니다.

 

데이터베이스 생성

데이터베이스 생성

테이블 생성

 

테이블 명 : TEMP_TABLE

온도,습도 컬럼 생성

 

아래와 같이 조회해보니, 빈 테이블이 정상 생성되었다.

 

4. 아두이노에서 DB INSERT 해보기

온도, 습도 저장을 위해 아두이노에서 DB를 처리해준다.

MYSQL을 사용하기 위해서는 라이브러리 설치도 필요하다.

#include "DHT.h"
#include "Ethernet.h"  
#include "MySQL_Connection.h"
#include "MySQL_Cursor.h"
#define DHTTYPE DHT11    
#define DHTPIN 4  
DHT dht(DHTPIN , DHTTYPE);  
float temp;  
float humid;  

byte mac_addr[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};

IPAddress server_addr(127,0,0,1);
char user[] = "root";
char password[] = "admin";
char INSERT_SQL[] = "";

EthernetClient client;
MySQL_Connection conn((Client *)&client);
  
void setup() {    
   Serial.begin(115200);  
   while(!Serial);
   dht.begin();  
   Ethernet.begin(mac_addr);
   Serial.println("Connecting...");
   if(conn.connect(server_addr, 3306, user, password)){
     delay(3000);
   }else{
     Serial.println("Connection failed.");
   }
}  
  
void loop() {  
    temp  = dht.readTemperature();  
    humid = dht.readHumidity();  
    Serial.print("temp="); Serial.print(temp);  
    Serial.print(",humid="); Serial.println(humid);     
    MySQL_Cursor *cur_mem = new MySQL_Cursor(&conn);
    sprintf(INSERT_SQL,"INSERT INTO db_temp.TEMP_TABLE(ID,TEMP,HUMID) VALUES ('TEST01',%f,%f)",temp,humid);
    cur_mem->execute(INSERT_SQL);
    delay(3000);  
}

 

결과는 실패......

 

몇 시간을 헤맨결과,, 이더넷 통신을 하려면 이더넷 쉴드를 통해 연결을 해서 접속을 해야 된다.

원래 WIFI 연결이 목적이었으므로, ESP8266을 이용해서 로컬 DB에 저장하는 걸 다시 해봐야겠다.

반응형