반응형

 

 

 

2021.01.03 수정 업데이트

 

토양수분센서(soil moisture sensor)도 아두이노(Arduino)에서 많이 다루는 센서 중 하나입니다. 앞서 소개한 온습도 센서(Temperature and humidity sensor)와 초음파 센서(Ultrasounds sensor)처럼 외부환경을 데이터화하여 외부기기를 동작하기 좋습니다. 예를 들어 식물이나 농작물이 자라는 화분이나 토양의 수분함량을 데이터화해서 물을 자동으로 주거나 펌프를 작동하는 등에 적용할 수 있습니다.

 

최근 많은 사람들이 가정에서 취미나 인테리어로 식물을 기르는 일에 관심이 많아지고 있고, 플랜테리어(planterior) 혹은 그린테리어(greenterior)라고 식물(plant)과 인테리어(interior)의 합성어로 신조어가 생길 정도로 점점 트렌드로 자리 잡고 있죠 ^^ 이런 트렌드에 아두이노 IoT(사물인터넷)를 적용해보면 토양수분센서를 사용하여 화분의 토양에 물이 어느 정도 있는지 확인해서 식물관리에 조금 더 도움이 될 수 있을 듯하네요 ㅎㅎ

 

오늘은 토양수분센서에 대해 알아보고 아두이노에서 사용방법을 알아보겠습니다.

 

Arduino 아두이노 온도 습도 센서(Temperature and Humidity sensor) 종류 및 사용법

온습도 센서(Temperature and Humidity sensor)는 환경 측정에서 중요하면서도 기본적인 센서로 많이 사용됩니다. 중요하지만 비교적 흔하게 구할 수 있는 센서라 시중에 다양한 종류의 제품이 있고 기능적으로는..

it-g-house.tistory.com

 

Arduino 아두이노 초음파(거리) 센서(ultrasounds sensor) 사용방법

