Semua Tentang Belajar Teknologi Digital Dalam Kehidupan Sehari - Hari

  • IC Timer 555 yang Multifungsi

    IC timer 555 adalah sirkuit terpadu (chip) yang digunakan dalam berbagai pembangkit timer, pulsa dan aplikasi osilator. Komponen ini digunakan secara luas, berkat kemudahan dalam penggunaan, harga rendah dan stabilitas yang baik

  • Data Science

    Mengulik Digitalisasi data statistik dengan bantuan python untuk pemanfaatan di bidang transportasi, kesehatan, keuangan dan masih banyak lagi

  • Artificial Intelligence - Pengenalan Object

    Menghadirkan pemanfaatan AI dengan praktek-praktek yang mudah diikuti - cocok untuk mahasiswa yang mencari ide tugas akhir

  • JAM DIGITAL 6 DIGIT TANPA MICRO FULL CMOS

    Jika anda pencinta IC TTL datau CMOS maka project jam digital ini akan menunjukkan bahwa tidak ada salahnya balik kembali ke dasar elektronika digital , sebab semuanya BISA dibuat dengan teknologi jadul

  • Node Red - Kontrol Industri 4.0

    Teknologi kontrol sudah melampaui ekspektasi semua orang dan dengan kemajuan dunia elektronika, kini semakin leluasa berkreasi melalui Node Red

Tampilkan postingan dengan label mikrokontroler. Tampilkan semua postingan
Tampilkan postingan dengan label mikrokontroler. Tampilkan semua postingan

Selasa, 23 Desember 2025

Praktek AGV Sequence Controller Bersama D4 TRO UNESA 2025



Perkembangan teknologi otomasi saat ini semakin pesat, terutama dalam bidang sistem kendali berbasis mikrokontroler. Salah satu aplikasi nyata dari otomasi adalah Automated Guided Vehicle (AGV), yaitu kendaraan yang mampu bergerak secara otomatis tanpa pengemudi. Meskipun AGV industri bersifat kompleks, konsep dasarnya dapat dipelajari melalui prototipe sederhana yang menggunakan komponen elektronik dan pemrograman dasar.

Dalam mata kuliah Komputasi Dasar, mahasiswa diperkenalkan pada logika pemrograman dan penerapannya dalam sistem fisik nyata. AGV sederhana yang dikendalikan melalui kode angka (misalnya: 1 = maju, 2 = mundur, dst.) menjadi sarana efektif untuk memahami integrasi antara perintah digital, mikrokontroler, dan aktuator seperti motor. Proyek ini tidak hanya melatih kemampuan komputasi, tetapi juga pemahaman terhadap sistem kendali otomatis yang menjadi fondasi teknologi industri 4.0.


Pengertian AGV



Automated Guided Vehicle (AGV) adalah kendaraan beroda yang mampu melakukan transportasi material secara otomatis tanpa kehadiran pengemudi. Sejak pertama kali dikembangkan pada 1950-an, AGV telah mengalami perkembangan pesat dan kini menjadi komponen penting dalam sistem logistik cerdas era Industri 4.0. AGV banyak digunakan di berbagai sektor, seperti pabrik otomotif, sistem manufaktur fleksibel (FMS), gudang logistik, pelabuhan kontainer, hingga sektor kesehatan. Menurut Guo et al. (2023), AGV modern tidak hanya berfungsi sebagai alat angkut, tetapi juga sebagai bagian dari sistem siber- fisik yang terintegrasi melalui teknologi Internet of Things (IoT). 

Di sisi lain, S ̧enaras et al. (2023) menekankan bahwa AGV berbiaya rendah yang umumnyamenggunakan sensor magnetik dan mengikuti jalur pita magnet di lantai semakin populer di industri kecil menengah karena investasinya lebih terjangkau. Namun, kelemahan utama AGV murah adalah efisiensi rendah akibat sistem yang terdesentralisasi dan hanya melayani satu sirkuit AGV, sehingga waktu tunggu di stasiun produksi tidak dapat dimanfaatkan secara optimal. Dalam konteks pendidikan dan pengembangan teknologi awal seperti pada laporan ini, AGV sederhana menjadi sarana efektif untuk mempelajari prinsip dasar otomasi, navigasi, dan kendali otomatis.


Mikrokontroler dan Perannya dalam Sistem Kendali

