반응형

 

 

 

아두이노(Arduino)를 활용하여 홈 IoT (사물인터넷) 프로젝트를 진행하다 보면 서버(Server) 구성의 필요성과 중요성을 느낄 때가 많습니다. 이전 포스팅까지는 아파치(Apache), PHP, MySQL DB(데이터베이스)를 이용하여 간단하게 서버를 구성하는 방법을 알아보았습니다. 또한 APMSetup 같은 프로그램을 이용하여 더 간편하게 가벼운 서버를 구성하기도 하였습니다. 

 

그러나 아두이노를 사용해서 점점 더 복잡한 홈IoT 및 스마트팜 (Smart Farm) 시스템을 구성하고 프로젝트를 기획하다 보면은 서버의 비중이 커지는 것을 느끼고 서버를 잘 구성해야겠다는 생각이 듭니다 (제 이야기입니다..;;). 그래서 개인 컴퓨터가 아닌 Cloud 플랫폼에서 리눅스를 기반으로 서버를 구성하는 방법을 공부해 보도록 하겠습니다. 

 

APMSetup을 이용하여 아파치, PHP, MySQL을 사용한 서버 구성을 알아보실 분은 아래 링크 참조 부탁드립니다.

 

Arduino 아두이노 홈 IoT(사물인터넷)을 위한 서버(Sever) 쉽게 만들기: APMSetup 프로그램

아두이노(Arduino)를 사용해서 홈 IoT(사물인터넷)을 구축하는 프로젝트를 위해서는 인터넷을 통한 데이터 전송이 기본적으로 가능해야 합니다. 인터넷을 사용하여 웹을 통해 데이터를 송수신하

it-g-house.tistory.com


1. 우분투(Ubuntu)

 

먼저 리눅스(Linux)가 운영체제(OS, Operating System)라는건 많이 들어보셨을 겁니다. 그중에 우분투(Ubuntu)는 "영국 기업 캐노니컬이 개발, 배포하는 컴퓨터 운영 체제이다. 데비안(Debian) 리눅스를 기반으로 개발되며, 데비안에 비해 사용 편의성에 초점을 맞춘 리눅스 배포판이다."라고 위키백과에서 설명하고 있습니다. 

 

간단하게 사용 편의성에 초점을 맞춘 데비안 리눅스를 기반으로 한 운영체제다 정도로 이해할 수 있습니다. 일반적으로 새 버젼이 6개월마다 공개되는데, 장기지원판이라고 LTS: Long Term Support은 2년에 한 번씩 출시되어 장기간 지원을 하고 있습니다.

 

우분투 LTS는 현재 20.04가 최신 버젼이고 2020년 4월에 업데이트되어 20.04라고 합니다. 저는 우분투 16.04 LTS를 사용하고 예시도 16.04를 기본으로 보여드리겠습니다.

 

아래는 우분투 16.04 운영체제 기본 터미널 화면입니다.

 

 

운영체제마다 명령어가 조금씩 다른데 이부분은 사용하다 보면 자주 사용하는 명령어가 보통 중복되기 때문에 금방 익숙해질 수 있습니다. (저는 아직 헤매는 중인데요 ㅠㅠ)

 

먼저 리눅스 배포판 LSB (Linux Standard Base) 버젼을 확인하기 위해 :~$ lsb_release -a 명령어를 실행합니다. 그럼 아래와 같이 사용하고 있는 운영체제의 정보를 알 수 있습니다. 저는 앞에서 언급했듯이 우분투 16.04 LTS를 사용하고 있습니다.

 


 

2. MySQL 설치

 

리눅스(우분투)에서 mysql을 설치하기 위해 

:~$ sudo apt-get install mysqp-server

명령어를 실행합니다.

 

그럼 아래와 같이 install이 실행되고, 중간에 mysql-server-core-5.7이라고 볼 수 있습니다. mysql 버전이 5.7인 것을 알 수 있습니다. 그리고 continue? 물음에 yes를 하면 본격적인 설치 진행이 됩니다. 대략 3~5분? 정도 진행하는 것 같습니다. 

 

설치가 완료되면 아래와 같이 "root" user의 비밀번호를 입력하라고 합니다. 사용할 비밀번호를 설정하는 부분이니 적절한 비밀번호를 입력해 주면 됩니다. 비밀번호를 입력하면 한 번 더 확인하고 설치가 마무리됩니다.

 

설치가 완료되면 이전 포스팅에서 터미널로 mysql을 실행하는 방법과 같은 명령어로 

:~$ mysql -u root -p

실행할 수 있습니다. mysql을 실행하면 앞서 설정했던 비밀번호를 입력하라는 메세지가 나오고 비밀번호를 입력하면 아래 화면과 같이 실행화면 mysql> 옆에 커서가 깜박이고 있는 것을 확인할 수 있습니다. 

 

이전 포스팅에서 window10의 명령 프롬프트에서 mysql을 실행하는 방법과 실행 후 화면이 같은 것을 확인할 수 있습니다. 그럼 데이터베이스(DB, Database)를 생성해 보겠습니다. 

 


 

3. 데이터베이스(Database) 생성하기

 

우선 현재 DB를 확인하기 위해 명령어 'show databases;'를 입력하면 

 

기존 생성되어 있는 Database들을 볼 수 있고, 기존 DB들은 어디에 사용되고 있는지 잘 모르니.. 그냥 건드리지 말고~ Test용 데이터베이스를 하나 만들어 보겠습니다.

 

Database 생성 명령어

> create database "DB이름";

을 아래와 같이 실행하면 됩니다. 여기서 "DB이름"을 저는 test로 명명하였습니다.

 

명령어를 실행하고 성공적으로 실행되었으면 Query OK란 메시지를 볼 수 있습니다.

 

그럼 실제로 'test' 데이터베이스가 생성되었는지 다시 show databases; 를 입력하면 아래와 같이 'test'가 새로 생성된 것을 확인할 수 있습니다.

 

 


 

4. Table 만들기

 

이어서 Table도 생성할 수 있습니다. 명령어는

>create table "table이름"

인데 여기에 데이터의 형태, 컬럼 제목, primary key 등을 사용자의 용도에 맞게 설정하는 항목이 추가로 들어가기 때문에 자세한 내용은 아래 링크 참조 부탁드립니다.

 

MySQL 시작하기: 데이터베이스(Database), 테이블(Table) 만들기

지난 포스팅에서 아두이노(Arduino) 프로젝트를 위한 서버(Sever) 구성 도구로 A.M.P (Apache, MySQL, PHP) 프로그램에 대해 알아보았습니다. 각 프로그램 역할과 설치방법에 대해 자세한 내용은 아래 링크

it-g-house.tistory.com

 


 

참고로 아래 자주 사용하는 MySQL 명령어를 표로 첨부해 두겠습니다.

 

  • MySQL 명령어
기능 명령어 사용예
시작하기  mysql -u 'ID' -p 'DB이름' mysql>mysql -u root -p (DB 최상위단으로 접속시)
DB 검색  show databases; mysql>show databases;
DB 만들기  create database 'DB이름'; mysql>create database Test;
DB 사용  use 'DB이름'; mysql>use Test;
Table 만들기  create table 'table이름'

 mysql>create table tempnhumi(

->temp float not null,

->humi float not null,

->primary key(temp)

->);

Table 검색  show tables; mysql>show tables;
Table 조회  select*from 'table이름'; mysql>select*from tempnhumi;
MySQL 종료 exit mysql>exit

 

 

 

 

 

반응형
반응형

 

 

 

안녕하세요 IT-G-House입니다. 오랜만에 인사드리네요~ 

그동안 새로운 환경에 적응하고 준비하느라 포스팅도 못하고 프로젝트 진행도 지지부진했습니다.. 혹시 글을 기다리셨다면.. 죄송합니다 ㅠㅠ

 

이번 포스팅은 아래와 같이 댓글로 '1234'님과 '최승예'님의 질문에 공통으로 답을 드릴 수 있을 것 같아 답변이 될만한 글을 준비하였습니다.

 

 


 

아두이노(Arduino)와 esp-01 와이파이 모듈(wifi module)을 이용하여 센서의 측정값을 DB (데이터베이스)에 저장하는 것은 앞선 포스팅을 통해 진행해 보셨을 겁니다. 앞선 단계가 필요하시면 아래 링크 참고 부탁드립니다.

 

아두이노 홈IoT 서버 활용 3: ESP8266(ESP-01) 이용하여 MySQL에 데이터 저장하는 프로그램 코딩

드디어 아두이노(Arduino) 홈IoT 서버 활용 세 번째 포스팅으로 아두이노에서 온습도 센서(Temperature and Humidity sensor)로 측정된 데이터를 Wifi(ESP-01: ESP8266) 모듈을 사용해서 MySQL (DB서버)에 저장하..

it-g-house.tistory.com

 

프로그램이 원활하게 작동하였으면 APMSetup의 MySQL을 통해 데이터도 저장되는 것을 확인할 수 있었고.. 오케이~ 그럼 저장된 데이터를 가공을 하든 출력을 하든 사용해야겠죠? 데이터를 사용하기 위해서 위에서 질문 주셨듯이 데이터를 가져오는 방법 또는 저장하는 방법, 엑셀로 여는 방법을 알아보겠습니다.

 

 

 

 

 


 

 

1. MySQL 콘솔 (Select 문)

 

먼저 MySQL 콘솔을 통해 DB의 table에 저장된 데이터를 불러오거나 파일로 저장하는 방법에 대해 알아보겠습니다. 앞서 진행하였듯이 저는 DB명은 'testdb'이고, table명은 'tempnhumi'입니다. 다들 각자 지정한 이름대로 진행 부탁드리며 MySQL에 대해 추가적인 내용은 아래 링크 참조 부탁드립니다.

 

MySQL 시작하기: 데이터베이스(Database), 테이블(Table) 만들기

지난 포스팅에서 아두이노(Arduino) 프로젝트를 위한 서버(Sever) 구성 도구로 A.M.P (Apache, MySQL, PHP) 프로그램에 대해 알아보았습니다. 각 프로그램 역할과 설치방법에 대해 자세한 내용은 아래 링크

it-g-house.tistory.com

MySQL 콘솔을 실행시킨뒤 아래와 같이 DB를 열고 table을 확인합니다.

 

 

그리고 'tempnhumi' table에 저장되어 있는 데이터를 select문을 통해 확인합니다.

데이터가 그렇게 많지는 않지만 중간에 생략하고 총 61 rows의 데이터가 저장되어 있습니다.

그럼 '*.txt' 파일로 저장해보겠습니다. 아래와 같이 'select*from' 다음에 'into oufile' 명령어를 통해 원하는 파일 경로에 원하는 파일명으로 저장할 수 있습니다. 저는 파일 경로는 D: 드라이브에 있는 'APM_Setup' 폴더에 'testdata.txt' 파일 이름으로 저장을 실행해보겠습니다.

 

