MODUL 4

SMART EARLY WARNING SYSTEM KONDISI LINGKUNGAN KANDANG AYAM AKIBAT CUACA EKSTREM BERBASIS STM32 BLUEPILL

1. Pendahuluan [Kembali]

Sistem ini merupakan prototipe smart early warning system yang dirancang untuk memantau kondisi lingkungan kandang ayam secara otomatis dan real-time berbasis mikrokontroler STM32 Blue Pill (STM32F103C8T6). Latar belakang perancangan sistem ini adalah tingginya tingkat kerentanan ternak ayam terhadap perubahan kondisi lingkungan yang ekstrem, seperti fluktuasi suhu yang tajam, paparan gas amonia dari kotoran ternak, serta kondisi cuaca buruk berupa hujan lebat. Oleh karena itu, dibutuhkan sebuah sistem monitoring otomatis yang mampu mendeteksi dan merespons kondisi-kondisi tersebut secara cepat tanpa memerlukan intervensi manual dari peternak.

Sistem ini mengintegrasikan empat sensor utama yang terhubung ke mikrokontroler STM32F103C8T6 melalui jalur ADC dan GPIO. Sensor suhu LM35 digunakan untuk membaca temperatur kandang secara analog, sensor gas MQ-2 berfungsi mendeteksi keberadaan gas amonia hasil dekomposisi kotoran ayam, sensor hujan (rain sensor module) digunakan untuk mendeteksi intensitas curah hujan di sekitar kandang, serta sebuah potensiometer yang digunakan sebagai simulasi input analog tambahan selama tahap pengujian. Seluruh data sensor tersebut diproses oleh STM32 dan ditampilkan secara real-time melalui LCD 16×2 yang terhubung ke mikrokontroler.

Logika kerja sistem didasarkan pada mekanisme ambang batas (threshold-based control). Apabila suhu kandang terdeteksi berada di bawah 18°C, sistem secara otomatis mengaktifkan Relay 1 untuk menghidupkan lampu pemanas guna menjaga suhu kandang tetap dalam rentang yang aman bagi pertumbuhan ayam. Sebaliknya, apabila suhu terdeteksi melebihi 35°C, sistem mengaktifkan Relay 2 untuk menghidupkan kipas angin sebagai upaya pendinginan kandang. Selain pengaturan suhu, sistem juga dilengkapi mekanisme peringatan dini berupa buzzer yang akan berbunyi secara otomatis apabila sensor MQ-2 mendeteksi kadar gas amonia yang melebihi batas aman, maupun apabila sensor hujan mendeteksi intensitas curah hujan yang tinggi yang berpotensi menyebabkan kelembapan kandang melonjak drastis.

Pengembangan firmware sistem ini dilakukan menggunakan STM32CubeIDE sebagai lingkungan pengembangan terintegrasi (Integrated Development Environment), dengan memanfaatkan library HAL (Hardware Abstraction Layer) bawaan STM32 untuk konfigurasi peripheral ADC, GPIO, dan timer. Kode program ditulis dalam bahasa C, dikompilasi, lalu di-flash langsung ke mikrokontroler STM32 Blue Pill melalui antarmuka ST-Link. Sementara itu, tahap simulasi dan verifikasi rangkaian dilakukan menggunakan software Proteus Design Suite, yang memungkinkan pengujian keseluruhan sistem mulai dari skematik rangkaian, respons sensor, hingga perilaku aktuator  secara virtual sebelum diimplementasikan pada hardware nyata.

2. Tujuan [Kembali]

1. Merancang dan mengimplementasikan Smart Early Warning System berbasis mikrokontroler STM32F103C8T6 BluePill untuk memantau kondisi lingkungan kandang ayam secara real-time sebagai upaya mitigasi dampak cuaca ekstrem terhadap kesehatan dan produktivitas ternak.

2. Mengintegrasikan beberapa sensor lingkungan yang terdiri dari Rain Sensor YL-83 untuk mendeteksi kondisi hujan, Sensor LM35 untuk mengukur suhu lingkungan kandang, dan Sensor MQ-135 untuk memantau kualitas udara serta konsentrasi gas yang berpotensi membahayakan ayam ke dalam satu sistem pemantauan terpadu.

3. Menerapkan sistem pengolahan data sensor pada STM32 BluePill untuk menganalisis perubahan parameter lingkungan kandang dan menentukan tingkat kondisi lingkungan berdasarkan kategori aman, waspada, dan bahaya akibat pengaruh cuaca ekstrem.

4. Menampilkan informasi kondisi lingkungan kandang secara langsung melalui LCD 16×2 dengan modul I2C sehingga peternak dapat memantau nilai suhu, kualitas udara, dan status cuaca secara mudah dan cepat.

5. Memberikan peringatan dini yang responsif melalui LED Indicator sebagai penanda tingkat kondisi lingkungan serta Buzzer 5V sebagai alarm ketika parameter lingkungan melebihi batas aman yang telah ditentukan.

