반응형

 

계속해서 아두이노(Arduino) 스케치를 이용하여 프로그램을 코딩할 때 사용하는 명령어에 대해 알아보고 있는데요, 처음 아두이노를 시작할 때 접했던 생소한 느낌보다는 조금은 익숙해지고 있을 거라 생각됩니다. 익숙해지려면 계속 사용하고 적용하는 방법이 제일 빠르더라고요 ^^ 그럼 오늘도 지난번 포스팅에 이어 프로그램을 코딩할 때 유용한 몇 가지 명령어를 알아보겠습니다.

 

지난번 알아보았던 pinMode, digitalWrite, if 명령어들은 아래 링크 걸어놓을 테니 참고 부탁드립니다.

 

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

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

it-g-house.tistory.com


 

명령어 기능 사용법
Serial.read 시리얼 통신으로 수신된 데이터를 읽음  변수 = Serial.read();
millis 시간 카운팅 변수 = millis();
char 문자형 값을 처리하기 위한 변수 설정  char 변수;

 

1. Serial.read( );

 

아두이노 Serial.read() 함수는 아두이노가 수신한 데이터를 읽어오는데 사용하는 명령어입니다. 보통 시리얼 통신을 통해 아두이노로 데이터를 송신할 수 있고, 가장 쉽게 시리얼 모니터에서 입력한 text를 아두이노가 수신할 수 있습니다. Serial.read() 명령어를 사용하여 호출 시 1바이트씩만 읽어오며 유효한 데이터가 있을 때까지 반복됩니다.

 

아래와 같이 코드를 입력하고 시리얼 모니터를 실행해 보겠습니다. void setup에서 Serial.begin에 통신속도 9600으로 설정하고, void loop에는 다른 명령어를 설정하지 않았습니다.

 

void setup(){
 Serial.begin(9600);
 }
 
void serialEvent(){
    char Input;
    Input = Serial.read();
    Serial.println(Input);
}

void loop(){
}

 

void serialEvent 안에 Input이라고 char 변수를 설정하고 Input에 시리얼 통신으로 수신된 데이터를 Serial.read()로 읽어 Serial.println 명령어로 Input을 출력하라고 프로그래밍하였습니다. serialEvent는 시리얼통신에 대해서 우선적으로 응답할 때 사용하는데, 명령어가 loop 안에 있지 않아도 시리얼 통신으로 데이터가 수신되거나 하면 자동으로 호출되어 명령어를 실행합니다. 자세한 내용은 다음에 다루도록 하겠습니다.

 

스케치를 통해 아두이노로 업로드 후 시리얼 모니터를 실행시켜 상단 입력창에 text를 입력하면 아래와 같이 입력한 문자의 1바이트씩 출력되는 것을 확인할 수 있습니다. 차례로 a, ok, IT-G-House를 입력하였습니다. 

 

아두이노(Arduino) 프로그램 코딩 초급 II : (Serial.read, millis, char)

 


 

2. millis( );

 

아두이노를 사용하다 보면 타이머나 시간을 설정하는 경우가 있습니다. millis() 명령어는 millisecond (1/1000) 초를 말하며, 아두이노가 동작한 시점으로부터 millisecond 단위로 나타내어 줍니다. 시간을 잴 수 있는 최대 값은 약 49.7일이며, 이 시간이 지나면 0부터 다시 시작합니다.

 

아쉬운 점은 아두이노가 시작하는 시점부터 시간을 잰다는 거라서 간혹 중간에 전원 공급이 끊긴다거나 어떠한 사정으로 리셋되면 아두이노가 재시작되면서 0부터 시작하는 큰 단점과 실제 시각과 맞추기 어렵다는 점입니다. 인터넷이 된다면 실시간과 맞춰 시간을 설정할 수 있지만 시계열 동작이나 측정이 필요한 경우는 보통은 DS1302 RTS 같은 시계 모듈을 사용합니다.

 

