반응형

 
 
아두이노(Arduino)로 인터넷을 연결하는 방법은 랜선(LAN)을 연결하는 방법인 이더넷 모듈(Ethernet module)을 사용하는 방법, Wifi를 연결하는 방법, 3G/LTE를 연결하는 방법이 있습니다. 지난 포스팅까지 주로 이더넷 모듈을 사용한 방법을 알아보았는데 사실 랜선(LAN) 선을 연결하는 것도 여간 귀찮은 게 아니죠 ㅎㅎ 그리고 저의 궁극적인 목표는 완전 무선인 형태로 프로젝트 완제품을 만드는 것이기 때문에 Wifi를 사용하는 방법을 알아보려고 합니다. 오늘은 Wifi 사용에 필요한 ESP-01 (ESP8266)모듈과 연결하는 방법에 대해서 알아보겠습니다. 앞서 말한 다른 인터넷 연결 방법 및 ENC28J60 이더넷 모듈 사용법에 관해서는 아래 링크 참조 부탁드립니다.

Arduino 아두이노 인터넷(Internet) 연결하는 방법

지난 포스팅에서 아두이노를 이용하여 온습도 센서를 동작해 보면서 아두이노의 기본적인 사용법과 코딩하는 방법을 알아보았습니다. 본격적인 홈 IoT(사물인터넷) 프로젝트를 진행하려면 아두이노를 인터넷에 연..

it-g-house.tistory.com

Arduino 아두이노 인터넷 연결하기 - 이더넷(ethernet) 사용 방법

아두이노(Arduino)를 사용하여 홈 IoT(사물인터넷)를 구현하는 프로젝트를 진행하기 위해서는 우선 인터넷이 되어야 합니다. 지난 포스팅에도 설명하였지만 일반적인 아두이노 모델인 UNO R3, Nano, MEGA 같은 보..

it-g-house.tistory.com


1. ESP8266 와이파이 모듈(Wifi module)
 
아두이노의 일반보드에는 기본적으로 내장된 와이파이 칩이 없기 때문에 와이파이 모듈을 사용합니다. 주로 ESP8266 와이파이를 많이 사용하는데 ESP8266 칩셋을 사용하기 때문에 ESP8266 와이파이 모듈이라고 합니다. 온라인상에서 검색하면 ESP-01 제품을 가장 많이 찾을 수 있으나 ESP 시리즈는 ESP-14까지 출시되어 있습니다. 기획하시는 프로젝트에 맞는 제품버전을 구입하여 다양한 사양과 기능을 활용하실 수 있습니다. 가격이 저렴하고 가장 보편적으로 사용할 수 있는 모델은 ESP-01이며 제가 기획한 프로젝트도 데이터 정도만 간단히 주고받으면 되기 때문에 ESP-01 모듈로도 충분히 잘 사용하고 있습니다.

아두이노 인터넷하기: ESP8266 Wifi module
ESP-01  802.11b/g/n Wi-Fi 모듈
구동 전압 (Operating voltage)   3.0V ~ 3.6V
Power (Typical Values)  Average: ~ 71mA, Peak: 300mA (Continuous Transmission)
Power (절전 모드)  Min. 20uA
Interface  UART/GPIO 지원
동작 명령어  UART AT command
UART 전송 속도  Max. 4Mbps
SPI Flash  8Mbit Default 
Frequency Range  2412 ~ 2484MHz
프로세서 속도 (Processor speed)  Max. 160MHz
Operating Temperature  -20℃ ~ 85℃
Storage Environment  -40℃~ 90℃, < 90%RH

 


 
2. ESP-01 와이파이 모듈(Wifi module) 배선
 
 

ESP-01 모듈 PIN 배열

ESP-01 모듈은 단순하게 생긴 것과 다르게 사용 방법이 좀 복잡합니다. 일단 배선이 복잡한데.. 위의 표에서 볼 수 있듯이 전류 소모량이 많고, TX와 RX 신호가 5V출력이기 때문에 아두이노 보드 pin에 바로 연결하면 정상적으로 작동이 안 되고 모듈이 고장 날 수도 있습니다. 또 하나의 문제는 아두이노와 보레이트(Baudrate) 9600 bps 속도로 시리얼 통신(Serial communication)을 주고 받아야 하는데 ESP-01 모듈은 115200 bps로 초기 설정되어 있습니다. 에?? 그럼 어떻게 하냐고요? ㅠ 그래서 펌웨어(Firmware)를 업데이트해서 모듈의 속도를 변경해야 하는 과정이 필요하다고 인터넷에 찾아보면 나오는데.. 과정이 좀 복잡합니다. 그리고 이러한 여러 가지 문제를 해결하는 보완책으로 저항을 사용해야 하거나 아래와 같이 복잡한 배선을 구성해야 합니다.
 

ESP-01(ESP8266) Wifi module 펌웨어 업데이트(firmware update)를 위한 배선

 
출처: https://www.elec-cafe.com/esp8266-esp-01-firmware-update/

 


 

 
아.. 복잡하죠... ㅠㅠ 뭐 할 때마다 이렇게 복잡해서야... 그래서~!! 복잡한 거 싫어하는 저는 방법을 찾았습니다!! 바로 ESP-01 어댑터라는 모듈을 사용하는 겁니다. 복잡한거 싫어하고 빵판으로 배선하는 것을 싫어하는 저를 위한 아주 유용한 아이템입니다. ESP-01 모듈을 어댑터에 연결하기만 하면 동작전압을 5V로 사용해야 하는 점 말고는 어댑터의 4 Pin(VCC, GND, RX, TX) 만으로 훨씬 편하게 배선을 할 수 있습니다. 어댑터를 사용하면 펌웨이 업데이트도 안해도 됩니다!! 완전~꿀!ㅎㅎㅎ
 

아두이노(Arduino) 인터넷 연결하기: ESP-01(ESP8266) 와이파이 모듈(Wifi module)과 어댑터

 
 
ESP-01 와이파이 모듈을 방향에 맞게 어댑터에 꼽고 어댑터 VCC 핀은 아두이노의 5V, GND는 GND와 연결합니다. 그리고 TX와 RX pin은 각각 아두이노의 2번 Pin과 3번 Pin에 연결합니다.
 
어? 왜 아두이노의 RX-pin0, TX-pin1에 맞춰서 연결하지 않나요? 맞습니다. 아두이노가 스케치를 통해 신호를 받을 때나 PC로 코딩된 프로그램을 업로드받을 때 시리얼 통신을 사용한다고 아실 겁니다. TX와 RX는 각각 Transmit(전송), Receive(수신)이란 뜻으로 시리얼 통신을 할 때 데이터를 전송하고 수신하는 통로가 됩니다. 그래서 이미 아두이노에 USB가 연결되어 있는 동안은 아두이노의 TX와 RX는 PC와 연결되어 있어서 아두이노와 ESP-01 와이파이 모듈 사이의 시리얼 통신을 위해 새로운 RX, TX를 디지털 Pin2번과 3번에 각각 지정을 해야 합니다.
 
실제로 아두이노의 RX-pin0, TX-pin1에 연결하고 프로그램을 업로드하면 정상적으로 업로드되지 않습니다. 그리고 주의하실 점은 전송(TX)---> 수신(RX) 짝으로 연결해야 합니다. ESP-01 모듈에서 전송(TX)한 데이터를 아두이노에서 수신(RX)하는 거고 또 반대로도 이뤄지기 때문입니다. 
 


 
3. ESP-01 와이파이 모듈(Wifi module) 프로그램 코딩
 
아두이노와 ESP-01 와이파이 모듈을 위 그림과 같이 연결한 후 몇 가지 설정을 위해 간단한 프로그램 업로드가 필요합니다. 우선 아래 코드블럭과 같이 스케치(Sketch)로 코딩 후 아두이노에 업로드합니다.
 
앞서 언급하였듯이 ESP-01 모듈은 통신속도(Baudrate: 보레이트)가 115200 bps로 초기 설정되어 있기 때문에 'mySerial.begin(115200);' 명령어에 115200이 우선 들어갑니다. 그러나 아두이노와 ESP-01 모듈이 통신을 하려면 둘의 통신속도를 맞춰야 하기 때문에 9600으로 변경하는 작업을 진행해야 합니다. (뒤에 설명)
 

#include <SoftwareSerial.h>
SoftwareSerial mySerial(2,3); //RX, TX

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

void loop() {
if(mySerial.available())
{
  Serial.write(mySerial.read());
}
if(Serial.available())
{
  mySerial.write(Serial.read());
}
}

 
아두이노와 ESP-01간에 통신은 UART(범용 비동기화 송수신기: Universal asynchronous receiver/transmitter)를 사용하는데.. UART는 "병렬 데이터의 형태를 직렬 방식으로 전환하여 데이터를 전송하는 컴퓨터 하드웨어의 일종이다."라고 위키피디아에 나와있습니다. 그냥 시리얼 통신 일종이라 생각하면 마음이 편합니다. ㅎㅎ 여기서 사용되는 명령어가 AT command입니다.
 
그래서 업로드가 완료된 후 시리얼 모니터(Serial Monitor)를 통해 PC에서 아두이노를 거쳐 ESP-01 모듈에 'AT command'로 명령을 하여 필요한 설정 및 와이파이를 구동할 수 있습니다.
 

 
먼저 정상적으로 작동하는지 확인하기 위해 시리얼 모니터 상단의 입력란에 AT라고 입력합니다. 그럼 아래와 같이 OK라고 반응을 보입니다. 잠깐!! AT를 입력하기 전에 보레이트는 9600에 맞춰주시고(프로그램상에서 아두이노는 9600), 옆에 칸을 'Both NL & CR'로 설정을 변경해줘야 합니다. NL은 'Newline' 약자이고, CR은 'Carriage return' 약자입니다. 이렇게 두어야 return 값이 아래 줄에 출력됩니다. 
 

아두이노(Arduino) ESP8266(ESP-01) 와이파이 모듈 사용하기: AT command 확인

 
OK 보셨나요? ㅎㅎ 이제 거의 다 했어요~ 그럼 ESP-01 모듈의 통신속도를 변경하기 위해 AT+UART_DEF=9600,8,1,0,0라고 입력합니다.
 

아두이노(Arduino) ESP8266(ESP-01) 와이파이 모듈 통신속도(baudrate) 변경하기

 
OK~!! 이제 ESP-01 모듈의 통신속도가 변경되었기 때문에 지금은 입력해도 아무 반응이 없을 겁니다. 그래서 스케치에서 아까 115200이었던 통신속도를 9600으로 변경 후 다시 아두이노로 업로드합니다.
 

아두이노 프로그램 ESP-01 모듈 속도 변경

그리고 다시 시리얼 모니터에 AT를 입력하면 역시나 OK로 잘 응답을 해줍니다. ^^ 그럼 이제 와이파이에 접속해 볼까요? AT+CWLAP 명령어는 주변 Wifi 목록을 검색해주는 명령어입니다. 아마 입력하면 바로 진행될 수도 있지만 안되시는 분들은 AT+CWMODE? 명령어로 현재 모드가 몇 번인지 확인하고 AT+CWMODE=1이라고 입력하셔서 모드를 변경합니다.
 

아두이노(Arduino) ESP8266(ESP-01) 와이파이 모듈 모드(MODE) 변경하기

ESP8266 와이파이 모듈은 네트워크 연결에 대해 3가지 모드를 제공합니다.
 
1. Station mode: ESP8266 모듈이 client로 wifi 기능만 함
2. AP mode: ESP8266 모듈이 Access Point가 됨
3. AP + Station mode: AP와 client 둘 다 됨
 
그래서 일반적으로 사용하실 때 모드는 1번으로 설정하면 됩니다. 그럼 다시 AT+CWLAP로 주변 Wifi 목록을 검색해 볼까요? 짠~!! 주변에 접속할 수 있는 와이파이를 찾을 수 있습니다. 
 

아두이노(Arduino) ESP8266(ESP-01) 주변 와이파이 찾기

 
와이파이 접속 명령어는 AT+CWJAP="SSID","비밀번호" 라고 입력하시면 됩니다. 그럼 정상적으로 접속이 되면 "WIFI CONNECTED, WIFI GOT IP"라고 응답이 출력됩니다. 그리고 할당된 IP를 확인하려면 AT+CIFSR 명령어를 입력하면 아래와 같이 IP 주소를 확인할 수 있습니다. 이제 와이파이가 됩니다~ 호~우!! ㅎㅎ
 

아두이노(Arduino) ESP8266(ESP-01) 와이파이 접속 및 IP 주소 확인하기

 

명령어기능 설명응답
ATAT command 작동 상태 확인OK or 무응답
AT+RST재시작 (Reset)OK… ready
AT+UART_DEF=속도,8,0,0AT 통신속도 변경OK
AT+CWMODE?Wifi 모드 확인'+CWMODE: mode#
AT+CWMODE=mode#Wifi 모드 설정 (ex> AT+CWMODE=1)OK
AT+CWLAP접속 가능한 Wifi 목록 검색Wifi 목록
AT+CWJAP?접속된 Wifi 확인 
AT+CWJAP="SSID","비밀번호"Wifi 접속WIFI CONNECTED 
WIFI GOT IP 
OK
AT+CWQAPWifi 접속 종료OK 
WIFI DISCONNECT
AT+CIFSRIP 주소 확인+CIFSR: STAIP, "할당된 IP주소"
+CIFSR: STAMAC, "MAC주소"

여기까지 아두이노(Arduino)로 인터넷(Internet) 연결하는 방법 중 ESP-01 와이파이 모듈(ESP8266 Wifi module)을 사용하는 방법을 알아보았습니다. 인터넷도 되고, DB(Database)서버도 만들었고, 이제 거의 모든 준비가 되었습니다. 다음 포스팅에는 드디어!! 웹으로 데이터를 보내서 DB서버에 저장하는 방법에 대해 알아보도록 하겠습니다. 웹서버, DB서버 만드는 방법이 궁금하신 분은 아래 링크 참조 부탁드려요 ^^

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

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

it-g-house.tistory.com

오늘도 긴 글 읽어 주셔서 감사합니다. 궁금한 내용이나 추가적으로 원하시는 내용 있으면 언제든지 댓글로 남겨주세요~ 감사합니다.
 
 

 

반응형
반응형

 

 

 

지난 포스팅에서 아두이노(Arduino)로 인터넷을 연결하는 방법 중 이더넷(Ethernet) 모듈을 사용해보았습니다. 'ENC28J60' 이더넷 모듈을 아두이노 UNO R3 보드와 연결하여 DHCP(Dynamic Host Configuration Protocol: 동적 호스트 구성 프로토콜)를 통해 IP 할당받았습니다. 그럼 오늘은 진짜 인터넷 되는지 궁금하니까 할당받은 IP를 통해 웹 브라우저(web browser)에 간단한 텍스트를 띄워보도록 하겠습니다. 앞서 설명한 내용은 아래 링크 걸어두게요~ 참조 부탁드립니다.

 

Arduino 아두이노 인터넷 연결하기 - 이더넷(ethernet) 사용 방법

아두이노(Arduino)를 사용하여 홈 IoT(사물인터넷)를 구현하는 프로젝트를 진행하기 위해서는 우선 인터넷이 되어야 합니다. 지난 포스팅에도 설명하였지만 일반적인 아두이노 모델인 UNO R3, Nano, MEGA 같은 보..