앞서 포스팅에서 온습도 센서(Temperature and Humidity sensor)만 가지고 아두이노의 기본적인 동작법이나 파일 저장법, 그래프 그리기, 엑셀(Excel)과 연동하는 방법들을 알아보았습니다. 그리고 인터넷(Interne..

it-g-house.tistory.com


1. 토양수분센서 (soil moisture sensor)

 

토양수분센서 종류는 다양하게 있는데 싸게는 몇 천원부터 비싸게는 몇 십만 원까지 합니다. 아두이노에서 가볍게 사용할 수 있는 저렴한 제품들을 온라인상에서 쉽게 구할 수 있지만 정밀한 측정에는 어려움이 있습니다. 실험용이나 좀 더 정밀한 측정에 사용되는 센서 또는 토양의 온도나 전기전도도(EC, Electrical Conductance)도 같이 측정할 수 있는 TEROS 시리즈의 센서도 있지만 가격이 상당합니다.

 

아두이노 토양수분센서

 

아두이노 토양수분센서
토양수분센서 TEROS

대표적인 토양수분센서의 원리는 토양의 수분량에 따라 변하는 유전율(dielectric permittivity)을 이용하여 전기신호(voltage)로 출력합니다. 측정 방법에는 FDR (Frequency Domain Reflectometry), TDR (Time Domain Reflectometry) 등이 있는데 최근에 많이 사용되는 방법이 FDR 방법입니다. 자세한 내용은 제가 어설프게 설명하는거 보다 검색해보시면 쉽게 이해하실 수 있을 겁니다 ^^

 

2. 토양수분센서 배선

 

오늘 예시에서 사용할 토양수분센서는 모델명 SEN0114로 온라인에서 쉽게 구입할 수 있습니다. 여러 모델 중에서 SEN0114를 선택한 이유는 다양하게 점검해 본 결과 저렴한 가격에 비해 그나마 사용하기 유용하기 때문입니다. (뒤에서 추가 설명하겠습니다.)

 

아두이노(Arduino) 토양수분센서(soil moisture sensor) SEN0114 배선

 

 

그림과 같이 토양수분센서의 VCC (빨강) 선은 아두이노의 3.3 또는 5V, GND (검정) 선은 GND pin에 맞게 연결하고, Output (파랑) 선은 아날로그(Analog) pin 0번에 (프로그램에서 수정 가능) 연결합니다. 예시로 사용하는 토양수분센서는 아날로그로 출력 값을 송출하기 때문에 아날로그 pin과 연결하지만 센서에 따라 디지털 신호도 있으므로 사용하시는 센서의 사양을 잘 확인하고 사용하면 되겠습니다.

 

3. 토양수분센서 프로그램 코딩

 

void setup(){ 
  Serial.begin(57600); 
  }
 
void loop(){ 
 Serial.print("Moisture Sensor Value: "); 
 Serial.println(analogRead(A0)); 
 delay(1000); 
 }

아날로그로 출력되는 토양수분센서라 스케치 프로그램가 아주 간단합니다. 아날로그 pin A0로 들어오는 신호만 읽어주면 끝입니다. 

 

4. 토양수분센서 값과 Calibration

 

모든 센서는 정확한 측정을 위하여 calibration을 해야합니다. 보정한다는 뜻 정도로 생각할 수 있는데 저울 같은 경우 0점을 잡는 것과 같은 것입니다. 이처럼 calibration은 0점 보정 외에 원하는 값으로 변환하는 작업도 포함합니다. 예를 들어 토양수분센서로 토양의 수분 함량 (%) 값을 알고 싶은데 출력 값은 voltage 값인 경우 변환하는 수식(calibration equation)을 사용하여 수분 함량 (%) 값으로 표시할 수 있습니다.

 

앞서 오늘 소개드린 SEN0114 센서가 그나마 사용할만 했던 것도 이런 calibration 과정에서 판별됩니다. 아래 온라인에서 저렴하게 구입할 수 있는 센서 3가지를 비교 평가한 자료입니다. 

 

아두이노(Arduino) 토양수분센서(soil moisture sensor)의 calibration 비교 실험

x축이 출력 값 voltage (mV)이고, y축이 그에 상응하는 용적수분함량(VWC, Volumetric Water Content) (%)입니다. 오른쪽 두 센서보다 왼쪽의 SEN0114 그래프가 추세선이 제일 깔끔하고 (R squ 값 참조) 실제 측정 값을 모두 포함하고 있기 때문에 센서 선택의 근거가 될 수 있습니다. 용적수분함량은 (물의 양/토양의 부피) * 100 (%)으로 간단하게 이해하셔도 됩니다.

 

5. 아두이노 시리얼 모니터(Serial Monitor)에 토양수분센서 측정값 출력

 

센서를 아두이노와 연결하고 스케치를 통해 프로그램을 업로드한 후 시리얼 모니터를 출력하면 아래와 같이 "Moisture Sensor Value: " 뒤에 mV 단위로 voltage 값이 나올 겁니다.

 

아두이노(Arduino)에서 토양수분센서(soil moisture sensor)의 출력 값 

센서가 아무것도 센싱하지 않을 때는 0으로 값을 읽다가 물에 넣으면 값이 상승합니다. SEN0114 센서 사양에 따르면 

 

Value range: 0 ~ 300: dry soil

                 300 ~ 700: humid soil

                 700 ~ 950: in water

이라고 제시되어 있습니다. 음... 위에 calibration 자료와 비슷한가요? ^^

 

참고로 토양의 성질이나 공극으로 인해 물을 함유할 수 있는 정도가 달라지기 때문에 토양별로 calibration equation이 조금씩 달라진다고 알고 계시면 유용합니다.

 

 


여기까지 아두이노(Arduino)에서 사용하는 토양수분센서(soil moisture sensor)에 대해 알아보고 사용방법을 설명하였습니다. 다음 포스팅에는 토양수분센서를 사용하여 토양의 물이 일정 범위 아래로 떨어지면 (식물에 공급할 물이 부족하면) 물을 자동으로 주는 작은 프로젝트를 진행해 보도록 하겠습니다.

 

오늘도 긴글 읽어주셔서 감사합니다. 궁금한 점은 댓글로 언제든지 남겨주세요~ 감사합니다 ^^

 

▼ 토양수분센서 구매하시려면 아래 링크!! ▼

 

아두이노 토양수분센서/Arduino Soil moisture sensor/지습센서/아날로그 센서 : 스토어플랜트

[스토어플랜트] 안녕하세요 스토어플랜트입니다.

smartstore.naver.com

 

 

반응형
반응형

 

 

 

아두이노(Arduino)는 컨트롤러(controller)인 만큼 외부기기나 센서의 전원을 on/off 하는 경우가 많이 있습니다. 보통 이런 기능은 스위치(switch)가 하죠 ^^ 전자기기에서 전기신호를 받아서 스위치 역할을 하는 부품을 릴레이(Relay: 전자계전기)라고 합니다. 지난 포스팅에서 초음파 센서를 사용하여 사람이 접근하면 외부기기에 전원을 공급하는 방법에서도 릴레이 모듈을 사용할 수 있습니다. 오늘은 아두이노에서 주로 사용되는 릴레이 모듈을 알아보고 사용하는 방법을 알아보겠습니다. 

 

Arduino 아두이노 초음파(거리) 센서(ultrasounds sensor) 활용: 사람 인식하는 전자기기 작동 시스템

아두이노(Arduino)의 센서들을 알아보는 시간으로 지난 포스팅에서 초음파 센서 사용법과 이를 이용하여 거리를 측정하는 방법을 알아보았습니다. 오늘은 이를 활용하여 사람이 다가가면 전자기기가 자동으로 작동..

it-g-house.tistory.com


 

1. 릴레이(Relay: 전자계전기) 

 

우선 릴레이는 스위치입니다. 아두이노에서 제공하는 전력만으로 구동할 수 없는 외부기기를 컨트롤하고 싶을 때 외부 전원을 릴레이와 연결하여 (설정)조건이 만족할 때 아두이노에서 신호를 보내 컨트롤하기 위해 주로 사용합니다.

 

저희가 알고 있는 일반적인 스위치는 버튼(button)형이나 텀블러(tumbler)형 같이 손으로 수동으로 on/off 해야 하지만 릴레이는 전기신호로 자동으로 on/off 할 수 있습니다. 보통 릴레이는 '전자석(철심에 코일을 감은 것)'의 원리로 움직이는데 전자석은 전류가 흐르면 자기장이 형성되는 자석입니다. 그래서 릴레이 모듈에 전기신호가 들어오면, 즉 전류가 흐르면 자기가 형성되어 그림과 같이 자석이 열려있는 스위치를 끌어당겨 on 시켜줍니다.  

 

전자석을 이용한 릴레이(Relay: 전자계전기) 간단한 원리

릴레이 종류는 동작 방식이나 허용 전력 용량에 따라 여러 종류가 있습니다. 더 자세한 내용이 궁금하면 아래 '메카솔루션' 링크 참조 부탁드립니다.

 

릴레이란? (릴레이 구조, 릴레이 원리, 릴레이 종류, 릴레이 작동원리, 릴레이 스위치, 아두이노 릴레이, 무접점 릴레이, 릴레이 접점)

    [ 전자부품 릴레이(Relay) 에 대해 알아보기 ] 출처 [메카솔루션]     [ 릴레이란? 릴레이의 작동 원리 ] 릴레이는 쉽게 말해 ON OFF가 있는 일종의 스위치 입니다.   하지만 우리가 일반적으로 알고있는 불을 켜고 끌때 누르는 스위치와는 동작원리가 다릅니다. 우리가 일반적으로 접하는 스위치는 수동으로 ON OFF 해주지만 릴레이는 자동…

makeshare.org

 


 

2. 릴레이 모듈

 

1채널 릴레이(Relay) 모듈
4채널 릴레이(Relay) 모듈

 

위 사진은 1채널 릴레이 모듈이며, 채널 수에 따라 아래 4 채널 모듈과 같이 릴레이 수가 늘어납니다. 모듈에서 파란색 네모 박스가 실제적인 릴레이인데 상단에 JQC3F-5VDC-C (5VDC: 5V 직류 구동)라고 모델명이 있고 아래에 10A 250VAC (교류전압), 10A 30VDC (직류전압) 표시는 최대 입력전압(input voltage)을 나타내고, 하단에 10A 125VAC, 10A, 28VDC는 기본 입력 전압을 나타냅니다. 이에 맞게 허용 전력을 사용하면 됩니다.

 

제가 구입한건 중국산이라 한자 (常开, 公共端 ,闭)로 적혀있는데 보통 NC (Normally Close), COM, NO (Normally Open) 이렇게 표시되어 있습니다.

 

NC (Normally Close, ): 평상시에 닫혀있다는 뜻으로, 릴레이에 전류가 흐르면 Open 되므로 평상시에 전원을 on 상태로 유지하다가 신호를 주어 off 할 때 사용합니다.

NO (Normally Open, 常开): 반대로 평상시에 열려있다는 뜻으로, 릴레이에 전류가 흐르면 Close 되므로 평상시에 전원을 off 상태로 유지하다가 신호를 주어 on 할 때 사용합니다.

COM (Common port, 公共)는 공통 단자로 전력 또는 외부기기의 한쪽 선을 항상 연결해야 하는 단자입니다.

 

VCC, GND, IN는 릴레이(전자석)을 구동하기 위한 전력 단자 (VCC, GND)와 신호를 주기 위한 IN (input) 단자입니다.

 

 

 

 


 

3. 릴레이 배선

 

아두이노(Arduino) 릴레이(Relay) 모듈 배선 방법

그림과 같이 아두이노의 5V 단자와 릴레이 모듈의 VCC와 연결하고, GND는 GND pin에 연결합니다. 그리고 아두이노 프로그램에서 설정한 디지털 PIN 번호(저는 3번과 연결하겠습니다.)와 IN 단자와 연결합니다. 다음으로 전원을 컨트롤하고 싶은 전자기기와 외부 전력을 연결하고 한쪽 단자 중간에 릴레이(스위치)를 장착한다고 생각하시면 됩니다. 

* 주의: 만약 전선작업을 직접 하시면 전원 반드시 뽑아서 안전 주의하세요!!!

 

4. 아두이노 프로그램

int Relay = 3;
 
void setup(){
  pinMode(Relay,OUTPUT);         // 릴레이를 출력으로 설정
  }
 
void loop(){
    if(조건)
    {
    digitalWrite(Relay,HIGH);     // 조건 만족하면 1채널 릴레이 ON
    delay(500);
    }
    else                               
    {
    digitalWrite(Relay,LOW);      // 아니면 1채널 릴레이 OFF
    delay(500);
    }
}

 

 

릴레이를 동작하기 위한 아두이노 스케치 프로그램 코드입니다. 저는 아두이노의 디지털 pin 3번에 릴레이 IN 단자와 연결하였기 때문에 int Relay = 3; 으로 설정하고 pinMode를 OUTPUT으로 설정하였습니다. void loop()에서 if 조건문을 사용해서 조건에 맞으면 릴레이에 HIGH 신호를 줘서 릴레이 스위치를 on 하고, 조건이 맞지 않으면 off 되는 간단한 프로그램 코드입니다. 다양한 센서를 사용해서 if()에 원하는 설정 조건을 직접 작성하시면 됩니다. 

 

아두이노 명령어가 익숙하지 않으신 분은 pinMode 및 if문에 대한 명령어는 아래 링크 참조하시면 됩니다.

 

아두이노(Arduino) 프로그램 코딩 초급 (pinMode, digitalWrite, if 명령어)

지난 시간 스케치로 프로그램을 코딩할 때 자주 사용되는 꼭 필요한 명령어 몇 가지를 알아보았습니다. IT 비전공자가 프로그램 언어를 기본부터 완전히 이해하면서 배우는 것은 쉬운 일은 아닙니다. 그렇기 때문..

it-g-house.tistory.com


 여기까지 아두이노(Arduino)에서 자주 사용하는 릴레이(Relay: 전자계전기)에 대해 알아보았습니다. 릴레이는 앞으로 추진하는 IoT 프로젝트에 반드시 필요한 모듈 중 하나라 사용방법을 알아두면 좋습니다. 다음 포스팅에는 릴레이에 외부기기와 전원을 연결하여 동작하는 작은 프로젝트를 하나 진행해 보겠습니다.

 

오늘도 긴 글 읽어주셔서 감사합니다. 궁금한 부분은 댓글로 언제든지 남겨주세요 ^^

 

 

 

반응형
반응형

드디어 아두이노(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)의 센서들을 알아보는 시간으로 지난 포스팅에서 초음파 센서 사용법과 이를 이용하여 거리를 측정하는 방법을 알아보았습니다. 오늘은 이를 활용하여 사람이 다가가면 전자기기가 자동으로 작동하는 시스템을 만들어 보겠습니다. 원리는 간단한데 앞서 알아본 초음파 센서를 이용하여 설정 거리보다 가까이 사람이 있으면 전자기기에 전력을 공급하는 방식입니다. 초음파 센서로 거리를 측정하는 프로그램은 아래 링크 참조 부탁드리며, 그 이후부터 진행하도록 하겠습니다.

 

Arduino 아두이노 초음파(거리) 센서(ultrasounds sensor) 사용방법

앞서 포스팅에서 온습도 센서(Temperature and Humidity sensor)만 가지고 아두이노의 기본적인 동작법이나 파일 저장법, 그래프 그리기, 엑셀(Excel)과 연동하는 방법들을 알아보았습니다. 그리고 인터넷(Interne..

it-g-house.tistory.com


준비물은 아래와 같습니다.

 - 아두이노 UNO R3 보드

 - 초음파 센서(HC-SR04)

 - DC-DC 승압형 5V 600mA USB 모듈

 - 5V USB 구동 전자기기

 

새롭게 소개드릴 제품은 DC-DC 승압형 5V 600mA USB 모듈입니다. 저도 처음 사용해보는 건데요.. 아두이노의 출력 전압을 이용하여 5V USB 충전이나 기타 USB 구동 전자기기들을 사용할 수 있게 연결해주는 모듈입니다. 아마 온라인상에서 쉽게 구할 수 있을 거예요 ㅎㅎ

DC-DC 습압형 5V 600mA USB 모듈

 

 

아두이노의 디지털 pin을 통한 출력 전압은 5V이니까 이번 프로젝트뿐만 아니라도 5V USB 구동 전자기기들을 이용할 때 유용하게 사용할 수 있을 듯합니다. ㅎㅎ 그리고 이번 프로젝트를 위해 USB 5V 전력으로 구동되는 전자기기를 사용해야 하는데 특별히 소유하신 전자기기가 없으면 휴대폰 USB 충전기로도 충분히 테스트해 볼 수 있습니다. 

 


 

1. 아두이노와 초음파 센서, USB 모듈 연결하기

 

먼저 아두이노와 초음파 센서를 연결하고 전자기기의 USB 전원이 연결될 DC-DC 승압형 5V 600mA USB 모듈을 아두이노와 연결합니다. USB 모듈의 '+' 단자와 아두이노의 디지털핀(Digital Pin) 13번과 연결하고(프로그램에서 수정가능하니 꼭 13번이 아니어도 됩니다), '-' 단자는 그 옆의 GND에 연결합니다. 연결된 USB 모듈에 앞서 준비한 5V USB 구동 전자기기를 이용해서 사람이 다가가면 자동으로 켜지는 시스템을 만들 수 있습니다.

 

아두이노(Arduino), 초음파 센서(HC-SR04) 센서를 활용한 자동 선풍기 만들기 배선

 

 

 

 

2. 프로그램 코딩 

 

스케치에서 pinMode, digitalWrite, if 명령어를 사용해 앞서 링크드린 초음파 센서로 거리를 측정하는 프로그램과 조합하여 프로그램 코딩을 합니다. pinMode와 digitalWrite, if 명령어에 대해서는 아두이노 프로그램 코딩 초급 부분에서 정리하였으니 참고 부탁드립니다.

 

아두이노(Arduino) 프로그램 코딩 초급 (pinMode, digitalWrite, if 명령어)

지난 시간 스케치로 프로그램을 코딩할 때 자주 사용되는 꼭 필요한 명령어 몇 가지를 알아보았습니다. IT 비전공자가 프로그램 언어를 기본부터 완전히 이해하면서 배우는 것은 쉬운 일은 아닙니다. 그렇기 때문..

it-g-house.tistory.com

int echo = 8;
int trig = 12;
int power = 13;

void setup() {
  Serial.begin(9600);
  pinMode(trig, OUTPUT);
  pinMode(echo, INPUT);
  pinMode(power, OUTPUT);
}

void loop() {
  float cycletime;
  float distance;
  
  digitalWrite(trig, HIGH);
  delay(10);
  digitalWrite(trig, LOW);
  
  cycletime = pulseIn(echo, HIGH); 
  
  distance = ((340 * cycletime) / 10000) / 2;  

  Serial.print("Distance:");
  Serial.print(distance);
  Serial.println("cm");
  
  if(distance < 50){ 
    digitalWrite (power, HIGH); 
    } 
    else{ 
    digitalWrite (power, LOW); 
    }
  delay(500);
}

 

초음파 센서의 'echo'와 'trig' pin 설정을 각각 8, 12번으로 설정하고, 5V Output power pin을 13번으로 설정하였습니다. 그리고 초음파 센서로 거리를 측정한 후 거리가 50cm 이하가 되면 13번 pin에 연결되어 있는 USB 모듈을 통해 5V가 출력됩니다. 그러면 전자기기가 켜지겠죠? 아닐 경우는 출력 power가 없으니 자동으로 전원이 꺼지도록 'if 명령문'을 사용하였습니다.

 

3. 자동 동작 시스템 확인

 

저는 USB 5V 구동 소형 LED 전등으로 동작 테스트를 해보았습니다. 시리얼 모니터(Serial Monitor)에서 거리를 확인하면 아래와 같이 출력되고, 초음파 센서에 가까이 다가가면(사람과 센서 사이 거리가 50cm 이하 일 때) LED 전등이 자동으로 동작합니다. 와우~ ㅎㅎ

 

아두이노 초음파 센서를 이용한 자동으로 작동하는 전자기기 시스템 만들기

 

초음파 센서의 위치에 따라 거리는 적절히 조절하여 편하게 적용하시면 됩니다. ^^ 앞서 언급하였지만 USB 휴대폰 충전기로도 충분히 테스트 진행 가능합니다. 주의하실 부분은 아두이노의 디지털 Pin의 Output 최대 출력 전류가 40mA이기 때문에 소비전력이 높은 전자기기들은 따로 외부 전력이 필요합니다.


여기까지 아두이노(Arduino)의 초음파 센서(HC-SR04)를 활용해서 사람을 인식하여 자동으로 전자기기를 작동하는 시스템을 구성해 보았습니다. 너무 간단하게 구성해서 허접해 보일 수도 있지만 대부분 이런 방법의 응용으로 수가 많아지고 조금 더 디테일하게 복잡해질 뿐입니다. 쉽게 생각하셔도 괜찮습니다 ^^

 

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

 

 

 

반응형
반응형

 

 

 

아두이노(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에 연동하는 방법을 알아보도록 하겠습니다.

 

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

 

 

 

 

반응형

+ Recent posts