아래와 같이 코드를 입력하고 아두이노에 업로드하면 변수 now에 시간이 기록되고 시리얼 모니터에서 "time: 아두이노가 시작한 후 경과한 시간"을 볼 수 있습니다.

 

unsigned long now;

void setup(){
 Serial.begin(9600);
 }
 

void loop(){
  now = millis();
  Serial.print("time: ");
  Serial.println(now);
}

 

아두이노(Arduino) 프로그램 코딩 초급 II : (Serial.read, millis, char)

 


 

3. char

 

char는 character(문자)의 약자로 문자형 변수를 설정할 때 사용합니다. 8비트 정수형 처리 변수로 -128~127까지의 숫자를 취급할 수 있습니다.

 

char는 if 문이나 조건에서 같다면을 표시하는 '=='을 사용할 수 있지만 String은 사용하더라도 원하는 결과와 달라질 수 있기 때문에 필요에 따라 char 또는 String을 적절하게 사용할 수 있습니다. char 사용 예시는 Serial.read() 예시에서 보셨으니 String 예시와 비교하여 살펴보면 좋을 것 같습니다.

 

아래와 같이 코드를 입력하고 아두이노에 업로드한 후 시리얼 모니터에 a, ok, IT-G-House를 입력하였습니다.

void setup(){
 Serial.begin(9600);
 }
 
void serialEvent(){
    String Input;
    Input = Serial.readString();
    Serial.println(Input);
}

void loop(){
  
}

 

아두이노(Arduino) 프로그램 코딩 초급 II : (Serial.read, millis, char)

 

char로 변수를 입력했을 때와 다르게 1바이트씩 출력되는 게 아니라 입력한 그대로 출력되는 것을 볼 수 있습니다.

 


 

오늘은 아두이노(Arduino) 프로그램 코딩에 필요한 'Serial.read()', 'millis()', 'char'에 대해 알아보았습니다. 이런 명령어를 통해 시간제어를 한다던지 시리얼 통신으로 수신된 데이터를 신호를 통해 제어를 하는 등의 프로그램을 코딩할 수 있습니다. 최근 진행 중인 실내 식물 재배기 프로젝트를 예시로 응용 부분에서 더 자세하게 다루어 보겠습니다.

 

다음번 포스팅에도 더 쓰임이 좋은 명령어를 소개드리겠습니다.

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

 

 

반응형
반응형

 

 

아두이노(Arduino)를 이용한 홈 IoT (생활응용)에 적용하는 시간으로 적외선 FIR센서를 이용하여 무드등을 만들어보겠습니다. 최근 집에 머무르는 시간이 길어지면서 인테리어에 많은 관심이 생겼는데요 ^^ 저는 침대 밑이나 등받이 쪽에 불이들어오는 무드등을 꾸며보고 싶더라고요 ㅎㅎ

 

적외선 FIR 센서와 RGB LED 스트랩을 사진처럼 이렇게 분위기 있는 침대를 만들 수 있습니다. 적외선 FIR 센서 사용방법은 지난 포스팅에서 소개해 드렸으니 아래 링크 참조 부탁드립니다. 

 

 

Arduino 아두이노 적외선 FIR 센서(HC-SR501) 사용하는 방법

아두이노(Arduino)에서 자주 사용하는 센서 및 모듈을 소개하는 시간으로 오늘은 적외선 센서에 대해 알아보겠습니다. 적외선 PIR (Passive Infrared Sensor) 센서는 외부에서 발생하는 적외선을 감지하는

it-g-house.tistory.com


1. 준비물

 

1) 아두이노 우노 R3 (Arduino UNO R3)

 

아두이노 우노 R3 (Arduino UNO R3)


프로젝트가 간단해서 우노 R3 제품으로 충분한데 혹시 나노(Nano)를 보유하신 분은 나노가 더 적합한 거 같습니다.

 

▼ 아두이노 UNO R3 사러가기!! ▼

 

아두이노 우노 R3 정품 / Arduino Uno R3 이탈리아 제품 : 스토어플랜트

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

