저희가 이번에 iot중급용 키트와 esp8266을 에듀이노에서 구입을 하였는데 온도센서와 esp8266을 이용해서 와이파이 기능으로 실시간으로 온도를 확인할 수 있는 그런 작품을 만드려고 하는데, 유트브에서 작동이 되는 회로도와 코딩값을 받아서 연결하여 업로딩을 진행하였는데 무슨 문제인지 온도와 습도는 0도로 계속 표기가 되고, 와이파이와 연결이 되지 않았습니다. 따로 esp8266만 코딩을 하였을 때는 정상적으로 작동되었습니다. 5g라서 안되는 줄 알아서 2.4 GHZ 와도 연결 해보았지만 똑같이 접속불량이 나왔습니다. 저희가 사용한 회로도와 코딩값 그리고 실제 회로도 첨부하겠습니다. 문제가 무엇인지 알아보고싶습니다.
CM1106 도 비슷한 상황인데. 저희가 CM1106과 CM1107을 호환하는 전용 쉴드를 사서 아두이노 공식홈페이지 예제를 사용했는데, 정상적이게 업로딩이 되었지만 시리얼 모니터에서는 아무 값도 표기가 되지 않았습니다.
==사용한 코드==
#include <SoftwareSerial.h>
#include <dht11.h>
#define RX 2
#define TX 3
#define dht_apin 11 // Analog Pin sensor is connected to
dht11 dhtObject;
String AP = "aswin 3F"; // AP NAME
String PASS = "asw1234567"; // AP PASSWORD
String API = "BDT4124TSAZA1S6I"; // Write API KEY
String HOST = "api.thingspeak.com";
String PORT = "80";
int countTrueCommand;
int countTimeCommand;
boolean found = false;
int valSensor = 1;
SoftwareSerial esp8266(RX, TX);
void setup() {
Serial.begin(9600);
esp8266.begin(115200);
sendCommand("AT+CWJAP=\"" + AP + "\",\"" + PASS + "\"", 20, "OK");
}
void loop() {
String getData = "GET /update?api_key=" + API + "&field1=" + getTemperatureValue() + "&field2=" + getHumidityValue();
sendCommand("AT+CIPMUX=1", 5, "OK");
sendCommand("AT+CIPSTART=0,\"TCP\",\"" + HOST + "\"," + PORT, 15, "OK");
sendCommand("AT+CIPSEND=0," + String(getData.length() + 4), 4, ">");
esp8266.println(getData); delay(1500); countTrueCommand++;
sendCommand("AT+CIPCLOSE=0", 5, "OK");
}
String getTemperatureValue() {
dhtObject.read(dht_apin);
Serial.print(" Temperature(C)= ");
int temp = dhtObject.temperature;
Serial.println(temp);
delay(50);
return String(temp);
}
String getHumidityValue() {
dhtObject.read(dht_apin);
Serial.print(" Humidity in %= ");
int humidity = dhtObject.humidity;
Serial.println(humidity);
delay(50);
return String(humidity);
}
void sendCommand(String command, int maxTime, char readReplay[]) {
Serial.print(countTrueCommand);
Serial.print(". at command => ");
Serial.print(command);
Serial.print(" ");
while (countTimeCommand < (maxTime * 1))
{
esp8266.println(command);//at+cipsend
if (esp8266.find(readReplay)) //ok
{
found = true;
break;
}
countTimeCommand++;
}
if (found == true)
{
Serial.println("OYI");
countTrueCommand++;
countTimeCommand = 0;
}
if (found == false)
{
Serial.println("Fail");
countTrueCommand = 0;
countTimeCommand = 0;
}
found = false;
}
(CM1106 코딩값은 라이브러리에서 예제코드 사용) > (시리얼 모니터에 아무것도 뜨지 않는 현상. 정상적이게 업로딩 되었음)