Kamis, April 15, 2021
mikroavr.com
No Result
View All Result
  • Login
  • Arduino
    • Sensor
    • program Arduino
  • Project
  • Produk
  • IOT
No Result
View All Result
mikroavr
No Result
View All Result
Home Arduino

Mengirim Data Sensor Suhu dengan Komunikasi LoRa

Jimmi Sitepu by Jimmi Sitepu
November 26, 2020
0 0
0
Mengirim Data Sensor Suhu dengan Komunikasi LoRa
0
SHARES
523
VIEWS
Share on FacebookShare on Twitter

Teknologi LoRa Kini

LoRa kini semakin berkembang karena komunikasi antar perangkat yang terpisah jauh bisa menggunkanan chip ini. Chip LoRa yang low energy. Penerapan teknologi ini bisa di aplikasikan di berbagai bidang seperti:

  • Monitoring Banjir
  • Monitoring perternakan dan Pertanian
  • Drone
  • Alat nafigasi untuk petualang di hutan yang tidak ada koneksi internet
  • Dan di berbagai bidang lain nya

LoRa selalu di perhatikan karena dua hal, yaitu Jarak dan Low Energy ( Berapa lama tahan dengan batre yang ada ). Semakin jauh jarak yang di tempuh dan semakin lama habis nya konsumsi batre akan menunjukkan seberapa baik LoRa yang di design.

READ ALSO

Sensor Tekanan Air Dan Udara Dengan Arduino

Setting Parameter Dengan ESP32 HTML Form melalui Access Point

Khusus jarak tempuh komunikasi LoRa ini, penulis belum banyak memiliki refrensi, apakah antenna, power dll.

Nah kali ini, kita akan mencoba mengirim data sensor suhu DS18b20 menggunakan LoRa. Lora yang kita gunakan adalah LoRa buatan kita sendiri ( Design hardware ), Satu nya menggunakan LoRa shield yang support Arduino Uno, dan satu nya lagi menggunakan LoRa esp32. Kebetulan mimin suka design hardware IOT ^_^.

Kelengkapan Praktek

Untuk mengirim data suhu ini, mimin berharap teman-teman sudah mempunya basic seperti,

  • add library ke Arduino IDE
  • add board ESP32 ke Arduino IDE
  • pemahaman dasar tentang pemrograman Arduino