it-g-house.tistory.com


  • 프로그램 코딩 (ENC28J60 이더넷 모듈 사용)

아두이노로 웹브라우저에 텍스트를 출력하기 위해 프로그램 코딩이 필요합니다. 지난번에 다운로드한 이더넷 라이브러리(Library)를 계속 사용하기 때문에 혹시 없으신 분은 아래 파일을 다운로드하여 스케치(sketch)에서 추가하시면 됩니다. 

EtherCard.zip
0.12MB

이더넷 모듈 사용 방법에서 코딩했던 IP를 할당받기 위한 DHCP test 프로그램에서 몇 가지만 추가로 적어주면 되기 때문에 어렵지 않습니다.

 

#include <EtherCard.h>

// ethernet interface mac address, must be unique on the LAN
static byte mymac[] = { 0x74,0x69,0x69,0x2D,0x30,0x31 };

byte Ethernet::buffer[700];

const char webpage[] PROGMEM =
"<html>"
  "<head>"
  "<title>"
    "Arduino Websever"
  "</title>"
  "</head>"
  "<body>"
    "Hello Arduino!!"
  "</body>"
"</html>"
;

void setup () {
  Serial.begin(57600);
  Serial.println(F("\n[webClient]"));

  // Change 'SS' to your Slave Select pin, if you arn't using the default pin
  if (ether.begin(sizeof Ethernet::buffer, mymac, 8) == 0)
    Serial.println(F("Failed to access Ethernet controller"));
  if (!ether.dhcpSetup())
    Serial.println(F("DHCP failed"));

  ether.printIp("IP:  ", ether.myip);
  ether.printIp("GW:  ", ether.gwip);
  ether.printIp("DNS: ", ether.dnsip);
}
void loop () {
  ether.packetLoop(ether.packetReceive());
  memcpy(ether.tcpOffset(), webpage, sizeof webpage);
  ether.httpServerReply(sizeof webpage);
  }

 

 

 

위에 게시된 코드블럭에서 아래와 같이 변수 'webpage'를 HTML(HyperText Markup Language)로 프로그램을 정의하였습니다. HTML은 웹페이지를 만들기 위한 언어로 웹페이지의 전반적인 구조를 만들고 웹 브라우저와 같은 HTML 처리 장치의 행동에 영향을 주는 프로그램 언어들을 제어하는 기능을 합니다. 즉, 웹브라우저에서 동작하는 프로그램 언어입니다. 여기서는 간단한 텍스트만 출력하기 위한 HTML 기본 구조만 작성하였는 점 참고 부탁드립니다. 

 

아두이노로 웹브라우저에 원하는 텍스트를 띄우기 위한 html코딩 

HTML 코딩에서 <title></title> 안의 내용이 웹페이지의 제목 부분이고 <body></body> 안의 내용이 웹브라우저로 출력하고 싶은 내용을 적으시면 됩니다. 저는 제목은 "Arduino Websever"로 임의로 정하고 "Hello Arduino!!"를 웹브라우저 크롬을 통해 출력하기 위해 위와 같이 작성하였습니다. 프로그램에서 빨간 표시 한 부분을 원하는 데로 바꾸시면 원하는 텍스트를 출력할 수 있습니다. (한글도 가능한데 그냥 하면 웹 브라우저에서 깨지기 때문에 추가적인 코드가 필요합니다. 우선 간단하게 테스트해보시고 한글 출력은 추후 업데이트하도록 하겠습니다.)

 

그럼 compile 후 아두이노에 성공적으로 업데이트하고 나서 PC와 연결된 USB는 뽑아버리고 아두이노에 외부 전원을 공급하여 확인하도록 하겠습니다. (시리얼 통신으로 가는지 진짜 인터넷을 통하는지 저는 의심이 많아서 일단 컴퓨터와 아두이노와의 연결을 끊었습니다. ㅎㅎ) 그리고 이더넷 모듈에 공유기의 랜선(LAN)을 연결한 후 아두이노에 할당받은 IP를 웹 브라우저에 입력합니다. (저는 IP가 192.168.0.102이고, 웹 브라우저는 크롬으로 진행하였습니다.)

 

ENC28J60이더넷 모듈 (Ethernet module) 사용하여 아두이노(Arduino) 인터넷 연결

그럼 아래와 같이 짠!! 하고 출력됩니다. 와우~!

 

 

아두이노(Arduino)로 웹브라우저에 텍스트 출력하기

 

추가로 프로그램을 조금 더 설명드리면 void loop() 부분의 명령어는 아두이노에 할당된 IP를 웹 브라우저에 입력하면 이더넷 모듈이 TCP 패킷을 받고, HTML로 작성된 변수 'webpage'의 내용을 웹브라우저로 띄워주는 코딩입니다. (몇 가지 명령어로 간단히 실행이 되는 것은 라이브러리를 사용해서 가능한 겁니다. 얼마나 고마운 존재인가요~ 감사합니다!! ㅎㅎ) 

 

아두이노로 웹브라우저에 원하는 텍스트를 띄우기 위한 코딩

 


여기까지 아두이노(Arduino)로 인터넷(Internet) 연결하는 방법 중 ENC28J60 이더넷 모듈(Ethernet module)을 사용해서 웹브라우저에 간단한 텍스트를 출력하는 방법을 알아보았습니다. HTML을 사용하실 수 있으신 분은 프로그램을 수정해서 얼마든지 웹페이지를 추가적으로 구성하실 수 있습니다. 

 

지금은 공유기 내부에서 IP를 사용하고 있지만 최종적으로 외부 인터넷을 사용하여 프로젝트를 어디에서나 진행 가능하게 만드는 것이 궁극적인 목표가 될 것입니다. ㅎㅎ 화이팅하겠습니다! ^^  

 

오늘도 긴 글 읽어주셔서 감사합니다. 질문이나 좋은 의견 있으면 언제든지 댓글로 남겨주시면 최선을 다해 연구해서 답변드리겠습니다.

 

 

반응형
반응형

 

 

 

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

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

 

 

 

반응형
반응형

 

 

 

아두이노(Arduino)를 사용하여 홈 IoT(사물인터넷)를 구현하는 프로젝트를 진행하기 위해서는 우선 인터넷이 되어야 합니다. 지난 포스팅에도 설명하였지만 일반적인 아두이노 모델인 UNO R3, Nano, MEGA 같은 보드는 인터넷을 사용할 수 있는 칩셋이 내장되어 있지 않기 때문에 인터넷을 사용하려면 이더넷(ethernet), 와이파이(Wifi), 3G/LTE 모듈 등을 사용해야 합니다. 조금 더 비용을 지불하고 와이파이 칩이 내장되어 있는 아두이노 UNO 와이파이 모델을 구입해도 됩니다 ㅎㅎ 전... 사정이 넉넉하지 못해서 ㅠㅠ 

 

그래서! 오늘 드디어 이더넷 모듈을 사용하는 방법에 대해서 포스팅하겠습니다. 아두이노로 인터넷 연결하는 모듈 제품들에 관해서는 지난 포스팅 링크 첨부하게요~ 참고 부탁드립니다 ^^

 

Arduino 아두이노 인터넷(Internet) 연결하는 방법

지난 포스팅에서 아두이노를 이용하여 온습도 센서를 동작해 보면서 아두이노의 기본적인 사용법과 코딩하는 방법을 알아보았습니다. 본격적인 홈 IoT(사물인터넷) 프로젝트를 진행하려면 아두이노를 인터넷에 연..

it-g-house.tistory.com


1. 이더넷(Ethernet) 모듈

 

아두이노 이더넷(Ethernet) 모듈

 

인터넷 케이블을 직접 연결하여 사용하는 이더넷 모듈(ENC28J60)입니다. 모듈 형태에서 볼 수 있듯이 랜선(LAN)을 모듈의 케이블 커넥터에 바로 연결할 수 있고 아두이노가 인터넷 통신을 할 수 있게 합니다. 'ENC28J60' 칩셋을 사용해서 모델명이 보통 ENC28J60 이더넷 모듈이라고 불리고, 온라인상에서 제조사에 따라 모양이나 사용된 부품이 조금씩 다르게 판매하고 있습니다.

 

칩셋 ENC28J60
구동 전압 3.1~3.4 V DC
동작 온도 0 ~ 70
Oscillator 25mhz
LAN IEEE 802.3 호환

 

2. 이더넷(Ethernet) 모듈 배선

 

이더넷 모듈은 구동 전압이 3.1~3.4V로 VCC 핀을 아두이노의 3.3 V 핀에 연결해주고, GND는 아두이노 GND와 연결합니다. 이더넷 모듈은 아두이노와 통신을 시리얼 통신(Serial communication) 중 하나인 SPI (Serial Peripheral Interface: 직렬 주변기기 인터페이스) 통신을 사용하고 있습니다. 랜선(LAN)을 통해서 송수신하는 신호를 아두이노에 MOSI, MISO, SCK, SS선을 통해 전달하는데, 각각의 역할은 표와 같습니다.

 

  기능
MOSI(SI): Master Out, Slave In 마스터(아두이노)에서 데이터를 출력하기 위한 신호
MISO(SO): Master In, Slave Out 슬레이브(이더넷 모듈)에서 데이터를 출력하기 위한 신호
SCK: Serial Clock Clock (동기화) 신호
SS(CS): Slave Select 데이터를 송수신할 슬레이브(이더뎃 모듈)를 선택하기 위한 신호

 

 

 

 

SPI 통신에 대해선 다음에 시리얼 통신에 대해 다루면서 자세히 알아보도록 하겠습니다. 다시 이더넷 모듈로 돌아가서 전원을 위한 VCC와 GND pin 외에 6개 핀 중에서 SI, SO, SCK, CS만 사용합니다. SI는 11번 핀, SO는 12번 핀, SCK는 13번 핀에 연결하고 CS는 8번 핀에 연결하면 되는데 나중에 프로그램에서 자유롭게 바꿀 수 있습니다. 연결하실 때 아래 그림 참고하시면 될 거 같아요 ^^

 

 

아두이노(Arduino) 인터넷 연결하기 - 이더넷(Ethernet) 모듈 배선

 

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

 

이더넷 모듈을 사용하려면 역시 '라이브러리(Library)'가 필요합니다. 지난번에도 잠깐 언급하였지만 '라이브러리'를 간단히 설명하면 이미 코딩된 프로그램을 인용해서 사용하는 개념 정도로 이해하시면 됩니다. 라이브러리 파일은 아래 첨부해 두겠습니다.

EtherCard.zip
0.12MB

첫 번째 코딩은 DHCP(Dynamic Host Configuration Protocol: 동적 호스트 구성 프로토콜)와 DNS(Domain Name System)를 테스트하여 IP주소를 할당받을 수 있는 프로그램입니다. 

 

#include <EtherCard.h>

#define REQUEST_RATE 5000 // milliseconds

// ethernet interface mac address
static byte mymac[] = { 0x74,0x69,0x69,0x2D,0x30,0x31 };

byte Ethernet::buffer[700];

void setup () {
  Serial.begin(57600);
  Serial.println("\n[getDHCPandDNS]");

  // Change 'SS' to your Slave Select pin, if you arn't using the default pin
  if (ether.begin(sizeof Ethernet::buffer, mymac, SS) == 0)
    Serial.println( "Failed to access Ethernet controller");

  if (!ether.dhcpSetup())
    Serial.println("DHCP failed");

  ether.printIp("My IP: ", ether.myip);
  ether.printIp("Netmask: ", ether.netmask);
  ether.printIp("GW IP: ", ether.gwip);
  ether.printIp("DNS IP: ", ether.dnsip);
}

void loop () {
}

 

앞서 얘기했듯이 CS핀은 어디든지 연결할 수 있습니다. 그렇기 때문에 프로그램 중간쯤에 'Change 'SS' to your Slave Select pin, if you arn't using the default pin'이라고 적혀 있듯이 CS 핀을 8번 핀에 연결했으면 if (ether.begin(sizeof Ethernet::buffer, mymac, SS) == 0)에서 SS를 8로 바꿔주시면 됩니다. 프로그램 코딩 후 랜선(LAN)을 이더넷 모듈에 연결하고 아두이노에 스케치를 통해 업로드를 합니다. 시리얼 모니터(Serial Monitor) 창을 열면 IP, Netmask, 게이트웨이, DNS 정도를 확인할 수 있습니다. IP 192.168.0.102로 할당되었네요 ^^ 

 

이더넷 모듈 사용하여 아두이노 인터넷 연결하기

 

아두이노(Arduino) 인터넷 연결하기 - 이더넷(Ethernet) 모듈 사용하여 IP 할당받기

 


 

여기까지 이더넷(Ethernet) 모듈을 사용하여 아두이노(Arduino)로 인터넷을 연결하고 IP를 할당 받는 방법을 알아보았습니다. 그럼 진짜 인터넷이 되는지 궁금하니까 웹상으로 데이터도 보내보고 ping도 확인해보는 작업을 해보도록 하겠습니다.

 

긴 글 읽어주셔서 감사합니다. 질문사항이나 추가적인 내용 궁금하시면 언제든지 댓글로 남겨주세요 ^^

 

 

* 이어서 이더넷 모듈을 사용하여 웹브라우저에 간단한 텍스트를 출력해보는 방법에 대해서 포스팅 완료하였습니다. 관심있으신 분은 아래 링크를 타고 들어가셔서 참고 부탁드립니다 ^^ (2019.11.17 업데이트)

 

Arduino 아두이노 인터넷 사용 - 이더넷(Ethernet)과 웹브라우저