Mikrokontroler merupakan komponen inti dalam sistem AGV modern, terutama pada prototipe berbiaya rendah. Ia berfungsi sebagai “otak” yang mengolah input dari pengguna atau sensor, mengeksekusi logika pemrograman, lalu mengirim sinyal ke aktuator seperti motor penggerak. Dalam penelitian Chenet al. (2021), sistem AGV roda omnidirectional dikendalikan menggunakan mikrokontroler Microchip dsPIC30F6010A yang terintegrasi dengan sensor MPU- 9250 untuk memantau kecepatan longitudinal, transversal, dan sudut kemudi. 

Hal ini menunjukkan bahwa mikrokontroler tidak hanya bertindak sebagai penghubung antara perangkat lunak dan keras, tetapi juga sebagai platform untuk implementasi algoritma kendali canggih, seperti estimasi slip dan kompensasi gerakan. Pada AGV sederhana seperti dalam laporan ini, mikrokontroler (misalnya Arduino Uno) digunakan untuk menerima input berupa kode angka melalui antarmuka serial, lalu mentranslasikannya menjadi perintah gerakan spesifik: maju, mundur, belok kiri, atau berhenti. 

S ̧enaras et al. (2023) juga menyebut bahwa AGV berbiaya rendah umumnya menggunakan Programmable Logic Controller (PLC) atau sistem tertanam (embedded system), yang pada dasarnya memiliki fungsi serupa dengan mikrokontroler. Dengan demikian, peran mikrokontroler sangat sentral dalam merealisasikan sistem kendali otomatis yang responsif, fleksibel, dan dapat dipelajari secara langsung dalam lingkungan akademik.


Prinsip Kendali Berbasis Kode Angka




Kendali berbasis kode angka adalah pendekatan alternatif dalam mengoperasikan AGV yang mengandalkan input numerik sebagai perintah gerakan, menggantikan penggunaan remote control konvensional atau sistem navigasi otonom berbasis sensor lingkungan. Dalam sistem ini, setiap angka merepresentasikan aksi spesifik: misalnya, kode 1 untuk maju, 2 untuk mundur, 3 untuk belok kiri, 4 untuk kanan, dan 0 untuk berhenti. Pendekatan ini sangat sesuai untuk prototipe AGV sederhana karena strukturnya ringkas, mudah diprogram, dan tidak memerlukan perangkat keras tambahan yang kompleks.

Meskipun Guo et al. (2023) dan (Åženaras et al., 2023) membahas sistem AGV multi-agen dengan alokasi tugas terdistribusi dan optimisasi armada, prinsip dasar mereka tetap relevan: setiap perintah harus jelas, tidak ambigu, dan dapat diproses secara real-time. Dalam konteks pendidikan, sistem berbasis kode angka memungkinkan mahasiswa memahami secara langsung hubungan antara logika komputasi dan respons fisik. Selain itu, seperti yang dijelaskan oleh (Chen et al., 2021), akurasi gerakan AGV sangat dipengaruhi oleh kemampuan sistem dalam menafsirkan input dan mengkompensasi gangguan seperti slip roda. 

Dengan mengintegrasikan kode angka ke dalam struktur kendali, mahasiswa dapat bereksperimen dengan berbagai skenario gerakan, mengembangkan algoritma sederhana, dan membangun fondasi pemahaman untuk sistem AGV yang lebih kompleks di masa depan.



Diagram Sistem dan Rangkaian



Sistem AGV ini dirancang dengan arsitektur terdesentralisasi sederhana yang terdiri dari tiga subsistem utama: input, pemrosesan, dan output:


1. Input: Sebelum mengirim perintah, pengguna terlebih dahulu harus memastikan bahwa smartphone-nya terhubung ke jaringan WiFi dengan nama "MyAGV", yang merupakan hotspot yang dihasilkan oleh modul WiFi pada AGV. 

Setelah terhubung, pengguna membuka aplikasi browser (misalnya Google Chrome) dan mengakses alamat 192.168.4.1 untuk membuka antarmuka kendali berbasis web. Pada antarmuka tersebut, pengguna dapat menginput kode angka (0–4) secara real-time untuk mengendalikan gerakan AGV. 

Pendekatan berbasis kode diskrit ini menggantikan fungsi remote control fisik, memungkinkan pengguna memberikan perintah gerakan secara eksplisit melalui antarmuka digital. Setiap angka merepresentasikan aksi spesifik misalnya: 1 = maju, 2 = mundur, 3 = belok kiri, 4 = belok kanan, dan 0 = berhenti sehingga memperjelas hubungan langsung antara perintah digital dan respons fisik AGV.

