Oleh:
ALFAN SUFFA PRAMANA
F1B016009
Oleh:
ALFAN SUFFA PRAMANA
F1B016009
Dengan ini menyatakan bahwa tugas akhir yang telah saya buat dengan judul: “Rancang
Bangun Purwarupa Smart Cage Pada Ternak Ayam Broiler Berbasis Internet Of Things
(IoT)” adalah asli (orsinil) atau tidak plagiat (menjiplak) dan belum pernah
diterbitkan/dipublikasikan dimanapun dan dalam bentuk apapun.
Demikianlah surat pernyataan ini saya buat dengan sebenar-benarnya tanpa ada paksaan
dari pihak manapun juga. Apabila dikemudian hari ternyata saya memberikan keterangan
palsu dan atau ada pihak lain yang mengklaim bahwa tugas akhir yang telah saya buat
adalah hasil karya milik seseorang atau badan tertentu, saya bersedia diproses baik secara
pidana maupun perdata dan kelulusan saya dari Universitas Mataram dicabut/dibatalkan.
HALAMAN JUDUL
LEMBAR PENGESAHAN
SURAT PERNYATAAN KEASLIAN TUGAS AKHIR ................................................ ii
PRAKATA........................................................................................................................ v
UCAPAN TERIMAKASIH ............................................................................................ vi
DAFTAR ISI.................................................................................................................... iii
DAFTAR GAMBAR ........................................................................................................ v
DAFTAR TABEL........................................................................................................... vii
BAB I ................................................................................................................................ 1
1.1 Latar Belakang ................................................................................................... 1
1.2 Rumusan Masalah .............................................................................................. 3
1.3 Batasan Masalah................................................................................................. 3
1.4 Tujuan ................................................................................................................ 3
1.5 Manfaat .............................................................................................................. 3
1.6 Sistematika Penulisan......................................................................................... 4
BAB II............................................................................................................................... 5
2.1 Tinjauan Pustaka ................................................................................................ 5
2.2 Dasar Teori ......................................................................................................... 6
2.2.1 Smart Cage ................................................................................................. 6
2.2.2 Ayam Broiler ( Ras Pedaging ) ................................................................... 6
2.2.3 Internet of Things (IoT) .............................................................................. 8
2.2.4 MQTT ( Message Qeuening Telemetri Transport )................................... 8
2.2.5 Mean Absolute Persentage Error ( MAPE ) ............................................... 9
2.2.6 ESP32.......................................................................................................... 9
2.2.7 RTC DS3231............................................................................................. 11
2.2.8 Sensor Suhu dan Kelembaban DHT 11 .................................................... 12
2.2.9 Relay ......................................................................................................... 13
2.2.10 Motor Stepper ........................................................................................... 15
2.2.11 Sensor Beban ( Load Cell ) ....................................................................... 17
2.2.12 Motor Servo .............................................................................................. 19
2.2.13 Sensor Ultrasonic HCSR 04 ..................................................................... 20
BAB 3 ............................................................................................................................. 22
3.1 Metode Penelitian............................................................................................. 22
iii
3.2 Persiapan ( Prepare ) ........................................................................................ 23
3.3 Perencanaan ( Plan ) ......................................................................................... 24
3.3.1 Perangkat Keras ........................................................................................ 24
3.3.2 Perangkat Lunak ....................................................................................... 24
3.4 Perancangan ( Design ) .................................................................................... 25
3.4.1 Perancangan Mekanik ............................................................................... 25
3.4.2 Perancangan Sistem Perangkat Keras ....................................................... 26
3.4.3 Perancangan Sistem Perangkat Lunak ...................................................... 27
3.5 Pengimplementasian ( Implement ) ................................................................. 31
3.6 Pengoprasian ( Operate ) .................................................................................. 31
3.7 Optimalisasi ( Optimize ) ................................................................................. 31
3.8 Langkah-Langkah Perancangan ....................................................................... 32
3.9 Lokasi Penelitian .............................................................................................. 33
BAB IV ........................................................................................................................... 34
4.1 Pengujian Sistem .............................................................................................. 34
4.2 Pengujian Catu Daya ........................................................................................ 34
4.3 Pengujian Ketepatan Waktu ............................................................................. 35
4.4 Pengujian Motor Servo .................................................................................... 36
4.5 Pengujian Sensor Ultrasonic HCSR04 ............................................................. 41
4.6 Pengujian Sensor Suhu ..................................................................................... 44
4.7 Pengujian Relay ............................................................................................... 49
4.8 Pengujian Motor Stepper 28byj-48 Menggunakan Driver DRV 8825 ............ 52
4.9 Pengujian Sensor Load Cell Dengan Modul HX711 ....................................... 53
4.10 Pengujian Interface ....................................................................................... 55
4.11 Pengujian Sistem Keseluruhan ..................................................................... 60
4.11.1 Pengujian mekanik system otomatis ......................................................... 60
4.11.2 Pengujian interface ................................................................................... 62
BAB V ............................................................................................................................ 64
5.1 Kesimpulan ...................................................................................................... 64
5.2 Saran ................................................................................................................. 64
DAFTAR PUSTAKA ..................................................................................................... 66
iv
DAFTAR GAMBAR
BAB II
Gambar 2. 1 Morfologi Ayam Broiler .............................................................................. 7
Gambar 2. 2 Arsitektur MQTT ......................................................................................... 9
Gambar 2. 3 ESP32 ......................................................................................................... 10
Gambar 2. 4 Modul RTC DS3231 .................................................................................. 11
Gambar 2. 5 Sensor Suhu DHT11 KY-015 .................................................................... 12
Gambar 2. 6 konfigurasi DHT 11 ................................................................................... 13
Gambar 2. 7 Simbol Relay Elektromekanik ................................................................... 14
Gambar 2. 8 Konstruksi Relay Elektromekanik ............................................................. 14
Gambar 2. 9 Modul Relay............................................................................................... 15
Gambar 2. 10 Konstruksi Motor DC .............................................................................. 16
Gambar 2. 11 Motor DC RS-385S.................................................................................. 16
Gambar 2. 12 Sensor Load Cell ...................................................................................... 18
Gambar 2. 13 Modul HX711 .......................................................................................... 18
Gambar 2. 14 Motor Servo MG996R ............................................................................. 19
Gambar 2. 15 Sensor Ulltrasonic HCSR 04 ................................................................... 22
BAB III
Gambar 3. 1 Metode PPDIOO ........................................................................................ 22
Gambar 3. 2 Desain 3 Dimensi Smart Cage ................................................................... 25
Gambar 3. 3 Blok diagram perancangan sistem ............................................................. 26
Gambar 3. 4 Diagram alir (flow chart) perancangan sistem ........................................... 27
Gambar 3. 5 Diagram alir perencanaan software ........................................................... 28
Gambar 3. 6 Diagram alir program node MCU ESP 32 ................................................. 28
Gambar 3. 7 Diagram alir program Arduino IDE ........................................................... 29
Gambar 3. 8 Diagram alir sistem keseluruhan ................................................................ 30
Gambar 3. 9 Diagram Alir Perancangan Penelitian ........................................................ 33
BAB IV
v
Gambar 4. 5 Grafik hasil pengukuran volume terulur pada tangka pakan ..................... 44
Gambar 4. 6 Rangkaian sensor ultrasonic ...................................................................... 44
Gambar 4. 7 Grafik perbandingan suhu berdasarkan waktu pengambilan data ............ 48
Gambar 4. 8 grafik data suhu terukur selama 24 jam ..................................................... 48
Gambar 4. 9 Rangkaian Sensor DHT 11 Dengan Esp 32 ............................................... 49
Gambar 4. 10 Rangkaian Relay dengan Esp 32.............................................................. 49
Gambar 4. 11 Notifikasi Kondisi pada Relay Terhadap Suh .......................................... 52
Gambar 4. 12 Rangkaian Motor Stepper dengan Esp 32 ................................................ 53
Gambar 4. 13 Rangkaian Sensor Load Cell dan Modul HX711 dengan Esp 32 ............ 53
Gambar 4. 14 Tampilan Awal Website Ubidots ............................................................. 56
Gambar 4. 15 Gambar Tampilan Halaman Widget pada website Ubidots data pembacaan
sensor .............................................................................................................................. 56
Gambar 4. 16 Tampilan Aplikasi Ubidot........................................................................ 57
Gambar 4. 17 Gambar Rangkaian Sistem Secara Keseluruhan ...................................... 60
Gambar 4. 18 Tampilan awal website ubidots ................................................................ 62
Gambar 4. 19 tampilan halaman widget pada website ubidots data pembacaan sensor . 63
Gambar 4. 20 Gambar tampilan pada aplikasi Ubidots .................................................. 63
vi
DAFTAR TABEL
BAB II
Tabel 2. 1 Kadar Pakan Ayam Sesuai Usia ...................................................................... 7
Tabel 2. 2 Spesifikasi ESP32 .......................................................................................... 10
Tabel 2. 3 Spesifikasi Modul RTC DS3231 ................................................................... 11
Tabel 2. 4 Konfigurasi pin Modul RTC DS3231............................................................ 12
Tabel 2. 5 Spesifikasi Sensor Suhu DHT11 KY-015 ..................................................... 13
Tabel 2. 6 Konfigurasi Pin DS18B20 ............................................................................. 13
Tabel 2. 7 Spesifikasi Relay ........................................................................................... 15
Tabel 2. 8 Konfigurasi Pin Relay.................................................................................... 15
Tabel 2. 9 Spesifikasi Motor DC RS-385S ..................................................................... 17
Tabel 2. 10 Spesifikasi sensor Load cell......................................................................... 18
Tabel 2. 11 Spesifikasi Motor Servo MG996R .............................................................. 19
Tabel 2. 12 Konfigurasi Kabel Motor Servo MG996R .................................................. 20
Tabel 2. 13 Konfigurasi Kabel Motor Servo MG996R .................................................. 23
BAB IV
Tabel 4. 1 Pengujian Penguraian Catu Daya .................................................................. 35
Tabel 4. 2 Data Hasil Pengujian Waktu Gerak Motor Servo Tehadap Pemberian Berat
Pakan ............................................................................................................................... 38
Tabel 4. 3 Data Hasil Pengujian Gerak Motor Servo Tehadap Pemberian Berat Pakan
Tiap waktu bukan tuangan pakan ................................................................................... 40
Tabel 4. 4 Tabel Pengujian Sensor Ultrasonik HCSR 04 ............................................... 42
Tabel 4. 5 Data hasil pengukuran pada tangki pakan berdasarkan berat terhadap volume
........................................................................................................................................ 43
Tabel 4. 6 Pengujian Suhu pada pukul 07.00 – 08.00 .................................................... 45
Tabel 4. 7 Pengujian Suhu pada pukul 12.00 – 13.00 .................................................... 46
Tabel 4. 8 Pengujian Suhu pada pukul 16..00 – 18.00 ................................................... 46
Tabel 4. 9 Pengujian Relay Terhadap Kondisi Suhu ...................................................... 50
Tabel 4. 10 Pengujian Sensor Load Cell dengan Berat Beban Pada Tanki Pakan ......... 54
Tabel 4. 11 pengujian interface terhadap suhu ............................................................... 57
Tabel 4. 12 pengujian interface terhadap berat pakan .................................................... 57
vii
Tabel 4. 13 pengujian interface terhadap waktu ............................................................. 58
Tabel 4. 14 Pengujian interface terhadap volume tangki pakan ..................................... 58
Tabel 4. 15 pengujian notifikasi pada aplikasi telegram ................................................ 58
Tabel 4. 16 Tabel Data hasil pengujian keseluruhan secara mekanik ............................ 61
viii
ABSTRAK
Usaha berternak ayam khususnya Ayam Broiler (Ras Pedaging) cara pembudidayaanya
masih tergolong tradisional. Oleh karena itu para peternak ini biasanya mengalami
kesulitan dalam merawat ayam-ayam terebut terutama dalam hal pemberian pakan dan
pengontrolan suhu. Maka karena itu di era industri modern ini diharapkan adanya suatu
system perternakan ayam Broiler dengan mengunakan teknologi dan menajemen yang
modern guna memudahkan para peternak ayam dalam mengatur pakan dan suhu yang
tepat secara otomatis, system ini dapat dipantau dari mana saja melalui smartphone
dengan teknologi internet of things (iot).
System ini menggunakan sensor load cell untuk mengukur berat pakan pada tangki pakan,
digunakan sensor ultrasonic HCSR04 untuk mengukur volume pakan pada tangki,
digunakan sensor suhu DHT 11 untuk mengukur suhu pada area kandang. buka tutup kran
pakan pada tangki digerakkan menggunakan motor servo dan penyaluran pakan pada
wadah menggunakan conveyor dan digerakkan menggunakan motor stepper, semua
system ini dikedalikan oleh ESP 32. Menggunakan Message queuing telemetry transport
(Mqtt) broker sebagai server cloud iot.
Sistem ini telah diuji dengan waktu pemberian pakan yang diatur sebanyak tiga kali sehari
dengan takaran ±100 gram setiap kali tuang tiap wadah, pengujian pengontrolan suhu
pada area kandang menggunakan kipas pendingin dan lampu penghangat sehingga suhu
tetap berada pada rentang 28℃ – 30 ℃. Hasil pengujian menunjukkan bahwa persentase
galat dibawah 10%, artinya system telah bekerja dengan baik. Pengujian pemantauan
melalui website dan smartphone telah berhasil dengan baik dimana hasil pemantauan
sama dengan hasil pada system
Kata Kunci : ESP 32 , Mqtt , Sensor Load cell , Sensor DHT 11, motor servo
ix
ABSTRACT
The business of raising chickens, especially broilers, is still classified as traditional.
Therefore these breeders usually experience difficulties in caring for these chickens,
especially in terms of feeding and temperature regulation. Therefore, in this modern
industrial era, it is hoped that there will be a broiler farming system that uses modern
technology and management to make it easier for chicken farmers to adjust the feed and
the right temperature automatically, this system can be monitored from anywhere via a
smartphone with internet of things technology (iot).
This system uses a load cell sensor to measure the weight of the feed in the feed tank, uses
the HCSR04 ultrasonic sensor to measure the volume of feed in the tank, uses the DHT
11 temperature sensor to measure the temperature in the cage area. The opening and
closing of the feed valve on the tank is driven using a servo motor and the distribution of
feed to the container using a conveyor and driven using a stepper motor, all of these
systems are controlled by ESP 32. Using a Telemetry Message Queue Transport (Mqtt)
broker as an IoT cloud server.
This system has been tested by setting feeding times three times a day at a rate of ±100
grams each time each container is poured, temperature control testing in the cage area
using a cooling fan and heating lamp so that the temperature remains in the range of 28
℃ – 30 ℃. The test results show that the error percentage is below 10%, which means
the system is working properly. Monitoring testing through websites and smartphones
has been successful where the monitoring results are the same as the results on the system
Key Words : ESP 32, Mqtt, load cell sensor , DHT 11 sensor , Servo Motor
x
BAB I
PENDAHULUAN
Untuk mengatasi permasalahan tersebut oleh karena itu di era 4.0 atau era industri
modern ini diharapkan adanya suatu perternakan ayam Broiler dengan mengunakan
teknologi dan menajemen yang modern guna memudahkan para peternak ayam dalam
melakukan usaha berternak ayam broiler
Berberapa peneliti telah melakukan penelitian tentang pakan pada ayam secara
otomatis diantaranya adalah,. Budi (2017) melakukan penelitian berjudul ”Rancang
bangun Sistem pemberian pakan ayam serta Monitoring Suhu dan Kelembaban Kandang
berbasis ATMega328”. Dalam penelitiannya, digunakan mikrokontroler yakni Aruduino
1
ATMega328 dan modul DHT11 untuk mengukur suhu dan kelembanban. Pada penelitian
yang dilakukan , suhu yang ada area sekitar akan terbaca oleh sensor suhu DHT11 sehinga
didapat nilai suhu terukur dan ditampilkan pada LCD 16 x 2, selanjutnya jika suhu
melebihi 30 oC maka blower akan aktif dan akan off jika kelembaban diatasn 65%,
rancangan sistem ini empunyai kelemahan yakni tidak bisa di monitoring secara jarak
jauh dan pada sensor terjadi gangguan pada saat mendeteksi suhu dan kelembaban yang
disebabkan oleh kelembaban yang lambat masuk kedalam kandang.
Dari beberapa penelitian yang sudah dilakukan oleh beberapa peneliti, maka penulis
ingin melengkapi rancangan tersebut yakni mengontrol dan memonitoring suhu dan
kelembaban area kandang menggunkan sensor suhu DHT11 , menyalakan lampu kandang
jarak jauh dan kemudian data tersebut akan dikirmkan ke server MQTT dan akan di
tampilkan pada aplikasi MQTT Panel IoT pada smartphone.
2
1.2 Rumusan Masalah
Berdasarkan latar belakang didapatkan suatu rumusan masalah para perternak ayam
broiler yaitu
1 Sistem pemberian pakan ayam pedaging masih dilaukan secara manual dengan
meletakkan pakan pada wadah atau menaburkan pakan pada lantai kandang
2 Beberapa peternak masih sering lalai dalam memberian pakan sehingga tidak
selalu tidak tepat waktu
3 Para perternak masih melakukan pengecekan suhu dan mengatur suhu kandang
secara manual dan tidak secara intensif
4 Untuk mengetahui berapa galat pada sistem permberian pakan otomatis dan
kontrol suhu otomatis pada kandang ( smart cage )
• Sistem otomatisasi ini di rancang memiliki dua parameter yang akan dicapai,
yakni parameter pertama dapat mengeluarkan pakan ayam dari wadah 1 (satu)
ke wadah 2 (dua) sesuai dengan penjadwalan. Parameter kedua yakni dapat
mendeteksi suhu pada area kandang dan mengontrol suhu pada kandang
dengan menyalakan lampu dan kipas pendingin secara otomatis.
• Menggunakan objek Ayam broiler berusia 29 – 35 hari
1.4 Tujuan
Adapun tujuan dari penelitian ini yaitu :
• Dapat merancang dan menghasilkan purwarupa pemberi pakan ayam secara
otomatis sesuai dengan takaran yang di butuhkan dari ayam itu sendiri yakni
sesuai dengan usia ayam dan dapat di jadwalkan serta dapat memantau dan
mengontrol kondisi suhu pada kandang.
• Dapat merancang dan membuat alat pakan ayam dengan pemantauan jarak jauh
1.5 Manfaat
Manfaat yang diharapkan dari alat ini yaitu dapat memberikan kemudahan
kepada peternak ayam dalam memberi pakan ayam broiler (pedaging) secara
3
otomatis dan terjadwal serta dapat memantau suhu dan serta dapat menyetabilkan
suhu pada area kendang secara otomatis
1. BAB I Pendahuluan
Dalam Bab ini akan dijelasakan latar belakang pengambilan judul tugas
akhir, permasalah, batasan masalah, tujuan, manfaat dan sistematika penulisan.
2. BAB II Tinjauan Pustaka dan Dasar Teori
Memaparkan dan menjelaskan tinjauan pustaka dan landasan teori yang
menunjang pembahasan tugas akhir.
4
BAB II
TINJAUAN PUSTAKA DAN DASAR TEORI
5
berat pakan pada wadah, Hasil yang di dapat dari penelitian tersebut adalah alat dapat
dimonitoring dari mana saja melalui Web dengan teknologi internet of things.
Smart Cage merupakan suatu pengimplementasian teknologi di era 4.0 yakni IoT
(Internet Of Things) untuk membantu dan mempermudah pekerjaan para peternak ayam
khususnya ayam broiler atau pedaging. Smart Cage ini digunakan untuk membantu
pekerjaan para peternak untuk memberi pakan secara otomatis setiap hari sehingga
peternak dapat memantau jumblah ketersediaan pakan, kondisi suhu pada kandang serta
menjadwalkan pemberian pakan melalui perangkat smartphone ataupun personal
computer
6
Gambar 2. 1 Morfologi Ayam Broiler
(sumber: https:// japfacomfeed.co.id)
Ayam broiler memiliki kelebihan dan kelemahan. Kelebihan ayam broiler adalah
daging empuk, ukuran badan besar, bentuk dada lebar, padat dan berisi, efisiensi terhadap
pakan cukup tinggi, sebagian besar dari pakan diubah menjadi daging dan pertambahan
bobot badan sangat cepat sedangkan kelemahannya adalah memerlukan pemeliharaan
secara intensif dan cermat, relatif lebih peka terhadap suatu infeksi penyakit, sulit
beradaptasi, dan sangat peka terhadap perubahan suhu lingkungan. Pemeliharaan ayam
meliputi banyak factor yakni seperti persiapan kandang, kedatangan DOC, pakan dan air
minum, temperatur, sistem alas lantai.
Ayam memiliki suhu tubuh yang selalu konstan yakni 36-40° C sehingga
temperature yang cocok untuk ayam broiler yakni kisaran 24-27° C. Kebutuhan pakan
ayam broiler pada umunya dapat dilihat pada tabel 2.1
7
Sifat yang dimiliki oleh ayam pedaging yakni Bentuk badan segi empat dan
dalam,Bulu luas dan lebar dengan alas dada bulat,bulu lebat dan agak longgar,gerakan
lamban.( Yuwata 2004).
8
Gambar 2. 2 Arsitektur MQTT
1 𝑦𝑖−𝑓𝑖
𝑀𝐴𝑃𝐸 = 𝑁 ∗ 100% ∑𝑁
𝑖=1 | | (2-1)
𝑦𝑖
Keterangan ;
2.2.6 ESP32
ESP32 adalah mikrokontroler yang dirancang oleh Espressif, Espressif merupakan
perusahaan asal Cina yang terletak di Shanghai. ESP32 merupakan mikrokontroler
pengembangan dari seri yang sebelumnya yaitu ESP8266 dengan firmware berbasis e-
Lua yang dilengkapi dengan Bluetooth BLE. Selain dengan bahasa Lua ESP32 juga
support dengan software Arduino IDE dengan melakukan pengaturan pada Board
Manager pada Arduino IDE dan sebelum digunakan mikrokontroler ini harus dilakukan
flashing terlebih dahulu. Gambar fisik beserta keterangan masing-masing pin dari ESP32
dapat dilihat pada Gambar 2.3.
9
Gambar 2. 3 ESP32
(sumber: randomnerdtutorials.com)
10
2.2.7 RTC DS3231
Real Time Clock (RTC) merupakan suatu IC penghitung yang dapat difungsikan
sebagai pengatur waktu atau sumber data tanggal dan waktu baik berupa detik, menit,
jam, hari, bulan maupun tahun atau bisa dibilang sebagai jam elektronik. Modul RTC
DS3231 ini dilengkapi dengan baterai, sehingga saat supplai tegangan mati RTC tetap
mendapatkan tegangan dari baterai. Pengaksesan data dilakukan dengan sistem
komunikasi serial atau yang sering disebut I2C (Inter-integrated Circuit) sehingga hanya
membutuhkan dua jalur untuk berkomunikasi yaitu jalur clock (SCL) dan data (SDA).
Modul RTC DS3231 +ATS24C32 adalah modul RTC + EEPROM 4K adalah versi
pengembangan dari RTC tipe DS3231 karna RTC DS3231 sudah memiliki internal
clock/osilator, berbeda dengan RTC DS3231 yang masih memerlukan komponen
kristal/osilator tambahan yang akurasinya bisa terpangur oleh suhu sekitar. Bentuk fisik
dari RTC DS3231 dapat dilihat pada Gambar 2.4.
11
Akurasi Waktu Eror per tahun ± 1 menit
Berat 8 gram
Salah satu jenis sensor suhu yang banyak digunakan di industri adalah tipe sensor
suhu berbahan semikonduktor. Sensor suhu DHT11 dengan kemampuan utuk mendeteksi
suhu dan kelembaban. Sensor suhu DHT11 dapat beroperasi dalam kisaran suhu 0 oC
sampai 50 oC dan memiliki tingkat keakuratan ± 2 oC dalam kisaran 1 oC. dan jangkauan
deteksinya hingga 20 m. Konfigurasi Sensor DHT 11 dapat dilihat pada gambae 2.6
12
Gambar 2. 6 konfigurasi DHT 11
(sumber: https://arduinomodules.info)
Tabel 2. 5 Spesifikasi Sensor Suhu DHT11 KY-015
Tegangan suplai 3.3 ~ 5.5V
Tegangan Keluaran 0 ~ 3V
Rentang pengukuran suhu 0 ~ 55 oC
Rentang pengukuran kelembaban 20% ~ 90% RH (relative
humidity)
Output Digital
Rentang sinyal 20 m
2.2.9 Relay
Relay elektromekanik merupakan suatu komponen elektronika yang dapat
mengimplementasikan logika controlling switch. Relay menggunakan prinsip
elektromagnetik untuk menggerakan kontak saklar atau switch sehingga dengan arus yang
kecil (low current trigger) dapat menghantarkan listrik yang bertegangan tinggi. Simbol
Relay elektromagnetik dapat dilihat pada gambar 2.7 dan konstruksi relay dapat dilihat
pada gamber 2.8
13
Gambar 2. 7 Simbol Relay Elektromekanik
(sumber: edukasielektronika.com)
Konstruksi relay elektromekanik pada dasarnya terdiri dari 4 komponen dasar
yaitu:
1. Kumparan (Coil)
2. Armature
3. Kontak saklar (switch contact point)
4. Spring
7. Normally close (NC) yaitu kondisi awal relay sebelum diaktifkan dimana relay akan
selalu dalam kondisi close (rangkian tertutup).
8. Noramlly Open (NO) yaitu kondisi awal relay sebelum diaktifkan dimana relay
akan selalu dalam kondisi open (rangkaian terbuka).
Prinsip kerja relay elektromekanik apabila kumparan (coil) dialiri arus listik maka
akan timbul gaya elektromagnetik pada inti besi (iron core) yang kemudian menarik
armature yang menyebabkan kontak saklar (switch) berpindah dari posisi seblumnya atau
posisi awalnya. Jika posisi awal dalam keadaan NC berubah kekeadaan NO sehingga
14
menjadi saklar yang tidak dapat menghantarkan arusl listrik. Pada saat kumparan tidak
dialiri arus listrik armature akan kembali lagi ke posisi awal NC sehingga saklar dapat
menghantarkan arus listrik. Kumparan yang berada pada relay umumya diaktifkan
dengan arus DC yang relatif kecil. Bentuk fisik dari relay dapat dilihat pada gambar 2.9
9. Stator atau bisa juga disebut kumparan medan pada motor DC merupakan bagian
pada motor DC yang tidak berputar.
15
10. Rotor atau bisa juga disebut kumparan jangkar pada motor DC merupakan bagian
pada motor DC yang berputar.
Dari dua bagian utama pada motor stepper terdapat beberapa komponen penting
lainnya, yaitu kerangka Magnet , Ball Beraring, Shaft, Coil, Flange. Konstruksi Motor
Stepper dapat dilihat pada gambar 2.10
16
Tabel 2. 9 Spesifikasi Motor DC RS-385S
Tegangan 5 DC
Banyak Phasa 4
Variasi Kecepatan Rasio 1/64
Frekuensi 100 Hz
Arus 2A
Torsi 435 g.cm
Sudut langkah 5.625’
Gesekan torsi 600-1200 gf.cm
Tarikan Torsi 300 gf.cm
Diukur menggunakan sensor regangan atau strain gage. Sensor berat merupakan
sebuah modul pendeteksi berat, struktur logam yang dirancang dengan sangat hati-hati,
dengan elemen kecil yang disebut pengukur regangan dan dipasang di tempat yang tepat
pada strukturnya. Sensor berat dirancang untuk mengukur beban tertentu. Keluaran dari
sensor ini sangat kecil, sinyal keluaran yang dihasilkan oleh sensor berat ini berbanding
lurus dengan eksitasi dan beban yang diterapkan. Sinyal keluaran dari sensor ini dalam
satuan mV/V atau V/A dan memerlukan penguatan khusus. Sensor berat (load cell)
dirancang untuk mengukur beban dalam satu arah. Apabila mengukur beban dengan arah
yang lain maka sensitivitas sensor akan berbeda, karena bagian dari sensor berat yang
beroperasi yaitu dalam kondisi tekanan (Nhut, 2012). Bentuk fisik dari sensor load cell
dapat dilihat pada gambar 2.12
17
Gambar 2. 12 Sensor Load Cell
(sumber: https://instructables.com)
HX711 adalah modul timbangan, yang memiliki prinsip kerja mengkonversi
perubahan yang terukur dalam perubahan resistansi dan mengkonversinya ke dalam
besaran tegangan melalui rangkaian yang ada. Modul melakukan komunikasi dengan
computer/mikrokontroller melalui TTL232. Kelebihan dari modul ini adalah Struktur
yang sederhana, mudah dalam penggunaan, hasil yang stabil dan reliable, memiliki
sensitivitas tinggi, dan mampu mengukur perubahan dengan cepat. Bentuk fisik dari
modul HX711 dapat dilihat pada gambar 2.13
18
Ukuran 55,25 mm × 12,7 mm × 12,7 mm
Presisi 0,05 %
Impendansi masukan 1130 ± 10 Ohm
Impendansi keluaran 1000 ± 10 Ohm
Tegangan masukan 5V DC
Rentang tegangan keluaran 1.0 ± 0.15 mv/V
Rentang suhu oprasional -20 ~ +55°C
Dimensi
Diameter 27.7 mm
Panjang 37.8mm
19
Dimensi 40 mm × 19 mm × 42 mm
Berat 55 g
Tipe gear Metal gear
Rentang suhu 0 ~ 55 oC
Kecepatan
4.8 V 0.19 detik/60 derajat
6V 0.13 detik/60 derajat
Output 7.6 W
Dimensi
Diameter 27.7 mm
Panjang 37.9mm
20
Gambar 2. 15 Sensor Ultrasonic HCSR 04
(sumber: edukasielektronika.com)
Cara kerja dari sensor ultrasonic sebuah sinyal pulsa dengan durasi setidaknya 10
μS (10 mikrodetik) diterapkan ke pin Trigger. Setelah itu, sensor mentransmisikan
gelombang ultrasonik delapan pulsa pada frekuensi 40 KHz. Pola 8-pulsa ini digunakan
untuk sebuah penanda sinyal ultrasonik dari modul ini, yang memungkinkan receiver /
penerima untuk membedakan pola yang ditransmisikan dari kebisingan ultrasonik sekitar.
Level output 5V – 0V
21
BAB 3
METODOLOGI PENELITIAN
1. Persiapan (Prepare)
Tahap ini merupakan tahap awal yang menganalisa situasional pada
sistem Smart cage pada kandang ayam broiler dengan cara melakukan
pengumpulan data-data yang dilakukan dengan cara survey lapangan yang di
tujukan untuk mendapatkan data primer dan memvefrifikasi model. survey
dilakukan dengan cara observasi dan wawancara terhadap pengambilan
keputusan terkait penelitian ini.
2. Perencanaan (Plan)
Tahap perancangan ini diawali dengan mengidentifikasi kebutuhan-
kebutuhan dan dilakukan pengumpulan data-data dari berbagai pihak Dengan
menentukan perancangan sistem dan desain arsitektur yang terbaik guna mampu
di implementasikan. Tahap ini dilakukan pembuatan rencana dimulai dari
22
perancangan alur sistem dan desain serta menentukan kebutuhan perangkat yang
akan digunakan dalam penelitian ini.
3. Perancangan (Design)
Tahap ini merupakan proses pembuatan desain dari data-data dan bahan-
bahan yang dikumpulkan dari berbagai Referensi terkait misalnya dalam proses
Pendistribusian Pakan dan penggambaran bentuk dari smartcage sehingga akan
menjelaskan rangkaian sistem yang hendak di implementasikan. Perancangan
sistem ini akan dibagi menjadi dua, yaitu: perancangan software (perangkat
lunak) dan hardware (perangkat keras).
4. Pengimpelementasian (Implement)
Pada tahap pengimplementasian ini merupakan tahap verifikasi dari
desain yang telah di setujui. Desain sistem dan desain mekanik serta desain
aplikasi yang dibagun sesuai kebutuhan pada penelitian ini.
5. Pengoprasian (Operate)
Tahap pengoprasian ini merupakan tahap pengujian akhir dari desain
sistem yang telah dibuat. Tahap ini juga dilakukan pemeliharaan dari desain
sistem dengan cara pemantauan sehari-hari yang bertujuan agar dapat
mengeetahui dan mengevaluasi masalah-masalah yang mungkin dapat terjadi
dalam alat yang telah dibuat dalam penelitian ini.
6. Optimalisasi (Optimize)
Fase Optimalisi atau Optimize dapat terjadi kapan saja setelah alat di
jalankan. Fase ini terjadi biasanya karena adanya perubahan teknis atau
persyaratan teknis dan perawatan terhadap alat yakni smart cage. Tahapan ini
akan dilakukan uji perbandingan pada tahap sebelumnya. Jika ada perubahan
fase ini akan diperbarui untuk memastikan smart cage berjalan dengan konsisten
sesuai dengan desain dan perencanaan.
23
kebutuhan informasi dari cara pengontrolan pakan pada ayam broiler serta menggunakan
mqtt broker pada IoT.
1. Laptop
2. ESP 32
3. Sensor Ultrasonic
4. Motor Servo
5. Relay
6. Power Supply
7. Sensor suhu dan kelembaban
8. Sensor berat (Load cell)
9. Motor Stepper
10. Motor Driver
1. Arduino IDE
2. Aplikasi Ubidots panel Mqtt
3. Sketch Up
4. adobe Xd
5. aplikasi telegram
6. Microsoft Office
24
3.4 Perancangan (Design)
Desain dari sistem ini terfokus pada perancangan mekanik dan perancangan sistem
monitoring pada tingkat kelembaban dan kontrol pada wakru dan kadar pakan pada
kandang secara otomatis dengan sensor load cell yang nantinya dapat dipantau melalui
aplikasi mqtt panel.
25
3.4.2 Perancangan Sistem Perangkat Keras
Secara umum, prisnip dari perancangan sistem dapat dilihat pada gambar
3.3 berikut.
26
Gambar 3. 4 Diagram alir (flow chart) perancangan sistem
Gambar 3.4 merupakan diagram alir (flow chart) dari perancangan sistem
pertama dilakukan penyesuaian jadwal dan waktu dengan RTDC DS3132. setelah
penyesuain waktu selesai maka tahap selanjutnya yakni pembacaan sensor untuk
mendapatkan nilai suhu dan kelembaban, jumlah kadar pakan yang tersedia dan api
menggunakan sensor yang terhubung ke NodeMCU. selanjutnya NodeMCU akan
mencari koneksi Wi-fi yang telah diatur, jika terhubung oleh koneksi wi-fi maka node
mcu akan mengirim data tersebut ke server MQTT Broker. setelah nilai-nilai
terkirim maka akan dilakukan menampilkan hasil pembacaan nilai melalui aplikasi
di smartphone, dari data yang di tampilkan dapat dilakukan pemberian pakan ayam
atau menyalakan lampu dengan menekan tombol pada aplikasi di smartphone. pada
saat dijalankan Motor Servo berfungsi sebagai pembuka katup kran pakan ketika
perintah peberian pakan dijalankan sedangkan Relay dan motor DC berfungsi
sebagai penggerak kran pakan yang akan menaburkan sepanjang wadah pakan serta
sebagai saklar untuk menyalakan lampu.
27
dirancang sebelumnya. Setelah perangkat dapat dijalankan dengan program yang
telah dibuat maka dilakukan fungsi mikrokontroler ESP 32 ke Cloud MQTT IoT
Panel yang ada pada smartphone. Untuk diagram alir perencanaan software dapat
dilihat pada gambar 3.5. Diagram alir program ESP 32 ke mqtt broker dapat dilihat
pada gambar 3.5. Diagram alir program Arduino IDE dapat dilihat pada gambar 3.6
28
3. pembuatan program Arduino IDE
29
4. pembuatan diagram alir sistem keseluruhan
30
3.5 Pengimplementasian (Implement)
Sistem ini akan di implementasikan pada kendang ayam yang bertujuan untuk
memudahkan pengerjaan dalam memantau ayam di kendang terutama memantau jumlah
kadar pakan pada wadah penampungan serta kontrol dan penjadwalan pemberian pakan
pada ayam. System ini juga dibuat dengan berbasis IoT agar dapat dikontrol melalui
aplikasi panel IoT untuk memantau suhu dan kelembaban area kendang agar tetap stabill
sesuai dengan kriteria suhu normal pada ayam.
1. Pengujian Sensor
Pengujian sensor dilakukan dengan cara mengukur tingkat error
perhitungan data pada system yang dilakukan oleh sensor
2. Pengujian Sistem Secara Keseluruhan
Pengujian system secarta keseluruhan dilakukan dengan cara
menghubungkan system baik dari perangkat keras serta perangkat lunak yang
telah dirancang sebelumnya apakah telah bekerja sesuai dengan ketentuan
spesifikasinya.
31
3.8 Langkah-Langkah Perancangan
Untuk melakukan perancangan purwarupa Smart Cage ini dibuat dalam beberapa
langkah kerja untuk mempermudah pengerjaan, adapun langkah kerja perancangan
sebagai berikut:
1. Membuat konsep perancangan purwarupa Smart Cage yang dapat dipantau dan
dikontrol secara jarak jauh melalui internet.
2. Melakukan studi literatur terkait perancangan yang sudah terkonsepkan baik
melalui ebook, jurnal ataupun buku-buku.
3. Mempersiapkan alat dan bahan yang digunakan dalam penelitian.
4. Melakukan perancangan mekanik beserta perangkat keras (hardware) sesuai
konsep yang sudah dibuat.
5. Melakukan pengujian terhadap perangkat keras (hardware).
6. Melakukan pembuatan program.
7. Melakukan pengujian terhadap program.
8. Melakukan Pengujian terhadap sistem keseluruhan
Semua langkah perancangan dirangkum kedalam diagram alir yang dapat dilihat
pada Gambar 3.9
32
Gambar 3. 9 Diagram Alir Perancangan Penelitian
3.9 Lokasi Penelitian
Penelitian ini dilakukan di:
33
BAB IV
Pengujian sistem dilakukan dengan tujuan untuk mengetahui hasil dari perancangan
yang telah dibuat pada bab sebelumnya. Apakah sistem dapat bekerja dengan bak sesuai
dengan perancangan atau tidak. Proses pengujian dilakukan pada masing-masing bagian
agar mempermudah dalam menganalisa kesalahan, serta memperbaiki ntuk
kesempurnaaannya. Pengujian sistem meliputi beberapa bagian, yaitu:
34
Tabel 4. 1 Pengujian Penguraian Catu Daya
No Rangkaian Tegangan yang Tegangan hasil
diinginkan pengukuran
1 Tegangan Masukan
Regulator 12 Volt 11.85 Volt
2 Tegangan Keluaran
Regulator 5 Volt 5.07 Volt
Data hasil pengukuran catu daya Direct Current ( DC ) pada Tabel 4.1 didapat
bahwa Ketika tegangan masukan untuk regulator yang diinginkan adalah sebesar 12 volt,
maka tegangan terukur yang didapat adalah sebesar 11.85 Volt Untuk pengukuran
tegangan IC Regulator LM7805, tegangan yang terukur adalah sebesar 5.07 Volt yang
dimana idelanya adlaah 5 Volt. Hal ini terjadi dikarenakan setiap komponen memiliki
nilai toleransi yang berbeda, akan tetapi tegangan keluaran sebesar 5.07 Volt termasuk
aman dan tidak berefek buruk terhadap system. Pada sumber tegangan 12 Volt ini
digunakan untuk Fan ( kipas pendingin ), dan driver motor DRV8825 hal ini dikarenakan
spesifikasi dari Fan dan Driver motor yang digunakan membutuhkan sumber tegangan
12 Volt. Sedangkan untuk tegangan keluaran 5 Volt digunakan untuk mensuplai tegangan
untuk modul relay,sensor load cell, motor servo, rtdc, motor stepper serta esp 32, hal ini
dikarenakan modul dan sensor yang digunakan memiliki spesifikasi yang membutuhkan
sumber tegangan 5 Volt. Titik pengukuran pada catu daya dengan multimeter dapat dilihat
pada Lampiran.
Pengujian ini bertujuan untuk mengetahui apakah waktu yang ditetapkan dan diatur
sudah bisa bekerja dengan baik, sebagaimana peberian pakan dilakukan tiga kali dalam
sehari yakni pada pagi hari ( 07.00 Wita ), siang hari ( 12.00 Wita ) dan sore hari ( 16.00
Wita ), selama satu minggu. Pengaturan penjadwalan waktu pemberian pakan
mengunakan modul Rtdc (Real Time Date Clock) DS3231, rangkaian modul Rtdc
DS3231 dapat dilihat pada gambar 4.2
35
Gambar 4. 2 Rangkaian Rtdc DS3231
Dari gambar potongan script diatas dapat diketahui bahwa pada penelitian ini
perintah penuangan pakan diatur tiga kali dalam sehari atau dalam 3 x 24 jam yakni pada
pukul 7, 12 , 16 dan pada menit ke 10. Ketika perintah penuangan pakan telah aktif maka
akan muncul notifikasi yang bertuliskan “ waktunya makan “ disertai dengan waktu jam
pemberian pakan, hal ini sebagai penanda bahwa sebagai penanda jika system pada alat
bekerja sesuai dengan waktu yang telah ditentukan seperti pada Gambar 4.3
Pada pengujian ini bertujuan untuk memastikan bahwa servo dapat membuka dan
menutup kran pakan. Selain itu juga motor servo mampu mengeluarkan pakan sesuai
36
dengan berat pakan yang telah ditentukan. Pengujian ini dilakukan dengan Bahasa
pemerograman C++ pada Arduino IDE seperti pada script dibawah ini :
Teknik pengendalian motor servo yaitu memberikan pulsa Pulse Width Modulation
(PWM) yang akan menggerakkan motro servo ke sudut tertentu sesuai dengan pulsa yang
diberikan ke kabel motor servo. Dalam pengujian ini menggunakan tiga (3) buah servo
yakni satu (1) buah servo pada tangka pakan yang berfungsi sebagai pembuka kran pakan
dan dua (2) buah servo pada conveyor yang berfungsi sebagai palang buka-tutup untuk
menggiring pakan agar jatuh pada wadah. Dapat dilihat bahwa pada servo yang sebagai
pembuka dimana akan bergerak membuka kran pakan sebesar 15’ dan akan menutup
Kembali pada posisi dengan bergrak menutup Kembali dengan sudut pergerakan 135’
dan untuk palang buka-tutup akan bergerak naik membuka palang dan bergerak pada
sudut 170’ dan akan bergerak turun menutup bergerak pada sudut 105’ hal imi dapat
dilihat pada gambar. Untuk melakukan pengujian terhadap motro servo dapat dirangkai
seperti rangkaian pada Gambar 4.4
37
Tabel 4. 2 Data Hasil Pengujian Waktu Gerak Motor Servo Tehadap Pemberian Pakan
Berat yang Berat 𝑦𝑖 − 𝑓𝑖 % MAPE Rata-Rata Waktu
diinginkan yang (𝑔𝑟) berat gerak
𝑦𝑖
( gram ) terukur yang servo
(𝑦𝑖) C terukur
146 0,0266
147 0,02
148 0,0133
149 0,0066
149 0.0066
148 0,0133
150 0
147 0,02
97 0.03
98 0.02
96 0.04
95 0.05
98 0.02
96 0.04
99 0.01
99 0.01
49 0.020
38
49 0.020
48 0.041
52 0.038
50 0
50 0
48 0.041
49 0.020
Hasil pengujian pada Tabel 4.2 yaitu mengukur ketepatan pemberian berat pakan
yang dikeluarkan melalui pergerakan motor servo. Apabila nilai berat pakan yang
diinginkan berbeda, maka waktu yang dibutuhkan juga berbeda. Pada penelitian ini waktu
yang digunakan yakni satu detik untuk menggerakkan motor servo terbuka. Dari data
tersebut didapatkan bahwa kesalahan error (MAPE) kurang dari 10 persen. Hal ini
menandakan bahwa waktu yang diperlukan untuk menggerakkan motor servo sudah tepat
dan bekerja sangat baik.
1 𝑁 𝑦𝑖 − 𝑓𝑖
𝑀𝐴𝑃𝐸 = ∗ 100% ∑ | |
𝑁 𝑖 𝑦𝑖
= 0.0185 ∗ 100%
= 1.85%
39
Tabel 4. 3 Data Hasil Pengujian Gerak Motor Servo pada pakan yang tertuang
pengujian Berat Berat Rata-
servo Tuangan pakan pakan Rata
𝑦𝑖 − 𝑓𝑖 %
dengan pakan yang yang (𝑔𝑟) berat
𝑦𝑖 MAPE
waktu sebanyak dihasilkan diinginkan yang
gerak1 3 kali terukur
(𝑦𝑖) (𝑓𝑖)
detik
Hasil pengujian pada Tabel 4.3 yaitu mengukur ketepatan pemberian berat pakan
yang dikeluarkan melalui pergerakan motor servo berdasarkan waktu atau jadwal
pemberian pakan. Apabila nilai berat pakan yang diinginkan berbeda, maka waktu
kecepatan bukaan servo yang dibutuhkan juga berbeda. Pada penelitian ini waktu yang
digunakan yakni satu detik untuk menggerakkan motor servo terbuka. Dari data tersebut
didapatkan bahwa kesalahan error kurang dari 10 persen. Hal ini menandakan bahwa
waktu yang diperlukan untuk menggerakkan motor servo sudah tepat dan bekerja sangat
baik.
40
1 𝑁 𝑦𝑖 − 𝑓𝑖
𝑀𝐴𝑃𝐸 = ∗ 100% ∑ | |
𝑁 𝑖 𝑦𝑖
1
= ∗ 100% (0.0066 + 0.0033 + 0.0033)
3
= 0.44 ∗ 100%
= 0.44%
#define TRIGGER_PIN 18
#define ECHO_PIN 4
#define MAX_DISTANCE 20
//note: if distance measured exceed max distance, the outputs will
0
int tankLevel; //contain feeder tank level capacity value
int feedPercentage;
Pada potogan script diatas diketahui bahwa pada penelitian ini, bahwa batas
ukur sensor dibatasi yakni maksimum 20 cm dan setiap kondisi diambil berdasarkan
pengurangan jumlah berat pakan yang dikurangi per 500 gram dan dilakukan lima kali
pegukuran yang dicatat setiap 15 detik. Kemudian data tersebut dibandingkan dengan
hasil pengukuran penggaris. Lalu dihitung persentase error pada data, hal ini dilakukan
untuk menghitung keakuratan pengukuran ketinggian oleh sensor untrasonik pada
tangki pakan
tankLevel=sonar.ping_cm();
if (tankLevel>=0){
feedPercentage=map(tankLevel, 20, 0, 0, 100);
}
41
if (tankLevel<=0){
feedPercentage=0;
}
5.10 cm 0.02
5.10 cm 0.02
5.10 cm 0.02
5.10 cm 0.02
5.10 cm 0.02
5.10 cm 0.02
10.10 cm 0.01
10.10 cm 0.01
10.10 cm 0.01
10.10 cm 0.01
10 cm 10.10 cm 0.01 0.1 % 10.10
10.10 cm 0.01
10.10 cm 0.01
10.10 cm 0.01
10.10 cm 0.01
10.10 cm 0.01
15.10 cm 0.0066
15.10 cm 0.0066
42
15.10 cm 0.0066
15.10 cm 0.0066
15 cm 15.10 cm 0.0066 0.66 % 15.10
15.10 cm 0.0066
15.10 cm 0.0066
15.10 cm 0.0066
15.10 cm 0.0066
15.10 cm 0.0066
Dari tabel diatas dapat dlihat bahwa hasil pengujian didaptkan nilai MAPE
dibawah 10 persen hal ini membuktikan bahwa sensor ultrasonic yang digunakan sangat
bekerja dengan baik.
1 𝑁 𝑦𝑖 − 𝑓𝑖
𝑀𝐴𝑃𝐸 = ∗ 100% ∑ | |
𝑁 𝑖 𝑦𝑖
= 0.02 ∗ 100%
=2%
Tabel 4. 5 Data hasil pengukuran pada tangki pakan berdasarkan berat terhadap volume
1 3000 gr 80
2 2500 gr 60
3 2000 gr 40
43
4 1500 gr 30
5 1000 gr 20
Rangkaian sensor ultrasonic ini dapat dilihat pada Gambar 4.6 dibawah ini :
44
float tempMin=28.80; //set minimum allowed temperature value
float tempMax=30.00; //set maximum allowed temperature value
Dari potongan script diatas dapat diketahui bahwa float akan mendeklarasikan
variable tempMin dengan nilai 28.80 ℃ sebagai nilai Batasan minimal suhu dan tempMax
dengan nilai 30.00 ℃ sebagai nilai Batasan suhu maksimal. Dalam penelitan ini dilakukan
pengujians sensor DHT 11 yang dilakukan dalam waktu 3 x 24 jam yakni pada pukul
07.00-08.00 Wita, pukul 12.00-13.00 Wita, Pukul 16.00-17.00 Wita. Hasil pengujian
dapat dilihat pada tabel 4.6, tabel 4.7 dan tabel 4.8
45
Tabel 4. 7 Pengujian Suhu pada pukul 12.00 – 13.00
46
8 30.60 30.50 0.0032
9 30.50 30.50 0
10 30.50 30.50 0
11 30.40 30.50 0.0032
12 30.40 30.40 0
Pengujian sensor DHT 11 dilakukan dengan memasang sensor ditengah area kandang
dan data suhu terukur pada sensor yang didapat lalu dibandingkan dengan suhu terukur
pada thermometer digital. Pada penelitan ini didapatkan hasil MAPE kurang dari 10
persen. Hal ini menandakan bahwa sensor suhu yang digunakan dapat bekerja dengan
sangat baik. Grafik perbandingan suhu berdasarkan waktu pengambilan data dapat dilihat
pada gambar 4.7 dan grafik data suhu suhu terukur salaam 24 jam dapat dilihat pada
gambar 4.8
1 𝑁 𝑦𝑖 − 𝑓𝑖
𝑀𝐴𝑃𝐸 = ∗ 100% ∑ | |
𝑁 𝑖 𝑦𝑖
= 0.0016 ∗ 100%
= 0.16 %
47
Gambar 4. 7 Grafik perbandingan suhu berdasarkan waktu pengambilan data
Gambar grafik 4.7 dapat dilihat bahwa suhu yang terukur oleh sensor dht 11 pada
jam 07.00 - 08.00 berada pada rata-rata suhu 29.3 ℃, sedangkan pada jam 12.00 -13.00
berada pada suhu rata-rata 30.7 ℃ ,dan pada jam 16.00 -17.00 berada pada rata-rata suhu
30.29 ℃. Data tersebut diambil dan dicatat selama rentang waktu 5 menit sekali.
48
berada pada rata-rata suhu 29 ℃, serta pada rentang jam 01.00 hingga 07.00 berada pada
rata-rata suhu 28 ℃. Suhu yang melebihi Batasan suhu terukur yakni 28 ℃ - 30 ℃ akan
dinormalkan hingga mencapai rentang suhu tersebut.
Relay mempunyai fungsi sebagai saklar untuk mengatur lampu pijar dan kipas
pendingin ( fan ) untuk menyala berdasarkan kondisi suhu pada area kendang. Pada jika
suhu pada kendang lebih rendah dari Batasan minimal suhu normal yakni 28℃ maka
lampu pijar akan menyala sebagai penghangat area kendang dan jika suhu pada kendang
melebihi Batasan maksimal suhu normal yakni 30℃ maka kipas akan menyala, hal
tersebut dapat dilihat pada gambar rangkaian 4.10
49
Tabel 4. 9 Pengujian Relay Terhadap Kondisi Suhu
suhu batas manimum = 28 C dan suhu batas maksimum = 30 C
Pada Tabel 4.5 merupakan hasil pengujian relay terhadap konsisi suhu pada area
kandang menggunakan sensor suhu DHT 11. Dapat dilihat bahwa kondisi relay ketika
suhu terukur berada pada batas minimum ,normal, dan maksimum akan mempengaruhi
kondisi relay seperti pada Tabel 4.9 Relay ini diatur dengan menggunakan Bahasa
pemerograman C++ Arduino IDE seperti pada potongan script dibawah ini :
pinMode(relayFan, OUTPUT);
pinMode(relayLamp, OUTPUT);
digitalWrite(relayFan, HIGH);
digitalWrite(relayLamp, HIGH)
Dari potongan script tersebut dapat dilihat fungsi dari pinMode akan
mendeklarasiakan relayFan dan relayLamp sebagai output sinyal pada
mikrokontroler ESP 32. Kemudian relayFan dan relayLamp diatur dalam kondisi
HIGH yang dimana kondisi high ini adalah kondisi relay tidak aktif yang menandakan
bahwa relah bersifat aktiv low. Dan pada pengimplementasiannya Ketika relay tidak aktif
hal ini juga menandakan kondisi suhu pada area sekitar kendang normal. Hal ini dapat
dilihat pada gambar potongan script dibawah ini
digitalWrite(relayLamp, HIGH);
digitalWrite(relayFan, HIGH);
50
String notif = "Suhu telahnormal...\n";
notif += "Suhu ketika normal \n";
notif += float(temperature);
bot.sendMessage(chatid_user,notif, "");
digitalWrite(relayLamp, LOW);
digitalWrite(relayFan, HIGH);
String notif = "Lampu menyala...\n";
notif += "Suhu saat ini \n";
notif += float(temperature);
bot.sendMessage(chatid_user,notif, "");
digitalWrite(relayLamp, HIGH);
digitalWrite(relayFan, LOW);
String notif = "Kipas menyala...\n";
notif += "Suhu saat ini \n";
notif += float(temperature);
bot.sendMessage(chatid_user,notif, "");
51
suhu melebihi Batasan suhu maksimal yang telah ditentukan maka relay akan aktif dan
kipas pendingin akan aktif. Dan juga akan menampilkan notifikasi “ kipas menyala “
sedangkan untuk relay pada lampu pijar yakni relayLamp tetap pada kondisi High atau
tidak aktif. Notifikasi yang menandakan Relay akan aktif pada kondisi tertentu dapat
dilihat pada Gambar 4.11
pinMode(enPin, OUTPUT);
digitalWrite(enPin, HIGH);
stepper.setMaxSpeed(1000); //stepper motor max
speedstepper.setSpeed(550); //set stepper motor speed to run at
Dari potongan script tersebut dapat dilihat fungsi dari pinMode akan
mendeklarasikan enPin atau pin enable yaitu pin 13 pada ESP 32 sebagai output sinyal,
kemudian enpin diatur dalam kondisi High agar memutus tegangan 12 Volt dari power
52
supply ke stepper motor sehingga tidak sepenuhnya mendapatkan tegangan Ketika fungsi
motor stepper dijalankan. Untuk melakukan pengujian terhadap Motor Stepper dapat
dirangkai seperti rangkaian pada Gambar 4. Dari hasil pengujian yang sudah dilakukan
bahwa Motor Stepper dapat bergerak sesuai dengan waktu yang telah ditentukan.
Rangkaian motor stepper dan driver drv 8825 dapat dilihat pada gambar 4.12
Pengujian sensor berat bertujuan untuk mendeteksi tekanan yang diterima apabila
sensor diberikan beban. Memanfaatkan prinsip kerja dari sensor berat, beban yang
diletakkan di bawah wadah tangki penampung pakan dan akan terdeteksi dan ditampilkan
pada interface. Rangkaian sensor load cell dengan modul HX711 yang dihubungkan
dengan mikrokontroler ESP 32. Rangkaian sensor load cell dengan modul Hx711 dapat
dilihat Gambar 4.13
Gambar 4. 13 Rangkaian Sensor Load Cell dan Modul HX711 dengan Esp 32
53
Tabel 4. 10 Pengujian Sensor Load Cell dengan Berat Beban Pada Tanki Pakan
Pakan pada tangki penampungan yang telah dilakukan pengurangan sebanyak 5
kali dengan beban rentang 1000 gram – 5000 gram
54
Dari hasil pengujian sensor load cell dapat dilihat pada Tabel 4.10 , diketahui
bahwa perbandingan antara tidak jauh berbeda dengan berat pakan yang terukur
menggunakan sensor load cell. Sehingga didapatkan persentase error kurang dari 10
persen. Dapat dikategorikan bahwa kakuratan sensor load cell sangat baik.
Untuk nilai sample yang diambil yaitu sama dengan nilai yang digunakan pada
pengujian sensor load cell pada tangki pakan. Pada pengujian sensor load cell pada tangki
diperoleh nilai persentase error yang semakin kecil. Dapat dikatakan bahwa semakin
besar regangan beban yang diletakkan diatas wadah pakan, maka persentase errornya
relative kecil.
1 𝑁 𝑦𝑖 − 𝑓𝑖
𝑀𝐴𝑃𝐸 = ∗ 100% ∑ | |
𝑁 𝑖 𝑦𝑖
1
= ∗ 100% (0 + 0.0020 + 0.0010 + 0.0030 + 0.0020
5
= 0.008 ∗ 100%
= 0.8%
Pada pengujian ini bertujuan untuk menyesuaikan pembacaan dari sensor load
cell, sensor Ultrasonic, sensor suhu dengan yang ditampilkan pada smartphone dan
Website. Gambar 4.14 Merupakan tampilan halaman yang diakses melalui website
Ubidots. Gambar 4.15 merupakan tampilan dashboard pada website ubudits. Gambar
4.16 merupakan tampilan dashboard Smartphone, dan dapat diperhatikan bahwa data
pada Tabel 4.11 sesuai dengan yang tertampil pada smartphone maupun Website yang
menampilkan pembacaan sensor suhu. Tabel 4.12 sesuai dengan yang tertampil pada
smartphone maupun Website yang menampilkan pembacaan sensor load cell terhadap
berat pakan. Tabel 4.13 sesuai dengan yang tertampil pada smartphone maupun Website
modul rtdc terhadap ketepatan waktu. Tabel 4.15 sesuai dengan yang tertampil pada
smartphone maupun Website yang menampilkan pembacaan ultrasonic terhadap volume
tangki pakan. Tabel 4.11 sesuai dengan yang tertampil pada aplkasi telegram pada
55
smartphone yang notifikasi . Hal ini menandakan bahwa yang tertampil pada smartphone
dan website sesuai dengan yang terbaca pada terminal perangkat ESP 32.
56
Gambar 4. 16 Tampilan Aplikasi Ubidot
Data hasil pengujian interface pada masing-masing fitur dapat dilihat pada tabel
dibawah ini
Tabel 4. 11 pengujian interface terhadap suhu
webiste Aplikasi telegram
57
Tabel 4. 13 pengujian interface terhadap waktu
webiste Aplikasi
Berat pakan
58
Stok pakan kurang
Suhu tersisa
Pemberian pakan
Relay kipas
pendingin aktif
Relay lampu
pengahangat aktif
Suhu normal
Conveyor cleaning
Tuangan pakan
59
4.11 Pengujian Sistem Keseluruhan
60
ultrasonic sebagai sensor pendeteksi volume pada tangki pakan, modul relay sebagai
saklar kipas pendingin dan lampu penghangat, modul rtc sebagai pengatur waktu, motor
stepper sebagai penggerak conveyor, dan servo sebagai pembuka kran pakan dan palang
pada conveyor. Pada pengujian ini dilakukan dengan awalnya mengatur pemberian
pakan. Setelah ditentukan, maka tangki pakan akan menjalankan system dengan
membuka kran pakan dan akan mengeluarkan pakan sebanyak 100 gram per wadah yang
nantinya akan di salurkan melalui conveyor menuju wadah pakan. System ini bekerja
sebanyak tiga kali sehari dengan jadwal pemberian pakan yaitu pagi, siang dan sore.
Sehingga ayam makan 300 gram per hari dan dilakukan pengujian selama empat hari
berturut-turut. Berikut data hasil pengujian system keseluruhan secara otomatis dapat
dilihat pada tabel 4.16
Dari tabel 4.16 dapat diketahui bahwa berat pakan akan dikurangi sebanyak
300 gram per sekali jadwal tuang dan akan terus berlanjut hingga berat pada tangka
akan terbaca semakin kecil nilainya oleh sensor load cell yang meadakan bahwa
pakan pada tangki sudah mulai berkurang dan sensor ultrasonic menampilkan dan
61
membaca volume pakan yang tersisa pada tangki pakan. Dan selanjutnya system akan
mengirimkan notifikasi berat tersedia terkni pada smartphone dan sensor suhu akan
membaca kondisi suhu pada area kandang dan akan menormalkan suhu pada area
kandang jika suhu terbaca melebihi batas maksimum dan batas minimum pembacaan
sensor suhu yang telah ditetapkan dengan mengaktifkan relay dan system juga akan
mengirimkan notifikasi pada smartphone sesuai dengan kondisi suhu yang terdeteksi.
62
Gambar 4. 19 tampilan halaman widget pada website ubidots data pembacaan
sensor
63
BAB V
PENUTUP
5.1 Kesimpulan
1. Alat pemberi pakan ayam broiler secara otomatis sudah berjalan dengan baik
yaitu sesuai dengan waktu yang ditentukakn pada pagi, siang, dan sore hari.
System ini juga mampu mengeluarkan pakan dengan takaran berat yang sama
yakni ± 100 gram di setiap wadah pakan per sekali waktu tuang, dengan
persentase error yang didapat dibawah 10 persen.
2. Pengontrolan suhu pada Alat smart cage berjalan dengan sangat baik, yaitu
dapat menyetabilkan suhu area kandang hingga pada suhu normal yakni pada
rentang suhu 28 ℃ - 30 ℃
3. Pemantauan ukuran sisa pakan pada tangki pakan yang dilakukan pada
halaman website dan smartphone sama dengan yang tertampil pada teriminal
ESP 32
4. Sistem pengendali secara otomatis pemberian pakan dan kontrol suhu pada
area kandang ayam broiler dengan pemantauan jarak jauh sudah berhasil dan
berjalan dengan baik.
5.2 Saran
Dalam pengerjaan dan penyelesaian tugas akhir ini tidak lepas dari berbagai
macam kekurangan dan kelemahan, baik dari perangkat keras atau perangkat lunak
yang dirancang. Untuk memperbaiki kekurangan tersebut, maka dapat diambil
beberapa saran yang dapat dikembangkan lebih lanjut diantaranya:
1. Dibutuhkan sensor load cell yang lebih presisi agar pembacaan sensor lebih
stabil dan akurat Ketika pakan didistribusikan dari tangki pakan ke wadah
pakan.
64
2. Dibutuhkan sensor suhu yang lebih presisi agar pembacaan suhu diarea
kandang dapat lebih akurat sehingga sesuai dengan kebutuhan suhu pada
ayam broiler
3. Dibutuhkan stepper motor yang memiliki torsi dan kecepatan yang lebih
bagus agar pendistribusian pakan dapat bergerak dengan lancar
65
DAFTAR PUSTAKA
Amrullah, M. (2019). Rancang Bangun Alat Monitor Pemberi Pakan Ayam Berbasis Web
. Jurnal Teknosains FTIE UTY, 1-15.
Anonim.(2013). Getting Started With The Esp 32 Developmment Board. Diakes pada 10
agustus 2021. Dari https://randomnerdtutorials.com/ getting-started-with-esp32
Anonim. (2016). Pengertian dan penjelasan tentang relay. Diakses pada 10 Agustus
2021, Dari https://www.edukasielektronika.com/2022/10/pengertian-dan-
penjelasan-tentang-relay.html
Anonim. (2018). Ayam broiler live birds, Diakses pada tanggal 10 agustus 2021, Dari
https://www.japfacomfeed.co.id/id/poultry/ayam-broiler-live-birds
Anonim. (2019). Ky-015 temperature and humidity sensor module. Diakses pada 10
agustus 2021, Dari https://arduinomodules.info/ ky-015-temperature
Astria, F., Subito, M., & Nugraha, W. D. (2014). Rancang Bangun Alat Ukur PH Dan
Suhu Berbasis Short Message Service (SMS) Gateaway. Jurnal MEKTRIK, 1(1),
47–55.
Budi, A. (2017). Rancang Bangun Sistem Pemberi Pakan Ayam Serta Monitoring Suhu
dan Kelembaban Kandang Berbasis Atmega328 . JE-Unisla Program Studi
Elektro , Vol 2 No 2 , 1-5.
66
Budioko. (2016). Sistem Monitoring Suhu Jarak Jauh Berbasis Internet Of Things
Menggunakan Protokol Mqtt . Seminar Riset Teknologi Informasi (SRITI) tahun
2016 , 353.
Degraw S. (2017). Arduino scale with 5kg load cell and hx7111 amplifier. Diakses pada
10 agustus 2021, Dari instructables.com/arduino-scale-with-5kg-load-cell-and-
hx711-amplifi/.
Gigih, K. (2018). Smart Kandang Ayam Petelur Berbasis Internet Of Things Untuk
Mendukung Sdgs 2030 (Sustainable Development Goals) . Jurnal TEKNOINFO,
Vol. 12, No. 2, 2018, 43-48, ISSN 2615-224X , 43-48.
Komala, D. (2011). Rancang Bangun Pemberi Pakan Ayam Otomatis Pada Peternakan
Ayam Berbasis Mikrokontroller. Tugas Akhir - 2011, 1-9.
Margi, K., & Pendawa, S. (2015). Analisa dan Penerapan Metode Single Exponential
Smoothing untuk Prediksi Penjualan pada Periode Tertentu (Studi Kasus: PT.
Media Cemara Kreasi). Prosiding SNATIF Ke-2, (1998), 259–266.
Nhut, N. M. (2012). 3133 - Micro Load Cell (0-5kg) - CZL635 Contents, 1–4
Ridwan, M. B. (2019). Sistem Monitoring Tanaman Hidroponik Dengan Sensor Ph, Suhu
Air Dan Pemupukan Berbasis Internet Of Thing . Jurnal Teknosains FTIE UTY,
1-13.
67
Yuwata. (2004). Dasar Ternak Unggas. Yogyakarta: Kanisius.
68
LAMPIRAN
No Keterangan GAMBAR
dokumentasi
1 Desain
rancangan
Smart Cage
2 Pengukuran
Catu Daya
69
3 Pengukuran
Suhu
4 Pengukuran
Berat pakan
5 Pengukuran
Volume Tangki
pakan
70
6 Objek
penelitian yang
digunakan
“Ayam broiler”
71
Program Arduino IDE Sistem Keseluruhan
/****************************************
* Include Libraries
// Alfan Suffa Pramana//
// F1B016009 //
****************************************/
#include "UbidotsEsp32Mqtt.h" //Developed by Jose Garcia,
https://github.com/jotathebest/
#include <NewPing.h> //Ultrasonic sensor library
#include "DHT.h" //DHT 11 sensor library
#include "RTClib.h" // Date and time functions using a DS3231 RTC connected via I2C and
Wire lib
#include <Servo.h>
#include <AccelStepper.h>
#include "HX711.h"
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h>
// Initialize Telegram BOT parameters
#define BOTtoken "5484724669:AAFQOvefASNzP_H8OjCd5IrknyJ6mhucyGI" // Bot token from
telegram app
//Initialize telegram user that receive the notification
#define chatid_user "1476233823"
// Initialize Wifi connection to the router
WiFiClientSecure client;
UniversalTelegramBot bot(BOTtoken, client);
//Checks for new messages every 1 second.
int botRequestDelay = 500;
unsigned long lastTimeBotRan;
// HX711 circuit wiring parameters
const int LOADCELL_DOUT_PIN = 19;
const int LOADCELL_SCK_PIN = 23;
HX711 scale;
float weight;
float lastWeight;
//stepper motor parameters
#define dirPin 26 // kabel biru ke pin 26
#define stepPin 27 // kabel kuning ke pin 27
#define enPin 13 // kabel coklat ke pin 13
#define motorInterfaceType 1
AccelStepper stepper = AccelStepper(motorInterfaceType, stepPin, dirPin);
//servos parameters
Servo feedservo; // create servo object to control a servo
Servo spoon1; // create servo object to control a servo
Servo spoon2; // create servo object to control a servo
int openlid = 15; //15 open the tank lid servo
int closelid = 135; //135 close the tank lid servo
int spoon1down = 105;
int spoon1up = 170;
int spoon2down = 105;
int spoon2up = 170;
int counter=0;
int pourOnce_Time=1000; //set the value in miliseconds to adjust amount of feed poured
int stepperMove_Time=0; //set the value in miliseconds to adjust how long the stepper
active
int pourDelay;
//new int variable for new program
int pourDelaySingle;
int counterSingle=0;
int pourDelayDouble;
int counterDouble=0;
boolean pourOnce_State=false;
boolean pourThrice_State=false;
boolean stepperState=false;
boolean sendState=false;
72
boolean servoStandby_state=false;
boolean tempCheck_state=false;
boolean lampON_state=false;
boolean fanON_state=false;
boolean lampOFF_state=false;
boolean fanOFF_state=false;
73
const char *HUMID_VARIABLE_LABEL = "humid-brochick"; // Put here your Variable label to
which data will be published
const char *RTCHOUR_VARIABLE_LABEL = "rtchour-brochick"; // Put here your Variable
label to which data will be published
const char *RTCMINUTE_VARIABLE_LABEL = "rtcminute-brochick"; // Put here your Variable
label to which data will be published
const char *WEIGHT_VARIABLE_LABEL = "weight-brochick"; // Put here your Variable label
to which data will be published
const char *TANK_VARIABLE_LABEL = "tank-brochick"; // Put here your Variable label to
which data will be published
const int PUBLISH_FREQUENCY = 60000; // Ubidots update rate in milliseconds
74
String info = "Triple Override Selected ";
bot.sendMessage(chat_id,info, "");
}
if (text == "/conveyorCleaning") {
conveyorCleaning_state=true;
String info = "Conveyor Cleaning Selected ";
bot.sendMessage(chat_id,info, "");
}
if (text == "/start") {
String welcome = "Welcome " + from_name + ".\n";
welcome += "/weight : Tank weight info\n";
welcome += "/temp : Temperature info\n";
welcome += "/singleOverride : Run Single Override\n";
welcome += "/doubleOverride : Run Double Override\n";
welcome += "/tripleOverride : Run Triple Override\n";
welcome += "/conveyorCleaning : Clean conveyor from excess pellets by 1 minute
run\n";
bot.sendMessage(chat_id, welcome, "Markdown");
}
}//end of for
}//end of handleNewMessages()
//===============//end of handleNewMessages()===============
/****************************************
* Main Functions
****************************************/
void setup()
{
Serial.begin(115200);
pinMode(LED_BUILTIN, OUTPUT);
//ubidots.setDebug(true); // uncomment this to see Ubidots debugging message
//ubidots.setCallback(callback); //ubidots debug message to be displayed in serial
monitor if necessary
ubidots.connectToWifi(WIFI_SSID, WIFI_PASS); //connect to WiFi using previously
defined WiFi parameters
ubidots.setup(); //set ubidots
ubidots.reconnect(); //reconnect to ubidots if ESP32 is reset
ubidotsTimer = millis(); //
sendState=true;
dht.begin();
client.setInsecure();
//RTC debugging message
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
Serial.flush();
while (1) delay(10);
}
//this statement will check if RTC run for first time, if not, it will set the RTC date
based on computer compile time
if (rtc.lostPower()) {
Serial.println("RTC lost power, let's set the time!");
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
//rtc.adjust(DateTime(2022, 6, 13, 22, 11, 0));
}
pinMode(enPin, OUTPUT);
digitalWrite(enPin, HIGH);
stepper.setMaxSpeed(1000); //stepper motor max speed
stepper.setSpeed(550); //set stepper motor speed to run at
feedservo.attach(25); // attaches the servo for feed pouring on ESP32 pins 25 (labeled
as Servo 1 in PCB silkscreen)
spoon1.attach(33); // attaches the servo for the farthest spoon conveyor belt on
ESP32 pins 33 (labeled as Servo 2 in PCB silkscreen)
spoon2.attach(32); // attaches the servo for the closest spoon conveyor belt on
ESP32 pins 32 (labeled as Servo 3 in PCB silkscreen)
75
spoon1.write(spoon1up);
spoon2.write(spoon2up);
scale.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN);
scale.set_scale(412.731); // this value is obtained by calibrating
the scale with known weights; see the README for details
pinMode(relayFan, OUTPUT);
pinMode(relayLamp, OUTPUT);
digitalWrite(relayFan, HIGH);
digitalWrite(relayLamp, HIGH);
} //end of setup
void loop()
{
pourOnce();
pourThrice();
stepperRun();
kirimData();
tempCheck();
servoStandby();
singleOverride();
doubleOverride();
tripleOverride();
conveyorCleaning();
pourSingleFeed();
pourDoubleFeed();
}//end of loop
//===============//end of main loop()===============
//---------------//start of kirimData()---------------
//inside this function, calling all necessary sensors function and store it to variables
//then send it to Ubidots Dashboard
void kirimData(){
if(sendState==true){
//DHT11 parameters
humidity = dht.readHumidity(); //insert DHT 11 humidity reading value to 'hum'
variable
temperature = dht.readTemperature(); //insert DHT 11 temperature reading value to
'temp' variable
76
if(currentFeed_state!=previousFeed_state){
if(currentFeed_state){
else{
//do nothing if else a.k.a the currentFeed_state is false
}
}
if(numNewMessages) {
handleNewMessages(numNewMessages);
numNewMessages = bot.getUpdates(bot.last_message_received + 1);
}
previousTelegram_Millis=currentTelegram_Millis;
}
//check if tank weight is below limit, if so, it will spamming the telegram bots with
notification message every 1 mins
if(weight<0.20){
unsigned long currentNotif_Millis = millis();
if (currentNotif_Millis-previousNotif_Millis>= 60000){
previousNotif_Millis = currentNotif_Millis;
String notif = "Peringatan!!!!\n";
notif += "Stok pakan kurang dari 0.70 Kg!!\n";
notif += "Stok pakan saat ini: ";
notif += float(weight);
notif += " Kg";
bot.sendMessage(chatid_user,notif, "");
}
}
// triggers the routine every 5 seconds, in other words, it will send all variable every
5 seconds
if ((millis() - ubidotsTimer) > PUBLISH_FREQUENCY)
77
{
ubidotsTimer = millis(); //insert millis value to 'timer' variable
//unfortunately, we can send 5 variables only for now,,
//its because the max payload length is 512 bytes, if the payload exceed the limit,
ESP32 will sent nothing to Ubidots Dashboard
// Insert your variable Labels and the value to be sent
}//end kirimData()
//===============//end of kirimData()===============
//---------------//start of stepperRun()---------------
//activate the stepper motor to move the conveyor belt
void stepperRun(){
if(stepperState==true){
sendState=false;
digitalWrite(enPin, LOW);
stepper.runSpeed(); //start the stepper
}
//adjust the stepperMove_Time to ensure all feed stock completely out from belt
if((millis()-stepper_Millis)>=stepperMove_Time){
stepperState=false; //deactivate stepperRun() function
digitalWrite(enPin, HIGH); //disable a.k.a turn the DRV8825 off to avoid stepper
motor overheat while idle
sendState=true; //re-activate kirimData() function, this function will send all data
to ubidots and telegram if requested
servoStandby_state=true; //re-activate servoStandby() function, this function will
set all servo at up position
tempCheck_state=true; //re-activate tempCheck() function
singleOverride_state=false;
doubleOverride_state=false;
tripleOverride_state=false;
conveyorCleaning_state=false;
}
}//end
//===============//end of stepperRun()===============
//---------------//start of pourThrice()---------------
//this function will do pourOnce() function three times
void pourThrice(){
if(pourThrice_State==true){
if(counter<3){
if((millis()-counter_Millis)>=pourDelay){
counter_Millis=millis();
pourOnce_State=true;
pourOnce_Millis=millis();
counter++;
}
}
if(counter==3){
counter=0;
pourThrice_State=false;
}
78
if (counter==1){
pourDelay=25000; //wait 20 seconds before spoon1 down
spoon1.write(spoon1up);
spoon2.write(spoon2up);
}
if (counter==2){
pourDelay=20000; //wait 15 seconds before spoon 2 down
spoon1.write(spoon1down);
spoon2.write(spoon2up);
}
if (counter==0){
spoon1.write(spoon1down);
spoon2.write(spoon2down);
}
}//end if triplefour state check
}//end pour3times()
//===============//end of pourThrice()===============
//---------------//start of pourOnce()---------------
//this function will open tank lid for a second then close it
void pourOnce(){
if (pourOnce_State==true){
//Serial.println("Pour Mode Started"); // uncomment this for debugging only
feedservo.write(openlid);
//---------------//start of tempCheck()---------------
//runs relay, fan, heater lamp, and DHT11 temperature check
void tempCheck(){
//check if DHT11 temp is below tempThreshold or not
if (tempCheck_state==true){
//DHT11 parameters
humidity = dht.readHumidity(); //insert DHT 11 humidity reading value to 'hum'
variable
temperature = dht.readTemperature(); //insert DHT 11 temperature reading value to
'temp' variable
//------------------------------------------------------------------------
//send message if temperature is Normal
bool currentNormalTemp_state=temperature>tempMin && temperature<tempMax;
static bool previousNormalTemp_state=false;
if(currentNormalTemp_state!=previousNormalTemp_state){
if(currentNormalTemp_state){
digitalWrite(relayLamp, HIGH);
digitalWrite(relayFan, HIGH);
79
else{
//do nothing if else a.k.a the normalTemp_state is false
}
}
//========================================================================
//------------------------------------------------------------------------
//send message if temperature is below Normal
bool currentBelowTemp_state=temperature<tempMin;
static bool previousBelowTemp_state=false;
if(currentBelowTemp_state!=previousBelowTemp_state){
if(currentBelowTemp_state){
digitalWrite(relayLamp, LOW);
digitalWrite(relayFan, HIGH);
else{
//do nothing if else a.k.a the belowTemp_state is false
}
}
//========================================================================
//------------------------------------------------------------------------
//send message if temperature is above Normal
bool currentAboveTemp_state=temperature>tempMax;
static bool previousAboveTemp_state=false;
if(currentAboveTemp_state!=previousAboveTemp_state){
if(currentAboveTemp_state){
digitalWrite(relayLamp, HIGH);
digitalWrite(relayFan, LOW);
else{
//do nothing if else a.k.a the aboveTemp_state is false
}
}
//========================================================================
80
//---------------//start of servoStandby()---------------
void servoStandby(){
if (servoStandby_state==true){
spoon1.write(spoon1up);
spoon2.write(spoon2up);
}
}
//===============//end of servoStandby()===============
/*
* hey, new program started from here
* hey, new program started from here
* hey, new program started from here
* hey, new program started from here
* hey, new program started from here
* hey, new program started from here
* hey, new program started from here
*/
//---------------//start of singleOverride()---------------
void singleOverride(){
//------------------------------------------------------------------------
//check if single override is called
bool currentSingleOverride_state=singleOverride_state;
static bool previousSingleOverride_state=false;
if(currentSingleOverride_state!=previousSingleOverride_state){
if(currentSingleOverride_state){
servoStandby_state=false; //deactivate servoStandby() function
tempCheck_state=false; //deactivate tempCheck() function
pourSingleFeed_state=true; //calling pourSingleFeed() function
//do stepperRun()
stepperMove_Time=30000;
stepperState=true; //activate stepperRun() function
stepper_Millis=millis();
else{
//do nothing if else a.k.a the singleOverride is false or not called
}
}
//========================================================================
}//===============//end of singleOverride()===============
//---------------//start of doubleOverride()---------------
void doubleOverride(){
//------------------------------------------------------------------------
//check if double override is called
bool currentDoubleOverride_state=doubleOverride_state;
static bool previousDoubleOverride_state=false;
if(currentDoubleOverride_state!=previousDoubleOverride_state){
81
previousDoubleOverride_state=currentDoubleOverride_state;
if(currentDoubleOverride_state){
servoStandby_state=false; //deactivate servoStandby() function
tempCheck_state=false; //deactivate tempCheck() function
pourDoubleFeed_state=true; //calling pourDoubleFeed() function
//do stepperRun()
stepperMove_Time=60000;
stepperState=true; //activate stepperRun() function
stepper_Millis=millis();
else{
//do nothing if else a.k.a the doubleOverride is false or not called
}
}
//========================================================================
}//===============//end of doubleOverride()===============
//---------------//start of tripleOverride()---------------
void tripleOverride(){
//------------------------------------------------------------------------
//check if triple override is called
bool currentTripleOverride_state=tripleOverride_state;
static bool previousTripleOverride_state=false;
if(currentTripleOverride_state!=previousTripleOverride_state){
if(currentTripleOverride_state){
servoStandby_state=false; //deactivate servoStandby() function
tempCheck_state=false; //deactivate tempCheck() function
pourThrice_State=true; //activate pourThrice() function
//do stepperRun()
stepperMove_Time=150000;
stepperState=true; //activate stepperRun() function
stepper_Millis=millis();
else{
//do nothing if else a.k.a the tripleOverride is false or not called
}
}
//========================================================================
}//===============//end of tripleOverride()===============
//---------------//start of conveyorCleaning()---------------
void conveyorCleaning(){
//------------------------------------------------------------------------
//check if conveyor cleaning is called
bool currentConveyorCleaning_state=conveyorCleaning_state;
static bool previousConveyorCleaning_state=false;
if(currentConveyorCleaning_state!=previousConveyorCleaning_state){
82
//change previous state with new current state
previousConveyorCleaning_state=currentConveyorCleaning_state;
if(currentConveyorCleaning_state){
tempCheck_state=false; //deactivate tempCheck() function
//do stepperRun()
stepperMove_Time=60000;
stepperState=true; //activate stepperRun() function
stepper_Millis=millis();
else{
//do nothing if else a.k.a the conveyor Cleaning is false or not called
}
}
//========================================================================
}//===============//end of conveyorCleaning()===============
//---------------//start of pourSingleFeed()---------------
//this function will do pourOnce() function once
void pourSingleFeed(){
if(pourSingleFeed_state==true){
if(counterSingle<1){
if((millis()-counterSingle_Millis)>=pourDelaySingle){
counterSingle_Millis=millis();
pourOnce_State=true;
pourOnce_Millis=millis();
counterSingle++;
}
}
if(counterSingle==1){
counterSingle=0;
pourSingleFeed_state=false;
}
if (counterSingle==1){
pourDelaySingle=20000; //wait 20 seconds before spoon1 down
spoon1.write(spoon1up);
spoon2.write(spoon2down);
}
if (counterSingle==0){
spoon1.write(spoon1up);
spoon2.write(spoon2down);
}
}//end if pourSingleFeed_state check
}//end pourSingleFeed()
//===============//end of pourSingleFeed()===============
//---------------//start of pourDoubleFeed()---------------
//this function will do pourOnce() function twice
void pourDoubleFeed(){
if(pourDoubleFeed_state==true){
if(counterDouble<2){
if((millis()-counterDouble_Millis)>=pourDelay){
counterDouble_Millis=millis();
pourOnce_State=true;
pourOnce_Millis=millis();
counterDouble++;
}
}
if(counterDouble==2){
counterDouble=0;
83
pourDoubleFeed_state=false;
}
if (counterDouble==1){
pourDelay=20000; //wait 20 seconds before spoon1 down
spoon1.write(spoon1down);
spoon2.write(spoon2up);
}
if (counterDouble==0){
spoon1.write(spoon1down);
spoon2.write(spoon2down);
}
}//end if pourDoubleFeed_state check
}//end pourDoubleFeed()
//===============//end of pourDoubleFeed()===============
84