티스토리 뷰

아두이노가 클라이언트, 라즈베리 파이가 서버가 되는 시스템을 만들어보자.

 

아두이노에서 센서 등을 통해 데이터를 받아 서버로 보내고,

서버에서는 이를 사용한 웹페이지를 만들려고 한다.

아두이노에서 센서를 받는 프로그램 작성은 생략하고,

라즈베리파이에서 데이터를 받고 시각화하는 과정을 해볼 것이다.

 

최종적인 구상은 아래와 같다.

1. 아두이노 프로그램에서 와이파이로 데이터를 전송

2. 라즈베리파이에서 데이터를 받아 csv 파일로 저장

3. csv 파일을 이용해 matplotlib 그래프를 만들고 이를 웹페이지에 올리기

 

웹페이지는 천천히 만들어보고... 

일단 아두이노에서 라즈베리파이로 데이터를 전송하는 것 부터 시작해보자.

 

1. D1 보드 연결

D1 보드를 사용하기 위해서는 먼저 라이브러리를 다운로드 해줘야 된다. 그래야만 인식이 가능하다. 

D1 보드를 연결하는 것은 다른 포스팅에 설명해놓았다.

 

https://deonggideok.tistory.com/77

 

2. D1 보드를 와이파이와 연결

데이터를 보내는 것만 확인해볼 것이므로, D1 보드의 예제를 사용할 것이다.

D1 보드에서 라즈베리파이로 데이터를 보낼 때 와이파이를 사용할 것이므로

와이파이를 사용하는 예제(WiFiClient)를 사용한다.

파일 > 예제 > ESP8266WiFi > WiFiClient 로 가서 예제를 연다

 

 

바꿔야 할 부분은 2개다.

 

1) 와이파이 정보 입력

1
2
3
4
#ifndef STASSID
#define STASSID "your-ssid" // 사용할 와이파이 SSID 입력
#define STAPSK  "your-password" // 사용할 와이파이 비밀번호 입력
#endif
cs

 

2) 데이터를 받을 IP와 포트를 입력

1
2
const char* host = "djxmmx.net"// 사용할 IP나 도메인
const uint16_t port = 17// 사용할 포트
cs

 

3. 프로그램 작성

client(아두이노)가 서버에 연결 되었을 때 

데이터를 보내거나 받거나 등 사용자가 하고자 하는 작업이 일어난다.

실행하고자 하는 작업을 아래의 if문 사이에 작성한다.

아래의 코드 그대로를 돌리면, 서버(라즈베리파이) 쪽에서 "hello from ESP8266"을 서버에서 받는다.

1
2
3
if (client.connected()) {
    client.println("hello from ESP8266");
}
cs

센서에서 받아 보내고자 하는 부분을

client.println(보낼 데이터)

해서 보낼 수 있다.

 

4. 아두이노 실행

 

이렇게 하고 프로그램을 실행한다.

 

와이파이에 성공적으로 아두이노가 연결되면

아두이노의 IP 주소가 나온다.

 

 

1) 데이터 전송이 성공하는 경우

 

"sending data to server"가 나오고,

라즈베리파이와 아두이노가 동작된다.

 

2) 데이터 전송이 실패하는 경우

"connection failed"가 뜨며 

연결될 때 까지 계속 연결이 시도된다.

 

 

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함