MySQL 데이터 내보내기 (data export)

명령이 정상적으로 진행되었으면 OK 메세지가 나오고 아래와 같이 원하는 파일 경로 안에 txt 파일이 생성된 것을 확인할 수 있습니다.

 

생각보다 간단합니다. 파일을 열어보면 MySQL 콘솔에서 확인한 데이터를 볼 수 있고, 그대로 엑셀로 파일을 실행시켜도 데이터를 볼 수 있습니다.

 

MySQL 데이터 txt 파일로 저장
MySQL 데이터 txt, 엑셀 파일로 저장

 

  • MySQL 명령어
기능 명령어 사용예
시작하기  mysql -u 'ID' -p 'DB이름' mysql>mysql -u root -p (DB 최상위단으로 접속시)
DB 검색  show databases; mysql>show databases;
DB 만들기  create database 'DB이름'; mysql>create database Test;
DB 사용  use 'DB이름'; mysql>use Test;
Table 만들기  create table 'table이름'

 mysql>create table tempnhumi(

->temp float not null,

->humi float not null,

->primary key(temp)

->);

Table 검색  show tables; mysql>show tables;
Table 조회  select*from 'table이름'; mysql>select*from tempnhumi;
MySQL 종료 exit mysql>exit

 

 


 

 

 

 

 

2. MySQL 관리 (phpMyAdmin)

 

앞선 포스팅에서 APMSetup으로 좀 더 쉽게 홈 IoT(사물인터넷)을 위한 서버를 구축할 수 있었습니다. APMSetup 설치 및 동작에 대한 내용은 아래 링크 참조 부탁드립니다.

 

Arduino 아두이노 홈 IoT(사물인터넷)을 위한 서버(Sever) 쉽게 만들기: APMSetup 프로그램

아두이노(Arduino)를 사용해서 홈 IoT(사물인터넷)을 구축하는 프로젝트를 위해서는 인터넷을 통한 데이터 전송이 기본적으로 가능해야 합니다. 인터넷을 사용하여 웹을 통해 데이터를 송수신하��

it-g-house.tistory.com

'MySQL 관리' 실행을 통해 phpMyAdmin에 접속하면 아래와 같이 UI를 통해 MySQL의 데이터베이스와 그에 속한 테이블을 카테고리 형태로 확인할 수 있습니다. 여기서 상단 메뉴바에서 '내보내기'를 클릭하면 MySQL 콘솔에서 실행하였듯이 원하는 파일 형태로 데이터를 가져올 수 있습니다.

 

phpMyAdmin 데이터베이스 및 테이블 

상단의 '내보내기'를 클릭하면 아래와 같이 CSV 또는 엑셀, txt, PDF로 까지 데이터를 파일로 저장할 수 있습니다. 원하는 파일 형태를 선택하고 아래에 있는 파일로 저장을 클릭 후 실행을 하면 테이블 이름의 파일이 생성됩니다.

 

phpMyAdmin 데이터 내보내기
phpMyAdmin 데이터 파일로 저장

제가 설정한 테이블명인 tempnhumi이름의 txt 파일이 생성되는 것을 확인할 수 있습니다. 엑셀로 선택하면 '*.xls' 파일, CSV로 선택하면 '*.csv' 형태로 파일이 생성됩니다.

 


 

여기까지 아두이노(Arduino)를 이용하여 측정한 센서 data를 eps-01 와이파이 모듈(wifi module)을 통해 서버 DB에 저장한 데이터를 MySQL을 이용하여 다시 불러오는 방법에 대해 알아보았습니다.

 

'1234'님과 '최승예'님 질문에 답이 되었는지 모르겠네요^^

 

오늘도 긴 글 읽어주셔서 감사합니다. 궁금한 부분 또는 보충해주실 내용 있으면 언제든지 댓글로 남겨주세요~

 

 

 

 

반응형
반응형

드디어 아두이노(Arduino) 홈IoT 서버 활용 세 번째 포스팅으로 아두이노에서 온습도 센서(Temperature and Humidity sensor)로 측정된 데이터를 Wifi(ESP-01: ESP8266) 모듈을 사용해서 MySQL (DB서버)에 저장하는 내용이 되겠습니다. 다들 아시겠만 서버를 만든 궁극적인 목적은 아두이노를 이용하여 홈IoT를 구축하는 것이고 그 과정 중 가장 핵심이 될 것 같습니다.

 

A.P.M (Apache, PMP, MySQL)으로 만든 서버를 홈IoT를 위해 사용하려면 센서에서 측정된 데이터가 DB서버에 수집이 되어야 하고 이는 무선 통신으로 이루어져야 IoT 구축의 의미가 있습니다. 그래서 우선 가장 기본적인 온습도 센서를 활용하여 Wifi를 통해 데이터를 송신하여 MySQL의 데이터테이블(Datatable)에 저장되는 방법에 대해 알아보겠습니다.

 

우선 온습도 센서 사용법과 Wifi를 사용하기 위해 ESP-01(ESP8266) 모듈 사용법을 알고 있어야 하고, APM 서버가 구축이 사전에 진행되어야 합니다. 혹시 준비가 필요하시면 내용이 정리된 포스팅을 링크 걸어두니 참조 하셔서 3가지 모두 준비된 상태에서 계속 진행 부탁드립니다.

 

아두이노(Arduino) 홈 IoT 입문 - 온습도 센서(DHT11) 사용하기

아두이노(Arduino)를 사용한 홈 IoT (사물인터넷)의 가장 기본은 각 종 센서를 동작시키고 센싱 값을 읽는 것이라고 할 수 있습니다. 구상하는 대부분의 프로젝트는 어떤 조건이 만족하면 원하는 명령들을 수행하..

it-g-house.tistory.com

 

아두이노(Arduino) 인터넷 하기 - Wifi (ESP-01: ESP8266)연결하는 방법

아두이노(Arduino)로 인터넷을 연결하는 방법은 랜선(LAN)을 연결하는 방법인 이더넷 모듈(Ethernet module)을 사용하는 방법, Wifi를 연결하는 방법, 3G/LTE를 연결하는 방법이 있습니다. 지난 포스팅까지 주로..

it-g-house.tistory.com

 

Arduino 아두이노 홈 IoT(사물인터넷)을 위한 서버(Sever) 쉽게 만들기: APMSetup 프로그램