지난 포스팅에서 아두이노(Arduino)로 인터넷을 연결하는 방법 중 이더넷(Ethernet) 모듈을 사용해보았습니다. 'ENC28J60' 이더넷 모듈을 아두이노 UNO R3 보드와 연결하여 DHCP(Dynamic Host Configuration Proto..

it-g-house.tistory.com

 

 

 

 

반응형
반응형

 

 

 

온습도 센서(Temperature and Humidity sensor)는 환경 측정에서 중요하면서도 기본적인 센서로 많이 사용됩니다. 중요하지만 비교적 흔하게 구할 수 있는 센서라 시중에 다양한 종류의 제품이 있고 기능적으로는 큰 차이가 나지 않습니다. 하지만 사용 장소나 측정 목적에 따라서 차별점은 분명하기 때문에 적합한 제품으로 선택할 필요가 있습니다. (단순 온습도 경향만 측정하는데 너무 비싼 센서를 사용할 필요는 없죠 ㅎㅎ) 오늘은 아두이노(Arduino)에서 많이 사용되고 있는 온습도 센서의 종류 및 사용법를 알아보고 각각의 특징을 살펴보도록 하겠습니다. 

 


 

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

 

1. DHT11

 

온라인상에서 가장 흔하게 찾아볼 수 있는 센서입니다. 가격이 저렴한 만큼 온도와 습도의 측정 가능한 범위가 온도는 0 ~ 50 ℃, 습도는 20 ~ 80 %로 비교적 제한적이고 측정주기 또한 2초 간격으로 측정 가능합니다. 온도가 급격히 변하지 않는 실내의 온습도를 측정하는데 적합할 듯합니다. 또한 가격이 저렴하기 때문에 다량으로 필요할 때도 좋을 듯합니다. DHT11 온습도 센서의 사용법과 프로그램 코딩 방법 링크 및 라이브러리 파일 첨부하께요~ 참고 부탁드립니다.

 

DHT11 온습도 센서 모듈(DHT11 module)

동작 전압 (Power) 3~5 V DC
온도 측정 범위 (Temperature range) 0 ~ 50 ℃ (±2 ℃)
습도 측정 범위 (Humidity range) 20 ~ 80 % (±5 %) 
최대소비전력 (Max. current) 2.5 mA
데이터 주기 (sampling rate) 0.5 Hz (2초당)

 

 

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

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

it-g-house.tistory.com

DHT_Library.zip
0.01MB

 


 

2. DHT22 (AM2302)

 

DHT11 온습도 센서 업그레이드 버전으로 역시 온라인상에서 흔하게 찾아볼 수 있는 센서입니다. DHT11에 비해 조금 더 비싸지만 충분히 저렴합니다. 측정 가능한 범위는 온도가 -40 ~ 80 ℃, 습도는 0 ~ 100 % 범위로 가능하고 측정주기는 1초 간격으로 측정됩니다. 왠만한 실내외의 온습도는 측정 가능할 듯 하고 가격이 저렴하기 때문에 다량으로 필요할 때도 좋을 듯합니다. 사용법과 라이브러리는 DHT11과 거의 동일합니다. 프로그램 코딩에서 DHT11을 DHT22로 바꿔주기만 하면 됩니다. 아래 코드블럭 참고 부탁드려요~

 

DHT22 온습도 센서 모듈(DHT22 module)

 

동작 전압 (Power) 3.3~5.5 V DC
온도 측정 범위 (Temperature range) -40 ~ 80 ℃ (±0.5 ℃)
습도 측정 범위 (Humidity range) 0 ~ 100 % (±2~5 %) 
최대소비전력 (Max. current) 2.5 mA
데이터 주기 (sampling rate) 1 Hz (1초당)
#include<dht.h>
dht DHT;
#define DHT22_PIN 2
float hum; //Stores humidity value
float temp; //Stores temperature value

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

void loop() {
DHT.read22(DHT22_PIN);
hum = DHT.humidity;
temp = DHT.temperature;

Serial.print("Humidity: ");
Serial.print(hum);
Serial.print(" %, Temp: ");
Serial.print(temp);
Serial.println(" Celsius");
delay(1000); //Delay 1 sec.
}

 

 

 

3. AM2301 (DHT21)

 

DHT 온습도 센서 시리즈의 다른 형태 버전으로 AM2301 센서입니다. DHT11와 DHT22에 비해 더 비싸지만 회로를 감싸는 외부 케이스가 있어서 실외에서 사용하기 괜찮습니다. 측정 가능한 범위는 온도는 -40 ~ 80 ℃, 습도는 0 ~ 99.9 % 범위로 측정 가능하고 측정주기는 1초 간격으로 측정됩니다. 왠만한 실내외의 온습도는 측정 가능할 듯하고 내부 회로가 보호되기 때문에 실외 환경에서도 사용하기도 좋습니다. 역시 사용법과 라이브러리는 DHT11, DHT22와 거의 동일합니다. 프로그램 코딩에서 DHT11을 DHT21로 바꿔주기만 하면 됩니다. 아래 코드블럭 참고 부탁드려요~

AM2301 온습도 센서 모듈(AM2301 module)

 

동작 전압 (Power) 3.3~5.2 V DC
온도 측정 범위 (Temperature range) -40 ~ 80 ℃ (±0.5 ℃)
습도 측정 범위 (Humidity range) 0 ~ 99.9 % (±3 %) 
최대소비전력 (Max. current) 2.5 mA
데이터 주기 (sampling rate) 1 Hz (1초당)
#include<dht.h>
dht DHT;
#define DHT21_PIN 2
float hum; //Stores humidity value
float temp; //Stores temperature value

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

void loop() {
DHT.read21(DHT21_PIN);
hum = DHT.humidity;
temp = DHT.temperature;

Serial.print("Humidity: ");
Serial.print(hum);
Serial.print(" %, Temp: ");
Serial.print(temp);
Serial.println(" Celsius");
delay(1000); //Delay 1 sec.
}

 

▼ 같은 제품 구매하시려면 아래 링크!! ▼

 

DHT21 아두이노 온도 습도 디지털 센서 / AM2301 sensor : 스토어플랜트

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

smartstore.naver.com

 

4. AM2305

 

AM23XX 시리즈 센서입니다. DHT11와 DHT22에 비해 더 비싸지만 측정오차가 가장 작고 회로를 감싸는 외부 케이스가 있어서 실외에서 사용하기 좋습니다. 측정 가능한 범위는 온도는 -40 ~ 80 ℃, 습도는 0 ~ 99.9 % 범위로 측정 가능하고 측정주기는 1초 간격으로 측정됩니다. 왠만한 실내외의 온습도는 측정 가능할 듯하고 내부 회로가 보호되기 때문에 실외 환경에서도 사용하기도 좋습니다. 

 

AM2305 온습도 센서 모듈(AM2305 module)

 

동작 전압 (Power) 3.3~5 V DC
온도 측정 범위 (Temperature range) -40 ~ 80 ℃ (±0.3 ℃)
습도 측정 범위 (Humidity range) 0 ~ 99.9 % (±2 %) 
최대소비전력 (Max. current) 2.5 mA
데이터 주기 (sampling rate) 1 Hz (1초당)

 

▼ 같은 제품 구매하시려면 아래 링크!! ▼

 

AM2305 온도 습도 디지털 센서 : 스토어플랜트

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

smartstore.naver.com

 


 

 

 

실외에서 온도를 측정할 때는 태양의 복사열(Radiation)으로 인해 실제 온도보다 더 높게 측정됩니다. 그렇기 때문에 실외 환경 측정기들은 보통 백엽상(radiation shield)으로 보호됩니다. 예전에는 사진같은 백엽상을 많이 보셨을 건데요 기상청에서도 측정방식이 바뀌면서 최근에는 아마 볼 수 있는 곳이 드물겁니다. 

 

백엽상  https://www.hankookilbo.com/News/Read/201808020958716535

 

그래서 백엽상 역할을 하는 Radiation shield(미니백엽상) 제품이 판매되고 있습니다. 실외에서 온습도 센서를 사용할 때는 정확한 측정을 위해 미니백엽상에 넣어 사용하는게 좋습니다. AM2305 제품이 길게 생긴 이유도 Radiation shield안에 설치하기 좋은 형태로 보입니다. 아마 온라인상에서 AM2305 전용 Radiation shield 제품도 판매하지 않을까요? ㅎㅎ

 

Radiation shield

 

 

* 접촉식 온도센서

 

접촉식 온도센서로 아두이노로 자주 사용되는 센서입니다. 직접 사용해보지는 않았지만 방수가 되기 때문에 어항 물의 온도나 뜨거운 액체의 온도를 측정할 때 유용할 듯 합니다. 그러나 접촉식으로 대류와 접촉에 따른 온도 전달은 다를 수 있기 때문에 공기 중의 온도도 잘 반영되는지는 실험해 보는게 좋을 듯 합니다. 

아두이노 접촉식 온도 센서

 

동작 전압 (Power) 3.0~5.5 V DC
온도 측정 범위 (Temperature range) -10 ~ 85 ℃ (±0.5 ℃)
데이터 주기 (Query time) 750ms
특징 방수가능

 

 

 

반응형
반응형

 

 

 

지난 시간 스케치로 프로그램을 코딩할 때 자주 사용되는 꼭 필요한 명령어 몇 가지를 알아보았습니다. IT 비전공자가 프로그램 언어를 기본부터 완전히 이해하면서 배우는 것은 쉬운 일은 아닙니다. 그렇기 때문에 직접 프로그램을 코딩해보면서 익숙해지거나 온라인상에서 다른 사람이 코딩한 아두이노 프로그램을 한 줄 한 줄 파헤쳐봐야 쓰임이나 로직을 이해할 수 있습니다.

 

그래도 아는게 있어야 조금 더 보인다고.. 저도 조금씩 보이고 있지만.. 배울수록 산 넘어 산이 너무 많더군요 ㅠㅠ 그래도 원하는 프로젝트를 위하여~! 오늘은 프로그램을 코딩할 때 정말 많이 사용되는 몇 가지 명령어를 알아볼까 합니다.

 


명령어 기능 사용법
pinMode I/O 핀의 입출력 설정 pinMode(pin#, mode);
If 조건문 조건에 따라 다음 명령을 실행 if 조건, true일때 명령, else false일때 명령
digitalWrite 디지털 핀에 High, Low 값 출력  digitalWrite(pin#, HIGH); or digitalWrite(pin#, LOW);

 

 

 

1. pinMode( )

 

아두이노의 디지털 입출력 핀(digital Input/Output pin)을 '입력'으로 사용할지 '출력'으로 사용할지 설정하는 명령어입니다. pinMode(pin, mode); 형태로 사용하면 되는데 여기서 pin은 설정하려는 핀번호가 되며, mode는 OUTPUT, INPUT 또는 INPUT_PULLUP 중 하나를 선택해서 입력하면 됩니다. 주의하실 점은 대문자로 입력해야 합니다.  

void setup(){
pinMode(13, OUTPUT); // 13번 핀을 output으로 설정
}

void loop{
}

설정하려는 핀번호를 13번으로 mode를 OUTPUT, 출력으로 코딩하면 13번 핀에서 5V를 출력할 수 있는 상태로 설정합니다. INPUT, 입력으로 코딩하면 13번 핀을 통해 센서 data를 읽을 수 있는 상태로 설정합니다.

 

INPUT_PULLUP모드는 아두이노의 '내부 pull-up 저항'을 사용하겠다는 설정입니다. 모든 아두이노 보드에는 일반적으로 내부 pull-up 저항이 있으며, pull-up저항을 사용하는 이유는 플로팅(floating)을 방지하기 위해 사용됩니다. 플로팅 상태는 영어 floating 뜻 그대로 '떠 있다'는 의미로 입력 신호가'1(High)'인지 '0(Low)'를 정확히 알 수 없는 상태로 있다는 말합니다. 플로팅 상태에서는 아주 작은 노이즈 만으로 신호가 왔다 갔다 하기 때문에 센서나 아두이노가 오작동을 일으키게 됩니다.  플로팅 개념에 대해서 알기 쉽게 설명해놓은 블로그 링크 첨부해두겠습니다. 참고하시면 될 거 같아요 ^^ (코딩 학원의 설명이라 굿입니다. ㅋㅋ)

 

 

[기초 지식] 풀업 저항이란? (Pull-Up저항이란)

안녕하세요 강남 대치동 1등 코딩학원! 어린이 청소년 전문 자율참여형 코딩학원. 잼있고 깊게, 비교할수록...

blog.naver.com

 


 

2. If (조건문)

 

프로그램을 조금이라도 다뤄보신 분은 If 조건문은 아주 많이 보셨을 정도로 세상 모든 것은 조건문으로 이루어졌다 해도 과언이 아닐 정도로 유용하게 많이 사용할 수 있는 명령어입니다. '조건'문은 말 그대로 '특정 조건이 주어질 때 그 조건이 맞으면 A 명령을 틀리면 B 명령을 해라' 같은 내용을 코딩할 때 사용합니다. 일상생활에서 자동문에 사람이 가까이 오면 문을 열고 아닐 때는 닫혀있어라... 든지 실내 온도가 설정 온도보다 올라가면 에어컨을 더 강하게, 설정온도보다 내려가면 좀 약하게 틀어라.. 같은 명령을 If 조건문으로 구성할 수 있습니다. 아두이노도 스케치의 프로그램 언어가 C/C++을 기반으로 하기 때문에 당연히 If 조건문을 사용할 수 있습니다.

 

사용법은 if 다음 괄호( ) 안에 조건을 쓰고, 중괄호{ } 안에 조건이 맞을 때 실행하고자 하는 'A 명령'을 적으면 됩니다. 그리고 이어서 else { } 안에 조건이 틀린 경우 'B 명령'을 적으면 됩니다.

if (조건)

{

명령문 A;

}

else

{

명령문 B;

}

형태로 사용하면 되는데..

 

예를 들어 실내'습도'가 설정 값보다 올라가면 LED 경고등을 점등하고, 아니면 LED는 끄라는 내용으로 프로그램을 코딩해보겠습니다. 앞서 다룬 온습도 센서 사용법과 프로그램 코딩 법은 아래 링크 참고 부탁드립니다.

 

 

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

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

it-g-house.tistory.com

#include<dht.h>
dht DHT;
#define DHT11_PIN 2
float hum;  //Stores humidity value
float temp; //Stores temperature value

void setup() {
  Serial.begin(9600);
  pinMode(LED_BUILTIN, OUTPUT);
 }

void loop() {
  DHT.read11(DHT11_PIN);
    hum = DHT.humidity;
    temp = DHT.temperature;
  
  Serial.print(temp);
  Serial.print(",");
  Serial.println(hum);
  
  if(hum > 70){
  digitalWrite (LED_BUILTIN, HIGH);
  }
  else{
  digitalWrite (LED_BUILTIN, LOW);
  }
  delay(2000); //Delay 2 sec.
  }

 

우선 아두이노에 내장(built in)되어 있는 LED를 점등하기 위해 'pinMode(LED_BUILTIN, OUTPUT);'이라고 설정합니다. 그리고 hum(습도) 값이 70보 크면..이라는 if 조건문을 사용하였습니다. if (조건)에서 'hum > 70'이라고 습도 값이 70보다 클 때라는 조건을 적었습니다. 부등호 '>'는 조건 연산자에 해당하는데 우리가 흔히 아는 부등호와 비슷하지만 다음과 같이 사용해야 합니다. 

 

조건연산자 if 조건에서 사용 예
A == B A와 B가 같음 if(hum == 70) //hum 값이 70 일 때
A != B A와 B가 같지 않음 if(hum != 70) //hum 값이 70 아닐 때
A > B A가 B보다 큼 if(hum > 70) //hum 값이 70보다 클 때
A < B A가 B보다 작음 if(hum < 70) //hum 값이 70보다 작을 때
A>=B A가 B보다 크거나 같음  if(hum >= 70) //hum 값이 70보다 크거나 같을 때
A<=B A가 B보다 작거나 같음 if(hum <= 70) //hum 값이 70보다 작거나 같을 때

습도가 70 이상이면 'digitalWrite(LED_BUILTIN, HIGH)'로 내장 LED를 점등하고, else 명령어를 사용하여 그렇지 않으면 'digitalWrite(LED_BUILTIN, LOW)'로 LED를 꺼지는 명령문이 됩니다.

 


 

 

 

3. digitalWrite()

 

원하는 디지털 핀(digital pin)에 'High(1)' 값 또는 'Low(0)' 값을 출력하는 명령어입니다. 예를 들어 pinMode(13, OUTPUT);를 통해 13번 핀을 OUTPUT모드로 설정 후 'digitalWrite(13, HIGH);' 명령어를 통해 HIGH값을 출력할 수 있습니다. if() 문 예제를 통해서도 내장된 LED에 digitalWrite() 명령을 통해 HIGH(점등)와 LOW(소등) 값을 출력하여 LED를 제어하였습니다.  

 

스케치를 통해 프로그램을 코딩하고 아두이노로 업로드하면 시리얼 모니터(Serial Monitor)에는 아래와 같이 나오고 습도(hum) 값이 70보다 크면 LED가 점등하고 아닐 경우 LED가 꺼지는 것을 볼 수 있습니다. 

 

아두이노(Arduino)를 사용해서 실내습도가 70보다 크면 내장 LED를 점등하고 아니면 소등하는 if 조건문 실행

 


여기까지 아두이노(Arduino)에서 자주 사용되는 'pinMode();', 'if(){}' 'digitalWrite();' 명령어에 대해 알아보았습니다. 오늘 알아본 조건문 코딩을 기반으로 온도나 습도가 설정 값보다 높거나 낮을 때 경고등을 점등한다던지 알람이 울린다던지.. 더 나아가 외부기기(에어컨, 선풍기)를 작동하는 프로젝트로 확장할 수 있습니다. 와~ 우~ 

 

다음번 포스팅에도 더 쓰임이 좋은 명령어를 소개해 보겠습니다. 긴 글 읽어 주셔서 감사합니다. 질문이나 추가적으로 필요하신 내용 있으면 언제든지 댓글로 남겨주세요~ ^^

 

아두이노 프로그램 코딩 입문도 참고하세요~

 

Arduino (아두이노) 스케치 프로그램 코딩 입문

아두이노(Arduino)는 프로그램에 의해 동작하는 Micro-controller입니다. 그렇기 때문에 프로그램 코딩을 어느 정도 할 수 있어야 원하는 홈 IoT (사물인터넷) 같은 프로젝트를 진행할 수 있습니다. 저처럼 프로그..

it-g-house.tistory.com

 

 

 

반응형
반응형

 

 

 

지난 포스팅에서 아두이노를 이용하여 온습도 센서를 동작해 보면서 아두이노의 기본적인 사용법과 코딩하는 방법을 알아보았습니다. 본격적인 홈 IoT(사물인터넷) 프로젝트를 진행하려면 아두이노를 인터넷에 연결하는 것은 필수겠죠? ^^  인터넷 연결하는 방법은 다양하게 있지만 대표적으로 몇 가지를 알아보고 각각의 필요 제품과 특징을 알아보겠습니다.

 


1. 이더넷(Ethernet) 연결

 

"이더넷(Ethernet)은 컴퓨터 네트워크 기술의 하나로, 일반적으로 LAN, MAN 및 WAN에서 가장 많이 활용되는 기술 규격이다." (출처: 위키피디아)라고 정의되어 있습니다. 근거리 통신망(LAN)의 대표적인 통신 프로트콜이라고 말할 수 있는데.. 사실 이런 정의는 잘 모르겠고~ ㅎㅎ 그냥 인터넷 케이블을 직접 연결하는 이더넷 모듈(ENC28J60)을 사용하여 인터넷을 사용하는 방법입니다. 모듈 형태에서 볼 수 있듯이 랜선(LAN)을 모듈의 케이블 커넥터에 바로 연결할 수 있고 아두이노가 인터넷 통신을 할 수 있게 합니다.  

아두이노 인터넷 연결: 이더넷 모듈 ENC28J60
아두이노 인터넷 연결: ENC28J60 이더넷 쉴드

 

'ENC28J60' 칩셋을 사용해서 모델명이 보통 ENC28J60 이더넷 모듈이라고 불리고, 온라인상에서 제조사에 따라 모양이나 사용된 부품이 조금씩 다르게 판매하고 있습니다. 또 아두이노 보드와 적층하여 사용하는 '쉴드(shield)' 형태도 판매하고 있습니다. 개인적으로 쉴드 제품들은 초보자들이 사용하는데 친절하지 못하고 제약이 많아서 추천하지 않고 있습니다. 이더넷 모듈을 사용하는 방법과 코딩하는 내용은 아래 링크 첨부하도록 하겠습니다. (2019.11.06 업데이트)

 

Arduino 아두이노 인터넷 연결하기 - 이더넷(ethernet) 사용 방법

아두이노(Arduino)를 사용하여 홈 IoT(사물인터넷)를 구현하는 프로젝트를 진행하기 위해서는 우선 인터넷이 되어야 합니다. 지난 포스팅에도 설명하였지만 일반적인 아두이노 모델인 UNO R3, Nano, MEGA 같은 보..

it-g-house.tistory.com

 


 

2. 와이파이(Wifi) 연결

 

두 번째로 어디서나 쉽게 사용할 수 있는 와이파이(Wifi)를 연결하는 방법입니다. 일반적으로 아두이노 UNO R3, MEGA, NANO에는 내장된 와이파이 칩이 없기 때문에 ESP8266 와이파이 모듈을 사용합니다. ESP8266 칩셋을 사용하기 때문에 ESP8266 와이파이 모듈이라고 하고 온라인상에서 검색하면 ESP-01 제품을 가장 많이 찾을 수 있습니다. ESP 시리즈는 ESP-14까지 출시되었는데 버전에 따라 다양한 사양과 기능을 활용할 수 있다고 합니다. 가장 일반적으로 사용하는 모델이 ESP-01이며 제가 사용하는 통신도 간단한 데이터 정도만 주고받으면 되기 때문에 ESP-01 모듈로 충분하게 잘 사용하고 있습니다. 기획하시는 프로젝트에 따라 맞게 구입하시면 될 거 같아요 ^^ 

아두이노 인터넷 사용: ESP-01 와이파이 모듈
아두이노(Arduino) 인터넷 사용하기: ESP8266 와이파이 모듈(Wifi module) 종류

 

아두이노(Arduino) 인터넷 사용하기: ESP8266 와이파이 쉴드(Wifi shield)

 

ESP8266 와이파이도 쉴드 형태로 판매되고 있습니다. 역시나 아두이노에 입문하신 지 얼마 안 되시는 분들에게는 쉴드 사용은 추천하지 않지만...(저도 동작하는데 고생~ 고생을 해서 ㅠㅠ) 추후에 와이파이 실드 사용법은 포스팅하도록 하겠습니다. 직접 사용해 본 단점은 업로드하기 너무 불편했다는 것과 실드를 아두이노와 결착하고 나면 기존 아날로그 I/O 핀이 먹통이 되어 버리고 실드에 있는 1개 핀만 사용할 수 있다는 거였죠.. 이런저런 제약이 많았던 녀석이었습니다...

 

최근에는 ESP8266 와이파이 칩이 내장되어 있는 아두이노 UNO 제품 및 다양한 버전의 제품이 개발되었는데 아두이노 공식 홈페이지 스토어 https://store.arduino.cc/usa/에서 판매하고 있습니다. 응? 그럼 왜 와이파이 모듈을 사용하냐고요?.... 변명일 수 있지만... 와이파이가 내장되어 있는 제품은 비쌉니다...ㅠㅠ UNO 같은 경우 $44.9이네요... 일반 UNO R3가 $22.0이니까 2배가 넘네요... ESP-01 모듈은 온라인상에서 3천 원대 정도면 구할 수 있으니까!! 조금만 몸과 머리가 고생하면... ㅠㅠ 아 슬프네요 ㅎㅎㅎ

 

아두이노 우노 와이파이(Arduino UNO Wifi)

 

ESP-01 와이파이 모듈 사용하는 방법과 프로그램 업로드 후 'AT command'로 와이파이 접속해서 IP 확인하는 내용을 최근에 업데이트 하였습니다. 아래 링크 참고 부탁드리께요 ^^ (2019.11.19 업데이트)

 

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

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

it-g-house.tistory.com

 

 

3. 3G/LTE 연결하기

 

마지막으로 3G/LTE를 사용하는 방법으로 SIM5320 칩셋을 사용하는 3G 모듈을 사용합니다. 다른 모듈과 마찬가지로 온라인상에서 제조사에 따라 조금씩 다른 모듈 형태와 부품을 사용하고 있습니다. LTE 모듈은 SIM7000, SIM7600 같은 LTE를 지원하는 칩셋을 사용하여 만들어집니다. 모듈을 보면 USIM을 장착할 수 있는 곳이 있는데 Nano USIM이 아닌 Micro USIM 크기라 사용하시던 USIM을 바로 꼽아 사용하시기에는 불편함이 있습니다. 역시나 3G/LTE 쉴드 버전도 판매되고 있습니다. 

 

아두이노 인터넷 사용: SIM5320 3G 모듈
아두이노 인터넷 사용: SIM5320 3G 모듈 뒷면 (USIM 장착 가능)

3G 모듈을 사용할 경우 USIM을 개통해야 하고, 일반적으로 우리나라에서 개통되는 USIM을 사용하려면 법적으로 3G 모듈의 기기인증을 받아하는 것으로 알고 있기 때문에 사실 편하게 사용하기는 쉽지 않은 듯합니다. 그리고 사용한다 해도 데이터 비용이 계속 지불해야 하기 때문에 인터넷이 안 되는 산골에서 프로젝트를 하지 않는 한 굳이 3G/LTE 모듈을 사용할 일이 있을까 생각되네요 ^^ (참고로 아두이노 홈페이지 스토어에서 아두이노용 USIM을 구입할 수도 있네요 ㅎㅎ)

 


여기까지 아두이노(Arduino)를 인터넷(Internet)에 연결하는 방법들과 각 모듈에 대해서 알아보았습니다. 저는 이더넷과 와이파이 모듈을 사용해봤는데 모두 인터넷 연결이 잘 되었습니다. 각 모듈 사용방법은 정리되는 데로 바로 포스팅하도록 하겠습니다.

 

궁금하신 부분이나 필요하신 주제 있으면 언제든지 댓글로 의견 부탁드립니다 ^^

 

 

 

반응형
반응형

 

 

 

프로젝트를 진행하면서 센서를 사용하여 수집한 데이터를 실시간 모니터링하거나 시각화하고 싶은 상황이 자주 발생합니다. 문득 아두이노(Arduino)는 그래프(graph) 기능이 없나? 하고 의문이 드시겠죠.. ㅎㅎ 있습니다!! 그래서 오늘은 아두이노로 그래프(graph): Serial Plotter 기능에 대해서 알아보겠습니다.

 


아두이노 통합개발환경(IDE) 스케치 창 상단 메뉴에서 Tool -> Serial Plotter 메뉴를 찾을 수 있습니다. 시리얼 모니터(Serial Monitor)와 같이 아두이노로부터 시리얼 통신(Serial communication)으로 들어오는 데이터를 실시간으로 plotting 해서 그래프를 그려주는 기능을 합니다. 

 

아두이노(Arduino) 시리얼 플로터(Serial Plotter)

데이터를 수신 전에는 실행해봤자 백지 창만 덩그러니 열리니.. 이전 포스팅에서도 자주 다루었던 온습도 센서를 가지고 사용하는 방법을 알아보겠습니다. 온습도 센서 사용법과 코딩은 아래 링크 첨부드려요~ 온습도 센서가 아니더라도 사용하시고 있던 어떤 센서로도 데이터만 시리얼 통신으로 들어오면 아무 문제없습니다.

 

 

 

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

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

it-g-house.tistory.com

온습도 센서에서 사용한 프로그램을 아두이노에 업로드 후 시리얼 플로터를 실행시키면 아래와 같이 그래프가 plotting 되는 것을 확인할 수 있습니다.

 

아두이노(Arduino) 시리얼 플로터(Serial Plotter) 실행 화면

응?? 에?? 뭔가 좀 이상하죠? ㅠㅠ 음.. Y축 값을 봤을 때 60~70 사이의 그래프 값이 습도, 아래 25 정도 그래프 값이 온도 값 같은데... 범례도 이상하죠?? ㅎㅎ 이렇게 나오는 이유는 데이터에 '글자'가 포함되어 있기 때문입니다. 시리얼 모니터에서 다음과 같이 나오기 때문에 범례에 'Humidity, %, Temp, Celsius' 글자가 다 표시됩니다.

 

아두이노 시리얼 모니터 온습도 데이터 출력

 

 

 

 그래서 지난번 엑셀과 연동할 때와 비슷하게 프로그램을 조금 수정하여 코딩해야 합니다. void setup에서 Serial.println("Temp, Humi"); 명령어로 범례를 지정해 주고 void loop 부분에서는 data만 받고 데이터와 데이터 사이는 쉼표', '로 구분되도록 코딩합니다.

 

아두이노 온습도 데이터를 시리얼 플로터로 plotting하기

 다시 아두이노로 업로드 후 시리얼 플로터를 실행하면 짠~! 

 

아두이노(Arduino)로 온습도 데이터를 시리얼 플로터(Serial Plotter)를 사용하여 그래프(graph) 그리기 

호우~! x축 시간에 따라 그래프가 plotting되는 것을 볼 수 있습니다. delay를 2초로 했으니 하나의 점이 2초마다 찍힐 거에요 ㅎㅎ 범례에 파란색은 온도, 빨간색은 습도라고 표시되고 아까 추측했던 대로 위 상단의 60~70 사이의 그래프가 습도, 아래쪽 25 정도 값의 그래프가 온도입니다.

 

이와 같이 아두이노 스케치 자체적으로 그래프를 plotting 하는 기능을 지원하고 있으나 센서가 많아지던가 Y축 range가 다른 값들은 그래프를 그리기 어려울 거라 예상됩니다. 그래서 엑셀에 연동하여 실시간으로 데이터를 받아 엑셀의 파워풀한 그래프 그리기로 다양하게 시각화할 수 있습니다. 아두이노를 엑셀과 연동하는 방법은 아래 링크 첨부드려요~ 참고 부탁드립니다.

 

 

 

Arduino 아두이노 시리얼 통신 데이터를 엑셀에 저장/연동하기

아두이노(Arduino)를 사용하여 온습도 센서(Temperature and Humidity sensor)를 동작하고 측정된 데이터를 출력하고 저장하는 방법까지 알아보았습니다. 앞서 알아본 저장방법은 *.txt 파일로 저장되어서 엑셀을..

it-g-house.tistory.com


여기까지 아두이노(Arduino)로 시리얼 플로터(Serial Plotter)를 사용하여 그래프(graph)를 그려보았습니다. 간단하게 그래프 그리기에 아주 유용하지만 복잡한 데이터에는 한계가 있을 거 같아요 ^^

 

그럼 다음 시간에는 아두이노 프로그램 코딩에 대해 조금 더 알아보도록 하겠습니다. 궁금하신 거나 추가적으로 필요한 내용 있으면 언제든지 댓글로 남겨주세요~^^

 

#include<dht.h>
dht DHT;
#define DHT11_PIN 2
float hum; //Stores humidity value
float temp; //Stores temperature value

void setup() {
Serial.begin(9600);
Serial.println("Temp,Humi");
}

void loop() {
DHT.read11(DHT11_PIN);
hum = DHT.humidity;
temp = DHT.temperature;

Serial.print(temp);
Serial.print(",");
Serial.println(hum);
delay(2000); //Delay 2 sec.
}

 

 

 

반응형
반응형

 

 

지난 포스팅까지 아두이노(Arduino)를 사용하여 온습도 센서(Temperature and Humidity sensor)를 동작하고 측정된 데이터를 출력하고 저장하는 방법까지 알아보았습니다. 앞서 알아본 저장방법은 *.txt 파일로 저장되어서 엑셀을 많이 사용하시는 분들은 엑셀에 바로 연동하는 방법은 없는지 궁금하셨을 거 같아요 ^^ 

 

그래서!! 오늘은 아두이노 시리얼 통신(Serial communication) 데이터를 엑셀에 연동하여 저장하는 방법을 알아보겠습니다. 엑셀과 연동이 되면 데이터를 실시간으로 받으면서 데이터의 변화 추이를 그래프로 그려도 볼 수 있으며 분석하는데 더 많은 활용을 할 수 있습니다. 

 

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

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

it-g-house.tistory.com


아두이노 시리얼 통신 데이터를 엑셀과 연동하려면 'PLX-DAQ' 프로그램을 사용해야 합니다. 'PLX-DAQ'는 'Parallax'라는 회사에서 무료로 제공하고 있는 프로그램인데 업데이트는 제공하지 않아서 2010 이하 버전의 Microsoft office와는 연동이 안된다고 합니다. 그러나!! 많은 고수님들이 자체적으로 업데이트하여 v2.11까지 웹상에서 쉽게 구할 수 있습니다. 아래 다운로드 링크와 압축 파일 첨부해두게요~ 우선 다운로드하여주세요 ^^ (Parallax 회사 홈페이지에서 원본 PLX-DAQ파일을 다운 받아 사용해도 저는 정상적으로 동작하더라고요 ㅎㅎ 근데 업데이트된 버전이 기능도 추가되고 사용하기 훨씬 편하니 아래 파일을 사용하는 것을 추천드려요~)

https://forum.arduino.cc/index.php?topic=437398.msg3013761#msg301376

 

PLX-DAQ-v2.11.zip
0.49MB

압출을 풀면 아래와 같이 'PLX-DAQ-v2.11' 엑셀 파일을 볼 수 있습니다.

 

PLX-DAQ 실행파일

엑셀 파일을 실행하면 엑셀 상단에 아래와 같이 매크로 사용 여부를 묻는 경고창이 뜰 겁니다. 

 

'콘텐츠 사용'을 클릭하면 아래와 같이 실행 화면을 볼 수 있습니다. 만약 PLX-DAQ창이 뜨지 않으면 엑셀 시트 중단의 'Open PLX DAQ UI'를 클릭해 주세요~

 

아두이노 시리얼 통신(Serial communication) 데이터를 엑셀에 저장할 수 있는 PLX-DAQ 소프트웨어 실행 화면

여기까지 실행시켜놓고 아두이노로부터 시리얼 통신 데이터를 받으려면 아두이노의 프로그램도 약간의 조정이 필요합니다. 엑셀로 받기 위한 데이터 배열을 조정해 준다고 정도로 생각하시면 될 거 같아요 ^^ 시리얼 데이터는 어떤 데이터가 들어오던 상관은 없지만 이해를 돕기위해 지난 포스팅에서 진행하였던 온습도 센서를 이용해서 실제로 엑셀과 연동하면서 포스팅하도록 하겠습니다. (코드블럭은 본문 맨 아래 첨부해 두었습니다~)

 

 

 

아두이노와 엑셀을 연동하는 'PLX-DAQ' 사용을 위한 코딩

스케치로 돌아가서 이전 포스팅에서 코딩한 DHT11 온습도 센서를 위한 코딩을 위와 같이 프로그램을 수정하시면 됩니다. DHT11 온습도 센서 사용 방법과 코딩에 대해서는 아래 링크 걸어두게요~ 참고 부탁드립니다.

 

 

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

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

it-g-house.tistory.com

수정된 프로그램을 compile후 아두이노로 업로드하고 시리얼 모니터(Serial Monitor)를 실행하면 아래와 같이 데이터가 출력되는 것을 확인할 수 있습니다.

 

아두이노 시리얼 통신을 통한 DHT11 온습도 센서 데이터 출력 (엑셀과 연동 방법)

엑셀 시트가 셀 단위로 이루어져 있고 셀에 데이터를 하나하나 넣는 과정에서 셀 과셀 구분을 쉼표', '로 한다고 생각하시면 됩니다. 그래서 처음 'CLEARDATA'는 데이터를 전부 지워서 리셋하는 내용이고 그다음 LABEL, Temp, Humi이 엑셀에서 첫 행에서 각 데이터 이름이 됩니다. 그 뒤로 온도와 습도 data들이 계속 기록되는 순서로 진행된다고 이해하시면 됩니다.

 

그럼 다시 엑셀 시트로 돌아가서~ PLX-DAQ 실행 창에서 Setting 부분의 Port와 Buad rate를 PC에 연결되어 있는 아두이노와 동일하게 맞춰주시고 아래에 'Connect'를 누르면 아두이노의 시리얼 통신으로 들어오는 온도와 습도 데이터가 엑셀에 저장되는 것을 실시간으로 확인할 수 있습니다. 와우~ 신기하죠?? ㅎㅎ 아!! 여기서 주의하실 점은 시리얼 모니터 창은 닫으셔야 정상 동작합니다.

 

아두이노 엑셀연동을 위한 PLX-DAQ 셋팅

아래 엑셀 창에서 처럼 왼쪽 A, B열에 첫 행에는 열 이름 Temp, Humi 그 밑으로 2행부터 데이터가 실시간으로 기록됩니다. PLX-DAQ창에서 'Display direct debug'를 클릭하면 실질적으로 몇 시 몇 분에 데이터가 들어오는지 확인할 수 있습니다.

 

아두이노 시리얼 통신을 통한 DHT11 온습도 센서 데이터를 PLX-DAQ 프로그램을 이용하여 엑셀에 저장하는 방법

추가적으로 새로운 엑셀 시트에 저장할 수 있는 기능과 logging을 멈출 수 있는 기능 등이 있습니다. 직접 하나둘씩 만져보시면 아마 어떻게 사용하는지 금방 알 수 있을 거예요 ^^

 

 

 


여기까지 아두이노(Arduino)의 시리얼 통신(Serial communication)을 통한 데이터를 엑셀에 연동하여 저장하는 방법을 알아보았습니다. 엑셀에 실시간으로 기록되기 때문에 이를 이용해서 실시간으로 그래프를 그려본다던지 좀 더 시각화하여 데이터를 볼 수도 있을 거 같아요~ ㅎㅎ

 

다음 포스팅에는 아두이노를 사용하여 실시간으로 그래프를 그리는 방법과 이를 통하여 datalogger 기능을 살펴보겠습니다. 궁금하신 거나 추가적으로 필요한 내용 있으면 언제든지 댓글로 남겨주세요~ ^^

#include<dht.h>
dht DHT;
#define DHT11_PIN 2
float hum; //Stores humidity value
float temp; //Stores temperature value

void setup() {
Serial.begin(9600);
Serial.println("CLEARDATA");
Serial.println("LABEL,Temp,Humi");
}

void loop() {
DHT.read11(DHT11_PIN);
hum = DHT.humidity;
temp = DHT.temperature;

Serial.print("DATA,");
Serial.print(temp);
Serial.print(",");
Serial.println(hum);
delay(2000); //Delay 2 sec.
}

 

 

 

반응형
반응형

 

 

 

아두이노(Arduino)를 사용하여 온습도 센서(Temperature and Humidity sensor)를 작동하고 센싱한 값을 출력하는 것은 아두이노의 기본적인 사용법을 습득하는데 많은 도움이 됩니다. 저도 온습도 센서로 연습하면서 홈 IoT 프로젝트를 설계하는데도 많은 영감을 얻었습니다. 지난 포스팅에는 온습도 센서를 사용하는 방법에 대해 알아보았습니다.

 

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

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

it-g-house.tistory.com

오늘은 온습도 센서에서 읽은 데이터를 출력하고 저장하는 방법에 대해 알아보겠습니다.

 


  • 센서 데이터 출력하기

DHT11 온습도 센서를 동작하기 위해 아래와 같이 스케치로 프로그램을 코딩하였습니다. 지난 포스팅에서 아두이노 프로그램 코딩시 자주 사용되는 명령어를 알아봐서 그런지 처음 볼 때보다 프로그램이 조금씩 보이는 듯하네요 ㅎㅎ (기분 탓일 수도 있겠지만요.. 뮤뮤) 

 

아두이노 스케치를 통한 DHT11 온습도 센서 프로그램 코딩

 

프로그램에서 변수 'hum'에는 습도 값이, 'temp'에는 온도 값이 저장하도록 되어 있고 Serial.print와 Serial.println 명령어를 통해 데이터를 출력하고 있습니다. 

Serial.print("Humidity: "); -> Humidity: 라고 출력됩니다.

Serial.print(hum); -> 변수 'hum'에 저장된 습도 값을 출력합니다.

Serial.print(" %, Temp: "); -> %, Temp: 이라고 출력됩니다.

Serial.print(Temp); -> 변수 'Temp'에 저장된 온도 값을 출력합니다.

Serial.println(" Celsius"); -> Celsius라고 출력되고 줄 바꾸기를 합니다.

 

다 같이 출력되면 반복으로 인해

Humidity: 55%, Temp: 25 Celsius

Humidity: 54%, Temp: 25 Celsius

Humidity: 56%, Temp: 25 Celsius

...

이런 식으로 출력됩니다.

 

그럼 실질적으로 온습도 센서가 정상적으로 작동하는지 지금 온도와 습도가 얼마인지 출력 값을 보겠습니다. 스케치 상단 메뉴에서 툴(Tool) -> 시리얼 모니터(Serial Monitor)를 클릭하면 

 

 

우와~ 대박 신기!! 글 쓰고 있는 지금 습도는 62.2 %, 온도는 27.1 ℃이네요 ㅎㅎ 여기서 보레이트(Baud rate)를 프로그램의 Serial.begin(9600) 속도와 맞춰주시는 거 잊지 마시고요 ^^

 

 


 

  • 센서 데이터 저장하기

이렇게 실시간 모니터링하는 것도 좋지만 그래프로 시각화하고 홈 IoT에 활용하려면 데이터 저장이 필요하겠죠? 저장하는 방법은 세가지 정도 있습니다.

 

1. 단순하게 시리얼 모니터의 텍스트를 그대로 복사해서 메모장에 붙여넣는 방법입니다. 가장 간단한 방법이지만 나중에 데이터 정리하기가 쉽지 않을 수도 있겠네요..

 

2. 윈도우에서 명령 프롬프트(Command 창)를 실행해서 'COPY 포트번호 파일이름.txt' 형태로 명령어를 적어주면 됩니다. 그러면 아두이노가 연결되어 있는 포토 번호 (예: COM9)로 들어오는 시리얼 통신 데이터가 '파일이름.txt'(아무거나 정하시면 됩니다.) 파일로 저장됩니다. 

실시예) COPY COM9 TempHum.txt

명령 프롬프트는 윈도우 실행파일 검색창(윈도우 자판키+s)에서 '명령 프롬프트' 또는 'cmd'로 검색하면 찾을 수 있습니다. 종료할 때는 Ctrl-z를 누르면 종료됩니다. 주의하실 점은 스케치에서 시리얼 모니터 창을 닫아야 명령 프롬프트에서 포트를 인식할 수 있습니다.

 

3. 마지막으로 가장 확실하고 편한 방법이지만 프로그램을 이용해야 하는 번거로운 점이 있습니다. 'CoolTerm'이라는 프로그램을 사용하는데 시리얼 통신으로 들어오는 내용을 읽고 저장하는 기능을 합니다. 파일을 업로드해놓고 싶지만 10MB 이상이라 다운로드는 아래 링크 첨부해놓을게요~

https://coolterm.en.lo4d.com/windows

https://coolterm.sooftware.com/windows

 

다운로드한 후 압출 풀고 CoolTerm 실행파일을 실행시키면 아래와 같이 창이 뜹니다.

 

아두이노 시리얼 통신(Serial Communication) 데이터 저장하기 (CoolTerm 사용)

왼쪽 아래 보면 아두이노가 연결되어 있는 시리얼 포트번호(COM9)와 통신속도(9600), 등의 정보를 확인할 수 있습니다. 그리고 Disconnected로 연결이 되어 있지 않다는 것을 표시하고 있습니다. 메뉴 상단의 'Connect'를 클릭하면 

 

아두이노 시리얼 통신(Serial Communication) 데이터 저장하기 (CoolTerm 연결)

Disconnected가 Connected로 되어 연결된 시간과 함께 표시됩니다. 그리고 스케치의 시리얼 모니터에서 보았듯이 지금 습도와 온도 데이터가 전송되는 것을 볼 수 있습니다. 이상태에서 데이터를 저장하려면 상단 메뉴의 'Connection -> Capture to Textfile -> Start'를 클릭하면

 

아두이노 시리얼 통신(Serial Communication) 데이터 저장하기 (CoolTerm 데이터 저장)

 

저장할 파일 경로와 이름을 정할 수 있습니다. 파일 이름을 정한 뒤 '저장'을 누르면

 

아두이노 시리얼 통신 데이터 저장할 파일이름 설정

 

아두이노 시리얼 통신(Serial Communication) 데이터 저장하기 (CoolTerm 데이터 *.txt 저장)

 왼쪽 아래에 데이터 Capturing 진행 상황이 표시됩니다. 이제 데이터가 저장되고 있습니다. 호우~! ㅎㅎ 데이터 저장을 멈추려면 'Connection -> Capture to Textfile -> Stop'을 클릭하면 됩니다. 그러면 Start 누른 시점부터 Stop까지의 데이터만 설정한 파일명.txt로 저장이 됩니다.

 

아두이노 시리얼 통신(Serial Communication) 데이터 저장방법

데이터 저장은 반드시 Connected 상태에서 가능하니까 주의하세요 ^^

 

 


여기까지 아두이노(Arduino)를 사용한 DHT 온습도 센서의 데이터를 출력하고 저장하는 방법을 알아보았습니다. 놀랍지 않나요? ㅎㅎ 이제 뭐든 할 수 있을 거 같아요 ^^ 다양한 센서를 구입해서 구동해보는 재미가 있어요~ 아! 근데 아두이노에 사용하는 외부기기를 구입하실 때는 라이브러리(library)가 웹상에서 구할 수 있는지, 판매 측에서 제공하는지를 꼭 확인하셔야 합니다. 아직 기기에서 나오는 신호를 직접 잡기는 너무너무 어렵기 때문에 잘 못하면 기기만 덩그러니~ 사는 경우가 발생합니다... (경험이에요 뮤^뮤) 

 

그럼 본격적으로 홈 IoT 프로젝트를 진행하려면 인터넷이 되야겠죠??!! 다음 시간에는 아두이노에 Wifi를 달아보겠습니다. 빠르다고요?? 노노 할 수 있어요~! 다들 화이팅! (아.. 저만 화이팅 하면 되나요...)

 

 

* 저.. 엑셀로 그래프도 그릴 수 있으면 좋겠는데... 엑셀에 바로 연동하여 저장하는 방법은 없나요?? 있습니다!! 다른 프로그램을 사용하는데 실시간으로 연동되어 데이터가 들어오기 때문에 그래프를 실시간으로 그려서 변화 추이를 알아보거나 하기도 좋을 듯 합니다. 관련 내용은 아래 링크 첨부하겠습니다 참고 부탁드려요~

 

Arduino 아두이노 시리얼 통신 데이터를 엑셀에 저장/연동하기

지난 포스팅까지 아두이노(Arduino)를 사용하여 온습도 센서(Temperature and Humidity sensor)를 동작하고 측정된 데이터를 출력하고 저장하는 방법까지 알아보았습니다. 앞서 알아본 저장방법은 *.txt 파일로 저..

it-g-house.tistory.com

 

 

반응형
반응형

 

 

 

아두이노(Arduino)는 프로그램에 의해 동작하는 Micro-controller입니다. 그렇기 때문에 프로그램 코딩을 어느 정도 할 수 있어야 원하는 홈 IoT (사물인터넷) 같은 프로젝트를 진행할 수 있습니다. 저처럼 프로그램 비전공자에게는 감조차 오지 않는 영역이지만... 그래도 자주 사용하는 명령어 정도는 정확히 알아두는 게 좋을 듯하여 이번 포스팅을 기획하였습니다.

 

오늘은 아두이노 프로그램 명령어에 대해서 기본적인 몇 가지를 처음 시작하는 입장에서 이해하기 쉽게 풀어보도록 하겠습니다.

 


  • 아두이노 프로그래밍 언어 (C/C++)

아두이노 프로그래밍 언어는 기본적으로 C/C++을 기반으로 구성되어 있으며 코딩부터 compile 및 upload를 스케치(sketch: 통합개발환경 소프트웨어)를 통해서 이루어집니다. 그렇기 때문에 우선 스케치부터 설치하셔야 합니다. 스케치 설치방법은 링크 걸어두어요~ 참고 부탁드립니다.

 

 

아두이노(Arduino) 시작하기 - 통합개발환경(IDE): 스케치(sketch)

아두이노(Arduino)는 마이크로 컨트롤러(Micro-controller)로 구성된 프로그램에 따라 명령을 수행합니다. 이전 포스팅에서 살펴보았듯이 아두이노를 통해 외부기기나 센서를 컨트롤할 수 있습니다. 구상하는 대로..

it-g-house.tistory.com

스케치를 실행하면 다음과 같은 첫 화면을 볼 수 있습니다. 여기서 '//' 이후에 글들은 프로그램에 영향을 주지 않습니다. 즉, 설명이나 주석을 달 때 '//' 이후 글자를 적으면 됩니다. 

 

아두이노 스케치 첫화면

 

  • 아두이노 void 명령어

모든 프로그램이 그렇듯 일반적으로 위에서 아래로 내려가면서 순차적으로 명령어를 실행합니다. 스케치 화면을 보면 'void setup()' 명령어가 있는데 주석에도 설명되어 있듯이 프로그램 초기 셋업 코드를 위한 부분입니다. 프로그램이 진행될 때 필요한 세팅을 먼저 실행한다고 생각하시면 됩니다. 하드웨어 설정, 변수 설정 데이터 초기화 등에 관한 코드를 대괄호{ } 안에 적으면 됩니다. 세팅 후에 실질적으로 아두이노가 어떻게 동작하라는 내용은 'void loop()' 명령어의 대괄호{ } 안에 코딩하면 되는데 'loop' 단어 뜻 그대로 { } 안의 명령어가 계속 반복됩니다.

 

  • 기본적인 아두이노 명령어

자주 사용되는 기본적인 아두이노 명령어를 알아보고 실질적으로 예제를 통해 어떻게 사용되는지 살펴보겠습니다.

 

명령어 기능 사용법
  include 외부 라이브러리를 스케치 안에 포함할 때 사용 #include <라이브러리 파일명>
define 매크로 상수와 함수를 정의할 때 사용 #define 변수 상수(함수)
serial.begin 아두이노의 시리얼 통신(Serial communication)을 시작할 때 사용 Serial.begin(통신속도);
serial.print 아두이노 시리얼 통신의 데이터 값을 출력할 때 사용  Serial.print("출력내용");
delay 프로그램을 진행을 원하는 시간만큼 일시적으로 멈출 때 사용 delay(msec.);

 

 

 

1. include 

 

include 명령어는 라이브러리(사전에 코딩된 프로그램)를 스케치에서 사용할 때 필요합니다. 아두이노에서 사용하는 라이브러리는 대부분 '*. h' (헤더 파일)과 '*. cpp' (소스파일)로 구성되어 있는데 include명령을 통해서 헤더 파일을 불러와서 우리가 사용할 함수와 변수를 정의를 합니다. 사용할 때는 예로 #include<dht.h> 같은 형태가 됩니다. 만약 코드는 제대로 작성하였는데 라이브러리 파일이 없는 경우 컴파일(compile)할 때 "No such file or directory#include<dth.h>"라고 에러 메시지가 뜹니다.

 

2. define

 

define은 매크로 상수와 함수를 정의할 때 사용하는 명령어입니다. 사용 예는 '#define value 0' 라고 코딩하면 value라는 변수는 0으로 정의됩니다. 이렇게 value값을 정의해놓으면 프로그램상에서 다양하게 적용할 수 있습니다. 숫자 '0' 처럼 상수로 정의할 수 도 있고 함수로도 정의할 수 있는데 이 부분은 추후 프로그램 코딩할 때 구체적 사례를 포스팅하겠습니다.

 

3. serial.begin

 

serial.begin은 아두이노의 시리얼 통신(Serial communication)을 시작하라는 명령어입니다. 아두이노는 다양한 기기와 통신을 할 수 있는데 시리얼 통신을 사용합니다. 앞서 알아보았듯이 USB 케이블을 통해 전원 공급뿐만 아니라 스케치로 코딩된 프로그램을 PC로부터 아두이노로 업로드하기 때문에 PC와 통신도 가능합니다. 사용 예로 Serial.begin(9600);라고 적어주면 됩니다. 여기서 괄호( )안의 숫자는 통신속도를 말하는데 보레이트(Baud Rate)라고 하며 단위는 bps (bit per second)로 1초간 전송되는 신호 수를 정할 수 있습니다. 보레이트 값이 높을수록 속도가 빠르지만 송수신 속도가 같아야 데이터를 수신하는데 문제가 없습니다.

 

4. serial.print (serial.println)

 

serial.print (serial.println)는 시리얼 통신의 데이터를 출력할 때 사용합니다. 스케치에서 지원하는 시리얼 모니터(Serial Monitor)에 출력 값을 확인할 수 있는데 데이터 값을 print 하라는 명령어입니다.

 

스케치(sketch) 시리얼 모니터(Serial Monitor)

사용 예로 아래와 같이 스케치에 코딩하여 아두이노로 업로드(Upload)하면 시리얼 모니터에 "hello world!!"라고 출력되는 것을 확인할 수 있습니다. 이 때 주의하실 점은 void loop() 명령어에 아무 내용이 없더라도 지우면 compile이 되지 않더라고요.. 뮤뮤 'void setup()'과 'void loop()' 명령어 형식은 기본적으로 유지되어야 프로그램이 정상적으로 작동합니다.

 

아두이노(Arduino) 시리얼 통신으로 "hellow world!!" 송신하기
아두이노(Arduino) 시리얼 모니터 "hello world!!" 출력하기

시리얼 모니터에서는 보레이트를 Serial.begin(9600);에서 설정한 속도와 같은 값을 설정해야 정상적으로 "hello world!!"가 출력됩니다.

 

이번에는 serial.print("hello world!!");를 'void loop()'에 넣어보겠습니다. 앞서 설명했듯이 void loop에서는 명령어가 반복되기 때문에 시리얼 모니터에 "hello world!!"가 무한히 출력되는 것을 볼 수 있습니다.

 

아두이노(Arduino) 시리얼 통신으로 "hellow world!!" 반복 송신하기
아두이노(Arduino) 시리얼 모니터 "hello world!!" 반복 출력하기

여기서 serial.print와 serial.println의 차이를 알 수 있습니다. 다시 'void loop()' serial.println("hello world!!");이라고 적고 아두이노에 업로드하면 시리얼 모니터에 아래와 같이 한칸 아랫줄에 "hello world!!"가 계속 출력 되는 것 볼 수 있습니다. 이처럼 serial.println은 출력 후 한칸 아랫 줄로 바꿔라는 명령어가 포함되어 있습니다. 참고로 serial.print("hello world!!\n")이라고 해도 같은 기능을 합니다. '\n'가 한 칸 아랫 줄로 이동하는 기능이기 때문입니다. (워드나 텍스트에서 글자치고 한줄 바꿀 때 엔터와 같은 기능이라고 생각하면 이해가 빠를 듯 하네요^^) 

 

아두이노(Arduino) 시리얼 모니터 "hello world!!" serial.println 출력하기

 

5. delay

 

delay명령어는 영어 뜻 그대로 프로그램을 진행을 원하는 시간만큼 일시적으로 멈출 때 사용합니다. 사용 예로 'delay(1000);'이라고 적어주면 1,000 ms 즉 1초 동안 delay 후 프로그램이 진행됩니다.

 


여기까지 아두이노(Arduino) 스케치를 통한 기본적인 프로그램 명령어에 대해 알아보았습니다. 오늘 알아본 명령어는 자주 사용되어서 금방 익숙해질 겁니다. 프로젝트를 진행하면서 새로운 명령어를 하나씩 배워보도록 하겠습니다. 

 

다음 포스팅에는 앞서 진행한 온습도 센서(Temperature and Humidity sensor) 사용법에서 코딩한 프로그램을 하나씩 파헤쳐보고 온습도 값을 시리얼 모니터에 출력하는 방법을 알아보겠습니다.

궁금하신거나 필요하신 내용 있으면 언제든지 댓글에 남겨주세요 ^^

 

 

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

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

it-g-house.tistory.com

void setup(){
Serial.begin(9600);
Serial.print("Hello World!!");
}

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

void loop(){
Serial.println("hello world!!");
}
void setup() {
Serial.begin(9600);
}

void loop(){
Serial.print("hello world!!\n");
}

 

 

 

반응형
반응형

 

 

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

 

센서의 종류는 너~~무 다양한데 그중 '온습도 센서(Temperature and Humidity sensor)'는 단순하면서도 많은 곳에서 중요하게 사용됩니다. 그래서 오늘은 센서 동작의 입문이라고 할 수 있는 온습도 센서를 아두이노에 장착하고 동작하는 방법을 알아보겠습니다.

 


아두이노(Arduino)로 쉽게 사용할 수 있고 온라인에서 흔하게 구할 수 있는 온습도 센서는 몇 가지 종류가 있지만, 우선 네이버나 구글에서 ‘온습도 센서’라고 검색하면 모델명 DHT11이라는 제품을 가장 먼저 볼 수 있습니다. 저렴한 가격에 비해 실내 일상 환경의 온도나 습도를 측정하는데 무리가 없고 사용하기 쉬워서 많이 사용되는 모델입니다. 추가로 쓸만한 온습도 센서 및 동작원리에 관해서는 아래 정리한 내용 링크 참고 부탁드려요 ^^

 

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

온습도 센서는 환경 측정에서 중요하면서도 기본적인 센서로 많이 사용됩니다. 흔하면서도 중요한 센서라 다양한 종류의 제품이 있고 기능적으로 큰 차이 나지 않습니다. 그렇기 때문에 사용 장소나 측정 목적에..

it-g-house.tistory.com

  • DHT11 온습도 센서

온습도 센서(DHT11)
온습도 센서 모듈(DHT11 module)

 

DHT11 온습도 센서는 단일품과 모듈 형태로 판매를 합니다. 단품으로 구매를 하면 아두이노에 연결할 때 저항을 따로 연결해야 하고 그러면 빵판도 필요하고 번거롭기 때문에 모듈형으로 구매하는 것이 최선입니다. 센서는 몸통과 4 pin으로 구성되어 있고 사진에 표기되어 있듯이 VCC, OUT (data), NC (not connect), GND 순서로 되어 있습니다. 모듈형 같은 경우는 판매사마다 조금은 다르지만 대부분 보드에 DHT11 센서가 실장 되어 있고 3 pin (OUT, VCC, GND)으로 구성되어 있습니다. 추후 완성품을 만들 때도 모듈형이 여러모로 편하기 때문에 모듈형을 위주로 포스팅하도록 하겠습니다. 

 

동작 전압 (Power) 3~5 V
온도 측정 범위 (Temperature range) 0 ~ 50 ℃ (±2 ℃)
습도 측정 범위 (Humidity range) 20 ~ 80 % (±5 %) 
최대소비전력 (Max. current) 2.5 mA
데이터 주기 (sampling rate) 1 Hz

 

  • 아두이노와 DHT11 센서 연결

센서를 동작하기 위해서는 기본적으로 센서가 필요한 전원이 공급되어야 합니다. DHT11의 동작 전압이 3~5V로 아두이노의 3.3V나 5V pin 어디에나 연결해도 괜찮습니다. 그림과 같이 VCC(+) 핀은 아두이노의 3.3V 또는 5V 핀에 연결하고 GND는 GND핀에 연결합니다. 그리고 센서가 측정한 데이터를 아두이노가 받아야 하기 때문에 Data output 핀과 아두이노의 디지털(DIGITAL) 핀과 연결합니다. 저는 디지털 2번 핀과 연결하였는데 이 부분은 프로그램에서 바꿀 수 있기 때문에 2번부터 13번까지 어디에 연결해도 상관은 없습니다.

 

만약에 센서를 여러개 사용하시면 각 센서의 Data output 핀을 아두이노의 디지털 핀에 번호를 다르게 각각 연결하면 됩니다. 동작전압 공급은 VCC는 한꺼번에 3.3V 또는 5V에 연결하고, GND 역시 한꺼번에 아두이노의 GND에 연결하면 되는데.. 이는 병렬연결(한꺼번에 연결) 일 때 동일하게 Voltage가 공급되기 때문입니다. 주의하실 부분은 아두이노가 제공할 수 있는 Power 출력 범위보다 많은 수의 센서 또는 전력을 많이 먹는센서를 사용하면 센서가 정상적으로 작동이 안 될 수 있습니다. (집에 와트(W)수 높은 가전제품을 한 번에 꼽으면 안 되는 것과 같은 원리입니다.) 

   

온습도 센서(DHT11) 회로도

 

 

 

 

 

  • 스케치(sketch)로 프로그램 코딩

DHT11 센서를 동작하고 온도와 습도 data를 불러오는 프로그램을 스케치를 통해서 코딩합니다. 스케치를 아직 설치하지 않으신 분은 아래 링크 참조하셔서 설치 부탁드려요~

 

아두이노(Arduino) 시작하기 - 통합개발환경(IDE): 스케치(sketch)

아두이노(Arduino)는 마이크로 컨트롤러(Micro-controller)로 구성된 프로그램에 따라 명령을 수행합니다. 이전 포스팅에서 살펴보았듯이 아두이노를 통해 외부기기나 센서를 컨트롤할 수 있습니다. 구상하는 대로..

it-g-house.tistory.com

아래와 같이 코딩 후에 한가지 추가해야 하는데... 그건 '라이브러리(Library)'라고 하는 파일입니다. 여기서 '라이브러리'를 간단히 설명하면 이미 코딩된 프로그램을 인용해서 사용하는 개념 정도로 이해하시면 됩니다. 아래 명령어에서 첫 줄에 있는 #include <dht.h>가 'dht.h' 라이브러리를 사용하겠다는 내용입니다. 

 

아두이노 스케치를 이용한 DHT11 센서 프로그램 코딩

 

라이브러리가 필요한 것은 DHT11 센서에서 측정되는 값은 대부분 센서가 그렇듯 단순 전기적인 voltage 값입니다. 이를 우리가 알아볼 수 있게 calibration 된 값으로 변경하고 디지털 값으로 변화시켜 하나의 output선으로 출력해주는 과정과 같은 센서가 측정하는데 필요한 프로그램들이 'dht.h' 라이브러리에 녹아져 있는 것입니다. 덕분에 우리는 편하게 라이브러리만 인용하여 위와 같은 간단한 코딩이 가능한 것입니다. (코딩 블록은 본문 맨 아래 첨부해 두겠습니다.)

 

라이브러리는 인터넷 검색으로 쉽게 찾을 수 있으며 라이브러리 추가하는 방법은 파일을 아두이노 라이브러리 폴더에 넣어 두시면 됩니다. 대부분 C:\Users\Documents\Arduino\libraries 경로로 예상하나 다들 설치한 곳에 따라 다를 수도 있으니 라이브러리 폴더를 찾아주세요~ 그리고 폴더에 압축 푼 파일을 옮겨두고 스케치를 다시 켜주세요~ 스케치를 껐다가 다시 켜야 스케치가 인식을 하니 참고하세요 ^^ 제가 사용하는 라이브러리 파일은 여기 첨부하겠습니다. 

DHT_Library.zip
0.01MB

 

  • 아두이노에 프로그램 업로드(Upload)

코딩이 완료되었으면 메뉴 상단의 '체크' 표시를 눌러 프로그램이 이상이 없는지 Compile을 실행합니다.

 

Compile 실행

이상이 없으면 아래와 같이 "Done compiling"이라고 완료됩니다.

 

Compile 완료

그리고 메뉴 상단의 Upload를 눌러주면 코딩한 프로그램이 아두이노로 업로드됩니다. 업로드 완료 메세지가 정상적으로 나타나면 모두 완료되었습니다. 그럼 온습도 센서가 정상적으로 동작하고 있는지 확인해야겠죠? 센서가 수집하고 있는 데이터를 보기 위해 시리얼 통신(Serial communication)을 통해 컴퓨터에서 볼 수 있습니다. 스케치에서 시리얼 모니터(Serial Monitor)를 실행하면 아래와 같이 창이 뜨고 온도와 습도 데이터를 확인할 수 있습니다.

 

프로그램 업로드(Upload) 하기
아두이노(Arduino) 시리얼 모니터(Serial Monitor) 실행
아두이노(Arduino) 시리얼 모니터(Serial Monitor)를 통해 온습도 데이터 확인하기

 

 

 

 

 


여기까지 아두이노(Arduino)에 온습도 센서(DHT11)를 설치하고 동작하는 프로그램까지 코딩해 보았습니다. 처음 정상적으로 구동될 때 엄청 신기하고 신났던 게 기억나네요 ㅎㅎ 간단한 센서 동작을 응용하여 여러 개의 센서를 동작하면 복잡한 프로젝트도 진행할 수 있습니다.   

 

이제 온습도 센서(Temperature and Humidity sensor)가 수집하는 데이터를 활용하기 위해서 우선 컴퓨터로 데이터를 받아야겠죠? 다음 시간에는 시리얼 통신(Serial communication)으로 들어오는 데이터를 저장하는 방법에 대해 알아보겠습니다. 의견이나 질문 있으시면 언제든지 댓글로 남겨주세요~ ^^

 

한걸음 한걸음씩!!

 

#include<dht.h>
dht DHT;
#define DHT11_PIN 2
float hum; //Stores humidity value
float temp; //Stores temperature value

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

void loop() {
DHT.read11(DHT11_PIN);
hum = DHT.humidity;
temp = DHT.temperature;

Serial.print("Humidity: ");
Serial.print(hum);
Serial.print(" %, Temp: ");
Serial.print(temp);
Serial.println(" Celsius");
delay(2000); //Delay 2 sec.
}

 

▼ 온도 습도 센서 사러가기!! ▼

 

DHT21 아두이노 온도 습도 디지털 센서 / AM2301 sensor : 스토어플랜트

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

smartstore.naver.com

* 프로그램 코딩에 관해 처음이신 분은 아래 정리한 내용 참고 부탁드립니다. 질문사항이나 추가적으로 필요한 내용 있으면 언제든지 댓글로 남겨주세요 ^^

 

Arduino (아두이노) 스케치 프로그램 코딩 입문

아두이노(Arduino)는 프로그램에 의해 동작하는 Micro-controller입니다. 그렇기 때문에 프로그램 코딩을 어느 정도 할 수 있어야 원하는 홈 IoT (사물인터넷) 같은 프로젝트를 진행할 수 있습니다. 저처럼 프로그..

it-g-house.tistory.com

명령어 기능 사용법
  include 외부 라이브러리를 스케치 안에 포함할 때 사용 #include <라이브러리 파일명>
define 매크로 상수와 함수를 정의할 때 사용 #define 변수 상수(함수)
serial.begin 아두이노의 시리얼 통신(Serial communication)을 시작할 때 사용 Serial.begin(통신속도);
serial.print 아두이노 시리얼 통신의 데이터 값을 출력할 때 사용  Serial.print("출력내용");
delay 프로그램을 진행을 원하는 시간만큼 일시적으로 멈출 때 사용 delay(msec.);

 

 

 

반응형
반응형

 

 

아두이노(Arduino)를 구입하려고 온라인에서 'UNO R3'모델을 검색해보면 DIP타입? SMD타입? CH340? 이런 식으로 여러 종류가 있는 것을 확인할 수 있습니다. 가격이 너무 천차만별이고 생긴 건 다 비슷비슷해서 정말 아두이노 '아'자도 모를 때는 뭘 사야 할지 난감하죠 ㅠㅠ 

 

아두이노는 오픈소스(open-source)이기 때문에 누구든 어디에서든 아두이노 보드(Board)를 똑같이 만들어서 영리 목적으로 판매해도 문제가 되지 않습니다. 이러한 이유로 비슷하지만 다양한 종류의 보드들이 시중에서 판매 중이고 기능적으로 동일하지만 사용한 부품이 다르거나 만든 곳이 다른 제품들이 많습니다. 이러한 보드들을 '호환 보드'라고 합니다. 그래서 통상적으로 처음 상업적으로 제작한 이탈리아 제품을 '정품'이라고 합니다. (엄밀히 따지면 정품이라기보다 우량품? 정도로 저는 생각됩니다.) 하지만 다들 정품이라고 하면 통용되는 말이기 때문에 저도 포스팅에 정품 보드라고 할게요 ㅎㅎ

  

그럼 오늘은 아두이노 호환 보드 종류와 정품 보드와의 차이점에 대해 알아보겠습니다.

 


온라인상에서 구입할 수 있는 아두이노 우노 R3 종류는 세 가지입니다. 왼쪽부터 정품(2~3만 원대, DIP타입), 정품과 똑같이 생긴 호환 보드(7~8천 원대, DIP타입), 'CH340'이라고 불리는 호환 보드(4~5천 원대, SMD 타입)가 있습니다. 

 

아두이노 우노 R3 (Arduino UNO R3) 정품보드와 호환보드

여기서 DIP타입은 'Dual In-line Package' 약자이며, SMD 타입은'Surface Mount Device' 약자로 MCU (Micro Controller Unit) 반도체 칩 형태가 아래 사진 같이 생긴 것을 말합니다. 회로 보드에 실장 하는 방법에 따라 구분되는데 단순하게 칩에 다리가 있고 없고 차이라고 생각하셔도 됩니다. 사진에서 볼 수 있듯이 DIP 타입이 칩에 다리가 있는 제품이고 칩이 실장 된 보드 뒷면을 볼 때도 다리 구멍에 납땜된 것을 알 수 있습니다. 반대로 SMD 타입은 칩에 다리가 없기 때문에 칩이 실장 되어 있는 보드 뒷면이 깨끗합니다. 

 

DIP타입 ATmega328P칩
SMD타입 ATmega328P칩

 

보드에 실장 되어 있는 형태가 다를 뿐 MCU 반도체 칩은 정품, 호환 보드 모두 ATMega328P로 구성되어 있습니다. 정품 보드와 외관상으로 거의 비슷한 두 번째 보드는 다른 부분을 찾기 힘들 정도로 비슷하네요;; 뒷면의 프린팅만 다른정도..? 'CH340' 호환 보드는 회로 배열이나 사용된 부품이 일부 다르게 생겼습니다. 

 

 


그럼 실제적으로 기능에 차이점이 없는지 알아보겠습니다. 정품 보드와 호환 보드 모두 USB B type 케이블로 연결 가능합니다. 아두이노를 PC와 연결하는 방법은 링크 걸어요~ 참고 부탁드립니다.

 

아두이노(Arduino) 시작하기 - 스케치 (sketch) 실행

아두이노(Arduino)를 사용하려면 통합개발환경(IDE): 스케치(sketch) 소프트웨어를 통해 프로그램을 코딩하게 됩니다. 프로젝트를 진행하기 위해 스케치를 실행하고 아두이노를 PC와 연결하는데 간혹 진행이 잘 안..

it-g-house.tistory.com

여기서 잠깐!! 'CH340' 호환 보드는 PC와 통신하는 칩이 'WCH CH340G'로 구성되어있기 때문에 USB를 꼽아도 Port에 아두이노 호환 보드가 잡히지 않을 겁니다. 그래서 http://www.wch.cn/download/CH341SER_ZIP.html에서 CH340 드라이버를 다운로드하여서 설치해야 합니다. 

WCH 홈페이지 다운로드

혹시 다운로드가 안되시는 분들을 위해 파일을 업로드 해놓으께요

CH341SER.ZIP
0.18MB
드라이버 설치 파일

드라이버를 설치하고 PC와 아두이노가 정상적으로 연결되면 포트에 'CH340' 호환 보드를 인식하는 것을 확인할 수 있습니다.

 

 


 

저는 경험한 적은 없는데 첫 번째 호환 보드는 가끔 프로그램이 보드로 업로드가 안된다고 하네요.. 어떤 글에서 업로드하는 동시에 보드의 리셋 버튼을 눌렀더니 된다고 합니다 ^^ 이런저런 귀찮은 일이 싫으면 돈을 조금 더 투자해서라도 정품 보드를 사야겠네요 ㅎㅎ 정품 보드는 사진처럼 케이스부터 정품스럽습니다 ㅎㅎㅎ

 

아두이노 우노 R3 정품

 

▼ 아두이노 우노 R3 정품 (이탈리아 제품) 사러 바로가기 ▼

 

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

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

smartstore.naver.com


 

여기까지 아두이노 우노 R3 (Arduino UNO R3) 호환 보드에 대해 간단히 알아보았습니다. 앞으로 계속 테스트하면서 외부기기나 센서를 동작할 때 호환보드 기능들의 문제점이나 차이점이 발생하면 포스팅하도록 하겠습니다.

 

다음에는 온습도 센서를 간단한 프로그램 코딩을 통해 동작해보도록 하겠습니다.

 

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

 

 

 

 

반응형
반응형

 

 

아두이노(Arduino)를 사용하기 위해서는 통합개발환경(IDE): 스케치(sketch) 소프트웨어를 통해 프로그램을 코딩해야 합니다. 프로그램을 통해 아두이노를 원하는 대로 동작하게 하고 사용자 편리에 맞게 프로그래밍부터 수정 및 아두이노로 업로드(코딩된 프로그램을 컴퓨터에서 아두이노로 송신)까지 모든 과정은 스케치 툴을 통해 진행됩니다.

 

지난 포스팅에서 스케치를 다운로드하고 설치하는 과정을 설명드렸는데요.. 프로그램을 코딩하기 위해 스케치를 실행하고 아두이노를 PC와 연결하는데 간혹 진행이 잘 안 되는 경우가 발생하더라고요..;; ㅠㅠ

 

그래서 오늘은 아두이노를 PC와 연결하고 정상적으로 연결되었는지 스케치를 통해 이를 확인하고 문제가 있으면 해결하는 방법까지 알아보도록 하겠습니다. 

 

2020.06.10 업데이트


아두이노 공식 홈페이지 https://www.arduino.cc로부터 (무료)다운받아 설치한 Arduino 프로그램을 실행하면 로딩 후 스케치(sketch): 통합개발환경 소프트웨어 첫 화면 창이 열립니다. 

 

스케치를 아직 설치하지 못하신 분은 링크 걸어드리게요~ 참고 부탁드립니다.

 

아두이노 (Arduino) 시작하기 - 통합개발환경(IDE): 스케치(sketch)

아두이노 (Arduino)는 마이크로 컨트롤러 (Micro controller)로 구성된 프로그램에 따라 명령을 수행합니다. 이전 포스팅에서 살펴보았듯이 아두이노를 통해 외부기기나 센서를 컨트롤 할 수 있습니다. 구상하는대..

it-g-house.tistory.com

다음과 같은 화면이 나오면 아두이노 프로그램이 정상적으로 실행되었습니다.

 

스케치(sketch) 실행 화면

 

상단 메뉴를 보면 스케치를 운영할 때 필요한 여러 가지 기능이 있습니다. 첫 번째 파일(file) 메뉴에서 파일을 열거나 저장하거나 기본적인 환경설정을 할 수 있습니다. 편집(Edit) 메뉴에는 프로그램을 코딩할 때 사용되는 편집 기능과 단축키에 대해 나와있고, 스케치(sketch) 메뉴에서는 라이브러리(Library) 관련 기능이 있습니다. 오늘은 두 메뉴는 사용하지 않으니 추후 자세히 정리하도록 하겠습니다.

 

 

 


 

 

이제 아두이노 보드를 PC에 연결하는 방법을 알아보겠습니다. 먼저 (Tools) 메뉴에서 보드(Board): “Arduino/Genuino Uno”를 확인합니다. 저는 가장 보편적으로 사용하는 UNO R3를 사용하였는데 혹시 다른 보드를 사용하신다면 해당하는 보드 이름을 선택해 주시면 됩니다.

 

그리고 USB B type 케이블을 컴퓨터 USB단자와 아두이노 USB포트에 연결시킵니다. PC가 아두이노를 정상적으로 인식하면 툴(Tools) 메뉴에서 인식한 PC USB 포트(Port) 번호가 표시됩니다.

 

 

아두이노 UNO 보드 설정

 

만약 연결이 잘 안 되거나 '내컴퓨터 장치관리자'의 포트에서도 아두이노를 인식하지 못하면 USB 케이블이 문제가 있거나 스케치 설치 시 드라이버가 제대로 설치되지 않았기 때문입니다문제를 해결하려면 드라이버를 다시 설치하면 되는데 설치 파일은 스케치를 설치한 경로(예시 - C:\Program Files (x86)\Arduino\)폴더 안에 'drivers' 폴더가 있고 그 안에 실행 파일이 있습니다. 

 

아두이노 드라이버 설치

 

만약 호환보드(CH340)를 사용하시면 따로 USB 드라이버를 설치해줘야 합니다. 호환보드에 관해서와 호환보드 드라이버 설치 및 컴퓨터와 연결방법에 대한 자세한 내용은 아래 링크 참고 부탁드립니다.

 

아두이노(Arduino) 호환보드(CH340): DIP? SMD?

아두이노(Arduino)를 구입하려는데 UNO R3 모델은 온라인상에 여러종류가 있는 것을 확인할 수 있습니다. 가격이 너무 천차만별이고 생긴건 다 비슷비슷하고 정말 아두이노 '아'자도 모를때는 뭘 사야할지 난감하..

it-g-house.tistory.com

USB 케이블로 PC와 연결하면 LED램프가 켜져요

 

모든 연결이 정상적으로 진행되면 아두이노 보드에 사진과 같이 LED램프가 켜지고 아래와 같이 포트번호가 표시되고 (저는 'COM9'라고 표시되네요 ^^) 프로그램 코딩할 준비가 되었습니다.

 

아두이노 (Arduino) 연결 포트 상태

 


오늘은 아두이노(Arduino)를 PC와 연결하고 연결이 정상적으로 확인하는 방법을 스케치(sketch)를 통해 알아보았습니다. 

 

다음 시간에는 간단한 코딩을 통해 아두이노를 동작시켜 보겠습니다.

 

공상을 현실로!

 

 

 

반응형
반응형

 

 

아두이노(Arduino)는 마이크로 컨트롤러(Micro-controller)로 구성된 프로그램에 따라 명령을 수행합니다. 이전 포스팅에서 살펴보았듯이 아두이노를 통해 외부기기나 센서를 컨트롤할 수 있습니다. 구상하는 대로 동작을 시키려면 명령을 시켜야 하는데.. 프로그램 코딩을 통해 아두이노한테 '행동지침'을 심어놓으면 명령대로 동작을 하게 됩니다. 여기서 필요한 게 통합개발환경(IDE): 스케치(sketch)라는 소프트웨어입니다.

 

오늘은 아두이노를 동작하기 위한 프로그램 코딩에 필요한 통합개발환경인 스케치 소프트웨어에 대해 알아보겠습니다. 저는 프로그램이랑 코딩과는 전혀 무관한 공부를 했던지라... 코딩은 넘사벽;;; 무지함의 끝을 보실지도 몰라요.. 뮤^뮤

 

그래도 저희 모두 함께 해보자고요!


  • 아두이노 통합개발환경 IDE (스케치) 

아두이노에서는 스케치(sketch)’라고 하는 통합개발환경(Arduino IDE) 개발툴을 제공하고 있습니다. 아두이노를 동작하기 위해선 Arduino IDE Software를 통해 컴퓨터에서 코딩 후 아두이노 보드로 전송하여야 합니다. 오늘은 아두이노 보드는 잠시 놔두고 프로그램 코딩을 위한 software를 설치하는 방법을 알아보겠습니다.

 


 

  • 스케치 (sketch) 설치

아두이노 IDE 다운로드 바로가기 https://www.arduino.cc/en/Main/Software 또는 아두이노 공식 홈페이지 https://www.arduino.cc에 접속하여 홈페이지 메인화면 상단에서 SOFTWARE DOWNLOADS를 선택합니다.

 

아두이노 (Arduino) 공식 홈페이지 메인화면

DOWNLOADS를 클릭하면 아래 화면과 같이 OS별 다운로드가 가능합니다. (2020.03.15 현재 버젼: 1. 8. 12)

 

아두이노 통합개발환경 IDE Download

본인의 OS에 맞는 버전을 선택하면 아래와 같이 유료인 듯 기부를 장려(?)하는 메시지를 볼 수 있지만... “JUST DOWNLOAD”를 클릭하면 됩니다.

 

아두이노 프로그램 다운로드 기부는 선택!

다운로드 후 설치 파일을 실행하면 아래와 같은 순서로 설치를 진행합니다.

 

아두이노(Arduino) 스케치 설치 경로 선택

 

아두이노 드라이버 설치는 필수!!
아두이노(Arduino) 스케치 설치 완료

여기서 주의하실 점은 설치경로에 한글이 포함되면 안 됩니다. 스케치 파일에서는 한글을 인식할 수 없기 때문에 추후 프로그램 코딩 후 컴파일 작업 및 프로그램이 정상적으로 동작하지 않을 수 있습니다.

 

 

 


 

  • 스케치 (sketch) 실행

설치가 끝나고 Arduino를 실행하면

 

클릭~

 

아두이노 스케치(sketch) 로딩 화면

다음과 같은 화면이 나오면 아두이노 프로그램을 코딩할 준비가 다되었습니다.

 

아두이노(Arduino) 스케치 실행 첫 화면

 

고생하셨습니다. ^^

 


여기까지 아두이노(Arduino) 통합개발환경(IDE): 스케치(sketch)를 설치하는 방법이었습니다. 

 

다음 시간은 스케치의 몇 가지 기능을 알아보고 아두이노를 컴퓨터와 연결하는 방법을 알아보겠습니다.

 

공상만 나날이..

 

 

반응형
반응형

 

 

 

아두이노(Arduino)는 자체적인 충전지(빠데리)나 전원이 없기 때문에 외부 전원을 공급해야 합니다. 오늘은 아두이노에 전원을 공급하는 방법을 알아보겠습니다. 

 

저는 표준 모델이라 인식되고 있는 아두이노 우노 R3 (Arduino UNO R3) 제품을 구입하였기 때문에 UNO R3 기준으로 포스팅하였습니다. 구입하고 처음 켜보는 거라 두근두근했어요~ ㅎㅎ

 


Arduino(아두이노)ّ의 전원을 연결하는 방법은 USB Port, DC barrel jack, Vin pin으로 크게 3가지가 있습니다.

 

USB 케이블
DC barrel jack 전원 어댑터

 


① USB 포트 (Port)

 

USB Port는 컴퓨터와 USB 케이블(표준형 USB B Type 케이블)로 연결하는 방법으로 컴퓨터로부터 전원(5V)을 공급받습니다. 또한 USB Port를 통해 컴퓨터와 통신을 하기 때문에 Arduino에 코딩한 프로그램을 전송하는데 반드시 필요합니다. USB 타입의타입의 5V 출력 스마트폰 충전기나 보조배터리를 USB Port와 연결해도 USB 케이블을 통해 전원 공급을 할 수 있습니다. 이때 충전기 어댑터나 보조배터리의 출력이 반드시 5V 인지 확인하셔야 합니다.

 

USB Port에 USB 케이블로 연결

 


 

② DC 배럴잭 (barrel jack)

 

두번째 방법으로 DC 배럴잭을 통해 전원을 공급하는 방법입니다. 컴퓨터와 연결하지 않고 아두이노 보드에 전원을 공급하는 용도로 DC 배럴잭(사이즈: 5.5x2,1mm)을 사용합니다. 아두이노는 외부로부터 6~20V 범위로 전원을 받을 수 있는데 일반적으로 7~12V로 공급되는 게 좋습니다. 7~12V 전원이 공급되더라도 레귤레이터를 통해 5V로 변환되어 아두이노 보드에 공급되기 때문에 걱정하지 않으셔도 됩니다. 대부분 우리나라 전원은 AC 220V이기 때문에 AC-DC 어댑터가 필요합니다. 어댑터의 정격 용량은 1A 이상의 DC 9V제품을 사용하는 것을 추천합니다(7V 미만은 보드 불안정, 12V이상은 레귤레이터 손상 가능하기 때문에...)

AC-DC 어댑터 사용 시 주의사항으로 어댑터 극성을 꼭 확인해야 합니다. 그림과 같이 Positive polarity를 사용해야 합니다. Negative polarity를 사용하시면 아두이노 보드가 타거나 고장 날 수 있습니다. DC barrel jack으로 건전지를 연결하여 전원을 공급할 수도 있습니다.

 

 

DC barrel jack에 전원 어댑터로 연결

 

건전지 사용 예시 (사진 출처 : bbangpan.tistory.com/52)

 


 

③ Vin 핀(pin) 

 

세 번째 방법으로 Vin pin을 통한 방법으로 보드의 VinGND에 점퍼선을 사용 Vin에 '+'전원을, GND에 '-'전원을 연결하여 외부 전원을 공급할 수 있습니다. Vin pin을 사용하면 레귤레이터를 통하지 않기 때문에 원하는 전원만큼 아두이노 보드에 전원을 공급하게 됩니다. 전원을 원하는 대로 공급 가능하지만 그만큼 과전압을 사용하지 않게 주의하셔야 합니다. 또한 배럴잭과 동시에 사용하지 않아야 합니다. 부주의시 역전압이 발생하여 폭발이나 화재의 위험이 있습니다.

 

Vin pin을 통한 Power 연결

 


여기까지 아두이노(Arduino)에 전원을 공급하는 방법을 알아보았습니다. 이제 전원이 들어오긴 했는데 어떻게 작동을 해야 할까요?? ^^ 기본적으로 아두이노 보드는 프로그램을 통해 제어되는데 '스케치(Sketch)'라는 통합개발환경(Integrated Development Environment, IDE) 소프트웨어를 통해서 프로그램을 코딩하고 보드로 업로드하는 일을 수행합니다. 스케치는 아두이노 홈페이지에서 무료로 제공되고 있기 때문에 추가적인 비용은 들지 않습니다. 

 

그럼 다음 포스팅에는 스케치를 설치하고 아두이노를 처음 동작을 하는 방법에 대해 알아보겠습니다.

 

 

 

반응형
반응형

 

 

아두이노(Arduino)는 "마이크로 컨트롤러(Micro-controller)"라고 많이 정의하고 있습니다. 실질적으로 거의 정확한 표현에 가깝습니다. 말그대로 마이크로는 미니(Mini)보다 작다는 표현으로 작은 컨트롤러, 다시말해 작은 제어장치입니다. 단편적인 기능에 의지한 설명으로는 센서나 모터 같은 전자부품을 제어하기 위한 반도체 회로 기판으로 말할 수 있습니다.

 

최근 홈 IoT (Internet of Things, 사물인터넷)에 대한 관심으로 DIY로 직접 제작하여 각자 개인의 취향에 맞게 홈 IoT를 구축하고 싶어 하는 사람들이 늘어나고 있습니다. 필자도 온실(greenhouse)의 환경 데이터를 실시간 관찰하기 위해서 아두이노에 입문하게 되었죠 ^^ 이미 많은 사람들이 아두이노 프로젝트를 진행하고 있는데.. 몇 가지 작품만 봐도 공학 본능이가 끌어 오릅니다. 그럼 아두이노의 정의 및 보드(board)의 기본 구성과 종류에 대해서 살펴보면서 아두이노가 무엇인지 간단하게 알아 보도록 하겠습니다.

 

아두이노를 이용한 프로젝트


  • 아두이노(Arduino) 란?

아두이노(이탈리아어: Arduino 아르두이노)는 오픈 소스를 기반으로 완성된 마이크로컨트롤러(Microcontroller) 보드와 관련된 개발도구 및 환경을 통틀어 총칭하는 말입니다. 2005년 이탈리아의 IDII (Interaction Design Institutelvera)에서 하드웨어에 익숙하지 않은 학생들이 자신들의 디자인 작품을 손쉽게 제어할 수 있게 하려고 고안된 임베디드 시스템 중 하나로 쉽게 개발할 수 있는 환경을 제공합니다. 아두이노 보드를 사용하여 다수의 스위치나 센서로부터 값을 받아들여, 전원이나 모터 같은 외부 전자 장치들을 통제할 수 있기 때문에 마이크로 컨트롤러라고 할 수 있으며 이를 쉽게 동작시킬 수 있다는 것이 가장 큰 장점입니다.

 

(출처: 위키백과)

 


 

  • 아두이노 보드의 기본 구성

아두이노 보드는 마이크로 컨트롤러 기능을 하기 위해 CPU(중앙처리장치) 역할을 하는 반도체 Chip을 사용하는데 주로 아트멜(Atmel)사의 AVR(8-비트 RISC 단일칩 마이크로 컨트롤러)를 사용하고 있습니다. 공식 보드의 마이크로 컨트롤러에는 주로 ATmega8, ATmega168, ATmega328과 같은 megaAVR 시리즈가 주로 사용됩니다. 보드에는 기본적으로 5V 리니어 레귤레이터와 16 MHz 결정 진동자(크리스털)가 내장되어 있으며, 기존 모든 보드는 RS-232 직렬 커넥터를 통해 프로그램되지만, 지금의 아두이노 보드들은 모두 USB를 통해 프로그래밍 가능하며, FT232와 같은 USB-시리얼 변환 칩을 통해 사용 가능합니다. UNO와 같은 주요 모델들은 14개의 디지털 입출력 핀을 제공하고 있으며, 그중 6개의 핀은 PWM (pulse-width modulated) 신호를, 다른 6개의 핀은 디지털 입출력 핀으로 혼용이 가능한 아날로그 입력 단자를 제공합니다.

 

 


 

  • 아두이노 보드 종류

아두이노 보드 종류는 매우 다양합니다. 원하는 프로젝트 목적에 따라 적합한 특성을 가진 다양한 보드를 적용하여 사용할 수 있습니다. 워낙 많은 제품군이 있기 때문에 오늘은 매우 대중적으로 사용되고 있는 대표적인 보드 세가지만 소개해드리고 추후 다양한 보드들을 정리하도록 하겠습니다.

 

<아두이노 UNO R3>

 

아두이노 보드 중 UNO R3가 현재 최신 버전으로 기본 표준 보드로 인식되고 있습니다. 현재 보드에서 출력 전압 5V, 3.3V가 지원 가능하고 변환기 없이 USB로 PC와 연결해서 사용할 수 있습니다. USB로 전원 공급되며 외부 입력으로도 전원 공급이 가능합니다. 확장 쉴드 등 다양한 외부 장치들의 핀 배열 등이 UNO를 기준으로 맞춰져 있기 때문에 처음 아두이노를 시작하신다면 고민할 필요 없이 UNO R3 추천합니다.

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

<아두이노 나노(Nano)>

 

나노라는 이름만으로도 소형화 버전인지 알 수 있습니다. UNO 보드와 같은 ATmega328 칩을 보통 사용하기 때문에 UNO의 기능을 대부분 지원하고 라이브러리도 그대로 사용할 수 있습니다. Nano는 직접 USB로 업로딩이 가능하며 출력 전압 역시 5V, 3.3V 모두 지원합니다. 한마디로 소형 UNO라고 할 수 있지만 작기 때문에 방열 문제나 보호회로가 부족하기 때문에 보드 손상을 주의해야 합니다. 회로 기판에 바로 삽입하여 구성하거나 크기가 작은 프로젝트를 기획할 때 추천합니다.

아두이노 나노 (Arduino Nano)

<아두이노 메가(MEGA2560)>

 

MEGA 이름에 걸맞게 고성능과 많은 입출력 핀을 지원합니다. ATmega2560 MCU칩을 기반으로 이미지, 음성, 영상 등 다양한 기기의 제어와 응용으로 고성능이 필요한 곳에 유용할 수 있습니다. 그러나 UNO 보드와 핀 배열, 특징이 많이 다르기 때문에 처음 아두이노를 접하시는 분들은 다루기 어려울 수 있습니다. 온라인 상에서 공유되는 대부분의 튜토리얼이나 라이브러리 및 확장 쉴드가 UNO를 기반으로 제공되기 때문에 이슈 발생 시 어디가 문제인지 해결하기 막막할 수 있습니다. 단지 더 파워풀한 보드에서 럭셔리한 입출력 핀을 가지고 싶다고 선택하기보다는 보드 특성을 파악하고 선택하는 것을 추천합니다.

 

아두이노 메가 (Arduino MEGA2560)

 


지금까지 아두이노의 기본적인 부분과 몇 가지 보드를 살펴보았습니다. 저는 아두이노 우노 R3를 구입하였습니다. 기획하는 프로젝트가 어디까지 발전할 수 있을지 모르겠지만 저의 도전기를 함께 하시면 좋겠습니다.

 

다음 글에는 아두이노를 시작하기 위한 준비를 해보도록 하겠습니다.

 

 

 

반응형

+ Recent posts