NODEMCU

NodeMCU(아두이노) 에서 mysql로 쿼리 넘기기(DB 데이터 저장하기)

난쏘공돌이 2021. 2. 28. 19:17

Arduino IDE 환경에서 구현하며, 이전포스팅의 보드설정, 와이파이 설정이 이미 되어있는 상황에서 진행되어 집니다.

 

기존 아두이노보드에서 쿼리를 넘기는 방식은 php서버를 쓰는경우가 많던데 웹서버가 이미 있다면 편하겠지만,

한단계를 더 거치기 때문에 오히려 복잡하다고 생각했고, 웹서버를 구축해야한다는 귀찮음 또한 존재했다.

 

그래서 구글링을 통해 찾던중 

 

github.com/ChuckBell/MySQL_Connector_Arduino

 

ChuckBell/MySQL_Connector_Arduino

Database connector library for using MySQL with your Arduino projects. - ChuckBell/MySQL_Connector_Arduino

github.com

척 벨 이라는 분의 라이브러리를 찾을 수 있었다.

 

Mysql_connector_arduino라는 라이브러리인데 이는 아두이노 라이브러리 관리에서도 찾을수 있었다.

물론 이분의 깃헙을 들어가면 사용예제가 아주 자세하게 나와있지만, 여기서샘플 코드를 통해 소개하고자 한다.

 

//mysql 연결관련 헤더
#include <MySQL_Connection.h>
#include <MySQL_Cursor.h>

#include <ESP8266WiFi.h> //와이파이
#include <stdio.h>




//wifi 정보
const char* ssid = "SK_";
const char* password = "***********";

//sql 연결셋팅부
IPAddress server_addr(192, 168, 100, 19); // I여기에 IP를 넣어주세요
//char hostname[] = "#######################"; // 도메인 주소가 있다면 넣어주세요  !! 둘중 하나만 사용해야합니다!
char user[] = "###"; //계정정보 ID입니다
char password_[] = "###";        // DB password입니다

WiFiClient client;
MySQL_Connection conn(&client);
MySQL_Cursor* cursor;

char INSERT_SQL[] = "INSERT INTO test_arduino.hello_arduino (message) VALUES ('Hello, Arduino!')"; //실제 넣어줄 쿼리문입니다

void setup() {
  Serial.begin(115200); //전송속도

  Wifi_connect(); //와이파이 연결

  setupDateTime();//시간설정

  Serial.print("Connecting to SQL...  ");
  if (conn.connect(server_addr, 3306, user, password_)) {
    Serial.println("OK.");
  }
  else {
    Serial.println("FAILED.");
  }
  // create MySQL cursor object
  cursor = new MySQL_Cursor(&conn);
  
}


void loop() {
  
  if (WiFi.status() != WL_CONNECTED) { //와이파이 연결이 이상할시에 재접속 하는 코드
    Serial.println("try reconnect");
    Wifi_connect();
  }


  sprintf(INSERT_SQL, "INSERT INTO test.test VALUES (NOW(),%d,%d)", 22, 23); //쿼리문 온습도
 
  if (conn.connected()) {
    cursor->execute(INSERT_SQL); //실제 excute되는 시점
  }

  delay(300000);

}




void Wifi_connect() {

  Serial.println("---------------------------------------");
  Serial.println(ssid);
  WiFi.begin(ssid, password); // 와이파이 이름과 비밀번호를 통해 WIFI연결을 시작 // WL_CONNECTED라는 값을 돌려준다
  while (WiFi.status() != WL_CONNECTED) {
    // 네트워크의 연결 상태, 8개의 리턴값
    // STATUS와 WL_CONNECTED 값이 같은지를 통해 제대로 연결이 되있는지를 확인할 수 있다
    delay(500);
    Serial.print(".");
  }

  Serial.println();
  Serial.println("Wifi connected!");
  Serial.println("\nConnected to network");
  Serial.print("My IP address is: ");
  Serial.println(WiFi.localIP());
}

 

해당코드는 5분'마다 쿼리를 넘겨주는 코드입니다.

사용에 앞서 자신의 계정정보, 와이파이 정보들을 입력하신 후에 사용하세요

'NODEMCU' 카테고리의 다른 글

NODEMCU 와이파이 연결 및 인터넷 시간받아오기  (0) 2021.01.24
NodeMCU 1.0 아두이노IDE 연결  (0) 2021.01.16