L3
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
Gambar L.3 Diagram Alir Subrutin Pengiriman Data Kontrol Status PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L4
START
Inisialisasi
Apakah Karakter =
“S”
Ulang
SELESAI Tidak
Ya
Ya
Ya
Tidak Data
Suhu = S,data,
Tampilkan Data Suhu Di LCD
Terima Data
Paket
Gambar L.4 Diagram Alir Subrutin Pengiriman Data Suhu PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L5
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
Gambar L.5 Diagram Alir Subrutin Pengiriman Data Kelembaban Udara PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L6
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
Gambar L.6 Diagram Alir Subrutin Pengiriman Data Kelembaban Tanah PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L7
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
L8
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 master
nya 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 IO
54 yang 15 pin digunakan sebagai output PWM
Pins Input Analog 16
Arus DC per pin IO 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
Clock Speed 16 MHz
L9
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:
L10
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
diukurdiatur 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]
L11
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
mengaksesmengambil 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.
d. GND : Pin ground atau massa.
L12
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] PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L13
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. ATmega16U28U2 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
8U216U2 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 avrio.h
9. include avrinterrupt.h PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L14
10. volatile int count = 0; 11. int a = 0;
12. int timer1_counter; 13. File myFile;
14. RTC_DS1307 rtc; 15. LiquidCrystal lcd12, 11, 7, 6, 5, 4;
16. define dataPin 9 17. define clockPin 10
18. SHT1x sht1xdataPin, 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.begin9600;
38. lcd.begin16, 4; 39. lcd.setCursor 0, 0;
40. lcd.printStarting Up; 41. delay 1000;
42. noInterrupts; disable all interrupts PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L15
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-16MHz256100Hz 48. timer1_counter = 64286; preload timer 65536-16MHz25650Hz
49. timer1_counter = 34286; preload timer 65536-16MHz2562Hz 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. pinModeA0, INPUT; input analaog sensor kelembapan 56. pinMode41, INPUT; Button StartStop
57. pinMode42, INPUT; Data Yang terkirim 58. pinMode43, INPUT; Button output sensor
59. pinMode44, INPUT; Button Output Kendali 60. pinMode22, OUTPUT; kendali suhu
61. pinMode23, OUTPUT; kendali kelembapan udara 62. pinMode24, OUTPUT; kendali kelembapan tanah
63. pinMode25, OUTPUT; LED output Dingin 64. pinMode26, OUTPUT; LED output Normal
65. pinMode27, OUTPUT; LED output Panas 66. pinMode29, OUTPUT; LED output Kering udara
67. pinMode30, OUTPUT; LED output Lembab udara 68. pinMode31, OUTPUT; LED output Basah udara
69. pinMode32, OUTPUT; LED output Kering tanah 70. pinMode33, OUTPUT; LED output Lembab tanah
71. pinMode34, OUTPUT; LED output Basah tanah1 72. ifdef AVR
73. Wire.begin; 74. else
75. Wire1.begin; Shield I2C pins connect to alt I2C bus on Arduino Due PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI