53. Komunikasi Half Duplex RF Module 433 MHz Menggunakan HC-12
53. Komunikasi Half Duplex RF Module 433 MHz Menggunakan HC-12

HC12 merupakan transceiver half duplex nirkabel multi-kanal 100mW yang dapat digunakan untuk mengirim dan menerima data serial. Modul ini harus ditambahkan dengan antena eksternal sehingga dapat berkoumunikasi sampai dengan 1Km pada area terbuka. Modul ini digunakan untuk Wireless Sensor Network kendali jarak jauh beberapa mesin di industri.

Spesifikasi HC-12

  • Modul ini bekarja pada pita frekuensi dari 433,4 MHz sampai 473 MHz
  • Modul ini memiliki total 100 kanal dengan dengan frakuensi 400 KHz per kanal
  • Daya saat pengiriman dari -1dBm (0.79mW) sampai 20dBm (100mW)
  • Sensitifitas penerimaan dari -117dBm (0.019pW) sampai -100dBm (10pW).

AT Command HC-12

1. AT – Perintah Test.

  • Contoh: Kirim “AT” ke modul HC-12 maka modul akan menghasilkan “OK”.

2. AT+Bxxxx – Mengubah baud rate komunikasi serial

  • Baud rate yang tersedia: 1200 bps, 2400 bps, 4800 bps, 9600 bps, 19200 bps, 38400 bps, 57600 bps, dan 115200 bps. Default: 9600 bps.
    • Contoh: Kirim “AT+B38400” ke modul HC-12 maka modul akan menghasilkan “OK+B19200”.

3. AT+Cxxxx – Mengubah kanal komunikasi, dari kanal 001 sampai 100.

  • Default: Kanal 001, dengan frekuensi kerja 433,4 MHz. Kanal-kanal selanjutnya lebih tinggi 400 KHz.
    • Contoh: jika anda ingin mengatur modul bekerja pada kanal 006 maka anda harus mengirim perintah  “AT+C006” pada modul dan akan menghasilkan “OK+C006” sehingga frekuensi kerja barunya yaitu 435,4 MHz.

Percobaan 68: Akses Komunikasi Half Duplex HC12

  1. Hubungkan TX dengan pin D2 ATMEGA 328 / Arduino NANO
  2. Hubungkan RX dengan pin D3 ATMEGA 328 / Arduino NANO
  3. Hubungkan SET dengan pin GND untuk mode AT COMMAND
  4. Hubungkan SET dengan pin VCC untuk mode Normal
  5. Hubungkan board ATMEGA 328 / Arduino NANO dengan Komputer menggunakan kabel USB.
  6. Bukalah IDE Arduino, kemudian ketikkan kode program/sketch atau buka file SETTING_AWAL_ATCOMMAND_KAKI_SET_LOW (SETTING MODUL HC12 AT COMMAND)  atau Kirim_Terima_Push_Button_LED (KIRIM DAN TERIMA DATA àLED DAN PUSH BUTTON)
  7. Compile menggunakan verify button (tanda ceklist pada IDE arduino) untuk mengecek ada atau tidaknya error/kesalahan dalam pengetikan.
  8. Upload program ke arduino dengan cara, pilih File > Upload to I/O board, atau tekan tombol tanda panah pada jendela IDE arduino.

.

Hasil Wiring pada Arduino UNO dan MEGA:

.
.
.

Code: SETTING_AWAL_ATCOMMAND_KAKI_SET_LOW (SETTING MODUL HC12 AT COMMAND) 

#include <SoftwareSerial.h>
SoftwareSerial HC12(2, 3); // HC-12 TX Pin, HC-12 RX Pin

void setup() {
  Serial.begin(9600);             // Serial port to computer
  HC12.begin(9600);               // Serial port to HC12

}
void loop() {
  while (HC12.available()) {        // If HC-12 has data
    Serial.write(HC12.read());      // Send the data to Serial monitor
  }  
  while (Serial.available()) {        // If HC-12 has data
    HC12.write(Serial.read());      // Send the data to Serial monitor
  }  
}

Hasil Setting:

.

Code Kirim_Terima_Push_Button_LED (KIRIM DAN TERIMA DATA àLED DAN PUSH BUTTON):

//nomor channelx harus sama antar device satu dengan dgn yg lain
#include <SoftwareSerial.h>
SoftwareSerial HC12(2, 3); // HC-12 TX Pin, HC-12 RX Pin
#define LED1 9
#define LED2 8
#define BUTTON1 7
#define BUTTON2 6

char terima;
void setup() {
  pinMode(LED1, OUTPUT);
  pinMode(LED2, OUTPUT);
  pinMode(BUTTON1, INPUT);
  pinMode(BUTTON2, INPUT);
  digitalWrite(BUTTON1, HIGH);
  digitalWrite(BUTTON2, HIGH);
  Serial.begin(9600);             // Serial port to computer
  HC12.begin(9600);               // Serial port to HC12

}
void loop() {
  while (HC12.available()) {        // If HC-12 has data
    terima = HC12.read();
    Serial.write(terima);      // Send the data to Serial monitor
    if(terima=='a') digitalWrite(LED1, HIGH);
    else if(terima=='b') digitalWrite(LED2, HIGH);
    else {
       digitalWrite(LED2, LOW);
       digitalWrite(LED1, LOW);
    }
  } 
   
  if (digitalRead(BUTTON1) == LOW) {
    HC12.write('a'); 
  }

  if (digitalRead(BUTTON2) == LOW) {
    HC12.write('b'); 
  }
  digitalWrite(LED2, LOW);
  digitalWrite(LED1, LOW);
  terima=0;
  
}

Video Demo:

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *