• MUHILHAM • Electronics Hobbyist and Maker
  • Shop
  • Sitemap
  • Portfolio
  • Jasa Custom Project





  • Arduino Arduino Tutorial Elektronika

    Arduino Tutorial : Analog Input Potentiometer

    MUHAMMAD ILHAM 1 Comment


    Pada tutorial arduino kali ini kita akan masuk pada pembelajaran mengenai cara membaca data analog tegangan pada pin input analog arduino. Adapun arduino yang digunakan pada percobaan kali ini menggunakan Arduino Uno R3 dimana mikrokontroler ini memiliki 6 buah pin Analog Input dengan nama pin A0 - A5.


    Pada pin analog A0 - A5 dapat diberikan tegangan antara 0 s.d 5 vdc. Pin ini merupakan pin Analog to Digital Converter atau ADC pada ATmega, tegangan 0 s.d 5 vdc akan diubah menjadi data integer 0 s.d 1023 atau 10 bit.

    Langsung saja kita mulai experimen penggunaan Analog Input pada arduino. Adapun komponen yang diperlukan pada experimen ini adalah sebagai berikut.
    • 1x Arduino Uno R3 Board
    • 1x Breadboard
    • 1x Potentiometer
    • 1x LED or built in LED pin 13
    • Jumper Wires
    Wiring Diagram

    Wiring explanation
    Satu buah LED terhubung dengan pin 13 arduino. note: jika tanpa menggunakan led tambahan juga sudah bisa melakukan percobaan ini dikarenakan pada pin 13 sudah ada built in led yang akan menyala sesuai dengan kondisi pin tersebut.

    Sebuah potensiometer (variable resistor) yang terhubung pada pin analog A0. Dimana pada saat potensio diputar maka tegangan yang masuk pada pin analog arduino akan berubah-ubah. note: nilai resistansi potensio bebas, semakin besar nilai resistansi maka range perubahan nilai akan lebih lebar.

    Sketch Arduino
    
    
    int potentioPin = A0; // memilih pin analog yang digunakan (A0 - A5)
    int ledPin = 13;      // memilih pin untuk output LED
    int analogValue = 0;  // variabel untuk pembacaan data analog
    
    void setup() {
      Serial.begin(9600); // inisisalisai serial monitor
      pinMode(ledPin, OUTPUT); // inisialisali pin sebagai output (LED)
    }
    
    void loop() {
      analogValue = analogRead(potentioPin); // membaca data analog pada dan di masukkan pada variabel "analog value"
      // menampilkan data analog pada serial monitor
      Serial.print("Analog value : ");
      Serial.println(analogValue);
      
      digitalWrite(ledPin, HIGH); // menghidupkan LED
      delay(analogValue); // waktu tunda (sesuai dengan nilai analog)
      digitalWrite(ledPin, LOW);  // mematiakan LED
      delay(analogValue); // waktu tunda (sesuai dengan nilai analog)
    }
    

    Silahkan buka Serial Monitor untuk melihat nilai analog dari potensiometer.

    Sketch explanation
    • Pada baris 1 s.d 4 merupakan inisialisasi variabel global.
    • Pada baris 11 terdapat sintaks analogRead(potentioPin) yang merupakan perintah untuk merubah nilai tegangan 0 s.d 5 volt ke nilai analog 0 s.d 1023, artinya ketika potensio diputar hingga resitansi tertinggi maka nilai tegangan akan menyentuh 0 volt dan nilai analog akan mendakati nilai terendah, sedangkan ketika potensio diputar pada resistansi rendah maka nilai tegangan mendekati 5 volt dan nilai analog mendekati nilai tertinggi nya.
    • Pada baris 16 s.d 19 merupakan perintah untuk menghidupkan led dengan kondisi blink  yang menyesuaikan dengan nilai analog yang terbaca, jadi ketika nilai analog rendah maka kecepatan kedip led akan cepat dan kebalikannya ketika nilai analog besar maka led akan berkedip lebih lambat itu dipengaruhi oleh kondisi delay yang diberikan mengikuti nilai analog.

    Jika ada ingin berdiskusi silahkan tinggalkan di kolom komentar, thank you and happy for your experiment..

    Arduino Arduino Tutorial Elektronika

    Arduino Tutorial : Digital Input Output Arduino [LED dan Push Button]

    MUHAMMAD ILHAM 2 Comments


    Pada tutorial arduino kali ini kita akan belajar tentang cara kerja pin arduino pada mode input, input pullup dan output. Pada tutorial arduino ini kita menggunakan Arduino Uno, arduino uno memiliki sebanyak 14 pin digital input-output yaitu pada pin 0 sd 13.

    Jadi setiap kita akan akan menggunakan pin digital arduino sebagai input maupun sebagai output, terlebih dahulu kita harus mengatur mode pin tersebut. Mode pin ini diatur pada void setup() dengan menggunakan sintaks pinMode(pin, mode). Berikut kita bahas setiap mode input output pada arduino.

    Mode Input High Impedance
    Sintaks : pinMode(pin, INPUT);
    Mode input high impedance ini merupakan mode bawaan atau default pin arduino. Pada mode ini seolah-olah terdapat resistor 100 Mega ohm dipasang seri terhadap pin. Ini berarti pada kondisi ini pin membutuh arus yang sedikit untuk merubah kondisi logika, mode ini baik digunakan untuk membaca sensor sentuh kapasitif atau membaca LED sebagai photodioda.

    Mode Input Pullup
    Sintaks : pinMode(pin, INPUT_PULLUP);
    Pada mode ini terdapat internal resistor sebesar 20K pada chip atmega arduino yang diatur melalui program. Resistor pull-up ini diakses dengan mengatur pinMode() sebagai INPUT_PULLUP. Ini berarti berbanding terbalik dengan mode input high impedance, logika HIGH berarti kondisi off dan logika LOW berarti on.

    Jadi saat menggunakan pin sebagai input pull-up, ujung lain dari perangkat komponen sensor atau sebagai contoh pada tombol harus terhubung dengan ground. Contoh digunakan tombol push button, jika tombol tidak ditekan atau kondisi terbuka maka arduino akan membaca kondisi HIGH, dan kondisi LOW saat tombol ditekan. Gambar berikut menunjukkan ilustrasi input pull-up.



    Mode Output
    Sintaks : pinMode(pin, OUTPUT);
    Pada saat pin di set pada mode output, pin akan dalam keadaan low impedance. Ini artinya pin dapat memberikan keluaran arus yang cukup ke rangkaian lain. Pin atmega dapat menjadi source (menghasilkan arus positif) atau sink (menghasilkan arus negatif) sebesar 40 mA (milliamper) ke rangkaian lain.

    Jika arus beban dari rangkaian lain melebihi arus pin atmega, berakibat bisa merusak pin, bahkan dapat merusak ic atmega tersebut. Maka dari itu untuk mengatasinya disarankan memasang resistor 470 ohm atau 1K ohm pada pin output ke rangkaian lain.

    Reference arduino.cc/reference
    IoT STM32

    Monitoring Daya Listrik 3 Phase [3 Phase AC Power Monitoring] - Data Logger

    MUHAMMAD ILHAM 4 Comments


    Artikel kali ini akan membahas tentang sebuah alat untuk monitoring listrik 3 phase, project kali ini menggunakan STM32, diharapkan dengan menggunakan mikrokontroler 32-bit dengan resolusi ADC 12-bit ini data pengukuran akan lebih baik dan untuk koneksi ke internet digunakan modul SIM800L. Data hasil pengukuran akan dikirim ke database mysql sebagai datalogging.

    Project untuk mengukur daya listrik 3 phase ini tergolong cukup ribet dan mahal menurut saya, dikarenakan sensor yang digunakan sebanyak 6 buah, dimana digunakan 3 single phase voltage sensor dan juga 3 sensor untuk arusnya.

    Sensor tegangan yang digunakan ZMPT101B dan SCT-013 untuk sensor arus, SCT-013 merupakan sensor arus berjenis non-kontak dengan sistem clamp, sensor ini cukup baik dari segi instalasi, hanya dengan menjepit pada salah satu kabel, artinya tidak perlu memutus atau mengubah instalasi yang sudah ada.

    Komponen yang digunkan
    • Modul STM32F1 Bluepill
    • Modul SIM800L
    • Modul DC-DC Step Down
    • Sensor Tegangan ZMP101B
    • Sensor Arus SCT103 
    • LCD 16x2 + i2c
    • Kapasitor 10uF
    • Resistor 10K
    • Resistor 330R
    Rangkaian/Electrical Circuit


    PCB Design



    Bagian program untuk mengukur daya listrik 3 phase



    void process_power_data(int16_t channel) {
      int32_t sample_V, sample_I, signed_V, signed_I;
    
      // ----------------------------------------
      // Voltage
      if (channel == 0) sample_V = ADC_DMA_BUFF[0];
      if (channel == 1) sample_V = ADC_DMA_BUFF[1];
      if (channel == 2) sample_V = ADC_DMA_BUFF[2];
      signed_V = sample_V - MID_ADC_READING;
      sum_V[channel] += signed_V;
      sum_V_sq[channel] += signed_V * signed_V;
    
      // ----------------------------------------
      // Current
      if (channel == 0) sample_I = ADC_DMA_BUFF[3];
      if (channel == 1) sample_I = ADC_DMA_BUFF[4];
      if (channel == 2) sample_I = ADC_DMA_BUFF[5];
      signed_I = sample_I - MID_ADC_READING;
      sum_I[channel] += signed_I;
      sum_I_sq[channel] += signed_I * signed_I;
    
      // ----------------------------------------
      // Power
      sum_P[channel] += signed_V * signed_I;
    
      count[channel] ++;
    
      // ----------------------------------------
      // Zero crossing detection
      last_positive_V[channel] = positive_V[channel];
      if (signed_V > 0) positive_V[channel] = true; else positive_V[channel] = false;
      if (last_positive_V[channel] != positive_V[channel]) cycles[channel]++;
    
      // ----------------------------------------
      // Cycle count == cycle set (MAX_CYCLES)
      if (cycles[channel] >= MAX_CYCLES) {
        cycles[channel] = 0;
    
        double Vmean = sum_V[channel] * (1.0 / count[channel]);
        double Imean = sum_I[channel] * (1.0 / count[channel]);
    
        sum_V_sq[channel] *= (1.0 / count[channel]);
        sum_V_sq[channel] -= (Vmean * Vmean);
        Vrms[channel] = V_RATIO[channel] * sqrt((double)sum_V_sq[channel]);
        sum_V[channel] = 0;
        sum_V_sq[channel] = 0;
    
        sum_I_sq[channel] *= (1.0 / count[channel]);
        sum_I_sq[channel] -= (Imean * Imean);
        Irms[channel] = I_RATIO[channel] * sqrt((double)sum_I_sq[channel]);
        sum_I[channel] = 0;
        sum_I_sq[channel] = 0;
    
        double mean_P = (sum_P[channel] * (1.0 / count[channel])) - (Vmean * Imean);
        sum_P[channel] = 0;
        count[channel] = 0;
    
        realPower[channel] = V_RATIO[channel] * I_RATIO[channel] * mean_P;
        apparentPower[channel] = Vrms[channel] * Irms[channel];
        powerFactor[channel] = realPower[channel] / apparentPower[channel];
    
        endMillis[channel] = HAL_GetTick();
        unsigned long timeMs = (endMillis[channel] - startMillis[channel]);
        WattHour[channel] += realPower[channel] * ((double) timeMs / 3600000); // Watt-Hour
        startMillis[channel] = HAL_GetTick();
    
        readings_ready = true;
      }
    }
    

    Pemasangan sensor SCT-013 pada kabel fasa



    Pemasangan sensor ZMPT-101B fasa terhadap neutral (L/N)



    Datalogging database mySQL


    Data pengukuran di kirim ke database menggunakan modul GSM dengan mode GPRS, data diterima oleh webserver hosting dan dimasukkan ke database dengan PHP.


    👉 UNTUK PERTANYAAN ATAU CUSTOM PROJECT 👈



    Pengujian Monitoring Daya Listrik

    Untuk interface digunakan LCD16x2 dengan sebuah tombol yang berfungsi sebagai pengubah tampilan layar lcd, terdapat 4 tampilan layar tegangan, arus, daya aktif (watt) dan konsumsi daya (Wh).

    Tampilan tegangan/voltage


    Tampilan arus/current


    Tampilan daya/power


    Tampilan konsumsi daya (watt hours)


    Video 3 Phase Power Monitoring


    Referensi learn.openenergymonitor.org
    Arduino Arduino Tutorial Elektronika

    Arduino Tutorial : Pengenalan Arduino dan Program LED Berkedip/Blink

    MUHAMMAD ILHAM Comment


    Tulisan ini merupakan pendahuluan dari seri tutorial arduino, pada seri tutorial arduino ini akan membahas tentang bagaimana memprogram board arduino, mulai dari program dasar hingga level yang agak lanjutan mungkin 😁.

    Karena ini merupakan pendahuluan, ada baiknya kita bahas sedikit mengenai Arduino ini dulu. Jadi siapa sih arduino itu? mengapa saya katakan siapa, ya karena Arduino merupakan sebuah nama perusahaan perangkat keras dan perangkat lunak yang bersifat open-source.

    Jadi perusaan ini mengembangkan berbagai macam perangkat keras mikrokontroler mulai dari Entry Level hingga yang bisa digunakan untuk project Internet of Things, untuk jenis-jenis arduino dapat dilihat di website resmi Arduino.

    Berikutnya bagian perangkat lunaknya yaitu Arduino IDE (Integrated Development Environment) merupakan perangkat lunak atau software yang digunakan untuk melakukan pemrograman pada board mikrokontroler arduino. Software ini bisa di download gratis melalui website resmi Arduino.

    Arduino IDE ini berguna sebagai text editor untuk membuat, mengedit, melakukan verifikasi hingga memasukkan kode program ke board Arduino. Untuk melakukan debugging, dengan software arduino ini juga bisa dilakukan menggunakan usb serial komunikasi, fitur ini dinamakan serial monitor.

    Oke, mungkin itu sedikit pembahasan tentang arduino. Kita langsung masuk saja pada tutorial pertama yaitu membuat led hidup berkedip atau led blink.

    Komponen yang dibutuhkan
    • Boad Arduino
    • Papan Breadboard
    • Resistor 330 ohm
    • LED
    • Kabel Jumper
    Rangkaian Electrical/Wiring



    Pin digital D13 arduino dihubungkan dengan kaki anoda led dan kaki katoda diberi tegangan negatif dengan tahanan resistor sebesar 330 ohm.

    Sketch Program LED Blink
    const int LED = 13;
    void setup() {
      pinMode(LED, OUTPUT);
    }
    
    void loop() {
      digitalWrite(LED, HIGH);
      delay(1000);
      digitalWrite(LED, LOW);
      delay(1000);
    }
    


    Setelah program berhasil di upload ke board arduino, maka led akan berkedip setiap satu detik, untuk mengatur waktu tundanya dengan mengganti nilai delay() dengan satuan milidetik.
    IoT

    Sistem Keamanan Rumah Berbasis IoT Dengan Sensor Gerak [Motion Detection]

    MUHAMMAD ILHAM Comment


    Sesuai dengan judul artikel kali ini akan membahas tentang project IoT atau Internet of Things, sistem keamanan rumah berbasis internet of things berarti sebuah sistem keamanan yang terhubung dengan perangkat melalui koneksi internet, artinya perangkat yang terhubung dapat melakukan pemantauan maupun pengendalian melalui jarak jauh dengan syarat adanya koneksi internet tentunya.

    Pemantauan yang dimaksud pada sistem keaman rumah ini adalah memantau pergerakan objek atau dalam hal ini manusia, dimana pada suatu ruangan di pasang sensor dan jika terdeteksi pergerakan maka alat akan memberikan notifikasi atau pesan peringatan pada perangkat yang terhubung, selain itu terdapat juga buzzer pada alat yang akan berbunyi jika mendeteksi pergerakan dan tidak akan mati sebelum dimatikan melalui perangkat yang terhubung.

    Selain sistem keamanan alat ini juga dilengkapi dengan kendali perangkat elektronik, yang berarti dapat mengendalikan dari jarak jauh, contohnya dapat mematikan maupun menghidupkan lampu pada suatu ruangan.

    Pada project kali ini perangkat untuk monitoringnya digunakan smartphone android, kenapa dipilih smartphone karena pada jaman saat ini perangkat seluler tidak bisa terlepas dari kegiatan sehari hari orang - orang dimana akan mempermudah segala urusan mulai dari berkomunikasi dan lain-lain.

    Komponen yang digunakan
    • Modul WiFi Wemos D1
    • Sensor PIR
    • Buzzer
    • Modul Relay
    • Tombol - Tombol dan Switch
    • PCB untuk Rangkaian
    • Power Supply atau Adaptor 5V
    • Black Box
    Rangkaian/Wiring Electrical

    Setelah di rangkai dan di solder


    👉 UNTUK PERTANYAAN ATAU CUSTOM PROJECT 👈



    Video Pengujian Alat
    Arduino Elektronika Robotic

    Line Follower Robot [Type Arduino Nano]

    MUHAMMAD ILHAM 1 Comment

    Line follower robot versi ini di rancang menggunakan Arduino Nano sebagai mikrokontroler utamanya, sebelumnya sudah pernah juga dibahas mengenai robot line follower yang menggunakan kendali pid, yang ingin tahu bagaimana penerapan kontrol pid mungkin bisa dibaca terlebih dahulu Line Follower Robot Using PID Control.

    Selanjutnya ini merupakan line follower versi lanjutan yang dilengkapi dengan fitur tambahan tentunya, line follower versi ini menggunakan mikrokontroler arduino jadi sangat mungkin untuk kita melakukan pengembangan pada sisi pemrograman dikarenakan dengan Arduino IDE sudah sangat dipermudah untuk melakukan akses pin input outputnya, selain itu robot ini juga dilengkapi dengan LCD 16x2 untuk mempermudah dalam penambahan fitur dengan dilengakapi 4 push button sebagai tombol navigasi menu untuk malakukan pengaturan pada robot. Robot ini menggunakan 14 sensor photo dioda serta menggunakan kontrol PID yang membuat pergerakan robot menjadi lebih responsif mengikuti garis.
    Spesifikasi
    • Mikrokontroler Arduino Nano
    • 14 sensor
    • LCD 16x2
    • 4 button setting
    • Dual channel H-Bridge Driver Motor (L293D)
    • Motor DC 12 V
    • Battery LiPo 3S (12V)
    • Ext. [1]. Stick controller/Bluetooth (Control with android) [2]. Flame sensor [3]. Motor DC fan [4]. Motor servo
    Fitur Line Follower Type Nano
    • Menggunakan PID kontroler
    • Setting kalibrasi sensor (auto scan)
    • Setting kecepatan
    • Mode normal
    • Mode manual Joystick
    • Mode manual Bluetooth (aplikasi android)
    • Mode pemadam api (line follower pemdam api manual/auto)
    Gallery LFRobot Type Nano
    Previous Next
    IoT

    Smart Socket Power Meter IoT

    MUHAMMAD ILHAM 5 Comments

    Sedikit intermezzo dulu kali ya, soalnya sudah cukup lama blog ini tidak update lantaran saya sebagai penulis masih berstatus mahasiswa, apalagi saat ini sudah memasuki mahasiswa tingkat akhir, sedikit curhat hehe... :). Dimana pada waktu yang lalu saya disibuk kan dengan Proyek Akhir dimana itu dituntut harus selesai dalam 1 semester alat dengan laporannya dan sidang lolos dengan revisian selesai juga tentunya, kalau tidak yaa harus nambah semester dan yang pasti nambah bayar lagi, tapi alhamdulillah nya alat maupun laporan selesai tepat waktu dan pas pada saat itu dapat jadwal sidang pada hari pertama dan urutan pertama pula, mungkin taulah gimana rasanya :).

    Sebenarnya yang akan dibahas pada artikel kali ini merupakan alat Proyek Akhir yang saya kerjakan dan sebenarnya alat ini sudah selesai pada bulan desember 2018 lalu. Dikarenakan setelah itu masuk di semester berikutnya saya mendapatkan mata kuliah magang industri selama 4 bulan, nah.. tidak tau kenapa baru saat ini lah saya bisa menulis artikel ini, oke mungkin cukup segitu curhatnya :) kelamaan intermezzo sepertinya hehe... ohh iya artikel ini mungkin akan agak sedit panjang penjelasannya dikarenakan memang isinya itu saya ambil dari laporan proyek akhir saya, oke langsung saja kita masuk pada pembahasan.


    Smart socket power meter (kalau di proyek akhir saya judulnya Pengendalian Stop Kontak dan Monitoring Penggunaan Daya Listrik Menggunakan Android) merupakan socket atau stop kontak yang di desain dapat melakukan pengendalian on/off perangkat listrik dari jarak jauh, selain mengendalikan smart socket ini juga mampu memonitoring penggunaan daya listrik pada perangkat listrik yang dihubungkan dengan smart socket power meter ini.

    Sistem pengendalian jarak jauh saat ini dibutuhkan, karena akan mempermudah dalam pengoperasian atau memonitoring dari tempat yang jauh. Smart socket ini merupakan penerapan Internet Of Things (IoT), metode yang digunakan yaitu membangun sebuah sistem yang mampu mengendalikan perangkat listrik sekaligus mengukur parameter daya listrik AC, menggunakan Arduino pada subsistem pengukuran sedangkan pada subsistem kendali dan monitoring jarak jauh menggunakan Wemos D1 Mini sebagai penghubung dengan koneksi internet melalui jaringan Wi-Fi, pada pengendali digunakan TRIAC sebagai switching perangkat listrik, data hasil pengukuran dikirim ke sebuah server realtime database. Adapun media interface yang digunakan adalah smartphone Android dengan aplikasi yang dirancang mampu mengendalikan maupun memonitoring. 

    Perancangan Sistem
    Smart socket power meter ini menggunakan interface android yang dirancang agar dapat mengendalikan dan memonitoring menggunakan koneksi internet, kemudian informasi ditampilkan pada smartphone android, pada perancangan ini terdapat dua subsistem yaitu subsistem pembacaan daya dan subsistem pengirim yang mempunyai fungsi masing - masing.

    Pada subsistem pertama yaitu proses pembacaan daya terdapat sebuah mikrokontroler arduino sebagai pemroses dari pembacaan sensor, kemudian hasil pembacaan ditampilkan di LCD. Selanjutnya subsistem kedua yang berperan sebagai pengirim data terdapat mikrokontroler wemos D1 mini yang berkomunikasi serial dengan mikrokontroler arduino yang ada pada subsistem pembacaan daya, subsistem pengirim akan menerima data tegangan, arus dan penggunaan daya kemudian data tersebut diproses untuk dikirim ke database firebase dengan keadaan alat terhubung dengan koneksi internet.

    Data yang dikirim ke firebase kemudian akan tampil pada aplikasi android dengan syarat android memiliki koneksi internet. Aplikasi android akan mengambil data yang di kirim ke firebase dan menampilkan secara realtime.

    Rangkaian Elektrikal


    Untuk layout PCB yang di desain menggunakan software eagle dapat dilihat pada gambar berikut :

    Rangkaian elektrikal terdiri dari mikrokontroler wemos d1 mini terhubung ke mikrokontroler arduino dengan komunikasi serial dan rangkaian driver triac yang terhubung dengan stop kontak. Dikarenakan pin I/O mikrokontroler wemos bekerja pada tegangan 3.3 volt, digunakan sebuah modul logic level converter yang berfungsi sebagai converter tegangan 5 volt ke 3.3 volt atau sebaliknya dari 3.3 volt ke 5 volt.

    Rangkaian driver beban dirancang dengan menggunakan triac BTA12 dan optocoupler MOC 3020. Triac berfungsi sebagai saklar dua arah untuk mengontrol beban AC sedangkan optocoupler berfungsi sebagai isolator untuk mengisolasi tegangan AC dengan rangkaian kontrol tegangan DC agar tidak saling terhubung.

    Prinsip kerjanya keluaran dari pin mikrokontroler wemos masuk ke pin 2 MOC 3020 atau pin katoda led yang ada dalam kemasan ic, untuk mengaktifkan output MOC 3020 yaitu dengan cara memberi logika low atau 0 volt pada katoda led tersebut dan 5 volt pada anodanya pada saat itu output MOC 3020 akan aktif untuk memberikan trigger pada gate triac BTA12 sehingga triac aktif dan menyalakan beban listrik.

    Perancangan Mekanikal

    Flowchart Sistem
    Gambar diatas menunjukkan flowchart proses dari keseluruhan sistem mulai dari wemos menghubungkan dengan koneksi internet, terdapat subproses pengendalian stop kontak di aplikasi android kemudian pada subproses status stop kontak akan merubah status stop kontak untuk menyalakan atau mematikan stop kontak.

    Lalu ada subproses terima data tegangan, arus dan daya dari arduino yang merupakan subsistem pengukuran daya, kemudian data yang diterima oleh wemos di kirim ke server firebase, yang terakhir ada subproses monitoring tegangan, arus dan daya yang tampil pada aplikasi android.

    Selanjutnya masuk pada proses pemrograman, disini saya hanya akan menjelaskan program pada sub sistem pengendalian dan monitoring yaitu pada mikrokontroler wemos D1 mini, pada alat ini wemos di program pada dua mode yaitu mode sebagai Acces Point atau membuat Web Server dan sebagai Client, untuk jelasnya langsung saja.

    Wemos Sebagai Acces Point dan Web Server
    Wemos diatur sebagai Access Point, dan smartphone android atau web browser sebagai client. Adapun fungsi wemos sebagai Access Point digunakan saat ingin konfigurasi atau pengaturan jaringan Wi-Fi yang akan terhubung dengan alat. Untuk sketch program Arduino IDE nya dapat dilihat di bawah ini.
    Untuk menggunakan wemos sebagai Access Point dan web server digunakan library ESP8266WiFi untuk konfigurasi Acces Point dan ESP8266WebServer untuk membuat local web server, sedangkan library EEPROM untuk menyimpan data ke memori wemos.
    Pengaturan mode wemos sebagai Access Point dilakukan dengan perintah WiFi.mode(WIFI_AP) kemudian atur alamat ip dengan perintah WiFi.softAPConfig(alamat ip, gateway, subnet), untuk mengatur nama dan password Access Point dengan perintah WiFi.softAP(ssid, pass).
    Program diatas digunakan untuk pembuatan halaman web server menggunakan script atau kode HTML, adapun untuk mengakses halaman utama dari local web server yang dibuat adalah dengan mengetik alamat 192.168.1.1 pada web browser, untuk hasil percobaan web server dapat dilihat pada gambar berikut:
    Hasil percobaan web server dengan membuka alamat 192.168.1.1 pada web browser maka akan tampil halaman utama, yang dimana terdapat form ssid dan password yang harus di isi dengan nama wifi dan password wifi yang akan dihubungkan dengan alat dan terdapat sebuah tombol kirim, saat form di isi dan tombol kirim ditekan maka akan tampil halaman kedua yang berarti akan menyimpan data pada eeprom wemos, untuk perintah membaca data eeprom dapat dilihat pada berikut:
    Program diatas merupakan perintah untuk pembacaan karakter pada memori wemos dengan perintah EEPROM.read() adapun data disimpan dimulai dari byte 0 sampai 31 untuk ssid dan 32 sampai 95 untuk password, kemudian setiap karakter yang dibaca dimasukkan ke variabel masing - masing, dapat dilihat pada screenshot dibawah ini merupakan respon serial monitor saat web server diakses dan simpan data ke eeprom.
    Untuk hasil dari percobaan ini dapat dilihat pada hasil screenshot serial monitor dibawah ini, dimana dengan membuat wemos sebagai Access Point dan membuat local web server dapat dilakukan pengaturan jaringan WiFi untuk terhubung dengan alat dengan cara menyimpan data pada eeprom.

    Wemos Sebagai Client
    Selain sebagai Access Point wemos juga dapat diatur sebagai client, jadi disini wemos akan terhubung dengan jaringan Wi-Fi atau sebagai client Wi-Fi tersebut, sehingga dibutuhkan setting nama Wi-Fi dan passwordnya. Selain itu wemos juga akan terhubung dengan server firebase atau sebagai client server melalui koneksi internet dari jaringan Wi-Fi, untuk pengaturan dan program Arduino IDE dapat dilihat di bawah ini.
    Program diatas digunakan untuk mengatur wemos sebagai client, library yang digunakan ESP8266WiFi untuk menghubungkan dengan jaringan Wi-Fi dan FirebaseArduino untuk menghubungkan dengan server firebase, agar dapat terhubung dengan jaringan Wi-Fi maka di atur terlebih dahulu nama dan password Wi-Fi yang ingin dihubungkan. Untuk menghubungkan ke database domain dan kode rahasia dari server firebase juga perlu diatur.
    Program diatas merupakan perintah untuk menghubungkan dengan Wi-Fi dan server, pada saat pertama kali dinyalakan wemos akan mencoba menghubungkan dengan Wi-Fi hingga terhubung, jika belum terhubung maka akan terus mengulang pada while looping untuk menghubungkan, saat sudah terhubung maka akan keluar dari while.
    Setelah terhubung dengan koneksi internet maka dapat di lakukan pengiriman data ke server, adapun perintahnya seperti pada pada program diatas. Adapun data yang dikirim adalah parameter listrik ac, pengiriman dilakukan dalam dua paket data diantaranya paket data yang pertama data tegangan, arus dan daya aktif untuk data kedua daya reaktif, daya semu dan faktor daya.

    Adapun tujuan dilakukan pengiriman tiga parameter listrik pada setiap paket data akan mempercepat proses pengiriman dimana hanya dilakukan dua kali pengiriman untuk semua parameter. Dapat dilihat pada hasil screenshot dibawah ini yang merupakan respon serial monitor saat proses pengiriman data ke server.
    Gambar diatas terlihat tampilan serial monitor pada pc, dimana dimulai dari menghubungkan dengan koneksi wifi hingga proses pengiriman, terlihat pada awal pengiriman data semua parameter bernilai kosong atau garis strip dimana pada saat itu belum ada data yang di terima melalui komunikasi serial oleh wemos dari arduino.

    Pada pengiriman data yang kedua terlihat data yang di kirim ke server firebase sesuai dengan data yang diterima oleh wemos, ada dua paket data yang di kirim selalu dipisah dengan huruf V untuk tegangan, I untuk arus, P untuk daya aktif, Q untuk daya reaktif, S daya semu, PF faktor daya dan diakhiri dengan tanda bintang *. Huruf - huruf tersebut dimaksud sebagai pemisah antar data untuk melakukan proses parsing pada aplikasi android.
    Gambar diatas merupakan hasil dari percobaan ini, dimana wemos terhubung dengan koneksi internet dan berhasil mengirimkan data ke server, data yang ditampilkan pada server merupakan data yang terakhir dikirim.

    Aplikasi Android
    Aplikasi android dibuat dengan menggunakan MIT App Inventor 2 yang merupakan aplikasi berbasis web open source. Untuk tampilan aplikasi yang telah dibuat dapat dilihat sebagai berikut.
    Gambar diatas merupakan tampilan aplikasi android yang telah dibuat, tampilan awal aplikasi adalah login dengan pin untuk masuk ke tampilan utama aplikasi, pada tampilan utama aplikasi merupakan tampilan monitoring pengukuran daya dan terdapat dua tombol kendali on-off stop kontak.

    Jika ada yang ingin ditanyakan silahkan tinggalkan komentar atau untuk informasi lebih lanjut mengenai project ini agar dapat menghubungi saya.


    Older Posts Home

    View AllElektronika

    View AllIoT

    Popular Posts

    • Membuat Running Text LED Matrix P10 Menggunakan Arduino
    • Cara Memperbaiki Kipas Angin Mati Total [Tidak Berputar Sama Sekali]
    • Audio Spectrum Analyzer Arduino + LCD 2x16
    • Membuat Mobil Remote Control dengan Arduino [RC Car Control with Bluetooth]
    • Cara Mudah Mengisi Bootloader Arduino yang Rusak Menggunakan USBasp

    Categories

    Elektronika Arduino Tips dan Trik Robotic Tutorial IoT Software Arduino Tutorial PCB STM32

    Recent Posts

     
    Copyright © MUHILHAM • Electronics Hobbyist and Maker. All Rights Reserved.