Antares
Antares
id
id
  • Pendahuluan
    • Registrasi Akun
    • Buat App
    • Tambah Device ke Application
    • Instalasi Board pada Arduino IDE
      • ESP8266
      • ESP32
      • STM32
    • Instalasi Arduino IDE
    • Instalasi Library Arduino
      • Antares LoRaWAN
      • Antares Wi-Fi HTTP
      • Antares Wi-Fi MQTT
      • DHT11 Sensor Library
      • Adafruit SSD1306
    • Instalasi STM32 Cube IDE
    • Instalasi STM32 Cube Programmer
    • Instalasi Expansion Pack I-CUBE-LRWAN
    • Instalasi Software
      • Instalasi MQTTX
      • Instalasi Postman
      • Instalasi Operating System (OS) pada SD Card
    • Quickstart
  • Antares Insight Hub
    • Getting Started
      • Request Demo
      • Request Free Trial
    • Usecase
      • Power Meter
        • Prasyarat Usecase Power Meter
        • Power Meter Device Recommendation
        • Payload Example Power Meter
        • Setup Device Threshold Power Meter
      • Water Meter
        • Prasyarat Usecase Water Meter
        • Water Meter Device Recommendation
        • Payload Example Water Meter
        • Setup Device Threshold Water Meter
      • Water Level
        • Prasyarat Usecase Water Level
        • Water Level Device Recommendation
        • Payload Example Water Level
        • Setup Device Threshold Water Level
      • Environment Monitoring
        • Prasyarat Usecase Environment Monitoring
        • Environment Monitoring Device Recommendation
        • Payload Example Environment Monitoring
        • Setup Device Threshold Environment Monitoring
    • Settings
      • Manage Alert Recipient (Telegram)
      • Manage User
      • Roles
  • Subscription and Payment
    • Platform
      • Cara Menggunakan Layanan Platform
      • Tata Cara Pembelian Layanan Platform
        • Pembayaran Menggunakan Virtual Account
          • Bank Mandiri
          • Bank Permata
          • Bank BRI
          • Bank BNI
        • Pembayaran Menggunakan e-Wallet (LinkAja)
        • Pembayaran Menggunakan Credit Cards (CC)
        • Pembayaran Menggunakan Antares Coins
      • Tata Cara Memperpanjang Layanan Platform
      • Tata Cara Mengganti Layanan Platform
    • Connectivity
      • Cara Menggunakan Layanan Connectivity
      • Tata Cara Pembelian Layanan Connectivity
        • Pembayaran Menggunakan Virtual Account
          • Bank Mandiri
          • Bank Permata
          • Bank BRI
          • Bank BNI
        • Pembayaran Menggunakan e-Wallet (LinkAja)
        • Pembayaran Menggunakan Credit Cards (CC)
        • Pembayaran Menggunakan Antares Coins
      • Tata Cara Memperpanjang Layanan Connectivity
      • Tata Cara Mengganti Layanan Connectivity
    • Antares Coins
      • Tata Cara Pembayaran Top Up Antares Coins
        • Pembayaran Menggunakan Virtual Account
          • Bank Mandiri
          • Bank Permata
          • Bank BRI
          • Bank BNI
        • Pembayaran Menggunakan e-Wallet (LinkAja)
        • Pembayaran Menggunakan Credit Cards (CC)
  • Contoh kode dan library
    • ESP8266 (Wi-Fi)
      • Prasyarat Umum ESP8266 Wi-Fi
      • ESP8266 (Wi-Fi) Protokol HTTP
        • Mengirim Data Sederhana ke Antares dengan Protokol HTTP
        • Mengambil Data Terakhir dari Server Antares dengan Protokol HTTP
        • Project Sederhana ESP8266 HTTP Antares
          • Post Data DHT 11 Secara Periodik
          • Post Data DHT 11 dengan Push Button
          • Post Data DHT 11 dan ditampilkan pada Display OLED
          • Get Data ditampilkan pada Display OLED
          • Post dan Get Data DHT 11 ditampilkan pada Display OLED
          • Mengontrol Relay dan LED Melalui Perintah Get
      • ESP8266 (Wi-Fi) Protokol MQTT
        • Mengirim Data Sederhana ke Antares dengan Protokol MQTT
        • Mengambil Data Terakhir dari Server Antares dengan Protokol MQTT
        • Project Sederhana ESP8266 MQTT Antares
          • Send Data DHT 11 Secara Periodik
          • Send Data DHT 11 dengan Push Button
          • Send Data DHT 11 dan ditampilkan pada Display OLED
          • Retrieve Data ditampilkan pada Display OLED
          • Send Data DHT 11 dan Retrieve Data ditampilkan pada Display OLED
          • Mengontrol Relay dan LED Melalui Perintah Get
    • Arduino Uno
      • Instalasi Arduino IDE
      • Instalasi Library Antares Ethernet Shield
      • Konfigurasi
      • Kirim Data Sederhana ke Antares
    • ESP32 (Wi-Fi)
      • Prasyarat Umum ESP32 Wi-Fi
      • ESP32 (Wi-Fi) Protokol HTTP
        • Mengirim Data Sederhana ke Antares dengan Protokol HTTP
        • Mengambil Data Terakhir dari Server Antares dengan Protokol HTTP
        • Project Sederhana Lynx-32 HTTP Antares
          • Post Data DHT 11 Secara Periodik
          • Post Data DHT 11 dengan Push Button
          • Post Data DHT 11 dan ditampilkan pada Display OLED
          • Get Data ditampilkan pada Display OLED
          • Post dan Get Data DHT 11 ditampilkan pada Display OLED
          • Mengontrol Relay dan LED Melalui Perintah Get
      • ESP32 (Wi-Fi) Protokol MQTT
        • Mengirim Data Sederhana ke Antares dengan Protokol MQTT
        • Mengambil Data Terakhir dari Server Antares dengan Protokol MQTT
        • Project Sederhana Lynx-32 MQTT Antares
          • Send Data DHT 11 Secara Periodik
          • Send Data DHT 11 dengan Push Button
          • Send Data DHT 11 dan ditampilkan pada Display OLED
          • Retrieve Data ditampilkan pada Display OLED
          • Send Data DHT 11 dan Retrieve Data ditampilkan pada Display OLED
          • Mengontrol Relay dan LED Melalui Perintah Retrieve
      • Protokol HTTP & MQTT
    • ESP32 (LoRa)
      • Prasyarat Umum ESP32 LoRa
      • Mengirim Data Sederhana ke Antares
      • Project Sederhana Lynx-32 LoRa Antares
        • Uplink Data DHT11 Secara Periodik
        • Uplink Data DHT11 dengan Push Button
        • Uplink Data DHT11 dan Ditampilkan pada Display Oled
        • Downlink Data Ditampilkan pada Display Oled
        • Uplink Data DHT 11 dan Downlink Data ditampilkan pada Display OLED
        • Mengontrol Relay dan LED melalui perintah Downlink
      • LoRaWAN Class
    • STM32 (LoRa) STM32Cube IDE
      • Prasyarat Umum STM32 (LoRa) STM32Cube IDE
      • Mengirim Data Sederhana ke Antares
    • STM32 (LoRa) Arduino IDE
      • Prasyarat Umum STM32 (LoRa) Arduino IDE
      • Mengirim Data Sederhana ke Antares
    • Raspberry Pi
      • GUI (Graphical User Interface)
        • Prasyarat Umum Raspberry GUI
        • Mengirim Data Menggunakan Node.js
        • Monitoring Suhu dan Kelembaban Menggunakan Sensor DHT11
      • SSH (Secure Shell)
        • Prasyarat Umum Raspberry SSH
        • Mengirim Data Menggunakan Node.js
        • Monitoring Suhu dan Kelembaban Menggunakan Sensor DHT11
    • NB-IoT
      • NB-Lynx-7000
        • Prasyarat Umum NB-Lynx-7000
        • Mengirim Data Sederhana ke Antares
        • Mengambil Data GNSS (Global Navigation Satellite System)
      • NB-Lynx-95
        • Prasyarat Umum NB-Lynx-95
        • Mengirim Data Sederhana ke Antares
    • Android
      • Mengambil data dari ANTARES mengunakan Android
      • Coding Stuff
    • MIT App Inventor
    • Node-RED
    • Postman
    • MQTT | Push data to Device
    • HTTP | Subscribe and Notify Mechanism
    • Library PHP
    • MQTT | Subscribe LoRa Device
    • LoRaWAN | Downlink Tutorial
    • Register Perangkat LoRaWAN
      • Register Menu
    • GPS TrackerID
  • Data Model
  • Port Configuration
  • API | HTTP
    • Device
    • Data of Device
    • Subscriber
  • API | MQTT
    • Device
    • Subscriber
  • Daftar Akronim
  • Software Relevan
