Semua Tentang Belajar Teknologi Digital Dalam Kehidupan Sehari - Hari

Minggu, 19 Mei 2024

LoRaWan TTGO - ESP32 - Telkom Antares

 



Breaking news: Telkom akan melakukan migrasi LoRaWan ke Telkomiot.id, Silahkan baca disini


Setelah beberapa tahun yang lalu blog ini berhasil mengoprek "LoRaWan" milik Telkom-Antares, ternyata nasib library loraid atau lorawan antares kelihatannya tidak di maintenance lagi. Walaupun tahun 2023 ada update di website nya antares tapi ini khusus untuk hardware yang di desain dan bekerjasama dengan antares langsung. Saya menjadi sedikit khawatir satu hari sinyal lorawan di telkom antares menghilang atau berpindah pemilik seperti terkejutnya saya melihat platform iot telkomiot (telkomiot.id) yang tiba-tiba hadir kembali namun masih gagal konek.

Beberapa mahasiswa masih rajin menghubungi saya untuk bertanya hal library ini, namun tetap saya sarankan mengikuti teknik saya menggunakan library yang walau belum lengkap (menurut penyusunnya) namun terbukti bisa mengirim data, seperti yang dilihat pada tulisan saya sebelumnya disini.



Mikrokontroler yang saya gunakan dulu adalah arduino, dan sudah berhasil mengirim data secara benar secara radio LoRaWan lanjut masuk ke platform antares. Masalahnya ada pembaca yang gagal kirim ketika menggunakan mikrokontroller modern ESP32 semacam TTGO yang sekarang makin terjangkau. "LoRa Init Failed" begitu katanya ! Yahh kalau ini pasti ada hubugannya dengan error di koneksi SPI.




Kebetulan saja saya ada project yang menggunakan TTGO dan benar saja koding saya terdahulu tidak jalan di TTGO, analisa saya karena ESP32 memiliki 2 buah port SPI, sehingga untuk SPI.begin() nya harus dilakukan penulisan port MISO, MOSI, SCK dan CS. Dan langsung saja saya kreasikan beserta display Oled nya TTGO yang walau kurang berguna (karena boros daya) namun untuk sekelas proyekan atu tugas kampus bisa memperindah tampilan.

Modul TTGO LoRa adalah perangkat yang dirancang untuk memfasilitasi pengembangan aplikasi IoT dengan kemampuan komunikasi jarak jauh yang andal dan konsumsi daya rendah. Berikut ini adalah fasilitas utama yang ditawarkan oleh modul TTGO LoRa serta informasi mengenai frekuensi kerjanya.


Fasilitas Modul TTGO LoRa

  • Mikrokontroler ESP32: Modul ini dilengkapi dengan mikrokontroler ESP32 yang memiliki dual-core CPU, Wi-Fi, dan Bluetooth. ESP32 adalah salah satu mikrokontroler yang paling populer di kalangan pengembang karena kemampuannya yang serbaguna dan efisiensi daya.
  • Chip LoRa SX1276/78: Chip LoRa ini memungkinkan komunikasi jarak jauh dengan konsumsi daya yang rendah. Chip ini terkenal karena kinerjanya yang stabil dan jangkauan yang luas.
  • Antena LoRa: Modul ini dilengkapi dengan antena LoRa eksternal yang meningkatkan kualitas sinyal dan jangkauan komunikasi.
  • Layar OLED: Banyak varian TTGO LoRa dilengkapi dengan layar OLED kecil (biasanya 0.96 inci) yang dapat digunakan untuk menampilkan informasi seperti status koneksi, data sensor, atau informasi lainnya.
  • Port USB: Modul ini memiliki port USB untuk kemudahan pemrograman dan daya, memungkinkan pengembang untuk dengan mudah mengunggah kode dan menguji perangkat mereka.
  • Slot Kartu SD: Beberapa varian TTGO LoRa memiliki slot kartu SD untuk penyimpanan data tambahan, memudahkan penyimpanan log data dalam aplikasi yang memerlukan pencatatan jangka panjang.
  • GPIO dan Pin I/O Analog: Modul ini menyediakan beberapa General Purpose Input/Output (GPIO) dan pin input/output analog yang dapat digunakan untuk menghubungkan berbagai sensor dan aktuator.
  • Dukungan Perangkat Lunak: TTGO LoRa kompatibel dengan Arduino IDE, PlatformIO, dan berbagai alat pengembangan lainnya. Hal ini memudahkan pengembang untuk memulai dan membuat prototipe proyek IoT mereka.