2. Pemrosesan: Mikrokontroler (misalnya ESP32 atau Arduino dengan modul WiFi) berperan sebagai unit kendali terdesentralisasi yang menerima input dari smartphone, mengeksekusi logika pemrograman, lalu menentukan pola gerakan yang sesuai. Mikrokontroler ini berfungsi sebagai “otak lokal” yang memproses perintah secara mandiri, tanpa bergantung pada sistem kendali pusat sesuai dengan prinsip sistem AGV terdistribusi seperti yang diusulkan oleh Guo et al. (2023), di mana setiap agen mampu mengambil keputusan secara otonom.


3. Output: Sinyal digital dari mikrokontroler dikirim ke driver motor yang kemudian mengatur arah dan kecepatan motor DC sesuai perintah. Driver motor berfungsi sebagai aktuator interface yang mengubah sinyal logika dari mikrokontroler menjadi daya listrik yang cukup untuk menggerakkan roda AGV.


PCB Rangkaian remote AGV (bisa dibeli online, jangan rusak aslinya)



Penjelasan merubah RC menjadi Wifi  klik disini .

Desain sistem ini tidak hanya memenuhi kebutuhan pembelajaran dasar komputasi dan otomasi, tetapi juga mencerminkan prinsip efisiensi pada AGV berbiaya rendah. Dengan arsitektur terdesentralisasi, sistem mampu mengurangi ketergantungan pada infrastruktur kendali pusat, sekaligus membuka jalan bagi pengembangan sistem multi-AGV di masa depan sebagaimana ditekankan dalam penelitian S ̧enaras et al. (2023) tentang AGV pools dan alokasi tugas berbasis fleksibilitas lokal.


Penjelasan Kode

Sistem AGV pada laporan ini dikendalikan secara nirkabel melalui komunikasi WiFi. Smartphone pengguna dan mikrokontroler terhubung ke jaringan WiFi yang sama, sehingga perintah berupa kode angka (1–5) dapatdikirim dari smartphone ke AGV secara real-time.


Koding lengkap di github klik disini .


Pada sisi mikrokontroler, program berjalan dalam dua bagian utama:

1. Penerimaan data via WiFi. Mikrokontroler bertindak sebagai server kecil. Ketika smartphone mengirim kode (misal lewat aplikasi sederhana, browser, atau Serial Monitor nirkabel), mikrokontroler menerima data

tersebut dalam bentuk string atau karakter.

2. Eksekusi perintah. Setelah menerima input, program menggunakan struktur if-else atau switch-case untuk menjalankan fungsi gerakan sesuai kode:


o 1 → maju

o 2 → belok kiri

o 3 → belok kanan

o 4 → mundur

o 5 → berhenti


Setiap fungsi mengatur sinyal ke driver motor untuk mengubah arah putaran motor kiri dan kanan. Misalnya, saat menerima kode 3 (belok kiri), motor kiri dijalankan mundur sementara motor kanan maju, sehingga AGV berputar ke kiri.





Untuk pengembangan lebih lanjut, disarankan agar sistem AGV ini ditingkatkan dengan beberapa langkah teknis yang aplikatif. 

Pertama, mengganti protokol komunikasi WiFi dengan Bluetooth Low Energy (BLE) atau ESP-NOW, yang memiliki latensi lebih rendah dan stabilitas lebih baik untuk kendali real- time jarak dekat. 

Kedua, menambahkan indikator LED sebagai umpan balik langsung saat perintah diterima, sehingga pengguna dapat memastikan status sistem meskipun AGV berada di luar jangkauan pandangan. 

Ketiga, mengimplementasikan buffer parsing sederhana di sisi mikrokontroler untukmemisahkan proses penerimaan data dan eksekusi, guna meningkatkan responsivitas. 

Keempat, dalam tahap lanjut, mengintegrasikan sensor encoder atau MPU-6050 untuk memantau pergerakan roda secara real-time dan menerapkan algoritma kompensasi slip seperti yang diusulkan oleh Chen et al. (2021), sehingga akurasi gerakan dapat ditingkatkan secara signifikan. 