Powered by GitBook
On this page
  • Prasyarat
  • Langkah Kerja
  • 1. Setup Peralatan
  • 2. Jalankan Aplikasi Arduino IDE
  • 3. Menginputkan Kode Program
  • 4. Penjelasan Kode Program
  • 5. Upload Program ke Board NB-LYNX-7000
  • 6. Periksa Data pada Antares IoT Platform
  1. Contoh kode dan library
  2. NB-IoT
  3. NB-Lynx-7000

Mengirim Data Sederhana ke Antares

PreviousPrasyarat Umum NB-Lynx-7000NextMengambil Data GNSS (Global Navigation Satellite System)

Last updated 9 months ago

Pada project ini Anda akan diarahkan untuk mengirim data sederhana dari board NB-LYNX-7000 ke Antares IoT Platform menggunakan serangkaian AT Command dari modul SIM7000.

Prasyarat

Material yang dibutuhkan mengikuti Prasyarat Umum pada laman sebelumnya. Jika Anda belum menyiapkan kebutuhan pada laman tersebut, maka Anda dapat mengunjungi laman berikut.

Langkah Kerja

1. Setup Peralatan

Hal yang perlu Anda lakukan pertama kali adalah melakukan setup peralatan dengan cara menghubungkan board NB-LYNX-7000 ke perangkat laptop/komputer Anda menggunakan kabel USB-C.