6. Meningkatkan efektivitas pemantauan kondisi kandang ayam dan mempercepat tindakan penanganan oleh peternak melalui sistem peringatan dini otomatis guna mengurangi risiko stres, gangguan kesehatan, dan kematian ayam akibat perubahan cuaca ekstrem.

3. Alat dan Komponen [Kembali]

1. STM32F103C8T6




2. Rain Sensor YL-83



3. Sensor MQ-135



4. Sensor LM35



5. LCD 16x2 dengan Modul I2C


6. Buzzer 5V

7. Relay




8. Software Pendukung (STM32CubeIDE)



4. Landasan Teori [Kembali]

4.1 Sistem Peringatan Dini (Early Warning System)

Early Warning System (EWS) merupakan suatu sistem yang dirancang untuk mendeteksi kondisi berbahaya secara dini dan memberikan informasi atau peringatan kepada pengguna agar tindakan pencegahan dapat segera dilakukan. Sistem ini umumnya memanfaatkan sensor untuk memantau parameter tertentu secara real-time, kemudian mengolah data tersebut untuk menghasilkan notifikasi apabila terjadi kondisi yang melebihi batas aman.

Dalam bidang peternakan, sistem peringatan dini berperan penting dalam menjaga kondisi lingkungan kandang agar tetap berada pada kondisi optimal. Dengan adanya sistem ini, peternak dapat mengetahui perubahan suhu, kelembaban, curah hujan, maupun kualitas udara secara cepat sehingga risiko kerugian akibat kematian ternak dapat diminimalkan.

4.2 Cuaca Hidrometeorologi dan Dampaknya terhadap Peternakan Ayam

Cuaca hidrometeorologi merupakan kondisi cuaca yang berkaitan dengan unsur meteorologi dan hidrologi seperti hujan, kelembaban udara, suhu, serta angin. Fenomena cuaca ekstrem seperti hujan lebat dan peningkatan kelembaban udara dapat memberikan dampak negatif terhadap kesehatan ayam.

Suhu lingkungan yang terlalu tinggi dapat menyebabkan heat stress yang mengakibatkan penurunan konsumsi pakan, gangguan pertumbuhan, serta penurunan produktivitas ayam. Selain itu, kelembaban yang tinggi dapat meningkatkan pertumbuhan mikroorganisme penyebab penyakit dan mempercepat pembentukan gas amonia dari kotoran ayam. Oleh karena itu, pemantauan kondisi lingkungan kandang secara terus-menerus menjadi sangat penting untuk menjaga kesehatan ternak.

4.3 Mikrokontroler STM32F103C8T6 (Blue Pill)

STM32F103C8T6 atau yang dikenal sebagai Blue Pill merupakan mikrokontroler berbasis ARM Cortex-M3 yang dikembangkan oleh STMicroelectronics. Mikrokontroler ini memiliki kecepatan hingga 72 MHz, memori Flash sebesar 64 KB, serta berbagai fitur komunikasi seperti UART, SPI, I2C, PWM, dan ADC.

STM32 Blue Pill dipilih sebagai pusat kendali sistem karena memiliki kemampuan pemrosesan yang baik, konsumsi daya yang rendah, serta mendukung integrasi berbagai sensor dan aktuator. Dalam sistem ini, STM32 bertugas membaca data sensor, mengolah data, menentukan status kondisi kandang, serta mengendalikan LCD, LED, dan buzzer.

4.4 Sensor LM35

LM35 merupakan sensor suhu analog yang menghasilkan tegangan keluaran yang berbanding lurus dengan suhu yang terukur. Sensor ini memiliki tingkat akurasi yang cukup baik dan rentang pengukuran suhu sekitar -55°C hingga 150°C. Salah satu keunggulan LM35 adalah hasil pengukuran yang telah terkalibrasi dalam satuan derajat Celcius sehingga tidak memerlukan proses kalibrasi tambahan yang kompleks.

Sensor LM35 menghasilkan perubahan tegangan sebesar 10 mV untuk setiap kenaikan suhu 1°C. Karena menghasilkan sinyal analog, sensor ini memanfaatkan fitur Analog to Digital Converter (ADC) pada mikrokontroler STM32 untuk mengubah sinyal analog menjadi data digital yang dapat diproses sistem.

Pada peternakan ayam, pemantauan suhu sangat penting karena suhu lingkungan yang terlalu tinggi dapat menyebabkan heat stress, menurunkan konsumsi pakan, menghambat pertumbuhan, dan meningkatkan risiko kematian ayam. Oleh karena itu, LM35 digunakan untuk memantau suhu kandang secara real-time sehingga tindakan pencegahan dapat segera dilakukan ketika suhu berada di luar batas normal.



  • Thermal Response (Respons Termal)