Dengan pengembangan tersebut, AGV sederhana ini tidak hanya menjadi alat pembelajaran komputasi dan otomasi, tetapi juga fondasi konkret menuju sistem logistik cerdas berbasis teknologi terjangkau.


Disadur dari laporan praktek Ambar Arta Nofa, Mahasiswi D4 Teknik Rekayasa Otomotif (2025 I)  Fakultas Vokasi Universitas Negeri Surabaya

Link github dan koleksi laporan lengkap : https://github.com/ahocool-aisi555/AGVRC27Mhz

Share:

Minggu, 01 Desember 2024

[android] IOT via MQTT dan menampilkan Gauge menggunakan quickchart.io

 


Wahh ngapain bahas MQTT dan Aplikasi IOT lagi? Kan sudah pernah tuh bikin grafik yang keren di smartphone ( baca disini ) bahkan sudah sempat dijadikan bahan ujian semester anak D4 Teknik Listrik Unesa. 

Memang sih menurut pandangan sekilas akan terlihat itu lagi dan lagi yang ditulis, namun sadar gak ya ? Kalau apk IOT MQTT panel itu terpaku pada susunan widget yang itu-itu aja dan cenderung kaku dalam tampilan. Merubah font saja pun gak akan bisa. Dan kalau aplikasinya digunakan untuk proyek maka terkesan kurang keren apabila ingin menambahkan logo-gambar-screen lain pada aplikasi. Lalu langkah pertama apa ya setelah berhasil belajar awal mengkreasikan aplikasi android di MIT APP INVENTOR (baca disini) ? Yang pertama akan saya bahas adalah bagaimana menambahkan gauge/meter pada aplikasi.


- Quickchart.io

Ini merupakan website yang lama saya kenal karena sangat bermanfaat dalam membuat grafik secara statis maupun dinamis, dengan library yang opensource maupun berbayar. Jika anda masuk ke websitenya di bagian galery maka akan banyak jenis chart dan grafik yang mungkin kamu perlukan, seperti yang saya temukan yaitu gauge berupa speedometer.


Jadi tinggal mengkreasikan setingan CSS di editor sebelah kiri maka dapat membuat gambar speedometer seperti yang saya contohkan di link yang telah digenerate seperti  berikut :


https://quickchart.io/chart?w=150&h=150&bkg=rgba(246%2C%20241%2C%20241%2C%200.13)&c=%0A%7B%0A%20%20type%3A%20%27gauge%27%2C%0A%20%20data%3A%20%7B%0A%20%20%20%20labels%3A%20%5B%27Kering%27%2C%20%27Sedang%27%2C%20%27Basah%27%5D%2C%0A%20%20%20%20datasets%3A%20%5B%0A%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20data%3A%20%5B30%2C%2070%2C%2099%5D%2C%0A%20%20%20%20%20%20%20%20value%3A%2050%2C%0A%20%20%20%20%20%20%20%20minValue%3A%200%2C%0A%20%20%20%20%20%20%20%20backgroundColor%3A%20%5B%27green%27%2C%20%27orange%27%2C%20%27red%27%5D%2C%0A%20%20%20%20%20%20%20%20borderWidth%3A%202%2C%0A%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%5D%2C%0A%20%20%7D%2C%0A%20%20options%3A%20%7B%0A%20%20%20%20legend%3A%20%7B%0A%20%20%20%20%20%20display%3A%20false%2C%0A%20%20%20%20%7D%2C%0A%20%20%20%20title%3A%20%7B%0A%20%20%20%20%20%20display%3A%20true%2C%0A%20%20%20%20%20%20text%3A%20%27Kelembaban%27%2C%0A%20%20%20%20%7D%2C%0A%20%20%20%20needle%3A%20%7B%0A%20%20%20%20%20%20radiusPercentage%3A%201%2C%0A%20%20%20%20%20%20widthPercentage%3A%205%2C%0A%20%20%20%20%20%20lengthPercentage%3A%2080%2C%0A%20%20%20%20%20%20color%3A%20%27%23000%27%2C%0A%20%20%20%20%7D%2C%0A%20%20%20%20valueLabel%3A%20%7B%0A%20%20%20%20%20%20fontSize%3A%2020%2C%0A%20%20%20%20%20%20backgroundColor%3A%20%27white%27%2C%0A%20%20%20%20%20%20color%3A%20%27%23000%27%2C%0A%20%20%20%20%20%20formatter%3A%20function%20(value%2C%20context)%20%7B%0A%20%20%20%20%20%20%20%20return%20value%20%2B%20%27%20%25%20rH%27%3B%0A%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20bottomMarginPercentage%3A%2060%2C%0A%20%20%20%20%7D%2C%0A%20%20%20%20plugins%3A%20%7B%0A%20%20%20%20%20%20datalabels%3A%20%7B%0A%20%20%20%20%20%20%20%20display%3A%20%27auto%27%2C%0A%20%20%20%20%20%20%20%20formatter%3A%20function%20(value%2C%20context)%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20context.chart.data.labels%5Bcontext.dataIndex%5D%3B%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20color%3A%20%27%23fff%27%2C%0A%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%7D%0A%20%20%7D%0A%7D


