BAB IV HASIL DAN PEMBAHASAN
4.3 Pembahasan Perangkat Lunak
Program yang dibuat dalam perancangan ini mengacu pada diagram alir bab sebelumnya. Program sudah berfungsi seperti yang diharapkan dengan adanya perubahan sedikit untuk memaksimalkan sistem yang akan dijalankan. Berikut merupakan penjelasan lengkap dari program yang dibuat.
4.3.1
Program Utama
Program utama berisikan alur perintah utama yang selanjutnya akan memanggil subrutin-subrutin lainnya. Perintah yang ada pada program utama akan menginisialisasi fitur-fitur yang digunakan, selanjutnya program akan secara terus menerus memanggil satu persatu subrutin. Subrutin yang nantinya dipanggil yakni subrutin pengiriman paket data yang terdapat pada mikrokontroler dan penerima serta penyimpanan paket data pada software matlab.
4.3.2
Subrutin Pengiriman Paket Data
Subrutin pengiriman paket data yang sebelumnya di dalam perancangan setiap 1 menit diubah dan berjalan setiap 10 detik sekali sesuai dengan timer yang dijalankan. Pengubahan timer pengiriman dikarenakan perubahan hasil data sensor kelembaban udara dan kelembaban tanah sangat cepat berubah untuk mencapai set poin, jadi jika pengiriman paket data terlalu lama maka status kontrol perubahan tidak terlalu terlihat perubahannya. Data yang dikirimkan tersebut adalah data terakhir yang terdeteksi oleh sensor serta status terakhir sistem pengendalinya, jadi data yang dikirim secara otomatis update dan di dalam proses pengiriman paket data sudah dipisahkan dengan tanda pagar (#) untuk setiap datanya agar nantinya untuk penerima dapat mudah memisahkan data-datanya. Pengiriman data akan berhenti jika sistem dalam kondisi off atau mati. Pengujian yang dilakukan berjalan dengan baik sesuai dengan rancangan.
4.3.3
Subrutin Pengiriman Data Waktu dan Tanggal
Subrutin pengiriman data waktu dan tanggal ini adalah data dari sistem RTC (Real Time Clock) mikrokontroler yang berjalan terus menerus, jika ada perintah untuk mengirimkan data maka waktu dan tanggal pada saat pengirimanlah yang nantinya akan
dikirimkan sebagai paket data. Dari pengujian pengiriman paket data yang dilakukan bahwa sistem ini dapat berjalan dengan baik.
4.3.4
Subrutin Pengiriman Status Pengendali
Subrutin pengiriman status pengendali ( air cooler, humidifier, pompa air ) ini akan mengirimkan data terakir alat apakah sedang dalam kondisi on ( 1 ) atau off ( 0 ). Dalam pengujian sistem ini bekerja sesuai dengan kondisi pada greenhouse untuk membuat suasananya seperta yang diinginkan, jadi pengguna nantinya juga dapat melihat apakah data sensor dengan sistem kontrolnya dapat bekerja atau tidak dengan melihat pada interface pengguna dengan mengetahui batas atas dan bawah set poin sistem pengendalinya.
4.3.5
Subrutin Pengiriman Data Sensor
Subrutin pengiriman data sensor (data suhu, data kelembaban udara, data kelembaban tanah) ini akan mengirimkan data setiap 10 detik sekali, data yang dikirimkan adalah data terakir yang terdeteksi sensor saat sistem akan melakukan pengiriman. Jadi data yang dikirim akan terus update sesuai dengan waktu pengiriman. Pengujian yang dilkakukan bahwa pengiriman data sensor berjalan dengan baik.
4.3.6
Subrutin Penerima Paket Data
Subrutin penerima paket data terdapat pada software matlab yang bekerja dengan mendeteksi data yang masuk setiap 0,25 detik sesuai dengan timer yang dijalankan. Sistem penerima ini akan bekerja secara otomatis memisahkan data satu per satu yang sebelumnya paket data akan menjadi data tunggal dengan memisahkan data yang ditandai dengan tanda pagar (#). Sistem akan bekerja jika user / pengguna menekan tombol start dan untuk memberhentikan atau mematikan sistem user hanya menekan tombol stop pada gui software matlab tersebut yang terletak pada pojok kanan atas di bawah tombol start. Pengujian yang dilakukan di dalam penerimaan paket data ini berjalan dengan baik yakni paket data dapat diterima dengan utuh dengan syarat jarak tidak terlalu jauh dan penghalang tidak terlalu banyak dikarenakan dapat mengganggu kelancaran di dalam penerimaan paket data. Semua paket data dapat ditampilkan di dalam interface sesuai
dengan perancangan yang ada dengan penambahan tampilan penampil data yang sebelumnya tersimpan dan animasi perubahan data sensor.
4.3.7
Paket Data
Jumlah karakter dalam paket data yang sebelumnya dalam perancangan sebanyak 44 karakter dengan format @HH:MM#YYYY-mm-DD#KxEyPz#S11.1#U22.2#T33.3$ diubah menjadi lebih sedikit yakni 40 karakter dengan format YYYY-mm- DD#HH:MM#A#B#C#SS.SS#UU.UU#T.TT. Perubahan format ini untuk mempermudah di dalam memisahkan setiap data.
Dari format data yang sudah ada, YYYY-mm-DD adalah tanggal bulan tahun pengiriman, HH:MM adalah jam dan menit, A#B#C# adalah keterangan apakah sistem kendalinya dalan kondisi on atau off yakni terdapat Air cooler, humidifier dan pompa air, SS.SS adalah data suhu dengan tanda titik (.) sebagai pemisah angka desimal, UU.UU adalah data kelembaban udara dengan tanda titik (.) sebagai pemisal angka desimal, T.TT adalah data kelembaban tanah dengan tanda titik (.) sebagai pemisah angka desimal untuk memudahkan dalam pembacaan, tanda pagar (#) sebagai pemisah tiap data. Dari format paket data tersebut dijelaskan jumlah karakter dalam tabel tabel 4.8.
Tabel 4.8 Perubahan Format Paket Data Waktu Tanggal Kontrol
Status Suhu (oC) Kelembaban Udara (%) Kelembaban Tanah (level) Jumlah Karakter 5 10 3 5 5 4
4.3.8
Penyimpanan Data
Pada sistem penyimpanan data di software matlab bekerja secara otomatis dan akan menyimpan data setiap hari dengan nama file sesuai dengan tanggal pengambilan data. Data yang tersimpan yang sebelumnya di dalam perancangan berbentuk .mat diubah dan disimpan ke excel dengan format date.xls agar pengguna dapat mudah dalam pembacaan. contoh 10-mei-2016.xls berarti file tersebut data pada tahun 2016 bulan Mei tanggal 10. Data tersebuat tersimpan secara otomatis setelah data pertama pada tanggal tersebut diterima dan disimpan dalam 1 hari karena pengiriman data setiap 10 detik sekali, jadi dalam 1 hari terdapat 8640 data yang harus dikirim dan diterima. Dengan penyimpanan setiap hari atau per hari dan sebagai keterangan rancangan sistem kerja GUI. Pada database
nantinya dalam 1 folder akan dapat menyimpan data dalam satu minggu dengan jumlah data 60480 dan untuk 4 bulan dalam satu siklus tanam yakni 60480 x 16 minggu adalah 976.680 data dengan catatan bahwa software Matlab menyala terus menerus, di sini sebenarnya berapapun banyak datanya tidak masalah karena masuk ke dalam memori laptop dan juga memori setiap data sangat kecil, untuk satu karakter jika dalam satu hari hanya 69120 bytes, sementara dalam paket data terdapat 32 karakter, berarti dalam satu hari hanya menyimpan data 69120 b x 32 karakter yakni 2211840 b atau 2,211 Mb dan dalam satu minggu 2,211 Mb x 7 jadi 15,477 Mb. Jika dalam satu siklus tanam 4 bulan, maka 15,477 Mb x 16 minggu yakni 247,632 Mb seperti yang diperjelas pada gambar 4.18 dan 4.19.Data tersebut disimpan dalam file D yang tersimpan satu folder dengan program. Hasil akan terlihat seperti pada gambar 4.20.
Data yang tersimpan inilah nantinya akan dipakai sebagai penampil data yang sebelumnya tersimpan untuk ditampilkan di interface agar pengguna tidak perlu membuka data excel, dengan catatan bahwa pengambilan data pada pengisian data jam harus sesuai dan data yang ditampilkan adalah data hasil pembacaan sensor. Pengujian yang dilakukan dapat berhasil dan berjalan dengan lancar.
Gambar 4.19 Menghitung Memori Data
57
BAB V
KESIMPULAN DAN SARAN
4.4
Kesimpulan
Dari hasil pengujian dan pengambilan data pada sistem telemetri akuisisi data greenhouse dengan menggunakan XBee Pro S2B, didapatkan kesimpulan sebagai berikut:
a. Sistem interface pada software matlab berjalan sesuai perancangan dengan data yang dimonotoring adalah waktu, tanggal, suhu, kelembaban udara, kelembaban tanah, status control pompa air, humidifier dan air cooler.
b. Penggunaan modul XBee Pro S2B untuk berkomunikasi dengan baik pada jarak maksimum 115 meter di luar ruangan tanpa penghalang.
c. Semakin banyak penghalang tempat berkomunikasinya modul XBee maka data yang dikirimkan tidak maksimal.
d. Jika pengiriman data gagal atau tidak menemukan receiver maka data tidak akan dikirimkan lagi atau dibuang sesuai dengan IDLE mode yang terdapat pada modul.
4.5
Saran
Saran-saran dari pengembangan sistem telemetri ini adalah:
a. Mengatasi error yang didapat agar jarak jangkauan pengiriman data semakin jauh dan maksimal.
58
DAFTAR PUSTAKA
[1] Kirana, Intan., 1983. Tanaman Hias Ruangan. Yogyakarta: Kanisius.
[2] Syahrul, M., 2010. Rancangan Smart Greenhouse Dengan Teknologi Mobile Untuk Efisiensi Tenaga, Biaya Dan Waktu Dalam Pengelolaan Tanaman. Jawa Timur: Fakultas Teknologi Industri Universitas Pembangunan Nasional.
[3] Sayood, F., 2003. Lossless Compression Handbook. New York: Academic Press. [4] Carden, F., Jedlicka, R. dan Henry, R., 2002. Telemetry Systems Engineering.
London: ArtechHouse.
[5] Setiawan Rachmad., 2008. Teknik Akuisisi Data. Yogyakarta: Graha Ilmu.
[6] Yahya, Sofian., 2011. Desain Otomatisasi Sistem Pengendalian Temperatur dan Kelembaban Greenhouse. Bandung: Kelompok Bidang Keahlian Pengendalian Daya & Mesin Listrik, Departemen Teknik Elekto, Politeknik Negeri Bandung. [7] Soeseno, Slamet., 1989. Pemeliharaan Tanaman Hias Ruangan. Jakarta: PT
Gramedia.
[8] Handoko., 1995. Klimatologi Dasar. Jakarta: Pustaka Jaya.
[9] Meiningsasi, Dyan., 2006. Pengaruh Jenis Media Terhadap Pertumbuhan Begonia
Imperialis dan Begoia “Bethlehem Star”. Bali: Balai Konservasi Tumbuhan Kebun Raya Eka Karya Bali, Lembaga Ilmu Pengetahuan Indonesia.
[10] 2015. [Online] Available at:
http://www.adafruit.com/datasheets/XBee%20ZB%20User%20Manual.pdf. [Accessed 20 November 2015]
[11] 2015.[Online]
Available at: http://www.mathworks.com. [Accessed 15 Desember 2015]
[12] 2015.[Online]
Available at: http://www.engineersgarage.com/electronic-components/16x2-lcd module-datasheet.
[Accessed 14 Desember 2015] [13] 2015.[Online]
Available at: https://www.arduino.cc/en/Main/ArduinoBoardMega2560. [Accessed 28 November 2015]
LAMPIRAN
Diagram Alir Subrutin Pengiriman Data
START Inisialisasi Apakah Karakter = “W” Ulang SELESAI Tidak Ya Ya Tidak Data Waktu = W,data,# Terima Data Paket
START Inisialisasi Apakah Karakter = “T” Ulang SELESAI Tidak Ya Ya Tidak Data Tanggal = T,data,# Terima Data Paket
START Inisialisasi Apakah Karakter = “K” Ulang SELESAI Tidak Ya Ya Ya Tidak Data Kontrol Status = Ax,By,Cz,# Tampilkan Data Kontrol Status Di LCD Terima Data Paket
START Inisialisasi Apakah Karakter = “S” Ulang SELESAI Tidak Ya Ya Ya Tidak Data Suhu = S,data,# Tampilkan Data Suhu Di LCD Terima Data Paket
START Inisialisasi Apakah Karakter = “U” Ulang SELESAI Tidak Ya Ya Ya Tidak Data Kelembaban Udara= U,data,# Tampilkan Data Kelembaban Udara Di LCD Terima Data Paket
START Inisialisasi Apakah Karakter = “T” Ulang SELESAI Tidak Ya Ya Ya Tidak Data Kelembaban Tanah= T,data,# Tampilkan Data Kelembaban Tanah Di LCD Terima Data Paket
Prosedur Pengiriman Data Dengan XBee Pro S2B
Ketika data serial yang diterima dan siap dipaketkan, modul RF akan keluar Idle Mode dan upaya untuk mengirimkan data. Alamat tujuan menentukan rute akan menerima data. Sebelum transmisi data, modul memastikan bahwa alamat jaringan 16-bit dan rute ke tujuan telah ditetapkan. Jika tujuan 16-bit alamat jaringan tidak diketahui, alamat jaringan penemuan akan berlangsung. Jika rute adalah tidak diketahui, penemuan rute akan berlangsung untuk tujuan membangun rute ke node tujuan. Jika sebuah modul dengan alamat jaringan yang cocok tidak ditemukan, paket tersebut akan dibuang. Data akan ditransmisikan sekali rute didirikan. Jika penemuan rute gagal untuk membangun rute, paket akan dibuang. seperti pada alur pada gambar di bawah ini.[10]
IDLE Mode
Network Discovered ?
Network Known ? Transmit Data
Finished Transmission 16 bit network Address Discovered ? 16 bit network Address Known ? Network Discovery 16 bit network Address Discovery Data Discanded New Transmision No Yes Yes Yes Yes No No No
Gambar L.7 Gambar Mode Pengiriman Data [10]
Bila data yang ditransmisikan dari satu node ke node yang lain, pengakuan jaringan ditransmisikan kembali melintasi jaringan didirikan untuk node sumber. Paket pengakuan
ini menunjukkan ke node sumber yang paket data telah diterima oleh node tujuan. Jika pengakuan jaringan tidak diterima, node sumber akan mengirimkan kembali data. Hal ini dimungkinkan dalam keadaan langka untuk tujuan untuk menerima paket data, tetapi untuk sumber untuk tidak menerima pengakuan jaringan. Dalam hal ini, sumber akan memancarkan kembali data, yang dapat menyebabkan tujuan untuk menerima paket data yang sama beberapa kali. Modul XBee tidak menyaring duplikat paket.[10]
Prosedur Penerimaan Data Dengan XBee Pro S2B
Setelah dari sleep mode, perangkat end mengirimkan permintaan pendapat masternya untuk menentukan apakah memiliki data buffer. Dalam pin sleep mode, pendapat perangkat akhir setiap 100ms. Dalam sleep mode, perangkat akhir hanya akan polling sekali sebelum kembali ke sleep mode kecuali sleep time (ST) dimulai (serial atau RF data yang diterima). Jika sleep time dimulai, perangkat end akan terus polling setiap 100ms sampai sleep mode berakhir [10]. Data yang sudah diterima dan dikirim kemudian akan dilihat hasilnya apakah datanya sesuai atau tidak dapat dihitung errornya dengan rumus, yakni : % error =[ nil i e − nil i e en ny ]
nil i e � %
Tabel L.1 Spesifikasi Arduino Mega [13] Mikrokontroler ATmega2560
Tegangan Operasi 5V
Input Voltage (disarankan) 7-12V
Input Voltage (limit) 6-20V
Pin Digital I/O 54 (yang 15 pin digunakan sebagai output PWM)
Pins Input Analog 16 Arus DC per pin I/O 20 mA Arus DC untuk pin 3.3V 50 mA
Flash Memory 256 KB (8 KB digunakan untuk bootloader)
SRAM 8 KB
EEPROM 4 KB
Konfigurasi Pin Arduino Mega
Gambar L.6 Konfigurasi Pin Arduino Mega [13]
Masing-masing dari 54 digital pin pada arduino mega dapat digunakan sebagai input atau output, menggunakan fungsi pin mode() , digital write() , dan digital read(). arduino mega beroperasi pada tegangan 5 volt. Setiap pin dapat memberikan atau menerima arus maksimum 40 mA dan memiliki resistor pull-up internal (yang terputus secara default) sebesar 20-50 k Ohm. Selain itu, beberapa pin memiliki fungsi khusus, antara lain:
a. Serial : 0 (RX) dan 1 (TX); Serial 1 : 19 (RX) dan 18 (TX); Serial 2 : 17 (RX) dan 16 (TX); Serial 3 : 15 (RX) dan 14 (TX). Digunakan untuk menerima (RX) dan mengirimkan (TX) data serial TTL. Pins 0 dan 1 juga terhubung ke pin chip ATmega16U2 Serial USB-to-TTL.Eksternal Interupsi : Pin 2 (interrupt 0), pin 3 (interrupt 1), pin 18
b. (interrupt 5), pin 19 (interrupt 4), pin 20 (interrupt 3), dan pin 21 (interrupt 2). Pin ini dapat dikonfigurasi untuk memicu sebuah interupsi pada nilai yang rendah, meningkat atau menurun, atau perubah nilai.
c. SPI : Pin 50 (MISO), pin 51 (MOSI), pin 52 (SCK), pin 53 (SS). Pin ini mendukung komunikasi SPI menggunakan perpustakaan SPI. Pin SPI juga terhubung dengan header ICSP, yang secara fisik kompatibel dengan arduino uno, arduino duemilanove dan arduino diecimila.
d. LED : Pin 13. Tersedia secara built-in pada papan arduino ATmega2560. LED terhubung ke pin digital 13. Ketika pin diset bernilai high, maka LED menyala (ON), dan ketika pin diset bernilai low, maka LED padam (off).
e. TWI : Pin 20 (SDA) dan pin 21 (SCL). Yang mendukung komunikasi TWI menggunakan perpustakaan wire. Perhatikan bahwa pin ini tidak di lokasi yang sama dengan pin TWI pada arduino duemilanove atau arduino diecimila.
Arduino Mega2560 memiliki 16 pin sebagai analog input, yang masing-masing menyediakan resolusi 10 bit (yaitu 1024 nilai yang berbeda). Secara default pin ini dapat diukur/diatur dari mulai ground sampai dengan 5 volt, juga memungkinkan untuk mengubah titik jangkauan tertinggi atau terendah mereka menggunakan pin AREF dan fungsi analog Reference().
Ada beberapa pin lainnya yang tersedia, antara lain:
a. AREF : Referensi tegangan untuk input analog. Digunakan dengan fungsi analog Reference().
b. RESET : Jalur low ini digunakan untuk me-reset (menghidupkan ulang) mikrokontroler. Jalur ini biasanya digunakan untuk menambahkan tombol reset pada shield yang menghalangi papan utama arduino.[13]
Sumber Daya / Power Arduino Mega
Arduino mega dapat diaktifkan melalui koneksi USB atau dengan catu daya eksternal. Sumber daya dipilih secara otomatis. Sumber daya eksternal (non-USB) dapat berasal baik dari adaptor AC-DC atau baterai. Adaptor dapat dihubungkan dengan mencolokkan steker 2,1 mm yang bagian tengahnya terminal positif ke ke jack sumber tegangan pada papan. Jika tegangan berasal dari baterai dapat langsung dihubungkan melalui header pin gnd dan pin vin dari konektor power.
Papan arduino ATmega2560 dapat beroperasi dengan pasokan daya eksternal 6 volt sampai 20 volt. Jika diberi tegangan kurang dari 7 volt, maka, pin 5 volt mungkin akan menghasilkan tegangan kurang dari 5 volt dan ini akan membuat papan menjadi tidak stabil. Jika sumber tegangan menggunakan lebih dari 12 volt, regulator tegangan akan mengalami panas berlebihan dan bisa merusak papan. Rentang sumber tegangan yang dianjurkan adalah 7 volt sampai 12 volt.
Pin tegangan yang tersedia pada papan arduino adalah sebagai berikut:
a. VIN : Adalah input tegangan untuk papan arduino ketika menggunakan sumber daya eksternal (sebagai ‘saingan’ tegangan 5 volt dari koneksi USB atau sumber daya ter-regulator lainnya). Anda dapat memberikan tegangan melalui pin ini, atau jika memasok tegangan untuk papan melalui jack power, kita bisa mengakses/mengambil tegangan melalui pin ini.
b. 5V : Sebuah pin yang mengeluarkan tegangan ter-regulator 5 volt, dari pin ini tegangan sudah diatur (ter-regulator) dari regulator yang tersedia (built-in) pada papan. Arduino dapat diaktifkan dengan sumber daya baik berasal dari jack power DC (7-12 volt), konektor USB (5 volt), atau pin VIN pada board (7-12 volt). Memberikan tegangan melalui pin 5 volt atau 3.3 volt secara langsung tanpa melewati regulator dapat merusak papan arduino.
c. 3V3 : Sebuah pin yang menghasilkan tegangan 3,3 volt. Tegangan ini dihasilkan oleh regulator yang terdapat pada papan (on-board). Arus maksimum yang dihasilkan adalah 50 mA.
e. IOREF : Pin ini pada papan arduino berfungsi untuk memberikan referensi tegangan yang beroperasi pada mikrokontroler. Sebuah perisai (shield) dikonfigurasi dengan benar untuk dapat membaca pin tegangan IOREF dan memilih sumber daya yang tepat atau mengaktifkan penerjemah tegangan (voltage translator) pada output untuk bekerja pada tegangan 5 volt atau 3,3 volt.[13]
Komunikasi Pada Arduino Mega
Arduino Mega2560 memiliki sejumlah fasilitas untuk berkomunikasi dengan komputer, dengan arduino lain, atau dengan mikrokontroler lainnya. Arduino ATmega328 menyediakan 4 hardware komunikasi serial UART TTL (5 Volt). Sebuah chip ATmega16U2 (ATmega8U2 pada papan revisi 1 dan revisi 2) yang terdapat pada papan digunakan sebagai media komunikasi serial melalui USB dan muncul sebagai COM Port Virtual (pada Device komputer) untuk berkomunikasi dengan perangkat lunak pada komputer, untuk sistem operasi windows masih tetap memerlukan file inf, tetapi untuk sistem operasi OS X dan Linux akan mengenali papan sebagai port COM secara otomatis. Perangkat lunak arduino termasuk didalamnya serial monitor memungkinkan data tekstual sederhana dikirim ke dan dari papan arduino. LED RX dan TX yang tersedia pada papan akan berkedip ketika data sedang dikirim atau diterima melalui chip USB-to-serial yang terhubung melalui USB komputer (tetapi tidak untuk komunikasi serial seperti pada pin 0 dan 1).
Sebuah perpustakaan Software Serial memungkinkan untuk komunikasi serial pada salah satu pin digital Mega2560. ATmega2560 juga mendukung komunikasi TWI dan SPI. Perangkat lunak arduino termasuk perpustakaan wire digunakan untuk menyederhanakan penggunaan bus TWI. Untuk komunikasi SPI, menggunakan perpustakaan SPI.[13]
Memori Arduino Mega
ATmega 2560 memiliki 256 KB dari memori flash untuk menyimpan kode (yang 8 KB digunakan untuk bootloader), 8 KB dari SRAM dan 4 KB EEPROM (yang dapat dibaca dan ditulis dengan perpustakaan EEPROM).[13]
Pemrograman Arduino Mega
Arduino mega dapat diprogram dengan software arduino. ATmega2560 pada Arduino mega sudah tersedia preburned dengan bootloader yang memungkinkan untuk meng-upload kode baru tanpa menggunakan programmer hardware eksternal. Hal ini karena komunikasi yang terjadi menggunakan protokol asli STK500. Juga dapat melewati (bypass) bootloader dan program mikrokontroler melalui pin header ICSP (In-Circuit Serial Programming).
Chip ATmega16U2 (atau 8U2 pada board Rev. 1 dan Rev. 2) source code firmware tersedia pada repositori arduino. ATmega16U2/8U2 dapat dimuat dengan bootloader DFU, yang dapat diaktifkan melalui:
a. Pada papan Revisi 1 : Menghubungkan jumper solder di bagian belakang papan dan kemudian akan me-reset 8U2.
b. Pada papan Revisi 2 : Ada resistor yang menghubungkan jalur HWB 8U2/16U2 ke ground, sehingga lebih mudah untuk dimasukkan ke dalam mode DFU.
Kemudian anda dapat menggunakan Atmel FLIP software (sistem operasi Windows) atau DFU programmer (sistem operasi Mac OS X dan Linux) untuk memuat firmware baru atau dapat menggunakan pin header ISP dengan programmer eksternal (overwrite DFU bootloader).[13]
Listing Program Mikrokontroller Arduino
1. //PROGRAM GREEN HOUSE 2. #include <Wire.h> 3. #include <SD.h> 4. #include <SPI.h> 5. #include "RTClib.h" 6. #include <SHT1x.h> 7. #include <LiquidCrystal.h> 8. #include <avr/io.h> 9. #include <avr/interrupt.h>
10.volatile int count = 0; 11.int a = 0; 12.int timer1_counter; 13.File myFile; 14.RTC_DS1307 rtc; 15.LiquidCrystal lcd(12, 11, 7, 6, 5, 4); 16.#define dataPin 9 17.#define clockPin 10 18.SHT1x sht1x(dataPin, clockPin); 19.float soil; 20.float temp_c; 21.float humidity; 22.int Si; 23.int So; 24.int Dt; 25.int kondisi = 0; 26.int buttonstate = 0; 27.int cooler = 0; 28.int humid = 0; 29.int pompa = 0; 30.int s; 31.String waktu[3]; 32.String tanggal[2]; 33.char pwaktu[3][3]; 34.char ptanggal[2][3]; 35.int tahun; 36.void setup () { 37. Serial.begin(9600); 38. lcd.begin(16, 4); 39. lcd.setCursor (0, 0); 40. lcd.print("Starting Up"); 41. delay (1000);
43. TCCR1A = 0; 44. TCCR1B = 0; 45.
46.// Set timer1_counter to the correct value for our interrupt interval 47.//timer1_counter = 64911; // preload timer 65536-16MHz/256/100Hz 48.//timer1_counter = 64286; // preload timer 65536-16MHz/256/50Hz 49.timer1_counter = 34286; // preload timer 65536-16MHz/256/2Hz 50.
51.TCNT1 = timer1_counter; // preload timer 52.TCCR1B |= (1 << CS12); // 256 prescaler
53.TIMSK1 |= (1 << TOIE1); // enable timer overflow interrupt 54.interrupts(); // enable all interrupts
55.pinMode(A0, INPUT); //input analaog sensor kelembapan 56.pinMode(41, INPUT); //Button Start/Stop
57.pinMode(42, INPUT); //Data Yang terkirim 58.pinMode(43, INPUT); //Button output sensor 59.pinMode(44, INPUT); //Button Output Kendali 60.pinMode(22, OUTPUT); //kendali suhu
61.pinMode(23, OUTPUT); //kendali kelembapan udara 62.pinMode(24, OUTPUT); //kendali kelembapan tanah 63.pinMode(25, OUTPUT); //LED output Dingin 64.pinMode(26, OUTPUT); //LED output Normal 65.pinMode(27, OUTPUT); //LED output Panas
66.pinMode(29, OUTPUT); //LED output Kering (udara) 67.pinMode(30, OUTPUT); //LED output Lembab (udara) 68.pinMode(31, OUTPUT); //LED output Basah (udara) 69.pinMode(32, OUTPUT); //LED output Kering (tanah) 70.pinMode(33, OUTPUT); //LED output Lembab (tanah)