Grafik Thermal Response in Still Air dan Thermal Response in Stirred Oil Bath menunjukkan kemampuan LM35 dalam mengikuti perubahan suhu lingkungan terhadap waktu. Pada kedua grafik terlihat bahwa keluaran sensor meningkat secara eksponensial hingga mencapai kondisi stabil (steady state).

Nilai T0-63 yang ditunjukkan pada grafik merupakan waktu yang dibutuhkan sensor untuk mencapai sekitar 63% dari perubahan suhu total yang terjadi. Sedangkan T0-90 menunjukkan waktu yang diperlukan sensor untuk mencapai sekitar 90% dari suhu akhir.

Berdasarkan grafik tersebut, respons LM35 dalam media cair (stirred oil bath) lebih cepat dibandingkan pada udara diam (still air) karena perpindahan panas pada cairan lebih efektif daripada udara. Karakteristik ini menunjukkan bahwa sensor LM35 memiliki kemampuan mengikuti perubahan suhu secara bertahap hingga mencapai kondisi kesetimbangan termal.

  • Thermal Time Constant (Konstanta Waktu Termal)

Grafik Thermal Time Constant vs Air Velocity menunjukkan hubungan antara kecepatan aliran udara dan kecepatan respons sensor.

Terlihat bahwa semakin tinggi kecepatan aliran udara, nilai konstanta waktu termal semakin kecil. Hal ini berarti sensor dapat mendeteksi perubahan suhu lebih cepat karena proses perpindahan panas dari lingkungan ke sensor berlangsung lebih efektif.

Karakteristik ini penting pada aplikasi pemantauan suhu lingkungan kandang ayam karena ventilasi udara dapat memengaruhi kecepatan sensor dalam membaca perubahan suhu.

  •  Accuracy vs Temperature (Akurasi terhadap Suhu)

Grafik Accuracy vs Temperature menunjukkan tingkat kesalahan pengukuran LM35 pada berbagai rentang suhu.

Berdasarkan grafik tersebut, kesalahan pengukuran umumnya berada di sekitar ±0,5°C hingga ±1°C pada suhu ruang dan dapat meningkat pada suhu yang sangat rendah atau sangat tinggi. Grafik ini menunjukkan bahwa LM35 memiliki akurasi yang cukup baik untuk aplikasi monitoring lingkungan karena rentang kesalahan relatif kecil dibandingkan perubahan suhu yang diamati.

Dalam sistem pemantauan kandang ayam, tingkat akurasi tersebut sudah memadai untuk mendeteksi kondisi suhu normal, waspada, maupun bahaya.

4.5 Sensor Hujan (Rain Sensor)

Rain Sensor merupakan sensor yang digunakan untuk mendeteksi keberadaan air hujan pada permukaannya. Sensor ini bekerja berdasarkan perubahan resistansi atau konduktivitas listrik akibat adanya tetesan air.

Dalam sistem yang dirancang, Rain Sensor berfungsi untuk mendeteksi intensitas hujan di sekitar kandang ayam. Informasi ini digunakan sebagai indikator awal potensi peningkatan kelembaban lingkungan, genangan air, maupun risiko banjir yang dapat mengganggu kenyamanan dan kesehatan ternak.

4.6 Sensor Gas MQ-135

MQ-135 merupakan sensor gas yang mampu mendeteksi berbagai jenis gas seperti amonia (NH₃), karbon dioksida (CO₂), benzena, dan beberapa senyawa organik lainnya. Sensor ini menghasilkan sinyal analog yang dapat dibaca oleh ADC pada mikrokontroler.

Dalam kandang ayam, gas amonia berasal dari proses penguraian kotoran ayam. Konsentrasi amonia yang tinggi dapat menyebabkan iritasi saluran pernapasan, menurunkan produktivitas, serta meningkatkan risiko penyakit pada ayam. Oleh karena itu, pemantauan kadar amonia menjadi salah satu parameter penting dalam menjaga kualitas udara kandang.

 Typical Sensitivity Curve (Kurva Sensitivitas)

Pada Gambar 3 (Typical Sensitivity Curve) ditunjukkan hubungan antara konsentrasi gas (ppm) dengan rasio resistansi sensor terhadap resistansi referensi (Rs/Ro).

Keterangan:

  • Rs = resistansi sensor saat mendeteksi gas.
  • Ro = resistansi sensor pada kondisi referensi.

Grafik menunjukkan bahwa semakin tinggi konsentrasi gas, nilai Rs/Ro semakin kecil.

Untuk gas amonia (NH₃), kurva memiliki kecenderungan menurun yang berarti:

  • Konsentrasi NH₃ meningkat
  • Resistansi sensor menurun
  • Tegangan output meningkat
  • Nilai ADC meningkat

Karakteristik ini menunjukkan bahwa MQ-135 memiliki sensitivitas yang baik terhadap perubahan konsentrasi amonia dalam rentang puluhan hingga ribuan ppm.

Interpretasi untuk Proyek

