• Arduino
    • Sensor
    • program Arduino
  • Project
  • Produk
  • IOT
Kamis, Maret 23, 2023
mikroavr.com
No Result
View All Result
  • Login
  • Arduino
    • Sensor
    • program Arduino
  • Project
  • Produk
  • IOT
  • Arduino
    • Sensor
    • program Arduino
  • Project
  • Produk
  • IOT
No Result
View All Result
mikroavr
No Result
View All Result
Home Arduino

ESP32 LoRa Node 923MhZ dengan ADC yang lebih Baik dan Stabil

Jimmi Sitepu by Jimmi Sitepu
Februari 23, 2020
0 0
0
ESP32 LoRa Node 923MhZ dengan ADC yang lebih Baik dan Stabil
147
SHARES
1.2k
VIEWS
Share on FacebookShare on Twitter

LoRa Custome ESP32

Mikroavr.com baru-baru ini mendapatkan tawaran untuk membuat ESP32 LoRa node dengan fiture sebagai berikut,

  • Kontroller Utama ESP32
  • RTC DS3231 on board
  • SD Card On board untuk penyimpanan data / Logger
  • ADC 10bit 8 channel ( di baca oleh atmega328 / Arduino Uno)
  • LoRa 923Mhz dengan chip SX1276

Kontroller ini agan di gunakan untuk membaca data-data sensor yang memiliki data output. Photonya sebagai berikut,

READ ALSO

Membaca Sensor URM14 RS485 dengan ESP32 Arduino

4G GSM Modul Arduino SIM7600 Cocok Untuk ESP32, STM32 atau Arduino Mega

ESP32 Node Lora
Order Lora Custome

Contoh Pemrograman

Untuk Memudahkan user menggunakan ESP32 LoRa Node ini, maka kami menyertakan contoh-contoh pemrograman nya. Berikut contoh pemrograman nya.

Akses LoRa SX1276

Ada pun Configurasi ESP32 LoRa node nya sebagai berikut,

LoRa PinESP32 Pin
MOSI23
MISO19
SCK18
NSS5
NRST26
DIO013
DIO116
DIO217
TABLE KONFIGURASI LORA ESP32

Untuk Akses ESP32 LoRa node ini, download library nya di link berikut ini, cukup tekan tombol merah di bawah ini

library arduino Lora

Untuk Program nya sebagai berikut,

#include "SPI.h"
#include "LoRa.h"

int counter = 0;
const int csPin = 5;          // LoRa radio chip select
const int resetPin = 26;        // LoRa radio reset
const int irqPin = 13;          // change for your board; must be a hardware interrupt pin

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

  Serial.println("LoRa Sender");
  LoRa.setPins(csPin, resetPin, irqPin); // set config pin LoRa ESP32
  if (!LoRa.begin(915E6)) {
    Serial.println("Starting LoRa failed!");
    while (1);
  }
}

void loop() {
  Serial.print("Sending packet: ");
  Serial.println(counter);

  // send packet
  LoRa.beginPacket();
  LoRa.print("hello ");
  LoRa.print(counter);
  LoRa.endPacket();

  counter++;
    delay(2000);
}

point penting pada program di atas ada configurasi pin pada arduino LoRa dan Frequency. Salah dalam pengaturan pin config dan freq akan mengakibabkan kegagalan dalam koneksi sesama LoRa. Setting nya bisa di lihat pada penggalan program ini

const int csPin = 5; // pin CS
const int resetPin = 26; // pin RST
const int irqPin = 13; // pin DIO0

Untuk Setting nilai Freq nya ada penggalan program berikut ini,

if (!LoRa.begin(923E6)) {
Serial.println("Starting LoRa failed!");
while (1);
}

Akses SD Card

SD Card dan LoRa sama-sama mengguanakan jalur SPI. Karena ESP32 memiliki 3 SPI maka SD Card kita hubungkan ke PIN HSPI. Ada pun configurasi PIN nya sebagai Berikut.

SD Card PINESP32 Pin
MISO2
MOSI15
SCK14
SS27
Tabel Konfigurasi SD Card

Untuk Program nya Sebagai Berikut,


#include "SPI.h"
#include "SD.h"
File root;
SPIClass spiSD(HSPI); // init clas HSPI
#define SD_CS 27
#define SDSPEED 27000000

void setup() {
  // Open serial communications and wait for port to open:
  Serial.begin(115200);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }
  Serial.print("Initializing SD card...");
  spiSD.begin(14,2,15,27);
  if(!SD.begin( SD_CS, spiSD, SDSPEED)){
  // if(!SD.begin()){
    Serial.println("Card Mount Failed");
    return;
  }
  Serial.println("initialization done.");
  root = SD.open("/");
  printDirectory(root, 0);
  Serial.println("done!");
}

void loop() {
  // nothing happens after setup finishes.
}

