상세 컨텐츠

본문 제목

028. Arduino 아두이노 - Blynk / BME280 / Ethernet Shield 사용하기

embedded/arduino

by ZelKun 2019. 8. 24. 20:03

본문

반응형

[embedded/WEMOS] - 태양광을 이용한 온습도 측정기 (Solar Powered WiFi Temperature and Humidity Station) 2부 - Blynk 라이브러리 설치

 

태양광을 이용한 온습도 측정기 (Solar Powered WiFi Temperature and Humidity Station) 2부 - Blynk 라이브러리

[embedded] - 태양광을 이용한 온습도 측정기 (Solar Powered WiFi Temperature and Humidity Station) 1부 - WEMOS 등 부품 조립 및 WiFi 테스트 태양광을 이용한 온습도 측정기 (Solar Powered WiFi Temperature..

zelkun.tistory.com

[embedded/WEMOS] - 태양광을 이용한 온습도 측정기 (Solar Powered WiFi Temperature and Humidity Station) 4부 - WEMOS(BMP/E280) + Blyink + Thingspeak

 

태양광을 이용한 온습도 측정기 (Solar Powered WiFi Temperature and Humidity Station) 4부 - WEMOS(BMP/E280) + Blyink

[embedded] - 태양광을 이용한 온습도 측정기 (Solar Powered WiFi Temperature and Humidity Station) 1부 - WEMOS 등 부품 조립 및 WiFi 테스트 태양광을 이용한 온습도 측정기 (Solar Powered WiFi Temperature..

zelkun.tistory.com

[embedded/arduino] - 024. Arduino 아두이노 - bme280 / bmp280 센서모듈(Using bme280 / bmp 280 sensor module)

 

024. Arduino 아두이노 - bme280 / bmp280 센서모듈(Using bme280 / bmp 280 sensor module)

얼마전에 얻은 bme280 을 사용해보기로 했다 근데 테스트를 하다보니… BME280가 아니고 BMP280 이였다 이게 문제였다 BME는 온습도/기압을 지원하지만 BMP280은 온도/기압 만을 지원한다 근데 호환 센서라..

zelkun.tistory.com

[embedded/arduino] - 026. Arduino 아두이노 - Ethernet Shield 사용하기

 

026. Arduino 아두이노 - Ethernet Shield 사용하기

일전에 Ethernet Shield키트를 선물로 받았었는데 귀찮아서 이제서야 꺼내보았다 구성품이 가격대비로는 괜찮은듯 하다 이제서야 꺼내본 이유는 집 외부 온도는 SolarWeatherStation을 만들어서 알 수 있지만 내..

zelkun.tistory.com

[embedded/arduino] - 027. Arduino 아두이노 - Ethernet Shield Webclient parameter 변경하기

 

027. Arduino 아두이노 - Ethernet Shield Webclient parameter 변경하기

WebClient 예제나 WebClientRepeating 예제를 보면 서버(google.com)에 연결후 arduino를 검색만 하고 종료하거나 서버(www.arduino.cc)에 접속해서 latest.txt 파일만 읽어오도록 되어있는데 데이터를 송신(HTTP..

zelkun.tistory.com


Blynk 라이브러리 BME280 센서 연결은 이전글을 참고하시기 바랍니다

 

아두이노 이더넷쉴드와 BME280(BMP280) 센서 연결

실내온도 측정을 위해 Blynk와 Ethernet Shield를 연결해보았다

센서는 아직 BME280이 배송중으로 BMP280 이지만…

 

이더넷쉴드를 이용해서 5분마다 온도측정 후 blynk로 데이터를 보내도록 구성했는데

반나절 만에 데이터가 올라오질 않아서…

 

delay 를 1분으로 주고 count를 해서 5번째에 데이터를 보내도록 수정하였다

그렇다고 처음부터 5분을 기다릴 순없으니 cnt가 1일때 도 데이터를 보낸다

 

다만 1분 간격으로 blynk에 연결하도록 해놨다

아마도 5분간격으로 보내다 보니

공유기에서 아두이노 IP를 회수한게 아닐까하는 생각이 들었기 때문이다

Bylnk Ethernet 예제

#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 app 화면

Blynk 앱에서 확인해보면

SolarPoweredWeaterStation, atHome 으로 Device가 두개인걸 볼수 있다

왼쪽 녹색이 외부온도이고, 오른쪽 파란색이 실내온도이다

특히 superchart를 통해 내/외부 온도 변화 추이를 확인이 가능해졌다

 

관련글

[embedded] - 태양광을 이용한 온습도 측정기 (Solar Powered WiFi Temperature and Humidity Station) 1부 - WEMOS 등 부품 조립 및 WiFi 테스트

[embedded] - 태양광을 이용한 온습도 측정기 (Solar Powered WiFi Temperature and Humidity Station) 2부 - Blynk 라이브러리 설치

[embedded] - 태양광을 이용한 온습도 측정기 (Solar Powered WiFi Temperature and Humidity Station) 3부 - WEMOS(DHT11) + Blynk App

[embedded] - 태양광을 이용한 온습도 측정기 (Solar Powered WiFi Temperature and Humidity Station) 4부 - WEMOS(BMP/E280) + Blyink + Thingspeak

[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 변경하기

반응형

관련글 더보기

댓글 영역