Panjang ya ? namun sangat berguna jika kita akan tempelkan di widget browser atau pada MIT APP Inventor dinamakan webviewer. Jika link diatas dimasukkan di address browser akan muncul gambar yang sebeneranya bersesuaian dengan item-item parameter yang ada pada link. coba deh kamu masukkan sendiri ya di browser.


- Component WebViewer

Untuk menampilkan html ataupun browser pada MIT APP Inventor, maka komponen ini menjadi handalannya, baik bisa langsung membuka link internet maupun file html lokalan. Nah karena quickchart.io sangat simple memberikan alamat link grafik beserta parameter yang terpampang jelas, maka cukup dengan memotong bagian dimana value dari gauge akan dimasukkan, maka terpecahkanlah keruwetan yang sehari sebelumnya saya pikir akan susah. Perhatikan deh pemotongan link panjang menjadi 3 bagian block nya webviewer seperti di bawah.


Jadi dengan memotong dengan tepat lalu di join kan ke tiga potongan dengan menyisipkan angka humi maka hasilnya menarik seperti dibawah ini:



- Extension Paho MQTT (link disini)

Ini berguna sebagai tambahan library pada MIT APP Inventor untuk melakukan proses koneksi dan publish maupun subscribe sesuai standar library Paho MQTT. Jadi jika anda yang sudah sering membaca pembahasan saya mengenai MQTT yakin sudah sangat paham polanya. Untuk mempersingkat yang malas cari-cari tulisan saya mengenai mqtt yang dulu-dulu, saya siapkan hardware berupa ESP32 yang terhubung dengan sensor IOT sejuta umat DHT 11 yang akan mengirimkan data sensor ke broker mqtt test.mosquitto.org. Scriptnya seperti berikut :

#include <WiFi.h>
#include <PubSubClient.h> 
#include "DHT.h"


const char *ssid =  "wifiku";   // Gunakan sesuai wifi kamu
const char *pass =  "passwordku";   //

//inisialisasi broker
const char *mqtt_server = "test.mosquitto.org"; //BROKER GRATIS
const int mqtt_port = 1883;
const char *mqtt_user = "";
const char *mqtt_pass = "";
const char *mqtt_client_name = "aisi555keren"; // Client connections random dan gak boleh sama

// Daftar Topik disingkat, karena biasanya panjang-panjang namanya
#define TOPIC "/aisi555/mydata"


// DHT11 configuration
#define DHTPIN 4  // GPIO4 where the DHT11 is connected
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);

//Timer
unsigned long previousMillis = 0;
const long interval = 10000;   // interval pengambilan dht 11
                               // broker gratis jangan cepet2

WiFiClient wclient;            //wifi client terhubung lib pubsub
PubSubClient client(wclient);

void setup() {
    // Initialize Serial for debugging
  Serial.begin(9600);
  Serial.println();

  WiFi.begin(ssid, pass);
  Serial.print("Connecting to WiFi");
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("\nWiFi Terhubung..");
  Serial.print("IP Address: ");
  Serial.println(WiFi.localIP());
  // Start DHT sensor
  client.setServer(mqtt_server, mqtt_port);
  dht.begin();

}
void reconnectmqtt() //function mengatur koneksi ke broker 
{
   
    
      Serial.println("Connecting to MQTT server..");
     
      if (client.connect(mqtt_client_name,mqtt_user, mqtt_pass)) {
        Serial.println("Connected to MQTT server");
      } else {
        Serial.println("Could not connect to MQTT server");   
      }
   
  
}

  void SendTempHumid(){
    //membaca sensor dan mengirim/publish ke topic
    float h = dht.readHumidity();
    float t = dht.readTemperature();

    if (isnan(h) || isnan(t)) {
      Serial.println("Failed to read from DHT sensor!");
      return;
    }
    
    else{
    String pubString ="";
    pubString += "Temp: "; 
    pubString += String(t);
    pubString += " °C ";
    pubString += "Humi: "; 
    pubString += String(h);
    pubString += " %rH";

    
    Serial.println("publish to topic: " );
    Serial.print(TOPIC);
    Serial.print(" : ");
    Serial.println(pubString);
    char message_buff[pubString.length() + 1];
    pubString.toCharArray(message_buff, pubString.length() + 1);
    client.publish(TOPIC,message_buff );

    }

  }