Pastikan Anda telah memasang antena pada port antena GSM sebelum menghubungkan board NB-LYNX-7000 ke laptop/komputer.

Berikut adalah rangkaian peralatan yang sudah dihubungkan ke laptop/komputer.

2. Jalankan Aplikasi Arduino IDE

3. Menginputkan Kode Program

Untuk mengirim data ke Antares, Anda perlu menginputkan kode program di bawah pada Arduino IDE.

#include <Arduino.h>

// Configurable macros
#define APN "nb1internet"
#define APPNAME "YOUR-APP-NAME"
#define DEVNAME "YOUR-DEVICE-NAME"
#define ACCESSKEY "0000000000000000:0000000000000000"
#define PAYLOAD "{\\\"t\\\":\\\"25.5\\\",\\\"h\\\":\\\"60.35\\\"}"
#define SIM7000_POWER_KEY 25

const uint32_t interval = 10000; // 10 s interval to send message
uint32_t previousMillis = 0;  // will store last time message sent
uint32_t counter = 0;      // message counter

String sendCommand(String command, uint32_t timeout, char delimiter)
{
 while (Serial2.available())
  Serial2.read();

 uint32_t T = millis();
 String res = "";
 Serial.print("[SYS CMD] ");
 Serial.print(command);
 Serial.println("=========");
 Serial2.print(command);
 while ((millis() - T) < timeout)
 {
  while (Serial2.available())
  {
   res = Serial2.readStringUntil(delimiter);
   res.trim();
   if (res.length() > 0)
   {
    Serial.print("[SYS RES] ");
    Serial.println(res);
    return res;
   }
  }
 }
 return "TIMEOUT";
}

String receiveAddCommand(int32_t timeout)
{
 String res = "";
 uint32_t T = millis();
 while ((millis() - T) < timeout)
 {
  while (Serial2.available())
  {
   res = Serial2.readStringUntil('\0');
   res.trim();
   if (res.length() > 0)
   {
    Serial.print("[SYS RES] ");
    Serial.println(res);
    return res;
   }
  }
 }
 return res;
}

bool checkResponse(String response, String expected_response)
{
 if (response.indexOf(expected_response) != -1)
  return true;
 else
  return false;
}