void printDirectory(File dir, int numTabs) {
  while (true) {
    File entry =  dir.openNextFile();
    if (! entry) {
      // no more files
      break;
    }
    for (uint8_t i = 0; i < numTabs; i++) {
      Serial.print('\t');
    }
    Serial.print(entry.name());
    if (entry.isDirectory()) {
      Serial.println("/");
      printDirectory(entry, numTabs + 1);
    } else {
      // files have sizes, directories do not
      Serial.print("\t\t");
      Serial.println(entry.size(), DEC);
    }
    entry.close();
  }
}



Pengujian RTC DS3231

Untuk Pengujian RTC DS3231 ini cukup mudah. Cukup add library RTClib dan open example. Library RTClib ini bisa teman-teman download dengan cukup tekan tombol merah di bawah ini,

download RTClib

Program nya sebagai berikut,

 #include "RTClib.h"

RTC_DS3231 rtc;

char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};

void setup () {
  Serial.begin(9600);
  delay(3000); // wait for console opening

  if (! rtc.begin()) {
    Serial.println("Couldn't find RTC");
    while (1);
  }

  if (rtc.lostPower()) {
    Serial.println("RTC lost power, lets set the time!");
    rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
  }
}

void loop () {
    DateTime now = rtc.now();
    Serial.print(now.year(), DEC);
    Serial.print('/');
    Serial.print(now.month(), DEC);
    Serial.print('/');
    Serial.print(now.day(), DEC);
    Serial.print(" (");
    Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
    Serial.print(") ");
    Serial.print(now.hour(), DEC);
    Serial.print(':');
    Serial.print(now.minute(), DEC);
    Serial.print(':');
    Serial.print(now.second(), DEC);
    Serial.println();
    Serial.print("Temperature: ");
    Serial.print(rtc.getTemperature());
    Serial.println(" C");
    Serial.println();
    delay(3000);
} 

Semua Program di atas menggunakan board ESP32. Untuk membaca data ADC kita menggunakan Arduino UNO dengan komunikasi serial ke ESP32. Gambar komunikasi nya bisa dilihat pada gambar di atas.

Order LoRa Custome

Membaca ADC di Uno

Seperti yang DI terangkan di atas, pembacaan data ADC ini cukup mudah, seperti yang ada pada program di bawah ini

 
String strADC; 
int adc0,adc1,adc2,adc3; 
int adc4,adc5,adc6,adc7;   
void setup(){   
Serial.begin(115200); 
} 
void loop(){   
 adc0 = analogRead(A0);  
 adc1 = analogRead(A1);   
 adc2 = analogRead(A2);   
 adc3 = analogRead(A3);   
 adc4 = analogRead(A4);   
 adc5 = analogRead(A5);   
 adc6 = analogRead(A6);   
 adc7 = analogRead(A7);   
 strADC = String(adc0)+ ",";   
 strADC += String(adc1)+ ",";   
 strADC += String(adc2)+ ",";   
 strADC += String(adc3)+ ",";   
 strADC += String(adc4)+ ",";   
 strADC += String(adc5)+ ",";   
 strADC += String(adc6)+ ",";   
 strADC += String(adc7)+ ",";   
 Serial.println(strADC);   
 delay(250);   
} 

Kirim ADC Ke ESP32

Komunikasi ESP32 dengan Arduino UNO menggunakan komunikasi serial. di ESP32 menggunakan hardware Serial1 sendangkan pada UNO menggunakan SoftwareSerial.

Untuk mendapatkan data ADC dari Arduino Uno maka ESP32 akan request dengan mengirim karakter O kepada UNO, sehinga jika UNO mendapatkan karateker O maka Uno akan mengirim balik berupa data ADC. Setelah mengirim data ADC, maka UNO akan berada pada posisi RST ( tidak hidup). Yuk bagaimana kah program nya.

Program Pada Uno

 
#include "SoftwareSerial.h" 
SoftwareSerial mySerial(2, 3); 
String strADC; 
int adc0,adc1,adc2,adc3; 
int adc4,adc5,adc6,adc7; 
char data;   
void setup(){   
Serial.begin(115200);   
mySerial.begin(9600);   
Serial.println("mulai adc"); 
} 
void loop(){    
//delay(1000);    
//baca_adc();    
while(mySerial.available()){      
data = mySerial.read();      
 if(data == 'O'){         
   baca_adc();         
   mySerial.print(strADC);      
  }    
 }  
} 