void loop() {

 if (!client.connected()) 
   {
    reconnectmqtt();
   }

  
  unsigned long currentMillis = millis();
 
  if(currentMillis - previousMillis >= interval) {
    // cek interval  
    previousMillis = currentMillis;   

   SendTempHumid();
  }

}

Dan jika benar kreasi hardware dan koneksi mqtt nya dapat diuji pada aplikasi MQTT di PC maupun di  smartphone.


Pada bagian designer MIT APP Inventor dapat disetting langsung parameter broker mqtt nya dari extension paho mqtt atau juga bisa dilakukan ada bagian block. 


- Block Screen Initial


Maksudnya adaah koneksi ke broker mqtt dimulai saat layar selesai dimuat.


- Block status koneksi broker dan subscribe topik



Block ini berisikan satus dari koneksi ke broker dimana 0= terputus, 1 = menghubungkan, 2= terhubung, 3= sedang memutus, 4=koneksi abort. Jadi saya bikinkan kondisi IF..Then..Else dimana jika kondisi koneksi selain terhubung maka segera menyambungkannya kembali. Bisa juga di kondisikan sesuai keinginan si pembuat yang penting konsepnya adalah akan selalu berusaha menghubungkan ke broker. Sedangkan jika connection state =2 alias terhubung, maka lakukan subscribe ke topic yang digunakan pubsub data. Coding ini saya kondisikan persis logika yang selama ini digunakan pada pubsubclient di arduino.


Update: 


Cara diatas lebih elegan dengan memanfaatkan trigger dari clock1 yang saya settng tiap 5 detik akan melakukan proses pengecekan status koneksi ke broker MQTT lalu menghubungkannya kembali jika koneksi terputus. Variabel "sudah" digunakan untuk menyimpan status /flag apakah broker sudah terhubung atau tidak.



- Block Message Received



Secara gamblang dapat dilihat ketika ada message yang diterima dari topic maka data yang berformat : "Temp: 31.90 °C Humi: 95.00 %rH " akan diextract untuk mendapatkan nilai suhu dan kelembaban. Sedangkan nilai-nilai lainnya hampir mirip dengan tulisan sebelumnya, namun dibedakan adalah penulisan grafik yang terdahulu menggunakan trigger clock1 tiap 1 detik sedangkan kali ini akan diproses setelah message dari broker diterima. Karena hanya 1 topic yang diolah maka sederhana saja hanya melakukan pengolahan atau parsing data text saja. Selanjutnya hasil aplikasi IOT nya dapat dilihat pada gambar paling atas.


Bagaimana ? Selamat mencoba kawan


Share:

Rabu, 20 September 2023

[Tutorial] Dasar Input Analog Mikrokontroler - Output ke Led Strip WS2812

 


Kita lanjutkan pembelajaran kali ini bersama dengan kuliah mikrokontroler mahasiswa teknik listrik unesa surabaya, dengan topik analog input. Sebagai mana kita bahas sebelumnya, sketch arduino sudah memiliki contoh-contoh program yang bisa dilihat pada sketch langsung atau pada website arduino.cc . Saya sekarang akan mengambil sebuah potensiometer yang bisa digunakan pada pengatur volume audio dan saya buat sebagai rangkaian pembagi tegangan 5 volt.


Catatan : Jika pake esp8266 maka tegangan 0 - 3,3 volt


A0 sampai A5 merupakan analog input dari arduino dimana memiliki range tegangan yang di ijinkan 0-5 volt. Resolusi atau kerapatan data bit nya adalah 10 bit, sehingga 5 volt diwakili oleh binari 0b1111111111 atau desimal 1023. Dari rumus matematika  sederhana dengan membagi 5 volt dengan 1023,  maka kita bisa membuat voltmeter sederhana dan bisa membaca tegangan yang diberikan oleh pin tengah dari potensiometer 10 k ohm yang saya gunakan. Silahkan coba script berikut ini :