bool sim7000_L1()
{
 pinMode(SIM7000_POWER_KEY, OUTPUT);
 delay(100);
 digitalWrite(SIM7000_POWER_KEY, HIGH);
 delay(1000);
 digitalWrite(SIM7000_POWER_KEY, LOW);
 delay(5000);
 for (uint8_t i = 0; i < 5; i++)
 {
  if (checkResponse(sendCommand("AT\r\n", 200, '\0'), "OK"))
  {
   sendCommand("ATE0\r\n", 200, '\n');
   return true;
  }

  delay(1000);
 }
 return false;
}

bool sim7000_L2()
{
 if (!checkResponse(sendCommand("AT+CNMP=38\r\n", 200, '\n'), "OK"))
  return false;
 if (!checkResponse(sendCommand("AT+CMNB=2\r\n", 200, '\n'), "OK"))
  return false;

 return true;
}

bool sim7000_L3(uint8_t stage)
{
 switch (stage)
 {
 case 0:
  if (!checkResponse(sendCommand("AT+CIPSHUT\r\n", 300 * 200, '\n'), "SHUT OK"))
   return false;

 case 1:
  if (!checkResponse(sendCommand("AT+CSTT=\"" + String(APN) + "\"\r\n", 200, '\n'), "OK"))
   return false;

 case 2:
  if (!checkResponse(sendCommand("AT+CIICR\r\n", 300 * 200, '\n'), "OK"))
   return false;

 default:
  if (checkResponse(sendCommand("AT+CIFSR\r\n", 200, '\n'), "ERROR"))
   return false;
 }

 return true;
}

bool sim7000_L3_check()
{
 String response = sendCommand("AT+CIPSTATUS\r\n", 200, '\0');
 if (checkResponse(response, "OK"))
 {
  if (checkResponse(response, "PDP DEACT") || checkResponse(response, "TCP CLOSED"))
   return sim7000_L3(0);
  else if (checkResponse(response, "IP INITIAL"))
   return sim7000_L3(1);
  else if (checkResponse(response, "IP START"))
   return sim7000_L3(2);
  else if (checkResponse(response, "IP GPRSACT"))
   return sim7000_L3(3);
  else
   return sim7000_L3(0);
 }
 else
  return sim7000_L3(0);
}

void sim7000_send()
{
 String httpBody = "{\"m2m:cin\": {\"con\": \"%1\"}}";
 httpBody.replace("%1", PAYLOAD);

 String response = sendCommand("AT+CIPSTART=\"TCP\",\"platform.antares.id\",\"8080\"\r\n", 200, '\n');
 if (checkResponse(response, "OK"))
 {
  if (!checkResponse(response, "CONNECT OK") && !checkResponse(response, "ALREADY CONNECT"))
  {
   response = receiveAddCommand(300 * 200);
   Serial.print("Response : ");
   Serial.println(response);
  }

  if (checkResponse(response, "CONNECT OK") || checkResponse(response, "ALREADY CONNECT"))
  {
   Serial.print("POST /~/antares-cse/antares-id/" + String(APPNAME) + "/" + String(DEVNAME) + " HTTP/1.1\r\n");
   Serial.print("Host: platform.antares.id:8080\r\n");
   Serial.print("Accept: application/json\r\n");
   Serial.print("Content-Type: application/json;ty=4\r\n");
   Serial.print("X-M2M-Origin: " + String(ACCESSKEY) + "\r\n");
   Serial.print("Content-Length: " + String(httpBody.length()) + "\r\n\r\n");
   Serial.println(httpBody);

   sendCommand("AT+CIPSEND\r\n", 200, '\0');
   Serial2.print("POST /~/antares-cse/antares-id/" + String(APPNAME) + "/" + String(DEVNAME) + " HTTP/1.1\r\n");
   Serial2.print("Host: platform.antares.id:8080\r\n");
   Serial2.print("Accept: application/json\r\n");
   Serial2.print("Content-Type: application/json;ty=4\r\n");
   Serial2.print("X-M2M-Origin: " + String(ACCESSKEY) + "\r\n");
   Serial2.print("Content-Length: " + String(httpBody.length()) + "\r\n\r\n");
   Serial2.print(httpBody);
   Serial2.write(0x1A);

   String response2 = receiveAddCommand(300 * 200);
   Serial.print("Response2 : ");
   Serial.println(response2);
  }

  sendCommand("AT+CIPCLOSE\r\n", 200, '\n');
 }
}