Pada kandang ayam:

  • Kotoran ayam menghasilkan gas NH₃.
  • Semakin banyak akumulasi kotoran dan kelembaban tinggi, kadar NH₃ meningkat.
  • Sensor akan menghasilkan perubahan tegangan yang dapat digunakan sebagai indikator kualitas udara.
Typical Temperature and Humidity Characteristics

Pada Gambar 4 diperlihatkan pengaruh suhu dan kelembaban terhadap nilai Rs/Ro.

Terdapat tiga kondisi kelembaban:

  • 30% RH
  • 60% RH
  • 85% RH

Grafik menunjukkan bahwa:

  • Ketika suhu meningkat, nilai Rs/Ro cenderung menurun.
  • Pada kelembaban yang lebih tinggi, respons sensor menjadi lebih besar.

Artinya, pembacaan MQ-135 dipengaruhi oleh kondisi lingkungan.

Interpretasi

Pada kandang ayam:

  • Saat hujan, kelembaban meningkat.
  • Nilai pembacaan sensor dapat berubah meskipun konsentrasi NH₃ tetap.
  • Oleh karena itu, data MQ-135 sebaiknya dianalisis bersamaan dengan kondisi suhu dan cuaca.
Sensitivity Curve (Output Voltage vs Concentration)

Pada Gambar 5 ditunjukkan hubungan antara konsentrasi gas dan tegangan keluaran sensor.

Grafik memperlihatkan bahwa:

  • Pada konsentrasi rendah, kenaikan tegangan berlangsung cepat.
  • Pada konsentrasi tinggi, kenaikan tegangan mulai melandai.

Karakteristik ini menunjukkan hubungan non-linear antara konsentrasi gas dan tegangan keluaran.

Analisis

Semakin tinggi kadar amonia:

  • Tegangan output meningkat.
  • Nilai ADC meningkat.
  • Namun kenaikannya tidak berbentuk garis lurus.

Karena itu diperlukan proses kalibrasi apabila ingin mengonversi ADC menjadi satuan ppm secara akurat.

Response and Resume Characteristics

Pada Gambar 6 diperlihatkan respons sensor ketika dimasukkan ke lingkungan yang mengandung gas target dan ketika gas tersebut dihilangkan.

Grafik menunjukkan:

Fase Respons

Ketika sensor terkena gas:

  • Tegangan keluaran meningkat dengan cepat.
  • Sensor mendeteksi keberadaan gas dalam beberapa detik.
Fase Recovery (Resume)

Ketika gas dihilangkan:

  • Tegangan keluaran kembali turun secara bertahap.
  • Sensor membutuhkan waktu tertentu untuk kembali ke kondisi awal.

Karakteristik ini menunjukkan bahwa MQ-135 memiliki kemampuan mendeteksi perubahan kualitas udara secara real-time.

Interpretasi

Dalam sistem kandang ayam:

  • Ketika kadar amonia meningkat, sensor segera memberikan respons.
  • Setelah ventilasi membaik dan kadar amonia turun, pembacaan sensor juga kembali normal.
Long-Term Stability

Grafik menunjukkan bahwa tegangan keluaran sensor relatif stabil selama periode pengujian yang panjang dengan fluktuasi yang kecil.

Hal ini menunjukkan bahwa:

  • Sensor memiliki kestabilan yang baik.
  • Dapat digunakan untuk monitoring kontinu.
  • Tidak mengalami perubahan karakteristik yang signifikan dalam jangka panjang.

4.7 LCD I2C 16×2

LCD I2C 16×2 merupakan perangkat keluaran (output device) yang digunakan untuk menampilkan informasi dalam bentuk karakter. Modul I2C memungkinkan komunikasi hanya menggunakan dua jalur data yaitu SDA (Serial Data) dan SCL (Serial Clock), sehingga penggunaan pin mikrokontroler menjadi lebih efisien.

Pada sistem ini, LCD digunakan untuk menampilkan data suhu, kelembaban, status hujan, kadar gas amonia, serta tingkat bahaya yang terdeteksi secara real-time.

4.8 Buzzer

Buzzer merupakan komponen elektronika yang berfungsi menghasilkan suara sebagai indikator peringatan. Buzzer sering digunakan pada sistem alarm karena mampu memberikan notifikasi secara langsung kepada pengguna.

Dalam  sistem ini, buzzer akan aktif ketika kondisi lingkungan kandang berada pada kategori waspada atau bahaya sehingga peternak dapat segera melakukan tindakan penanganan.

4.9 Modul relay Arduino 


Modul Relay Arduino


Modul relay Arduino merupakan perangkat keras yang digunakan untuk mengendalikan perangkat listrik eksternal, seperti motor, lampu, kipas, dan berbagai peralatan elektronik lainnya melalui mikrokontroler Arduino. Modul ini terdiri dari sebuah relay yang dipadukan dengan beberapa komponen pendukung pada sebuah papan sirkuit cetak (PCB), sehingga lebih mudah diintegrasikan ke dalam sistem kendali berbasis Arduino.

