Sistem Kerja Alat
Pada beberapa proyek Arduino dibutuhkan jarak monitoring ataupun controlling yang jauh, lebih dari 100 m. Kasus seperti itu tentu membutuhkan kevalid-an data. Kalau hanya mengandalkan kabel data tentu akan banyak yang ‘error’. Salah satu solusinya dengan membuat komunikasi antara 2 Arduino. Misalnya 1 Arduino sebagai ‘Master’ yang akan menampilkan hasil pembacaan sensor. Di tempat yang jauh berjarak 300 m misalnya terdapat 1 Arduino sebagai ‘Slave’ yang membaca sensor kemudian mengirimkannya ke ‘Master.
Aplikasi ini merupakan dasarnya, bagaimana sebuah Arduino ‘Master’ mengirimkan data ke Arduino ‘Slave’ yang hasilnya ditampilkan di LCD.
Untuk hasil yang sebenarnya (jangkauan jauh) cukup tambahkan modul RS232 pada masing – masing Arduino.
Kebutuhan Hardware
- Arduino UNO Board : 2 unit
- Kabel konektor
- Modul LCD 2x16
- Power Supply 7-9 Vdc
Schematics
Untuk programnya (Source Code/Sketch) terdapat 2 : satu untuk Master dan 1 untuk Slave.
Source Code untuk Master
#include <SoftwareSerial.h>
#define SSerialRX 8 //Serial Receive pin
#define SSerialTX 9 //Serial Transmit pin
#define Pin13LED 13
SoftwareSerial SSerial(SSerialRX, SSerialTX); // RX, TX
int byteReceived;
void setup()
{
Serial.begin(9600);
Serial.println("99+ PROYEK ARDUINO");
Serial.println("Master Serial...");
pinMode(Pin13LED, OUTPUT);
SSerial.begin(9600); // set the data rate
delay(3000);
}
void loop()
{
digitalWrite(Pin13LED, HIGH);
if (Serial.available())
{
byteReceived = Serial.read();
SSerial.write(byteReceived);
digitalWrite(Pin13LED, LOW); // Show activity
delay(200);
}
}
#define SSerialRX 8 //Serial Receive pin
#define SSerialTX 9 //Serial Transmit pin
#define Pin13LED 13
SoftwareSerial SSerial(SSerialRX, SSerialTX); // RX, TX
int byteReceived;
void setup()
{
Serial.begin(9600);
Serial.println("99+ PROYEK ARDUINO");
Serial.println("Master Serial...");
pinMode(Pin13LED, OUTPUT);
SSerial.begin(9600); // set the data rate
delay(3000);
}
void loop()
{
digitalWrite(Pin13LED, HIGH);
if (Serial.available())
{
byteReceived = Serial.read();
SSerial.write(byteReceived);
digitalWrite(Pin13LED, LOW); // Show activity
delay(200);
}
}
Source Code untuk Slave
#include <LiquidCrystal.h>
#include <SoftwareSerial.h>
#define RX 8 //Serial Receive pin
#define TX 9 //Serial Transmit pin
#define Pin13LED 13
SoftwareSerial SSerial(RX, TX); // RX, TX
LiquidCrystal lcd(2,3,4,5,6,7);
int byteReceived;
int byteSend;
void setup()
{
pinMode(Pin13LED, OUTPUT);
SSerial.begin(9600);
lcd.begin(16, 2);
lcd.print(" Serial Slave ");
lcd.setCursor(0,1);
}
void loop()
{
if (SSerial.available())
{
byteReceived = SSerial.read(); // Read the byte
lcd.setCursor(0,1);
lcd.print(char(byteReceived));
digitalWrite(Pin13LED, HIGH); // Show activity
delay(200);
digitalWrite(Pin13LED, LOW);
}
}
#include <SoftwareSerial.h>
#define RX 8 //Serial Receive pin
#define TX 9 //Serial Transmit pin
#define Pin13LED 13
SoftwareSerial SSerial(RX, TX); // RX, TX
LiquidCrystal lcd(2,3,4,5,6,7);
int byteReceived;
int byteSend;
void setup()
{
pinMode(Pin13LED, OUTPUT);
SSerial.begin(9600);
lcd.begin(16, 2);
lcd.print(" Serial Slave ");
lcd.setCursor(0,1);
}
void loop()
{
if (SSerial.available())
{
byteReceived = SSerial.read(); // Read the byte
lcd.setCursor(0,1);
lcd.print(char(byteReceived));
digitalWrite(Pin13LED, HIGH); // Show activity
delay(200);
digitalWrite(Pin13LED, LOW);
}
}
Jalannya Alat
Ketikan 1 karakter, misalnya angka 5 pada bagian kotak atas Serial Monitor kemudian klik ‘Send’.
Lihat hasilnya di LCD (Slave). Akan tampil angka ‘5’ pada LCD baris kedua. Coba juga untuk karakter yang lain.
LCD 16x2 Source
Jika akan diterapkan pada jarak yang jauh, tambahkan modul RS232 pada masing – masing Arduio.
RS232 Module (Source)
Video Project V - 37. Komunikasi Serial Arduino - Arduino
KONTAK KAMI 085743320570 (adi sanjaya)
No comments:
Post a Comment