smartstore.naver.com

 

 

2) HC-SR501 적외선 FIR 센서

 

온라인에서 '적외선 센서'를 검색하면 아두이노에서 자주 사용되고 쉽게 사용할 수 있는 HC-SR501 적외선 PIR 센서 모듈입니다.


아두이노 적외선 PIR 센서 (HC-SR501)

 

 

3) RGB LED 스트랩

 

주요 준비물인 LED 입니다. 저는 RGB 세 색상을 모두 낼 수 있는 LED PKG가 실장되어 있는 띠형태의 스트립(strip)을 사용할 생각입니다.

 

 

프로그램 코딩을 통해서 R(빨강), G(녹색), B(파랑)을 조절가능하고, 아두이노에서 사용하기 쉽게 5V 구동하는 LED 스트립 전등입니다.


 

2. 아두이노 배선

 

배선은 적외선 FIR센서와 LED 스트립이 둘다 5V 구동이기 때문에 아두이노 5V 에 같이 연결해 줍니다. 그리고 GND는 GND끼리, 적외선 FIR센서의 signal은 아두이노의 Digital 3pin에 LED의 Din는 4pin에 각각 연결합니다.

 

 

아두이노(Arduino) 적외선 FIR 센서를 이용한 LED 무드등 만들기

 


 

 

 

 

3. 동작 알고리즘

 

동작 알고리즘은 간단합니다. 적외선 센서가 동작을 감지하면 LED에 불이들어오고, 동작 감지가 끝나면 불이 꺼지게 또는 다른 색의 불이 들어오게 할 수 있습니다.

 

4. 아두이노 프로그램 코딩

 

#include <Adafruit_NeoPixel.h>
#define PIN            4                             
#define NUMPIXELS      18                             // 제어하고 싶은 LED 개수
 
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
int delayval = 5; // delay for half a second
int inputPIN = 3;    
int FIRstatus = 0;    
int Readinput = 0;  
  
void setup() {  
   pinMode(inputPIN, INPUT);   
   Serial.begin(9600);    
 pixels.begin(); // This initializes the NeoPixel library.
}  
  
void loop(){  
  Readinput = digitalRead(inputPIN);    
  if(Readinput == 1 && FIRstatus == 0){
      Serial.println("Action!");    
      FIRstatus = 1;    
    for(int i=0;i<NUMPIXELS;i++){
    // pixels.Color takes RGB values, from 0,0,0 up to 255,255,255
    pixels.setPixelColor(i, pixels.Color(0,0,50)); // Moderately bright green color.
 
    pixels.show(); // This sends the updated pixel color to the hardware.
 
    delay(delayval); // Delay for a period of time (in milliseconds).
  }
     }  
  if(Readinput == 0 && FIRstatus == 1){  
        Serial.println("End!");    
        FIRstatus = 0;  
       for(int i=0;i<NUMPIXELS;i++){
    // pixels.Color takes RGB values, from 0,0,0 up to 255,255,255
    pixels.setPixelColor(i, pixels.Color(0,0,0)); // Moderately bright green color.
 
    pixels.show(); // This sends the updated pixel color to the hardware.
 
    delay(delayval); // Delay for a period of time (in milliseconds).
  }
       
       }  
    delay(1000);  
   }  
   

오늘은 아두이노(Arduino)를 이용하여 센서 무드등을 만들어 보았습니다. 지난 포스팅에서 소개드린 적외선 FIR 센서 (HC-SR501)를 사용하여 동작 감지에 따라 RGB 삼색 LED 스트립을 켜고 끄고 하여 홈IoT 인테리어 조명으로 만들었습니다.

 

센서와 LED만 있으면 되니 아마도 다들 쉽게 만들 수 있을거라고 생각합니다. ^^ 

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

 

 

 

 

반응형
반응형

 

 

 

아두이노(Arduino)에서 자주 사용하는 센서 및 모듈을 소개하는 시간으로 오늘은 적외선 센서에 대해 알아보겠습니다. 적외선 PIR (Passive Infrared Sensor) 센서는 외부에서 발생하는 적외선을 감지하는 센서입니다. 여기서 Passive가 붙은 이유는 센서가 수동적으로 주변의 적외선을 detecting하여 주변을 감지하기 때문입니다. 이와 반대로 센서에서 적외선을 방출하여 주변을 감지하는 적외선 센서도 있습니다.

 

지난 포스팅에서 초음파 센서 HC-SR04를 이용하여 사람의 동작을 감지할 수 있는 것을 살펴보았는데요. 초음파 센서에 비해 적외선 PIR 센서가 view angle이 더 넓습니다. 즉, 주변을 감지할 수 있는 범위가 더 넓은데, 이는 초음파 센서는 센서에서 초음파가 발생하여 물체에 반사되어 다시 센서가 detecting하기까지 경로가 있기 때문에 적외선 센서에 비해 좁은 영역을 감지할 수밖에 없습니다.

 

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

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

it-g-house.tistory.com


 

1. 적외선 PIR (Passive InfraRed) 센서 HC-SR501

 

아두이노에서 자주 사용되고 온라인에서 쉽게 구할 수 있는 HC-SR501 적외선 PIR 센서 모듈입니다. 가격도 저렴한 편인데 사용하기도 편하고 생각보다 많은 설정이 가능해서 널리 사용되는 듯 합니다. 오늘 예시는 이 HC-SR501 모듈로 진행하겠습니다.

 

 

아두이노 적외선 PIR 센서 (HC-SR501)

 

동작전압 (Operating voltage) 5~12VDC
출력전압 (Output voltage) 0 V (Low) / 3.3V (High)
감지각도 (View angle) 110~120도
설정 기능 (Setting option) 감도(거리), 지연시간, 신호방식

설정 기능은 아래 사진에서 볼 수 있듯이 돌릴 수 있는 나사 두개와 접선을 해주는 점퍼대로 여러 가지 조절이 가능합니다.

 

 

감도(거리, Distance) 조절 : 시계방향으로 돌리면 감도가 낮아져 적외선을 sensing할 수 있는 거리가 줄어듭니다.

 

지연시간 (Delay Time) 조절 : 적외선 감지후 감지된 신호(High)를 얼마간 유지할지 조절이 가능합니다. 시계방향으로 돌릴수록 신호를 유지하고 있는 시간이 짧아집니다.  

 

신호방식 조절 : 좌측의 점퍼대를 옮겨 연결하면 감지신호를 한번만 보내주는 모드이고, 다른 모드는 감지신호를 계속해서 보내 주는 모드입니다.  

 

▶ 적외선 센서 사러가기  smartstore.naver.com/storeplant/products/5347527847

 

 

2. 아두이노 (Arduino) 적외선 PIR (Passive InfraRed) 센서 배선

 

 

아두이노 적외선 PIR 센서 (HC-SR501) 배선

 


 

 

3. 아두이노 (Arduino) 프로그램 코딩

 

int inputPIN = 3;    
int PIRstatus = 0;    
int Readinput = 0;  
  
void setup() {  
   pinMode(inputPIN, INPUT);   
   Serial.begin(9600);    
}  
  
void loop(){  
  Readinput = digitalRead(inputPIN);    
  if(Readinput == 1 && PIRstatus == 0){
      Serial.println("Action!");    
      PIRstatus = 1;    
     }  
  if(Readinput == 0 && PIRstatus == 1){  
        Serial.println("End!");    
        PIRstatus = 0;  
       }  
    delay(1000);  
   }  
   

pinMode와 if 명령어를 사용하여 프로그램을 코딩합니다. 센서가 적외선을 감지(사람을 인지)하면 연결된 digital 3번 pin으로 High 신호를 보내고 아두이노가 신호를 읽어 시리얼 모니터에 "Action"이라고 메시지를 보냅니다. 사람이 지나가고 적외선 감지가 없으면 센서에 설정해놓은 감지시간이 지나고 아두이노에 Low 신호를 보내 "End" 메시지를 볼 수 있습니다.

 