Relay sendiri merupakan saklar elektronik yang bekerja berdasarkan prinsip elektromagnetik. Komponen ini dapat menghubungkan atau memutuskan aliran arus listrik melalui sinyal listrik yang diberikan pada bagian kendalinya. Ketika relay menerima sinyal, kontak di dalam relay akan berubah posisi, yaitu dari kondisi terbuka (open) menjadi tertutup (close), atau sebaliknya.

Pada umumnya, modul relay dihubungkan ke papan Arduino melalui pin digital. Cara kerjanya dimulai ketika Arduino mengirimkan sinyal HIGH ke pin kontrol relay. Sinyal tersebut akan mengaktifkan kumparan (coil) elektromagnetik di dalam relay sehingga kontak relay berpindah ke posisi tertutup. Akibatnya, arus listrik dapat mengalir menuju beban yang terhubung pada terminal output relay. Sebaliknya, ketika Arduino mengirimkan sinyal LOW, kumparan relay akan dinonaktifkan sehingga kontak kembali ke posisi terbuka dan aliran arus listrik menuju beban terputus.

Dengan kemampuan tersebut, modul relay banyak digunakan dalam sistem otomasi dan kendali untuk mengoperasikan perangkat bertegangan atau berarus lebih besar yang tidak dapat dikendalikan secara langsung oleh pin keluaran Arduino.

5. Flowchart dan Listing Program [Kembali]

a. Flowchart

b. Listening Program

#include "main.h"

#include <stdio.h>              // Untuk fungsi sprintf

 

/* Private includes ----------------------------------------------------------*/

/* USER CODE BEGIN Includes */

#include "liquidcrystal_i2c.h"   // Library LCD I2C Anda

/* USER CODE END Includes */

 

/* Private variables ---------------------------------------------------------*/

ADC_HandleTypeDef hadc1;

I2C_HandleTypeDef hi2c1;

 

/* Private function prototypes -----------------------------------------------*/

void SystemClock_Config(void);

static void MX_GPIO_Init(void);

static void MX_ADC1_Init(void);

static void MX_I2C1_Init(void);

 

/* USER CODE BEGIN PFP */

uint16_t Baca_ADC_Channel(uint32_t channel);

/* USER CODE END PFP */

 

/* Private user code ---------------------------------------------------------*/

/* USER CODE BEGIN 0 */

uint16_t adc_hujan = 0;

uint16_t adc_gas = 0;

uint16_t adc_suhu = 0;

 

uint32_t intensitas_persen = 0;

uint32_t intensitas_koma = 0;

 

uint32_t gas_persen = 0;

uint32_t gas_koma = 0;

 

float suhu = 0;

 

char buffer_lcd[16];

 

uint32_t timestamp_lcd = 0;

 

/*

0 = Gas

1 = Hujan

2 = Suhu

*/

uint8_t mode_tampilan = 0; // 0 = Tampilan Hujan, 1 = Tampilan Gas

/* USER CODE END 0 */

 

/**

  * @brief  The application entry point.

  * @retval int

  */

int main(void)

