반응형

 

 

 

앞서 포스팅에서 온습도 센서(Temperature and Humidity sensor)만 가지고 아두이노의 기본적인 동작법이나 파일 저장법, 그래프 그리기, 엑셀(Excel)과 연동하는 방법들을 알아보았습니다. 그리고 인터넷(Internet) 사용법과 웹서버(Web server) 만드느라 많은 시간을 보냈는데요 ^^ 오늘은 재미있는 센서를 하나 소개드리려고 합니다. 

 

바로 초음파(ultrasound(s), ultrasonic wave) 센서입니다. 인터넷에 찾아보면 거리 센서라고 많이 검색되는데 초음파를 쏴서 돌아오는 시간을 계산해서 거리를 측정할 수 있는 예제가 많이 알려져서 그런 것 같습니다 ^^ 이번 포스팅에서는 초음파 센서 사용방법과 프로그램 코딩에 대해 알아보겠습니다.


  • HC-SR04 초음파 센서

온라인에서 '초음파 센서'를 검색하면 아두이노용으로 많이 사용하는 모델은 'HC-SR04' 모듈입니다. 생긴건 마치 스피커처럼 생겼는데요 ㅎㅎ 아두이노 작품들 중에 로봇류는 대부분 이 HC-SR04 센서로 눈처럼 꾸며서 사용하는걸 많이 보았습니다. 

 

아두이노 HC-SR04 초음파 센서

"초음파(超音波, 영어: ultrasound(s), ultrasonic wave)는 인간이 들을 수 있는 가청 최대 한계 범위를 넘어서는 주파수를 갖는 주기적인 '음압'(音壓, sound pressure)을 의미한다." (출처: 위키피디아) 즉, 사람이 들을 수 없는 고주파수 영역대의 음파를 말합니다. 건강하고 젊은 사람이 대략 20KHz의 영역을 들을 수 있고 사람이 들을 수 있는 이상의 영역이 초음파 영역이라고 생각하시면 됩니다.

 

아두이노에서 사용할 HC-SR04 초음파 센서는 대락 40KHz 영역대의 초음파를 방출합니다. 송신기와 수신기인 두개의 초음파 트랜스 듀서(Ultrasonic transducer)가 있고, 수신기(Chirp: 주파수 변조 방식을 사용하는 펄스 압축의 하나)에서 방출된 초음파가 물체에 반사되어 수신기(Echo)에 돌아온 시간을 통해서 거리를 계산하는 방법을 사용합니다.

 

초음파 센서(ultrasounds sensor) 작동원리

동작 전압 5V DC
동작 전류 15mA
발생 초음파 약 40kHz
effectual angle <15도
측정 범위 2 ~ 400 cm
오차 0.3 cm
초음파 속도 340 m/s

 


 

  • HC-SR04 초음파 센서 연결방법

HC-SR04 초음파 센서는 5V 구동입니다. 모듈의 VCC 핀을 아두이노의 5V에 연결하고 GND는 GND에 연결합니다. 위에서 설명한 송신부인 Chirp는 모듈에서 Trig 핀이며 아두이노 12번 Pin에 연결하고, 수신부 Echo 핀을 8번 Pin에 연결합니다. Trig와 Echo 핀이 연결된 아두이노의 디지털 핀(DIGITAL Pin)은 프로그램상으로 변경 가능하니 원하시는 데로 임의로 연결하셔도 됩니다. 

 

아두이노(Arduino) HC-SR04 초음파 센서 사용방법: 연결 배선

 

 

  • HC-SR04 초음파 센서 프로그램 코딩 방법

HC-SR04 초음파 센서는 따로 '라이브러리(Library)'가 없어도 됩니다. 앞서 아두이노 프로그램 코딩 초급편에서 다루었던 'pinMode''digitalWrite' 명령어를 주로 사용하고 추가로 'pulseIn' 명령어를 사용하여 거리를 측정하는 프로그램을 코딩하도록 하겠습니다. 'pinMode'와 'digitalWrite' 명령어에 대한 내용과 간단한 예제는 아래 링크 참조 부탁드립니다.

 

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

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

it-g-house.tistory.com

 

