main_outside.ino 2.63 KB
Newer Older
KangMin An's avatar
KangMin An committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <SoftwareSerial.h>


#define ESPPIN_TX 2     // ESP 8266 모듈의 TX 핀
#define ESPPIN_RX 3     // ESP 8266 모듈의 RX 핀


SoftwareSerial esp(ESPPIN_TX,ESPPIN_RX);


String SSID = "Wifi_SSID";        // Wifi - SSID
String SSPW = "Wifi_SSPW";        // Wifi - SSPW

String EUEIP = "EUE_IP";          // Web Server - IP
int EUEPORT = 8081;               // Web Server - Port

void connectESP();
void connectWifi();
void sendData(String vars);


void setup() {
  Serial.begin(9600);     // Serial monitor의 통신 속도 9600으로 설정
  esp.begin(9600);        // esp모듈의 통신 속도 9600으로 설정
25
}
KangMin An's avatar
KangMin An committed
26

27
void loop() {
KangMin An's avatar
KangMin An committed
28
29
30
31
32
33
34
  connectESP();           // ESP 모듈 탐색
  connectWifi();          // ESP 모듈 wifi 연결

  String input = "";
  
  // 측정기 분류(IN / OUT)
  String type_ = "Out";
35
36
37
  
  // 지역 코드
  String locCode = "3743011";
KangMin An's avatar
KangMin An committed
38
39
40
41
42
43
44

  // 지역의 위도(Latitude), 경도(Longitude)
  float lati = 37.241706;
  String str_lati = String(lati,6);
  float lng = 131.864889;
  String str_lng = String(lng,6);
  
45
46
  input += "type=" + type_;
  input += "&locCode=" + locCode;
KangMin An's avatar
KangMin An committed
47
48
49
50
51
52
53
  input += "&lat=" + str_lati;
  input += "&lng=" + str_lng;
  Serial.println(input);
  
  // 데이터 전송
  sendData(input);

54
55
  // 30분마다 전송 진행
  delay(1800000);
KangMin An's avatar
KangMin An committed
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
}

// ESP모듈 연결
void connectESP(){
  esp.println("AT");
  Serial.println("AT Sent");
  while(!esp.find("OK")){
    esp.println("AT");
    Serial.println("ESP8266 Not Found.");
  }
  Serial.println("OK Command Received.");
}

// 공유기와 연결
void connectWifi(){
   // ESP8266 모듈 Client로 설정
  String cmd = "AT+CWMODE=1";
  esp.println(cmd);
  Serial.println("Set ESP8266 to client.");

  // 공유기와 연결
  Serial.println("Connecting to Wifi...");
  cmd = "AT+CWJAP=\"" + SSID + "\"," + SSPW + "\"";
  esp.println(cmd);
  
  // 연결 확인
  while(!esp.find("OK"));
  Serial.println("Wifi Connected");
  
  // 연결된 공유기 확인
  cmd = "AT+CWJAP?";
  esp.println(cmd);
  Serial.write(esp.read());
}

void sendData(String input){
  // ESP 모듈을 통해 Server로 데이터 전송
  esp.println("AT+CIPSTART=\"TCP\",\"" + EUEIP + "\"," + EUEPORT);
  if(esp.find("Error")){
    Serial.println("AT+CIPSTART Error...");
  }

  // 서버로 전송할 데이터 작성
  String vars = input;
  
  String msg = "GET /data/input?";
  msg += vars;
  msg += " HTTP/1.0\r\n\r\n";
  esp.print("AT+CIPSEND=");
  esp.println(msg.length());
  delay(2000);

  // 데이터 전송
  if(esp.find(">")){
    esp.print(msg);
    Serial.println("Data sent.");
    delay(1000);
  }

  // 서버와 연결 종료
  Serial.println("Connection Closed.");
  esp.println("AT+CIPCLOSE");
}