{

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */

  HAL_Init();

 

  /* Configure the system clock */

  SystemClock_Config();

 

  /* Initialize all configured peripherals */

  MX_GPIO_Init();

  MX_ADC1_Init();

  MX_I2C1_Init();

 

  /* USER CODE BEGIN 2 */

  // 1. Kalibrasi ADC internal

  HAL_ADCEx_Calibration_Start(&hadc1);

 

  // 2. Inisialisasi LCD I2C (16x2)

  HD44780_Init(2);

  HD44780_Clear();

 

  // Tampilkan pesan pembuka

  HD44780_SetCursor(0, 0);

  HD44780_PrintStr("  SYSTEM READY  ");

  HAL_Delay(1000);

  HD44780_Clear();

 

  // Inisialisasi timer awal untuk pergantian LCD

  timestamp_lcd = HAL_GetTick();

  /* USER CODE END 2 */

 

  /* Infinite loop */

  /* USER CODE BEGIN WHILE */

  while (1)

  {

      // ==========================

      // BACA HUJAN

      // ==========================

 

      adc_hujan =

      Baca_ADC_Channel(

      ADC_CHANNEL_0);

 

      uint32_t balik =

      4095 -

      adc_hujan;

 

      uint32_t hasil =

      (balik*1000)

      /4095;

 

      intensitas_persen =

      hasil/10;

 

      intensitas_koma =

      hasil%10;

 

 

      // ==========================

      // BACA GAS

      // ==========================

 

      adc_gas =

      Baca_ADC_Channel(

      ADC_CHANNEL_2);

 

      hasil =

      (adc_gas*1000)

      /4095;

 

      gas_persen =

      hasil/10;

 

      gas_koma =

      hasil%10;

 

 

      // ==========================

      // BACA LM35

      // ==========================

 

      adc_suhu =

      Baca_ADC_Channel(

      ADC_CHANNEL_4);

 

      float tegangan =

      (

      adc_suhu *

      3.3f

      ) / 4095.0f;

 

      suhu =

      tegangan *

      100.0f;

 

 

      // ==========================

      // OUTPUT PB9

      // ==========================

 

      if(

          intensitas_persen>30

          ||

          gas_persen>50

      )

      {

          HAL_GPIO_WritePin(

          GPIOB,

          GPIO_PIN_9,

          GPIO_PIN_SET);

      }

      else

      {

          HAL_GPIO_WritePin(

          GPIOB,

          GPIO_PIN_9,

          GPIO_PIN_RESET);

      }

 

 

      // ==========================

      // OUTPUT PB1

      // ==========================

 

      if(suhu>30)

      {

          HAL_GPIO_WritePin(

          GPIOB,

          GPIO_PIN_1,

          GPIO_PIN_SET);

      }

      else

      {

          HAL_GPIO_WritePin(

          GPIOB,

          GPIO_PIN_1,

          GPIO_PIN_RESET);

      }

 

 

      // ==========================

      // GANTI TAMPILAN

      // ==========================

 

      if(

      HAL_GetTick()

      -

      timestamp_lcd

      >

      5000

      )

      {

          timestamp_lcd=

          HAL_GetTick();

 

          mode_tampilan++;

 

          if(

          mode_tampilan>2

          )

          {

              mode_tampilan=0;

          }

 

          HD44780_Clear();

      }

 

 

 

      // ==========================

      // MODE GAS

      // ==========================

 

      if(mode_tampilan==0)

      {

          HD44780_SetCursor(0,0);

 

          sprintf(

          buffer_lcd,

          "Gas:%lu.%lu%%",

          gas_persen,

          gas_koma

          );

 

          HD44780_PrintStr(

          buffer_lcd

          );

 

          HD44780_SetCursor(0,1);

 

          if(gas_persen>50)

          {

              HD44780_PrintStr(

              "Kond:GAS"

              );

          }

          else

          {

              HD44780_PrintStr(

              "Kond:SEGAR"

              );

          }

      }

 

 

 

      // ==========================

      // MODE HUJAN

      // ==========================

 

      else if(mode_tampilan==1)

      {

          HD44780_SetCursor(0,0);

 

          sprintf(

          buffer_lcd,

          "Hjn:%lu.%lu%%",

          intensitas_persen,

          intensitas_koma

          );

 

          HD44780_PrintStr(

          buffer_lcd

          );

 

          HD44780_SetCursor(

          0,

          1

          );

 

          if(

          intensitas_persen>50

          )

          {

              HD44780_PrintStr(

              "Kond:BAHAYA"

              );

          }

          else

          {

              HD44780_PrintStr(

              "Kond:AMAN"

              );

          }

      }

 

 

 

      // ==========================

      // MODE SUHU

      // ==========================

 

      else

      {

          uint32_t suhu_utama =

          (uint32_t)suhu;

 

          uint32_t suhu_koma =

          (

              (uint32_t)

              (suhu * 10)

          ) % 10;

 

          HD44780_SetCursor(0,0);

 

          sprintf(

              buffer_lcd,

              "Suhu:%lu.%luC ",

              suhu_utama,

              suhu_koma

          );

 

          HD44780_PrintStr(

              buffer_lcd

          );

 

          HD44780_SetCursor(0,1);

 

          if(suhu > 30)

          {

              HD44780_PrintStr(

              "Kond:PANAS   "

              );

          }

          else

          {

              HD44780_PrintStr(

              "Kond:NORMAL  "

              );

          }

      }

      HAL_Delay(300);

  }

  /* USER CODE END 3 */

}

 

/* USER CODE BEGIN 4 */

/**

  * @brief Fungsi membaca ADC secara spesifik berdasarkan channel yang diinginkan

  * Berfungsi untuk melakukan switching channel dinamis pada single ADC.

  */

uint16_t Baca_ADC_Channel(uint32_t channel)

{

    ADC_ChannelConfTypeDef sConfig = {0};

    uint16_t nilai_raw = 0;

 

    // Atur ulang konfigurasi channel sebelum membaca

    sConfig.Channel = channel;

    sConfig.Rank = ADC_REGULAR_RANK_1;

    sConfig.SamplingTime = ADC_SAMPLETIME_55CYCLES_5;

 

    if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)

    {

        Error_Handler();

    }

 

    // Mulai konversi ADC

    HAL_ADC_Start(&hadc1);

 

    if (HAL_ADC_PollForConversion(&hadc1, 10) == HAL_OK)

    {

        nilai_raw = HAL_ADC_GetValue(&hadc1);

    }

    HAL_ADC_Stop(&hadc1);

 

    return nilai_raw;

}

