HDC1080 ile Sıcaklık ve Nem Ölçüp Lora ile gönderme

HDC1080 ile Sıcaklık ve Nem Ölçüp Lora ile gönderme (1/2)

Merhaba arkadaşlar yine harika bir seriye başlıyoruz. Öncelikle HDC1080 ile sıcaklık ve nem değerlerini ölçüp Lora ile uzak mesafedeki merkezimize verileri yollayacağız. Diğer serimizde ise yepyeni bir konuya gireceğiz, “veriyi internete gönderme“. Gelen veriyi “ThingsSpeak” alt yapısını kullanarak internete göndereceğiz.

Fabrikaların, Seraların aklınıza gelecek bütün işletmelerde raporlama oldukça önemlidir. Özellikle işletmenin durumunu anlık ve elektronik olarak ölçümlemek daha önemlidir. Gelen verinin doğruluğu nispetinde raporlarınız doğru olur ve raporlar neticesinde alınacak kararlarda o nebze isabetli olur. Dilerseniz HDC1080, Arduino Mega ve Lora müdllerimiz ile dolu yazımıza başlayalım.

1.1 Gerekli Malzemeler:

Başlangıç setie32 tll 1wSatın Almak İçin Tıklayın->

1 adet HDC1080 Satın Almak için Tıklayın->

1.2 Devre Şeması

Devre Şeması olarak hazır pcb kullandığım için özel bir bağlantı şeması yapmadım. Sadece HDC1080 için PCB üzerindeki I2C klemenslerine bağlantıları yaptım. Devra şeması şu şekilde oldu:

PCB nin üst kısmındaki klemenslerden SDA ve SCL pinlerini HDC1080 modelinin aynı pinlerine taktım. beslemeyi bu sefer 3.3v üzerinden yaptım.

Dikkat ederseniz HDC1080 sıcaklık ve nem sensörünü Sinter malzemenin içine taktım. 3/8 inch tam uyuyor. Bu sayede tozlu ortamlarda da rahatlıkla nem sensörü çalışacaktır.

Merkez noktasında ise bu sefer farklı bir şey denedim. Bu video serisi başta da söylediğim gibi 2 seri şeklinde olacaktı. Şimdi sıcaklık ve nemi ölçtüğümüz yerde Arduino Nano yeterli oluyordu. Ancak internete veri gönderirken yüksek SRAM değerlerine ihtiyaç duyduğumuz için merkez noktasında Arduino Mega kullandım. Devre Şeması şu şekilde oldu:

Bağlantılara daha yakından bakarsak,

Dikkat ederseniz Lora modülü ile arduino Mega arasındaki RX/TX bağlantısını Arduino mega üzerindeki A8 ve A9 pinleri ile yaptık. 5v ve GND ise standart bağlantı şekli. PCB üzerine Arduino Nano yerine Arduino MEGA yerleştirmiş olduk.

Peki neden bu şekilde bir bağlantı seçtik? Çünkü diğer videoda Mega nın ön tarafına ETHERNET SHIELD takacağız. ethernet shield de arduino üzerindeki 10,11,12 ve 13 numaralı pinleri kullanacağı için serial haberleşme için A8 ve A9 u kullandık.

1.3 Kullandığımız Kod

Merkez Noktası:

#include "LoRa_E32.h"
#include <SoftwareSerial.h>

SoftwareSerial mySerial(A8, A9);

/*
   Pinler     Arduino MEGA Lora E32 433T20d
                  A8                3
                  A9                4
*/

LoRa_E32 e32ttl(&mySerial);
struct Signal {
  char type[15] = "Fixaj.com";
  byte temp[4];
  byte nem[4];
} data;

void setup() {
  Serial.begin(9600);
  e32ttl.begin();
  delay(500);
}

void loop() {
  while (e32ttl.available()  > 1) {
    ResponseStructContainer rsc = e32ttl.receiveMessage(sizeof(Signal));
    struct Signal data = *(Signal*) rsc.data;
    Serial.print("Yer: ");
    Serial.println(data.type);
    Serial.print("Ortam Sıcaklığı: ");
    Serial.println(*(float*)(data.temp));
    Serial.print("Ortam Nemi: ");
    Serial.println(*(float*)(data.nem));
    rsc.close();
  }
}

Sıcaklık ve Nem sensörü olduğu noktamız

#include <Wire.h>
#include "ClosedCube_HDC1080.h"

ClosedCube_HDC1080 hdc1080;

#include "LoRa_E32.h"
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // Arduino RX <-- e32 TX, Arduino TX --> e32 RX
LoRa_E32 e32ttl(&mySerial);

struct Signal {
  char type[15] = "Fixaj.com";
  byte temp[4];
  byte nem[4];
} data;


void setup()
{
  Serial.begin(9600);
  Serial.println("Fixaj.com Arduino Test");

  // Default settings:
  //  - Heater off
  //  - 14 bit Temperature and Humidity Measurement Resolutions
  hdc1080.begin(0x40);

  Serial.print("Manufacturer ID=0x");
  Serial.println(hdc1080.readManufacturerId(), HEX); // 0x5449 ID of Texas Instruments
  Serial.print("Device ID=0x");
  Serial.println(hdc1080.readDeviceId(), HEX); // 0x1050 ID of the device
  e32ttl.begin();
  delay(500);
}

void loop()
{
  delay(3000);

  *(float*)(data.temp) = hdc1080.readTemperature();
  *(float*)(data.nem) = hdc1080.readHumidity();

  ResponseStatus rs = e32ttl.sendFixedMessage(0, 63, 23, &data, sizeof(Signal));
  Serial.println(rs.getResponseDescription());

  Serial.println(*(float*)(data.temp));
  Serial.println(*(float*)(data.nem));
  
}

Sonuç

Evet arkadaşlar yazımızın sonuna geldik, çok yakında 2. videomuzu çekip youtube da yayınlayacağım. 2. video daha eğlenceli olacak. Çünkü verileri internete nasıl atacağımızı farklı platformlar üzerinden raporlama yapmayı öğreneceğiz. Tabiki raporlamanın değeri içindeki verilerin doğruluğuna bağlıdır. HDC1080 ile sıcaklık ve nem değerleriniz mümkün olan en doğru şekilde ölçümlenecektir. Ben eski çalıştığım yerlerde 300 – 400 avro luk sensörler yerine HDC1080 kullandım yaklaşık 2 yıldır da sensörlerden yana bir şikayet duymadım. Müşterilerim 2 sensörün arasındaki fiyat farkının bu kadar olmasına bir türlü anlayamıyorlardı. Tamamen dışa bağlı kalırsak, işte gelin kurun gidin kafasında olursa maalesef yabancılar hiç affetmiyor. O yüzden meraklı olup işin ucundan tutup biraz kurcalamakta fayda var 🙂

Aklınıza takılan sorular için Soru&Cevap sayfamızı ziyaret etmeyi unutmayın.

ekler

Photo by ThisIsEngineering from Pexels