Perancangan Perangkat Lunak (Software)
3.3.2 Perancangan Perangkat Lunak (Software)
Setelah proses rangkaian selesai dibuat langkah selanjutnya adalah membuat perangkat lunak. Spesifikasi perangkat lunak yang akan dirancang meliputi:
Perangkat lunak/program arduino IDE untuk keperluan komunikasi mikrokontroller dengan komputer PC
Perangkat lunak/program PPH sebagai tampilannya
3.3.2.1 Aplikasi Program Arduino IDE
Setelah proses rangkaian selesai dibuat langkah selanjutnya adalah membuat program pada aplikasi program arduino IDE (Integrated Development Environment) . Buka program aplikasi arduino IDE kemudian bentuk tampilan kerja aplikasi arduino IDE sketch terlihat seperti gambar 3.7
Gambar 3.7 Program Arduino IDE (Integrated Development Environment)
3.3.2.2 Bahasa Program Arduino yang digunakan
Float Float point number sering digunakan untuk memperkirakan nilai analog dan
berkelanjutan karena nilai tersebut memiliki resolusi yang lebih besar dari pada integers. Float point number dapat menyimpan sebesar 32-bit dengan range 3.4028235E+38 sampai -3.4028235E+38. Angka tersebut disimpan dalam 32 bits (4 bytes) dari informasi. Float hanya memiliki 6-7 digit desimal. Pada arduino, double sama nilainya dengan Float. Contoh :
float myfloat; float sensorCalbrate = 1.117;
Syntax : float var = val;
var - your float variable name val - the value you assign to that variable
Contoh kode : int x; int y; float z;
x = 1; y = x / 2;
// y now contains 0, ints can't hold fractions
z = (float)x / 2.0; // z now contains .5 (you have to use 2.0, not 2)
Byte Tipe byte dapat menyimpan 8-bit nilai angka bilangan asli tanpa koma. Byte memiliki range 0 – 255.
Contoh : Byte biteVariable = 180;
// mendeklarasikan ‘biteVariable’ sebagai type byte
Void (Setup) Fungsi setup() hanya di panggil satu kali ketika program pertama kali di
jalankan. Ini digunakan untuk pendefinisian mode pin atau memulai komunikasi serial. Fungsi setup() harus di ikut sertakan dalam program walaupun tidak ada statement yang dijalankan. Contoh : void setup() {
pinMode(13,OUTPUT); // mengset ‘pin’ 13 sebagai output }
Loop Setelah melakukan fungsi setup() maka secara langsung akan melakukan fungsi loop() secara berurutan dan melakukan instruksi-instruksi yang ada
dalam fungsi loop().
Contoh : void loop() {
digitalWrite(13, HIGH);
// nyalakan ‘pin’ 13
delay(1000); // pause selama 1 detik digitalWrite(13, LOW); // mat ikan ‘pin’ 13 delay(1000);
/// pause selama 1 detik }
Serial begin () Statement ini digunakan untuk mengaktifkan komunikasi serial dan mengeset baudrate.
Contoh : void setup()
{ Serial.begin(9600); //open serial port and set baudrate 9600 bps
Analog Read () Papan arduino memiliki 6 chanel, 10 bit analog ke digital, artinya kita dapat
memasukkan tegangan antara 0 dan 5 volt pada nilai integer antara 0 sampai 1023. Kisaran input atau masukan dan resolusi dapat dirubah menggunakan analog reference. Untuk membaca analog input dibutuhkan sekitar 100 microsecond (0.0001 s). Jadi rata-rata membacanya sekitar 10.000 kali dalam satu detik. Catatan : jika pin analog input tidak dapat terkoneksi dengan apapun nilainya akan kembali pada analog Read.
Syntax : analogRead(pin)
Contoh : Int analogPin = 3
// potentiometer wiper middle terminal connected to analog pin 3 Void setup ()
{ Serial.begin (9600); } Void loop () { Val = analogRead(analogPin);
// Read the input pin
Serial.println(val);
//debug value
Delay () Menghentikan program untuk mengukur waktu (dalam milisecond) yang terspesifikasi pada parameter (ada 1000 milisecond dalam setiap detik). Pada
saat mudahnya membuat LED berkedip dengan fungsi delay, beberapa sketch atau lembar kerja mengalami delay. Membaca sensor, perhitungan matematika atau memanipulasi pin dapat bekerja pada saat fungsi delay bekerja. Beberapa program berbasis pengetahuan biasanya menghindari penggunaan delay untuk kegiatan yang membutuhkan waktu lebih dari 10 miliseconds. Contoh : Delay(1000);
// menunggu selama satu detik
Selanjutnya menghubungkan arduino Uno ke komputer dengan menggunakan kabel USB (Universal Serial Bus) . Kemudian kita dapat mengetikkan program pada lembar kerja sketch dan compile untuk mengecek atau memeriksa apakah kode sudah benar sebelum dikirim ke papan arduino, program tersebut dapat diketik seperti dibawah ini : /* Cloud Control @author Elvianto */
#include <SPI.h> #include <Ethernet.h> #include <EthernetClient.h> #include "EmonLib.h" #include <LiquidCrystal.h>
// initialize the library with the numbers of the interface pins LiquidCrystal lcd(8, 9, 4, 5, 6, 7); EnergyMonitor emon1; // Create an instance
int counter = 0; /* Begin Cloud Configuration */ const char* server = "montir.polmanastra.com"; const unsigned long BAUD_RATE = 9600; const unsigned long HTTP_TIMEOUT = 10000; const size_t MAX_CONTENT_SIZE = 512;
byte mac[] = {0xDA, 0xAD, 0xBE, 0xEB, 0xFE, 0xFB}; // IPAddress ip(10, 42, 0, 2); EthernetClient client; /* End of Cloud Configuration */
void setup() { lcd.begin(16, 2); // Print a message to the LCD. lcd.print("Monitoring Listrik"); delay(1000); lcd.clear(); initSerial(); emon1.current(1, 111.1); initEthernet(); void setup() { lcd.begin(16, 2); // Print a message to the LCD. lcd.print("Monitoring Listrik"); delay(1000); lcd.clear(); initSerial(); emon1.current(1, 111.1); initEthernet();
Serial.print(current*230.0); // Apparent power Serial.print(" "); Serial.println(current); if (current > 0.07){
lcd.clear(); if (connect(server)) { client.print("GET "); client.print("/api/petir/post/?value="); client.print(current); client.println(" HTTP/1.0"); client.print("Host: "); client.println(server); client.println("Connection: close"); client.println();
Serial.print("GET "); Serial.print("/api/petir/post/?value="); Serial.print(current); Serial.print("Host: "); Serial.println(server); Serial.println("Connection: close"); Serial.println(); counter = counter + 1; lcd.print("Arus: "); lcd.print(current); lcd.setCursor(0, 2); lcd.print("Count: "); Serial.print("GET "); Serial.print("/api/petir/post/?value="); Serial.print(current); Serial.print("Host: "); Serial.println(server); Serial.println("Connection: close"); Serial.println(); counter = counter + 1; lcd.print("Arus: "); lcd.print(current); lcd.setCursor(0, 2); lcd.print("Count: ");
} disconnect(); }
wait(1); }
void initSerial() { Serial.begin(BAUD_RATE); while (!Serial) {
} //Serial.println("Serial ready");
void initEthernet() { if (!Ethernet.begin(mac)) { Serial.println("Failed to configure Ethernet"); return;
} //Serial.println("Ethernet ready");
bool connect(const char* hostName) { //Serial.print("Connect to "); //Serial.println(hostName);
bool ok = client.connect(hostName, 80);
//Serial.println(ok ? "Connected" : "Connection Failed!"); return ok;
// Close the connection with the HTTP server void disconnect() {
//Serial.println("Disconnect"); client.stop();
// Pause for a minute void wait(int s) {
//Serial.print("Wait "); //Serial.print(s); //Serial.println(" seconds"); delay(s*1000);