bool nbSetup()
{
 Serial2.begin(9600);
 Serial.println("[SIM7000] Turning ON...");
 if (sim7000_L1())
  Serial.println("Success");
 else
 {
  Serial.println("Failed");
  return false;
 }

 Serial.println("[SIM7000] Set NB Mode... ");
 if (sim7000_L2())
  Serial.println("Success");
 else
 {
  Serial.println("Failed");
  return false;
 }

 Serial.println("[SIM7000] Start IP Connection...");
 sim7000_L3(0);

 return true;
}

void setup()
{
 Serial.begin(115200);
 if (!nbSetup())
 {
  while (1)
   delay(1000);
 }
}

void loop() {
 // Check interval overflow
 if (millis() - previousMillis > interval) {
  previousMillis = millis();

  if (sim7000_L3_check()) {
   char message[50];
   sprintf(message, "Sending frame : %d", counter);
   Serial.println(message);
   sim7000_send();
   counter++;
  }
 }

 // Add a stopping condition here
 if (counter >= 10) { // Stop after sending 10 messages
  Serial.println("Program stopped.");
  while (1) { // Enter an infinite loop to stop further execution
   delay(1000);
  }
 }
}

Jangan lupa untuk menggganti APPNAME dengan nama aplikasi yang Anda buat di platform Antares, DEVNAME dengan nama device yang dibuat pada platform Antares, dan ACCESSKEY dengan access-key akun Anda.

Setelah menginputkan kode program, jangan lupa untuk menyimpan kode program tersebut dengan memilih File > Save As. Berikut adalah tampilan pada Arduino IDE ketika Anda sudah menginputkan kodenya.

4. Penjelasan Kode Program

Supaya board NB-LYNX-7000 dapat berkomunikasi dengan platform Antares, digunakan modul SIM7000. SIM7000 merupakan modul komunikasi seluler yang dikembangkan oleh SIMCom Wireless Solutions. Modul ini menerapkan beberapa protokol yang memungkinkan perangkat untuk terhubung ke jaringan menggunakan AT command. Berikut dijelaskan beberapa AT command yang digunakan pada kode program.

AT<CR><LF>

Pada kode program terdapat command "AT\r\n" yang dikirimkan sebagai starting point atau tahap inisialisasi modul SIM7000. \r merupakan carriage return , sedangkan \n merupakan line feed. Command ini dikirimkan untuk mendapatkan respons “OK”.

ATE0<CR><LF>

Pada kode program terdapat command "ATE0\r\n" yang dikirimkan setelah mendapatkan respons “OK”. Command ini digunakan untuk menonaktifkan echo mode yang menandakan bahwa inisialisasi telah berhasil.

AT+CNMP=<mode><CR><LF>

Pada kode program terdapat command "AT+CNMP=38\r\n" yang dikirimkan untuk memilih mode yang diinginkan. Parameter “38” diatur supaya modul SM7000 hanya bekerja pada jaringan LTE saja, yang mana umum digunakan untuk NB-IoT.

Berikut parameter <mode> lain yang dapat digunakan

  • 2 = Automatic

  • 13 = GSM only

  • 38 = LTE only

  • 51 = GSM and LTE only

AT+CMNB=<mode><CR><LF>

Pada kode program terdapat command "AT+CMNB=2\r\n" yang digunakan untuk memilih mode antara CAT-M dan NB-IoT. Parameter “2” digunakan untuk memilih NB-IoT.

Berikut terdapat parameter <mode> lain yang tersedia

  • 1 = CAT-M

  • 2 = NB-IoT

  • 3 = CAT-M dan NB-IoT

AT+CIPSHUT<CR><LF>

Pada kode program terdapat command "AT+CIPSHUT\r\n" yang dikirimkan sebagai case 0 untuk mematikan PDP (packet data protocol) context. PDP context merupakan protokol pada komunikasi seluler yang digunakan untuk mengatur data session antara perangkat dengan jaringan. Command "AT+CIPSHUT\r\n" digunakan untuk memastikan bahwa semua koneksi internet yang aktif telah dimatikan semuanya sebelum dilanjutkan dengan konfigurasi yang lain. Respons yang akan diterima ketika mengirimkan command ini adalah “SHUT OK”.

AT+CSTT=<apn>CR><LF>

Pada kode program terdapat command "AT+CSTT=""+ String(APN) + ""\r\n" yang dikirimkan sebagai case 1 untuk mengatur APN (Access Point Name) pada modul SM7000 sebagai koneksi GPRS (General Packet Radio Service). String(APN) digunakan untuk mengubah variabel yang sudah didefinisikan pada bagian awal kode menggunakan #define APN "nb1internet" menjadi string. Oleh karena itu, APN yang diatur dalam hal ini akan memiliki value “nb1internet”.

AT+CIICR<CR><LF>

Pada kode program terdapat command "AT+CIICR\r\n" yang dikirimkan sebagai case 2 untuk mengaktifkan koneksi wireless berupa IP connection. IP connection ini digunakan sebagai transmisi data.

AT+CIFSR<CR><LF>

Pada kode program terdapat command "AT+CIFSR\r\n" yang dikirimkan sebagai case default untuk mendapatkan IP address ketika case sebelumnya (case 0, case 1, dan case 2) tidak ada yang match. Command ini digunakan untuk memastikan bahwa IP address berhasil didapatkan yang ditandai dengan response berupa IP address. Apabila proses ini gagal, maka respons yang diterima adalah ERROR.

AT+CIPSTATUS<CR><LF>

Pada kode program terdapat command "AT+CIPSTATUS\r\n" yang digunakan untuk menanyakan status koneksi saat ini.

AT+CIPSTART=<mode>,<domain name>,<port><CR><LF>

Pada kode program terdapat command "AT+CIPSTART="TCP","platform.antares.id","8080"\r\n" yang digunakan untuk memulai TCP connection pada suatu host dan port. Dalam hal ini host yang digunakan adalah platform.antares.id dengan port 8080. Anda juga dapat mengganti nama host dengan IP address.

AT+CIPSEND<CR><LF>

Pada kode program terdapat command “AT+CIPSEND\r\n" yang mengindikasikan bahwa modul SIM7000 telah siap untuk mengirimkan data melalui TCP connection yang sudah dibentuk.

5. Upload Program ke Board NB-LYNX-7000

Anda harus mengatur board yang digunakan dengan memilih ESP32 Dev Module pada bagian Tools > Board > esp32.

Setelah itu, Anda perlu mengatur port yang digunakan dengan membuka Tools > Port > COM(X). Nilai X menyesuaikan dengan nomor port yang digunakan oleh board NB-LYNX-7000.

Setelah Anda mempersiapkan kode program, selanjutnya Anda dapat meng-upload kode program tersebut dengan menekan tombol upload seperti ditunjukkan pada gambar di bawah.

Jika kode program sudah berhasil di-upload, Anda dapat membuka Serial Monitor dengan menekan icon seperti ditunjukkan pada gambar di bawah. Icon tersebut dapat Anda temukan pada bagian atas sebelah kanan.

Anda perlu mengatur baud rate Serial Monitor menjadi 115200 supaya output-nya dapat terbaca.

Tampilan Serial Monitor akan menjadi seperti pada gambar di bawah yang menandakan proses inisiasi modul SIM7000.

Setelah berhasil mengirimkan data sebanyak 10 kali, maka program akan berhenti seperti ditunjukkan pada gambar berikut.

6. Periksa Data pada Antares IoT Platform

Untuk memastikan bahwa data telah terkirim dengan benar dari board NB-LYNX-7000 ke Antares IoT Platform, Anda dapat membuka URL device Anda. Gambar berikut menunjukkan tampilan pada Antares IoT Platform yang sudah menerima data dari NB-LYNX-7000.

Prasyarat Umum NB-Lynx-7000
Board NB-LYNX-7000
Tampilan pada Arduino IDE ketika Program Sudah Diinput
Setup Board di Arduino IDE
Pemilihan Port di Arduino IDE
Upload Kode Program
Ikon Serial Monitor
Baud Rate
Output Serial Monitor ketika Proses Inisiasi Modul SIM7000
Output Serial Monitor yang Menunjukkan Bahwa Program Telah Berhenti Setelah Mengirim Data Sebanyak 10 Kali
Tampilan pada Antares IoT Platform yang Telah Menerima Data dari board NB-LYNX-7000