#define ADC_PIN 1   //pin ADC 

float tegangan ;  //variabel tegangan desimal


void setup() {

  //pakai monitor serial

  Serial.begin(9600);

}


void loop() {


   //resolusi per bit = 5v/1023 = 0.0049 volt

   //baca ADC

   tegangan = analogRead(ADC_PIN) * 0.0049;

 

   //kirimkan output pembacaan ke serial

   Serial.print( "Tegangan = ");

   Serial.print( String(tegangan,2) );

   Serial.println (" volt");

    

  delay(100); 

  

}





Dari hasil diatas dapat dilihat perubahan tiap bit mewakili 4.9 miliVolt. Lalu bagaimana membuatnya lebih menarik ? Kita gunakan Led Strip ws2812b yang lagi ngetop belakangan ini. Untuk itu baca dulu pembahasan di blog yang saya temukan di internet disini.

Saya telah membeli 30 buah led ws2812b seharga 900 rupiah sebiji dan saya rangkai dengan arduino pro mini milik saya. Bisa menggunakan arduino jenis lain maupun esp8266 yang dimiliki, dan usahakan jika lednya banyak maka gunakanlah power suply 5 volt terpisah seperti pada gambar dibawah ini :




*) gunakan resistor 330 ohm sebagai pengaman agar led awal tidak cepat rusak


Koding yang saya gunakan adalah sebagai berikut :


#include <Adafruit_NeoPixel.h> //library


#define LED_PIN 4         //sesuaikan pin data

#define LED_COUNT 30      //sesuaikan jumlah led


Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);


int posisi_led;     //variabel posisi led


void setup() {

//inisialisasi led strip 

  strip.begin();           

  strip.setBrightness(30); 


}


void loop() {

      

 // baca adc port A1 , sesuaikan

 //34 ==> pembulatan 1023/30LED

  

 posisi_led = analogRead(1)/34;

 

  strip.clear();

  strip.setPixelColor(posisi_led, 255, 255, 255);

  strip.show();   

 

  delay(100); 

  

}


Hasil dari coding diatas dapat dilihat pada animasi paling atas. Selamat Mencoba !! 

Share:

Kontak Penulis



12179018.png (60×60)
+6281331339072

Mail : ahocool@gmail.com

Site View

Categories

555 (8) 7 segmen (3) adc (4) amplifier (2) analog (19) android (14) antares (11) arduino (29) artikel (11) attiny (3) attiny2313 (19) audio (8) baterai (5) blog (1) bluetooth (1) chatgpt (2) cmos (2) crypto (2) dasar (46) digital (11) dimmer (5) display (3) esp32 (3) esp8266 (31) euro2020 (13) gcc (1) gis (3) gsm (1) iklan (1) infrared (2) Input Output (3) iot (79) jam (7) jualan (12) kereta api (1) keyboard (1) keypad (3) kios pulsa (2) kit (6) komponen (17) komputer (3) komunikasi (1) kontrol (8) lain-lain (8) lcd (2) led (14) led matrix (6) line tracer (1) lm35 (1) lora (11) lorawan (2) MATV (1) memory (1) metal detector (4) microcontroller (70) micropython (6) mikrokontroler (3) mikrokontroller (14) mikrotik (5) modbus (9) mqtt (4) ninmedia (5) ntp (1) openwrt (3) paket belajar (19) palang pintu otomatis (1) parabola (88) pcb (2) power (1) praktek (2) project (37) proyek (1) python (11) radio (31) raspberry pi (9) remote (1) revisi (1) rfid (1) robot (1) rpm (2) rs232 (1) script break down (3) sdcard (3) SDR (3) sensor (2) sharing (3) signage (1) sinyal (1) sms (6) software (18) solar (1) solusi (1) statistik (5) tachometer (2) technology (1) teknologi (2) telegram (2) telepon (9) televisi (167) television (28) telkomiot (5) transistor (2) troubleshoot (3) tulisan (96) tutorial (108) tv digital (6) tvri (2) unesa (10) vu meter (2) vumeter (2) wav player (3) wayang (1) wifi (6) yolo (10)

Arsip Blog

Diskusi


kaskus
Forum Hobby Elektronika