pinMode와 if 명령어가 처음이신 분은 아래 링크 참조 부탁드립니다.

 

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

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

it-g-house.tistory.com

 


  이번 포스팅에서는 아두이노(Arduino)에서 많이 사용하는 적외선 PIR 센서에 대해 알아보고 사용방법에 대해 살펴보았습니다. 다음 포스팅에서는 적외선을 응용하여 자동센서등이나 자동문 등을 만들 수 있는 방법에 대해 공부해 보겠습니다.

 

오늘도 긴 글 읽어주셔서 감사합니다. 궁금하신 부분이나 조언주실 내용은 댓글로 언제든지 남겨주세요 ^^

 


 

▽ 적외선 FIR 센서를 이용한 홈 IoT 무드등 만들기 응용편!! 

 

아두이노(Arduino) 응용, 적외선 FIR센서를 이용한 무드등 만들기

아두이노(Arduino)를 이용한 홈 IoT (생활응용)에 적용하는 시간으로 적외선 FIR센서를 이용하여 무드등을 만들어보겠습니다. 최근 집에 머무르는 시간이 길어지면서 인테리어에 많은 관심이 생겼

it-g-house.tistory.com

 

 

 

반응형
반응형

 

 

 

아두이노(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

 

 

 

 

 

반응형
반응형

 

 

 

스마트팜(Smart Farm) 구축 중 하나인 자동관수 시스템에 자주 사용되는 솔레노이드 밸브(Solenoid Valve)에 대해 알아보겠습니다.

 

솔레노이드 밸브는 전자밸브 중 하나인데 전기신호를 받아 밸브를 on/off 할 수 있는 밸브를 전자밸브라고 합니다. 다양한 종류의 전자밸브가 있으며 그중에 솔레노이드 밸브는 솔레노이드의 특성을 이용한 밸브장치라고 생각하시면 되며, 솔레노이드 밸브 종류 또한 다양한 종류가 있습니다.

 

오늘 소개해 드릴 솔레노이드 밸브는 자동관수에 일반적으로 가장 많이 사용하는 형태로 아래와 같이 생긴 솔레노이드 밸브입니다.

  

 

위 제품은  관수밸브에서 꽤나 알려진 "버마드(Bermad)"라는 회사의 솔레노이드 밸브로 24VAC에 작동합니다. 솔레노이드 밸브의 구동전압이 다양한 제품들이 시중에서 판매되고 있지만 주로 12VDC 또는 24VAC를 많이 찾아볼 수 있습니다. 따라서 아두이노(Arduino)를 이용하여 솔레노이드 밸브를 작동하려면 12VDC/24VAC 또는 spec.에 맞는 외부전원을 사용해야 합니다. 외부전원을 사용하는 방법은 자동선풍기를 만들었던 방법과 동일하니 아래 링크 참조하시고, 뒤에서 다시 또 설명하도록 하겠습니다.

 

아두이노(Arduino)를 이용한 센서(Sensor) 작동 자동 선풍기 만들기

아두이노(Arduino)를 이용한 홈 IoT (생활응용)에 적용하는 시간으로 무더운 여름 시즌에 맞춰 자동 선풍기를 만들어보겠습니다. 2020년 여름은 예년보다 특히 더 덥다고 하니 똑똑한 자동 선풍기로

it-g-house.tistory.com


1. 솔레노이드 밸브(Solenoid Valve) 원리

 

앞서 설명한데로 솔레노이드 밸브는 솔레노이드 특성을 사용합니다. 다들 아시겠지만 솔레노이드는 긴 원통에 코일을 감아놓은 것입니다. 여기에 전류가 흐르면 자기장이 발생하는 데 그 원리를 이용하여 밸브를 열고 닫고 합니다.

 

동작 방식을 설명하기 앞서 솔레노이드 밸브 구성은 아래와 같이 빨간 점선 부분의 솔레노이드 부분과 파란색 점선 부분의 밸브로 두 부분으로 나눌 수 있습니다.

아래는 위키피디아에 있는 그림인데 동작 방식을 잘 설명해주고 있습니다. 빨간색 부분의 솔레노이드에 해당하는 부분이 E 부분이며 밸브가 나머지라고 생각하시면 됩니다. 위에 그림이 밸브가 닫혀 있을 때, 아래 그림이 밸브가 열렸을 때(솔레노이드에 전기신호를 주었을 때 = 전류가 흐를 때)입니다.

 

A- Input side (물의 주입구)
B- 영어로 Diaphragm라고 되어 있는데 실제로 고무 판막입니다.
C- Pressure chamber
D- Pressure relief passage
E- Electro-Mechanical Solenoid (솔레노이드)
F- Output side (물의 출구)

 

밸브가 닫힌 상태에서 A로 물이 들어오면 B의 고무 판막 중앙에 뚫려있는 작은 구멍을 통해 C에 물이 가득 찹니다. 그래서 F의 출구 쪽 압력과 C의 압력 차이로 인해 밸브가 열리지 않는 상태가 됩니다. 밸브를 열기 위해 E 솔레노이드에 전기신호가 들어가면 E의 검은색으로 막고 있는 부분이 열리고 C의 물이 D쪽 통로로 빠져나가면서 B의 고무 판막이 들리게 되어 밸브가 열리고 A에서 F로 물이 통할 수 있는 길이 열립니다.

 


 

 

 

2. 12VDC 솔레노이드 밸브(Solenoid Valve)

 

위에서 설명을 위해 보여드렸던 "버마드" 제품은 비싸기도 하고 구동전력이 24VAC라서 외부전원으로 어댑터(변압기)도 구하기 쉽지 않습니다. 그래서 가격도 저렴하면서 12VDC에 구동하는 제품을 추천드립니다.

 

12VDC Solenoid Valve

 

3. 솔레노이드 밸브(Solenoid Valve) 아두이노(Arduino) 배선

 

어댑터 및 변압기의 전선작업을 하실 때는 위험하니 꼭 주의하셔서 진행하시기 바랍니다.

 

아두이노(Arduino)를 이용한 솔레노이드 밸브(Solenoid Valve) 사용하는 방법

 

4. Test 프로그램 코딩

 

배선 후 간단하게 테스트할 수 있는 프로그램 코드 아래 첨부하겠습니다. 3초 동안 on 하고 5초 동안 off 되는 동작을 반복하기 때문에 연결해서 정상 동작하는지 확인 가능합니다.

int Relay = 3;
 
void setup(){
  pinMode(Relay,OUTPUT);         // 릴레이를 출력으로 설정
  }
 
void loop(){
    digitalWrite(Relay,HIGH);     // 릴레이 ON
    delay(3000);                  // 3초동안 ON
    
    digitalWrite(Relay,LOW);      // 릴레이 OFF
    delay(5000);                  // 5초동안 OFF
}

 


 

 

 


오늘은 솔레노이드 밸브(Solenoid Valve)에 대해 알아보고, 아두이노(Arduino)를 이용하여 어떻게 사용하는지 보았습니다. 전자밸브는 꼭 관수뿐만 아니라 가스관이나 유체 등의 밸브에도 많이 사용될 수 있기 때문에 알아두시면 프로젝트를 진행할 때 많은 도움이 되실 겁니다.

 

이를 응용하여 스마트팜에 토양수분센서를 이용하여 자동으로 관수하는 시스템을 만들어 보겠습니다. 

 

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

 

 

 

 

반응형
반응형

 

 

 

안녕하세요 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'님과 '최승예'님 질문에 답이 되었는지 모르겠네요^^

 

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

 

 

 

 

반응형

+ Recent posts