명령어 기능 사용법
pinMode I/O 핀의 입출력 설정 pinMode(pin#, mode);
digitalWrite 디지털 핀에 High, Low 값 출력  digitalWrite(pin#, HIGH); or digitalWrite(pin#, LOW);
pulseIn 아두이노 핀으로 입력되는 펄스의 시간을 측정하는 함수 pulseIn(pin#, High); or pulseIn(pin#, Low);
int echo = 8;
int trig = 12;

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

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");
  delay(500);
}

 

 

HC-SR04 모듈을 아두이노에 연결한대로 trig = 12, echo = 8로 지정해주고 pinMode를 통해 trig는 Output(송신), echo는 Input(수신)으로 설정하였습니다. 그리고 cycletime(시간), distance(거리)를 실수(float)로 변수 지정을 하고, digitalWrite를 통해 trig에서 초음파가 송신하도록 'High' 명령을 주고 10 msec delay 후 'Low'로 신호를 끕니다. 그럼 송신된 초음파가 물체에 반사되어 echo에 수신 (신호가 High로 전환)될 때까지의 시간을 pulseIn 명령어를 통해 distance 변수에 저장합니다. 마지막으로 초음파가 물체를 맞고 돌아온 시간과 초음파의 속도 340 m/s를 이용하여 cm 단위로 거리를 계산합니다. 왕복거리라 마지막에 나누기 2가 들어갑니다. ^^

 

프로그램 코딩 완료 후 스케치(Sketch)를 통해 아두이노에 업로드 후 시리얼 모니터(Serial Monitor)를 실행하면 아래와 같이 거리를 계속 센싱하여 출력해서 보여줍니다. 통신속도(Baudrate) 맞추는 건 이제 기본으로 하시죠? ㅎㅎ

 

아두이노(Arduino) HC-SR04 초음파 센서 사용방법: 거리 측정 값 시리얼 모니터 출력


여기까지 아두이노(Arduino)로 HC-SR04 초음파 센서(ultrasounds sensor) 사용방법 과 거리를 측정하는 간단한 프로그램을 코딩해보았습니다. 정말 재미있는 센서인 거 같습니다. ^^ 조만간 초음파 센서를 이용하여 거리를 측정하는 것뿐만 아니라 적외선 센서처럼 물건이나 사람을 감지할 수도 있으니 사람을 감지하여 외부기기를 동작하거나 멈추는 간단한 프로젝트를 진행해 보도록 하겠습니다.

 

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

 

 

 

반응형
반응형

 

 

 

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

 

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

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

it-g-house.tistory.com

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

 

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

 

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

 


 

  • APMSetup 프로그램 설치

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

 

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

 

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

 

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

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

 

APMSETUP Monitor 실행 아이콘

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

 

APMSetup Monitor 메뉴
APMSetup Monitor 환경설정

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

 

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

 

APMSETUP 설치 후 PHP info 확인

 

 

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

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

 

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

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

it-g-house.tistory.com

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

 

APMSetup 메뉴: MySQL 관리 실행

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

 

APMSETUP phpMyAdmin 로그인 화면

 

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

 

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

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

 

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

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

 

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

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

 

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

 

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

 

APMSETUP MySQL 콘솔 실행 화면

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

 

 

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

 


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

 

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

 

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

 

 

 

반응형
반응형

 

 

아두이노(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)하는 거고 또 반대로도 이뤄지기 때문입니다. 

 

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

 


 

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 주소 확인하기

 

명령어 기능 설명 응답
AT AT command 작동 상태 확인 OK or 무응답
AT+RST 재시작 (Reset) OK… ready
AT+UART_DEF=속도,8,0,0 AT 통신속도 변경 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+CWQAP Wifi 접속 종료 OK 
WIFI DISCONNECT
AT+CIFSR IP 주소 확인 +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) 구성을 위한 도구들은 다 준비되었으니 다음 포스팅에 실질적으로 서버를 구축해 보도록 하겠습니다. 긴 글 읽어주셔서 감사합니다. 질문이나 고수분들의 도움이나 의견 언제든지 댓글로 부탁드립니다.

 

 

 

반응형

+ Recent posts