Frekuensi Kerja Modul TTGO LoRa


Modul TTGO LoRa bekerja pada beberapa frekuensi yang disesuaikan dengan peraturan komunikasi di berbagai wilayah. Frekuensi utama yang digunakan adalah:


  • 433 MHz: Frekuensi ini sering digunakan di wilayah Eropa dan Asia.
  • 868 MHz: Digunakan terutama di Eropa, frekuensi ini sesuai dengan regulasi ISM (Industrial, Scientific, and Medical).
  • 915 MHz: Frekuensi ini umum digunakan di Amerika Utara dan Australia.
  • 923 MHZ : Indonesia menggunakand Band Plan AS_923_2

Pemilihan frekuensi yang tepat tergantung pada wilayah penggunaan dan regulasi lokal. Modul TTGO LoRa yang berbeda dapat disesuaikan dengan frekuensi yang sesuai dengan kebutuhan proyek dan kepatuhan regulasi.


Konfigurasi PIN seperti berikut :


#define SCK 5

#define MISO 19

#define MOSI 27

#define SS 18

#define RST 14

#define DIO0 26


//OLED pins

#define OLED_SDA 4

#define OLED_SCL 15 

#define OLED_RST 16

#define SCREEN_WIDTH 128 // OLED display width, in pixels

#define SCREEN_HEIGHT 64 // OLED display height, in pixels


Hasilnya ketika saya mendekati BTS lorawan, maklum di depan rumah sejak setahun lalu ada bangunan tinggi yang menghalangi pengiriman, seperti berikut ini :



Saya bagi script sederhana untuk pengiriman LoRaWan pada TTGO-ESP32 yang bisa membantu kamu belajar. Sebaiknya baca-baca dulu pembahasan LoRaWan sebelumnya agar bisa paham library yang saya pake.



/*

LoRaWan - Antares - ESP32(TTGO)
by www.aisi555.com
2024 


*/

//Libraries for LoRa
#include <SPI.h>
#include <LoRa.h>
#include <LoRaWanPacket.h>

//Libraries for OLED Display
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

//Gunakan pin ini untuk TTGO, sesuaikan jika berbeda
#define SCK 5
#define MISO 19
#define MOSI 27
#define SS 18
#define RST 14
#define DIO0 26

//OLED pins
#define OLED_SDA 4
#define OLED_SCL 15 
#define OLED_RST 16
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RST);



//Sesuaikan dev address dan key device LoRa
const char *devAddr = "aaaaaaaa";
const char *nwkSKey = "bbbbbbbbbbbbbbbb0000000000000000";
const char *appSKey = "0000000000000000cccccccccccccccc";


struct LoRa_config
{
  long Frequency;
  int SpreadingFactor;
  long SignalBandwidth;
  int CodingRate4;
  bool enableCrc;
  bool invertIQ;
  int SyncWord;
  int PreambleLength;
};


//Scanning frekuensi satu persatu di BAND AS_923_2

long LoRa_frek_INA_923_start = 921200000 ;
long LoRa_frek_INA_923_end   = 922600000 ;
long LoRa_frek_step = 200000;
long LoRa_frek_INA_923 = LoRa_frek_INA_923_start;
                                     
static LoRa_config txLoRa = {LoRa_frek_INA_923, 12, 125000, 5, true, false, 0x34, 8};


void LoRa_setConfig(struct LoRa_config config)
{
  LoRa.setFrequency(LoRa_frek_INA_923);
  LoRa.setSpreadingFactor(config.SpreadingFactor);
  LoRa.setSignalBandwidth(config.SignalBandwidth);
  LoRa.setCodingRate4(config.CodingRate4);
  if (config.enableCrc)
    LoRa.enableCrc();
  else
    LoRa.disableCrc();
  if (config.invertIQ)
    LoRa.enableInvertIQ();
  else
    LoRa.disableInvertIQ();
  LoRa.setSyncWord(config.SyncWord);
  LoRa.setPreambleLength(config.PreambleLength);
  LoRa.setTxPower(20); //max power ubah jika ingin irit

}

void LoRa_TxMode()
{
  LoRa_setConfig(txLoRa);
  LoRa.idle();
}