아두이노(Arduino)를 사용해서 홈 IoT(사물인터넷)을 구축하는 프로젝트를 위해서는 인터넷을 통한 데이터 전송이 기본적으로 가능해야 합니다. 인터넷을 사용하여 웹을 통해 데이터를 송수신하려면 웹서버(Web se..

it-g-house.tistory.com


준비가 다 되셨으면 진행해보겠습니다. 다음 순서로 진행하겠습니다.

1. ESP-01 모듈 및 온습도 센서 연결

2. 프로그램 코딩

3. 데이터 전송 확인

 

1. ESP-01 모듈 및 온습도 센서 연결

 

ESP-01(ESP8266) 모듈은 기존대로 연결하고 온습도 센서(DHT11) 모듈의 Data output pin을 아두이노 pin 4번과 연결합니다. 그리고 DHT11은 구동 전압이 3~5V로 3.3V로 구동 가능하기 때문에 VCC pin과 GND pin은 아두이노의 3.3V Pin 및 GND pin에 각각 연결합니다. 미리 양해 부탁드렸지만 각각 모듈의 자세한 내용과 사용방법은 앞서 링크드린 포스팅에서 참조 부탁드립니다. 

 

아두이노(Arduino)와 Wifi (ESP-01: ESP8266)모듈 및 온습도 센서(DHT11) 모듈 연결하기

 


 

 

2. 프로그램 코딩

 

스케치를 통해 프로그램을 코딩합니다. 프로그램 로직(logic) 순서는 void setup전에 Wifi 접속 명령어 'connetWifi()'데이터를 전송하는 명령어 'httpclient()', 온습도 센서(DHT11)를 설정합니다. 그리고 void setup에서 AT command를 통해 Wifi에 접속하고 void loop에서 온습도를 측정한 후 AT command를 통해 사전에 만들어둔 process.php 프로그램을 통해 MySQL에 온습도 데이터를 저장하는 순서로 이루어집니다.

 

프로그램 코딩 내용은 바로 앞 포스팅인 "아두이노 홈IoT 서버 활용2"에서 사용했던 명령어들과 방법을 기반으로 하고 있습니다. 코딩이 어려우신 분들은 반드시 앞의 포스팅을 참조 부탁드립니다.

 

#include <dht.h>
#include <SoftwareSerial.h>

dht DHT;

#define DHT11_PIN 4

float humi;  //Stores humidity value
float temp; //Stores temperature value

SoftwareSerial mySerial(2,3); //RX,TX

String ssid = "WIFI 아이디";
String PASSWORD = "비밀번호";
String host = "내 컴퓨터 아이피";

void connectWifi(){

  String join ="AT+CWJAP=\""+ssid+"\",\""+PASSWORD+"\"";
      
  Serial.println("Connect Wifi...");
  mySerial.println(join);
  delay(10000);
  if(mySerial.find("OK"))
  {
    Serial.print("WIFI connect\n");
  }else
  {
   Serial.println("connect timeout\n");
  }
  delay(1000);
  }
  
void httpclient(String char_input){
  delay(100);
  Serial.println("connect TCP...");
  mySerial.println("AT+CIPSTART=\"TCP\",\""+host+"\",8787");
  delay(500);
  if(Serial.find("ERROR")) return;
  
  Serial.println("Send data...");
  String url=char_input;
  String cmd="GET /process.php?temp="+url+" HTTP/1.0\r\n\r\n";
  mySerial.print("AT+CIPSEND=");
  mySerial.println(cmd.length());
  Serial.print("AT+CIPSEND=");
  Serial.println(cmd.length());
  if(mySerial.find(">"))
  {
    Serial.print(">");
  }else
  {
    mySerial.println("AT+CIPCLOSE");
    Serial.println("connect timeout");
    delay(1000);
    return;
  }
  delay(500);
       
  mySerial.println(cmd);
  Serial.println(cmd);
  delay(100);
  if(Serial.find("ERROR")) return;
  mySerial.println("AT+CIPCLOSE");
  delay(100);
  }  


void setup() {

  Serial.begin(9600);
  mySerial.begin(9600);

  connectWifi();
  delay(500);
}

void loop() {
  DHT.read11(DHT11_PIN);
  
  humi = DHT.humidity;
  temp = DHT.temperature; 
  String str_output = String(temp)+"&humi="+String(humi);
  delay(1000);
  httpclient(str_output);
  delay(1000);
   
   //Serial.find("+IPD");
   while (mySerial.available())
   {
    char response = mySerial.read();
    Serial.write(response);
    if(response=='\r') Serial.print('\n');
    }
   Serial.println("\n==================================\n");
   delay(2000);
}

 


 

 

3. 데이터 전송 확인

 

우선 시리얼모니터(Serial Monitor)를 실행하여 프로그램이 정상적으로 동작하는지 확인합니다. 프로그램 코딩 시 출력 명령을 내린 문자가 아래와 같이 나오는지 확인할 수 있습니다. 프로그램 코딩에서도 알 수 있었듯이 AT Command로 먼저 Wifi를 접속 후 AT_CIPSEND 명령어를 통해 이전 포스팅에서 실행했던 거와 동일하게 process.php 프로그램을 통해 temp=30.5, humi=41.1로 전송하는 것을 확인할 수 있습니다. 그리고 반복으로 다음 측정 데이터인 temp=31.2, humi=40.1을 또 전송합니다. 이렇게 측정하고 송신하기를 계속 반복하여 동작합니다.

 

 

그럼 MySQL에 접속하여 데이터가 저장되었는지 확인해 보겠습니다. 앞서 APMSetup으로 웹서버와 DB서버 구성할 때 만들었던 데이터베이스 tempnhumi 안의 테이블에 측정된 데이터가 지속적으로 저장되는 것을 확인할 수 있습니다. 저는 여러 번 시험하느라 앞에 많은 데이터가 있는데요 ㅎㅎ 시리얼 모니터에서 확인한 온습도 데이터 temp=30.5, humi=41.1와 다음 측정 데이터 temp=31.2, humi=40.1가 네모 박스로 표시한 곳에 순서대로 저장된 것을 확인할 수 있습니다. 와~~ 우!! 놀랍죠? (제가 너무 놀라워서 ㅎㅎ) 그 뒤로도 계속 데이터가 들어오고 있습니다.

 


여기까지 아두이노(Arduino) 홈IoT 서버 활용으로 온습도 센서(Temperature and Humidity sensor)로 측정한 데이터를 DB서버 MySQL에 전송하여 저장하는 방법을 알아보았습니다.

 

이제 모든 것이 준비되었습니다 ㅎㅎ 이때까지 알아본 것들을 활용하여 집안의 온도나 습도에 따라 선풍기나 가습기를 동작되게 하거나 집의 밝기에 따라 전등을 켜거나 이런 식으로 집안의 각종 환경 상태에 따라 가전기기들을 동작할 수 있는 홈IoT를 구축할 수 있습니다. 이 모든 것은 사용하는 센서들이 달라지거나 프로그램들이 조금 더 스마트하게 복잡할 뿐 기본은 앞서 알아본 내용들을 기반으로 합니다.

 

다음 포스팅부터는 조금 더 단계를 넘어가서 활용하는 내용을 다뤄보겠습니다. 오늘도 긴 글 읽어 주셔서 감사합니다 ^^ 

 

 

 

반응형
반응형

 

 

 

아두이노(Arduino)를 이용한 홈 IoT를 구축하는 프로젝트의 진행과정으로 웹서버(Web sever)와 데이터베이스(Database, DB)를 구성하였습니다. 이어서 지난 포스팅에서는 웹브라우저를 통해서 DB서버(MySQL)의 데이터베이스에 (온습도) 데이터도 저장해보았습니다. 오늘은 웹브라우저를 통하지 않고 ESP-01(ESP8266) Wifi 모듈을 사용해서 온라인으로 DB서버에 데이터를 보내는 방법을 알아보겠습니다. 지난 포스팅과 이어지기 때문에 "Arduino 아두이노 홈IoT 서버 활용: 온습도 데이터 DB서버(MySQL)에 저장하기" (아래 링크)를 참조하셔서 process.php 파일을 생성 후 진행하셔야 합니다.

 

Arduino 아두이노 홈IoT 서버 활용: 온습도 데이터 DB서버(MySQL)에 저장하기

아두이노(Arduino)를 이용한 홈 IoT(사물인터넷) 구축을 위해 웹서버(Web sever) 및 데이터베이스(Database, DB) 서버를 구성하는 방법을 지난 포스팅을 통해 알아보았습니다. 웹서버를 구성하는 도구로 AMP (Apac..

it-g-house.tistory.com


진행 전에 아래 항목을 확인 부탁드립니다.

 

- APMSetup 프로그램 설치를 통한 AMP(Apache, MySQL, PHP) 서버 구성

- APMSetup 설치 하위 폴더 htdocs 폴더에 process.php 파일 확인 (PHP 프로그램: 아래 코드블록 참조)

- MySQL 데이터베이스 이름: testdb, 테이블 이름: tempnhumi, 각 칼럼(column) 이름: temp, humi

- esp-01 AT command 정상 동작 확인 및 Wifi 접속 (아래 링크 내용 참조)

 

아두이노(Arduino) 인터넷 하기 - Wifi (ESP-01)연결하는 방법

아두이노(Arduino)로 인터넷을 연결하는 방법은 랜선(LAN)을 연결하는 방법인 이더넷 모듈(Ethernet module)을 사용하는 방법, Wifi를 연결하는 방법, 3G/LTE를 연결하는 방법이 있습니다. 지난 포스팅까지 주로..

it-g-house.tistory.com

<?php
header("Content-Type: text/html;charset=UTF-8");
 
$host = 'localhost';
$user = 'root';
$pw = 'apmsetup';
$dbName = 'testdb';
$mysqli = new mysqli($host, $user, $pw, $dbName);
 
    if($mysqli){
	echo "MySQL successfully connected!<br/>";

	$temp = $_GET['temp'];
	$humi = $_GET['humi'];
	
	echo "<br/>Temperature = $temp";
	echo ", ";
	echo "Humidity = $humi<br/>";
	
	$query = "INSERT INTO tempnhumi (temp, humi) VALUES ('$temp','$humi')";
	mysqli_query($mysqli,$query);

	echo "</br>success!!";
    }

    else{
	echo "MySQL could not be connected";
    }

mysqli_close($mysqli);
?>

 

 

 

모든 진행은 앞의 확인사항이 모두 정상적으로 구성 되었다는 가정하에 아래 순서와 같이 진행하도록 하겠습니다.  

 

1. 포트포워딩 설정: 외부 통신(Wifi)을 통한 웹서버(Apache: 내 컴퓨터)로 접속이기 때문에 접근할 수 있는 포트 설정

2. 아두이노의 시리얼 모니터(Serial Monitor)를 통한 웹서버 접속

3. AT command를 통한 data 송신

4. MySQL 접속 후 데이터 확인

 

1. 포트포워딩 설정

 

아두이노의 ESP-01 모듈을 사용하여 Wifi를 통해 웹서버에 접속하기 때문에 외부 통신으로 내 컴퓨터의 웹서버에 접근하는 상황입니다. 이런 경우 접근할 수 있는 포트를 설정해야 하는데 이것을 '포트포워딩'이라고 합니다. 조금 더 상세히 설명드리고 싶으나.. 어설픈 설명보다 포트포워딩에 관해 정리를 잘하신 분의 포스팅을 아래 링크하니 참조 부탁드립니다.

 

공유기 포트포워딩 설정하기

지난번 포스팅을 통해 OctoPrint 세팅 과정을 공유드렸습니다.​지난번 포스팅에서는 OctoPrint 가 설...

blog.naver.com

그럼 포트포워딩의 이해가 어느 정도 됐으면 설정을 진행해 보겠습니다. 저희 집 공유기는 "tp-link"입니다. 웹브라우저 주소창에 '192.168.0.1'을 입력하면 공유기 설정이 가능하고 왼편 메뉴에서 '포워딩'을 클릭하면 아래와 같이 가상 서버를 설정할 수 있습니다. 여기서 서비스 포트에 사용하고 싶은 포트번호를 설정하면 됩니다. (4~5자리로 설정하시면 됩니다.) 저는 8787로 지정하였고, IP주소는 서버가 구성되어 있는 컴퓨터의 공유기 내부 IP주소를 입력하시면 됩니다.

 

아두이노(Arduino) ESP-01 모듈을 사용한 웹서버 접속: 포트포워딩 설정

 

다른 공유기를 사용하셔도 대부분 설정방법이 비슷하기 때문에 쉽게 설정하실 수 있습니다. 좀 더 자세한 이해를 위해서는 위에 링크를 참조 부탁드립니다. 정상적으로 포트포워딩이 설정되었으면 웹브라우저 주소창에서 "내 아이피:설정 포트"를 접속하면 이전에 APMSetup 설치 후 http://localhost로 확인한 화면과 동일한 화면이 출력됩니다. 이제 외부에서 내 아이피로 접속이 허용되는 상황입니다. (내 아이피 확인은 네이버에서 '내 아이피 주소 확인'이라고 검색하면 바로 나옵니다. ^^)

 

포트포워딩 후 웹서버 접속 확인

 

2. 아두이노 시리얼모니터(Serial Monitor)를 통한 웹서버 접속

 

다음은 시리얼 모니터를 통해 열려있는 포트로 웹서버에 접속을 진행하겠습니다. 우선 시리얼 모니터를 통해 와이파이까지 접속합니다. 그리고 AT+CIPSTART="TCP, "내 아이피 주소", 설정 포트(8787) 명령어로 웹서버에 접속합니다. 실행화면은 아래 그림 참조 부탁드립니다.

 

아두이노(Arduino) ESP8266(ESP-01) 모듈로 시리얼 모니터를 통한 웹서버 접속

 

"CONNECT OK"라고 응답이 나오면 정상적으로 접속에 성공하였습니다.

 

3. AT command를 통한 data 송신

 

이제 process.php 프로그램을 통해 GET 방식으로 temp와 humi 값을 전송해 보겠습니다. 웹서버로 메시지를 보내기 위해 AT+CIPSEND 명령어를 사용합니다. 명령어 실행 후 GET /process.php?temp=20.7&humi=55.6 HTTP/1.0이라고 메시지를 보낼 겁니다. (temp=20.7, humi=55.6이라고 임의로 정하였습니다.) AT+CIPSEND 명령어는 보내고자 하는 text 수에 맞게 숫자를 설정해야 합니다. 그래서 명령어를 AT+CIPSEND=49라고 실행해야 합니다. 그럼 "OK" 응답이 나오면서 '>' 이렇게 메시지를 입력할 수 있습니다. 그럼 GET /process.php?temp=20.7&humi=55.6 HTTP/1.0 입력하고 엔터(Enter)를 한번 더 눌러줍니다.

 

아두이노(Arduino) ESP8266(ESP-01) 모듈로 시리얼 모니터를 통한 DB서버(MySQL)에 데이터 전송

 

메시지가 전송되면 "SEND OK" 응답은 무조건 나옵니다. 이 응답 말고 그 아래 '+IPD, 243:HTTP/1.1 200OK'란 응답이 와야 데이터가 정상적으로 전송된 겁니다. 그리고 맨 아래 줄의 응답 메시지를 보면 웹브라우저로 데이터를 DB서버로 보낼 때 (process.php 프로그램에서 설정된) 나왔던 응답 메시지와 동일하게 나온 것을 확인할 수 있습니다. ㅎㅎ

 

4. MySQL 접속 후 데이터 확인

 

그럼 MySQL에 접속하여 데이터가 저장되었는지 확인해 보겠습니다. 앞서 APMSetup으로 웹서버와 DB서버 구성할 때 만들었던 데이터베이스 tempnhumi 안의 테이블에 temp=20.7, humi=55.6이라고 저장된 것을 확인할 수 있습니다. 저는 여러 번 시험하느라 앞에 많은 데이터가 있는데요 ㅎㅎ 마지막에 데이터가 들어온 것을 확인하였습니다.

 

아두이노 ESP-01(ESP8266)을 사용해서 DB서버(MySQL)에 전송한 데이터 확인

 

 

 


여기까지 아두이노(Arduino)로 ESP-01(ESP8266) Wifi 모듈을 사용해서 온라인으로 DB서버(MySQL)에 데이터를 보내는 방법을 알아보았습니다.

 

이제 모든 준비가 되었습니다. 여기까지 모두 정상적으로 진행하셨으면 온습도 센서(Temperature and Humidity sensor)에서 측정된 데이터를 ESP-01(ESP8266) Wifi 모듈을 통해서 온라인으로 DB서버(MySQL)에 저장하는 방법을 다 배웠습니다. 

 

이 모든 것을 아두이노에서 실행이 되도록 스케치로 프로그램 코딩만 잘하면 됩니다. ㅎㅎ 다음 포스팅에는 코딩방법에 대해 알아보도록 하겠습니다.

 

긴 글 읽어주셔서 감사합니다. 궁금하신 부분이나 추가로 필요한 내용 있으면 언제든지 댓글로 남겨주세요 ^^ 

 

 

 

 

반응형
반응형

 

 

 

아두이노(Arduino)를 이용한 홈 IoT(사물인터넷) 구축을 위해 웹서버(Web sever) 및 데이터베이스(Database, DB) 서버를 구성하는 방법을 지난 포스팅을 통해 알아보았습니다. 웹서버를 구성하는 도구로 AMP (Apache, MYSQL, PHP)를 알아보았고 이를 각각 사용하는 방법 또는 한번에 통합으로 설치하는 APMSetup 프로그램도 확인하였습니다. 이제 서버구성을 어느 정도 완료하였으니 아두이노의 센서에서 측정된 데이터가 DB서버에 저장되는지 확인이 필요합니다.

 

그래서 오늘은 웹브라우저를 통해서 데이터를 DB서버인 MySQL에 송신하여 저장하는 방법을 알아보고 정상적으로 MySQL에서 수신하여 저장되는지 확인해 보겠습니다. 진행에 앞서 서버 구성이 되지 않으신 분은 아래 서버 구성 방법에 대한 링크 참조 부탁드립니다. ^^

 

Arduino 아두이노 홈 IoT(사물인터넷)을 위한 서버(Sever) 쉽게 만들기: APMSetup 프로그램

아두이노(Arduino)를 사용해서 홈 IoT(사물인터넷)을 구축하는 프로젝트를 위해서는 인터넷을 통한 데이터 전송이 기본적으로 가능해야 합니다. 인터넷을 사용하여 웹을 통해 데이터를 송수신하려면 웹서버(Web se..

it-g-house.tistory.com


이번 포스팅은 아두이노의 센서에서 측정된 데이터를 DB서버인 MySQL로 데이터를 저장하기 위한 사전단계로 웹브라우저를 이용하여 입력된 데이터가 MySQL로 정상적으로 송수신되는지 확인하는 작업입니다. 따라서 아두이노는 잠깐 옆으로 밀어놓고 PHP 프로그램 코딩을 먼저 진행해 보겠습니다.

 

작업순서는 우선 PHP로 웹브라우저에 온도(Temperature)와 습도(Humidity)를 입력할 수 있는 창을 만드는 프로그램 코딩을 먼저하고, 임의의 숫자 데이터를 입력하면 아파치(Apache)로 구성된 웹서버를 통해 MySQL로 만들어진 DB서버의 테이블(Table)로 보내서 저장하는 프로그램을 역시 PHP로 만들 겁니다. 두 개의 PHP 파일을 만드는 거죠 ㅎㅎ

 

1. 데이터 입력 웹브라우저 프로그램

 

먼저 데이터를 입력할 수 있는 웹브라우저를 먼저 만들어보겠습니다. 메모장 또는 코딩 프로그램을 열어서 아래 코드블럭과 같이 코딩하고 파일명을 임의로 정하시고 *.php 확장자로 저장합니다. 메모장으로 작성하실 때는 지난번에도 설명드렸듯이 저장할 때 파일 형식을 모든 파일로, 인코딩은 UTF-8로 설정하고 저장하셔야 확장자가 php로 됩니다. 

 

아두이노 APM 웹서버 활용: 데이터 입력 웹브라우저 만들기

 

저는 파일명을 'input.php'로 저장하였습니다. 저장경로는 D:\APM_Setup\htdocs로 저는 APMSetup 프로그램을 통해 D 드라이버에 설치하였고 그 하위 폴더인 htdocs 폴더에 input.php 파일이 있어야 정상적으로 작동합니다.

 

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8"/>
    </head>   
    <body>
        <form action="process.php" method="get">
            <p>Temperature : <input type="text" name="temp"></p>
            <p>Humidity : <input type="text" name="humi"></p>
            <p><input type="submit" /></p>            
        </form>
    </body>
</html>

 

프로그램을 간단히 설명하면 전체 구성은 html(웹브라우저 프로그래밍 언어)로 작성되었고, 중간에 <body></body> 사이의 내용이 주된 내용입니다. 한 줄씩 아주 단순하게 보면

  • //<form action="process.php" method="get"> : 데이터 입력하고 제출되면 "process.php" 프로그램이 실행되고,  "get" 방식을 사용한다는 뜻입니다. 
  • //Temperature : <input type="text" name="temp">: Temperature를 "text" 형태로 입력할 수 있는 창을 만들고 입력된 데이터는 "temp"변수에 저장한다는 뜻입니다.
  • //Humidity : <input type="text" name="humi">: Humidity를 "text" 형태로 입력할 수 있는 창을 만들고 입력된 데이터는 "humi" 변수에 저장한다는 뜻입니다.
  • //<input type="submit"/> 입력된 데이터를 제출하는 버튼을 만듭니다.

저장 완료 후에 웹브라우저(저는 크롬을 사용)에서 http://localhost/input.php라고 입력하면 아래와 같이 Temperature와 Humidify를 입력할 수 있는 창이 만들어진 것을 확인할 수 있습니다.

 

아두이노 APM 웹서버 활용: 데이터 입력 웹브라우저 확인

 

 

 

2. 입력된 데이터를 MySQL에 저장하는 프로그램

 

앞서 만든 데이터 입력 웹브라우저에 Temperature와 Humidity를 입력하고 제출 버튼을 누르면 그 데이터를 MySQL로 저장하는 프로그램을 아래 코드 블록과 같이 코딩합니다. 역시 메모장이나 코딩 프로그램으로 작성하고 확장자를 php 파일로 저장하여 APMSetup 설치 폴더의 하위 폴더 htdocs 폴더에 저장합니다.

 

저장 파일명은 반드시 process.php로 하셔야 하는데 앞서 input.php 코딩 시 process.php를 다른 이름으로 임으로 정하셨으면 그 바꿔주신 파일명과 동일해야 합니다.

 

<?php
header("Content-Type: text/html;charset=UTF-8");
 
$host = 'localhost';
$user = 'root';
$pw = 'apmsetup';
$dbName = 'testdb';
$mysqli = new mysqli($host, $user, $pw, $dbName);
 
    if($mysqli){
	echo "MySQL successfully connected!<br/>";

	$temp = $_GET['temp'];
	$humi = $_GET['humi'];
	
	echo "<br/>Temperature = $temp";
	echo ", ";
	echo "Humidity = $humi<br/>";
	
	$query = "INSERT INTO tempnhumi (temp, humi) VALUES ('$temp','$humi')";
	mysqli_query($mysqli,$query);

	echo "</br>success!!";
    }

    else{
	echo "MySQL could not be connected";
    }

mysqli_close($mysqli);
?>

 

코딩하실 때 반드시 확인하실 점은 코드 첫 문단이 MySQL접속과 관련됩니다. 여기서 MySQL의 user명과 비밀번호, 데이터베이스 이름을 각자 설정한 대로 수정하셔서 사용하셔야 합니다. 

 

MySQL 접속 아이디, 비밀번호, 데이터베이스 이름 입력

그리고 $query 설정에서 데이터를 저장할 테이블 이름도 본인이 만든 테이블명과 각 칼럼(Column) 이름을 맞춰야 합니다. 아래 코드에서 저는 테이블 명이 'tempnhumi'이고 각 칼럼의 이름이 'temp', 'humi'라고 만들었기 때문에 아래와 같이 작성하였습니다. 코드 설명은 직관적으로 tempnhumi 테이블의 temp, humi 칼럼에 변수(VALUES) 값 $temp, $humi를 각각 저장해라("INSERT INTO")라는 내용이 됩니다.

 

PHP코드: MySQL의 데이터베이스 테이블에 데이터 저장하기

 

 

 

파일을 저장 후 다시 웹브라우저에서  http://localhost/input.php을 주소창으로 실행 후 Temperature와 Humidity에 실수 범위의 숫자를 입력하고 (저는 임의 온도는 25.1, 습도는 55.3으로 입력하였습니다.) 제출을 누르면 "MySQL successfully connected!"라고 MySQL 접속을 성공적으로 하고, Temperature와 Humidity 값을 제가 입력한 값인 25.1, 55.3으로 각각 확인할 수 있습니다. 그리고 최종적으로 "success!!"라고 출력되면 정상적으로 진행이 완료된 것입니다.

 

웹브라우저를 통한 DB서버(MySQL)에 데이터 보내기 
웹브라우저를 통한 DB서버(MySQL)에 데이터 저장히기

 

주소창을 보면 'localhost/process.php?temp=25.1&humi=55.3'이라고 input.php 프로그램에서 코딩하였듯이 데이터가 제출되면 자동으로 process.php가 실행되어 온습도 값이 MySQL에 저장되는 과정을 나타냅니다. 

 

그럼 데이터가 정말 저장되었는지 확인해 보겠습니다. MySQL 관리를 실행하여 phpMyAdmin을 통해 데이터 베이스의 테이블에서 확인 가능합니다.

 

지난번 'Arduino 아두이노 홈 IoT(사물인터넷)을 위한 서버(Sever) 쉽게 만들기: APMSetup 프로그램 (https://it-g-house.tistory.com/entry/AMPSetup)' 포스팅에서 만든 데이터베이스 'testdb'의 테이블 'tempnhumi'에서 온도는 25.1, 습도는 55.3으로 데이터가 저장되어 있는 것을 확인할 수 있습니다.

 

웹브라우저를 통한 DB서버(MySQL)에 데이터 저장히기: 테이블 확인

 

와~우!! 신기하죠? ㅎㅎ 전 너무너무 신기해서 몇 번씩 계속 저장해봐서 저렇게 데이터가 많이 쌓였습니다. ^^ PHP 코드에 관해서는 추후에 자세히 정리해 보도록 하겠습니다.


여기까지 웹브라우저를 통해 온습도(Temperature and Humidity) 데이터를 MySQL의 데이터베이스(Database, DB) 서버에 저장하는 방법을 알아보았습니다. 앞서 얘기했듯이 오늘 포스팅은 아두이노(Arduino)의 DHT11 온습도 센서로 측정된 데이터를 MySQL에 저장하기 위한 사전 작업으로 다음 포스팅에서는 측정된 데이터를 MySQL에 연동하는 방법을 알아보도록 하겠습니다.

 

오늘도 긴 글 읽어주셔서 감사합니다. 

 

 

 

 

반응형
반응형

 

 

 

아두이노(Arduino)를 사용해서 홈 IoT(사물인터넷)을 구축하는 프로젝트를 위해서는 인터넷을 통한 데이터 전송이 기본적으로 가능해야 합니다. 인터넷을 사용하여 웹을 통해 데이터를 송수신하려면 웹서버(Web sever)가 필요하고, 지난 포스팅에서는 웹서버를 구축하는 방법으로 가장 많이 알려진 A.M.P(Apache, MySQL, PHP) 프로그램 설치 방법과 연동하는 방법에 대해서 알아보았습니다. 

 

아두이노(Arduino) 홈 IoT(사물인터넷)을 위한 서버(Sever) 구성 1: Apache 아파치 설치방법

그동안 아두이노와 센서의 기본적인 동작법 및 프로그램 코딩은 어느 정도 익숙해졌을 겁니다. 이제 본격적인 프로젝트를 진행하기 전에 인터넷을 통해 데이터 및 신호를 주고받을 수 있어야 아두이노를 원하는 로..

it-g-house.tistory.com

여기서 Apache로 웹서버를 만들어 데이터를 수신하고, 받은 데이터를 데이터베이스 서버(DataBase server), DB서버에 쌓아놓고 필요할 때 출력하거나 가공할 수 있는 데이터베이스 프로그램이 MySQL, 그리고 프로그램 언어 PHP (Professional HyperText Preprocessor) 소프트웨어를 통해 Apache와 MySQL과 연동하여 코딩을 할 수 있습니다.

 

'아두이노(Arduino) 홈 IoT(사물인터넷)을 위한 서버(Sever) 구성 1: Apache 아파치 설치방법'을 시작으로 MySQL, PHP 프로그램 각각을 설치하니 너무 복잡하고 어렵고, 문제가 발생하면 문제 해결에도 많은 난항을 경험하셨을 겁니다... (컴퓨터 던져 버릴 뻔한 적이 많죠...ㅠㅠ 마우스는 이미..) 그래서!! 역시 쉽게 편하게를 추구하는 저는!! 또 찾았습니다 ㅎㅎ 패키지 프로그램이 있다는 사실을요!!! 와~~ 씨!! 진작에 좀 알려주지!! 정말 죄송합니다... 그래서 앞서 사용했던 Apach와 MySQL, PHP를 한방에! 설치와 연동까지! 해주는 프로그램 'APMSetup'!! 사용방법에 대해서 알아보겠습니다.

 

아두이노(Arduino)로 인터넷(Internet)을 이용한 데이터를 송수신하기 위한 서버(Sever)구성

 


 

  • APMSetup 프로그램 설치

APMSetup 프로그램은 http://kldp.net/apmsetup/release/에서 다운로드할 수 있습니다. 'APMSETUP7' 설치 파일 다운로드하여 설치를 진행합니다.

 

웹페이지 http://kldp.net/apmsetup/release/ 다운로드 화면

 

기본적인 프로그램 설치와 같이 동의할 거 동의하고 '다음'을 누르면 구성요소 선택이 나옵니다. 그럼 설정되어 있는 그대로 '다음'으로 진행하면 됩니다. 설치에 필요한 디스크 공간은 116.8MB로 꽤 커서 저는 D드라이브에 설치를 진행하였습니다.

 

APMSetup 설치 화면
APMSetup 설치 폴더 지정
APMSetup 설치 진행
APMSetup 설치 액서스 허용

설치를 진행하다 보면 Apache 프로그램 액세스 허용 여부가 나오는데 액세스 허용으로 계속 진행합니다. 설치가 완료되면 APMSETUP Monitor 바로가기 아이콘이 생깁니다.

 

APMSETUP Monitor 실행 아이콘

프로그램을 실행하면 공지 창이 뜨고 업데이트를 진행하라고 창이 또 뜰겁니다... 업데이트는 어차피 진행이 안되고 공지 내용도 아무 내용이 없어서 그냥 무시하면 되는데 실행할 때마다 창이 뜨는 걸 방지하기 위해 '서버 환경설정'에서 '자동 업데이트 사용''APMSETUP NOTICE 표시'의 체크를 지우면 더 이상 창이 뜨지 않을 겁니다.

 

APMSetup Monitor 메뉴
APMSetup Monitor 환경설정

모니터 보기를 하면 아래와 같이 'Apache2: 정상 동작중, MySQL 5: 정상 동작중'이라고 표시되어 있는 창을 볼 수 있습니다. 

 

그럼 이전 포스팅에서 Apache 단독 설치 때 확인하였듯이 'http://localhost' 또는 '127.0.0.1' 주소로 정상 작동 중인지 확인해 보겠습니다. 웹브라우저에서 'http://localhost' 입력해주면 "APMSETUP이 정상적으로 설치 되었습니다." 라고 확인할 수 있습니다. PHP info 도 바로 확인 가능합니다!! PHP와 Apache 연동을 위해 이런저런 설정을 바꿔주던걸 하지 않아도 됩니다 ㅠㅠ 역시 단독으로 설치해서 서로 연동하는 거보다 훨~씬 편하네요 ^^

 

APMSETUP 설치 후 PHP info 확인

 

 

  • MySQL 데이터베이스(Database), 테이블(Table) 만들기

APMSETUP 설치가 완료되었으니 MySQL을 통해 데이터베이스와 테이블을 만들어 보겠습니다. 지난 포스팅에서는 명령 프롬프트(MySQL 콘솔)를 통해 명령어를 직접 입력하면서 데이터베이스와 테이블을 만들었습니다. 관련 내용은 아래 링크 참조 부탁드립니다. 

 

MySQL 시작하기: 데이터베이스(Database), 테이블(Table) 만들기

지난 포스팅에서 아두이노(Arduino) 프로젝트를 위한 서버(Sever) 구성 도구로 A.M.P (Apache, MySQL, PHP) 프로그램에 대해 알아보았습니다. 각 프로그램 역할과 설치방법에 대해 자세한 내용은 아래 링크 참조..

it-g-house.tistory.com

프로그램을 정상적으로 운영하려면 명령 프롬프트의 사용을 권장하는 편이지만 APMSETUP에서는 'MySQL관리'인 'phpMyadmin 프로그램'을 통해 보다 직관적으로 쉽게 데이터베이스와 테이블 및 MySQL 전반적인 부분까지 운영할 수 있도록 도와줍니다. APMSETUP Monitor 메뉴에서 MySQL 관리를 실행해주세요~  

 

APMSetup 메뉴: MySQL 관리 실행

MySQL 관리를 실행하면 아래와 같이 로그인 화면이 나옵니다. 사용자명은 'root', 암호는 'apmsetup'으로 초기 설정되어 있습니다. 로그인을 진행합니다.

 

APMSETUP phpMyAdmin 로그인 화면

 

로그인을 진행하는데 간혹 아래와 같이 오류가 발생할 수도 있습니다. 그러면 앞에서 확인하였던 http://localhost 웹페이지를 통해서 접속을 다시 해보시면 정상적으로 로그인이 가능합니다. 혹시 그래도 안되면.. 오류 해결 방법으로 검색해보세요.. 많은 고수들의 다른 방법들도 찾을 수 있을 거예요 ^^ 

 

APMSETUP phpMyAdmin 오류
APMSETUP http://localhost를 통한 phpMyAdmin 접속

phpMyAdmin에 접속하면 아래와 같이 UI를 통해 MySQL의 데이터베이스와 그에 속한 테이블을 카테고리 형태로 확인할 수 있습니다. 하나하나 클릭하면서 내용을 확인해보시면 직관적으로 금방 내용을 확인하실 수 있습니다.

 

phpMyAdmin 초기 화면
phpMyAdmin 데이터베이스 확인
phpMyAdmin MySQL 데이터베이스의 user 테이블 확인

그럼 이제 새로운 데이터베이스를 만들어 보겠습니다. 로그인 후 첫 화면 중앙을 보면 '새 데이터베이스 만들기'를 확인할 수 있습니다. 새로 만들 데이터베이스 이름을 정하고 '만들기'를 클릭합니다. 저는 "testDB"로 새로 만들어 보겠습니다. 이어서 바로 새로운 테이블 만드는 창을 확인할 수 있습니다. 그럼 새로 만들 테이블의 이름을 정하고 fields 수는 칼럼(column) 수라고 생각하시면 됩니다. 저는 우선 계속해서 다루고 있는 DHT11을 이용한 온습도 데이터를 DB서버로 보낼 생각이기 때문에 테이블 이름은 "tempnhumi"로 fields 수를 2개로 진행하였습니다.

 

APMSETUP phpMyAdmin 새 데이터베이스 만들기
APMSETUP phpMyAdmin 새 테이블 만들기

fields (columns) 수까지 정하고 '실행'을 클릭하면 아래와 같이 각각 칼럼(column)에 대한 정보를 입력하는 창을 확인할 수 있습니다. 필드는 각 칼럼의 이름이고 종류는 데이터의 종류로 정수(int)나 실수(Float) 및 text 등을 정할 수 있습니다. 길이/값은 데이터의 bit수로 숫자나 영문의 경우 한자리가 1 bit라고 생각하시면 됩니다. 저의 경우 온도나 습도의 최고 값은 100.0일 테니 소수점 포함 5자리로 정하였습니다. 그리고 인덱스에서 PRIMARY key가 될 데이터를 지정하고 '저장'을 클릭하면 됩니다.

 

APMSETUP phpMyAdmin 테이블 컬럼(column) 설정하기

 

이렇게 하면 다 만들어졌습니다 ㅎㅎ 완~전 편하죠? 의심스럽나요? ㅎㅎ 저 역시 의심이 많아서 MySQL 콘솔을 통해서 확인해 보았습니다. MySQL콘솔은 이전 포스팅에서 설명한 명령 프롬프트로 실행하는 것과 똑같습니다. 콘솔을 실행하면 비밀번호를 입력하면 되는데 변경하지 않으셨으면 초기 비밀번호인 'apmsetup'을 입력하면 됩니다. 

 

APMSETUP MySQL 콘솔 실행 화면

로그인 후 데이터베이스 확인과 테이블 확인, 테이블 내부 사항까지 다 확인해 봤는데 놀랍도록 정확하게 만들어져 있습니다. 와~ 우!! (그동안 고생한 거 생각하면... ㅠㅠ) 아래 명령어는 앞서 링크드린 'MySQL 시작하기: 데이터베이스(Database), 테이블(Table) 만들기'를 확인 부탁드립니다.

 

 

APMSETUP MySQL 콘솔을 통한 데이터베이스 확인

 


여기까지 웹서버(Web server) 구성 통합 프로그램 APMSetup 설치 및 사용방법에 대해 알아보았습니다. 4번에 걸쳐서 포스팅한 내용이 한방에 진행되어 어찌 좀 허무하긴 한데요... 그래도 이렇게 편한 프로그램이 있으니 얼마나 고맙나요~ 고수님들 감사합니다 ^^

 

웹서버를 구성해주는 통합 프로그램은 APMSetup뿐만 아니라 Wamp64, Xampp, Autoset 등 많이 사용하는 프로그램이 몇 개 더 있습니다. 사실 APMSetup은 업데이트된 지 좀 오래되어 MySQPL이나 PHP 버전이 낮지만 통합 프로그램에 따라 DB서버 프로그램이 MySQL 또는 MariaDB 기반으로 좀 다를 수 있기 때문에 MySQL 기반으로 하는 APMSetup으로 먼저 진행하였습니다. 그리고 한글이 지원된다는 거가 강점!! Wamp64, Xampp, Autoset 등은 추후 하나씩 알아보도록 하겠습니다.

 

오늘도 긴 글 읽어 주셔서 감사합니다. 궁금하신 거나 추가로 필요한 내용 있으면 언제든지 댓글로 남겨주시면 열심히 연구하여 답변드리도록 하겠습니다 ^^

 

 

 

반응형
반응형

 

 

 

MySQL 시작 메인화면: 데이터베이스(Database), 테이블(Table) 만들기

지난 포스팅에서 아두이노(Arduino) 프로젝트를 위한 서버(Sever) 구성 도구로 A.M.P (Apache, MySQL, PHP) 프로그램에 대해 알아보았습니다. 각 프로그램 역할과 설치방법에 대해 자세한 내용은 아래 링크 참조 부탁드립니다.

 

아두이노(Arduino) 홈 IoT(사물인터넷)을 위한 서버(Sever) 구성 1: Apache 아파치 설치방법

그동안 아두이노와 센서의 기본적인 동작법 및 프로그램 코딩은 어느 정도 익숙해졌을 겁니다. 이제 본격적인 프로젝트를 진행하기 전에 인터넷을 통해 데이터 및 신호를 주고받을 수 있어야 아두이노를 원하는 로..

it-g-house.tistory.com

 

아두이노(Arduino) 홈 IoT(사물인터넷)을 위한 서버(Sever) 구성 2: MySQL 설치방법

지난 포스팅에서 아두이노 서버 구성에 대해 알아보았고 필요한 도구(Tool)로 A.M.P (Apache, MySQL, PHP) 중 Apache(아파치)를 설치하는 방법에 대해 알아보았습니다. 이어서 MySQL 설치 방법을 알아보겠습니다...

it-g-house.tistory.com

 

아두이노(Arduino) 홈 IoT(사물인터넷)을 위한 서버(Sever) 구성 3: PHP 설치 방법

아두이노 프로젝트를 위한 서버 구성으로 벌써 세 번째 포스팅이네요.. 오늘은 지난 두 포스팅을 이어 서버 구성 도구 A.M.P (Apache, MySQL, PHP)에서 마지막 PHP 설치 방법에 대해 알아보겠습니다. 아두이노(Ard..

it-g-house.tistory.com

아두이노로부터 데이터를 웹(Web)으로 받기 위한 먼 여정을 하고 있는데요 ㅠㅠ 오늘은 데이터베이스(Database, DB) 서버를 MySQL로 만들어 보겠습니다.

 


 A.M.P (Apache, MySQL, PHP)에서 MySQL은 데이터를 받는 역할을 한다고 생각하시면 됩니다. Apache로 구축한 웹서버를 통해 아두이노에서 송신하는 데이터를 받아서 DB서버에 저장하는 겁니다. MySQL은 엑셀처럼 정형화되어 있지 않기 때문에 조금 손이 많이 가야 합니다. 하지만 단순 데이터를 저장하는 수준의 프로젝트 진행할 때는 한 번만 설정해놓으면 되기 때문에 너무 어렵게 생각하실 건 없어요 ^^ 그럼 시작해 보겠습니다~

 

 앞서 MySQL의 설치 방법에 대해서는 포스팅을 했기 때문에 Skip 하겠습니다. 참고 부탁드리겠습니다. (저는 Window10에서 실행하기 때문에 운영체제가 다르거나 버전이 다름으로 인해 도움이 안 될 수 도 있는 부분 양해 부탁드립니다.)

 

  • MySQL 명령어
기능 명령어 사용예
시작하기  mysql -u 'ID' -p 'DB이름' mysql>mysql -u root -p (DB 최상위단으로 접속시)
DB 검색  show databases; mysql>show databases;
DB 만들기  create database 'DB이름'; mysql>create database Test;
DB 사용  use 'DB이름'; mysql>use Test;
Table 만들기  create table 'table이름'

 mysql>create table tempnhumi(

->temp float not null,

->humi float not null,

->primary key(temp)

->);

Table 검색  show tables; mysql>show tables;
Table 조회  select*from 'table이름'; mysql>select*from tempnhumi;
MySQL 종료 exit mysql>exit

 

table의 명령어는 DB서버를 구축할 때 기본적인 명령어로 알아두면 좋습니다. 하나하나 실행하면서 알아보도록 하겠습니다. MySQL을 설치 완료하고 나면 일단 시작을 해야 하는데 보통 우리가 알고 있는 프로그램처럼 실행파일이 있거나 하지 않기 때문에 명령 프롬프트를 사용해야 합니다.

 

  • MySQL 실행하기

명령 프롬프트를 실행해서 MySQL 시작 명령어 'mysql -u root -p'를 그냥 입력하면 아래와 같이 명령어가 실행이 안됩니다. 이런 문제는 MySQL이 설치되어 있는 폴더에 가서 명령어를 실행해야 되기 때문인데... 설치 폴더 경로가 C:\Program Files\MySQL\MySQL Server 8.0\bin 이렇게 길기 때문에 찾아가기도 힘듭니다,;; 그래서 어디에서나 명령어가 실행되도록 설정하나를 하고 편하게 진행하도록 하겠습니다. (명령 프롬프트는 윈도우검색(윈도우키+s)에서 'cmd'라고 검색하면 찾으실 수 있습니다.)

 

MySQL 시작 명령어 입력
내컴퓨터 -> 속성 -> 고급시스템 설정 -> 환경변수 -> 시스템 변수 편집

 

 

그림에서 보듯이 내컴퓨터 -> 속성 -> 고급시스템 설정 -> 환경변수 -> 시스템 변수 편집으로 들어가서 Path를 편집하여 변수값에 MySQL이 설치되어 있는 폴더 경로를 적습니다. 저는 경로를 'C:\Program Files\MySQL\MySQL Server 8.0\bin' 이렇게 입력하였고, 마지막에 bin 폴더까지 입력하여야 합니다. 그리고 확인을 누르고 명령 프롬프트를 '관리자 권한'으로 실행합니다.

 

다시 MySQL 실행 명령어 'mysql -u root -p'를 입력하면 바로 아래 password를 입력하라고 나옵니다. MySQL을 설치할 때 설정하였던 비밀번호를 입력하면 mysql>이라고 뜨면서 정상적으로 실행이 되는 걸 확인할 수 있습니다.

 

명령프롬프트로 MySQL 실행하기
명령프롬프트로 MySQL 실행 명령어 입력 후 password 입력

 

  • 데이터베이스(DataBase, DB) 만들기, 검색하기

MySQL을 실행했으니 본격적으로 데이터베이스(DB)를 만들어 보겠습니다. 우선 현재 DB를 확인하기 위해 명령어 'show databases;'를 입력하면 ('s' 빠뜨리지 마세요 ㅎㅎ)

 

명령프롬프트로 MySQL 데이터베이스(Database) 검색하기

 

이렇게 현재 있는 데이터베이스를 확인할 수 있습니다. 기존 있는 DB는 어디에 사용되고 있는지 잘 모르니.. 그냥 건드리지 말고~ 저희가 사용할 데이터베이스를 만들어 보겠습니다. DB 만드는 명령어 'create database test;'를 입력하면 (임의로 DB이름을 'test'로 정하였습니다.) 

 

명령프롬프트로 MySQL 데이터베이스(Database) 만들기

이렇게 쿼리(Query) OK,라고 나오면 완료되었습니다. 엥? ㅎㅎ 만들어졌을까요? 그럼 확인차 다시 DB검색을 해보면 ~ 짠!! test Database가 생긴 것이 확인되네요 ^^

 

명령프롬프트로 MySQL 데이터베이스(Database) 만들기

 

  • Table 만들기

다음은 데이터를 저장하기 위해 table을 만들고 table에 엑셀(Excel)처럼 컬럼(column)을 만들어 보도록 하겠습니다. 먼저 만들어 놓은 'test' DB에 table을 만들거라 DB를 사용한다는 명령어 'use test'를 입력합니다.

 

명령프롬프트 MySQL 데이터베이스 사용하기

 

 

table을 만드는 명령어는 데이터의 형태, 컬럼 제목, primary key 등을 사용자의 용도에 맞게 설정해야 되는 항목이 추가로 들어가기 때문에 조금 다를 수도 있지만 저는 앞서 계속 다뤄왔던 아두이노의 온습도 센서로 측정된 데이터를 받을 계획에 맞춰서 설정해보도록 하겠습니다. 우선 table 만드는 명령어 'create table tempnhumi('라고 입력하면 다음 줄에 ->가 나오면 아래와 같이 차례로 입력하면 됩니다.

 

mysql>create table tempnhumi(

->temp float not null,

->humi float not null,

->primary key(temp)

->);

 

명령프롬프트 MySQL table 만들기

 

성공적으로 입력하면 역시 쿼리 OK라고 메시지가 나오고 완료됩니다. 역시나 만들어졌는지 확인하기 위해 table을 검색 'show tables;'를 입력하면 ~ 짠!! 아래와 같이 만들어졌습니다. (역시나 's' 빼먹지 마세요~ ㅎㅎ)

 

명령프롬프트 MySQL table 검색하기

 

  • 데이터 조회

이제 table까지 완료하였습니다. 데이터가 들어오면 table에 차곡차곡 쌓이겠죠? ㅎㅎ 데이터 조회하는 명령어는 'select*from tempnhumi'인데 아직 데이터가 없으니 아래처럼 Empty라고 나올 겁니다.

 

명령프롬프트 MySQL 데이터 조회

 


여기까지 MySQL을 이용하여 데이터베이스(Database, DB)를 구축하고 table까지 만들어 보았습니다. 꽤나 복잡하죠 ㅠㅠ 그래도 프로젝트 시작할 때 한 번 설정해놓으면 크게 변동할 게 없으니 파이팅해보죠~!! 그럼 수고하셨습니다.

 

긴 글 읽어주셔서 감사합니다. 최대한 경험을 바탕으로 쉽게 이해하려고 한 부분을 그대로 전달드리려고 노력하고 있습니다. 혹시 질문이나 좋은 의견 있으면 언제든지 댓글로 남겨주세요 ^^

 

 

 

반응형
반응형

 

 

 

아두이노 프로젝트를 위한 서버 구성으로 벌써 세 번째 포스팅이네요.. 오늘은 지난 두 포스팅을 이어 서버 구성 도구 A.M.P (Apache, MySQL, PHP)에서 마지막 PHP 설치 방법에 대해 알아보겠습니다.

 

아두이노(Arduino) 홈 IoT(사물인터넷)을 위한 서버(Sever) 구성

그동안 아두이노와 센서의 기본적인 동작법 및 프로그램 코딩은 어느 정도 익숙해졌을 겁니다. 이제 본격적인 프로젝트를 진행하기 전에 인터넷을 통해 데이터 및 신호를 주고받을 수 있어야 아두이노를 원하는 로..

it-g-house.tistory.com

 

아두이노(Arduino) 홈 IoT(사물인터넷)을 위한 서버(Sever) 구성 2: MySQL 설치방법

지난 포스팅에서 아두이노 서버 구성에 대해 알아보았고 필요한 도구(Tool)로 A.M.P (Apache, MySQL, PHP) 중 Apache(아파치)를 설치하는 방법에 대해 알아보았습니다. 이어서 MySQL 설치 방법을 알아보겠습니다...

it-g-house.tistory.com


  • PHP (Professional HyperText Preprocessor)

PHP는 다운로드 홈페이지 https://windows.php.net/download/ 에서 최신 버전으로 다운받으면 됩니다. 파일 항목에서 'VC15 x86 Thread Safe'가 64bit Apache(아파치)서버 환경에 해당됩니다. 'Non Thread Safe'는 IIS (Internet Information Sevices, 마이크로소프트 제공) 서버 환경에 해당하기 때문에 저는 Apache 서버와 호환을 위해 Thread Safe 파일을 다운로드하였습니다.

 

PHP (Professional HyperText Preprocessor) 다운로드 페이지

다운로드 완료 후 압축을 C드라이브에 풀어주고 Apache와 연동 및 정상적인 작동을 위해 역시나 메모장을 통해 몇 가지 수정을 해야 합니다. 폴더 안의 'php.ini-production' 파일을 메모장으로 열어줍니다. 

 

PHP 설치 과정에서 'php.ini-production' 파일 수정

2/3 지점쯤에 ;Paths and Directories; 내용 부분에서 ;extension_dir = "./"에서 ';'는 삭제하고 "./"안에 압축파일 푼 경로로 수정하면서 끝에 '/ext'를 붙여서 수정합니다. 저는 C드라이브에 압축을 풀어서 아래와 같이 수정하였습니다. 여기서 주의하실 점은 하위 폴더 구분을 '/'로 하셔야 합니다.

 

PHP 설치 과정에서 'php.ini-production' 파일 수정

 

수정 후 파일 이름을 'php.ini'로 다른 이름 저장합니다.

 


 

그다음 Apache와 연동을 하기 위해 Apache설치 하위 폴더 conf에서 'httpd.conf' 파일을 수정해야 합니다. 

 

Apache와 연동하기 위해 'httpd.conf' 파일 수정

httpd.conf 내용 중 <IfModule dir_module>에서 DirectoryIndex index.html를 다음과 같이 'index.php'를 삽입하여 수정하여 줍니다. 그리고 맨 마지막에 

 

PHPIniDir "C:/php-7.3.11-Win32-VC15-x64"
LoadModule php7_module "C:/php-7.3.11-Win32-VC15-x64/php7apache2_4.dll"
AddType application/x-httpd-php .html .php
AddHandler application/x-httpd-php .php

 

라고 추가 입력하고 저장합니다.

 

Apache와 연동하기 위해 'httpd.conf' 파일 수정
Apache와 연동하기 위해 'httpd.conf' 파일 수정

 


 

 

 

  • Apache와 연동 확인하기

그럼 PHP가 Apache와 잘 연동되었는지 확인하기 위해 PHP 정보를 Apache에서 만들어준 웹서버에서 열리는지 확인할 겁니다. 먼저 빈 메모장 또는 텍스트 파일을 열어서 <? phpinfo(); ?>라고 한 줄 입력하고 'phpinfo.php' 파일명 또는 원하는 파일명에 확장자는. php로 저장을 합니다. 여기서 메모장으로 저장할 때 주의하실 점은 파일 형식을 모든 파일로 하지 않으면. txt 파일로 저장되기 때문에 웹브라우저에서 확인하려 해도 파일을 인식 못하는 상황이 발생합니다. 그렇기 때문에 꼭 확장자가 php가 되도록 저장해야 합니다.

 

<? phpinfo(); ?>

 

PHP, Apache와 연동하기 확인하기 - phpinfo.php 파일 저장방법

 

저장할 위치는 앞서 Apache를 설치했던 폴더의 하위 폴더인 htdocs에 저장합니다. 저는 경로가 C:\httpd-2.4.41-win64-VS16\Apache24\htdocs에 저장하였습니다. 그리고 웹브라우저에서 'http://localhost/phpinfo.php'라고 입력하면 아래와 같이 PHP 정보를 확인할 수 있습니다.

 

PHP 정보 확인

 


여기까지 아두이노(Arduino) 프로젝트를 진행하기 위한 서버 구성 도구인 A.M.P (Apache, MySQL, PHP) 중 마지막인 PHP를 설치하는 방법을 알아보았습니다. Apache와 연동하는 부분이 있기 때문에 아무래도 PHP설치에 앞서 Apache를 설치할 때 설정을 잘해놔야 고생을 안 할 거 같습니다. (저는 꼼꼼하게 안 하고 휙~휙~ 넘어가서 엄청 헤맸네요 ㅠㅠ)

 

그럼 서버(Sever) 구성을 위한 도구들은 다 준비되었으니 다음 포스팅에 실질적으로 서버를 구축해 보도록 하겠습니다. 긴 글 읽어주셔서 감사합니다. 질문이나 고수분들의 도움이나 의견 언제든지 댓글로 부탁드립니다.

 

 

 

반응형
반응형

 

 

 

지난 포스팅에서 아두이노 서버 구성에 대해 알아보았고 필요한 도구(Tool)로 A.M.P (Apache, MySQL, PHP) 중 Apache(아파치)를 설치하는 방법에 대해 알아보았습니다. 이어서 MySQL 설치 방법을 알아보겠습니다. 앞 글은 아래 링크 참조 부탁드립니다 ^^

 

아두이노(Arduino) 홈 IoT(사물인터넷)을 위한 서버(Sever) 구성

그동안 아두이노와 센서의 기본적인 동작법 및 프로그램 코딩은 어느 정도 익숙해졌을 겁니다. 이제 본격적인 프로젝트를 진행하기 전에 인터넷을 통해 데이터 및 신호를 주고받을 수 있어야 아두이노를 원하는 로..

it-g-house.tistory.com


  • MySQL

MySQL은 가장 많이 사용되고 있는 데이터베이스(Database, DB) 시스템으로, 오픈소스로 제공되고 있는 관계형 데이터베이스(RDBMS: Relational Database Management System)입니다. '데이터베이스'는 여러사람이 공유하여 사용할 목적으로 체계화해 통합, 관리하는 데이터의 집합니다. (출처: 위키페디아) 단순 저장과 공유뿐만이아니라 데이터접근성, 보완성, 일관성 및 데이터 공간 효율화 등의 정보를 저장하고 다루는데 특화된 시스템이라고 할 수 있습니다. MySQL은 파이썬, C/C++, 자바, PHP 등 다양한 프로그래밍 언어를 지원하는데 그 중 PHP(Professional HyperText Preprocessor)가 HTML처리에 강점이 있고 많은 데이터베이스를 지원가능하기 때문에 DB서버(Sever)를 구성하는데 도구로 MySQL과 같이 많이 사용되고 있습니다. 

 

  • MySQL 설치방법

MySQL 홈페이지 다운로드 페이지 https://dev.mysql.com/downloads/에서 'MySQL Installer for Windows'를 선택합니다. 용량이 더 큰 Windows (x86, 32-bit), MSI Installer로 다운로드 합니다. 그럼 로그인 관련 문구가 나오는데 아래 No thanks, 를 클릭하면 다운로드가 시작됩니다.

 

MySQL 홈페이지 메인화면
MySQL 다운로드 페이지
MySQL 커뮤니티 다운로드 페이지
MySQL 커뮤니티 다운로드 페이지

다운로드한 install 파일을 실행하면 설치가 진행되는데 MySQL 서버와 관련된 Tool이 설치 가능하게 선택하여 진행합니다. 읽어보시고 각자 목적에 맞게 선택하여 진행하시면 될 듯합니다. 

 

MySQL Installer 실행 화면
MySQL 설치에 필요한 스프트웨어 설치

MySQL 설치 진행 전에 필요한 소프트웨어를 설치하라고 하는데 왠만한건 자동으로 설치 가능한데 manual이라고 표시된 소프트웨어는 직접 찾아 설치해 주어야 합니다. 근데 꼭 설치 안 해서 MySQL 설치 진행에는 큰 무리가 없는 듯합니다. 나중에 실행할 때 어떤 문제가 나올지 몰라 저는 필요한 항목을 직접 찾아 설치한 후에 계속 진행하였습니다. 사용자의 컴퓨터의 상황에 따라 항목이 다를 수 있어 추가적인 설치 방법은 skip 하겠습니다. Next를 누르면 본격적으로 MySQL 프로그램을 다운로드합니다. Execute를 누르고 모두 설치가 완료되면 Next를 누릅니다.

 

 

MySQL 설치
Standalone MySQL Sever 선택
MySQL Type and Networking 선택

웬만한 거 그냥 설정되어 있는 데로 Next를 해주면  Password 설정할 수 있습니다. 대소문자, 숫자, 특수문자를 잘 섞어주면 됩니다. 그리고 Next 누르면 SeverName을 설정할 수 있습니다. 전 생각하기 싫어서 'MySQL80' 그대로 갑니다 ㅎㅎ 

 

MySQL Password 설정
MySQL Apply Configuration 설치

이후에 또 왠만한건 그냥 설정된 대로 Next를 해주면 Server connection check를 합니다. User name은 'root'으로 그대로 두고 Password는 아까 설정한 Password를 입력해주시고 'Check'를 클릭하면 위에 상태창에 Connection succeeded라고 메시지가 나옵니다.

 

MySQL Server connection check
MySQL Product Configuration 완료

 

마지막으로 Product Configuration 설정이 완료되고 나고 Next를 누르면 마지막 Finish 창을 볼 수 있습니다. 그럼 설치가 완료 됩니다. 수고하셨습니다 ^^

 


여기까지 서버(Sever) 구성하는데 필요한 도구 A.M.P (Apache, MySQL, PHP) 중 MySQL 설치 방법을 알아보았습니다. 생각보다 하나하나 포스팅이 길어지네요... 다음 포스팅에선 이어서 PHP 설치와 사용방법에 대해 알아보겠습니다.

 

긴 글 읽어주셔서 감사합니다.

 

 

 

반응형
반응형

 

 

 

그동안 아두이노와 센서의 기본적인 동작법 및 프로그램 코딩은 어느 정도 익숙해졌을 겁니다. 이제 본격적인 프로젝트를 진행하기 전에 인터넷을 통해 데이터 및 신호를 주고받을 수 있어야 아두이노를 원하는 로직(Logic)에 맞게 동작시킬 수 있습니다. 우선 각 종 센서가 측정하는 데이터나 신호를 서버(Sever)로 송신하는 방법을 알아본 뒤 데이터를 분석하고, 적절한 명령신호를 다시 아두이노나 외부기기에 전달하는 방법을 알아보겠습니다.

 


  • 아두이노와 컴퓨터를 직접 연결하는 방법

앞서 USB 케이블을 통한 시리얼 통신(Serial communication)으로 PC에 바로 데이터를 전송하고 저장하는 방법을 알아보았습니다.  

 

아두이노(Arduino) 홈 IoT 입문 - 온습도 센서 데이터 출력/저장 방법

아두이노(Arduino)를 사용하여 온습도 센서(Temperature and Humidity sensor)를 작동하고 센싱한 값을 출력하는 것은 아두이노의 기본적인 사용법을 습득하는데 많은 도움이 됩니다. 저도 온습도 센서로 연습하면..

it-g-house.tistory.com

DHT11 온습도 센서(Temperature and Humidity sensor)로 측정된 온도와 습도 데이터를 PC로 시리얼 통신을 통해 송신하고, 컴퓨터에서 데이터를 받는데 'CoolTerm'이나 'PLX-DAQ' 프로그램을 사용하였습니다. 받은 데이터를 *. txt 파일로 저장하거나 엑셀로 연동하여 실시간 그래프를 그리거나 데이터 분석을 할 수 있었습니다.

 

아두이노(Arduino) 시리얼 통신(Serial communication)으로 PC에 데이터를 저장하는 구성

 

  • 인터넷을 이용한 데이터 송수신 방법

인터넷을 사용하여 웹을 통해 데이터를 송수신하려면 웹서버(Web sever)가 필요합니다. 파이썬(Phython)이나 C언어같은 프로그램 언어로 직접 서버를 만들 수 있으나 프로그램 언어가 능숙하지 않고 서버의 개념이 숙지되지 않은 경우 서버를 구성하는 일은 어렵습니다. 그렇다고 돈을 들여 프로그래머를 고용해서 서버를 만들정도로 고퀄이 필요한 것도 아니죠... 그래서 이렇게 직접 서버를 구성하기 힘든 개인이나 업체들을 위해 많은 기업들이 오픈소스 웹서버 프로그램을 제공하고 있습니다. 정말 고마운 일이죠~ 뮤뮤

 

아두이노(Arduino)로 인터넷(Internet)을 이용한 데이터를 송수신하기 위한 서버(Sever)구성

 

가장 많이 알려진 웹서버 프로그램은 Apache(아파치)입니다. 내컴퓨터에 웹서버를 구축하는 방법으로 Apache, MySQL, PHP 앞글자를 따서 A.M.P라고 많이 들어보셨을 겁니다. 여기서 Apache로 웹서버를 만들고 데이터를 수신할 수 있습니다. 그럼 받은 데이터를 어딘가 쌓아놓고 필요할 때 출력하거나 가공할 수 있어야 하는데.. 그 역할을 하는 게 데이터베이스 서버(DataBase server), DB서버라고 합니다. 역시나 많이 알려진 데이터베이스 프로그램이 MySQL입니다. DB는 크게 RDB, NoSQL 두 종류로 나뉘는데, RDB는 다시 RDBMS (Relational Database Management System: 관계형 데이터베이스)와 ORDBMS (Object-Relational Database Management System: 객체지향 데이터베이스)로 구분됩니다. RDB가 아닌 데이터 베이스가 NoSQL인데 RDB와는 달리 데이터 간 관계를 정의하지 않고 대용량의 데이터를 다루는데 유용해서 최근 빅데이터를 다루는데 적합하다고 합니다. (요즘 핫한 MongoDB가 NoSQL입니다.) 데이터베이스에 관해서는 추후 자세히 공부해 보도록 하겠습니다. 그리고 프로그램 언어 PHP (Professional HyperText Preprocessor)는 서버에서 해석되는 HTML에 내장되어 동작하는 스크립트 언어로 PHP 소프트웨어를 통해 코딩을 할 수 있습니다.

 

 

 


그럼 각각 프로그램을 설치하는 방법을 알아보겠습니다.

 

  • Apache(아파치) 설치방법

Apache는 홈페이지에서 다운로드할 수 있는데 메인 홈페이지가 아닌 https://www.apachelounge.com/download/에서 다운로드할 수 있습니다. 아래 공식 홈페이지에 들어가면 다운로드 받을 수 있는 파일들이 있긴 하지만 저는 쉽게 사용할 수 없는 파일 형태라서 apachelounge.com에서 다운로드하는 걸 추천드립니다.

 

Apache(아파치) 공식 홈페이지 메인 화면
Apache(아파치) 다운로드 페이지

Apache 2.4.41 Win 64 버전으로 다운로드하여서 C드라이버에 압축을 풀고 Apache24\conf 폴더 안에 'httpd.conf' 파일을 메모장으로 열어줍니다. Apache를 정상적으로 운영하기 위해 'httpd.conf' 파일을 SeverRoot, SeverName 등을 수정하는 과정이 필요합니다. (꼭 메모장이 아니더라도 수정할 수 있으면 됩니다.)

Apache(아파치) SeverRoot 설치폴더 확인

메모장에서 조금 아래 ServerRoot 부분에서 파일 압축을 푼 폴더가 "c:/Apache24"와 같은지를 확인합니다. 만약 다른 곳에 압축을 푸셨으면 폴더 경로를 수정해주시면 됩니다. 저도 아래와 같이 수정하였습니다. 여기서 주의할 점은 하위 폴더 표시를 '/'로 사용해야 합니다.

 

꽤나 더 아랫부분에 SeverName에 관한 내용이 있습니다. 여기서 '#SeverName www.example.com:80'을 '#'은 지우고 'ServerName loacalhost:80'로 수정합니다. (또는 'ServerName 127.0.0.1:80'이라고 바꿔줘도 됩니다.)

 

Apache(아파치) ServerName 변경

 

그리고 명령 프롬프트를 열어서 Apache24 폴더로 찾아가서 bin폴더에서 'httpd.exe -k install'이라고 명령어를 치면 Apache가 설치됩니다.

 

일단 설치가 진행되고 나면 윈도우 '서비스' 창에서 아래와 같이 Apache2.4가 설치된 것을 확인할 수 있습니다. 아직은 실행상태는 아닌데 다시 명령 프롬프트에서 'httpd.exe -k start'라고 입력해주시면 아래와 같이 '실행 중'이라고 표시되고 Apache가 실행된 상태입니다. (윈도우 검색창에서 '서비스'라고 입력하면 서비스 창을 실행할 수 있습니다.)

 

 

 

 

Apache를 멈추고 싶으면 'httpd.exe -k stop'을 입력하면 됩니다. 저는 명령 프롬프트가 아무래도 익숙하지 않아서 또 다른 방법을 사용하고 있습니다. 'bin'폴더 안에 'ApacheMonitor'를 실행하면 윈도우 실행창에 ApacheMonitor 아이콘이 생깁니다. 

 

ApacheMonitor
ApacheMonitor 실행
ApacheMonitor 실행

여기서 간단하게 Apache를 실행하고 정지할 수 있습니다. 아.. 진작에 이렇게 할걸...;; 죄송합니다... 그럼 Apache가 정상적으로 작동하는지 확인하기 위해 Apache를 Start 하고 웹브라우저에서 http://loacalhost라고 주소를 입력하면 아래와 같이 "It works!"라고 메시지가 나오면 정상적으로 작동하고 있는 겁니다. 와우~!! 혹시 앞에서 ServerName을 127.0.0.1:80라고 수정했으면 http://127.0.0.1라고 입력하면 됩니다.

 

Apache 정상 작동시 (http://localhost)
Apache 정상 작동시 (http://127.0.0.1)


여기까지 아두이노(Arduino)의 데이터를 웹서버를 통해 송수신하기 위한 서버(Server)의 구성과 함께 A.M.P (Apache, MySQL, PHP) 중 Apache를 실행하는 방법을 알아보았습니다. 이어서 MySQL 설치방법은 다음 포스팅으로 이어가겠습니다. 아래 링크 따라가시면 되요~ ^^

 

 

아두이노(Arduino) 홈 IoT(사물인터넷)을 위한 서버(Sever) 구성 2: MySQL 설치방법

지난 포스팅에서 아두이노 서버 구성에 대해 알아보았고 필요한 도구(Tool)로 A.M.P (Apache, MySQL, PHP) 중 Apache(아파치)를 설치하는 방법에 대해 알아보았습니다. 이어서 MySQL 설치 방법을 알아보겠습니다...

it-g-house.tistory.com

개념 정리가 조금 미흡할 수 있지만 나름 쉽게 이해하려고 한 부분을 전달하려고 노력하였습니다. 고수분들은 혹시 수정사항이나 좀 이상한 부분 있으면 언제든지 첨언 부탁드리며, 좋은 의견 댓글로 부탁드립니다.

 

 

 

반응형

+ Recent posts