[embedded/arduino] - 024. Arduino 아두이노 - bme280 / bmp280 센서모듈(Using bme280 / bmp 280 sensor module)
[embedded/arduino] - 026. Arduino 아두이노 - Ethernet Shield 사용하기
[embedded/arduino] - 027. Arduino 아두이노 - Ethernet Shield Webclient parameter 변경하기
Blynk 라이브러리 BME280 센서 연결은 이전글을 참고하시기 바랍니다
실내온도 측정을 위해 Blynk와 Ethernet Shield를 연결해보았다
센서는 아직 BME280이 배송중으로 BMP280 이지만…
이더넷쉴드를 이용해서 5분마다 온도측정 후 blynk로 데이터를 보내도록 구성했는데
반나절 만에 데이터가 올라오질 않아서…
delay 를 1분으로 주고 count를 해서 5번째에 데이터를 보내도록 수정하였다
그렇다고 처음부터 5분을 기다릴 순없으니 cnt가 1일때 도 데이터를 보낸다
다만 1분 간격으로 blynk에 연결하도록 해놨다
아마도 5분간격으로 보내다 보니
공유기에서 아두이노 IP를 회수한게 아닐까하는 생각이 들었기 때문이다
#define BLYNK_PRINT Serial
#include <SPI.h>
#include <Ethernet2.h>
#include <BlynkSimpleEthernet2.h>
// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "YourAuthToken";
void setup()
{
// Debug console
Serial.begin(9600);
Blynk.begin(auth);
// You can also specify server:
//Blynk.begin(auth, "blynk-cloud.com", 80);
//Blynk.begin(auth, IPAddress(192,168,1,100), 8080);
// For more options, see Boards_Ethernet/Arduino_Ethernet_Manual example
}
void loop()
{
Blynk.run();
}
이건뭐 참고할 게 너무 없다
#include <SPI.h>
#include <Ethernet.h>
#include <BlynkSimpleEthernet.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
#define SEALEVELPRESSURE_HPA (1013.25)
Adafruit_BME280 bme280;
IPAddress ip(192, 168, 0, 177);
EthernetClient client;
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
const char bylinkAuth[] = "bylnkAPIKey";
unsigned long delayTime = 1 * 60 * 1000L;
float t, h, p;
int a, cnt = 1;
void setup() {
Serial.begin(9600);
if(!bme280.begin(0x76)){
Serial.println("Device error!");
}
// start the Ethernet connection:
Serial.println("Initialize Ethernet with DHCP:");
if (Ethernet.begin(mac) == 0) {
Serial.println("Failed to configure Ethernet using DHCP");
// Check for Ethernet hardware present
if (Ethernet.hardwareStatus() == EthernetNoHardware) {
Serial.println("Ethernet shield was not found. Sorry, can't run without hardware. :(");
}
if (Ethernet.linkStatus() == LinkOFF) {
Serial.println("Ethernet cable is not connected.");
}
Ethernet.begin(mac, ip);
} else {
Serial.print(" DHCP assigned IP ");
Serial.println(Ethernet.localIP());
}
// give the Ethernet shield a second to initialize:
delay(1000);
}
void loop() {
t = bme280.readTemperature();
h = bme280.readHumidity();
p = bme280.readPressure() / 100.0F;
a = bme280.readAltitude(SEALEVELPRESSURE_HPA);
Serial.print(F("Temperature = "));
Serial.print(t);
Serial.println(" *C");
Serial.print(F("Humidity = "));
Serial.print(h);
Serial.println(" %");
Serial.print(F("Pressure = "));
Serial.print(p);
Serial.println(" Pa");
Serial.print(F("Approx altitude = "));
Serial.print(a);
Serial.println(" m");
Serial.println();
Blynk.begin(bylinkAuth);
while (Blynk.connect() == false){
Serial.println("wait Blynk");
}
Blynk.notify("Hardware is just connected!");
Blynk.run();
if(cnt == 1 || cnt++ % 5 == 0){
if(cnt == 5) cnt = 1;
Blynk.virtualWrite(V0, t); // virtual pin 0
Blynk.virtualWrite(V1, h); // virtual pin 1
Blynk.virtualWrite(V2, p); // virtual pin 2
Blynk.virtualWrite(V3, a); // virtual pin 3
}
delay(delayTime);
}
사용한 예제는 Bylnk Ethernet 예제와 기본 Ethernet 예제 그리고 BME280 예제를 이용했다
Bylnk 예제는.... 내용이 없어서 무시하긴 했지만... 예제를 보면 Bylink에는 Ethernet.begin 자체가 빠져있다
아마도 서버가 아니니 그런것 같긴 하지만 혹시 몰라 Ethernet.begin을 넣어놓았다
그리고 소스내에 있는 while문은 blynk.connect 부분에만 넣어놨다
나중에 공유기 연결이 끊기면 blynk.connect에서 멈출것 같긴한데...
연결이 끊기면 재연결 하는 부분을 아직 모르겠어서 다음으로 미룬다
수정한 소스로 5시간정도 작동중인데 아직까진 크게 문제가 보이진 않는다
혹시라도 공유기와 연결이 끊기지 않을까 하는 우려로
1분마다 Blynk를 호출하되 데이터는 cnt가 5일때만 보내게 된다
Blynk 앱에서 확인해보면
SolarPoweredWeaterStation, atHome 으로 Device가 두개인걸 볼수 있다
왼쪽 녹색이 외부온도이고, 오른쪽 파란색이 실내온도이다
특히 superchart를 통해 내/외부 온도 변화 추이를 확인이 가능해졌다
관련글
[embedded/arduino] - 024. Arduino 아두이노 - bme280 / bmp280 센서모듈(Using bme280 / bmp 280 sensor module)
[embedded/arduino] - 026. Arduino 아두이노 - Ethernet Shield 사용하기
[embedded/arduino] - 027. Arduino 아두이노 - Ethernet Shield Webclient parameter 변경하기
030. Arduino 아두이노 - Macbook screen serial monitor (0) | 2019.12.22 |
---|---|
029. Arduino 아두이노 - Bad CPU type in executable (0) | 2019.12.22 |
027. Arduino 아두이노 - Ethernet Shield Webclient parameter 변경하기 (2) | 2019.08.24 |
026. Arduino 아두이노 - Ethernet Shield 사용하기 (0) | 2019.08.24 |
025. Arduino 아두이노 - delay에 대한 고촬 (0) | 2019.08.24 |
댓글 영역