void setup() {
   //initialize Serial Monitor
  Serial.begin(9600);
  
  //reset OLED display via software
  pinMode(OLED_RST, OUTPUT);
  digitalWrite(OLED_RST, LOW);
  delay(20);
  digitalWrite(OLED_RST, HIGH);
  
  //initialize OLED
  Wire.begin(OLED_SDA, OLED_SCL);
  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3c, false, false)) { // Address 0x3C for 128x32
    Serial.println(F("SSD1306 allocation failed"));
    for(;;); // Don't proceed, loop forever
  }

  display.clearDisplay();
  display.setTextColor(WHITE);
  display.setTextSize(1);
  display.setCursor(0,0);
  display.print("LORAWAN AISI555");
  display.display();

  Serial.println("LoRaWan Antares Test");

  LoRaWanPacket.personalize(devAddr, nwkSKey, appSKey);

  //SPI LoRa pins
  SPI.begin(SCK, MISO, MOSI, SS);
  //setup LoRa transceiver module
  LoRa.setPins(SS, RST, DIO0);
  
  if (!LoRa.begin(txLoRa.Frequency)) {
    Serial.println("LoRa Gagal. Cek perkabelan kamu...");
    while (true);
  }

  Serial.println("LoRa init berhasil.");
  Serial.println();
  display.setCursor(0,10);
  display.println("LoRa Initializing OK!");
  display.display(); 

}

void loop() {
  if (runEvery(5000)) { // ganti interval kirim lorawan

    Serial.print("Send Message! frek = ");
    Serial.println(LoRa_frek_INA_923);
    
    
    LoRa_sendMessage();

    display.clearDisplay();
    display.setCursor(0,0);
    display.print("KIRIM LORAWAN AIS555");
    display.setCursor(0,20);
    display.print("frekuensi: ");
    
    float freku = LoRa_frek_INA_923/1000000.0;
    display.print(freku , 1);  
    display.print(" MHz ");
    display.display();



  if( LoRa_frek_INA_923 >= LoRa_frek_INA_923_end ) LoRa_frek_INA_923 = LoRa_frek_INA_923_start;
  else LoRa_frek_INA_923 += LoRa_frek_step;
  }

}


void LoRa_sendMessage()
{
  LoRa_TxMode();
  LoRaWanPacket.clear();
  LoRaWanPacket.print("coba kirim frek : ");
  LoRaWanPacket.print(String(LoRa_frek_INA_923));
  
  
  if (LoRaWanPacket.encode()) 
  {
    LoRa.beginPacket();
    LoRa.write(LoRaWanPacket.buffer(), LoRaWanPacket.length());
    LoRa.endPacket();
  }

  
}

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

0 komentar:

Posting Komentar

Kontak Penulis



12179018.png (60×60)
+628155737755

Mail : ahocool@gmail.com

Site View

Categories

555 (8) 7 segmen (3) adc (4) amplifier (2) analog (19) android (12) antares (11) arduino (27) artikel (11) attiny (3) attiny2313 (19) audio (5) baterai (5) blog (1) bluetooth (1) chatgpt (2) cmos (2) crypto (2) dasar (46) digital (11) dimmer (5) display (3) esp8266 (26) euro2020 (13) gcc (1) gsm (1) iklan (1) infrared (2) Input Output (3) iot (74) jam (7) jualan (12) kereta api (1) keyboard (1) keypad (3) kios pulsa (2) kit (6) komponen (17) komputer (3) komunikasi (1) kontrol (8) lain-lain (8) lcd (2) led (14) led matrix (6) line tracer (1) lm35 (1) lora (11) lorawan (2) MATV (1) memory (1) metal detector (4) microcontroller (70) micropython (6) mikrokontroler (1) mikrokontroller (14) mikrotik (5) modbus (9) mqtt (3) ninmedia (5) ntp (1) paket belajar (19) palang pintu otomatis (1) parabola (88) pcb (2) power (1) praktek (2) project (33) proyek (1) python (8) radio (28) raspberry pi (9) remote (1) revisi (1) rfid (1) robot (1) rpm (2) rs232 (1) script break down (3) sdcard (3) sensor (2) sharing (3) signage (1) sinyal (1) sms (6) software (18) solar (1) solusi (1) tachometer (2) technology (1) teknologi (2) telegram (2) telepon (9) televisi (167) television (28) telkomiot (5) transistor (2) troubleshoot (3) tulisan (94) tutorial (108) tv digital (6) tvri (2) vu meter (2) vumeter (2) wav player (3) wayang (1) wifi (3) yolo (7)

Arsip Blog

Diskusi


kaskus
Forum Hobby Elektronika