void baca_adc(){   
adc0 = analogRead(A0);   
adc1 = analogRead(A1);   
adc2 = analogRead(A2);   
adc3 = analogRead(A3);   
adc4 = analogRead(A4);   
adc5 = analogRead(A5);   
adc6 = analogRead(A6);   
adc7 = analogRead(A7);   
strADC = String(adc0)+ ",";   
strADC += String(adc1)+ ",";   
strADC += String(adc2)+ ",";   
strADC += String(adc3)+ ",";  
strADC += String(adc4)+ ",";   
strADC += String(adc5)+ ",";   
strADC += String(adc6)+ ",";   
strADC += String(adc7)+ ",";   
//Serial.println(strADC);  } 

Program Pada ESP32

#define RXD1 33
#define TXD1 32

unsigned long cur_time_wait, old_time_wait;
unsigned long cur_time, old_time;
String str_data;
const byte pinRST = 25;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  Serial1.begin(9600, SERIAL_8N1, RXD1, TXD1);
  pinMode(pinRST, OUTPUT);
  digitalWrite(pinRST, HIGH);
  delay(1000);
}

void loop() {
  // put your main code here, to run repeatedly:
  
  cur_time = millis();
  if(cur_time - old_time >= 2000){
    Serial.println("request adc");
    Serial1.write('O'); 
    tunggu_data(1000);
    Serial.println(str_data);
    old_time = cur_time;
  }
}

void tunggu_data(unsigned long wkt){
  Serial.println("on uno");
  digitalWrite(pinRST, HIGH);
  cur_time_wait = millis();
  old_time_wait = cur_time_wait;
  while(cur_time_wait - old_time_wait < wkt){
    cur_time_wait = millis();
    while(Serial1.available()){
        str_data = Serial1.readString();
     }
  }
  Serial.println("off uno");
  digitalWrite(pinRST, LOW);
}

Oke teman-teman mikroavr, sekian dulu artikel ESP32 Node LoRa kita, Untuk video pengujian bisa dilihat pada video di bawah ini,

Thanks

Share147TweetShare
Previous Post

ESP32 Telegram Bot Untuk Relay 8 channel dan Sensor DHT21

Next Post

Enkripsi Data Lora pada Modul ESP32 Lora

Jimmi Sitepu

Jimmi Sitepu

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

Related Posts

sensor URM14 Arduino
ESP32

Membaca Sensor URM14 RS485 dengan ESP32 Arduino

Juli 7, 2022
4G GSM Modul Arduino SIM7600 Cocok Untuk ESP32, STM32 atau Arduino Mega
Arduino

4G GSM Modul Arduino SIM7600 Cocok Untuk ESP32, STM32 atau Arduino Mega

Juni 13, 2022
Mendapatkan Waktu Akurat dengan NTP GPS
ESP32

Mendapatkan Waktu Akurat dengan NTP GPS

Mei 8, 2022
Custome GPS Logger Arduino dengan Akeses Internet SIM7600 4G
IOT

Custome GPS Logger Arduino dengan Akeses Internet SIM7600 4G

April 14, 2022
Tutorial Menggunakan Weather Station DFRobot SEN0186 dengan Arduino ESP32
Arduino

Tutorial Menggunakan Weather Station DFRobot SEN0186 dengan Arduino ESP32

Maret 9, 2022
ethernet arduino
Arduino

Arduino Ethernet Tutorial, Project dengan Arduino Uno dan Mega

Februari 24, 2022
Next Post
Enkripsi Data Lora pada Modul ESP32 Lora

Enkripsi Data Lora pada Modul ESP32 Lora

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

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

Please login to join discussion

Tulisan Terbaru

sensor URM14 Arduino

Membaca Sensor URM14 RS485 dengan ESP32 Arduino

Juli 7, 2022
4G GSM Modul Arduino SIM7600 Cocok Untuk ESP32, STM32 atau Arduino Mega

4G GSM Modul Arduino SIM7600 Cocok Untuk ESP32, STM32 atau Arduino Mega

Juni 13, 2022
Mendapatkan Waktu Akurat dengan NTP GPS

Mendapatkan Waktu Akurat dengan NTP GPS

Mei 8, 2022
Custome GPS Logger Arduino dengan Akeses Internet SIM7600 4G

Custome GPS Logger Arduino dengan Akeses Internet SIM7600 4G

April 14, 2022
Tutorial Menggunakan Weather Station DFRobot SEN0186 dengan Arduino ESP32

Tutorial Menggunakan Weather Station DFRobot SEN0186 dengan Arduino ESP32

Maret 9, 2022
ethernet arduino

Arduino Ethernet Tutorial, Project dengan Arduino Uno dan Mega

Februari 24, 2022

Browse by Category

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

Recent News

sensor URM14 Arduino

Membaca Sensor URM14 RS485 dengan ESP32 Arduino

Juli 7, 2022
4G GSM Modul Arduino SIM7600 Cocok Untuk ESP32, STM32 atau Arduino Mega

4G GSM Modul Arduino SIM7600 Cocok Untuk ESP32, STM32 atau Arduino Mega

Juni 13, 2022
  • 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

Add New Playlist