/* USER CODE END 4 */

 

/**

  * @brief ADC1 Initialization Function

  */

static void MX_ADC1_Init(void)

{

  // Konfigurasi dasar ADC1 dibuat tetap non-scan karena perpindahan channel dikendalikan di fungsi runtime

  hadc1.Instance = ADC1;

  hadc1.Init.ScanConvMode = ADC_SCAN_DISABLE;

  hadc1.Init.ContinuousConvMode = DISABLE;

  hadc1.Init.DiscontinuousConvMode = DISABLE;

  hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START;

  hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;

  hadc1.Init.NbrOfConversion = 1;

  if (HAL_ADC_Init(&hadc1) != HAL_OK)

  {

    Error_Handler();

  }

}

 

/**

  * @brief I2C1 Initialization Function

  */

static void MX_I2C1_Init(void)

{

  hi2c1.Instance = I2C1;

  hi2c1.Init.ClockSpeed = 100000;

  hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2;

  hi2c1.Init.OwnAddress1 = 0;

  hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;

  hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;

  hi2c1.Init.OwnAddress2 = 0;

  hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;

  hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;

  if (HAL_I2C_Init(&hi2c1) != HAL_OK)

  {

    Error_Handler();

  }

}

 

/**

  * @brief GPIO Initialization Function

  */

static void MX_GPIO_Init(void)

{

  GPIO_InitTypeDef GPIO_InitStruct = {0};

 

  /* Enable GPIO Clocks */

  __HAL_RCC_GPIOD_CLK_ENABLE();

  __HAL_RCC_GPIOA_CLK_ENABLE();

  __HAL_RCC_GPIOB_CLK_ENABLE();

 

  /* Set Kondisi Awal Output PB9 ke LOW */

  HAL_GPIO_WritePin(

  GPIOB,

  GPIO_PIN_9 | GPIO_PIN_1,

  GPIO_PIN_RESET

  );

 

  /* Inisialisasi PB9 sebagai Output Push-Pull */

  GPIO_InitStruct.Pin =

  GPIO_PIN_9 |

  GPIO_PIN_1;

  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;

  GPIO_InitStruct.Pull = GPIO_NOPULL;

  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;

  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

}

 

/**

  * @brief System Clock Configuration

  */

void SystemClock_Config(void)

{

  RCC_OscInitTypeDef RCC_OscInitStruct = {0};

  RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};

  RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};

 

  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;

  RCC_OscInitStruct.HSEState = RCC_HSE_ON;

  RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;

  RCC_OscInitStruct.HSIState = RCC_HSI_ON;

  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;

  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;

  RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9;

  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)

  {

    Error_Handler();

  }

 

  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK

                              |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;

  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;

  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;

  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;

  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;

 

  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)

  {

    Error_Handler();

  }

 

  PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC;

  PeriphClkInit.AdcClockSelection = RCC_ADCPCLK2_DIV6;

  if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)

  {

    Error_Handler();

  }

}

 

void Error_Handler(void)

{

  __disable_irq();

  while (1)

  {

  }

}

 

6. Rangkaian Simulasi dan Prinsip Kerja [Kembali]



Sistem ini merupakan prototipe smart early warning system yang dirancang untuk memantau kondisi lingkungan kandang ayam secara otomatis dan real-time berbasis mikrokontroler STM32 Blue Pill (STM32F103C8T6). Latar belakang perancangan sistem ini adalah tingginya tingkat kerentanan ternak ayam terhadap perubahan kondisi lingkungan yang ekstrem, seperti fluktuasi suhu yang tajam, paparan gas amonia dari kotoran ternak, serta kondisi cuaca buruk berupa hujan lebat. Oleh karena itu, dibutuhkan sebuah sistem monitoring otomatis yang mampu mendeteksi dan merespons kondisi-kondisi tersebut secara cepat tanpa memerlukan intervensi manual dari peternak.

Sistem ini mengintegrasikan empat sensor utama yang terhubung ke mikrokontroler STM32F103C8T6 melalui jalur ADC dan GPIO. Sensor suhu LM35 digunakan untuk membaca temperatur kandang secara analog, sensor gas MQ-2 berfungsi mendeteksi keberadaan gas amonia hasil dekomposisi kotoran ayam, sensor hujan (rain sensor module) digunakan untuk mendeteksi intensitas curah hujan di sekitar kandang, serta sebuah potensiometer yang digunakan sebagai simulasi input analog tambahan selama tahap pengujian. Seluruh data sensor tersebut diproses oleh STM32 dan ditampilkan secara real-time melalui LCD 16×2 yang terhubung ke mikrokontroler.