Library yang penting di add di Arduino IDE nya adalah sebagai berikut,

  • Arduinojson ( https://github.com/bblanchon/ArduinoJson)
  • DallasTemperature.h ( https://github.com/milesburton/Arduino-Temperature-Control-Library )
  • Arduino Lora ( https://github.com/sandeepmistry/arduino-LoRa )

Kirim Data Suhu LoRa

Setelah semua di atas terpenuhi. Langkah selanjut nya adalah mengirim data sensor suhu DS18b20 dengan LoRa SX1276. Jika teman-teman menggunakan LoRa shield mikroavr. output Sensor DS18b20 di hubungkan ke pin D8 arduino Uno.

Konfig pin nya sebagai berikut

Arduino UnoDS18b20LoRa
D8output
D5RST
D6SS
D3DIO0
Config Pin LoRa Node

Program LoRa Kirim Suhu

// Include the libraries we need
#include <OneWire.h>
#include <DallasTemperature.h>

// Data wire is plugged into port 2 on the Arduino
#define ONE_WIRE_BUS 8
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

#include <SPI.h>
#include <LoRa.h>

const long frequency = 923E6;  // LoRa Frequency

const int resetPin = 5;        // LoRa radio reset
const int csPin = 6;          // LoRa radio chip select
const int irqPin = 3;          // interrupt pin

#include <ArduinoJson.h>
StaticJsonDocument<200> doc;
String json_lora;

void setup(void)
{
  // start serial port
  Serial.begin(115200);
  sensors.begin();
  
  LoRa.setPins(csPin, resetPin, irqPin);
  while (!LoRa.begin(frequency)) {
    Serial.println("LoRa init failed.");
    delay(1000);// if failed, do nothing
  }
  Serial.println("LoRa sukses");

  LoRa.onReceive(onReceive);
  LoRa.onTxDone(onTxDone);
  LoRa_rxMode();
}

void loop(void)
{ 
  
  sensors.requestTemperatures(); // Send the command to get temperatures
  float tempC = sensors.getTempCByIndex(0);

  // Check if reading was successful
  if(tempC != DEVICE_DISCONNECTED_C) 
  {
    Serial.print("suhu: ");
    Serial.println(tempC);
    doc["id"] = "001";
    doc["suhu"] = tempC;
    serializeJson(doc, json_lora); 
    Serial.println(json_lora);
    LoRa_sendMessage(json_lora);
    json_lora = "";
  } 
  delay(1000);
}

void LoRa_rxMode(){
  LoRa.enableInvertIQ();                // active invert I and Q signals
  LoRa.receive();                       // set receive mode
}

void LoRa_txMode(){
  LoRa.idle();                          // set standby mode
  LoRa.disableInvertIQ();               // normal mode
}

void LoRa_sendMessage(String message) {
  LoRa_txMode();                        // set tx mode
  LoRa.beginPacket();                   // start packet
  LoRa.print(message);                  // add payload
  LoRa.endPacket(true);                 // finish packet and send it
}

void onTxDone() {
  Serial.println("TxDone");
  LoRa_rxMode();
}

void onReceive(int packetSize) {
  String message = "";

  while (LoRa.available()) {
    message += (char)LoRa.read();
  }

  Serial.print("Node Receive: ");
  Serial.println(message);
}

Ketika kode di atas, buka Serial monitor, maka akan menampilkan seperti gambar berikut,

Kirim data suhu dengan LoRa

Program di atas akan mengirimkan data LoRa dalam bentuk JSON, data pertama berupa ID dan data kedua berupa suhu. Data ini akan kita parsing di gateway nya. Seperti apa kah pembacaan data di gateway nya?

Menerima Data Suhu dengan LoRa

Gateway LoRa kita menggunakan ESP32. Jadi pastikan Board ESP32 sudah ter instal di Arduino IDE teman-teman. Untuk kode nya adalah sebagai berikut.

#include <SPI.h>              // include libraries
#include <LoRa.h>

const long frequency = 923E6;  // LoRa Frequency

const int csPin = 33;          // LoRa radio chip select
const int resetPin = 32;        // LoRa radio reset
const int irqPin = 25;          // interrupt pin

#include <ArduinoJson.h>
String buf_message;
String message;

void setup() {
  Serial.begin(115200);                   // initialize serial
  while (!Serial);

  LoRa.setPins(csPin, resetPin, irqPin);

  while (!LoRa.begin(frequency)) {
    Serial.println("LoRa init failed. Check your connections.");
    delay(1000);// if failed, do nothing
  }
  delay(1000);
  Serial.println("LoRa init succeeded.");
  Serial.println();
  Serial.println("LoRa Simple Gateway");
  Serial.println("Only receive messages from nodes");
  Serial.println("Tx: invertIQ enable");
  Serial.println("Rx: invertIQ disable");
  Serial.println();

  LoRa.onReceive(onReceive);
  LoRa.onTxDone(onTxDone);
  LoRa_rxMode();
}

void loop() {
  if (buf_message != message) {
    Serial.print("JSON: ");
    Serial.println(buf_message);
    DynamicJsonDocument doc(200);
    deserializeJson(doc, buf_message);
    String id = doc["id"];
    float suhu = doc["suhu"];
    Serial.print("id:"); Serial.print(id); Serial.print(", ");
    Serial.print("suhu:"); Serial.println(suhu);
    buf_message = message;
  }

}

void LoRa_rxMode() {
  LoRa.disableInvertIQ();               // normal mode
  LoRa.receive();                       // set receive mode
}

void LoRa_txMode() {
  LoRa.idle();                          // set standby mode
  LoRa.enableInvertIQ();                // active invert I and Q signals
}

void LoRa_sendMessage(String message) {
  LoRa_txMode();                        // set tx mode
  LoRa.beginPacket();                   // start packet
  LoRa.print(message);                  // add payload
  LoRa.endPacket(true);                 // finish packet and send it
}

void onReceive(int packetSize) {

  while (LoRa.available()) {
    message += (char)LoRa.read();
  }
  buf_message = message;
  //Serial.println(message);
  message = "";
}

void onTxDone() {
  Serial.println("TxDone");
  LoRa_rxMode();
}

boolean runEvery(unsigned long interval)
{
  static unsigned long previousMillis = 0;
  unsigned long currentMillis = millis();
  if (currentMillis - previousMillis >= interval)
  {
    previousMillis = currentMillis;
    return true;
  }
  return false;
}

Upload kode di atas, dan bukan serial monitor, nanti akan tertampil seperti gambar berikut ini

Terima data suhu LoRa

Hal yang panting dari program ini adalah di bagian void loop nya.

 
void loop() {   
if (buf_message != message) 
{     Serial.print("JSON: ");     
Serial.println(buf_message);     
DynamicJsonDocument doc(200);     
deserializeJson(doc, buf_message);     
String id = doc["id"];    
 float suhu = doc["suhu"];     
Serial.print("id:"); Serial.print(id); Serial.print(", "); 
Serial.print("suhu:"); Serial.println(suhu); 
buf_message = message;   } 
} 

Ketika ada data baru maka akan langsung di proses di void loop, dan di parsing dengan library arduinojson.

Semoga tulisan mengirim data sensor Suhu dengan LoRa ini bermanfaat bagi teman-teman. Jika membutuhkan LoRa custome sesuai kebutuhan teman-teman, bisa langsung klik tombol whatsapp di bawah ini.

Whatsapp kami

ShareTweetShare
Previous Post

Memproteksi Program Esp32 dengan Chip Id

Next Post

Setting Parameter Dengan ESP32 HTML Form melalui Access Point

Jimmi Sitepu

Jimmi Sitepu

Hobbyist Embedded System, Robotic, IOT and write all about them. So we have nice quote "Learning and Sharing"

Related Posts

Arduino

Sensor Tekanan Air Dan Udara Dengan Arduino

Desember 20, 2020
Setting Parameter Dengan ESP32 HTML Form melalui Access Point
Arduino

Setting Parameter Dengan ESP32 HTML Form melalui Access Point

Desember 10, 2020
Memproteksi Program Esp32 dengan Chip Id
Arduino

Memproteksi Program Esp32 dengan Chip Id

November 25, 2020
Mengenal Pin Out ESP32 Agar Tidak Salah Dalam Penggunaan nya
Arduino

Mengenal Pin Out ESP32 Agar Tidak Salah Dalam Penggunaan nya

Oktober 2, 2020
Merubah ATmega128 menjadi Arduino ATmega128
Arduino

Merubah ATmega128 menjadi Arduino ATmega128

September 29, 2020
LoRa Shield Arduino Support Arduino Uno, Arduino mega dan Arduino Mega128
Arduino

LoRa Shield Arduino Support Arduino Uno, Arduino mega dan Arduino Mega128

Oktober 15, 2020
Next Post
Setting Parameter Dengan ESP32 HTML Form melalui Access Point

Setting Parameter Dengan ESP32 HTML Form melalui Access Point

Sensor Tekanan Air Dan Udara Dengan Arduino

Please login to join discussion

Tulisan Terbaru

Macam Macam Gerbang Logika Pada Sistem Elektronika Digital

Macam Macam Gerbang Logika Pada Sistem Elektronika Digital

Januari 4, 2021

Sensor Tekanan Air Dan Udara Dengan Arduino

Desember 20, 2020
Setting Parameter Dengan ESP32 HTML Form melalui Access Point

Setting Parameter Dengan ESP32 HTML Form melalui Access Point

Desember 10, 2020
Mengirim Data Sensor Suhu dengan Komunikasi LoRa

Mengirim Data Sensor Suhu dengan Komunikasi LoRa

November 26, 2020
Memproteksi Program Esp32 dengan Chip Id

Memproteksi Program Esp32 dengan Chip Id

November 25, 2020
Mengenal Pin Out ESP32 Agar Tidak Salah Dalam Penggunaan nya

Mengenal Pin Out ESP32 Agar Tidak Salah Dalam Penggunaan nya

Oktober 2, 2020

Browse by Category

  • Arduino
  • Ebook
  • ESP32
  • IOT
  • jasa
  • Komponen
  • PCB
  • Produk
  • program Arduino
  • Project
  • Rangkaian
  • Sensor
  • Tips
  • Uncategorized

Recent News

Macam Macam Gerbang Logika Pada Sistem Elektronika Digital

Macam Macam Gerbang Logika Pada Sistem Elektronika Digital

Januari 4, 2021

Sensor Tekanan Air Dan Udara Dengan Arduino

Desember 20, 2020
  • About US
  • Blog
  • MIKROAVR

© 2020 mikroavr.com - Learning and sharing.

No Result
View All Result
  • About US
  • Blog
  • MIKROAVR

© 2020 mikroavr.com - Learning and sharing.

Welcome Back!

Sign In with Google
OR

Login to your account below

Forgotten Password?

Retrieve your password

Please enter your username or email address to reset your password.

Log In