Logika kerja sistem didasarkan pada mekanisme ambang batas (threshold-based control). Apabila suhu kandang terdeteksi berada di bawah 18°C, sistem secara otomatis mengaktifkan Relay 1 untuk menghidupkan lampu pemanas guna menjaga suhu kandang tetap dalam rentang yang aman bagi pertumbuhan ayam. Sebaliknya, apabila suhu terdeteksi melebihi 35°C, sistem mengaktifkan Relay 2 untuk menghidupkan kipas angin sebagai upaya pendinginan kandang. Selain pengaturan suhu, sistem juga dilengkapi mekanisme peringatan dini berupa buzzer yang akan berbunyi secara otomatis apabila sensor MQ-2 mendeteksi kadar gas amonia yang melebihi batas aman, maupun apabila sensor hujan mendeteksi intensitas curah hujan yang tinggi yang berpotensi menyebabkan kelembapan kandang melonjak drastis.

Pengembangan firmware sistem ini dilakukan menggunakan STM32CubeIDE sebagai lingkungan pengembangan terintegrasi (Integrated Development Environment), dengan memanfaatkan library HAL (Hardware Abstraction Layer) bawaan STM32 untuk konfigurasi peripheral ADC, GPIO, dan timer. Kode program ditulis dalam bahasa C, dikompilasi, lalu di-flash langsung ke mikrokontroler STM32 Blue Pill melalui antarmuka ST-Link. Sementara itu, tahap simulasi dan verifikasi rangkaian dilakukan menggunakan software Proteus Design Suite, yang memungkinkan pengujian keseluruhan sistem  mulai dari skematik rangkaian, respons sensor, hingga perilaku aktuator  secara virtual sebelum diimplementasikan pada hardware nyata.


7. Kesimpulan Dan Saran[Kembali]

Kesimpulan

  1. Smart Early Warning System berbasis STM32 Blue Pill dapat digunakan untuk memantau kondisi lingkungan kandang ayam secara otomatis dan real-time melalui pembacaan sensor suhu, kelembaban, hujan, dan kadar gas amonia.
  2. Sensor DHT22, Rain Sensor, dan MQ-135 mampu memberikan data lingkungan yang diperlukan untuk mendeteksi kondisi kandang yang berpotensi membahayakan kesehatan dan produktivitas ayam.
  3. STM32F103C8 (Blue Pill) berfungsi sebagai pusat pengolahan data yang mengintegrasikan seluruh sensor dan perangkat keluaran sehingga sistem dapat bekerja secara terkoordinasi.
  4. LCD I2C 16×2 mampu menampilkan informasi kondisi kandang secara langsung, sedangkan LED indikator dan buzzer berfungsi memberikan peringatan visual dan suara sesuai tingkat kondisi yang terdeteksi.
  5. Sistem dapat mengklasifikasikan kondisi kandang ke dalam tiga kategori, yaitu normal, waspada, dan bahaya, berdasarkan parameter suhu, kelembaban, intensitas hujan, dan kadar amonia yang telah ditentukan.
  6. Implementasi sistem ini berpotensi membantu peternak dalam melakukan tindakan pencegahan lebih cepat sehingga dapat mengurangi risiko stres, penyakit, penurunan produktivitas, maupun kematian ayam akibat perubahan cuaca hidrometeorologi.

Saran

  1. Menambahkan modul komunikasi berbasis IoT seperti ESP8266, ESP32, atau LoRa agar data kondisi kandang dapat dipantau dari jarak jauh melalui smartphone maupun komputer.
  2. Menambahkan sensor pendukung lainnya, seperti sensor ketinggian air, sensor kecepatan angin, atau sensor intensitas cahaya untuk meningkatkan kemampuan monitoring lingkungan kandang.
  3. Mengembangkan sistem dengan fitur penyimpanan data (data logging) sehingga riwayat kondisi lingkungan kandang dapat dianalisis untuk mendukung pengambilan keputusan peternakan.
  4. Menambahkan aktuator otomatis, seperti kipas ventilasi, exhaust fan, atau sistem penyemprot air (mist system) yang dapat bekerja secara otomatis ketika kondisi kandang berada pada status waspada atau bahaya.
  5. Melakukan kalibrasi sensor secara berkala untuk menjaga akurasi pengukuran suhu, kelembaban, curah hujan, dan kadar gas amonia.
  6. Melakukan pengujian sistem pada kondisi kandang yang sebenarnya dalam jangka waktu yang lebih panjang agar dapat diketahui tingkat keandalan dan efektivitas sistem dalam menghadapi berbagai kondisi cuaca hidrometeorologi.

8. Download File [Kembali]

  1. Datasheet STM 32F103C8T6 [klik disini]
  2. Datasheet Rain Sensor YL-83 [klik disini]
  3. Datasheet LCD 16x2 dengan Modul I2C [klik disini]
  4. Datasheet LED  [klik disini]
  5. Datasheet Buzzer [klik disini]
  6. Datasheet LM35 [klik disini]
  7. Datasheet MQ-135 [klik disini]
  8. Rangkaian Proteus [klik disini]

Komentar

Postingan populer dari blog ini

TUGAS BESAR

MODUL 1

MODUL 1