<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2093917475945207513</id><updated>2026-10-30T19:18:58.318+07:00</updated><category term="komputer"/><category term="Teknologi"/><category term="Teknisi laptop"/><category term="Bios"/><category term="Boardview"/><category term="schematic"/><category term="Arduino"/><category term="Handphone"/><category term="Blogging"/><category term="esspressif"/><category term="Adventure"/><category term="Mesin Cuci"/><category term="modul laundry koin"/><category term="social media&#xa;tips and trik"/><category term="GPS"/><category term="Laundry QR"/><category term="Laundry QRIS"/><category term="Islami"/><category term="Part Library"/><category term="lokasi"/><category term="travelling"/><category term="Whatsapp"/><category term="share lokasi whatsapp"/><category term="gps tidak akurat"/><title type='text'>www.carapaklek.com</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='https://www.carapaklek.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/2093917475945207513/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='https://www.carapaklek.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='https://www.blogger.com/feeds/2093917475945207513/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>carapaklek.com</name><uri>http://www.blogger.com/profile/12438575085929354819</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj84wNpqEWz7nUZmjNjPBarFLyRAZARNpnydt-LYU_GZhXNGZFUplzpWB82bcX7camGkjKhQ-KGgMvx5RMUkIl4gkJvWLq8dlBfnRdA_lNZPKfK8QjiWqasrUvzS15za_c0-zdUM_aAJ39EGM5XGzVoH0xzAg-7mAIwM90m4_AE9y7kgQ/s220/webcamp.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>246</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2093917475945207513.post-3929785211011819323</id><published>2026-10-02T22:52:58.263+07:00</published><updated>2026-10-02T23:00:33.586+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Arduino"/><category scheme="http://www.blogger.com/atom/ns#" term="esspressif"/><category scheme="http://www.blogger.com/atom/ns#" term="Laundry QR"/><category scheme="http://www.blogger.com/atom/ns#" term="Laundry QRIS"/><category scheme="http://www.blogger.com/atom/ns#" term="Teknologi"/><title type='text'>Sensor Arus SCT-013-030: Prinsip Kerja, Rangkaian, ADC ESP32, dan Pengujian</title><content type='html'>&lt;p&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;b&gt;&lt;a href=&quot;http://www.paklekstore.com&quot; target=&quot;_blank&quot;&gt;&lt;iframe class=&quot;b-iframe-ws lTgB3 BLOG_object_iframe&quot; frameborder=&quot;0&quot; height=&quot;198px&quot; jsaction=&quot;load:lzUY8e&quot; src=&quot;/share-widget?w=poi&amp;amp;u=https%3A%2F%2Fwww.google.com%2Fsearch%3Fq%3DModul%2520kontrol%2520laundry%2520coin&amp;amp;ved=1t%3A269313&amp;amp;bbid=2093917475945207513&amp;amp;bpid=3929785211011819323&quot; width=&quot;200px&quot;&gt;&lt;/iframe&gt;&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;&lt;b&gt;&lt;br /&gt;SCT-013-030&lt;/b&gt; merupakan sensor arus AC berbasis &lt;i&gt;Current Transformer&lt;/i&gt; (CT) yang memungkinkan pengukuran arus listrik tanpa harus memutus kabel penghantar. Sensor ini banyak digunakan pada proyek mikrokontroler karena pemasangannya sederhana dan bagian sensor tidak memiliki hubungan listrik langsung dengan beban yang diukur.&lt;p&gt;&lt;/p&gt;

&lt;p&gt;Pada artikel ini kita akan membahas SCT-013-030 mulai dari prinsip kerja, karakteristik output, rangkaian antarmuka ke ESP32, tegangan bias ADC, cara pemasangan sensor, hingga metode pengujian dan kalibrasi menggunakan alat ukur pembanding.&lt;/p&gt;

&lt;p&gt;Artikel ini juga sekaligus menjadi dokumentasi pengembangan rangkaian sensor agar setiap tahapan pengujian dapat dicatat dan digunakan kembali pada pengembangan berikutnya.&lt;/p&gt;

&lt;h2&gt;Daftar Isi&lt;/h2&gt;
&lt;ol&gt;
  &lt;li&gt;&lt;a href=&quot;#apa-itu-sct-013&quot;&gt;Apa Itu SCT-013?&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#sct-013-030-yang-digunakan&quot;&gt;SCT-013-030 yang Digunakan&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#prinsip-kerja-current-transformer&quot;&gt;Prinsip Kerja Current Transformer&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#output-sensor-sct-013-030&quot;&gt;Output Sensor SCT-013-030&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#mengapa-output-sensor-tidak-bisa-langsung-ke-adc&quot;&gt;Mengapa Output Sensor Tidak Bisa Langsung ke ADC?&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#rangkaian-bias-untuk-adc-esp32&quot;&gt;Rangkaian Bias untuk ADC ESP32&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#burden-resistor-pada-sct-013&quot;&gt;Burden Resistor pada SCT-013&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#menggunakan-jack-audio-35-mm&quot;&gt;Menggunakan Jack Audio 3,5 mm&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#rangkaian-dasar-sct-013-ke-esp32&quot;&gt;Rangkaian Dasar SCT-013 ke ESP32&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#pengujian-menggunakan-beban-ac&quot;&gt;Pengujian Menggunakan Beban AC&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#hasil-pembacaan-adc&quot;&gt;Hasil Pembacaan ADC&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#mengapa-nilai-adc-belum-menunjukkan-ampere&quot;&gt;Mengapa Nilai ADC Belum Menunjukkan Ampere?&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#perhitungan-rms&quot;&gt;Perhitungan RMS&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#kalibrasi-menggunakan-tang-ampere&quot;&gt;Kalibrasi Menggunakan Tang Ampere&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#tahapan-pengembangan-rangkaian&quot;&gt;Tahapan Pengembangan Rangkaian&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#kesimpulan&quot;&gt;Kesimpulan&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;h2 id=&quot;apa-itu-sct-013&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhdFu54SHRiCLFp3J7YsUbAaE30uZWy9FQa-N233KFR8uaYPgteQpyl_LJ8ZShfnrepzuJEFHFK6p_k54b2hmbRWQzOe-p7Fnbhivgo6kDyJ4pFYFq02wX5jZweBfsaQoRWDlpMbZ-97LunzOAFXiBeoA3CYzAmkZ5BOxmh67QVmDztHWK7t3S8Lyl_xr99&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;720&quot; data-original-width=&quot;1280&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhdFu54SHRiCLFp3J7YsUbAaE30uZWy9FQa-N233KFR8uaYPgteQpyl_LJ8ZShfnrepzuJEFHFK6p_k54b2hmbRWQzOe-p7Fnbhivgo6kDyJ4pFYFq02wX5jZweBfsaQoRWDlpMbZ-97LunzOAFXiBeoA3CYzAmkZ5BOxmh67QVmDztHWK7t3S8Lyl_xr99=w640-h360&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/h2&gt;
&lt;div style=&quot;position: relative; background: rgb(34, 34, 34); border-radius: 8px; padding: 15px;&quot;&gt;
  &lt;button onclick=&quot;navigator.clipboard.writeText(this.nextElementSibling.innerText); this.innerText=&#39;Copied!&#39;; setTimeout(() =&gt; this.innerText=&#39;Copy&#39;, 2000);&quot; style=&quot;position: absolute; top: 10px; right: 10px; background: #333; color: #fff; border: 1px solid #555; border-radius: 4px; padding: 5px 10px; font-size: 12px; cursor: pointer;&quot;&gt;Copy&lt;/button&gt;
  &lt;pre style=&quot;background: transparent !important; color: white !important; font-family: &#39;Consolas&#39;, &#39;Courier New&#39;, monospace; font-size: 13px; line-height: 1.5; margin: 0; padding: 0; overflow-x: auto; border: none;&quot;&gt;&lt;code style=&quot;background: transparent !important; color: white !important; padding: 0 !important; border: none !important;&quot;&gt;#define ADC_PIN 4

void setup() {
  Serial.begin(115200);
  delay(1000);

  analogReadResolution(12);

  Serial.println(&quot;=== TEST SCT-013 ===&quot;);
}

void loop() {
  const int samples = 1000;

  long total = 0;
  float totalKuadrat = 0;

  int nilaiMin = 4095;
  int nilaiMax = 0;

  for (int i = 0; i &amp;lt; samples; i++) {

    int adc = analogRead(ADC_PIN);

    if (adc &amp;lt; nilaiMin) nilaiMin = adc;
    if (adc &amp;gt; nilaiMax) nilaiMax = adc;

    total += adc;
    totalKuadrat += (float)adc * adc;

    delayMicroseconds(200);
  }

  float rata = (float)total / samples;

  float rms = sqrt(
    (totalKuadrat / samples) -
    (rata * rata)
  );

  Serial.print(&quot;MIN: &quot;);
  Serial.print(nilaiMin);

  Serial.print(&quot; | MAX: &quot;);
  Serial.print(nilaiMax);

  Serial.print(&quot; | AVG: &quot;);
  Serial.print(rata, 1);

  Serial.print(&quot; | RMS: &quot;);
  Serial.println(rms, 1);

  delay(500);
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;h2 id=&quot;apa-itu-sct-013&quot;&gt;&amp;nbsp;1. Apa Itu SCT-013?&lt;/h2&gt;
&lt;p&gt;SCT-013 adalah keluarga sensor arus AC yang menggunakan prinsip &lt;b&gt;Current Transformer (CT)&lt;/b&gt;.&lt;/p&gt;
&lt;p&gt;Berbeda dengan sensor arus yang harus dipasang secara seri dengan beban, SCT-013 bekerja dengan mendeteksi medan magnet yang dihasilkan oleh arus yang mengalir pada kabel.&lt;/p&gt;
&lt;p&gt;Karena bentuknya seperti penjepit, sensor dapat dipasang pada satu penghantar tanpa harus memutus kabel.&lt;/p&gt;
&lt;p&gt;Secara sederhana:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;      Kabel penghantar
             │
             │
        ┌────┴────┐
        │ SCT-013 │
        │    ○    │
        └─────────┘
             │
             │
          Output AC
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ketika arus mengalir pada kabel, medan magnet yang terbentuk akan menginduksi lilitan sekunder pada CT.&lt;/p&gt;
&lt;p&gt;Induksi tersebut menghasilkan sinyal listrik yang dapat diukur oleh rangkaian elektronik.&lt;/p&gt;



&lt;h2 id=&quot;sct-013-030-yang-digunakan&quot;&gt;2. SCT-013-030 yang Digunakan&lt;/h2&gt;
&lt;p&gt;Pada percobaan ini digunakan:&lt;/p&gt;
&lt;p&gt;&lt;b&gt;SCT-013-030&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Salah satu hal yang harus diperhatikan ketika membeli SCT-013 adalah jenis outputnya.&lt;/p&gt;
&lt;p&gt;Ada SCT-013 yang menghasilkan &lt;b&gt;output arus&lt;/b&gt;, dan ada versi yang menghasilkan &lt;b&gt;output tegangan&lt;/b&gt;.&lt;/p&gt;
&lt;p&gt;SCT-013-030 yang digunakan pada percobaan ini merupakan tipe &lt;b&gt;voltage-output&lt;/b&gt;.&lt;/p&gt;
&lt;p&gt;Karakteristik yang menjadi acuan:&lt;/p&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Parameter&lt;/th&gt;
      &lt;th&gt;Nilai&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;Tipe sensor&lt;/td&gt;
      &lt;td&gt;Current Transformer&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Model&lt;/td&gt;
      &lt;td&gt;SCT-013-030&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Jenis output&lt;/td&gt;
      &lt;td&gt;Voltage output&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Rentang pengukuran&lt;/td&gt;
      &lt;td&gt;Hingga sekitar 30 A AC&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Output nominal&lt;/td&gt;
      &lt;td&gt;Sekitar 0–1 V AC&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Burden resistor&lt;/td&gt;
      &lt;td&gt;Terintegrasi&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Jenis pengukuran&lt;/td&gt;
      &lt;td&gt;Arus AC&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;Karena burden resistor sudah terintegrasi pada versi ini, rangkaian tidak perlu menambahkan burden resistor eksternal.&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;&lt;b&gt;Catatan:&lt;/b&gt; Pastikan tipe SCT-013 yang digunakan sebelum menentukan rangkaian. Jangan menyamakan rangkaian untuk SCT-013 voltage-output dengan SCT-013 current-output.&lt;/p&gt;
&lt;/blockquote&gt;



&lt;h2 id=&quot;prinsip-kerja-current-transformer&quot;&gt;3. Prinsip Kerja Current Transformer&lt;/h2&gt;
&lt;p&gt;Current Transformer bekerja berdasarkan prinsip induksi elektromagnetik.&lt;/p&gt;
&lt;p&gt;Ketika arus AC melewati penghantar utama, akan muncul medan magnet di sekeliling penghantar.&lt;/p&gt;
&lt;p&gt;Medan magnet tersebut diteruskan melalui inti CT dan menginduksi tegangan pada lilitan sekunder.&lt;/p&gt;
&lt;p&gt;Gambaran sederhananya:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;             ARUS AC
                ↓
       ────────────────
             │
             │
        ┌───────────┐
        │    CT     │
        │           │
        │  Primary  │
        │    ↓      │
        │ Secondary │
        └─────┬─────┘
              │
              │
           Output AC
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Semakin besar arus yang mengalir pada kabel, semakin besar pula sinyal yang dihasilkan sensor.&lt;/p&gt;
&lt;p&gt;Inilah yang kemudian dibaca oleh mikrokontroler.&lt;/p&gt;



&lt;h2 id=&quot;output-sensor-sct-013-030&quot;&gt;4. Output Sensor SCT-013-030&lt;/h2&gt;
&lt;p&gt;Output SCT-013-030 berupa sinyal &lt;b&gt;AC&lt;/b&gt;, bukan tegangan DC.&lt;/p&gt;
&lt;p&gt;Artinya tegangan output berubah terhadap waktu:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt; Tegangan
    ↑
    │        /‾\        /‾\
    │       /   \      /   \
  0 ├─────/─────\───/─────\────→ waktu
    │    /       \ /       \
    │   /         \         \
    ↓
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Sinyal tersebut mempunyai bagian positif dan negatif terhadap titik referensinya.&lt;/p&gt;
&lt;p&gt;Hal ini menjadi masalah ketika sensor dihubungkan langsung ke ADC mikrokontroler yang tidak dirancang untuk menerima tegangan negatif.&lt;/p&gt;
&lt;p&gt;Karena itu diperlukan rangkaian &lt;b&gt;DC bias&lt;/b&gt;.&lt;/p&gt;



&lt;h2 id=&quot;mengapa-output-sensor-tidak-bisa-langsung-ke-adc&quot;&gt;5. Mengapa Output Sensor Tidak Bisa Langsung ke ADC?&lt;/h2&gt;
&lt;p&gt;ADC ESP32 bekerja pada tegangan positif.&lt;/p&gt;
&lt;p&gt;Sementara sinyal AC dari SCT-013 dapat bergerak ke arah positif dan negatif.&lt;/p&gt;
&lt;p&gt;Misalnya sebuah sinyal AC mempunyai amplitudo:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;       +1 V
         │
         │    /\
         │   /  \
    0 V ─┼──/────\──
         │ /      \
         │/
       -1 V
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Jika sinyal seperti ini diberikan langsung ke ADC, bagian negatif tidak dapat dibaca sebagaimana mestinya.&lt;/p&gt;
&lt;p&gt;Solusinya adalah menggeser seluruh sinyal ke atas menggunakan &lt;b&gt;tegangan bias&lt;/b&gt;.&lt;/p&gt;



&lt;h2 id=&quot;rangkaian-bias-untuk-adc-esp32&quot;&gt;6. Rangkaian Bias untuk ADC ESP32&lt;/h2&gt;
&lt;p&gt;Karena ESP32 menggunakan logika 3,3 V, salah satu pendekatan sederhana adalah membuat tegangan tengah sekitar:&lt;/p&gt;
&lt;p&gt;&lt;b&gt;1,65 V&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Tegangan tersebut dapat dibuat menggunakan dua resistor dengan nilai sama.&lt;/p&gt;

&lt;h3&gt;Pembagi tegangan&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;             3.3 V
               │
              10K
               │
               ├──────── VBIAS ≈ 1.65 V
               │
              10K
               │
              GND
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Dengan dua resistor 10 kΩ:&lt;/p&gt;
&lt;p&gt;&lt;b&gt;VBIAS ≈ 3,3 V ÷ 2 = 1,65 V&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Sinyal AC dari sensor kemudian ditumpangkan pada tegangan bias tersebut.&lt;/p&gt;
&lt;p&gt;Hasilnya menjadi seperti:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;3.3 V ─────────────────────

             /\        /\
            /  \      /  \
1.65 V ────/────\────/────\────
          /      \  /
         /        \/

0 V ──────────────────────────
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Dengan demikian sinyal tidak lagi melewati daerah tegangan negatif.&lt;/p&gt;



&lt;h2 id=&quot;burden-resistor-pada-sct-013&quot;&gt;7. Burden Resistor pada SCT-013&lt;/h2&gt;
&lt;p&gt;Burden resistor merupakan komponen penting pada Current Transformer.&lt;/p&gt;
&lt;p&gt;Pada CT tipe tertentu, output sekundernya berupa &lt;b&gt;arus&lt;/b&gt; sehingga diperlukan resistor burden untuk mengubah arus tersebut menjadi tegangan.&lt;/p&gt;
&lt;p&gt;Namun pada &lt;b&gt;SCT-013-030 voltage-output&lt;/b&gt;, burden resistor sudah terdapat di dalam sensor.&lt;/p&gt;
&lt;p&gt;Karena itu:&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Tidak perlu menambahkan burden resistor eksternal.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Ini merupakan perbedaan penting antara sensor voltage-output dan current-output.&lt;/p&gt;
&lt;p&gt;Jika tipe sensor berbeda, rangkaiannya juga dapat berbeda.&lt;/p&gt;



&lt;h2 id=&quot;menggunakan-jack-audio-35-mm&quot;&gt;8. Menggunakan Jack Audio 3,5 mm&lt;/h2&gt;
&lt;p&gt;Pada prototype digunakan konektor jack audio 3,5 mm untuk menghubungkan sensor ke rangkaian.&lt;/p&gt;
&lt;p&gt;Secara umum jack 3,5 mm memiliki kontak:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;        ┌─────────────┐
        │   TIP       │
        │   RING      │
        │   SLEEVE    │
        └─────────────┘
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Namun konfigurasi kabel sensor harus dipastikan berdasarkan sensor yang digunakan.&lt;/p&gt;
&lt;p&gt;Jangan hanya menentukan koneksi berdasarkan bentuk konektor.&lt;/p&gt;
&lt;p&gt;Cara yang lebih aman adalah memeriksa:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;datasheet sensor&lt;/li&gt;
  &lt;li&gt;kontinuitas dengan multimeter&lt;/li&gt;
  &lt;li&gt;konfigurasi kabel sensor&lt;/li&gt;
  &lt;li&gt;hasil pengukuran tegangan output&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Untuk pengembangan PCB, konfigurasi pin harus dicatat dengan jelas agar tidak terjadi kesalahan ketika rangkaian dibuat dalam jumlah banyak.&lt;/p&gt;



&lt;h2 id=&quot;rangkaian-dasar-sct-013-ke-esp32&quot;&gt;9. Rangkaian Dasar SCT-013 ke ESP32&lt;/h2&gt;
&lt;p&gt;Konsep rangkaian yang digunakan:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;                          3.3 V
                            │
                           10K
                            │
                            ├────────── VBIAS
                            │
                           10K
                            │
                           GND


SCT-013
   │
   │ Output AC
   │
 ─┴─ C coupling
   │
   ├───────────────────────┐
   │                       │
   │                     ADC ESP32
   │
  VBIAS
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Pada implementasi nyata, nilai kapasitor coupling dan konfigurasi input dapat disesuaikan setelah melihat bentuk sinyal menggunakan alat ukur.&lt;/p&gt;
&lt;p&gt;Hal terpenting pada tahap awal adalah memastikan:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;sensor menghasilkan sinyal,&lt;/li&gt;
  &lt;li&gt;sinyal mempunyai bias yang benar,&lt;/li&gt;
  &lt;li&gt;tegangan tidak melebihi batas ADC,&lt;/li&gt;
  &lt;li&gt;pembacaan ADC berubah sesuai perubahan arus.&lt;/li&gt;
&lt;/ol&gt;



&lt;h2 id=&quot;pengujian-menggunakan-beban-ac&quot;&gt;10. Pengujian Menggunakan Beban AC&lt;/h2&gt;
&lt;p&gt;Setelah rangkaian selesai, sensor diuji menggunakan beban listrik AC.&lt;/p&gt;
&lt;p&gt;Pada percobaan awal digunakan &lt;b&gt;bor listrik&lt;/b&gt; sebagai sumber beban.&lt;/p&gt;
&lt;p&gt;Sensor dipasang dengan menjepit &lt;b&gt;satu kabel penghantar&lt;/b&gt;.&lt;/p&gt;
&lt;p&gt;Contoh:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;FASE ────────────────[ BEBAN ]
          │
          │
       ┌──────┐
       │ SCT  │
       └──────┘
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Jangan menjepit kabel fase dan netral secara bersamaan.&lt;/p&gt;
&lt;p&gt;Jika kedua penghantar berada di dalam CT, medan magnet dari keduanya dapat saling mengurangi.&lt;/p&gt;
&lt;p&gt;Akibatnya sensor dapat membaca nilai yang sangat kecil atau tidak sesuai.&lt;/p&gt;



&lt;h2 id=&quot;hasil-pembacaan-adc&quot;&gt;11. Hasil Pembacaan ADC&lt;/h2&gt;
&lt;p&gt;Pengujian dilakukan dengan beberapa kondisi:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;OFF
↓
ON
↓
OFF
↓
ON
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Tujuan pengujian pertama bukan langsung mendapatkan angka Ampere.&lt;/p&gt;
&lt;p&gt;Yang ingin dipastikan terlebih dahulu adalah:&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;&lt;b&gt;Apakah perubahan arus pada beban menyebabkan perubahan sinyal pada ADC?&lt;/b&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Jika kondisi OFF menghasilkan satu pola pembacaan dan kondisi ON menghasilkan pola berbeda, berarti sensor dan rangkaian input sudah memberikan respons terhadap perubahan arus.&lt;/p&gt;
&lt;p&gt;Namun hal tersebut belum berarti angka yang dihasilkan sudah akurat dalam satuan Ampere.&lt;/p&gt;



&lt;h2 id=&quot;mengapa-nilai-adc-belum-menunjukkan-ampere&quot;&gt;12. Mengapa Nilai ADC Belum Menunjukkan Ampere?&lt;/h2&gt;
&lt;p&gt;ADC hanya menghasilkan nilai digital yang mewakili tegangan yang diterimanya.&lt;/p&gt;
&lt;p&gt;Misalnya:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;ADC = 2000
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Angka tersebut belum bisa langsung diterjemahkan menjadi:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;2000 = 2 Ampere
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Karena hubungan antara nilai ADC dan arus dipengaruhi oleh:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;karakteristik SCT-013&lt;/li&gt;
  &lt;li&gt;rangkaian bias&lt;/li&gt;
  &lt;li&gt;rangkaian input&lt;/li&gt;
  &lt;li&gt;tegangan referensi ADC&lt;/li&gt;
  &lt;li&gt;karakteristik ADC ESP32&lt;/li&gt;
  &lt;li&gt;metode sampling&lt;/li&gt;
  &lt;li&gt;perhitungan RMS&lt;/li&gt;
  &lt;li&gt;faktor kalibrasi&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Oleh karena itu proses pengukuran perlu dilakukan secara bertahap.&lt;/p&gt;



&lt;h2 id=&quot;perhitungan-rms&quot;&gt;13. Perhitungan RMS&lt;/h2&gt;
&lt;p&gt;Karena arus yang diukur adalah arus AC, nilai yang biasanya dibutuhkan adalah &lt;b&gt;RMS (Root Mean Square)&lt;/b&gt;.&lt;/p&gt;
&lt;p&gt;ADC perlu melakukan sampling berkali-kali.&lt;/p&gt;
&lt;p&gt;Secara sederhana:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;Sinyal AC
    ↓
Sampling ADC
    ↓
ADC1 ADC2 ADC3 ADC4 ... ADCn
    ↓
Kurangi nilai bias
    ↓
Hitung kuadrat
    ↓
Rata-rata
    ↓
Akar kuadrat
    ↓
RMS
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Secara matematis:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;Vrms = √[(V1² + V2² + V3² + ... + Vn²) / n]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Setelah mendapatkan nilai tegangan RMS, nilai tersebut dapat dikonversi menjadi arus berdasarkan karakteristik sensor dan faktor kalibrasi.&lt;/p&gt;



&lt;h2 id=&quot;kalibrasi-menggunakan-tang-ampere&quot;&gt;14. Kalibrasi Menggunakan Tang Ampere&lt;/h2&gt;
&lt;p&gt;Setelah sistem mampu membaca sinyal dan menghitung RMS, tahap berikutnya adalah melakukan kalibrasi.&lt;/p&gt;
&lt;p&gt;Untuk mendapatkan nilai referensi digunakan &lt;b&gt;tang ampere&lt;/b&gt;.&lt;/p&gt;
&lt;p&gt;Konsep pengujiannya:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;            Kabel beban
                 │
                 │
           ┌─────┴─────┐
           │ SCT-013   │
           └───────────┘

                 +

           ┌───────────┐
           │ Tang      │
           │ Ampere    │
           └───────────┘
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Kedua alat membaca arus pada penghantar yang sama.&lt;/p&gt;
&lt;p&gt;Misalnya:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;Tang ampere   : 5,20 A
SCT-013       : 4,80 A
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Maka diperlukan faktor koreksi.&lt;/p&gt;
&lt;p&gt;Secara sederhana:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;Faktor kalibrasi = Arus referensi / Arus terbaca
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Contoh:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;5,20 / 4,80 = 1,083
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Nilai tersebut kemudian dapat digunakan sebagai faktor koreksi dalam program.&lt;/p&gt;
&lt;p&gt;Namun kalibrasi yang baik sebaiknya dilakukan pada beberapa titik pengukuran, bukan hanya satu titik.&lt;/p&gt;



&lt;h2 id=&quot;tahapan-pengembangan-rangkaian&quot;&gt;15. Tahapan Pengembangan Rangkaian&lt;/h2&gt;
&lt;p&gt;Agar proses pengembangan lebih mudah ditelusuri, pengujian sebaiknya dilakukan secara bertahap.&lt;/p&gt;

&lt;h3&gt;Tahap 1 — Pastikan sensor menghasilkan sinyal&lt;/h3&gt;
&lt;p&gt;Ukur output SCT menggunakan multimeter atau oscilloscope jika tersedia.&lt;/p&gt;

&lt;h3&gt;Tahap 2 — Pastikan bias ADC benar&lt;/h3&gt;
&lt;p&gt;Ukur tegangan VBIAS.&lt;/p&gt;
&lt;p&gt;Target awal:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;≈ 1,65 V
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;untuk sistem 3,3 V.&lt;/p&gt;

&lt;h3&gt;Tahap 3 — Hubungkan ke ADC&lt;/h3&gt;
&lt;p&gt;Pastikan tegangan maksimum sinyal tetap berada dalam batas input ADC.&lt;/p&gt;

&lt;h3&gt;Tahap 4 — Buat program sampling&lt;/h3&gt;
&lt;p&gt;Jangan langsung menghitung Ampere.&lt;/p&gt;
&lt;p&gt;Tampilkan terlebih dahulu:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;ADC minimum
ADC maksimum
ADC rata-rata
&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;Tahap 5 — Hitung RMS&lt;/h3&gt;
&lt;p&gt;Setelah pembacaan stabil, implementasikan perhitungan RMS.&lt;/p&gt;

&lt;h3&gt;Tahap 6 — Kalibrasi&lt;/h3&gt;
&lt;p&gt;Bandingkan dengan tang ampere.&lt;/p&gt;

&lt;h3&gt;Tahap 7 — Uji beberapa beban&lt;/h3&gt;
&lt;p&gt;Lakukan pengujian pada beberapa kondisi arus untuk melihat apakah hasil pembacaan tetap konsisten.&lt;/p&gt;



&lt;h2 id=&quot;kesimpulan&quot;&gt;16. Kesimpulan&lt;/h2&gt;
&lt;p&gt;SCT-013-030 merupakan sensor arus AC berbasis Current Transformer yang dapat digunakan untuk mengukur arus tanpa memutus penghantar.&lt;/p&gt;
&lt;p&gt;Dalam penggunaannya dengan ESP32, beberapa hal penting yang perlu diperhatikan adalah:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;SCT-013 menghasilkan sinyal AC.&lt;/li&gt;
  &lt;li&gt;ADC ESP32 membutuhkan sinyal dalam rentang tegangan positif.&lt;/li&gt;
  &lt;li&gt;Sinyal AC perlu diberikan DC bias.&lt;/li&gt;
  &lt;li&gt;Untuk sistem 3,3 V, titik bias awal dapat dibuat sekitar 1,65 V.&lt;/li&gt;
  &lt;li&gt;SCT-013-030 voltage-output telah memiliki burden resistor internal.&lt;/li&gt;
  &lt;li&gt;Sensor harus menjepit satu penghantar saja.&lt;/li&gt;
  &lt;li&gt;Nilai ADC mentah belum dapat langsung dianggap sebagai nilai Ampere.&lt;/li&gt;
  &lt;li&gt;Pengukuran arus AC perlu dilakukan menggunakan sampling dan perhitungan RMS.&lt;/li&gt;
  &lt;li&gt;Hasil akhir perlu dikalibrasi menggunakan alat ukur referensi seperti tang ampere.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Alur keseluruhan sistem dapat diringkas sebagai berikut:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;┌──────────────┐
│  SCT-013-030 │
└──────┬───────┘
       │
       ▼
┌──────────────┐
│ Rangkaian    │
│ Input + Bias │
└──────┬───────┘
       │
       ▼
┌──────────────┐
│ ADC ESP32    │
└──────┬───────┘
       │
       ▼
┌──────────────┐
│ Sampling     │
└──────┬───────┘
       │
       ▼
┌──────────────┐
│ Perhitungan  │
│ RMS          │
└──────┬───────┘
       │
       ▼
┌──────────────┐
│ Kalibrasi    │
└──────┬───────┘
       │
       ▼
┌──────────────┐
│ Nilai Arus A │
└──────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Percobaan awal menggunakan beban AC menunjukkan bahwa perubahan kondisi beban dapat menghasilkan perubahan pada pembacaan ADC. Tahap selanjutnya adalah melakukan pengukuran menggunakan tang ampere sebagai nilai referensi, kemudian menentukan faktor kalibrasi agar hasil pembacaan SCT-013 dapat mendekati nilai sebenarnya.&lt;/p&gt;
&lt;p&gt;Dengan dokumentasi ini, pengembangan berikutnya dapat dilakukan dari tahap yang sudah teruji, bukan mengulang kembali seluruh proses dari awal.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.carapaklek.com/feeds/3929785211011819323/comments/default' title='Posting Komentar'/><link rel='replies' type='text/html' href='https://www.carapaklek.com/2026/10/sensor-arus-sct-013-030-prinsip-kerja.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/2093917475945207513/posts/default/3929785211011819323'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/2093917475945207513/posts/default/3929785211011819323'/><link rel='alternate' type='text/html' href='https://www.carapaklek.com/2026/10/sensor-arus-sct-013-030-prinsip-kerja.html' title='Sensor Arus SCT-013-030: Prinsip Kerja, Rangkaian, ADC ESP32, dan Pengujian'/><author><name>carapaklek.com</name><uri>http://www.blogger.com/profile/12438575085929354819</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj84wNpqEWz7nUZmjNjPBarFLyRAZARNpnydt-LYU_GZhXNGZFUplzpWB82bcX7camGkjKhQ-KGgMvx5RMUkIl4gkJvWLq8dlBfnRdA_lNZPKfK8QjiWqasrUvzS15za_c0-zdUM_aAJ39EGM5XGzVoH0xzAg-7mAIwM90m4_AE9y7kgQ/s220/webcamp.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEhdFu54SHRiCLFp3J7YsUbAaE30uZWy9FQa-N233KFR8uaYPgteQpyl_LJ8ZShfnrepzuJEFHFK6p_k54b2hmbRWQzOe-p7Fnbhivgo6kDyJ4pFYFq02wX5jZweBfsaQoRWDlpMbZ-97LunzOAFXiBeoA3CYzAmkZ5BOxmh67QVmDztHWK7t3S8Lyl_xr99=s72-w640-h360-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2093917475945207513.post-723314548463211075</id><published>2026-09-09T21:13:09.580+07:00</published><updated>2026-09-22T13:13:03.124+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Arduino"/><category scheme="http://www.blogger.com/atom/ns#" term="esspressif"/><category scheme="http://www.blogger.com/atom/ns#" term="komputer"/><category scheme="http://www.blogger.com/atom/ns#" term="Laundry QR"/><category scheme="http://www.blogger.com/atom/ns#" term="Laundry QRIS"/><category scheme="http://www.blogger.com/atom/ns#" term="Mesin Cuci"/><category scheme="http://www.blogger.com/atom/ns#" term="modul laundry koin"/><category scheme="http://www.blogger.com/atom/ns#" term="Teknologi"/><title type='text'>CASING RELAY 8CH LOW/HIGH LEVEL TRIGGER      Versi lengkap: 3D Viewer + Artikel + Premium STL</title><content type='html'>&lt;!--=========================================================
     CARAPAKLEK
     ARTIKEL: CASING RELAY 8CH LOW/HIGH LEVEL TRIGGER
     Versi lengkap: 3D Viewer + Artikel + Premium STL
     =========================================================--&gt;

&lt;link href=&quot;https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css&quot; rel=&quot;stylesheet&quot;&gt;&lt;/link&gt;

&lt;style&gt;
.pkpost {
  max-width: 980px;
  margin: 0 auto;
  color: #1f2937;
  font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, Arial, sans-serif;
  line-height: 1.7;
}

.pkpost * {
  box-sizing: border-box;
}

/* =========================
   3D VIEWER
   ========================= */
.pkhero {
  margin: 0 0 28px;
  padding: 0;
  overflow: hidden;
  border: 1px solid #e5e7eb;
  border-radius: 20px;
  background: #fff;
  box-shadow: 0 10px 30px rgba(15, 23, 42, .07);
}

.pkviewer-title {
  padding: 18px 20px 12px;
  text-align: center;
}

.pkviewer-title .eyebrow {
  color: #2563eb;
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .12em;
  text-transform: uppercase;
}

.pkviewer-title h2 {
  margin: 3px 0 0;
  color: #111827;
  font-size: 23px;
  line-height: 1.25;
}

.pkviewer {
  display: block;
  width: 100%;
  height: 590px;
  border: 0;
  background: #f3f4f6;
}

.pkviewer-note {
  padding: 10px 18px 15px;
  color: #6b7280;
  font-size: 12px;
  text-align: center;
}

/* =========================
   ARTICLE
   ========================= */
.pktitle {
  margin: 28px 0 10px;
  color: #111827;
  font-size: 32px;
  line-height: 1.25;
  font-weight: 800;
}

.pklead {
  margin: 0 0 24px;
  color: #4b5563;
  font-size: 16px;
}

.pksection {
  margin: 32px 0;
}

.pksection h2 {
  margin: 24px 0 13px;
  color: #111827;
  font-size: 23px;
  line-height: 1.3;
  font-weight: 800;
}

.pksection h3 {
  margin: 20px 0 7px;
  color: #111827;
  font-size: 18px;
}

.pksection p {
  margin: 0 0 13px;
}

.pklist {
  padding-left: 21px;
  margin: 15px 0;
}

.pklist li {
  margin: 5px 0;
}

/* =========================
   QUICK INFO
   ========================= */
.pkinfo {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 12px;
  margin: 20px 0 30px;
}

.pkinfo-card {
  padding: 15px;
  border: 1px solid #e5e7eb;
  border-radius: 14px;
  background: #fff;
}

.pkinfo-card i {
  margin-bottom: 6px;
  color: #2563eb;
  font-size: 18px;
}

.pkinfo-card span {
  display: block;
  color: #6b7280;
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .06em;
}

.pkinfo-card strong,
.pkinfo-card b {
  display: block;
  margin-top: 2px;
  color: #111827;
  font-size: 14px;
}

/* =========================
   IMAGE CARD
   ========================= */
.pkimage {
  margin: 22px 0 28px;
  text-align: center;
}

.pkimage img {
  display: block;
  width: 100%;
  max-width: 900px;
  height: auto;
  margin: 0 auto;
  border: 1px solid #e5e7eb;
  border-radius: 16px;
  box-shadow: 0 8px 24px rgba(15, 23, 42, .07);
}

.pkimage-caption {
  margin-top: 8px;
  color: #6b7280;
  font-size: 12px;
  line-height: 1.5;
}

/* =========================
   NOTE
   ========================= */
.pk-note {
  margin: 20px 0;
  padding: 14px 16px;
  border-left: 4px solid #d39d25;
  border-radius: 9px;
  background: #fffbeb;
  color: #66501d;
  font-size: 14px;
}

/* =========================
   SPEC TABLE
   ========================= */
.pktable-wrap {
  margin: 20px 0 28px;
  overflow-x: auto;
  border: 1px solid #e5e7eb;
  border-radius: 14px;
}

.pktable {
  width: 100%;
  border-collapse: collapse;
  min-width: 560px;
  background: #fff;
}

.pktable th,
.pktable td {
  padding: 11px 13px;
  border-bottom: 1px solid #e5e7eb;
  text-align: left;
  font-size: 13px;
}

.pktable th {
  background: #f8fafc;
  color: #111827;
  font-weight: 800;
}

.pktable tr:last-child td {
  border-bottom: 0;
}

/* =========================
   PREMIUM DOWNLOAD CARD
   ========================= */
.pkc-card {
  width: 100%;
  max-width: 420px;
  margin: 30px auto;
  overflow: hidden;
  position: relative;
  background: #081625;
  border: 1px solid #b88b29;
  border-radius: 18px;
  box-shadow: 0 12px 30px rgba(15, 23, 42, .16);
  color: #fff;
}

.pkc-card:before {
  content: &quot;&quot;;
  position: absolute;
  width: 180px;
  height: 100px;
  right: -70px;
  top: -65px;
  border: 1px solid rgba(226, 180, 62, .40);
  border-radius: 50%;
  box-shadow:
    0 0 0 16px rgba(226, 180, 62, .07),
    0 0 0 32px rgba(226, 180, 62, .04);
  pointer-events: none;
}

.pkc-head {
  position: relative;
  z-index: 1;
  padding: 18px 18px 12px;
  text-align: center;
}

.pkc-badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 5px 12px;
  border: 1px solid #b88924;
  border-radius: 20px;
  color: #f3c958;
  font-size: 9px;
  font-weight: 800;
  letter-spacing: .08em;
  line-height: 1;
  text-transform: uppercase;
}

.pkc-head h3 {
  margin: 10px 0 4px;
  color: #fff;
  font-size: 21px;
  line-height: 1.2;
  font-weight: 800;
}

.pkc-head p {
  margin: 0;
  color: #aeb8c6;
  font-size: 10px;
  line-height: 1.4;
}

.pkc-line {
  display: flex;
  align-items: center;
  gap: 7px;
  margin: 12px 0 0;
  height: 1px;
}

.pkc-line:before,
.pkc-line:after {
  content: &quot;&quot;;
  flex: 1;
  height: 1px;
  background: #816426;
}

.pkc-line span {
  color: #e5b733;
  font-size: 10px;
}

.pkc-benefits {
  display: grid;
  grid-template-columns: 1fr 1fr;
  border-top: 1px solid rgba(255, 255, 255, .07);
  border-bottom: 1px solid rgba(255, 255, 255, .07);
}

.pkc-benefit {
  display: flex;
  align-items: center;
  gap: 7px;
  min-height: 55px;
  height: 55px;
  padding: 7px 9px;
  border-right: 1px solid rgba(255, 255, 255, .07);
  border-bottom: 1px solid rgba(255, 255, 255, .07);
}

.pkc-benefit:nth-child(2n) {
  border-right: 0;
}

.pkc-benefit:nth-last-child(-n+2) {
  border-bottom: 0;
}

.pkc-benefit-icon {
  width: 31px;
  height: 31px;
  min-width: 31px;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 1px solid #927027;
  border-radius: 50%;
  background: #111f2e;
  color: #efc34e;
}

.pkc-benefit-icon i {
  font-size: 12px;
}

.pkc-benefit strong,
.pkc-benefit b {
  display: block;
  color: #fff;
  font-size: 9px;
  line-height: 1.2;
}

.pkc-benefit span {
  display: block;
  margin-top: 2px;
  color: #8793a4;
  font-size: 7px;
  line-height: 1.25;
}

.pkc-offer {
  position: relative;
  z-index: 2;
  margin: 12px;
  padding: 13px;
  border: 1px solid #d3aa48;
  border-radius: 13px;
  background: linear-gradient(135deg, #fffdf8, #f8f1e4);
  color: #1f2937;
}

.pkc-offer-main {
  display: grid;
  grid-template-columns: 70px 1fr;
  gap: 10px;
  align-items: center;
}

.pkc-quality {
  width: 62px;
  height: 62px;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  border-radius: 50%;
  background: linear-gradient(145deg, #172537, #050a10);
  border: 2px solid #d3aa48;
  color: #f1c84d;
  box-shadow: 0 4px 10px rgba(0, 0, 0, .16);
}

.pkc-quality i {
  display: block;
  margin-bottom: 2px;
  font-size: 14px;
}

.pkc-quality strong,
.pkc-quality b {
  display: block;
  font-size: 7px;
  line-height: 1.05;
}

.pkc-quality small {
  display: block;
  margin-top: 3px;
  font-size: 6px;
  letter-spacing: 1px;
}

.pkc-price {
  text-align: center;
}

.pkc-price-title {
  color: #9a7219;
  font-size: 9px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: .06em;
}

.pkc-price-value {
  margin: 3px 0;
  color: #0b1a2b;
  font-size: 35px;
  line-height: 1;
  font-weight: 900;
}

.pkc-price-note {
  display: inline-block;
  padding: 3px 8px;
  border-radius: 15px;
  background: #f0e5cc;
  color: #5d5139;
  font-size: 8px;
}

.pkc-details {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 3px 10px;
  margin: 11px 0 0;
  padding: 9px 0 0;
  border-top: 1px dotted #c7a24b;
}

.pkc-detail {
  display: flex;
  align-items: flex-start;
  gap: 5px;
  margin: 0;
  padding: 3px 0;
  color: #3f4b5d;
  font-size: 8px;
  line-height: 1.3;
}

.pkc-detail i {
  color: #b27f17;
  margin-top: 1px;
}

.pkc-pay {
  position: relative;
  z-index: 2;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  width: calc(100% - 24px);
  height: 43px;
  margin: 0 12px 8px;
  padding: 7px 9px;
  border: 1px solid #f2d16e;
  border-radius: 10px;
  background: linear-gradient(135deg, #dca92f, #f3cb62, #dba52b);
  color: #111827 !important;
  text-decoration: none !important;
  font-size: 10px;
  font-weight: 900;
  line-height: 1.1;
  box-shadow: 0 5px 13px rgba(214, 163, 38, .25);
}

.pkc-pay-icon {
  width: 27px;
  height: 27px;
  min-width: 27px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: #101d2d;
  color: #f4cd61;
}

.pkc-pay-icon i {
  font-size: 11px;
}

.pkc-pay-text {
  flex: 1;
  text-align: center;
}

.pkc-pay-text small {
  display: block;
  margin-top: 2px;
  font-size: 7px;
  font-weight: 600;
}

.pkc-qr {
  margin-top: 4px;
  color: #64748b;
  font-size: 11px;
  text-align: center;
}

.pkc-trust {
  display: flex;
  align-items: center;
  gap: 7px;
  margin: 0 12px 8px;
  padding: 7px 9px;
  border: 1px solid #e3dbcb;
  border-radius: 8px;
  background: #fffdf9;
}

.pkc-trust i {
  color: #16813b;
  font-size: 18px;
}

.pkc-trust strong {
  display: block;
  color: #293447;
  font-size: 8px;
  line-height: 1.2;
}

.pkc-trust span {
  display: block;
  margin-top: 1px;
  color: #7b8490;
  font-size: 6px;
}

.pkc-payments {
  margin: 0;
  padding: 7px 12px;
  border-top: 1px solid rgba(255, 255, 255, .07);
  text-align: center;
}

.pkc-payments-title {
  margin: 0 0 5px;
  color: #778396;
  font-size: 7px;
  font-weight: 800;
  letter-spacing: .08em;
  text-transform: uppercase;
}

.pkc-payment-icons {
  display: flex;
  justify-content: center;
  gap: 12px;
  color: #a3adbb;
  font-size: 13px;
}

.pkc-help {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 5px;
  padding: 7px 10px 11px;
  color: #8490a0;
  font-size: 8px;
}

.pkc-help a {
  color: #45c76a !important;
  font-weight: 800;
  text-decoration: none !important;
}

/* =========================
   PHYSICAL PRODUCT CARD
   ========================= */
.pkstore-card {
  max-width: 620px;
  margin: 30px auto;
  padding: 24px;
  border: 1px solid #e5e7eb;
  border-radius: 18px;
  background: #fff;
  box-shadow: 0 10px 28px rgba(15, 23, 42, .08);
  text-align: center;
}

.pkstore-icon {
  width: 54px;
  height: 54px;
  margin: 0 auto 10px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: #eff6ff;
  color: #2563eb;
  font-size: 22px;
}

.pkstore-card h3 {
  margin: 5px 0 7px;
  color: #111827;
  font-size: 21px;
}

.pkstore-card p {
  margin: 0 0 18px;
  color: #64748b;
  font-size: 13px;
}

.pkstore-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-width: 230px;
  padding: 12px 20px;
  border-radius: 10px;
  background: #111827;
  color: #fff !important;
  text-decoration: none !important;
  font-size: 12px;
  font-weight: 800;
  box-shadow: 0 6px 15px rgba(15, 23, 42, .15);
}

.pkstore-btn:hover {
  opacity: .92;
}

/* =========================
   RELATED
   ========================= */
.pkrelated {
  margin: 34px 0 10px;
  padding: 18px;
  border: 1px solid #e5e7eb;
  border-radius: 15px;
  background: #f8fafc;
}

.pkrelated h2 {
  margin: 0 0 6px;
  color: #111827;
  font-size: 19px;
}

.pkrelated p {
  margin: 0;
  color: #64748b;
  font-size: 13px;
}

/* =========================
   RESPONSIVE
   ========================= */
@media(max-width:700px) {
  .pkviewer {
    height: 470px;
  }

  .pktitle {
    font-size: 27px;
  }

  .pkinfo {
    grid-template-columns: 1fr 1fr;
  }
}

@media(max-width:430px) {
  .pkviewer {
    height: 430px;
  }

  .pkinfo {
    gap: 8px;
  }

  .pkc-details {
    grid-template-columns: 1fr;
  }
}
&lt;/style&gt;

&lt;div class=&quot;pkpost&quot;&gt;

  &lt;!--1. 3D VIEWER--&gt;
  &lt;div class=&quot;pkhero&quot;&gt;
    &lt;div class=&quot;pkviewer-title&quot;&gt;
      &lt;div class=&quot;eyebrow&quot;&gt;
        &lt;i class=&quot;fa-solid fa-cube&quot;&gt;&lt;/i&gt; Interactive 3D
      &lt;/div&gt;
      &lt;h2&gt;Jelajahi Casing Relay 8CH Secara 3D&lt;/h2&gt;
    &lt;/div&gt;

    &lt;div style=&quot;text-align: center;&quot;&gt;
      &lt;iframe allowfullscreen=&quot;&quot; class=&quot;pkviewer&quot; loading=&quot;lazy&quot; src=&quot;https://paklekstore.com/3d-viewer/?model=kesing_relay_8CH_full_atas_bawah.glb&quot;&gt;&lt;/iframe&gt;
    &lt;/div&gt;

    &lt;div class=&quot;pkviewer-note&quot;&gt;
      Geser untuk memutar · Scroll/pinch untuk zoom · Gunakan TOP, BOTTOM, Auto atau Fullscreen untuk melihat model dari berbagai sudut.
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;!--2. JUDUL + INTRO--&gt;
  &lt;h1 class=&quot;pktitle&quot;&gt;
    Casing Relay 8CH Low/High Level Trigger – Desain Enclosure 3D Printable
  &lt;/h1&gt;

  &lt;p class=&quot;pklead&quot;&gt;
    Casing ini dirancang khusus untuk modul Relay 8 Channel Low/High Level Trigger agar modul lebih terlindungi, lebih rapi, dan lebih mudah digunakan pada berbagai proyek elektronika.
  &lt;/p&gt;

  &lt;!--3. QUICK INFO--&gt;
  &lt;div class=&quot;pkinfo&quot;&gt;
    &lt;div class=&quot;pkinfo-card&quot;&gt;
      &lt;i class=&quot;fa-solid fa-box&quot;&gt;&lt;/i&gt;
      &lt;span&gt;Model&lt;/span&gt;
      &lt;b&gt;Casing Relay 8CH&lt;/b&gt;
    &lt;/div&gt;

    &lt;div class=&quot;pkinfo-card&quot;&gt;
      &lt;i class=&quot;fa-solid fa-microchip&quot;&gt;&lt;/i&gt;
      &lt;span&gt;Kompatibilitas&lt;/span&gt;
      &lt;b&gt;Relay 8 Channel&lt;/b&gt;
    &lt;/div&gt;

    &lt;div class=&quot;pkinfo-card&quot;&gt;
      &lt;i class=&quot;fa-solid fa-print&quot;&gt;&lt;/i&gt;
      &lt;span&gt;Metode&lt;/span&gt;
      &lt;b&gt;3D Printing&lt;/b&gt;
    &lt;/div&gt;

    &lt;div class=&quot;pkinfo-card&quot;&gt;
      &lt;i class=&quot;fa-solid fa-download&quot;&gt;&lt;/i&gt;
      &lt;span&gt;Download&lt;/span&gt;
      &lt;b&gt;STL Premium&lt;/b&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;!--4. KONTEN ARTIKEL--&gt;
  &lt;div class=&quot;pksection&quot;&gt;
    &lt;h2&gt;Tentang Desain Casing Relay 8CH&lt;/h2&gt;
    &lt;p&gt;
      Modul relay 8 channel banyak digunakan sebagai bagian dari sistem kontrol elektronika untuk mengendalikan berbagai perangkat, seperti pompa, solenoid, kontaktor, lampu, motor, dan perangkat listrik lainnya.
    &lt;/p&gt;
    &lt;p&gt;
      Tanpa enclosure, bagian PCB dan komponen elektronik pada modul relay akan terbuka. Selain kurang rapi, kondisi tersebut juga membuat modul lebih mudah terkena debu atau tersentuh secara tidak sengaja ketika digunakan dalam sebuah proyek.
    &lt;/p&gt;
    &lt;p&gt;
      Karena itu dibuatlah casing khusus yang mengikuti bentuk dan kebutuhan modul Relay 8CH Low/High Level Trigger.
    &lt;/p&gt;

    &lt;!--FOTO 01--&gt;
    &lt;div class=&quot;pkimage&quot;&gt;&amp;nbsp;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg01t-o6CpXvrxLSwSIGo0M4PrUDaqjpTubtvRgTjo_SfXlbKD_hl0lcgpdaR8aqb0_sDizI_vf78nNitivfv78x2rTOydU87z1ySAYqYDV23bsy4Uqa8xsI2aUcnXr3mVl5e-psKaj9kFBAX9iBciG63r5Xp5RYXWci8YMcl8uyH-mgsJJ_Jk0RUGKyKHa/s1500/imagerelay8ch.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1500&quot; data-original-width=&quot;1500&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg01t-o6CpXvrxLSwSIGo0M4PrUDaqjpTubtvRgTjo_SfXlbKD_hl0lcgpdaR8aqb0_sDizI_vf78nNitivfv78x2rTOydU87z1ySAYqYDV23bsy4Uqa8xsI2aUcnXr3mVl5e-psKaj9kFBAX9iBciG63r5Xp5RYXWci8YMcl8uyH-mgsJJ_Jk0RUGKyKHa/w400-h400/imagerelay8ch.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;pkimage-caption&quot;&gt;
        Modul Relay 8 Channel yang menjadi dasar perancangan casing.
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;h2&gt;Desain Bagian Bawah Casing&lt;/h2&gt;
    &lt;p&gt;
      Bagian bawah casing menjadi tempat utama untuk memasang modul relay. Pada bagian dalam terdapat struktur dan dudukan yang digunakan untuk menjaga posisi PCB tetap stabil ketika casing digunakan.
    &lt;/p&gt;
    &lt;p&gt;
      Desain bagian bawah juga memperhitungkan ruang yang dibutuhkan oleh komponen PCB serta posisi terminal yang digunakan untuk menghubungkan kabel.
    &lt;/p&gt;

    &lt;!--FOTO 02--&gt;
    &lt;div class=&quot;pkimage&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;374&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjjr6dvc2F306TncLpGw04Y03qbirOSpqm1_xk2i5RsBIvTWtCT-zI9WSFXZ_IZgSiDIcuA9MOHJVV_9NYBhrtgZl1rjRuD4CJHbZeB0fx2Uy9_RFHzLJogRcYzglDlsBx8hQDo8Zd8L8CdJjhifrc11ah1b9WOyjhmYkPE1t-Em2wp4HT7QmH76ppWKLTR=w640-h374&quot; width=&quot;640&quot; /&gt;&lt;div class=&quot;pkimage-caption&quot;&gt;
        Tampilan bagian bawah casing dan ruang pemasangan modul relay.
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;h2&gt;Dudukan PCB Relay&lt;/h2&gt;
    &lt;p&gt;
      Salah satu bagian penting dari desain enclosure adalah dudukan PCB. Dudukan dibuat agar modul relay dapat dipasang dengan posisi yang stabil dan tidak mudah bergeser di dalam casing.
    &lt;/p&gt;
    &lt;p&gt;
      Posisi dudukan mengikuti titik pemasangan pada modul sehingga pemasangan PCB dapat dilakukan menggunakan screw yang sesuai.
    &lt;/p&gt;

    &lt;!--FOTO 03--&gt;
    &lt;div class=&quot;pkimage&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;349&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiIJcUsnbb1dGFsgfOqqggE5mqQ5AKGq-hqgWbcNSpWo9wFIjP_ZUDcYbRG0RcgH52uGdPTv3Tpfuyvz_yp3j4P3YJuvxcmdsHeOLWex2FNR3nHQHd7xIWyQx2LlIMZK7PPJ6SojSANAdt72RKs_-eoTXPSDBXhiAyyab1EJyPE3IITQhwYp3zgtqk7MYWE=w640-h349&quot; width=&quot;640&quot; /&gt;&lt;div class=&quot;pkimage-caption&quot;&gt;
        Detail dudukan PCB pada bagian dalam casing.
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;h2&gt;Desain Cover Atas&lt;/h2&gt;
    &lt;p&gt;
      Casing terdiri dari dua bagian utama, yaitu bagian bawah dan cover atas. Cover berfungsi untuk menutup dan melindungi modul relay setelah PCB terpasang pada bagian bawah casing.
    &lt;/p&gt;
    &lt;p&gt;
      Bentuk cover dirancang agar dapat dipasang dengan posisi yang tepat terhadap bagian bawah casing.
    &lt;/p&gt;

    &lt;!--FOTO 04--&gt;
    &lt;div class=&quot;pkimage&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;370&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgtDC29Q04aRNAHN1xMqu7p1SLoGZwePMElMEnTHsYgMC2MY3w_6sjYA622ehSBBkHAk9aAqUbVaF_4eYARoCpP-TRA_4vUOWDYwmp7FRtbpCyryrI9J6VNupXyWUxTiyGdGsDGSI8-TA7ZfNweN_Bm4eFUfBHzYrdAqWWF2hkpOYLJYH6qB1xBPRGKTOru=w640-h370&quot; width=&quot;640&quot; /&gt;&lt;div class=&quot;pkimage-caption&quot;&gt;
        Cover atas casing Relay 8CH dalam posisi terpisah.
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;h2&gt;Detail Lips dan Penyatuan Casing&lt;/h2&gt;
    &lt;p&gt;
      Pada bagian pertemuan antara cover atas dan bagian bawah terdapat lips yang berfungsi membantu menjaga posisi kedua bagian casing ketika dirakit.
    &lt;/p&gt;
    &lt;p&gt;
      Detail ini juga dibuat agar cover dapat duduk dengan lebih rapi pada bagian bawah casing.
    &lt;/p&gt;

    &lt;!--FOTO 05--&gt;
    &lt;div class=&quot;pkimage&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;318&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgYpd5pSv5LvHVkHiTAc65mJ0Wa56mCjgSggUh0VfKmRcPOGs5rpfB3ortayAAvSTEfS4qBSs7WM-zBDPCqWauoeupBHaOk9LJrBgxaIHoNtdJEBts0nVAiqCemi4afm-BP6tKKonXCSqGIYGcEyeqCQdYIpHm-NrZ2aNtuI_Zbc53pKJCfBkcKWcuZP1_7=w640-h318&quot; width=&quot;640&quot; /&gt;&lt;div class=&quot;pkimage-caption&quot;&gt;
        Detail lips pada pertemuan cover atas dan casing bawah.
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;h2&gt;Lubang Screw dan Pengikat Casing&lt;/h2&gt;
    &lt;p&gt;
      Bagian casing juga dilengkapi titik pemasangan screw untuk menyatukan cover dengan bagian bawah.
    &lt;/p&gt;
    &lt;p&gt;
      Detail lubang screw dibuat mengikuti kebutuhan konstruksi casing sehingga kedua bagian dapat dipasang dengan lebih kuat dan tetap mudah dibongkar apabila diperlukan.
    &lt;/p&gt;

    &lt;!--FOTO 06--&gt;
    &lt;div class=&quot;pkimage&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;587&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiMCB6Mw-WqGsdloHmCJc7_pXa8yfM5JzJeWRCz8oStQ-8pEvAPlyT0LfopRuPWpAmI1OFFssZ-10UaIXbvl0l5uPupSLkpiHgCVnW7xG2vgL8_edQENhWLUFGs13OYarpVgEddSCNdes4H-ltXUCwnw_aYASRwR0wTxXY_2IZXxWgI8w7oS8fuJ1TI-6nK=w640-h587&quot; width=&quot;640&quot; /&gt;&lt;div class=&quot;pkimage-caption&quot;&gt;
        Detail lubang screw pada casing.
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;h2&gt;Jalur Kabel dan Akses Terminal&lt;/h2&gt;
    &lt;p&gt;
      Dalam sebuah enclosure elektronik, posisi keluarnya kabel juga perlu diperhatikan. Karena itu desain casing memperhitungkan posisi terminal pada modul relay sehingga kabel dapat dipasang tanpa mengganggu konstruksi casing.
    &lt;/p&gt;
    &lt;p&gt;
      Jalur kabel ditempatkan sesuai kebutuhan modul dan penggunaannya dalam sistem kontrol.
    &lt;/p&gt;

    &lt;!--FOTO 07--&gt;
    &lt;div class=&quot;pkimage&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;377&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiigLPiA2mqyQVj4S8K5i1IYc30rrSJRn80dwzaoE6qSiwJf7AzcDFNRYB9Kze9UXG-K7ZReKLHP4aWQXPHWMfZx0BiKUAfBEslgs_3e8pyaXZ1_p2qIqNIKpS8U7EPIgyEZKHtUktXCqi2wHqv4VHriZjfLf_UdqsWXez0jeGVOi3rTdN3Jg3mvriDTwUJ=w640-h377&quot; width=&quot;640&quot; /&gt;&lt;div class=&quot;pkimage-caption&quot;&gt;
        Detail akses terminal dan jalur kabel pada casing.
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;h2&gt;Modul Relay Terpasang di Dalam Casing&lt;/h2&gt;
    &lt;p&gt;
      Setelah PCB relay dipasang pada dudukan, posisi modul menjadi lebih rapi dan terlindungi di dalam enclosure.
    &lt;/p&gt;
    &lt;p&gt;
      Foto berikut memperlihatkan kondisi casing sebelum cover atas dipasang sehingga posisi PCB dan dudukannya dapat terlihat dengan jelas.
    &lt;/p&gt;

    &lt;!--FOTO 08--&gt;
    &lt;div class=&quot;pkimage&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;374&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjjr6dvc2F306TncLpGw04Y03qbirOSpqm1_xk2i5RsBIvTWtCT-zI9WSFXZ_IZgSiDIcuA9MOHJVV_9NYBhrtgZl1rjRuD4CJHbZeB0fx2Uy9_RFHzLJogRcYzglDlsBx8hQDo8Zd8L8CdJjhifrc11ah1b9WOyjhmYkPE1t-Em2wp4HT7QmH76ppWKLTR=w640-h374&quot; width=&quot;640&quot; /&gt;&lt;div class=&quot;pkimage-caption&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;pkimage-caption&quot;&gt;
        Modul Relay 8CH telah dipasang pada dudukan casing.
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;h2&gt;Hasil Akhir Casing Relay 8CH&lt;/h2&gt;
    &lt;p&gt;
      Setelah cover dipasang, modul relay menjadi lebih terlindungi dan tampil lebih rapi. Desain enclosure ini dapat digunakan sebagai bagian dari berbagai proyek elektronika dan sistem kontrol.
    &lt;/p&gt;

    &lt;!--FOTO 09--&gt;
    &lt;div class=&quot;pkimage&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;417&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhi-XSKh1IjyYJ0gYu3qFGOzenSU5-jdVP1QzlS7n6Ctpt8RE8npSOoiQ4U-4Kj3ZFCFePBudXjkKC4kHwYdspgV06gLO5UmbPdGMC4_KnZIlS5m7Byl3msktE5hpQ9TxrIPDRjVpijx5vjl3cc0lykiWMat2B1jnARS5ZuPuKqKxlVFe-z18NOFnkLSVMG=w640-h417&quot; width=&quot;640&quot; /&gt;&lt;div class=&quot;pkimage-caption&quot;&gt;
        Hasil akhir Casing Relay 8CH setelah dirakit.&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;pkimage-caption&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;pkimage-caption&quot;&gt;Note : untuk Tulisan Tidak ada ya kami kirim dalam bentuk polos bagian atasnya&amp;nbsp;&lt;/div&gt;
    &lt;/div&gt;

    &lt;h2&gt;Tampilan Casing dari Berbagai Sisi&lt;/h2&gt;&lt;p&gt;
      Untuk melihat bentuk casing secara lebih detail, pengunjung dapat menggunakan 3D Viewer pada bagian atas artikel. Selain itu, beberapa tampilan fisik casing ditampilkan sebagai referensi.
    &lt;/p&gt;&lt;br /&gt;&lt;h2&gt;Spesifikasi Desain&lt;/h2&gt;
    &lt;div class=&quot;pktable-wrap&quot;&gt;
      &lt;table class=&quot;pktable&quot;&gt;
        &lt;thead&gt;
          &lt;tr&gt;
            &lt;th&gt;Spesifikasi&lt;/th&gt;
            &lt;th&gt;Keterangan&lt;/th&gt;
          &lt;/tr&gt;
        &lt;/thead&gt;
        &lt;tbody&gt;
          &lt;tr&gt;
            &lt;td&gt;Model&lt;/td&gt;
            &lt;td&gt;Casing Relay 8 Channel&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;td&gt;Jenis Trigger&lt;/td&gt;
            &lt;td&gt;Low Level / High Level&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;td&gt;Konstruksi&lt;/td&gt;
            &lt;td&gt;Bagian bawah + cover atas&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;td&gt;Metode Pembuatan&lt;/td&gt;
            &lt;td&gt;3D Printing&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;td&gt;Format File&lt;/td&gt;
            &lt;td&gt;RAR (STL File)&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;td&gt;Preview&lt;/td&gt;
            &lt;td&gt;Interactive 3D Viewer&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;td&gt;Penggunaan&lt;/td&gt;
            &lt;td&gt;Enclosure modul Relay 8CH&lt;/td&gt;
          &lt;/tr&gt;
        &lt;/tbody&gt;
      &lt;/table&gt;
    &lt;/div&gt;

    &lt;div class=&quot;pk-note&quot;&gt;
      &lt;b&gt;Catatan:&lt;/b&gt; Pastikan ukuran modul relay yang digunakan sesuai dengan desain casing sebelum melakukan proses pencetakan.
    &lt;/div&gt;

    &lt;h2&gt;Informasi File Premium&lt;/h2&gt;
    &lt;p&gt;
      File desain casing tersedia dalam format 3D STL (dikemas dalam .rar) dan ditujukan untuk pengguna yang ingin mencetak casing sendiri menggunakan printer 3D.
    &lt;/p&gt;

    &lt;ul class=&quot;pklist&quot;&gt;
      &lt;li&gt;&lt;b&gt;File:&lt;/b&gt; Enclosure_Relay_8CH_full.rar&lt;/li&gt;
      &lt;li&gt;&lt;b&gt;Format:&lt;/b&gt; RAR (Isi File STL)&lt;/li&gt;
      &lt;li&gt;&lt;b&gt;Jenis:&lt;/b&gt; 3D Printable Enclosure&lt;/li&gt;
      &lt;li&gt;&lt;b&gt;Preview:&lt;/b&gt; Tersedia melalui Interactive 3D Viewer&lt;/li&gt;
      &lt;li&gt;&lt;b&gt;Akses file:&lt;/b&gt; Setelah pembayaran berhasil&lt;/li&gt;
    &lt;/ul&gt;

    &lt;div class=&quot;pk-note&quot;&gt;
      File premium diproses melalui sistem download otomatis. Setelah pembayaran berhasil, sistem akan memberikan akses download sesuai transaksi.
    &lt;/div&gt;

    &lt;h2&gt;Download File STL Casing Relay 8CH&lt;/h2&gt;
    &lt;p&gt;
      Jika Anda memiliki printer 3D dan ingin membuat casing sendiri, file STL dapat diperoleh melalui download premium berikut.
    &lt;/p&gt;
    &lt;p&gt;
      File diberikan setelah pembayaran berhasil dan dapat digunakan untuk proses slicing serta pencetakan 3D.
    &lt;/p&gt;
  &lt;/div&gt;

  &lt;!--PREMIUM DOWNLOAD CARD--&gt;
  &lt;div class=&quot;pkc-card&quot;&gt;
    &lt;div class=&quot;pkc-head&quot;&gt;
      &lt;div class=&quot;pkc-badge&quot;&gt;PREMIUM DOWNLOAD&lt;/div&gt;
      &lt;h3&gt;Dapatkan File STL Casing&lt;/h3&gt;
      &lt;p&gt;File desain casing Relay 8CH untuk kebutuhan 3D printing.&lt;/p&gt;
      &lt;div class=&quot;pkc-line&quot;&gt;
        &lt;span&gt;◆&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class=&quot;pkc-benefits&quot;&gt;
      &lt;div class=&quot;pkc-benefit&quot;&gt;
        &lt;div class=&quot;pkc-benefit-icon&quot;&gt;&lt;i class=&quot;fa-solid fa-file-code&quot;&gt;&lt;/i&gt;&lt;/div&gt;
        &lt;div&gt;
          &lt;b&gt;File RAR (STL)&lt;/b&gt;
          &lt;span&gt;Siap digunakan untuk 3D printing&lt;/span&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class=&quot;pkc-benefit&quot;&gt;
        &lt;div class=&quot;pkc-benefit-icon&quot;&gt;&lt;i class=&quot;fa-solid fa-bolt&quot;&gt;&lt;/i&gt;&lt;/div&gt;
        &lt;div&gt;
          &lt;b&gt;Download Instan&lt;/b&gt;
          &lt;span&gt;Setelah pembayaran berhasil&lt;/span&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class=&quot;pkc-benefit&quot;&gt;
        &lt;div class=&quot;pkc-benefit-icon&quot;&gt;&lt;i class=&quot;fa-solid fa-shield-halved&quot;&gt;&lt;/i&gt;&lt;/div&gt;
        &lt;div&gt;
          &lt;b&gt;Aman &amp;amp; Terjamin&lt;/b&gt;
          &lt;span&gt;Transaksi dengan Midtrans&lt;/span&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class=&quot;pkc-benefit&quot;&gt;
        &lt;div class=&quot;pkc-benefit-icon&quot;&gt;&lt;i class=&quot;fa-solid fa-headset&quot;&gt;&lt;/i&gt;&lt;/div&gt;
        &lt;div&gt;
          &lt;b&gt;Dukungan&lt;/b&gt;
          &lt;span&gt;Bantuan jika ada kendala&lt;/span&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class=&quot;pkc-offer&quot;&gt;
      &lt;div class=&quot;pkc-offer-main&quot;&gt;
        &lt;div class=&quot;pkc-quality&quot;&gt;
          &lt;div&gt;
            &lt;i class=&quot;fa-solid fa-cube&quot;&gt;&lt;/i&gt;
            &lt;b&gt;PREMIUM&lt;/b&gt;
            &lt;b&gt;STL FILE&lt;/b&gt;
            &lt;small&gt;★★★★★&lt;/small&gt;
          &lt;/div&gt;
        &lt;/div&gt;

        &lt;div class=&quot;pkc-price&quot;&gt;
          &lt;div class=&quot;pkc-price-title&quot;&gt;Harga Promo&lt;/div&gt;
          &lt;div class=&quot;pkc-price-value&quot;&gt;Rp 35000&lt;/div&gt;
          &lt;div class=&quot;pkc-price-note&quot;&gt;Sekali bayar, akses langsung&lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class=&quot;pkc-details&quot;&gt;
        &lt;div class=&quot;pkc-detail&quot;&gt;
          &lt;i class=&quot;fa-solid fa-check&quot;&gt;&lt;/i&gt;
          &lt;span&gt;File: &lt;b&gt;Enclosure_Relay_8CH_full.rar&lt;/b&gt;&lt;/span&gt;
        &lt;/div&gt;

        &lt;div class=&quot;pkc-detail&quot;&gt;
          &lt;i class=&quot;fa-solid fa-check&quot;&gt;&lt;/i&gt;
          &lt;span&gt;Format: &lt;b&gt;RAR / STL&lt;/b&gt;&lt;/span&gt;
        &lt;/div&gt;

        &lt;div class=&quot;pkc-detail&quot;&gt;
          &lt;i class=&quot;fa-solid fa-check&quot;&gt;&lt;/i&gt;
          &lt;span&gt;Akses: &lt;b&gt;Instan Setelah Bayar&lt;/b&gt;&lt;/span&gt;
        &lt;/div&gt;

        &lt;div class=&quot;pkc-detail&quot;&gt;
          &lt;i class=&quot;fa-solid fa-check&quot;&gt;&lt;/i&gt;
          &lt;span&gt;Batas Download: &lt;b&gt;3x&lt;/b&gt;&lt;/span&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;!--BUTTON PAY WITH PRODUCT ID: CASING_RELAY_8CH--&gt;
    &lt;a class=&quot;pkc-pay&quot; href=&quot;https://paklekstore.com/midtrans-download/public/transaksi.php?product_id=CASING_RELAY_8CH&amp;amp;redirect=1&quot; id=&quot;payBtn&quot; onclick=&quot;preparePayment(this)&quot;&gt;
      &lt;span class=&quot;pkc-pay-icon&quot;&gt;&lt;i class=&quot;fa-solid fa-lock&quot;&gt;&lt;/i&gt;&lt;/span&gt;
      &lt;span class=&quot;pkc-pay-text&quot;&gt;
        BAYAR &amp;amp; DOWNLOAD STL
        &lt;small&gt;Pembayaran aman dengan Midtrans&lt;/small&gt;
      &lt;/span&gt;
      &lt;span class=&quot;pkc-pay-icon&quot;&gt;&lt;i class=&quot;fa-solid fa-arrow-right&quot;&gt;&lt;/i&gt;&lt;/span&gt;
    &lt;/a&gt;

    &lt;div class=&quot;pkc-trust&quot;&gt;
      &lt;i class=&quot;fa-solid fa-circle-check&quot;&gt;&lt;/i&gt;
      &lt;div&gt;
        &lt;b&gt;100% Aman &amp;amp; Terjamin&lt;/b&gt;
        &lt;span&gt;Transaksi diproses melalui sistem pembayaran resmi.&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class=&quot;pkc-payments&quot;&gt;
      &lt;div class=&quot;pkc-payments-title&quot;&gt;Metode Pembayaran&lt;/div&gt;
      &lt;div class=&quot;pkc-payment-icons&quot;&gt;
        &lt;i class=&quot;fa-solid fa-qrcode&quot; title=&quot;QRIS&quot;&gt;&lt;/i&gt;
        &lt;i class=&quot;fa-solid fa-building-columns&quot; title=&quot;Bank Transfer&quot;&gt;&lt;/i&gt;
        &lt;i class=&quot;fa-solid fa-wallet&quot; title=&quot;E-Wallet&quot;&gt;&lt;/i&gt;
        &lt;i class=&quot;fa-solid fa-credit-card&quot; title=&quot;Credit Card&quot;&gt;&lt;/i&gt;
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class=&quot;pkc-help&quot;&gt;
      &lt;i class=&quot;fa-brands fa-whatsapp&quot;&gt;&lt;/i&gt;
      &lt;span&gt;Kendala saat download?&lt;/span&gt;
      &lt;a href=&quot;https://wa.me/6281266681364&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;WhatsApp&lt;/a&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;!--5. CASING FISIK--&gt;
  &lt;div class=&quot;pkstore-card&quot;&gt;
    &lt;div class=&quot;pkstore-icon&quot;&gt;
      &lt;i class=&quot;fa-solid fa-store&quot;&gt;&lt;/i&gt;
    &lt;/div&gt;
    &lt;h3&gt;Ingin Casing yang Sudah Jadi?&lt;/h3&gt;
    &lt;p&gt;
      Tidak memiliki printer 3D atau tidak ingin mencetak casing sendiri? Casing Relay 8CH ini juga dapat dipesan dalam bentuk casing yang sudah dicetak dan siap digunakan.
    &lt;/p&gt;
    &lt;a class=&quot;pkstore-btn&quot; href=&quot;https://paklekstore.com/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;
      &lt;i class=&quot;fa-solid fa-cart-shopping&quot;&gt;&lt;/i&gt; BELI DI PAKLEK STORE
    &lt;/a&gt;
  &lt;/div&gt;

  &lt;!--6. INFORMASI TAMBAHAN--&gt;
  &lt;div class=&quot;pksection&quot;&gt;
    &lt;h2&gt;Bagaimana File STL Didapatkan?&lt;/h2&gt;
    &lt;p&gt;
      Proses download menggunakan sistem pembayaran yang terhubung dengan halaman transaksi. Setelah pembayaran dinyatakan berhasil, sistem akan memberikan akses ke file secara otomatis.
    &lt;/p&gt;
    &lt;p&gt;
      Untuk keamanan, file tidak diberikan melalui link file statis secara langsung. Akses download diproses oleh sistem berdasarkan transaksi yang telah berhasil.
    &lt;/p&gt;

    &lt;div class=&quot;pkrelated&quot;&gt;
      &lt;h2&gt;Artikel Terkait&lt;/h2&gt;
      &lt;p&gt;
        Temukan tutorial elektronika, PCB, schematic, firmware, desain casing 3D, dan berbagai proyek lainnya di CaraPaklek.
      &lt;/p&gt;
    &lt;/div&gt;
  &lt;/div&gt;

&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.carapaklek.com/feeds/723314548463211075/comments/default' title='Posting Komentar'/><link rel='replies' type='text/html' href='https://www.carapaklek.com/2026/09/modul-relay-8-channel-low-high-level.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/2093917475945207513/posts/default/723314548463211075'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/2093917475945207513/posts/default/723314548463211075'/><link rel='alternate' type='text/html' href='https://www.carapaklek.com/2026/09/modul-relay-8-channel-low-high-level.html' title='CASING RELAY 8CH LOW/HIGH LEVEL TRIGGER      Versi lengkap: 3D Viewer + Artikel + Premium STL'/><author><name>carapaklek.com</name><uri>http://www.blogger.com/profile/12438575085929354819</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj84wNpqEWz7nUZmjNjPBarFLyRAZARNpnydt-LYU_GZhXNGZFUplzpWB82bcX7camGkjKhQ-KGgMvx5RMUkIl4gkJvWLq8dlBfnRdA_lNZPKfK8QjiWqasrUvzS15za_c0-zdUM_aAJ39EGM5XGzVoH0xzAg-7mAIwM90m4_AE9y7kgQ/s220/webcamp.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg01t-o6CpXvrxLSwSIGo0M4PrUDaqjpTubtvRgTjo_SfXlbKD_hl0lcgpdaR8aqb0_sDizI_vf78nNitivfv78x2rTOydU87z1ySAYqYDV23bsy4Uqa8xsI2aUcnXr3mVl5e-psKaj9kFBAX9iBciG63r5Xp5RYXWci8YMcl8uyH-mgsJJ_Jk0RUGKyKHa/s72-w400-h400-c/imagerelay8ch.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2093917475945207513.post-7573684023944916404</id><published>2026-07-31T09:20:58.229+07:00</published><updated>2026-07-31T10:21:38.387+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Arduino"/><category scheme="http://www.blogger.com/atom/ns#" term="esspressif"/><category scheme="http://www.blogger.com/atom/ns#" term="schematic"/><category scheme="http://www.blogger.com/atom/ns#" term="Teknologi"/><title type='text'>Cara Menyalakan Pompa Air Menggunakan HP Android (Lengkap dengan Wiring Kontaktor &amp; Blynk)</title><content type='html'>&lt;!--TABLE OF CONTENTS--&gt;
&lt;h2&gt;Table of Contents&lt;/h2&gt;
&lt;ol id=&quot;toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#section1&quot;&gt;Pendahuluan: Kenapa Perlu Otomasi Pompa Air?&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#section2&quot;&gt;Keuntungan Sistem Otomasi Berbasis Kontaktor&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#section3&quot;&gt;Daftar Komponen &amp;amp; Peralatan yang Dibutuhkan&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#section4&quot;&gt;Prinsip Kerja Rangkaian&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#section5&quot;&gt;Panduan Wiring Rangkaian (ESP32 + Kontaktor + Pompa)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#section6&quot;&gt;Langkah Konfigurasi Aplikasi Blynk di HP Android&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#section7&quot;&gt;Prosedur Pengujian dan Tip Keamanan Listrik&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#section8&quot;&gt;Kesimpulan&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;



&lt;!--KONTEN ISI UTAMA--&gt;

&lt;h2 id=&quot;section1&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhB482RizPtHK_wdMctRSCj74yGLWP8sfpqKFpgI7ax4YwaPlqXHbg-uosYAsKbYjyTuCYbeA5bM7DleziFlFi0r_3f2Gs9CWYuoavFc-nn7LGg4FCh693GxR_FXRHX2umv8duiWWFeIVqbwZud4-Cv2STcyY6BXG2E9Oi00_aGuIhzL5dFGfxMci-cUSeC&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;768&quot; data-original-width=&quot;1376&quot; height=&quot;358&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhB482RizPtHK_wdMctRSCj74yGLWP8sfpqKFpgI7ax4YwaPlqXHbg-uosYAsKbYjyTuCYbeA5bM7DleziFlFi0r_3f2Gs9CWYuoavFc-nn7LGg4FCh693GxR_FXRHX2umv8duiWWFeIVqbwZud4-Cv2STcyY6BXG2E9Oi00_aGuIhzL5dFGfxMci-cUSeC=w640-h358&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&lt;/h2&gt;&lt;h2 id=&quot;section1&quot;&gt;1. Pendahuluan: Kenapa Perlu Otomasi Pompa Air?&lt;/h2&gt;
&lt;p&gt;Menyalakan dan mematikan pompa air secara manual sering kali merepotkan. Mulai dari harus berjalan ke sakelar/stop kontak saat malam hari, hingga risiko lupa mematikan pompa yang menyebabkan penampungan air tumpah dan pemborosan listrik.&lt;/p&gt;
&lt;p&gt;Di era &lt;i&gt;Smart Home&lt;/i&gt; saat ini, Anda bisa mengontrol pompa air langsung dari genggaman menggunakan HP Android melalui jaringan internet. Dengan bantuan mikrokontroler &lt;b&gt;ESP32&lt;/b&gt; dan platform &lt;b&gt;Blynk&lt;/b&gt;, Anda tidak hanya bisa menyalakan pompa dari dalam rumah, tetapi juga dari mana saja selama HP Anda terhubung ke internet.&lt;/p&gt;
&lt;p&gt;Artikel ini akan membahas panduan lengkap, aman, dan berstandar teknis untuk membuat kontrol pompa air pintar sendiri di rumah.&lt;/p&gt;

&lt;h2 id=&quot;section2&quot;&gt;2. Keuntungan Sistem Otomasi Berbasis Kontaktor&lt;/h2&gt;
&lt;p&gt;Banyak tutorial DIY yang menyarankan menghubungkan langsung pompa air ke modul relay biru kecil (SRD-05VDC). Namun, metode tersebut &lt;b&gt;SANGAT TIDAK DIREKOMENDASIKAN&lt;/b&gt; untuk jangka panjang!&lt;/p&gt;
&lt;p&gt;Pompa air memiliki karakteristik beban induktif dengan lonjakan arus awal (&lt;i&gt;inrush current&lt;/i&gt;) yang tinggi saat pertama kali dinyalakan. Jika hanya menggunakan relay kecil, kontak mekanis di dalamnya akan cepat aus, lengket, bahkan berisiko terbakar.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEi9sbzxCOTMXX_Qqdostv6lZjtUzLmSmb7u6GpSvZ4Btgmya9fSHZO8YnrOonlydBh1Xxxz8_BHznavO7dmF9WvAblkY6puGDQo-6jq_7kLrF8OQZCM0vopazvl2hr-LUAHH7GpHjxDscIJILJT6JcsgAWwOPwIJxcFcu6Z45Fm-AARFBptF88IaUMfT5Cf&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;2002&quot; data-original-width=&quot;2002&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEi9sbzxCOTMXX_Qqdostv6lZjtUzLmSmb7u6GpSvZ4Btgmya9fSHZO8YnrOonlydBh1Xxxz8_BHznavO7dmF9WvAblkY6puGDQo-6jq_7kLrF8OQZCM0vopazvl2hr-LUAHH7GpHjxDscIJILJT6JcsgAWwOPwIJxcFcu6Z45Fm-AARFBptF88IaUMfT5Cf=w640-h640&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&lt;p&gt;&lt;/p&gt;

&lt;blockquote&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Keterangan Gambar:&lt;/b&gt; &lt;i&gt;Ilustrasi modul ESP32, Modul Relay, dan Kontaktor AC Schneider.&lt;/i&gt;&lt;/li&gt;
    &lt;li&gt;&lt;b&gt;Alt Text:&lt;/b&gt; &lt;i&gt;Komponen smart home kontrol pompa air ESP32 Blynk dan kontaktor AC&lt;/i&gt;&lt;/li&gt;
  &lt;/ul&gt;
&lt;/blockquote&gt;

&lt;h3&gt;Kelebihan Menggunakan Tambahan Kontaktor AC:&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;b&gt;Keamanan Maksimal:&lt;/b&gt; Relay kecil pada board ESP32 hanya bertugas mengalirkan arus kecil untuk memicu koil kontaktor.&lt;/li&gt;
  &lt;li&gt;&lt;b&gt;Daya Tahan Tinggi:&lt;/b&gt; Kontaktor AC (misalnya rating 25A) dirancang khusus untuk menangani lonjakan arus motor listrik/pompa air.&lt;/li&gt;
  &lt;li&gt;&lt;b&gt;Isolasi Rangkaian:&lt;/b&gt; Rangkaian mikrokontroler aman dari balik lonjakan tegangan (&lt;i&gt;flyback voltage&lt;/i&gt;) yang berasal dari motor pompa.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;section3&quot;&gt;3. Daftar Komponen &amp;amp; Peralatan yang Dibutuhkan&lt;/h2&gt;
&lt;p&gt;Sebelum memulai proyek pembuatan sakelar pompa air berbasis HP Android ini, siapkan komponen-komponen berikut:&lt;/p&gt;

&lt;style&gt;

.cpk-shop{
margin:25px 0;
}

.cpk-title{
font-size:22px;
font-weight:bold;
margin-bottom:15px;
}

.cpk-wrapper{
position:relative;
}

.cpk-slider{

display:flex;
overflow-x:auto;
gap:15px;
scroll-behavior:smooth;
padding:5px;
scrollbar-width:none;

}

.cpk-slider::-webkit-scrollbar{
display:none;
}

.cpk-card{

min-width:190px;
max-width:190px;
background:#fff;
border-radius:12px;
overflow:hidden;
border:1px solid #eee;
box-shadow:0 2px 8px rgba(0,0,0,.08);
transition:.3s;
flex-shrink:0;

}

.cpk-card:hover{
transform:translateY(-4px);
box-shadow:0 8px 18px rgba(0,0,0,.15);
}

.cpk-card img{

width:100%;
height:170px;
object-fit:cover;

}

.cpk-info{
padding:10px;
}

.cpk-name{

font-size:14px;
font-weight:600;
height:42px;
overflow:hidden;

}

.cpk-price{

color:#ee4d2d;
font-size:20px;
font-weight:bold;
margin:8px 0;

}

.cpk-btn{

display:block;
background:#ee4d2d;
color:white!important;
text-align:center;
padding:9px;
border-radius:8px;
text-decoration:none;
font-weight:bold;

}

.cpk-btn:hover{

background:#d73211;

}

.arrow{

position:absolute;
top:40%;
transform:translateY(-50%);
width:38px;
height:38px;
border-radius:50%;
background:white;
border:none;
cursor:pointer;
box-shadow:0 2px 8px rgba(0,0,0,.2);
font-size:20px;
z-index:10;

}

.left{
left:-12px;
}

.right{
right:-12px;
}

@media(max-width:768px){

.arrow{
display:none;
}

.cpk-card{

min-width:170px;

}

}

&lt;/style&gt;

&lt;div class=&quot;cpk-shop&quot;&gt;

&lt;div class=&quot;cpk-title&quot;&gt;
🛒 Komponen yang Dibutuhkan
&lt;/div&gt;

&lt;div class=&quot;cpk-wrapper&quot;&gt;

&lt;button class=&quot;arrow left&quot; onclick=&quot;geserKiri()&quot;&gt;❮&lt;/button&gt;

&lt;div class=&quot;cpk-slider&quot; id=&quot;cpkSlider&quot;&gt;

&lt;div class=&quot;cpk-card&quot;&gt;

&lt;img src=&quot;https://down-id.img.susercontent.com/file/sg-11134201-820lq-mnl9fxmewr9dbb@resize_w450_nl.webp&quot; /&gt;

&lt;div class=&quot;cpk-info&quot;&gt;

&lt;div class=&quot;cpk-name&quot;&gt;
ESP32 DevKit V4
&lt;/div&gt;

&lt;div class=&quot;cpk-price&quot;&gt;
Rp79.000
&lt;/div&gt;

&lt;a class=&quot;cpk-btn&quot; href=&quot;https://s.shopee.co.id/5fnYRG7MYC&quot; target=&quot;_blank&quot;&gt;

Lihat Shopee

&lt;/a&gt;

&lt;/div&gt;

&lt;/div&gt;

&lt;div class=&quot;cpk-card&quot;&gt;

&lt;img src=&quot;https://down-id.img.susercontent.com/file/id-11134207-7r98t-lp7wflwalabe79@resize_w450_nl.webp&quot; /&gt;

&lt;div class=&quot;cpk-info&quot;&gt;

&lt;div class=&quot;cpk-name&quot;&gt;
IO Expansion Shield ESP32 WROOM DevkitC V4 38 Pin + Relay High Trigger
&lt;/div&gt;

&lt;div class=&quot;cpk-price&quot;&gt;
Rp 65.000
&lt;/div&gt;

&lt;a class=&quot;cpk-btn&quot; href=&quot;https://s.shopee.co.id/4Aym7guJyp&quot; target=&quot;_blank&quot;&gt;

Lihat Shopee

&lt;/a&gt;

&lt;/div&gt;

&lt;/div&gt;

&lt;div class=&quot;cpk-card&quot;&gt;

&lt;img src=&quot;https://down-id.img.susercontent.com/file/id-11134207-822ws-mlrmer79j75x69@resize_w450_nl.webp&quot; /&gt;

&lt;div class=&quot;cpk-info&quot;&gt;

&lt;div class=&quot;cpk-name&quot;&gt;
Kontaktor LC1D09 M7 25A Kontaktor LC1D09M7 original body hitam 220V/380V/110V/24V VC1D09Q7 VC1D09M7
&lt;/div&gt;

&lt;div class=&quot;cpk-price&quot;&gt;
Rp 169.000
&lt;/div&gt;

&lt;a class=&quot;cpk-btn&quot; href=&quot;https://s.shopee.co.id/7AcNhrPWJs&quot; rel=&quot;nofollow sponsored&quot; target=&quot;_blank&quot;&gt;

Lihat Shopee

&lt;/a&gt;

&lt;/div&gt;

&lt;/div&gt;

&lt;div class=&quot;cpk-card&quot;&gt;

&lt;img src=&quot;https://down-id.img.susercontent.com/file/id-11134207-7r98t-lxf3v2ux799o95@resize_w450_nl.webp&quot; /&gt;

&lt;div class=&quot;cpk-info&quot;&gt;

&lt;div class=&quot;cpk-name&quot;&gt;
Contactor Kontaktor LC1D25M7
&lt;/div&gt;

&lt;div class=&quot;cpk-price&quot;&gt;
Rp173.000
&lt;/div&gt;

&lt;a class=&quot;cpk-btn&quot; href=&quot;https://s.shopee.co.id/5fnZv20fo0&quot; target=&quot;_blank&quot;&gt;

Lihat Shopee

&lt;/a&gt;

&lt;/div&gt;

&lt;/div&gt;

&lt;/div&gt;

&lt;button class=&quot;arrow right&quot; onclick=&quot;geserKanan()&quot;&gt;❯&lt;/button&gt;

&lt;/div&gt;

&lt;/div&gt;

&lt;script&gt;

const slider=document.getElementById(&#39;cpkSlider&#39;);

function geserKanan(){

slider.scrollBy({
left:220,
behavior:&#39;smooth&#39;
});

}

function geserKiri(){

slider.scrollBy({
left:-220,
behavior:&#39;smooth&#39;
});

}

&lt;/script&gt;

&lt;!--sembunyikan dari sini
&lt;table border=&quot;1&quot; style=&quot;border-collapse: collapse; width: 100%;&quot;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th style=&quot;padding: 8px;&quot;&gt;Nama Komponen&lt;/th&gt;
      &lt;th style=&quot;padding: 8px;&quot;&gt;Fungsi Utama&lt;/th&gt;
      &lt;th style=&quot;padding: 8px;&quot;&gt;Spesifikasi Rekomendasi&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&quot;padding: 8px;&quot;&gt;&lt;b&gt;ESP32 Development Board&lt;/b&gt;&lt;/td&gt;
      &lt;td style=&quot;padding: 8px;&quot;&gt;Otak pemroses sinyal IoT &amp;amp; pemancar Wi-Fi&lt;/td&gt;
      &lt;td style=&quot;padding: 8px;&quot;&gt;ESP-32D / ESP32 NodeMCU&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;padding: 8px;&quot;&gt;&lt;b&gt;Relay Shield / Module&lt;/b&gt;&lt;/td&gt;
      &lt;td style=&quot;padding: 8px;&quot;&gt;Sakelar perantara pemicu kontaktor&lt;/td&gt;
      &lt;td style=&quot;padding: 8px;&quot;&gt;Modul Relay 1 Channel (5V / 3.3V)&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;padding: 8px;&quot;&gt;&lt;b&gt;Kontaktor AC 220V&lt;/b&gt;&lt;/td&gt;
      &lt;td style=&quot;padding: 8px;&quot;&gt;Sakelar daya utama pemutus &amp;amp; penyambung pompa&lt;/td&gt;
      &lt;td style=&quot;padding: 8px;&quot;&gt;Schneider TeSys / sejenis (Coil 220V, Kontak 25A)&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;padding: 8px;&quot;&gt;&lt;b&gt;Pompa Air&lt;/b&gt;&lt;/td&gt;
      &lt;td style=&quot;padding: 8px;&quot;&gt;Beban utama yang akan dikontrol&lt;/td&gt;
      &lt;td style=&quot;padding: 8px;&quot;&gt;Pompa Sumur Dangkal / Jetpump (125W - 500W)&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;padding: 8px;&quot;&gt;&lt;b&gt;Stop Kontak &amp;amp; Kabel&lt;/b&gt;&lt;/td&gt;
      &lt;td style=&quot;padding: 8px;&quot;&gt;Jalur distribusi daya ke pompa dan PLN&lt;/td&gt;
      &lt;td style=&quot;padding: 8px;&quot;&gt;Kabel NYM 2x1.5mm² atau NYMHY&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;padding: 8px;&quot;&gt;&lt;b&gt;Power Supply / Adaptor&lt;/b&gt;&lt;/td&gt;
      &lt;td style=&quot;padding: 8px;&quot;&gt;Pemberi daya ke Board ESP32&lt;/td&gt;
      &lt;td style=&quot;padding: 8px;&quot;&gt;Adaptor 5V / 12V DC (Sesuai Board)&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;padding: 8px;&quot;&gt;&lt;b&gt;Aplikasi Blynk&lt;/b&gt;&lt;/td&gt;
      &lt;td style=&quot;padding: 8px;&quot;&gt;Antarmuka kontrol di HP Android&lt;/td&gt;
      &lt;td style=&quot;padding: 8px;&quot;&gt;Blynk IoT (Tersedia di Play Store)&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

sampai sini--&gt;

&lt;h2 id=&quot;section4&quot;&gt;4. Prinsip Kerja Rangkaian&lt;/h2&gt;
&lt;p&gt;Cara kerja sistem ini sangat sederhana namun mengutamakan keamanan:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;&lt;b&gt;Perintah dari HP:&lt;/b&gt; Anda menekan tombol &lt;i&gt;ON/OFF&lt;/i&gt; pada aplikasi Blynk di HP Android.&lt;/li&gt;
  &lt;li&gt;&lt;b&gt;ESP32 Menerima Sinyal:&lt;/b&gt; ESP32 yang terhubung ke jaringan Wi-Fi rumah menerima perintah dari &lt;i&gt;cloud server&lt;/i&gt; Blynk.&lt;/li&gt;
  &lt;li&gt;&lt;b&gt;Pemicuan Relay:&lt;/b&gt; Pin GPIO ESP32 memberikan sinyal logika untuk mengaktifkan modul relay (&lt;i&gt;NO/COM menyambung&lt;/i&gt;).&lt;/li&gt;
  &lt;li&gt;&lt;b&gt;Pemicuan Kontaktor:&lt;/b&gt; Listrik AC 220V dari jalur Fase mengalir melalui sakelar relay menuju ke terminal koil (&lt;b&gt;A1&lt;/b&gt;) pada kontaktor.&lt;/li&gt;
  &lt;li&gt;&lt;b&gt;Pompa Menyala:&lt;/b&gt; Koil kontaktor yang mendapat tegangan 220V akan menarik sakelar daya utama (&lt;b&gt;1L1-2T1&lt;/b&gt; dan &lt;b&gt;3L2-4T2&lt;/b&gt;), sehingga aliran listrik besar mengalir ke stop kontak dan menyalakan pompa air.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;section5&quot;&gt;5. Panduan Wiring Rangkaian (ESP32 + Kontaktor + Pompa)&lt;/h2&gt;
&lt;p&gt;Pastikan instalasi listrik rumah Anda dalam keadaan padam (MCB dimatikan) saat melakukan proses pengkabelan!&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEh_LoIXTf6qlnGnkaci4wh_Pfw0H-JtuL5PAoR9wdRzB1JII_DDTaW8UYFrrt-DJPpFWNkm1i_omdWptxmjeeYmpUPfj7bx_LW9pfXSN8rK0muJ9GeBJBzWY3jLw9sEDDXauRJGnOSBw0WlNESGUT9AQYqmEvyFf2ZBPDdFSMoL7g_8wkr-M2FKEb96yyEg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;2002&quot; data-original-width=&quot;2002&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEh_LoIXTf6qlnGnkaci4wh_Pfw0H-JtuL5PAoR9wdRzB1JII_DDTaW8UYFrrt-DJPpFWNkm1i_omdWptxmjeeYmpUPfj7bx_LW9pfXSN8rK0muJ9GeBJBzWY3jLw9sEDDXauRJGnOSBw0WlNESGUT9AQYqmEvyFf2ZBPDdFSMoL7g_8wkr-M2FKEb96yyEg=w640-h640&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&lt;p&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;br /&gt;&lt;/p&gt;
  &lt;ul&gt;&lt;li&gt;&lt;b&gt;Keterangan Gambar:&lt;/b&gt; &lt;i&gt;Diagram jalur pengkabelan (Wiring Diagram) lengkap antara ESP32, Relay, Kontaktor AC 220V, PLN, Stop Kontak, dan Pompa Air.&lt;/i&gt;&lt;/li&gt;
    &lt;li&gt;&lt;b&gt;Alt Text:&lt;/b&gt; &lt;i&gt;Skema wiring diagram cara menyalakan pompa air dengan ESP32 blynk dan kontaktor AC&lt;/i&gt;&lt;/li&gt;
  &lt;/ul&gt;
&lt;/blockquote&gt;

&lt;h3&gt;A. Rangkaian Kontrol (Pemicu Koil Kontaktor)&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;Hubungkan kabel &lt;b&gt;Fase (F)&lt;/b&gt; dari PLN ke terminal &lt;b&gt;NO&lt;/b&gt; (Normally Open) pada modul relay ESP32.&lt;/li&gt;
  &lt;li&gt;Sambungkan cabang kabel &lt;b&gt;Fase (F)&lt;/b&gt; PLN yang sama ke terminal &lt;b&gt;1L1&lt;/b&gt; (Input Daya Kontaktor).&lt;/li&gt;
  &lt;li&gt;Hubungkan kabel dari terminal &lt;b&gt;COM&lt;/b&gt; relay ke terminal &lt;b&gt;A1&lt;/b&gt; (Koil Kontaktor).&lt;/li&gt;
  &lt;li&gt;Hubungkan kabel &lt;b&gt;Netral (N)&lt;/b&gt; PLN ke terminal &lt;b&gt;A2&lt;/b&gt; (Koil Kontaktor) dan cabangkan ke terminal &lt;b&gt;3L2&lt;/b&gt; (Input Daya Kontaktor).&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;B. Rangkaian Daya (Output ke Pompa Air)&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;Terminal &lt;b&gt;2T1&lt;/b&gt; pada kontaktor dihubungkan ke salah satu pin pada Stop Kontak (&lt;b&gt;Fase Pompa&lt;/b&gt;).&lt;/li&gt;
  &lt;li&gt;Terminal &lt;b&gt;4T2&lt;/b&gt; pada kontaktor dihubungkan ke pin lainnya pada Stop Kontak (&lt;b&gt;Netral Pompa&lt;/b&gt;).&lt;/li&gt;
  &lt;li&gt;Colokkan steker pompa air ke Stop Kontak tersebut.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;section6&quot;&gt;6. Langkah Konfigurasi Aplikasi Blynk di HP Android&lt;/h2&gt;
&lt;p&gt;Setelah pengkabelan fisik selesai, langkah berikutnya adalah mengatur aplikasi di HP Android Anda.&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgVlndFS-kEYq8as2RFKz_YDKfNPYvrQfts4XY81Qa1G6FIHqXZKR-C6GzBD0vIcMv1DghL16xPvDK0Nd3RMPVsO_3QEPh1T8LKDF-NyeqyMFcYUx2snVJrBVWhNBAxSf0WgP1lkPFJ1aX8YVgvcb5DLN5pu0-mMxMQVISlL7bxBDnzOCPhlym0L4iHf-9W&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;1600&quot; data-original-width=&quot;720&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgVlndFS-kEYq8as2RFKz_YDKfNPYvrQfts4XY81Qa1G6FIHqXZKR-C6GzBD0vIcMv1DghL16xPvDK0Nd3RMPVsO_3QEPh1T8LKDF-NyeqyMFcYUx2snVJrBVWhNBAxSf0WgP1lkPFJ1aX8YVgvcb5DLN5pu0-mMxMQVISlL7bxBDnzOCPhlym0L4iHf-9W=w288-h640&quot; width=&quot;288&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;/p&gt;
  &lt;ul&gt;&lt;li&gt;&lt;b&gt;Keterangan Gambar:&lt;/b&gt; &lt;i&gt;Tampilan antarmuka Blynk IoT di HP Android dengan Button Widget.&lt;/i&gt;&lt;/li&gt;
    &lt;li&gt;&lt;b&gt;Alt Text:&lt;/b&gt; &lt;i&gt;Tampilan aplikasi Blynk IoT Android kontrol pompa air&lt;/i&gt;&lt;/li&gt;
  &lt;/ul&gt;
&lt;/blockquote&gt;

&lt;h3&gt;Langkah-langkah Setting Blynk:&lt;/h3&gt;
&lt;ol&gt;
  &lt;li&gt;&lt;b&gt;Unduh Aplikasi:&lt;/b&gt; Buka Google Play Store dan cari &lt;b&gt;Blynk IoT&lt;/b&gt;, lalu &lt;i&gt;install&lt;/i&gt;.&lt;/li&gt;
  &lt;li&gt;&lt;b&gt;Buat Akun &amp;amp; Template:&lt;/b&gt;
    &lt;ul&gt;
      &lt;li&gt;Mendaftar akun baru dan buat &lt;b&gt;Template Baru&lt;/b&gt; di konsol Blynk (bisa via web browser atau aplikasi).&lt;/li&gt;
      &lt;li&gt;Pilih tipe &lt;i&gt;Hardware&lt;/i&gt;: &lt;b&gt;ESP32&lt;/b&gt;, dan tipe koneksi: &lt;b&gt;WiFi&lt;/b&gt;.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;b&gt;Buat Datastream:&lt;/b&gt;
    &lt;ul&gt;
      &lt;li&gt;Tambahkan Datastream baru tipe &lt;b&gt;Virtual Pin&lt;/b&gt;.&lt;/li&gt;
      &lt;li&gt;Pilih misal &lt;b&gt;V0&lt;/b&gt;, tipe data &lt;i&gt;Integer&lt;/i&gt; (Min: 0, Max: 1).&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;b&gt;Desain Dashboard di HP:&lt;/b&gt;
    &lt;ul&gt;
      &lt;li&gt;Buka aplikasi Blynk di HP Android Anda.&lt;/li&gt;
      &lt;li&gt;Masukkan widget &lt;b&gt;Button&lt;/b&gt; (Tombol) ke dalam layar dashboard.&lt;/li&gt;
      &lt;li&gt;Hubungkan widget Button tersebut ke &lt;b&gt;Datastream V0&lt;/b&gt; yang telah dibuat.&lt;/li&gt;
      &lt;li&gt;Atur mode tombol menjadi &lt;b&gt;Switch&lt;/b&gt; (Sakelar Latched).&lt;/li&gt;&lt;li&gt;Namun jika kalian tidak mau repot membuat template sendiri kalian bisa gunakan quick start/ template bawaan dari blynk nya&amp;nbsp;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;b&gt;Upload Kode ke ESP32:&lt;/b&gt;
    &lt;ul&gt;
      &lt;li&gt;Buka Arduino IDE di komputer.&lt;/li&gt;
      &lt;li&gt;Masukkan library &lt;code&gt;BlynkSimpleEsp32&lt;/code&gt;.&lt;/li&gt;
      &lt;li&gt;Masukkan &lt;b&gt;Template ID&lt;/b&gt;, &lt;b&gt;Device Name&lt;/b&gt;, dan &lt;b&gt;Auth Token&lt;/b&gt; dari Blynk ke dalam skrip program, lalu atur SSID dan Password Wi-Fi rumah.&lt;/li&gt;
      &lt;li&gt;Upload program ke board ESP32.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;ul&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;!--KOTAK KODE PROGRAM ESP32--&gt;
&lt;div style=&quot;background-color: #1e1e1e; border-radius: 8px; border: 1px solid rgb(51, 51, 51); font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace; margin: 20px 0px; overflow: hidden;&quot;&gt;
  
  &lt;!--HEADER KOTAK KODE &amp; TOMBOL COPY--&gt;
  &lt;div style=&quot;align-items: center; background-color: #2d2d2d; border-bottom: 1px solid rgb(51, 51, 51); display: flex; justify-content: space-between; padding: 10px 15px;&quot;&gt;
    &lt;span style=&quot;color: #cccccc; font-size: 13px; font-weight: bold;&quot;&gt;Kode Program ESP32 (Arduino IDE)&lt;/span&gt;
    &lt;button id=&quot;copyBtn&quot; onclick=&quot;copyCode()&quot; style=&quot;background-color: #007acc; border-radius: 4px; border: medium; color: white; cursor: pointer; font-size: 12px; font-weight: bold; padding: 5px 12px; transition: background 0.3s;&quot;&gt;Copy Code&lt;/button&gt;
  &lt;/div&gt;

  &lt;!--AREA KODE PROGRAM--&gt;
  &lt;pre style=&quot;color: #d4d4d4; font-size: 13px; line-height: 1.5; margin: 0px; overflow-x: auto; padding: 15px; white-space: pre;&quot;&gt;&lt;code id=&quot;codeBlock&quot;&gt;#define BLYNK_TEMPLATE_ID           &quot;TMPL6e-S***&quot; //ganti dengan id anda
#define BLYNK_TEMPLATE_NAME         &quot;Quickstart Device&quot;// ganti dengan nama template anda
#define BLYNK_AUTH_TOKEN            &quot;4mfcMuXfNd6F9hixDEQLoOPKy*******&quot; // ganti juga

#define BLYNK_PRINT Serial
#include &amp;lt;WiFi.h&amp;gt;
#include &amp;lt;WiFiClient.h&amp;gt;
#include &amp;lt;BlynkSimpleEsp32.h&amp;gt;
#include &amp;lt;WiFiManager.h&amp;gt; // Library untuk Hotspot &amp;amp; Captive Portal

// Pin GPIO ESP32 yang terhubung ke pin IN Modul Relay
#define RELAY_PIN 25 

// Logika Relay (High Level Trigger)
#define RELAY_ON   HIGH  
#define RELAY_OFF  LOW   

// Fungsi dipanggil saat tombol (V0) di Blynk ditekan
BLYNK_WRITE(V0)
{
  int value = param.asInt(); // Membaca status tombol (1 = ON, 0 = OFF)

  if (value == 1) {
    digitalWrite(RELAY_PIN, RELAY_ON);  // Relay Aktif -&amp;gt; Pompa Menyala
    Serial.println(&quot;Pompa: MENYALA (ON)&quot;);
  } else {
    digitalWrite(RELAY_PIN, RELAY_OFF); // Relay Mati -&amp;gt; Pompa Mati
    Serial.println(&quot;Pompa: MATI (OFF)&quot;);
  }
}

void setup() {
  Serial.begin(115200);

  // Inisialisasi pin relay
  pinMode(RELAY_PIN, OUTPUT);
  digitalWrite(RELAY_PIN, RELAY_OFF); // Pastikan pompa mati saat pertama kali dinyalakan

  // Inisialisasi WiFiManager
  WiFiManager wm;

  // Jika ingin menghapus histori Wi-Fi lama saat testing, hilangkan tanda // baris di bawah:
  // wm.resetSettings();

  // Membuat Hotspot bawaan bernama &quot;ESP32-Pompa-Setup&quot; jika belum terhubung Wi-Fi
  // Tampilan halaman config akan otomatis muncul di HP saat connect ke Hotspot ini
  bool res = wm.autoConnect(&quot;carapaklek.com&quot;); 

  if (!res) {
    Serial.println(&quot;Gagal terhubung ke Wi-Fi atau Timeout&quot;);
    // ESP.restart(); // Opsional: restart jika gagal
  } else {
    Serial.println(&quot;Terhubung ke Wi-Fi!&quot;);
    
    // Setelah Wi-Fi terhubung via WiFiManager, hubungkan ke Blynk
    Blynk.config(BLYNK_AUTH_TOKEN);
    Blynk.connect();
  }
}

void loop() {
  // Jalankan Blynk hanya jika ESP32 terhubung ke internet
  if (WiFi.status() == WL_CONNECTED) {
    Blynk.run();
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;!--SCRIPT JAVASCRIPT SALIN KODE--&gt;
&lt;script&gt;
function copyCode() {
  var code = document.getElementById(&quot;codeBlock&quot;).innerText;
  navigator.clipboard.writeText(code).then(function() {
    var btn = document.getElementById(&quot;copyBtn&quot;);
    btn.innerText = &quot;Copied!&quot;;
    btn.style.backgroundColor = &quot;#28a745&quot;;
    setTimeout(function() {
      btn.innerText = &quot;Copy Code&quot;;
      btn.style.backgroundColor = &quot;#007acc&quot;;
    }, 2000);
  });
}
&lt;/script&gt;

&lt;h2 id=&quot;section7&quot;&gt;7. Prosedur Pengujian dan Tip Keamanan Listrik&lt;/h2&gt;
&lt;p&gt;Sebelum sistem digunakan sehari-hari, lakukan pengujian bertahap berikut:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;&lt;b&gt;Uji Rangkaian Kontrol (Tanpa Beban Pompa):&lt;/b&gt;
    &lt;p&gt;Nyalakan ESP32 dan hubungkan ke internet. Buka aplikasi Blynk di Android, lalu tekan tombol &lt;i&gt;ON&lt;/i&gt;. Dengarkan bunyi &lt;i&gt;&quot;KLIK&quot;&lt;/i&gt; yang tegas dari kontaktor. Bunyi ini menandakan koil kontaktor berhasil teraliri listrik dan sakelar utama menarik dengan sempurna.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;b&gt;Uji Beban Pompa Air:&lt;/b&gt;
    &lt;p&gt;Setelah kontrol berjalan lancar, colokkan pompa air ke stop kontak keluaran kontaktor. Tekan tombol &lt;i&gt;ON&lt;/i&gt; di Blynk → Pompa air harus langsung menyala dan mengalirkan air. Tekan tombol &lt;i&gt;OFF&lt;/i&gt; di Blynk → Kontaktor terlepas dan pompa air mati seketika.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;Tip Keamanan Penting:&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;b&gt;Gunakan MCB Tambahan:&lt;/b&gt; Pasang MCB khusus (misal 6A) di jalur Fase sebelum masuk ke rangkaian ini sebagai pengaman dari hubungan arus pendek (&lt;i&gt;short circuit&lt;/i&gt;).&lt;/li&gt;
  &lt;li&gt;&lt;b&gt;Gunakan Box Panel (Enclosure):&lt;/b&gt; Masukkan board ESP32, relay, dan kontaktor ke dalam box panel plastik agar terhindar dari cipratan air dan jangkauan anak-anak.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;section8&quot;&gt;8. Kesimpulan&lt;/h2&gt;
&lt;p&gt;Mengontrol pompa air menggunakan HP Android bukan lagi hal yang rumit dan mahal. Dengan mengombinasikan &lt;b&gt;ESP32&lt;/b&gt;, &lt;b&gt;Blynk&lt;/b&gt;, dan &lt;b&gt;Kontaktor AC 220V&lt;/b&gt;, Anda mendapatkan sistem &lt;i&gt;smart home&lt;/i&gt; yang tidak hanya canggih tetapi juga aman dan tahan lama dari risiko kerusakan akibat beban induktif motor listrik.&lt;/p&gt;
&lt;p&gt;Sekarang Anda bisa menyalakan pompa air kapan saja dan di mana saja tanpa perlu beranjak dari tempat duduk Anda!&lt;/p&gt;&lt;p&gt;&amp;nbsp;Baca Juga :&lt;a href=&quot;https://www.carapaklek.com/2026/05/membuat-tombol-touchscreen-onoff-esp32.html&quot; target=&quot;_blank&quot;&gt; Membuat Tombol Touchscreen ON/OFF ESP32 untuk Mengontrol Relay dan Lampu di TFT ILI9488&amp;nbsp;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Tutorial Vidio yutube official kami :&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;iframe allowfullscreen=&quot;&quot; class=&quot;BLOG_video_class&quot; height=&quot;322&quot; src=&quot;https://www.youtube.com/embed/EiaQJLqWZlE&quot; width=&quot;484&quot; youtube-src-id=&quot;EiaQJLqWZlE&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&lt;p&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.carapaklek.com/feeds/7573684023944916404/comments/default' title='Posting Komentar'/><link rel='replies' type='text/html' href='https://www.carapaklek.com/2026/07/cara-menyalakan-pompa-air-menggunakan.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/2093917475945207513/posts/default/7573684023944916404'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/2093917475945207513/posts/default/7573684023944916404'/><link rel='alternate' type='text/html' href='https://www.carapaklek.com/2026/07/cara-menyalakan-pompa-air-menggunakan.html' title='Cara Menyalakan Pompa Air Menggunakan HP Android (Lengkap dengan Wiring Kontaktor &amp; Blynk)'/><author><name>carapaklek.com</name><uri>http://www.blogger.com/profile/12438575085929354819</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj84wNpqEWz7nUZmjNjPBarFLyRAZARNpnydt-LYU_GZhXNGZFUplzpWB82bcX7camGkjKhQ-KGgMvx5RMUkIl4gkJvWLq8dlBfnRdA_lNZPKfK8QjiWqasrUvzS15za_c0-zdUM_aAJ39EGM5XGzVoH0xzAg-7mAIwM90m4_AE9y7kgQ/s220/webcamp.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEhB482RizPtHK_wdMctRSCj74yGLWP8sfpqKFpgI7ax4YwaPlqXHbg-uosYAsKbYjyTuCYbeA5bM7DleziFlFi0r_3f2Gs9CWYuoavFc-nn7LGg4FCh693GxR_FXRHX2umv8duiWWFeIVqbwZud4-Cv2STcyY6BXG2E9Oi00_aGuIhzL5dFGfxMci-cUSeC=s72-w640-h358-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2093917475945207513.post-1793809640211990922</id><published>2026-07-02T12:07:20.939+07:00</published><updated>2026-07-02T12:07:20.939+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Arduino"/><category scheme="http://www.blogger.com/atom/ns#" term="esspressif"/><category scheme="http://www.blogger.com/atom/ns#" term="komputer"/><category scheme="http://www.blogger.com/atom/ns#" term="Teknologi"/><title type='text'>Mengatasi RFID RC522 yang Error Setelah Relay Menyala dan Hanya Bisa Tap Sekali: Masalah yang Sering Saya Temui</title><content type='html'>&lt;p&gt;RFID RC522 merupakan salah satu modul yang paling sering digunakan dalam berbagai proyek Arduino, mulai dari sistem absensi, akses kontrol pintu, parkir otomatis, hingga mesin berbasis koin dan kartu. Harganya yang terjangkau serta kemudahan integrasinya membuat modul ini menjadi pilihan favorit para maker dan teknisi.&lt;/p&gt;

&lt;p&gt;Namun, ada satu masalah yang cukup sering saya temui saat membantu teman, pelanggan, maupun subscriber, yaitu &lt;b&gt;RFID RC522 hanya bisa membaca kartu sekali saja. Setelah relay aktif dan kembali mati, kartu tidak dapat dibaca lagi seolah-olah modul mengalami error atau hang.&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Banyak orang langsung menyimpulkan bahwa modul RC522 rusak, catu daya kurang stabil, atau relay menyebabkan gangguan pada RFID. Padahal setelah melakukan berbagai pengujian, saya menemukan bahwa pada beberapa kasus penyebabnya justru berasal dari logika program yang digunakan.&lt;/p&gt;

&lt;p&gt;Pada artikel ini saya akan membahas pengalaman tersebut secara lengkap agar Anda tidak perlu buru-buru mengganti modul RC522 yang sebenarnya masih dalam kondisi baik.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEic4SG0diNjydohb7g2xo6Gaqgsf_KWhHYSg7cyYPzb94uY41fOMBjg3qWWwrUBQ8MpHbkvCNXdMhtrjU5g8g9RJeKX1umBhT_MMInp9R5wg2F5K_ONhgy8_Dgprxd84-LWX4yxruidgErRSqJbF1Wm81wum7ID4IQQukxsZasWuPg38qwEvE8NNUNnAjXh&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;2483&quot; data-original-width=&quot;3510&quot; height=&quot;452&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEic4SG0diNjydohb7g2xo6Gaqgsf_KWhHYSg7cyYPzb94uY41fOMBjg3qWWwrUBQ8MpHbkvCNXdMhtrjU5g8g9RJeKX1umBhT_MMInp9R5wg2F5K_ONhgy8_Dgprxd84-LWX4yxruidgErRSqJbF1Wm81wum7ID4IQQukxsZasWuPg38qwEvE8NNUNnAjXh=w640-h452&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;

&lt;div style=&quot;background: rgb(249, 249, 249); border-radius: 5px; border: 1px solid rgb(221, 221, 221); margin: 20px 0px; padding: 15px;&quot;&gt;
  &lt;h3 style=&quot;margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;📚 Table of Contents&lt;/span&gt;&lt;/h3&gt;
  &lt;ul style=&quot;line-height: 1.8; list-style: none; margin-bottom: 0px; padding-left: 0px;&quot;&gt;
    &lt;li&gt;&lt;a href=&quot;#step1&quot; style=&quot;text-decoration: none;&quot;&gt;1️⃣ Mengenal Gejala yang Sering Terjadi&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#step2&quot; style=&quot;text-decoration: none;&quot;&gt;2️⃣ Dugaan Penyebab yang Biasanya Muncul&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#step3&quot; style=&quot;text-decoration: none;&quot;&gt;3️⃣ Pengujian Awal yang Saya Lakukan&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#step4&quot; style=&quot;text-decoration: none;&quot;&gt;4️⃣ Kenapa RC522 Terlihat Seperti Error?&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#step5&quot; style=&quot;text-decoration: none;&quot;&gt;5️⃣ Penyebab Sebenarnya yang Saya Temukan&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#step6&quot; style=&quot;text-decoration: none;&quot;&gt;6️⃣ Contoh Program yang Menyebabkan RFID Hanya Bisa Tap Sekali&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#step7&quot; style=&quot;text-decoration: none;&quot;&gt;7️⃣ Cara Memperbaikinya&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#step8&quot; style=&quot;text-decoration: none;&quot;&gt;8️⃣ Kapan Menggunakan Boolean dan Kapan Menggunakan State Machine&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#step9&quot; style=&quot;text-decoration: none;&quot;&gt;9️⃣ Tips Agar RC522 Tetap Stabil Saat Mengendalikan Relay&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#kesimpulan&quot; style=&quot;text-decoration: none;&quot;&gt;🏁 Kesimpulan&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
&lt;/div&gt;

&lt;h2 id=&quot;step1&quot;&gt;1. Mengenal Gejala yang Sering Terjadi&lt;/h2&gt;
&lt;p&gt;Biasanya rangkaian yang digunakan cukup sederhana:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Arduino Nano&lt;/li&gt;
  &lt;li&gt;RFID RC522&lt;/li&gt;
  &lt;li&gt;Modul Relay&lt;/li&gt;
  &lt;li&gt;Kartu atau Tag RFID&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Alur kerja yang diinginkan:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;Kartu ditempel.&lt;/li&gt;
  &lt;li&gt;RFID membaca UID kartu.&lt;/li&gt;
  &lt;li&gt;Relay aktif selama beberapa detik.&lt;/li&gt;
  &lt;li&gt;Relay mati kembali.&lt;/li&gt;
  &lt;li&gt;Sistem siap menerima kartu berikutnya.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Namun kenyataannya sering muncul gejala seperti berikut:&lt;/p&gt;
&lt;div style=&quot;background: rgb(245, 245, 245); border-left: 4px solid rgb(255, 87, 34); font-family: monospace; margin: 15px 0px; padding: 10px 15px;&quot;&gt;
  Tap pertama -&amp;gt; Berhasil&lt;br /&gt;
  Relay ON&lt;br /&gt;
  Relay OFF&lt;br /&gt;&lt;br /&gt;
  Tap kedua -&amp;gt; Tidak terbaca&lt;br /&gt;
  Tap ketiga -&amp;gt; Tidak terbaca&lt;br /&gt;
  Tap berikutnya -&amp;gt; Tetap tidak terbaca
&lt;/div&gt;

&lt;p&gt;Pada kondisi ini banyak pengguna langsung mengatakan:&lt;/p&gt;
&lt;blockquote style=&quot;background: rgb(249, 249, 249); border-left: 4px solid rgb(204, 204, 204); color: #555555; font-style: italic; margin: 15px 0px; padding: 10px 20px;&quot;&gt;
  &quot;RFID saya error setelah relay aktif.&quot;
&lt;/blockquote&gt;
&lt;p&gt;atau&lt;/p&gt;
&lt;blockquote style=&quot;background: rgb(249, 249, 249); border-left: 4px solid rgb(204, 204, 204); color: #555555; font-style: italic; margin: 15px 0px; padding: 10px 20px;&quot;&gt;
  &quot;RC522 hang setelah relay menyala.&quot;
&lt;/blockquote&gt;
&lt;p&gt;Padahal belum tentu demikian.&lt;/p&gt;

&lt;h2 id=&quot;step2&quot;&gt;2. Dugaan Penyebab yang Biasanya Muncul&lt;/h2&gt;
&lt;p&gt;Saat menghadapi masalah tersebut, biasanya ada beberapa dugaan yang langsung muncul.&lt;/p&gt;

&lt;h3&gt;1. Modul RC522 Rusak&lt;/h3&gt;
&lt;p&gt;Ini merupakan dugaan yang paling sering. Banyak pengguna langsung membeli modul RC522 baru karena mengira komponen sudah mengalami kerusakan. Padahal setelah modul diganti, masalah yang sama sering tetap muncul.&lt;/p&gt;

&lt;h3&gt;2. Tegangan Supply Tidak Stabil&lt;/h3&gt;
&lt;p&gt;Relay membutuhkan arus yang lebih besar dibanding RC522. Ketika relay aktif, tegangan dapat mengalami penurunan sesaat sehingga modul RFID menjadi tidak stabil. Pada beberapa kasus memang hal ini bisa terjadi.&lt;/p&gt;

&lt;h3&gt;3. Gangguan dari Relay&lt;/h3&gt;
&lt;p&gt;Relay menghasilkan medan elektromagnetik saat kontak berpindah. Jika rangkaian tidak dirancang dengan baik, gangguan ini dapat memengaruhi sistem secara keseluruhan.&lt;/p&gt;

&lt;h3&gt;4. Kesalahan Program&lt;/h3&gt;
&lt;p&gt;Inilah penyebab yang sering terlewat. Banyak pengguna fokus pada hardware dan lupa memeriksa logika program yang digunakan.&lt;/p&gt;

&lt;h2 id=&quot;step3&quot;&gt;3. Pengujian Awal yang Saya Lakukan&lt;/h2&gt;
&lt;p&gt;Ketika pertama kali menemui kasus ini, saya melakukan beberapa langkah sederhana.&lt;/p&gt;

&lt;h3&gt;Mengganti Modul RFID&lt;/h3&gt;
&lt;p&gt;Saya mencoba mengganti RC522 dengan modul lain yang masih baru. Hasilnya sama. Masalah tetap muncul.&lt;/p&gt;

&lt;h3&gt;Mengganti Relay&lt;/h3&gt;
&lt;p&gt;Relay juga saya ganti untuk memastikan tidak ada kerusakan pada modul relay. Hasilnya tetap sama.&lt;/p&gt;

&lt;h3&gt;Mengganti Kabel dan Breadboard&lt;/h3&gt;
&lt;p&gt;Seluruh koneksi diperiksa ulang. Tidak ditemukan masalah berarti.&lt;/p&gt;

&lt;h3&gt;Memantau Serial Monitor&lt;/h3&gt;
&lt;p&gt;Di sinilah saya mulai menemukan petunjuk. Saat relay selesai bekerja, Arduino ternyata masih berjalan normal. Program tidak restart. Tidak ada tanda-tanda sistem mengalami crash. Artinya kemungkinan besar masalah bukan berasal dari hardware.&lt;/p&gt;

&lt;h2 id=&quot;step4&quot;&gt;4. Kenapa RC522 Terlihat Seperti Error?&lt;/h2&gt;
&lt;p&gt;Dari sudut pandang pengguna, gejala yang muncul memang sangat mirip dengan kerusakan modul. Karena:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Tap pertama berhasil.&lt;/li&gt;
  &lt;li&gt;Relay bekerja normal.&lt;/li&gt;
  &lt;li&gt;Setelah itu kartu tidak bisa dibaca lagi.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Siapa pun yang melihatnya akan mengira RFID berhenti bekerja. Padahal sebenarnya program sudah masuk ke kondisi tertentu yang membuat proses pembacaan kartu tidak pernah dijalankan kembali. Akibatnya modul terlihat mati padahal sebenarnya masih aktif.&lt;/p&gt;

&lt;h2 id=&quot;step5&quot;&gt;5. Penyebab Sebenarnya yang Saya Temukan&lt;/h2&gt;
&lt;p&gt;Setelah memeriksa kode program, saya menemukan bahwa terdapat sebuah variabel yang digunakan untuk mengunci proses pembacaan kartu. Contohnya seperti ini:&lt;/p&gt;
&lt;p style=&quot;background: rgb(244, 244, 244); font-family: monospace; padding: 5px 10px;&quot;&gt;bool kartuSudahDipakai = false;&lt;/p&gt;
&lt;p&gt;Ketika kartu berhasil dibaca:&lt;/p&gt;
&lt;p style=&quot;background: rgb(244, 244, 244); font-family: monospace; padding: 5px 10px;&quot;&gt;kartuSudahDipakai = true;&lt;/p&gt;
&lt;p&gt;Masalahnya variabel tersebut tidak pernah dikembangkan/dikembalikan menjadi:&lt;/p&gt;
&lt;p style=&quot;background: rgb(244, 244, 244); font-family: monospace; padding: 5px 10px;&quot;&gt;kartuSudahDipakai = false;&lt;/p&gt;
&lt;p&gt;Akibatnya program terus berada dalam kondisi terkunci. Setiap kali loop berjalan, sistem langsung keluar tanpa memproses RFID lagi. Inilah yang membuat pengguna mengira RC522 mengalami error.&lt;/p&gt;

&lt;h2 id=&quot;step6&quot;&gt;6. Contoh Program yang Menyebabkan RFID Hanya Bisa Tap Sekali&lt;/h2&gt;
&lt;p&gt;Pada artikel ini saya sengaja membuat contoh program yang mengandung bug agar gejalanya mudah dipahami.&lt;/p&gt;

&lt;pre style=&quot;background: rgb(39, 40, 34); border-radius: 5px; color: #f8f8f2; font-family: monospace; line-height: 1.5; overflow: auto; padding: 15px;&quot;&gt;#include &amp;lt;SPI.h&amp;gt;
#include &amp;lt;MFRC522.h&amp;gt;

#define SS_PIN 10
#define RST_PIN 7
#define RELAY_PIN 8

MFRC522 rfid(SS_PIN, RST_PIN);

bool kartuSudahDipakai = false;

void setup() {
  Serial.begin(9600);
  SPI.begin();
  rfid.PCD_Init();

  pinMode(RELAY_PIN, OUTPUT);
  digitalWrite(RELAY_PIN, LOW);

  Serial.println(&quot;Siap membaca kartu&quot;);
}

void loop() {

  // BUG DISINI
  if (kartuSudahDipakai) {
    return;
  }

  if (!rfid.PICC_IsNewCardPresent())
    return;

  if (!rfid.PICC_ReadCardSerial())
    return;

  Serial.println(&quot;Kartu terbaca&quot;);

  digitalWrite(RELAY_PIN, HIGH);
  delay(3000);
  digitalWrite(RELAY_PIN, LOW);

  // Setelah sekali baca langsung dikunci
  kartuSudahDipakai = true;

  rfid.PICC_HaltA();
}
&lt;/pre&gt;

&lt;p&gt;Gejala yang muncul:&lt;/p&gt;
&lt;div style=&quot;background: rgb(245, 245, 245); border-left: 4px solid rgb(255, 87, 34); font-family: monospace; margin: 15px 0px; padding: 10px 15px;&quot;&gt;
  Tap pertama -&amp;gt; Berhasil&lt;br /&gt;
  Tap kedua -&amp;gt; Gagal&lt;br /&gt;
  Tap ketiga -&amp;gt; Gagal
&lt;/div&gt;
&lt;p&gt;Padahal relay dan RC522 sebenarnya masih berfungsi dengan baik.&lt;/p&gt;

&lt;h2 id=&quot;step7&quot;&gt;7. Cara Memperbaikinya&lt;/h2&gt;
&lt;p&gt;Ada beberapa cara untuk mengatasi masalah ini.&lt;/p&gt;

&lt;h3&gt;Menggunakan Reset Boolean&lt;/h3&gt;
&lt;p&gt;Cara paling sederhana adalah mengembalikan nilai boolean ke kondisi awal setelah proses selesai. Metode ini cocok untuk proyek sederhana. Misalnya:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;RFID pintu&lt;/li&gt;
  &lt;li&gt;RFID akses sederhana&lt;/li&gt;
  &lt;li&gt;RFID untuk mengaktifkan relay&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Menggunakan State Machine&lt;/h3&gt;
&lt;p&gt;Untuk proyek yang lebih kompleks saya lebih menyarankan menggunakan State Machine. Contoh alurnya:&lt;/p&gt;
&lt;p style=&quot;background: rgb(238, 238, 255); font-family: monospace; padding: 10px; text-align: center;&quot;&gt;
  MENUNGGU_KARTU → RELAY_AKTIF → MENUNGGU_KARTU_DILEPAS → MENUNGGU_KARTU
&lt;/p&gt;
&lt;p&gt;Dengan pendekatan ini program menjadi lebih mudah dikembangkan.&lt;/p&gt;

&lt;h2 id=&quot;step8&quot;&gt;8. Kapan Menggunakan Boolean dan Kapan Menggunakan State Machine?&lt;/h2&gt;
&lt;p&gt;Pertanyaan ini cukup sering muncul.&lt;/p&gt;

&lt;h3&gt;Gunakan Boolean Jika&lt;/h3&gt;
&lt;p&gt;Program hanya memiliki dua kondisi. Contoh: ON / OFF, YA / TIDAK, TRUE / FALSE. Misalnya:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Lampu&lt;/li&gt;
  &lt;li&gt;Relay&lt;/li&gt;
  &lt;li&gt;Tombol&lt;/li&gt;
  &lt;li&gt;Anti double tap RFID&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Gunakan State Machine Jika&lt;/h3&gt;
&lt;p&gt;Program memiliki beberapa tahapan proses. Contoh:&lt;/p&gt;
&lt;p style=&quot;background: rgb(255, 243, 205); border-left: 4px solid rgb(255, 193, 7); font-family: monospace; line-height: 1.6; padding: 10px;&quot;&gt;
  Menunggu Kartu → Kartu Valid → Relay Aktif → Waktu Habis → Menunggu Kartu Dilepas → Kembali Menunggu Kartu
&lt;/p&gt;
&lt;p&gt;Semakin kompleks proyek, semakin terasa manfaat State Machine.&lt;/p&gt;

&lt;h2 id=&quot;step9&quot;&gt;9. Tips Agar RC522 Tetap Stabil Saat Mengendalikan Relay&lt;/h2&gt;
&lt;p&gt;Walaupun pada kasus saya penyebab utama berasal dari program, bukan berarti faktor hardware boleh diabaikan. Beberapa tips berikut tetap saya rekomendasikan:&lt;/p&gt;

&lt;h3&gt;Gunakan Supply yang Stabil&lt;/h3&gt;
&lt;p&gt;Pastikan adaptor mampu menyuplai arus yang cukup.&lt;/p&gt;

&lt;h3&gt;Tambahkan Kapasitor Elco&lt;/h3&gt;
&lt;p&gt;Kapasitor 470µF hingga 1000µF pada jalur 5V dapat membantu mengurangi penurunan tegangan saat relay aktif.&lt;/p&gt;

&lt;h3&gt;Tambahkan Kapasitor 100nF Dekat RC522&lt;/h3&gt;
&lt;p&gt;Kapasitor ini berfungsi sebagai bypass capacitor untuk mengurangi noise.&lt;/p&gt;

&lt;h3&gt;Gunakan Wiring yang Benar&lt;/h3&gt;
&lt;p&gt;Pastikan koneksi SPI sesuai standar:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;SDA → D10&lt;/li&gt;
  &lt;li&gt;SCK → D13&lt;/li&gt;
  &lt;li&gt;MOSI → D11&lt;/li&gt;
  &lt;li&gt;MISO → D12&lt;/li&gt;
  &lt;li&gt;RST → D7&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Periksa Ground&lt;/h3&gt;
&lt;p&gt;Pastikan seluruh modul menggunakan ground yang sama.&lt;/p&gt;

&lt;h2 id=&quot;kesimpulan&quot;&gt;Kesimpulan&lt;/h2&gt;
&lt;p&gt;Ketika RFID RC522 hanya bisa membaca kartu sekali setelah relay aktif, jangan langsung menyimpulkan bahwa modul mengalami kerusakan.&lt;/p&gt;
&lt;p&gt;Berdasarkan pengalaman yang sering saya temui, penyebabnya tidak selalu berasal dari hardware. Bahkan pada beberapa kasus, masalah utamanya justru berasal dari logika program yang mengunci proses pembacaan RFID setelah tap pertama berhasil.&lt;/p&gt;
&lt;p&gt;Sebelum membeli modul baru, lakukan beberapa langkah pemeriksaan sederhana seperti memantau Serial Monitor, mengecek alur program, serta memastikan bahwa variabel dan state yang digunakan dapat kembali ke kondisi awal setelah proses selesai.&lt;/p&gt;
&lt;p&gt;Dengan memahami penyebab sebenarnya, Anda tidak hanya dapat menghemat biaya penggantian komponen, tetapi juga menjadi lebih mudah dalam melakukan troubleshooting berbagai proyek RFID di masa mendatang.&lt;/p&gt;
&lt;p&gt;Jika Anda pernah mengalami kasus serupa atau menemukan penyebab lain yang berbeda, silakan bagikan pengalaman Anda pada kolom komentar agar dapat menjadi referensi bagi pembaca lainnya.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.carapaklek.com/feeds/1793809640211990922/comments/default' title='Posting Komentar'/><link rel='replies' type='text/html' href='https://www.carapaklek.com/2026/07/mengatasi-rfid-rc522-yang-error-setelah.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/2093917475945207513/posts/default/1793809640211990922'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/2093917475945207513/posts/default/1793809640211990922'/><link rel='alternate' type='text/html' href='https://www.carapaklek.com/2026/07/mengatasi-rfid-rc522-yang-error-setelah.html' title='Mengatasi RFID RC522 yang Error Setelah Relay Menyala dan Hanya Bisa Tap Sekali: Masalah yang Sering Saya Temui'/><author><name>carapaklek.com</name><uri>http://www.blogger.com/profile/12438575085929354819</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj84wNpqEWz7nUZmjNjPBarFLyRAZARNpnydt-LYU_GZhXNGZFUplzpWB82bcX7camGkjKhQ-KGgMvx5RMUkIl4gkJvWLq8dlBfnRdA_lNZPKfK8QjiWqasrUvzS15za_c0-zdUM_aAJ39EGM5XGzVoH0xzAg-7mAIwM90m4_AE9y7kgQ/s220/webcamp.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEic4SG0diNjydohb7g2xo6Gaqgsf_KWhHYSg7cyYPzb94uY41fOMBjg3qWWwrUBQ8MpHbkvCNXdMhtrjU5g8g9RJeKX1umBhT_MMInp9R5wg2F5K_ONhgy8_Dgprxd84-LWX4yxruidgErRSqJbF1Wm81wum7ID4IQQukxsZasWuPg38qwEvE8NNUNnAjXh=s72-w640-h452-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2093917475945207513.post-423016764473100841</id><published>2026-05-13T22:15:04.888+07:00</published><updated>2026-05-15T10:59:18.634+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Arduino"/><category scheme="http://www.blogger.com/atom/ns#" term="esspressif"/><category scheme="http://www.blogger.com/atom/ns#" term="Teknologi"/><title type='text'>Membuat Tombol Touchscreen ON/OFF ESP32 untuk Mengontrol Relay dan Lampu di TFT ILI9488</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;!--[if !mso]&gt;
&lt;style&gt;
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
&lt;/style&gt;
&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;o:OfficeDocumentSettings&gt;
  &lt;o:AllowPNG/&gt;
 &lt;/o:OfficeDocumentSettings&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;w:WordDocument&gt;
  &lt;w:View&gt;Normal&lt;/w:View&gt;
  &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;
  &lt;w:TrackMoves&gt;false&lt;/w:TrackMoves&gt;
  &lt;w:TrackFormatting/&gt;
  &lt;w:PunctuationKerning/&gt;
  &lt;w:ValidateAgainstSchemas/&gt;
  &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;
  &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;
  &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;
  &lt;w:DoNotPromoteQF/&gt;
  &lt;w:LidThemeOther&gt;EN-US&lt;/w:LidThemeOther&gt;
  &lt;w:LidThemeAsian&gt;JA&lt;/w:LidThemeAsian&gt;
  &lt;w:LidThemeComplexScript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;
  &lt;w:Compatibility&gt;
   &lt;w:BreakWrappedTables/&gt;
   &lt;w:SnapToGridInCell/&gt;
   &lt;w:WrapTextWithPunct/&gt;
   &lt;w:UseAsianBreakRules/&gt;
   &lt;w:DontGrowAutofit/&gt;
   &lt;w:SplitPgBreakAndParaMark/&gt;
   &lt;w:EnableOpenTypeKerning/&gt;
   &lt;w:DontFlipMirrorIndents/&gt;
   &lt;w:OverrideTableStyleHps/&gt;
   &lt;w:UseFELayout/&gt;
  &lt;/w:Compatibility&gt;
  &lt;w:DoNotOptimizeForBrowser/&gt;
  &lt;m:mathPr&gt;
   &lt;m:mathFont m:val=&quot;Cambria Math&quot;/&gt;
   &lt;m:brkBin m:val=&quot;before&quot;/&gt;
   &lt;m:brkBinSub m:val=&quot;&amp;#45;-&quot;/&gt;
   &lt;m:smallFrac m:val=&quot;off&quot;/&gt;
   &lt;m:dispDef/&gt;
   &lt;m:lMargin m:val=&quot;0&quot;/&gt;
   &lt;m:rMargin m:val=&quot;0&quot;/&gt;
   &lt;m:defJc m:val=&quot;centerGroup&quot;/&gt;
   &lt;m:wrapIndent m:val=&quot;1440&quot;/&gt;
   &lt;m:intLim m:val=&quot;subSup&quot;/&gt;
   &lt;m:naryLim m:val=&quot;undOvr&quot;/&gt;
  &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;w:LatentStyles DefLockedState=&quot;false&quot; DefUnhideWhenUsed=&quot;false&quot;
  DefSemiHidden=&quot;false&quot; DefQFormat=&quot;false&quot; DefPriority=&quot;99&quot;
  LatentStyleCount=&quot;371&quot;&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;0&quot; QFormat=&quot;true&quot; Name=&quot;Normal&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; SemiHidden=&quot;true&quot;
   UnhideWhenUsed=&quot;true&quot; QFormat=&quot;true&quot; Name=&quot;heading 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; SemiHidden=&quot;true&quot;
   UnhideWhenUsed=&quot;true&quot; QFormat=&quot;true&quot; Name=&quot;heading 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; SemiHidden=&quot;true&quot;
   UnhideWhenUsed=&quot;true&quot; QFormat=&quot;true&quot; Name=&quot;heading 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; SemiHidden=&quot;true&quot;
   UnhideWhenUsed=&quot;true&quot; QFormat=&quot;true&quot; Name=&quot;heading 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; SemiHidden=&quot;true&quot;
   UnhideWhenUsed=&quot;true&quot; QFormat=&quot;true&quot; Name=&quot;heading 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; SemiHidden=&quot;true&quot;
   UnhideWhenUsed=&quot;true&quot; QFormat=&quot;true&quot; Name=&quot;heading 7&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; SemiHidden=&quot;true&quot;
   UnhideWhenUsed=&quot;true&quot; QFormat=&quot;true&quot; Name=&quot;heading 8&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; SemiHidden=&quot;true&quot;
   UnhideWhenUsed=&quot;true&quot; QFormat=&quot;true&quot; Name=&quot;heading 9&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;index 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;index 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;index 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;index 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;index 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;index 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;index 7&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;index 8&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;index 9&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; SemiHidden=&quot;true&quot;
   UnhideWhenUsed=&quot;true&quot; Name=&quot;toc 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; SemiHidden=&quot;true&quot;
   UnhideWhenUsed=&quot;true&quot; Name=&quot;toc 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; SemiHidden=&quot;true&quot;
   UnhideWhenUsed=&quot;true&quot; Name=&quot;toc 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; SemiHidden=&quot;true&quot;
   UnhideWhenUsed=&quot;true&quot; Name=&quot;toc 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; SemiHidden=&quot;true&quot;
   UnhideWhenUsed=&quot;true&quot; Name=&quot;toc 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; SemiHidden=&quot;true&quot;
   UnhideWhenUsed=&quot;true&quot; Name=&quot;toc 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; SemiHidden=&quot;true&quot;
   UnhideWhenUsed=&quot;true&quot; Name=&quot;toc 7&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; SemiHidden=&quot;true&quot;
   UnhideWhenUsed=&quot;true&quot; Name=&quot;toc 8&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; SemiHidden=&quot;true&quot;
   UnhideWhenUsed=&quot;true&quot; Name=&quot;toc 9&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Normal Indent&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;footnote text&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;annotation text&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;header&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;footer&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;index heading&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;35&quot; SemiHidden=&quot;true&quot;
   UnhideWhenUsed=&quot;true&quot; QFormat=&quot;true&quot; Name=&quot;caption&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;table of figures&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;envelope address&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;envelope return&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;footnote reference&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;annotation reference&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;line number&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;page number&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;endnote reference&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;endnote text&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;table of authorities&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;macro&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;toa heading&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;List&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;List Bullet&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;List Number&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;List 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;List 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;List 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;List 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;List Bullet 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;List Bullet 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;List Bullet 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;List Bullet 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;List Number 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;List Number 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;List Number 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;List Number 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;10&quot; QFormat=&quot;true&quot; Name=&quot;Title&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Closing&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Signature&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;1&quot; SemiHidden=&quot;true&quot;
   UnhideWhenUsed=&quot;true&quot; Name=&quot;Default Paragraph Font&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Body Text&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Body Text Indent&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;List Continue&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;List Continue 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;List Continue 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;List Continue 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;List Continue 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Message Header&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;11&quot; QFormat=&quot;true&quot; Name=&quot;Subtitle&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Salutation&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Date&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Body Text First Indent&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Body Text First Indent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Note Heading&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Body Text 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Body Text 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Body Text Indent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Body Text Indent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Block Text&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Hyperlink&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;FollowedHyperlink&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;22&quot; QFormat=&quot;true&quot; Name=&quot;Strong&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;20&quot; QFormat=&quot;true&quot; Name=&quot;Emphasis&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Document Map&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Plain Text&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;E-mail Signature&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;HTML Top of Form&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;HTML Bottom of Form&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Normal (Web)&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;HTML Acronym&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;HTML Address&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;HTML Cite&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;HTML Code&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;HTML Definition&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;HTML Keyboard&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;HTML Preformatted&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;HTML Sample&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;HTML Typewriter&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;HTML Variable&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Normal Table&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;annotation subject&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;No List&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Outline List 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Outline List 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Outline List 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Table Simple 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Table Simple 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Table Simple 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Table Classic 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Table Classic 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Table Classic 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Table Classic 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Table Colorful 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Table Colorful 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Table Colorful 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Table Columns 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Table Columns 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Table Columns 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Table Columns 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Table Columns 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Table Grid 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Table Grid 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Table Grid 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Table Grid 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Table Grid 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Table Grid 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Table Grid 7&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Table Grid 8&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Table List 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Table List 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Table List 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Table List 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Table List 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Table List 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Table List 7&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Table List 8&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Table 3D effects 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Table 3D effects 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Table 3D effects 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Table Contemporary&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Table Elegant&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Table Professional&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Table Subtle 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Table Subtle 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Table Web 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Table Web 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Table Web 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Balloon Text&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;Table Grid&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; UnhideWhenUsed=&quot;true&quot;
   Name=&quot;Table Theme&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; Name=&quot;Placeholder Text&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;1&quot; QFormat=&quot;true&quot; Name=&quot;No Spacing&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; Name=&quot;Light Shading&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; Name=&quot;Light List&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; Name=&quot;Light Grid&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; Name=&quot;Medium Shading 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; Name=&quot;Medium Shading 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; Name=&quot;Medium List 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; Name=&quot;Medium List 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; Name=&quot;Medium Grid 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; Name=&quot;Medium Grid 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; Name=&quot;Medium Grid 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; Name=&quot;Dark List&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; Name=&quot;Colorful Shading&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; Name=&quot;Colorful List&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; Name=&quot;Colorful Grid&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; Name=&quot;Light Shading Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; Name=&quot;Light List Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; Name=&quot;Light Grid Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; Name=&quot;Medium Shading 1 Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; Name=&quot;Medium Shading 2 Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; Name=&quot;Medium List 1 Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; SemiHidden=&quot;true&quot; Name=&quot;Revision&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;34&quot; QFormat=&quot;true&quot;
   Name=&quot;List Paragraph&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;29&quot; QFormat=&quot;true&quot; Name=&quot;Quote&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;30&quot; QFormat=&quot;true&quot;
   Name=&quot;Intense Quote&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; Name=&quot;Medium List 2 Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; Name=&quot;Medium Grid 1 Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; Name=&quot;Medium Grid 2 Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; Name=&quot;Medium Grid 3 Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; Name=&quot;Dark List Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; Name=&quot;Colorful Shading Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; Name=&quot;Colorful List Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; Name=&quot;Colorful Grid Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; Name=&quot;Light Shading Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; Name=&quot;Light List Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; Name=&quot;Light Grid Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; Name=&quot;Medium Shading 1 Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; Name=&quot;Medium Shading 2 Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; Name=&quot;Medium List 1 Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; Name=&quot;Medium List 2 Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; Name=&quot;Medium Grid 1 Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; Name=&quot;Medium Grid 2 Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; Name=&quot;Medium Grid 3 Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; Name=&quot;Dark List Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; Name=&quot;Colorful Shading Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; Name=&quot;Colorful List Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; Name=&quot;Colorful Grid Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; Name=&quot;Light Shading Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; Name=&quot;Light List Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; Name=&quot;Light Grid Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; Name=&quot;Medium Shading 1 Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; Name=&quot;Medium Shading 2 Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; Name=&quot;Medium List 1 Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; Name=&quot;Medium List 2 Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; Name=&quot;Medium Grid 1 Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; Name=&quot;Medium Grid 2 Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; Name=&quot;Medium Grid 3 Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; Name=&quot;Dark List Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; Name=&quot;Colorful Shading Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; Name=&quot;Colorful List Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; Name=&quot;Colorful Grid Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; Name=&quot;Light Shading Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; Name=&quot;Light List Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; Name=&quot;Light Grid Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; Name=&quot;Medium Shading 1 Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; Name=&quot;Medium Shading 2 Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; Name=&quot;Medium List 1 Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; Name=&quot;Medium List 2 Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; Name=&quot;Medium Grid 1 Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; Name=&quot;Medium Grid 2 Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; Name=&quot;Medium Grid 3 Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; Name=&quot;Dark List Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; Name=&quot;Colorful Shading Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; Name=&quot;Colorful List Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; Name=&quot;Colorful Grid Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; Name=&quot;Light Shading Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; Name=&quot;Light List Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; Name=&quot;Light Grid Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; Name=&quot;Medium Shading 1 Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; Name=&quot;Medium Shading 2 Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; Name=&quot;Medium List 1 Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; Name=&quot;Medium List 2 Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; Name=&quot;Medium Grid 1 Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; Name=&quot;Medium Grid 2 Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; Name=&quot;Medium Grid 3 Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; Name=&quot;Dark List Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; Name=&quot;Colorful Shading Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; Name=&quot;Colorful List Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; Name=&quot;Colorful Grid Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; Name=&quot;Light Shading Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; Name=&quot;Light List Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; Name=&quot;Light Grid Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; Name=&quot;Medium Shading 1 Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; Name=&quot;Medium Shading 2 Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; Name=&quot;Medium List 1 Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; Name=&quot;Medium List 2 Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; Name=&quot;Medium Grid 1 Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; Name=&quot;Medium Grid 2 Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; Name=&quot;Medium Grid 3 Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; Name=&quot;Dark List Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; Name=&quot;Colorful Shading Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; Name=&quot;Colorful List Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; Name=&quot;Colorful Grid Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;19&quot; QFormat=&quot;true&quot;
   Name=&quot;Subtle Emphasis&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;21&quot; QFormat=&quot;true&quot;
   Name=&quot;Intense Emphasis&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;31&quot; QFormat=&quot;true&quot;
   Name=&quot;Subtle Reference&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;32&quot; QFormat=&quot;true&quot;
   Name=&quot;Intense Reference&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;33&quot; QFormat=&quot;true&quot; Name=&quot;Book Title&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;37&quot; SemiHidden=&quot;true&quot;
   UnhideWhenUsed=&quot;true&quot; Name=&quot;Bibliography&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; SemiHidden=&quot;true&quot;
   UnhideWhenUsed=&quot;true&quot; QFormat=&quot;true&quot; Name=&quot;TOC Heading&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;41&quot; Name=&quot;Plain Table 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;42&quot; Name=&quot;Plain Table 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;43&quot; Name=&quot;Plain Table 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;44&quot; Name=&quot;Plain Table 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;45&quot; Name=&quot;Plain Table 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;40&quot; Name=&quot;Grid Table Light&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;46&quot; Name=&quot;Grid Table 1 Light&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;47&quot; Name=&quot;Grid Table 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;48&quot; Name=&quot;Grid Table 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;49&quot; Name=&quot;Grid Table 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;50&quot; Name=&quot;Grid Table 5 Dark&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;51&quot; Name=&quot;Grid Table 6 Colorful&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;52&quot; Name=&quot;Grid Table 7 Colorful&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;46&quot;
   Name=&quot;Grid Table 1 Light Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;47&quot; Name=&quot;Grid Table 2 Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;48&quot; Name=&quot;Grid Table 3 Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;49&quot; Name=&quot;Grid Table 4 Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;50&quot; Name=&quot;Grid Table 5 Dark Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;51&quot;
   Name=&quot;Grid Table 6 Colorful Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;52&quot;
   Name=&quot;Grid Table 7 Colorful Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;46&quot;
   Name=&quot;Grid Table 1 Light Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;47&quot; Name=&quot;Grid Table 2 Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;48&quot; Name=&quot;Grid Table 3 Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;49&quot; Name=&quot;Grid Table 4 Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;50&quot; Name=&quot;Grid Table 5 Dark Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;51&quot;
   Name=&quot;Grid Table 6 Colorful Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;52&quot;
   Name=&quot;Grid Table 7 Colorful Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;46&quot;
   Name=&quot;Grid Table 1 Light Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;47&quot; Name=&quot;Grid Table 2 Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;48&quot; Name=&quot;Grid Table 3 Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;49&quot; Name=&quot;Grid Table 4 Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;50&quot; Name=&quot;Grid Table 5 Dark Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;51&quot;
   Name=&quot;Grid Table 6 Colorful Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;52&quot;
   Name=&quot;Grid Table 7 Colorful Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;46&quot;
   Name=&quot;Grid Table 1 Light Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;47&quot; Name=&quot;Grid Table 2 Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;48&quot; Name=&quot;Grid Table 3 Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;49&quot; Name=&quot;Grid Table 4 Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;50&quot; Name=&quot;Grid Table 5 Dark Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;51&quot;
   Name=&quot;Grid Table 6 Colorful Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;52&quot;
   Name=&quot;Grid Table 7 Colorful Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;46&quot;
   Name=&quot;Grid Table 1 Light Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;47&quot; Name=&quot;Grid Table 2 Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;48&quot; Name=&quot;Grid Table 3 Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;49&quot; Name=&quot;Grid Table 4 Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;50&quot; Name=&quot;Grid Table 5 Dark Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;51&quot;
   Name=&quot;Grid Table 6 Colorful Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;52&quot;
   Name=&quot;Grid Table 7 Colorful Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;46&quot;
   Name=&quot;Grid Table 1 Light Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;47&quot; Name=&quot;Grid Table 2 Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;48&quot; Name=&quot;Grid Table 3 Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;49&quot; Name=&quot;Grid Table 4 Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;50&quot; Name=&quot;Grid Table 5 Dark Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;51&quot;
   Name=&quot;Grid Table 6 Colorful Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;52&quot;
   Name=&quot;Grid Table 7 Colorful Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;46&quot; Name=&quot;List Table 1 Light&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;47&quot; Name=&quot;List Table 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;48&quot; Name=&quot;List Table 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;49&quot; Name=&quot;List Table 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;50&quot; Name=&quot;List Table 5 Dark&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;51&quot; Name=&quot;List Table 6 Colorful&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;52&quot; Name=&quot;List Table 7 Colorful&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;46&quot;
   Name=&quot;List Table 1 Light Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;47&quot; Name=&quot;List Table 2 Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;48&quot; Name=&quot;List Table 3 Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;49&quot; Name=&quot;List Table 4 Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;50&quot; Name=&quot;List Table 5 Dark Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;51&quot;
   Name=&quot;List Table 6 Colorful Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;52&quot;
   Name=&quot;List Table 7 Colorful Accent 1&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;46&quot;
   Name=&quot;List Table 1 Light Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;47&quot; Name=&quot;List Table 2 Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;48&quot; Name=&quot;List Table 3 Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;49&quot; Name=&quot;List Table 4 Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;50&quot; Name=&quot;List Table 5 Dark Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;51&quot;
   Name=&quot;List Table 6 Colorful Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;52&quot;
   Name=&quot;List Table 7 Colorful Accent 2&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;46&quot;
   Name=&quot;List Table 1 Light Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;47&quot; Name=&quot;List Table 2 Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;48&quot; Name=&quot;List Table 3 Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;49&quot; Name=&quot;List Table 4 Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;50&quot; Name=&quot;List Table 5 Dark Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;51&quot;
   Name=&quot;List Table 6 Colorful Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;52&quot;
   Name=&quot;List Table 7 Colorful Accent 3&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;46&quot;
   Name=&quot;List Table 1 Light Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;47&quot; Name=&quot;List Table 2 Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;48&quot; Name=&quot;List Table 3 Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;49&quot; Name=&quot;List Table 4 Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;50&quot; Name=&quot;List Table 5 Dark Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;51&quot;
   Name=&quot;List Table 6 Colorful Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;52&quot;
   Name=&quot;List Table 7 Colorful Accent 4&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;46&quot;
   Name=&quot;List Table 1 Light Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;47&quot; Name=&quot;List Table 2 Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;48&quot; Name=&quot;List Table 3 Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;49&quot; Name=&quot;List Table 4 Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;50&quot; Name=&quot;List Table 5 Dark Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;51&quot;
   Name=&quot;List Table 6 Colorful Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;52&quot;
   Name=&quot;List Table 7 Colorful Accent 5&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;46&quot;
   Name=&quot;List Table 1 Light Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;47&quot; Name=&quot;List Table 2 Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;48&quot; Name=&quot;List Table 3 Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;49&quot; Name=&quot;List Table 4 Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;50&quot; Name=&quot;List Table 5 Dark Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;51&quot;
   Name=&quot;List Table 6 Colorful Accent 6&quot;/&gt;
  &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;52&quot;
   Name=&quot;List Table 7 Colorful Accent 6&quot;/&gt;
 &lt;/w:LatentStyles&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt;
&lt;style&gt;
 /* Style Definitions */
 table.MsoNormalTable
	{mso-style-name:&quot;Table Normal&quot;;
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-parent:&quot;&quot;;
	mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
	mso-para-margin-top:0cm;
	mso-para-margin-right:0cm;
	mso-para-margin-bottom:10.0pt;
	mso-para-margin-left:0cm;
	line-height:115%;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:&quot;Cambria&quot;,serif;
	mso-ascii-font-family:Cambria;
	mso-ascii-theme-font:minor-latin;
	mso-hansi-font-family:Cambria;
	mso-hansi-theme-font:minor-latin;}
&lt;/style&gt;
&lt;![endif]--&gt;

&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjP3U7l6EMVyvMbiSEwg9JqsPUliR4_ZKE6fSAaetnJm-MNkoR-x1ZAzR0UGdwE6l97vbK-UvGLZ9wIFi8NIOM2qya9615iNXnvNUNNEoYP97aBry9T0WAFGuyd1tXnkvECVhsm8py3Lw2pX7wPRMAvKg2nudX9Qzar_K3AunvpMCdfAXwEs6I-lxamx7TR/s1280/off.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;720&quot; data-original-width=&quot;1280&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjP3U7l6EMVyvMbiSEwg9JqsPUliR4_ZKE6fSAaetnJm-MNkoR-x1ZAzR0UGdwE6l97vbK-UvGLZ9wIFi8NIOM2qya9615iNXnvNUNNEoYP97aBry9T0WAFGuyd1tXnkvECVhsm8py3Lw2pX7wPRMAvKg2nudX9Qzar_K3AunvpMCdfAXwEs6I-lxamx7TR/w640-h360/off.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
  
&lt;!--TOC--&gt;
&lt;/p&gt;&lt;div style=&quot;background: rgb(245, 247, 250); border-radius: 10px; border: 1px solid rgb(224, 230, 237); margin-bottom: 25px; padding: 20px;&quot;&gt;
  &lt;h3 style=&quot;margin-top: 0px;&quot;&gt;Table of Contents&lt;/h3&gt;
  &lt;ul style=&quot;line-height: 1.8; list-style: none; padding-left: 0px;&quot;&gt;

    &lt;li&gt;&lt;a href=&quot;#pendahuluan&quot; style=&quot;text-decoration: none;&quot;&gt;1. Pendahuluan&lt;/a&gt;&lt;/li&gt;

    &lt;li&gt;&lt;a href=&quot;#mengapa-touchscreen&quot; style=&quot;text-decoration: none;&quot;&gt;2. Mengapa Menggunakan Tombol Touchscreen pada ESP32?&lt;/a&gt;&lt;/li&gt;

    &lt;li&gt;&lt;a href=&quot;#persiapan-hardware&quot; style=&quot;text-decoration: none;&quot;&gt;3. Persiapan Hardware&lt;/a&gt;&lt;/li&gt;

    &lt;li&gt;&lt;a href=&quot;#konsep-touchscreen&quot; style=&quot;text-decoration: none;&quot;&gt;4. Konsep Cara Kerja Tombol Touchscreen&lt;/a&gt;&lt;/li&gt;

    &lt;li&gt;&lt;a href=&quot;#persiapan-gambar&quot; style=&quot;text-decoration: none;&quot;&gt;5. Persiapan Gambar Tombol&lt;/a&gt;&lt;/li&gt;

    &lt;li&gt;&lt;a href=&quot;#upload-spiffs&quot; style=&quot;text-decoration: none;&quot;&gt;6. Upload Gambar ke SPIFFS&lt;/a&gt;&lt;/li&gt;

    &lt;li&gt;&lt;a href=&quot;#menampilkan-tombol&quot; style=&quot;text-decoration: none;&quot;&gt;7. Menampilkan Tombol di TFT&lt;/a&gt;&lt;/li&gt;

    &lt;li&gt;&lt;a href=&quot;#membaca-touch&quot; style=&quot;text-decoration: none;&quot;&gt;8. Membaca Sentuhan pada Touchscreen&lt;/a&gt;&lt;/li&gt;

    &lt;li&gt;&lt;a href=&quot;#logika-tombol&quot; style=&quot;text-decoration: none;&quot;&gt;9. Membuat Logika Tombol ON/OFF&lt;/a&gt;&lt;/li&gt;

    &lt;li&gt;&lt;a href=&quot;#kontrol-relay&quot; style=&quot;text-decoration: none;&quot;&gt;10. Mengontrol Relay dan Lampu&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#pengembangan&quot; style=&quot;text-decoration: none;&quot;&gt;11. Pengembangan Proyek Selanjutnya&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#contoh-program&quot; style=&quot;text-decoration: none;&quot;&gt;12. Contoh Program Dasar ESP32 TFT Touchscreen&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#penutup&quot; style=&quot;text-decoration: none;&quot;&gt;13. Penutup&lt;/a&gt;&lt;/li&gt;

  &lt;/ul&gt;
&lt;/div&gt;
&lt;h3 id=&quot;pendahuluan&quot; style=&quot;text-align: left;&quot;&gt;
  1. Pendahuluan
&lt;/h3&gt;
&lt;p&gt;Pada artikel ini kita akan membahas bagaimana cara membuat tombol touchscreen
ON/OFF pada layar TFT ILI9488 menggunakan ESP32. &lt;br /&gt;
Proyek ini sangat menarik karena kita tidak lagi menggunakan tombol fisik
biasa, melainkan membuat tombol digital langsung di layar TFT touchscreen. &lt;br /&gt;
Dengan teknik ini, ESP32 dapat diubah menjadi panel kontrol modern untuk
berbagai kebutuhan seperti smart home, kontrol relay, lampu, pompa air, kipas,
hingga dashboard otomatisasi sederhana.&lt;br /&gt;
&lt;br /&gt;
Selain belajar membuat tombol ON dan OFF, kita juga akan memahami bagaimana
cara kerja touchscreen pada TFT, bagaimana membaca koordinat sentuhan, &lt;br /&gt;
bagaimana menampilkan gambar tombol dari SPIFFS, serta bagaimana mengontrol
relay menggunakan tombol virtual yang dibuat di layar.&lt;br /&gt;
&lt;br /&gt;
Artikel ini dibuat khusus untuk pemula maupun maker yang ingin memahami alur
berpikir dalam membuat antarmuka touchscreen pada ESP32.&lt;br style=&quot;mso-special-character: line-break;&quot; /&gt;
&lt;br style=&quot;mso-special-character: line-break;&quot; /&gt;
&lt;/p&gt;&lt;p&gt;&lt;/p&gt;

&lt;h2 id=&quot;mengapa-touchscreen&quot; style=&quot;text-align: left;&quot;&gt;2. Mengapa Menggunakan Tombol Touchscreen pada ESP32?&lt;/h2&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
Pada proyek ESP32 sederhana, kita biasanya menggunakan push button fisik untuk
menyalakan LED atau relay. &lt;br /&gt;
Namun ketika proyek mulai berkembang, penggunaan tombol fisik akan membuat
perangkat terlihat kurang rapi dan kurang fleksibel. &lt;br /&gt;
Dengan menggunakan layar touchscreen TFT, semua tombol dapat dibuat langsung di
layar.&lt;br /&gt;
&lt;br /&gt;
Keuntungan menggunakan tombol touchscreen antara lain:&lt;br /&gt;
- Tampilan lebih modern&lt;br /&gt;
- Jumlah tombol tidak terbatas&lt;br /&gt;
- Mudah diubah desainnya&lt;br /&gt;
- Dapat dibuat seperti panel HMI industri&lt;br /&gt;
- Cocok untuk smart home&lt;br /&gt;
- Bisa dikembangkan menjadi dashboard monitoring&lt;br /&gt;
&lt;br /&gt;
Selain itu, tombol digital pada TFT juga memberikan pengalaman penggunaan yang
jauh lebih menarik dibandingkan tombol biasa.&lt;br style=&quot;mso-special-character: line-break;&quot; /&gt;
&lt;br style=&quot;mso-special-character: line-break;&quot; /&gt;
&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
Dalam pengembangan proyek ESP32, memahami konsep jauh lebih penting
dibandingkan hanya sekadar copy-paste kode. &lt;br /&gt;
Banyak pengguna mengalami masalah ketika layar tidak merespons sentuhan,
koordinat terbalik, gambar tidak tampil, atau relay tidak bekerja dengan benar.
&lt;br /&gt;
Masalah seperti ini biasanya terjadi karena pengguna belum memahami hubungan
antara touchscreen, SPIFFS, GPIO, dan sistem tampilan TFT.&lt;br /&gt;
&lt;br /&gt;
Karena itu pada artikel ini fokus utamanya bukan hanya menghasilkan proyek yang
bekerja, tetapi juga memahami cara berpikir dalam membangun antarmuka
touchscreen menggunakan ESP32. &lt;br /&gt;Pendekatan seperti ini akan sangat membantu ketika nantinya ingin membuat
proyek yang lebih kompleks seperti smart home, panel industri, atau dashboard
IoT.
&lt;br style=&quot;mso-special-character: line-break;&quot; /&gt;
&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/p&gt;

&lt;h2 id=&quot;persiapan-hardware&quot; style=&quot;text-align: left;&quot;&gt;3. Persiapan Hardware&lt;/h2&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEg8xMl_EdG5UinHJk-73GS6gXSP-mcsMS5av8nUZWyaeKGHKO60G1wEe5MuMVedVfarhAqwtKv8HfGALlRaJ0XkfEdT0tnnWNAxWG9NzofXrdUq1gFXbpvLNjvVZStNz4ebsGNVdpnut_5X3cjwppppTjjq_WmnZNHqBDGmDvDVg65NCm_-wQoRocWiZa2u&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;720&quot; data-original-width=&quot;1280&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEg8xMl_EdG5UinHJk-73GS6gXSP-mcsMS5av8nUZWyaeKGHKO60G1wEe5MuMVedVfarhAqwtKv8HfGALlRaJ0XkfEdT0tnnWNAxWG9NzofXrdUq1gFXbpvLNjvVZStNz4ebsGNVdpnut_5X3cjwppppTjjq_WmnZNHqBDGmDvDVg65NCm_-wQoRocWiZa2u=w640-h360&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;Sebelum mulai membuat proyek, siapkan beberapa komponen berikut:&lt;br /&gt;
&lt;br /&gt;
1. ESP32&lt;br /&gt;
2. TFT 4 Inch ILI9488 Touchscreen&lt;br /&gt;
3. Modul Relay ataupun kitset modul juga lebih baik&lt;br /&gt;
4. LED untuk pengujian awal&lt;br /&gt;5. Kabel jumper&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;6.Komputer dengan Arduino IDE&lt;br /&gt;
&lt;br /&gt;
Sebaiknya pengujian pertama dilakukan menggunakan LED terlebih dahulu sebelum
mencoba mengontrol relay AC.&lt;br style=&quot;mso-special-character: line-break;&quot; /&gt;
&lt;br style=&quot;mso-special-character: line-break;&quot; /&gt;
&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;br style=&quot;mso-special-character: line-break;&quot; /&gt;
&lt;/p&gt;

&lt;h2 id=&quot;konsep-touchscreen&quot; style=&quot;text-align: left;&quot;&gt;4. Konsep Cara Kerja Tombol Touchscreen&lt;/h2&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
Tombol touchscreen sebenarnya bukan tombol fisik. &lt;br /&gt;
Yang kita lihat di layar hanyalah gambar atau objek visual. &lt;br /&gt;
Ketika layar disentuh, touchscreen akan mengirimkan koordinat sentuhan berupa
nilai X dan Y.&lt;br /&gt;
&lt;br /&gt;
Program kemudian akan memeriksa apakah koordinat sentuhan berada di area
tombol.&lt;br /&gt;
Jika iya, maka ESP32 menjalankan aksi tertentu seperti:&lt;br /&gt;
- Menyalakan LED&lt;br /&gt;
- Mematikan relay&lt;br /&gt;
- Mengubah gambar tombol&lt;br /&gt;
- Menjalankan animasi&lt;br /&gt;
- Mengirim data ke internet&lt;br /&gt;
&lt;br /&gt;
Inilah dasar dari sistem HMI atau Human Machine Interface.&lt;br style=&quot;mso-special-character: line-break;&quot; /&gt;
&lt;br style=&quot;mso-special-character: line-break;&quot; /&gt;
&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;br style=&quot;mso-special-character: line-break;&quot; /&gt;
&lt;/p&gt;

&lt;h2 id=&quot;persiapan-gambar&quot; style=&quot;text-align: left;&quot;&gt;5. Persiapan Gambar Tombol&lt;/h2&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
Pada proyek ini kita menggunakan gambar tombol ON dan OFF.&lt;br /&gt;
Gambar dapat dibuat menggunakan Photoshop, Canva, atau aplikasi desain lainnya.&lt;br /&gt;
&lt;br /&gt;
Tips membuat gambar tombol:&lt;br /&gt;
- Gunakan warna hijau untuk ON&lt;br /&gt;
- Gunakan warna merah untuk OFF&lt;br /&gt;
- Buat ukuran tidak terlalu besar dalam hal ini saya pakai 200 x 200 px&lt;br /&gt;
- Simpan dalam format JPG&lt;br /&gt;
&lt;br /&gt;
Contoh nama file:&lt;br /&gt;
- on.jpg&lt;br /&gt;
- off.jpg&lt;br /&gt;
&lt;br /&gt;
Gambar nantinya disimpan ke SPIFFS agar dapat dibaca ESP32.&lt;br style=&quot;mso-special-character: line-break;&quot; /&gt;
&lt;br style=&quot;mso-special-character: line-break;&quot; /&gt;
&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;br style=&quot;mso-special-character: line-break;&quot; /&gt;
&lt;/p&gt;

&lt;h2 id=&quot;upload-spiffs&quot; style=&quot;text-align: left;&quot;&gt;6. Upload Gambar ke SPIFFS&lt;/h2&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
SPIFFS memungkinkan ESP32 menyimpan file seperti gambar, HTML, maupun
konfigurasi.&lt;br /&gt;
Dengan SPIFFS, gambar tombol tidak perlu ditulis langsung di kode program.&lt;br /&gt;
&lt;br /&gt;
Langkah upload SPIFFS:&lt;br /&gt;
1. Buat folder data&lt;br /&gt;
2. Masukkan file gambar&lt;br /&gt;
3. Gunakan plugin ESP32 Sketch Data Upload&lt;br /&gt;
4. Upload ke ESP32&lt;br /&gt;
&lt;br /&gt;
Setelah upload berhasil, gambar dapat dipanggil langsung dari memori internal
ESP32.&lt;br style=&quot;mso-special-character: line-break;&quot; /&gt;
&lt;br style=&quot;mso-special-character: line-break;&quot; /&gt;
&lt;/p&gt;

&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgI4dvHX_f4VE4fpNFUt8YheIgakdYHoXrExPMuklHUKWaPAMGnCyWrs1Az2e1BwcGRDFuSg3somH-cq54LnZEXnZQiY3aM1W3vu7SE5SKUXIOjAuOngn4B3DIOyzq55TAMArLb2wl00Ye3fUOOcz2dmIFv4pWN5qI7LWvnEOmvK0uCYODfvUzhoCJ0nv1a/s1448/ChatGPT%20Image%208%20Mei%202026,%2017.15.26.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1086&quot; data-original-width=&quot;1448&quot; height=&quot;480&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgI4dvHX_f4VE4fpNFUt8YheIgakdYHoXrExPMuklHUKWaPAMGnCyWrs1Az2e1BwcGRDFuSg3somH-cq54LnZEXnZQiY3aM1W3vu7SE5SKUXIOjAuOngn4B3DIOyzq55TAMArLb2wl00Ye3fUOOcz2dmIFv4pWN5qI7LWvnEOmvK0uCYODfvUzhoCJ0nv1a/w640-h480/ChatGPT%20Image%208%20Mei%202026,%2017.15.26.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;br style=&quot;mso-special-character: line-break;&quot; /&gt;
&lt;/p&gt;

&lt;h2 id=&quot;menampilkan-tombol&quot; style=&quot;text-align: left;&quot;&gt;7. Menampilkan Tombol di TFT&lt;/h2&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
Setelah gambar berhasil diupload, langkah berikutnya adalah menampilkan gambar
tombol di layar TFT.&lt;br /&gt;
&lt;br /&gt;
Biasanya library yang digunakan:&lt;br /&gt;
- TFT_eSPI&lt;br /&gt;
- TJpg_Decoder&lt;br /&gt;
&lt;br /&gt;
Keuntungan menggunakan gambar JPG:&lt;br /&gt;
- Tampilan lebih menarik&lt;br /&gt;
- UI lebih profesional&lt;br /&gt;
- Mudah mengganti desain tombol&lt;br /&gt;
&lt;br /&gt;
Pada tahap ini, kita akan menampilkan tombol OFF sebagai tampilan awal.&lt;br style=&quot;mso-special-character: line-break;&quot; /&gt;
&lt;br style=&quot;mso-special-character: line-break;&quot; /&gt;
&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;br style=&quot;mso-special-character: line-break;&quot; /&gt;
&lt;/p&gt;

&lt;h2 id=&quot;membaca-touch&quot; style=&quot;text-align: left;&quot;&gt;8. Membaca Sentuhan pada Touchscreen&lt;/h2&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
Touchscreen bekerja dengan membaca koordinat sentuhan.&lt;br /&gt;
Ketika layar disentuh, program akan mendapatkan nilai:&lt;br /&gt;
- X&lt;br /&gt;
- Y&lt;br /&gt;
&lt;br /&gt;
Contoh logika sederhana:&lt;br /&gt;
&lt;br /&gt;
Jika X berada antara 50 sampai 150&lt;br /&gt;
dan Y berada antara 100 sampai 180,&lt;br /&gt;
maka tombol dianggap ditekan.&lt;br /&gt;
&lt;br /&gt;
Inilah dasar utama pembuatan tombol touchscreen.&lt;br style=&quot;mso-special-character: line-break;&quot; /&gt;
&lt;br style=&quot;mso-special-character: line-break;&quot; /&gt;
&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;br style=&quot;mso-special-character: line-break;&quot; /&gt;
&lt;/p&gt;

&lt;h2 id=&quot;logika-tombol&quot; style=&quot;text-align: left;&quot;&gt;9. Membuat Logika Tombol ON/OFF&lt;/h2&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
Logika tombol dibuat menggunakan variabel status.&lt;br /&gt;
&lt;br /&gt;
Contoh:&lt;br /&gt;
- status = false → relay OFF&lt;br /&gt;
- status = true → relay ON&lt;br /&gt;
&lt;br /&gt;
Ketika tombol disentuh:&lt;br /&gt;
1. Status dibalik&lt;br /&gt;
2. Gambar tombol diganti&lt;br /&gt;
3. GPIO relay diubah&lt;br /&gt;
&lt;br /&gt;
Dengan cara ini, tombol dapat berubah dari ON ke OFF secara dinamis.&lt;br style=&quot;mso-special-character: line-break;&quot; /&gt;
&lt;br style=&quot;mso-special-character: line-break;&quot; /&gt;
&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;br style=&quot;mso-special-character: line-break;&quot; /&gt;
&lt;/p&gt;

&lt;h2 id=&quot;kontrol-relay&quot; style=&quot;text-align: left;&quot;&gt;10. Mengontrol Relay dan Lampu&lt;/h2&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
Setelah tombol berhasil bekerja, kita dapat menghubungkan relay.&lt;br /&gt;
&lt;br /&gt;
Relay memungkinkan ESP32 mengontrol:&lt;br /&gt;
- Lampu rumah&lt;br /&gt;
- Pompa air&lt;br /&gt;
- Kipas&lt;br /&gt;
- Stop kontak&lt;br /&gt;
- Perangkat elektronik lainnya&lt;br /&gt;
&lt;br /&gt;
Namun perlu diperhatikan bahwa listrik AC sangat berbahaya.&lt;br /&gt;
Gunakan relay dengan hati-hati dan lakukan pengujian awal menggunakan LED.&lt;br style=&quot;mso-special-character: line-break;&quot; /&gt;
&lt;br style=&quot;mso-special-character: line-break;&quot; /&gt;
&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;br style=&quot;mso-special-character: line-break;&quot; /&gt;
&lt;/p&gt;

&lt;h2 id=&quot;pengembangan&quot; style=&quot;text-align: left;&quot;&gt;11. Pengembangan Proyek Selanjutnya&lt;/h2&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
Setelah memahami dasar tombol touchscreen, proyek dapat dikembangkan menjadi:&lt;br /&gt;
- Smart home panel&lt;br /&gt;
- Dashboard monitoring&lt;br /&gt;
- Kontrol multi relay&lt;br /&gt;
- Kontrol via WiFi&lt;br /&gt;
- MQTT dashboard&lt;br /&gt;
- Sistem otomatisasi rumah&lt;br /&gt;
- HMI industri mini&lt;br /&gt;
&lt;br /&gt;
Dengan kombinasi ESP32 dan TFT ILI9488, kemungkinan pengembangan sangat luas.&lt;br style=&quot;mso-special-character: line-break;&quot; /&gt;
&lt;br style=&quot;mso-special-character: line-break;&quot; /&gt;
&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;br style=&quot;mso-special-character: line-break;&quot; /&gt;
&lt;/p&gt;

&lt;h2 id=&quot;contoh-program&quot; style=&quot;text-align: left;&quot;&gt;12. Contoh Program Untuk menampilkan Tombol ON/OFF&lt;/h2&gt;
&lt;pre style=&quot;background: rgb(34, 34, 34); border-radius: 8px; color: white; padding: 15px;&quot;&gt;&lt;tft_espi .h=&quot;&quot;&gt;&lt;spi .h=&quot;&quot;&gt;&lt;xpt2046_touchscreen .h=&quot;&quot;&gt;&lt;spiffs .h=&quot;&quot;&gt;&lt;tjpg_decoder .h=&quot;&quot;&gt;

#include &amp;lt;TFT_eSPI.h&amp;gt;
#include &amp;lt;SPI.h&amp;gt;
#include &amp;lt;XPT2046_Touchscreen.h&amp;gt;
#include &amp;lt;SPIFFS.h&amp;gt;
#include &amp;lt;TJpg_Decoder.h&amp;gt;

// =====================================================
// PIN CONFIGURATION
// =====================================================
#define TOUCH_CS_PIN    15
#define RELAY_PIN       25  // HIGH level trigger

// =====================================================
// TOUCH SCREEN SETTINGS
// =====================================================
#define TOUCH_PRESSURE_THRESHOLD 1000
#define TOUCH_DEBOUNCE_DELAY     300

// =====================================================
// SCREEN RESOLUTION
// =====================================================
#define SCREEN_WIDTH  320
#define SCREEN_HEIGHT 480

// =====================================================
// OBJECTS
// =====================================================
TFT_eSPI tft = TFT_eSPI();
XPT2046_Touchscreen ts(TOUCH_CS_PIN);

// =====================================================
// TOUCH STATE VARIABLES
// =====================================================
bool touchEnabled = true;
bool isTouching = false;
unsigned long lastTouchTime = 0;

// =====================================================
// IMAGE BUTTON STRUCTURE
// =====================================================
struct ImageButton {
  String imageOffPath;
  String imageOnPath;
  bool state;
  int x, y;
  int w, h;
  uint8_t scale;
};

// =====================================================
// BUTTON INITIALIZATION
// =====================================================
ImageButton button1 = {
  &quot;/off.jpg&quot;,      // Image when OFF
  &quot;/on.jpg&quot;,       // Image when ON
  false,           // Initial state: OFF
  50,              // X position
  140,             // Y position
  0, 0,            // W, H (will be calculated)
  0                // Scale (will be calculated)
};

// =====================================================
// HELPER: Draw Bitmap 1-bit
// =====================================================
void drawBitmap1bit(int x, int y, const unsigned char *bitmap, 
                    int w, int h, uint16_t fgcolor, uint16_t bgcolor) {
  int byteWidth = (w + 7) / 8;
  for (int j = 0; j &amp;lt; h; j++) {
    for (int i = 0; i &amp;lt; w; i++) {
      uint8_t byte = pgm_read_byte(bitmap + j * byteWidth + i / 8);
      bool pixelOn = byte &amp;amp; (0x80 &amp;gt;&amp;gt; (i % 8));
      tft.drawPixel(x + i, y + j, pixelOn ? fgcolor : bgcolor);
    }
  }
}

// =====================================================
// JPG RENDER CALLBACK
// =====================================================
bool tft_jpg_render(int16_t x, int16_t y, uint16_t w, uint16_t h, uint16_t *bitmap) {
  if (y &amp;gt;= tft.height()) return false;
  tft.pushImage(x, y, w, h, bitmap);
  return true;
}

// =====================================================
// TOUCH MAPPING FUNCTIONS
// =====================================================
int mapX(int rawX) {
  return map(rawX, 3690, 470, 0, SCREEN_WIDTH);
}

int mapY(int rawY) {
  return map(rawY, 420, 3715, SCREEN_HEIGHT, 0);
}

// =====================================================
// BUZZER
// =====================================================
void beepBuzzer(int duration = 100) {
  // Optional: uncomment if you have buzzer connected
  // digitalWrite(BUZZER_PIN, HIGH);
  // delay(duration);
  // digitalWrite(BUZZER_PIN, LOW);
}

// =====================================================
// DISPLAY BOOT SCREEN
// =====================================================
void drawBootScreen() {
  tft.fillScreen(TFT_BLACK);
  tft.setTextColor(TFT_WHITE, TFT_BLACK);
  tft.setTextDatum(MC_DATUM);
  tft.setTextSize(1);
  
  tft.drawString(&quot;IMAGE BUTTON&quot;, SCREEN_WIDTH / 2, (int)(100 * 1.5), 4);
  tft.drawString(&quot;Relay HIGH Level Trigger&quot;, SCREEN_WIDTH / 2, (int)(150 * 1.5), 2);
  tft.drawString(&quot;Loading...&quot;, SCREEN_WIDTH / 2, (int)(200 * 1.5), 2);
  
  delay(2000);
}

// =====================================================
// DISPLAY BUTTON IMAGE &amp;amp; LABEL
// =====================================================
void displayButtonImage(ImageButton &amp;amp;btn) {
  String filename = btn.state ? btn.imageOnPath : btn.imageOffPath;

  Serial.println(&quot;\n--- Menampilkan Gambar ---&quot;);
  Serial.println(&quot;File: &quot; + filename);
  Serial.println(&quot;State: &quot; + String(btn.state ? &quot;ON&quot; : &quot;OFF&quot;));

  if (filename.isEmpty() || !SPIFFS.exists(filename)) {
    Serial.println(&quot;ERROR: File tidak ada: &quot; + filename);
    return;
  }

  // =====================================================
  // SET JPG DECODER
  // =====================================================
  TJpgDec.setJpgScale(btn.scale);
  TJpgDec.setSwapBytes(true);
  TJpgDec.setCallback(tft_jpg_render);

  // =====================================================
  // CLEAR BUTTON AREA
  // =====================================================
  tft.fillRect(btn.x - 5, btn.y - 5, btn.w + 10, btn.h + 60, TFT_BLACK);

  // =====================================================
  // DISPLAY JPG IMAGE
  // =====================================================
  TJpgDec.drawFsJpg(btn.x, btn.y, filename.c_str());
  Serial.println(&quot;Gambar ditampilkan di: (&quot; + String(btn.x) + &quot;, &quot; + String(btn.y) + &quot;)&quot;);

  // =====================================================
  // DRAW LABEL (ON / OFF)
  // =====================================================
  int labelY = btn.y + btn.h + 15;
  
  tft.setTextDatum(MC_DATUM);
  tft.setTextSize(2);
  tft.setTextColor(btn.state ? TFT_GREEN : TFT_RED, TFT_BLACK);

  String labelText = btn.state ? &quot;ON&quot; : &quot;OFF&quot;;
  int labelX = btn.x + btn.w / 2;

  tft.drawString(labelText, labelX, labelY, 2);
  Serial.println(&quot;Label: &quot; + labelText);

  // =====================================================
  // RELAY CONTROL - HIGH LEVEL TRIGGER
  // =====================================================
  if (btn.state) {
    digitalWrite(RELAY_PIN, HIGH);  // ON - nyalakan relay
    Serial.println(&quot;Relay NYALA (HIGH) - Pin 25 = 3.3V&quot;);
  } else {
    digitalWrite(RELAY_PIN, LOW);   // OFF - matikan relay
    Serial.println(&quot;Relay MATI (LOW) - Pin 25 = 0V&quot;);
  }

  Serial.println(&quot;---&quot;);
}

// =====================================================
// LOAD IMAGE FROM SPIFFS
// =====================================================
void loadImageInfo(ImageButton &amp;amp;btn) {
  Serial.println(&quot;\n--- Loading Button Image ---&quot;);
  
  String filename = btn.imageOffPath;
  
  if (!SPIFFS.exists(filename)) {
    Serial.println(&quot;ERROR: File tidak ada: &quot; + filename);
    return;
  }

  uint16_t w, h;
  if (TJpgDec.getFsJpgSize(&amp;amp;w, &amp;amp;h, filename.c_str()) != JDR_OK) {
    Serial.println(&quot;ERROR: Gagal membaca ukuran JPG&quot;);
    return;
  }

  Serial.println(&quot;Ukuran asli gambar: &quot; + String(w) + &quot; x &quot; + String(h));

  // =====================================================
  // AUTO SCALE
  // =====================================================
  uint8_t scale = 0;
  while (scale &amp;lt; 3) {
    if ((w &amp;gt;&amp;gt; scale) &amp;lt;= 220 &amp;amp;&amp;amp; (h &amp;gt;&amp;gt; scale) &amp;lt;= 200) {
      break;
    }
    scale++;
  }

  btn.scale = scale;
  btn.w = w &amp;gt;&amp;gt; scale;
  btn.h = h &amp;gt;&amp;gt; scale;

  Serial.println(&quot;Scale factor: &quot; + String(scale));
  Serial.println(&quot;Ukuran akhir: &quot; + String(btn.w) + &quot; x &quot; + String(btn.h));
  Serial.println(&quot;Posisi button: (&quot; + String(btn.x) + &quot;, &quot; + String(btn.y) + &quot;)&quot;);
}

// =====================================================
// CHECK IF TOUCH IS INSIDE BUTTON
// =====================================================
bool isTouchInsideButton(uint16_t touchX, uint16_t touchY, ImageButton &amp;amp;btn) {
  return (touchX &amp;gt;= btn.x &amp;amp;&amp;amp; touchX &amp;lt;= (btn.x + btn.w) &amp;amp;&amp;amp;
          touchY &amp;gt;= btn.y &amp;amp;&amp;amp; touchY &amp;lt;= (btn.y + btn.h));
}

// =====================================================
// HANDLE TOUCH
// =====================================================
void checkTouch() {
  if (!touchEnabled) return;

  if (ts.touched()) {
    TS_Point p = ts.getPoint();

    if (p.z &amp;gt; TOUCH_PRESSURE_THRESHOLD) {
      if (!isTouching &amp;amp;&amp;amp; (millis() - lastTouchTime &amp;gt;= TOUCH_DEBOUNCE_DELAY)) {
        lastTouchTime = millis();
        isTouching = true;

        beepBuzzer();

        uint16_t touchX = mapX(p.x);
        uint16_t touchY = mapY(p.y);

        touchX = constrain(touchX, 0, SCREEN_WIDTH - 1);
        touchY = constrain(touchY, 0, SCREEN_HEIGHT - 1);

        Serial.println(&quot;\nTouch at: (&quot; + String(touchX) + &quot;, &quot; + String(touchY) + &quot;)&quot;);

        // =====================================================
        // CHECK IF TOUCH INSIDE BUTTON
        // =====================================================
        if (isTouchInsideButton(touchX, touchY, button1)) {
          Serial.println(&quot;&amp;gt;&amp;gt;&amp;gt; BUTTON DITEKAN!&quot;);
          button1.state = !button1.state;
          
          Serial.println(&quot;Button state berubah menjadi: &quot; + String(button1.state ? &quot;ON&quot; : &quot;OFF&quot;));
          
          displayButtonImage(button1);
          
          // Debounce: wait for finger lift
          delay(500);
          while (ts.touched()) {
            delay(50);
          }
          delay(300);
        }
      }
    } else {
      isTouching = false;
    }
  } else {
    isTouching = false;
  }
}

// =====================================================
// DRAW HOME SCREEN
// =====================================================
void drawHomeScreen() {
  tft.fillScreen(TFT_BLACK);

  tft.setTextColor(TFT_WHITE, TFT_BLACK);
  tft.setTextDatum(MC_DATUM);
  tft.setTextSize(1);

  //tft.drawString(&quot;IMAGE BUTTON WITH RELAY&quot;, SCREEN_WIDTH / 2, 30, 4);
  //tft.drawString(&quot;PIN 25 - HIGH Level Trigger&quot;, SCREEN_WIDTH / 2, 70, 2);

  // Display button
  displayButtonImage(button1);

  // Instructions
  tft.setTextSize(1);
  tft.setTextColor(TFT_YELLOW, TFT_BLACK);
  //tft.drawString(&quot;Sentuh gambar untuk ON/OFF&quot;, SCREEN_WIDTH / 2, SCREEN_HEIGHT - 40, 1);

  tft.setTextDatum(TL_DATUM);
}

// =====================================================
// SETUP
// =====================================================
void setup() {
  Serial.begin(115200);
  delay(1000);

  Serial.println(&quot;\n\n=== IMAGE BUTTON PROGRAM START ===\n&quot;);

  // =====================================================
  // SPIFFS INITIALIZATION
  // =====================================================
  if (!SPIFFS.begin(true)) {
    Serial.println(&quot;ERROR: SPIFFS gagal mount&quot;);
    return;
  }
  Serial.println(&quot;✓ SPIFFS berhasil di-mount&quot;);

  // =====================================================
  // TFT INITIALIZATION
  // =====================================================
  tft.init();
  tft.setRotation(0);
  tft.fillScreen(TFT_BLACK);
  Serial.println(&quot;✓ TFT berhasil diinisialisasi&quot;);

  // =====================================================
  // JPG DECODER INITIALIZATION
  // =====================================================
  TJpgDec.setCallback(tft_jpg_render);
  TJpgDec.setSwapBytes(true);
  TJpgDec.setJpgScale(0);
  Serial.println(&quot;✓ JPG Decoder siap&quot;);

  // =====================================================
  // TOUCHSCREEN INITIALIZATION
  // =====================================================
  if (!ts.begin()) {
    touchEnabled = false;
    Serial.println(&quot;WARNING: Touchscreen tidak terdeteksi!&quot;);
  } else {
    ts.setRotation(0);
    Serial.println(&quot;✓ Touchscreen siap&quot;);
  }

  // =====================================================
  // RELAY PIN INITIALIZATION
  // =====================================================
  pinMode(RELAY_PIN, OUTPUT);
  digitalWrite(RELAY_PIN, LOW);  // Initial state: OFF
  Serial.println(&quot;✓ Relay di pin &quot; + String(RELAY_PIN) + &quot; siap (awal: LOW/OFF)&quot;);

  // =====================================================
  // SPI INITIALIZATION
  // =====================================================
  SPI.begin();
  Serial.println(&quot;✓ SPI berhasil diinisialisasi&quot;);

  // =====================================================
  // BOOT SCREEN
  // =====================================================
  drawBootScreen();

  // =====================================================
  // LOAD BUTTON IMAGE INFO
  // =====================================================
  loadImageInfo(button1);

  // =====================================================
  // DRAW HOME SCREEN
  // =====================================================
  drawHomeScreen();

  Serial.println(&quot;\n=== READY - SIAP SENTUH GAMBAR ===\n&quot;);
}

// =====================================================
// MAIN LOOP
// =====================================================
void loop() {
  checkTouch();
  delay(10);
}
&lt;/tjpg_decoder&gt;&lt;/spiffs&gt;&lt;/xpt2046_touchscreen&gt;&lt;/spi&gt;&lt;/tft_espi&gt;&lt;/pre&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;
&lt;/p&gt;

&lt;h2 id=&quot;penutup&quot; style=&quot;text-align: left;&quot;&gt;13. Penutup&lt;/h2&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
Membuat tombol touchscreen ON/OFF pada TFT ILI9488 menggunakan ESP32 merupakan
langkah awal yang sangat bagus untuk mempelajari sistem HMI modern. &lt;br /&gt;
Melalui proyek ini kita belajar banyak hal sekaligus mulai dari touchscreen,
SPIFFS, tampilan grafis, hingga kontrol relay.&lt;br /&gt;
&lt;br /&gt;
Setelah memahami dasar proyek ini, Anda dapat mengembangkan sistem menjadi jauh
lebih kompleks seperti smart home berbasis WiFi, panel monitoring sensor,
hingga dashboard IoT profesional.&lt;br /&gt;
&lt;br /&gt;
Semoga artikel ini membantu dan dapat menjadi referensi untuk proyek ESP32
berikutnya.&lt;br style=&quot;mso-special-character: line-break;&quot; /&gt;
&lt;br style=&quot;mso-special-character: line-break;&quot; /&gt;
&lt;/p&gt;&lt;span style=&quot;font-family: &amp;quot;Cambria&amp;quot;,serif; font-size: 11pt; line-height: 115%; mso-ansi-language: EN-US; mso-ascii-theme-font: minor-latin; mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;; mso-bidi-language: AR-SA; mso-bidi-theme-font: minor-bidi; mso-fareast-font-family: &amp;quot;MS Mincho&amp;quot;; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin;&quot;&gt;Baca juga : &lt;a href=&quot;https://www.carapaklek.com/2026/03/cara-mengaktifkan-bluetooth-esp32.html&quot;&gt;Cara Mengaktifkan Bluetooth ESP32 dengan ESP-IDF (Lengkap untuk Pemula)&lt;br clear=&quot;all&quot; style=&quot;break-before: page; mso-special-character: line-break; page-break-before: always;&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;&lt;/p&gt;

</content><link rel='replies' type='application/atom+xml' href='https://www.carapaklek.com/feeds/423016764473100841/comments/default' title='Posting Komentar'/><link rel='replies' type='text/html' href='https://www.carapaklek.com/2026/05/membuat-tombol-touchscreen-onoff-esp32.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/2093917475945207513/posts/default/423016764473100841'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/2093917475945207513/posts/default/423016764473100841'/><link rel='alternate' type='text/html' href='https://www.carapaklek.com/2026/05/membuat-tombol-touchscreen-onoff-esp32.html' title='Membuat Tombol Touchscreen ON/OFF ESP32 untuk Mengontrol Relay dan Lampu di TFT ILI9488'/><author><name>carapaklek.com</name><uri>http://www.blogger.com/profile/12438575085929354819</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj84wNpqEWz7nUZmjNjPBarFLyRAZARNpnydt-LYU_GZhXNGZFUplzpWB82bcX7camGkjKhQ-KGgMvx5RMUkIl4gkJvWLq8dlBfnRdA_lNZPKfK8QjiWqasrUvzS15za_c0-zdUM_aAJ39EGM5XGzVoH0xzAg-7mAIwM90m4_AE9y7kgQ/s220/webcamp.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjP3U7l6EMVyvMbiSEwg9JqsPUliR4_ZKE6fSAaetnJm-MNkoR-x1ZAzR0UGdwE6l97vbK-UvGLZ9wIFi8NIOM2qya9615iNXnvNUNNEoYP97aBry9T0WAFGuyd1tXnkvECVhsm8py3Lw2pX7wPRMAvKg2nudX9Qzar_K3AunvpMCdfAXwEs6I-lxamx7TR/s72-w640-h360-c/off.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2093917475945207513.post-2579952516181612397</id><published>2026-05-08T17:22:00.000+07:00</published><updated>2026-05-08T17:22:07.266+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Arduino"/><category scheme="http://www.blogger.com/atom/ns#" term="esspressif"/><category scheme="http://www.blogger.com/atom/ns#" term="Teknologi"/><title type='text'>Apa Itu SPIFFS di ESP32? (Penjelasan Lengkap + Studi Kasus TFT 4 Inch)</title><content type='html'>&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;&amp;nbsp;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;&lt;b&gt;&amp;nbsp;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnKgEnzKI40huk3PM9SbvjYj9gYJnTdTYGtAY3VP6cPk-I32qP6a-uFP5keXP5kMvTVZv8tvaplPmcbrz7Ryym6PXcBRHGHhGanKINu_vAF0h5qCdi5FuFqiTrLpJS_60BKYQJrTlOTGIpnHX8U4Bn8TQdSbiGqKLWe9vN1k1Z5hRNXMTzRokYrjBVG5jV/s1448/ChatGPT%20Image%208%20Mei%202026,%2017.15.26.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1086&quot; data-original-width=&quot;1448&quot; height=&quot;480&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnKgEnzKI40huk3PM9SbvjYj9gYJnTdTYGtAY3VP6cPk-I32qP6a-uFP5keXP5kMvTVZv8tvaplPmcbrz7Ryym6PXcBRHGHhGanKINu_vAF0h5qCdi5FuFqiTrLpJS_60BKYQJrTlOTGIpnHX8U4Bn8TQdSbiGqKLWe9vN1k1Z5hRNXMTzRokYrjBVG5jV/w640-h480/ChatGPT%20Image%208%20Mei%202026,%2017.15.26.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;&lt;b&gt;📌 Pengertian SPIFFS&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-end=&quot;527&quot; data-start=&quot;388&quot; style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;&lt;span data-end=&quot;422&quot; data-start=&quot;388&quot;&gt;SPIFFS (SPI Flash File System)&lt;/span&gt; adalah sistem file yang digunakan di dalam &lt;span data-end=&quot;497&quot; data-start=&quot;466&quot;&gt;flash memory internal ESP32&lt;/span&gt; untuk menyimpan data seperti:&lt;/span&gt;&lt;/p&gt;
&lt;ul data-end=&quot;633&quot; data-start=&quot;529&quot; style=&quot;text-align: left;&quot;&gt;&lt;li data-end=&quot;548&quot; data-section-id=&quot;14hyecb&quot; data-start=&quot;529&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
gambar (JPG, PNG)
&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;573&quot; data-section-id=&quot;1btb4iv&quot; data-start=&quot;549&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
file HTML (web server)
&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;587&quot; data-section-id=&quot;15xb1x&quot; data-start=&quot;574&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
JSON/config
&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;597&quot; data-section-id=&quot;z5wfuv&quot; data-start=&quot;588&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
font UI
&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;633&quot; data-section-id=&quot;1akln7e&quot; data-start=&quot;598&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
asset tampilan (ikon, background)
&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;654&quot; data-start=&quot;635&quot; style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;Berbeda dengan RAM:&lt;/span&gt;&lt;/p&gt;
&lt;ul data-end=&quot;737&quot; data-start=&quot;655&quot; style=&quot;text-align: left;&quot;&gt;&lt;li data-end=&quot;681&quot; data-section-id=&quot;1ykpl3r&quot; data-start=&quot;655&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
RAM → hilang saat mati
&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;737&quot; data-section-id=&quot;1s7auxd&quot; data-start=&quot;682&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
SPIFFS → &lt;span data-end=&quot;737&quot; data-start=&quot;693&quot;&gt;tetap tersimpan meskipun ESP32 dimatikan&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3 data-end=&quot;776&quot; data-section-id=&quot;1tzd3ra&quot; data-start=&quot;744&quot; style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;&lt;b&gt;⚙️ Cara Kerja SPIFFS di ESP32&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-end=&quot;833&quot; data-start=&quot;778&quot; style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;ESP32 punya &lt;span data-end=&quot;832&quot; data-start=&quot;790&quot;&gt;flash memory (biasanya 4MB atau lebih)&lt;/span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;874&quot; data-start=&quot;835&quot; style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;Memory ini dibagi jadi beberapa bagian:&lt;/span&gt;&lt;/p&gt;
&lt;ul data-end=&quot;936&quot; data-start=&quot;875&quot; style=&quot;text-align: left;&quot;&gt;&lt;li data-end=&quot;895&quot; data-section-id=&quot;23q3cc&quot; data-start=&quot;875&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
program (firmware)
&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;908&quot; data-section-id=&quot;1wmfyub&quot; data-start=&quot;896&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
OTA update
&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;936&quot; data-section-id=&quot;nap61b&quot; data-start=&quot;909&quot;&gt;&lt;p&gt;
&lt;span data-end=&quot;936&quot; data-start=&quot;911&quot; style=&quot;font-family: Roboto;&quot;&gt;SPIFFS (storage file)&lt;/span&gt;
&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;992&quot; data-start=&quot;938&quot; style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;👉 Jadi SPIFFS itu &lt;span data-end=&quot;992&quot; data-start=&quot;957&quot;&gt;“harddisk kecil” di dalam ESP32&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;h3 data-end=&quot;1032&quot; data-section-id=&quot;18fkere&quot; data-start=&quot;999&quot; style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;&lt;h3 data-end=&quot;1032&quot; data-section-id=&quot;18fkere&quot; data-start=&quot;999&quot; style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;&lt;b&gt;📁 Struktur SPIFFS (Sederhana)&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-end=&quot;1052&quot; data-start=&quot;1034&quot; style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;Contoh isi SPIFFS:&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;overflow-visible! px-0!&quot; data-end=&quot;1135&quot; data-start=&quot;1053&quot; style=&quot;text-align: left;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;relative w-full mt-4 mb-1&quot;&gt;&lt;div&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;h-full min-h-0 min-w-0&quot;&gt;&lt;div class=&quot;h-full min-h-0 min-w-0&quot;&gt;&lt;div class=&quot;border border-token-border-light border-radius-3xl corner-superellipse/1.1 rounded-3xl&quot;&gt;&lt;div class=&quot;h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;pe-11 pt-3&quot;&gt;&lt;div class=&quot;relative z-0 flex max-w-full&quot;&gt;&lt;div class=&quot;q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch ͼd ͼr&quot; id=&quot;code-block-viewer&quot;&gt;&lt;div class=&quot;cm-scroller&quot;&gt;&lt;pre class=&quot;cm-content q9tKkq_readonly m-0&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;&lt;code&gt;&lt;span&gt;/spiffs&lt;/span&gt;&lt;br /&gt;&lt;span&gt;  ├── bg.jpg&lt;/span&gt;&lt;br /&gt;&lt;span&gt;  ├── icon_start.jpg&lt;/span&gt;&lt;br /&gt;&lt;span&gt;  ├── config.json&lt;/span&gt;&lt;br /&gt;&lt;span&gt;  ├── data.txt&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;
&lt;p data-end=&quot;1148&quot; data-start=&quot;1137&quot; style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;ESP32 bisa:&lt;/span&gt;&lt;/p&gt;
&lt;ul data-end=&quot;1192&quot; data-start=&quot;1149&quot; style=&quot;text-align: left;&quot;&gt;&lt;li data-end=&quot;1162&quot; data-section-id=&quot;1ooq6mn&quot; data-start=&quot;1149&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
baca file
&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;1177&quot; data-section-id=&quot;exkl09&quot; data-start=&quot;1163&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
tulis file
&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;1192&quot; data-section-id=&quot;z5018x&quot; data-start=&quot;1178&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
hapus file&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3 data-end=&quot;1244&quot; data-section-id=&quot;7nqq07&quot; data-start=&quot;1199&quot; style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;&lt;b&gt;🖥️ Kenapa SPIFFS Penting untuk TFT 4 Inch?&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;&lt;p data-end=&quot;1334&quot; data-start=&quot;1288&quot; style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;Kalau kamu pakai &lt;span data-end=&quot;1333&quot; data-start=&quot;1305&quot;&gt;LCD TFT 4 inch (ILI9488)&lt;/span&gt;:&lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;1349&quot; data-start=&quot;1336&quot; style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;Tanpa SPIFFS:&lt;/span&gt;&lt;/p&gt;
&lt;ul data-end=&quot;1423&quot; data-start=&quot;1350&quot; style=&quot;text-align: left;&quot;&gt;&lt;li data-end=&quot;1383&quot; data-section-id=&quot;5938sg&quot; data-start=&quot;1350&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
gambar harus di-embed di kode ❌
&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;1406&quot; data-section-id=&quot;10gl9na&quot; data-start=&quot;1384&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
program jadi berat ❌
&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;1423&quot; data-section-id=&quot;o6l9t5&quot; data-start=&quot;1407&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
susah update ❌
&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;1439&quot; data-start=&quot;1425&quot; style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;Dengan SPIFFS:&lt;/span&gt;&lt;/p&gt;
&lt;ul data-end=&quot;1532&quot; data-start=&quot;1440&quot; style=&quot;text-align: left;&quot;&gt;&lt;li data-end=&quot;1468&quot; data-section-id=&quot;1hs643z&quot; data-start=&quot;1440&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
gambar disimpan di flash ✅
&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;1495&quot; data-section-id=&quot;3di6mh&quot; data-start=&quot;1469&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
bisa load saat runtime ✅
&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;1532&quot; data-section-id=&quot;2p403g&quot; data-start=&quot;1496&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
bisa ganti tanpa ubah kode utama ✅&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p data-end=&quot;1566&quot; data-section-id=&quot;107l448&quot; data-start=&quot;1539&quot; style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;🔥 Contoh Use Case Nyata&lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;1586&quot; data-section-id=&quot;c82fwn&quot; data-start=&quot;1568&quot; style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;1. Tampilan UI&lt;/span&gt;&lt;/p&gt;
&lt;ul data-end=&quot;1637&quot; data-start=&quot;1587&quot; style=&quot;text-align: left;&quot;&gt;&lt;li data-end=&quot;1604&quot; data-section-id=&quot;11upyfp&quot; data-start=&quot;1587&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
background menu
&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;1624&quot; data-section-id=&quot;uzbcrs&quot; data-start=&quot;1605&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
tombol start/stop
&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;1637&quot; data-section-id=&quot;e83yvs&quot; data-start=&quot;1625&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
logo brand
&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;1665&quot; data-section-id=&quot;1x89xd5&quot; data-start=&quot;1639&quot; style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;2. Gallery / Slideshow&lt;/span&gt;&lt;/p&gt;
&lt;ul data-end=&quot;1719&quot; data-start=&quot;1666&quot; style=&quot;text-align: left;&quot;&gt;&lt;li data-end=&quot;1693&quot; data-section-id=&quot;zy1o7o&quot; data-start=&quot;1666&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
baca semua file di SPIFFS
&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;1719&quot; data-section-id=&quot;laxzvq&quot; data-start=&quot;1694&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
tampilkan satu per satu
&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;1750&quot; data-section-id=&quot;17fu2gf&quot; data-start=&quot;1721&quot; style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;3. Sistem Dashboard Lokal&lt;/span&gt;&lt;/p&gt;
&lt;ul data-end=&quot;1800&quot; data-start=&quot;1751&quot; style=&quot;text-align: left;&quot;&gt;&lt;li data-end=&quot;1776&quot; data-section-id=&quot;1dtlo3o&quot; data-start=&quot;1751&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
HTML disimpan di SPIFFS
&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;1800&quot; data-section-id=&quot;18jjnrw&quot; data-start=&quot;1777&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
ESP32 jadi web server&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p data-end=&quot;2509&quot; data-section-id=&quot;t0wsv9&quot; data-start=&quot;2476&quot; style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;⚠️ Kelemahan SPIFFS&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;2545&quot; data-start=&quot;2511&quot; style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;SPIFFS itu bukan tanpa kekurangan:&lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;2574&quot; data-section-id=&quot;10nbfb0&quot; data-start=&quot;2547&quot; style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;❌ Tidak ada folder asli&lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;2605&quot; data-start=&quot;2575&quot; style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;Semua file dianggap satu level&lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;2641&quot; data-section-id=&quot;1eeykaq&quot; data-start=&quot;2607&quot; style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;❌ Tidak cocok untuk file besar&lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;2649&quot; data-start=&quot;2642&quot; style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;Contoh:&lt;/span&gt;&lt;/p&gt;
&lt;ul data-end=&quot;2684&quot; data-start=&quot;2650&quot; style=&quot;text-align: left;&quot;&gt;&lt;li data-end=&quot;2659&quot; data-section-id=&quot;mu3ol1&quot; data-start=&quot;2650&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
video ❌
&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;2684&quot; data-section-id=&quot;18zc3vw&quot; data-start=&quot;2660&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
image resolusi besar ❌
&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;2715&quot; data-section-id=&quot;103vujz&quot; data-start=&quot;2686&quot; style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;❌ Sudah mulai tergantikan&lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;2744&quot; data-start=&quot;2716&quot; style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;ESP-IDF terbaru mulai pakai:&lt;/span&gt;&lt;/p&gt;
&lt;ul data-end=&quot;2770&quot; data-start=&quot;2745&quot; style=&quot;text-align: left;&quot;&gt;&lt;li data-end=&quot;2770&quot; data-section-id=&quot;16pvd39&quot; data-start=&quot;2745&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
LittleFS (lebih modern)&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style=&quot;max-width: 700px; text-align: left;&quot;&gt;
  &lt;/p&gt;&lt;h3 style=&quot;align-items: center; display: flex; gap: 8px; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;
    &lt;b&gt;🔄 SPIFFS vs Alternatif
  &lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;

  &lt;table style=&quot;border-collapse: collapse; margin-top: 10px; width: 100%;&quot;&gt;
    &lt;thead&gt;
      &lt;tr style=&quot;background-color: whitesmoke;&quot;&gt;
        &lt;th style=&quot;border-bottom: 2px solid rgb(221, 221, 221); padding: 10px; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;Sistem&lt;/span&gt;&lt;/span&gt;&lt;/th&gt;
        &lt;th style=&quot;border-bottom: 2px solid rgb(221, 221, 221); padding: 10px; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;Kelebihan&lt;/span&gt;&lt;/span&gt;&lt;/th&gt;
        &lt;th style=&quot;border-bottom: 2px solid rgb(221, 221, 221); padding: 10px; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;Kekurangan&lt;/span&gt;&lt;/span&gt;&lt;/th&gt;
      &lt;/tr&gt;
    &lt;/thead&gt;
    &lt;tbody&gt;
      &lt;tr&gt;
        &lt;td style=&quot;border-bottom: 1px solid rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;SPIFFS&lt;/span&gt;&lt;/td&gt;
        &lt;td style=&quot;border-bottom: 1px solid rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;ringan, mudah&lt;/span&gt;&lt;/td&gt;
        &lt;td style=&quot;border-bottom: 1px solid rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;fitur terbatas&lt;/span&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td style=&quot;border-bottom: 1px solid rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;LittleFS&lt;/span&gt;&lt;/td&gt;
        &lt;td style=&quot;border-bottom: 1px solid rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;lebih stabil&lt;/span&gt;&lt;/td&gt;
        &lt;td style=&quot;border-bottom: 1px solid rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;setup sedikit lebih ribet&lt;/span&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td style=&quot;padding: 10px;&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;SD Card&lt;/span&gt;&lt;/td&gt;
        &lt;td style=&quot;padding: 10px;&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;kapasitas besar&lt;/span&gt;&lt;/td&gt;
        &lt;td style=&quot;padding: 10px;&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;butuh hardware tambahan&lt;/span&gt;&lt;/td&gt;
      &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;&lt;b&gt;🧩 Kapan Harus Pakai SPIFFS?&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;&lt;p data-end=&quot;3089&quot; data-start=&quot;3068&quot; style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;Gunakan SPIFFS kalau:&lt;/span&gt;&lt;/p&gt;
&lt;ul data-end=&quot;3165&quot; data-start=&quot;3090&quot; style=&quot;text-align: left;&quot;&gt;&lt;li data-end=&quot;3116&quot; data-section-id=&quot;13uc0t4&quot; data-start=&quot;3090&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
butuh simpan gambar UI
&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;3138&quot; data-section-id=&quot;1lnmaze&quot; data-start=&quot;3117&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
butuh config file
&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;3165&quot; data-section-id=&quot;c7jsor&quot; data-start=&quot;3139&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
project kecil-menengah
&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;3186&quot; data-start=&quot;3167&quot; style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;Jangan pakai kalau:&lt;/span&gt;&lt;/p&gt;
&lt;ul data-end=&quot;3249&quot; data-start=&quot;3187&quot; style=&quot;text-align: left;&quot;&gt;&lt;li data-end=&quot;3214&quot; data-section-id=&quot;1el8m3t&quot; data-start=&quot;3187&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
butuh banyak file besar
&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;3249&quot; data-section-id=&quot;1jfeamo&quot; data-start=&quot;3215&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
butuh struktur folder kompleks&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;&lt;b&gt;🖼️ Cara Upload Gambar ke SPIFFS dan Tampilkan di TFT ESP32 (Step-by-Step)&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;&lt;p data-end=&quot;379&quot; data-start=&quot;281&quot; style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;Kalau kamu sudah sampai tahap pakai &lt;span data-end=&quot;339&quot; data-start=&quot;317&quot;&gt;ESP32 + TFT 4 inch&lt;/span&gt;, biasanya masalah berikut pasti muncul:&lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;468&quot; data-start=&quot;381&quot; style=&quot;text-align: left;&quot;&gt;
&lt;/p&gt;&lt;p data-end=&quot;468&quot; data-start=&quot;383&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;❓ “Gimana cara nampilin gambar (logo, background UI) tanpa bikin program jadi berat?”&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;p data-end=&quot;578&quot; data-start=&quot;470&quot; style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;Jawabannya: &lt;span data-end=&quot;509&quot; data-start=&quot;482&quot;&gt;pakai SPIFFS + file JPG&lt;/span&gt;.&lt;br data-end=&quot;513&quot; data-start=&quot;510&quot; /&gt;
Di artikel ini kamu akan belajar dari nol sampai tampil di layar.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;605&quot; data-section-id=&quot;1ybpki0&quot; data-start=&quot;585&quot; style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;🎯 Tujuan Tutorial&lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;640&quot; data-start=&quot;607&quot; style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;Setelah mengikuti ini, kamu bisa:&lt;/span&gt;&lt;/p&gt;
&lt;ul data-end=&quot;771&quot; data-start=&quot;641&quot; style=&quot;text-align: left;&quot;&gt;&lt;li data-end=&quot;668&quot; data-section-id=&quot;1oyrhnq&quot; data-start=&quot;641&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
upload gambar ke SPIFFS
&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;696&quot; data-section-id=&quot;o4b4hf&quot; data-start=&quot;669&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
membaca file dari ESP32
&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;736&quot; data-section-id=&quot;1rlwpwh&quot; data-start=&quot;697&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
menampilkan gambar ke TFT (ILI9488)
&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;771&quot; data-section-id=&quot;ghqt1j&quot; data-start=&quot;737&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
memahami alur kerja end-to-end&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p data-end=&quot;792&quot; data-section-id=&quot;1g7wy8b&quot; data-start=&quot;778&quot; style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;🧰 Persiapan&lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;805&quot; data-section-id=&quot;lo3wqj&quot; data-start=&quot;794&quot; style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;Hardware&lt;/span&gt;&lt;/p&gt;
&lt;ul data-end=&quot;850&quot; data-start=&quot;806&quot; style=&quot;text-align: left;&quot;&gt;&lt;li data-end=&quot;815&quot; data-section-id=&quot;1jj1ilr&quot; data-start=&quot;806&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
ESP32
&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;850&quot; data-section-id=&quot;4817kk&quot; data-start=&quot;816&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
TFT 4 inch (ILI9488 / sejenis)
&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;863&quot; data-section-id=&quot;105cbnu&quot; data-start=&quot;852&quot; style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;Software&lt;/span&gt;&lt;/p&gt;
&lt;ul data-end=&quot;978&quot; data-start=&quot;864&quot; style=&quot;text-align: left;&quot;&gt;&lt;li data-end=&quot;905&quot; data-section-id=&quot;17wgcs5&quot; data-start=&quot;864&quot;&gt;&lt;p&gt;
&lt;span class=&quot;hover:entity-accent entity-underline inline cursor-pointer align-baseline&quot; style=&quot;font-family: Roboto;&quot;&gt;&lt;span class=&quot;whitespace-normal&quot;&gt;Arduino IDE&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;978&quot; data-section-id=&quot;1nw55xc&quot; data-start=&quot;906&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
Library:
&lt;/span&gt;&lt;/p&gt;&lt;ul data-end=&quot;978&quot; data-start=&quot;919&quot;&gt;&lt;li data-end=&quot;933&quot; data-section-id=&quot;vy52da&quot; data-start=&quot;919&quot;&gt;&lt;p&gt;
&lt;code data-end=&quot;931&quot; data-start=&quot;921&quot; style=&quot;font-family: Roboto;&quot;&gt;TFT_eSPI&lt;/code&gt;
&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;954&quot; data-section-id=&quot;wnggbk&quot; data-start=&quot;936&quot;&gt;&lt;p&gt;
&lt;code data-end=&quot;952&quot; data-start=&quot;938&quot; style=&quot;font-family: Roboto;&quot;&gt;TJpg_Decoder&lt;/code&gt;
&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;978&quot; data-section-id=&quot;ex2q3g&quot; data-start=&quot;957&quot;&gt;&lt;p&gt;
&lt;span style=&quot;font-family: Roboto;&quot;&gt;&lt;code data-end=&quot;967&quot; data-start=&quot;959&quot;&gt;SPIFFS&lt;/code&gt; (built-in)&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;&amp;nbsp;📁 STEP 1 — Siapkan Gambar&lt;/span&gt;&lt;/h3&gt;&lt;p data-end=&quot;1088&quot; data-start=&quot;1057&quot; style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;Gunakan gambar dengan kriteria:&lt;/span&gt;&lt;/p&gt;
&lt;ul data-end=&quot;1190&quot; data-start=&quot;1090&quot; style=&quot;text-align: left;&quot;&gt;&lt;li data-end=&quot;1108&quot; data-section-id=&quot;1cv84w2&quot; data-start=&quot;1090&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
format: &lt;span data-end=&quot;1108&quot; data-start=&quot;1100&quot;&gt;.jpg&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;1155&quot; data-section-id=&quot;1xye2le&quot; data-start=&quot;1109&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
resolusi kecil (misal: 320x240 atau 480x320)
&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;1190&quot; data-section-id=&quot;to3mue&quot; data-start=&quot;1156&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
ukuran &amp;lt; 100KB (biar cepat load)
&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;1206&quot; data-start=&quot;1192&quot; style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;👉 Kenapa JPG?&lt;/span&gt;&lt;/p&gt;
&lt;ul data-end=&quot;1277&quot; data-start=&quot;1207&quot; style=&quot;text-align: left;&quot;&gt;&lt;li data-end=&quot;1237&quot; data-section-id=&quot;obzg4i&quot; data-start=&quot;1207&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
lebih ringan dibanding PNG
&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;1277&quot; data-section-id=&quot;1xxpju6&quot; data-start=&quot;1238&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
didukung langsung oleh &lt;code data-end=&quot;1277&quot; data-start=&quot;1263&quot;&gt;TJpg_Decoder&lt;/code&gt;&lt;/span&gt;
&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;1296&quot; data-start=&quot;1279&quot; style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;Contoh nama file:&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;overflow-visible! px-0!&quot; data-end=&quot;1320&quot; data-start=&quot;1297&quot; style=&quot;text-align: left;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;relative w-full mt-4 mb-1&quot;&gt;&lt;div&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;h-full min-h-0 min-w-0&quot;&gt;&lt;div class=&quot;h-full min-h-0 min-w-0&quot;&gt;&lt;div class=&quot;border border-token-border-light border-radius-3xl corner-superellipse/1.1 rounded-3xl&quot;&gt;&lt;div class=&quot;h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;pe-11 pt-3&quot;&gt;&lt;div class=&quot;relative z-0 flex max-w-full&quot;&gt;&lt;div class=&quot;q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch ͼd ͼr&quot; id=&quot;code-block-viewer&quot;&gt;&lt;div class=&quot;cm-scroller&quot;&gt;&lt;p class=&quot;cm-content q9tKkq_readonly m-0&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;&lt;code&gt;&lt;span&gt;bg.jpg&lt;/span&gt;&lt;br /&gt;&lt;span&gt;logo.jpg&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;1088&quot; data-start=&quot;1057&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;Gunakan gambar dengan kriteria:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
&lt;/span&gt;&lt;/p&gt;&lt;ul data-end=&quot;1190&quot; data-start=&quot;1090&quot;&gt;&lt;li data-end=&quot;1108&quot; data-section-id=&quot;1cv84w2&quot; data-start=&quot;1090&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
format: &lt;span data-end=&quot;1108&quot; data-start=&quot;1100&quot;&gt;.jpg&lt;/span&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;1155&quot; data-section-id=&quot;1xye2le&quot; data-start=&quot;1109&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
resolusi kecil (misal: 320x240 atau 480x320)
&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;1190&quot; data-section-id=&quot;to3mue&quot; data-start=&quot;1156&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
ukuran &amp;lt; 100KB (biar cepat load)
&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;1206&quot; data-start=&quot;1192&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;👉 Kenapa JPG?&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
&lt;/span&gt;&lt;/p&gt;&lt;ul data-end=&quot;1277&quot; data-start=&quot;1207&quot;&gt;&lt;li data-end=&quot;1237&quot; data-section-id=&quot;obzg4i&quot; data-start=&quot;1207&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
lebih ringan dibanding PNG
&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;1277&quot; data-section-id=&quot;1xxpju6&quot; data-start=&quot;1238&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
didukung langsung oleh &lt;code data-end=&quot;1277&quot; data-start=&quot;1263&quot;&gt;TJpg_Decoder&lt;/code&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;1296&quot; data-start=&quot;1279&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;Contoh nama file:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;relative w-full mt-4 mb-1&quot;&gt;&lt;/p&gt;&lt;div&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;h-full min-h-0 min-w-0&quot;&gt;&lt;div class=&quot;h-full min-h-0 min-w-0&quot;&gt;&lt;div class=&quot;border border-token-border-light border-radius-3xl corner-superellipse/1.1 rounded-3xl&quot;&gt;&lt;div class=&quot;h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;pe-11 pt-3&quot;&gt;&lt;div class=&quot;relative z-0 flex max-w-full&quot;&gt;&lt;div class=&quot;q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch ͼd ͼr&quot; id=&quot;code-block-viewer&quot;&gt;&lt;div class=&quot;cm-scroller&quot;&gt;&lt;pre class=&quot;cm-content q9tKkq_readonly m-0&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;&lt;code&gt;&lt;span&gt;bg.jpg&lt;/span&gt;&lt;br /&gt;&lt;span&gt;logo.jpg&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;h3 data-end=&quot;1357&quot; data-section-id=&quot;14a8auh&quot; data-start=&quot;1327&quot; style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;&lt;b&gt;📂 STEP 2 — Buat Folder Data&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;1390&quot; data-start=&quot;1359&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;Di folder project Arduino kamu:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;relative w-full mt-4 mb-1&quot;&gt;&lt;/p&gt;&lt;div&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;h-full min-h-0 min-w-0&quot;&gt;&lt;div class=&quot;h-full min-h-0 min-w-0&quot;&gt;&lt;div class=&quot;border border-token-border-light border-radius-3xl corner-superellipse/1.1 rounded-3xl&quot;&gt;&lt;div class=&quot;h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;pe-11 pt-3&quot;&gt;&lt;div class=&quot;relative z-0 flex max-w-full&quot;&gt;&lt;div class=&quot;q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch ͼd ͼr&quot; id=&quot;code-block-viewer&quot;&gt;&lt;div class=&quot;cm-scroller&quot;&gt;&lt;pre class=&quot;cm-content q9tKkq_readonly m-0&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;&lt;code&gt;&lt;span&gt;project_esp32/&lt;/span&gt;&lt;br /&gt;&lt;span&gt;  ├── project_esp32.ino&lt;/span&gt;&lt;br /&gt;&lt;span&gt;  └── data/&lt;/span&gt;&lt;br /&gt;&lt;span&gt;        └── bg.jpg&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;1511&quot; data-start=&quot;1471&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;👉 Folder &lt;span data-end=&quot;1492&quot; data-start=&quot;1481&quot;&gt;&lt;code data-end=&quot;1490&quot; data-start=&quot;1483&quot;&gt;data/&lt;/code&gt;&lt;/span&gt; ini WAJIB, karenasemua isi folder ini akan diupload ke SPIFFS&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;1511&quot; data-start=&quot;1471&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;h3 data-end=&quot;1595&quot; data-section-id=&quot;1wfwlta&quot; data-start=&quot;1565&quot; style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;&lt;b&gt;⬆️ STEP 3 — Upload ke SPIFFS&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;1628&quot; data-section-id=&quot;xrq047&quot; data-start=&quot;1597&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;Install Plugin Upload SPIFFS&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;1664&quot; data-start=&quot;1630&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;Di Arduino IDE, kamu butuh plugin:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;1695&quot; data-start=&quot;1666&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;👉 “ESP32 Sketch Data Upload”&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;1713&quot; data-start=&quot;1697&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;Setelah install:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
&lt;/span&gt;&lt;/p&gt;&lt;ul data-end=&quot;1780&quot; data-start=&quot;1714&quot;&gt;&lt;li data-end=&quot;1780&quot; data-section-id=&quot;15zl06l&quot; data-start=&quot;1714&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;1733&quot; data-start=&quot;1716&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;akan muncul menu:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;overflow-visible! px-0!&quot; data-end=&quot;1780&quot; data-start=&quot;1736&quot;&gt;&lt;/p&gt;&lt;div class=&quot;relative w-full mt-4 mb-1&quot;&gt;&lt;div&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;h-full min-h-0 min-w-0&quot;&gt;&lt;div class=&quot;h-full min-h-0 min-w-0&quot;&gt;&lt;div class=&quot;border border-token-border-light border-radius-3xl corner-superellipse/1.1 rounded-3xl&quot;&gt;&lt;div class=&quot;h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;pe-11 pt-3&quot;&gt;&lt;div class=&quot;relative z-0 flex max-w-full&quot;&gt;&lt;div class=&quot;q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch ͼd ͼr&quot; id=&quot;code-block-viewer&quot;&gt;&lt;div class=&quot;cm-scroller&quot;&gt;&lt;pre class=&quot;cm-content q9tKkq_readonly m-0&quot;&gt;&lt;code style=&quot;font-family: Roboto;&quot;&gt;&lt;span&gt;Tools → ESP32 Sketch Data Upload&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;1791&quot; data-section-id=&quot;17boepy&quot; data-start=&quot;1782&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;Upload&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
&lt;/span&gt;&lt;/p&gt;&lt;ol data-end=&quot;1899&quot; data-start=&quot;1793&quot;&gt;&lt;li data-end=&quot;1815&quot; data-section-id=&quot;1k4ax03&quot; data-start=&quot;1793&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
Pilih board ESP32
&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;1874&quot; data-section-id=&quot;i01av7&quot; data-start=&quot;1816&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;1824&quot; data-start=&quot;1819&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;Klik:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;overflow-visible! px-0!&quot; data-end=&quot;1874&quot; data-start=&quot;1828&quot;&gt;&lt;/p&gt;&lt;div class=&quot;relative w-full mt-4 mb-1&quot;&gt;&lt;div&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;h-full min-h-0 min-w-0&quot;&gt;&lt;div class=&quot;h-full min-h-0 min-w-0&quot;&gt;&lt;div class=&quot;border border-token-border-light border-radius-3xl corner-superellipse/1.1 rounded-3xl&quot;&gt;&lt;div class=&quot;h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;pe-11 pt-3&quot;&gt;&lt;div class=&quot;relative z-0 flex max-w-full&quot;&gt;&lt;div class=&quot;q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch ͼd ͼr&quot; id=&quot;code-block-viewer&quot;&gt;&lt;div class=&quot;cm-scroller&quot;&gt;&lt;pre class=&quot;cm-content q9tKkq_readonly m-0&quot;&gt;&lt;code style=&quot;font-family: Roboto;&quot;&gt;&lt;span&gt;Tools → ESP32 Sketch Data Upload&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li data-end=&quot;1899&quot; data-section-id=&quot;1mvxmw1&quot; data-start=&quot;1875&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
Tunggu sampai selesai
&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;
&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;1949&quot; data-start=&quot;1901&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;👉 Sekarang file kamu sudah masuk ke flash ESP32&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;1511&quot; data-start=&quot;1471&quot;&gt;&lt;span style=&quot;font-family: Roboto;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;h1 style=&quot;text-align: left;&quot;&gt;🌐 Upload Gambar ke SPIFFS via Web (Tanpa USB)&lt;/h1&gt;&lt;h2 data-end=&quot;424&quot; data-section-id=&quot;avkbnr&quot; data-start=&quot;412&quot;&gt;🎯 Tujuan&lt;/h2&gt;&lt;ul data-end=&quot;538&quot; data-start=&quot;425&quot;&gt;&lt;li data-end=&quot;468&quot; data-section-id=&quot;netzuo&quot; data-start=&quot;425&quot;&gt;
Upload file JPG ke SPIFFS lewat browser
&lt;/li&gt;&lt;li data-end=&quot;501&quot; data-section-id=&quot;uc9whc&quot; data-start=&quot;469&quot;&gt;
Melihat daftar file di ESP32
&lt;/li&gt;&lt;li data-end=&quot;538&quot; data-section-id=&quot;rh8rli&quot; data-start=&quot;502&quot;&gt;
Menampilkan file ke TFT langsung&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Gunakan program ini pastikan mengganti nama dan pasword wifi&lt;/p&gt;&lt;pre style=&quot;background: rgb(34, 34, 34); border-radius: 8px; color: white; padding: 15px;&quot;&gt;&lt;br /&gt;#include &lt;wifi .h=&quot;&quot;&gt;
#include &lt;webserver .h=&quot;&quot;&gt;
#include &lt;spiffs .h=&quot;&quot;&gt;
#include &lt;tft_espi .h=&quot;&quot;&gt;
#include &lt;tjpg_decoder .h=&quot;&quot;&gt;

// =====================================================
// WIFI ACCESS POINT
// =====================================================
const char* ssid = &quot;carapaklek dot com&quot;;
const char* password = &quot;12345678&quot;;

// =====================================================
// OBJECT
// =====================================================
WebServer server(80);
TFT_eSPI tft = TFT_eSPI();
File uploadFile;

// =====================================================
// HTML PAGE
// =====================================================
String uploadPage = R&quot;rawliteral(


&lt;html&gt;

&lt;head&gt;

  &lt;title&gt;ESP32 TFT Upload&lt;/title&gt;

  &lt;meta content=&quot;width=device-width, initial-scale=1&quot; name=&quot;viewport&quot;&gt;&lt;/meta&gt;

  &lt;style&gt;

    body{
      font-family:Arial;
      background:#f5f5f5;
      padding:20px;
    }

    .box{
      background:white;
      padding:20px;
      border-radius:10px;
      max-width:500px;
      margin:auto;
      box-shadow:0 0 10px rgba(0,0,0,0.1);
    }

    .file{
      background:#eee;
      padding:10px;
      margin:10px 0;
      border-radius:5px;
    }

    .btn{
      display:inline-block;
      padding:8px 12px;
      border-radius:5px;
      text-decoration:none;
      color:white;
      margin-top:5px;
      margin-right:5px;
    }

    .show{
      background:green;
    }

    .delete{
      background:red;
    }

  &lt;/style&gt;

&lt;/head&gt;

&lt;body&gt;

&lt;div class=&quot;box&quot;&gt;

&lt;h2&gt;ESP32 TFT Upload&lt;/h2&gt;

&lt;form action=&quot;/upload&quot; enctype=&quot;multipart/form-data&quot; method=&quot;POST&quot;&gt;

&lt;input name=&quot;data&quot; type=&quot;file&quot; /&gt;

&lt;br /&gt;&lt;br /&gt;

&lt;input type=&quot;submit&quot; value=&quot;Upload&quot; /&gt;

&lt;/form&gt;

&lt;br /&gt;

&lt;a href=&quot;/list&quot;&gt;Lihat File SPIFFS&lt;/a&gt;

&lt;/div&gt;

&lt;/body&gt;
&lt;/html&gt;

)rawliteral&quot;;

// =====================================================
// TFT JPG RENDER
// =====================================================
bool tft_jpg_render(int16_t x,
                    int16_t y,
                    uint16_t w,
                    uint16_t h,
                    uint16_t *bitmap)
{
  if (y &amp;gt;= tft.height()) return false;

  tft.pushImage(x, y, w, h, bitmap);

  return true;
}

// =====================================================
// TFT BOOT SCREEN
// =====================================================
void showBootScreen()
{
  tft.fillScreen(TFT_BLACK);

  tft.setTextColor(TFT_WHITE);
  tft.setTextSize(2);

  tft.setCursor(20, 40);
  tft.println(&quot;ESP32 TFT READY&quot;);

  tft.setCursor(20, 80);
  tft.println(&quot;Starting AP...&quot;);
}

// =====================================================
// TFT WIFI INFO
// =====================================================
void showWifiInfo()
{
  tft.fillScreen(TFT_BLACK);

  tft.setTextColor(TFT_GREEN);
  tft.setTextSize(2);

  tft.setCursor(20, 30);
  tft.println(&quot;WiFi AP Ready&quot;);

  tft.setTextColor(TFT_WHITE);

  tft.setCursor(20, 80);
  tft.println(&quot;SSID:&quot;);

  tft.setCursor(20, 110);
  tft.println(ssid);

  tft.setCursor(20, 160);
  tft.println(&quot;IP:&quot;);

  tft.setCursor(20, 190);
  tft.println(WiFi.softAPIP());
}

// =====================================================
// HANDLE UPLOAD
// =====================================================
void handleUpload()
{
  HTTPUpload&amp;amp; upload = server.upload();

  // =====================================================
  // START UPLOAD
  // =====================================================
  if (upload.status == UPLOAD_FILE_START)
  {
    String filename = upload.filename;

    // =====================================================
    // RAPIIKAN NAMA FILE
    // =====================================================
    filename.toLowerCase();

    filename.replace(&quot; &quot;, &quot;_&quot;);
    filename.replace(&quot;(&quot;, &quot;&quot;);
    filename.replace(&quot;)&quot;, &quot;&quot;);

    filename = &quot;/&quot; + filename;

    Serial.println(&quot;Upload File: &quot; + filename);

    uploadFile = SPIFFS.open(filename,
                             FILE_WRITE);
  }

  // =====================================================
  // WRITE FILE
  // =====================================================
  else if (upload.status == UPLOAD_FILE_WRITE)
  {
    if (uploadFile)
    {
      uploadFile.write(upload.buf,
                       upload.currentSize);
    }
  }

  // =====================================================
  // FINISH UPLOAD
  // =====================================================
  else if (upload.status == UPLOAD_FILE_END)
  {
    if (uploadFile)
    {
      uploadFile.close();
    }

    Serial.println(&quot;Upload selesai&quot;);
  }
}

// =====================================================
// LIST FILE
// =====================================================
void handleList()
{
  String html;

  html += &quot;&lt;html&gt;&lt;body&gt;&quot;;

  html += &quot;&lt;h2&gt;Daftar File SPIFFS&lt;/h2&gt;&quot;;

  File root = SPIFFS.open(&quot;/&quot;);

  File file = root.openNextFile();

  while (file)
  {
    String name = file.name();

    html += &quot;&lt;div class=&quot;file&quot;&gt;&quot;;

    html += &quot;&lt;b&gt;&quot;;
    html += name;
    html += &quot;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&quot;;

    // =====================================================
    // BUTTON SHOW
    // =====================================================
    html += &quot;&lt;a class=&quot;btn show&quot; href=&quot;/show?file=&amp;quot;;
    html += name;
    html += &amp;quot;&quot;&gt;Tampilkan&lt;/a&gt;&quot;;

    // =====================================================
    // BUTTON DELETE
    // =====================================================
    html += &quot;&lt;a apus=&quot;&quot; class=&quot;btn delete&quot; confirm=&quot;&quot; file=&quot;&quot; href=&quot;/delete?file=&amp;quot;;
    html += name;
    html += &amp;quot;&quot; ini=&quot;&quot; onclick=&quot;\&quot; return=&quot;&quot;&gt;Hapus&lt;/a&gt;&quot;;

    html += &quot;&lt;/div&gt;&quot;;

    file.close();

    file = root.openNextFile();
  }

  root.close();

  html += &quot;&lt;br /&gt;&lt;br /&gt;&quot;;

  html += &quot;&lt;a href=&quot;/&quot;&gt;Kembali&lt;/a&gt;&quot;;

  html += &quot;&lt;/body&gt;&lt;/html&gt;&quot;;

  server.send(200,
              &quot;text/html&quot;,
              html);
}

// =====================================================
// SHOW IMAGE TO TFT
// =====================================================
void handleShow()
{
  if (!server.hasArg(&quot;file&quot;))
  {
    server.send(400,
                &quot;text/plain&quot;,
                &quot;File tidak ditemukan&quot;);

    return;
  }

  String filename = server.arg(&quot;file&quot;);

  // =====================================================
  // PASTIKAN ADA &quot;/&quot;
  // =====================================================
  if (!filename.startsWith(&quot;/&quot;))
  {
    filename = &quot;/&quot; + filename;
  }

  Serial.println(&quot;Show: &quot; + filename);

  // =====================================================
  // CEK FILE
  // =====================================================
  if (!SPIFFS.exists(filename))
  {
    server.send(404,
                &quot;text/plain&quot;,
                &quot;File tidak ada&quot;);

    return;
  }

  // =====================================================
  // BACA UKURAN JPG
  // =====================================================
  uint16_t w, h;

  if (TJpgDec.getFsJpgSize(&amp;amp;w,
                           &amp;amp;h,
                           filename.c_str()) != JDR_OK)
  {
    server.send(500,
                &quot;text/plain&quot;,
                &quot;Gagal membaca JPG&quot;);

    return;
  }

  // =====================================================
  // AUTO SCALE
  // =====================================================
  uint8_t scale = 0;

  while (scale &amp;lt; 3)
  {
    if ((w &amp;gt;&amp;gt; scale) &amp;lt;= 480 &amp;amp;&amp;amp;
        (h &amp;gt;&amp;gt; scale) &amp;lt;= 320)
    {
      break;
    }

    scale++;
  }

  // =====================================================
  // CLEAR TFT
  // =====================================================
  tft.fillScreen(TFT_BLACK);

  // =====================================================
  // SET DECODER
  // =====================================================
  TJpgDec.setJpgScale(scale);

  TJpgDec.setSwapBytes(true);

  TJpgDec.setCallback(tft_jpg_render);

  // =====================================================
  // AUTO CENTER
  // =====================================================
  int x = (480 - (w &amp;gt;&amp;gt; scale)) / 2;

  int y = (320 - (h &amp;gt;&amp;gt; scale)) / 2;

  // =====================================================
  // TAMPILKAN JPG
  // =====================================================
  TJpgDec.drawFsJpg(x,
                    y,
                    filename.c_str());

  server.send(200,
              &quot;text/plain&quot;,
              &quot;Gambar tampil di TFT&quot;);
}

// =====================================================
// DELETE FILE
// =====================================================
void handleDelete()
{
  if (!server.hasArg(&quot;file&quot;))
  {
    server.send(400,
                &quot;text/plain&quot;,
                &quot;File tidak ditemukan&quot;);

    return;
  }

  String filename = server.arg(&quot;file&quot;);

  // =====================================================
  // PASTIKAN ADA &quot;/&quot;
  // =====================================================
  if (!filename.startsWith(&quot;/&quot;))
  {
    filename = &quot;/&quot; + filename;
  }

  Serial.println(&quot;Hapus file: &quot; + filename);

  // =====================================================
  // CEK FILE
  // =====================================================
  if (!SPIFFS.exists(filename))
  {
    Serial.println(&quot;File tidak ada&quot;);

    server.send(404,
                &quot;text/plain&quot;,
                &quot;File tidak ada&quot;);

    return;
  }

  // =====================================================
  // HAPUS FILE
  // =====================================================
  bool result = SPIFFS.remove(filename);

  if (result)
  {
    Serial.println(&quot;File berhasil dihapus&quot;);

    server.sendHeader(&quot;Location&quot;,
                      &quot;/list&quot;);

    server.send(303);
  }
  else
  {
    Serial.println(&quot;Gagal menghapus file&quot;);

    server.send(500,
                &quot;text/plain&quot;,
                &quot;Gagal menghapus file&quot;);
  }
}

// =====================================================
// SETUP
// =====================================================
void setup()
{
  Serial.begin(115200);

  // =====================================================
  // SPIFFS
  // =====================================================
  if (!SPIFFS.begin(true))
  {
    Serial.println(&quot;SPIFFS gagal mount&quot;);

    return;
  }

  // =====================================================
  // TFT
  // =====================================================
  tft.begin();

  tft.setRotation(1);

  tft.fillScreen(TFT_BLACK);

  // =====================================================
  // JPG DECODER
  // =====================================================
  TJpgDec.setSwapBytes(true);

  TJpgDec.setCallback(tft_jpg_render);

  // =====================================================
  // BOOT SCREEN
  // =====================================================
  showBootScreen();

  // =====================================================
  // START ACCESS POINT
  // =====================================================
  WiFi.softAP(ssid,
              password);

  Serial.println();
  Serial.println(&quot;Access Point Started&quot;);

  Serial.print(&quot;IP Address: &quot;);
  Serial.println(WiFi.softAPIP());

  // =====================================================
  // SHOW WIFI INFO TFT
  // =====================================================
  showWifiInfo();

  // =====================================================
  // HOME PAGE
  // =====================================================
  server.on(&quot;/&quot;,
            HTTP_GET,
            []()
            {
              server.send(200,
                          &quot;text/html&quot;,
                          uploadPage);
            });

  // =====================================================
  // UPLOAD
  // =====================================================
  server.on(&quot;/upload&quot;,
            HTTP_POST,

            []()
            {
              server.sendHeader(&quot;Location&quot;,
                                &quot;/list&quot;);

              server.send(303);
            },

            handleUpload);

  // =====================================================
  // LIST FILE
  // =====================================================
  server.on(&quot;/list&quot;,
            HTTP_GET,
            handleList);

  // =====================================================
  // SHOW IMAGE
  // =====================================================
  server.on(&quot;/show&quot;,
            HTTP_GET,
            handleShow);

  // =====================================================
  // DELETE FILE
  // =====================================================
  server.on(&quot;/delete&quot;,
            HTTP_GET,
            handleDelete);

  // =====================================================
  // START SERVER
  // =====================================================
  server.begin();

  Serial.println(&quot;Web Server Aktif&quot;);
}

// =====================================================
// LOOP
// =====================================================
void loop()
{
  server.handleClient();
}&lt;/tjpg_decoder&gt;&lt;/tft_espi&gt;&lt;/spiffs&gt;&lt;/webserver&gt;&lt;/wifi&gt;&lt;/pre&gt;
&lt;h1 data-end=&quot;3299&quot; data-section-id=&quot;1k8jasd&quot; data-start=&quot;3268&quot;&gt;🧪 Cara Pakai (Real Use Case)&lt;/h1&gt;
&lt;ol data-end=&quot;3494&quot; data-start=&quot;3301&quot;&gt;&lt;li data-end=&quot;3320&quot; data-section-id=&quot;1qywl2a&quot; data-start=&quot;3301&quot;&gt;
Nyalakan ESP32
&lt;/li&gt;&lt;li data-end=&quot;3352&quot; data-section-id=&quot;ecfgt5&quot; data-start=&quot;3321&quot;&gt;
Lihat IP di Serial Monitor&amp;nbsp;&lt;/li&gt;&lt;li data-end=&quot;3352&quot; data-section-id=&quot;ecfgt5&quot; data-start=&quot;3321&quot;&gt;koneksikan wifi dengan pc/komputer&amp;nbsp;&lt;/li&gt;&lt;li data-end=&quot;3412&quot; data-section-id=&quot;1v5myil&quot; data-start=&quot;3353&quot;&gt;
&lt;p data-end=&quot;3372&quot; data-start=&quot;3356&quot;&gt;Buka di browser:&lt;/p&gt;
&lt;pre class=&quot;overflow-visible! px-0!&quot; data-end=&quot;3412&quot; data-start=&quot;3376&quot;&gt;&lt;div class=&quot;relative w-full mt-4 mb-1&quot;&gt;&lt;div&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;h-full min-h-0 min-w-0&quot;&gt;&lt;div class=&quot;h-full min-h-0 min-w-0&quot;&gt;&lt;div class=&quot;border border-token-border-light border-radius-3xl corner-superellipse/1.1 rounded-3xl&quot;&gt;&lt;div class=&quot;h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback&quot;&gt;&lt;div class=&quot;pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1&quot;&gt;&lt;/div&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;pe-11 pt-3&quot;&gt;&lt;div class=&quot;relative z-0 flex max-w-full&quot;&gt;&lt;div class=&quot;q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch ͼd ͼr&quot; dir=&quot;ltr&quot; id=&quot;code-block-viewer&quot;&gt;&lt;div class=&quot;cm-scroller&quot;&gt;&lt;pre class=&quot;cm-content q9tKkq_readonly m-0&quot;&gt;&lt;code&gt;&lt;span&gt;http://192.168.xxx.xxx&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;/li&gt;&lt;li data-end=&quot;3431&quot; data-section-id=&quot;128knom&quot; data-start=&quot;3413&quot;&gt;
Upload gambar
&lt;/li&gt;&lt;li data-end=&quot;3454&quot; data-section-id=&quot;lzfxr8&quot; data-start=&quot;3432&quot;&gt;
Klik “Lihat File”
&lt;/li&gt;&lt;li data-end=&quot;3494&quot; data-section-id=&quot;c0kl29&quot; data-start=&quot;3455&quot;&gt;
Klik tampilkan → langsung tampil di TFT&amp;nbsp;&lt;/li&gt;&lt;/ol&gt;&lt;h1 data-end=&quot;3526&quot; data-section-id=&quot;106ptl5&quot; data-start=&quot;3501&quot;&gt;🔥 Kelebihan Metode Ini&lt;/h1&gt;
&lt;ul data-end=&quot;3684&quot; data-start=&quot;3528&quot;&gt;&lt;li data-end=&quot;3565&quot; data-section-id=&quot;138pyp2&quot; data-start=&quot;3528&quot;&gt;
Tidak perlu upload ulang firmware
&lt;/li&gt;&lt;li data-end=&quot;3599&quot; data-section-id=&quot;1cf65ab&quot; data-start=&quot;3566&quot;&gt;
Bisa update UI dari HP/laptop
&lt;/li&gt;&lt;li data-end=&quot;3684&quot; data-section-id=&quot;1esrp1i&quot; data-start=&quot;3600&quot;&gt;
Cocok untuk:
&lt;ul data-end=&quot;3684&quot; data-start=&quot;3617&quot;&gt;&lt;li data-end=&quot;3668&quot; data-section-id=&quot;23hnnl&quot; data-start=&quot;3652&quot;&gt;
display menu
&lt;/li&gt;&lt;li data-end=&quot;3684&quot; data-section-id=&quot;ay1tl8&quot; data-start=&quot;3671&quot;&gt;
dashboard&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h1 data-end=&quot;3708&quot; data-section-id=&quot;1iareg&quot; data-start=&quot;3691&quot;&gt;⚠️ Tips Penting&lt;/h1&gt;
&lt;ul data-end=&quot;3806&quot; data-start=&quot;3710&quot;&gt;&lt;li data-end=&quot;3745&quot; data-section-id=&quot;16lm9g&quot; data-start=&quot;3710&quot;&gt;
Batasi ukuran file (ideal &amp;lt;100KB)
&lt;/li&gt;&lt;li data-end=&quot;3770&quot; data-section-id=&quot;1jgtnoq&quot; data-start=&quot;3746&quot;&gt;
Gunakan JPG, bukan PNG
&lt;/li&gt;&lt;li data-end=&quot;3806&quot; data-section-id=&quot;1j3q0yt&quot; data-start=&quot;3771&quot;&gt;
Nama file tanpa spasi (biar aman)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Baca juga : &lt;a href=&quot;https://www.carapaklek.com/2025/09/download-file-premium-bayar-download.html&quot;&gt;Download Sket Arduino IDE untuk Kalibrasi Layar Touchscreen TFT 4 Inch ILI9488&amp;nbsp;&lt;/a&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.carapaklek.com/feeds/2579952516181612397/comments/default' title='Posting Komentar'/><link rel='replies' type='text/html' href='https://www.carapaklek.com/2026/05/apa-itu-spiffs-di-esp32-penjelasan.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/2093917475945207513/posts/default/2579952516181612397'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/2093917475945207513/posts/default/2579952516181612397'/><link rel='alternate' type='text/html' href='https://www.carapaklek.com/2026/05/apa-itu-spiffs-di-esp32-penjelasan.html' title='Apa Itu SPIFFS di ESP32? (Penjelasan Lengkap + Studi Kasus TFT 4 Inch)'/><author><name>carapaklek.com</name><uri>http://www.blogger.com/profile/12438575085929354819</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj84wNpqEWz7nUZmjNjPBarFLyRAZARNpnydt-LYU_GZhXNGZFUplzpWB82bcX7camGkjKhQ-KGgMvx5RMUkIl4gkJvWLq8dlBfnRdA_lNZPKfK8QjiWqasrUvzS15za_c0-zdUM_aAJ39EGM5XGzVoH0xzAg-7mAIwM90m4_AE9y7kgQ/s220/webcamp.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnKgEnzKI40huk3PM9SbvjYj9gYJnTdTYGtAY3VP6cPk-I32qP6a-uFP5keXP5kMvTVZv8tvaplPmcbrz7Ryym6PXcBRHGHhGanKINu_vAF0h5qCdi5FuFqiTrLpJS_60BKYQJrTlOTGIpnHX8U4Bn8TQdSbiGqKLWe9vN1k1Z5hRNXMTzRokYrjBVG5jV/s72-w640-h480-c/ChatGPT%20Image%208%20Mei%202026,%2017.15.26.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2093917475945207513.post-207813973434728279</id><published>2026-05-04T14:51:00.002+07:00</published><updated>2026-05-04T14:51:38.636+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Laundry QR"/><category scheme="http://www.blogger.com/atom/ns#" term="Laundry QRIS"/><category scheme="http://www.blogger.com/atom/ns#" term="modul laundry koin"/><category scheme="http://www.blogger.com/atom/ns#" term="Teknologi"/><title type='text'>Cara Kerja Laundry QRIS: Scan, Bayar, Mesin Jalan Otomatis (Video Demo)</title><content type='html'>&lt;p&gt;&lt;/p&gt;&lt;h2 data-end=&quot;964&quot; data-section-id=&quot;e7rc8g&quot; data-start=&quot;914&quot;&gt;🔰 Cara Kerja Laundry QRIS (Penjelasan Lengkap)&lt;/h2&gt;
&lt;p data-end=&quot;1152&quot; data-start=&quot;966&quot;&gt;Sistem laundry sekarang sudah mulai beralih dari koin ke sistem digital seperti QRIS.&lt;br data-end=&quot;1054&quot; data-start=&quot;1051&quot; /&gt;
Dengan sistem ini, pelanggan cukup melakukan pembayaran menggunakan QR code tanpa perlu uang koin.&lt;/p&gt;&lt;p data-end=&quot;1205&quot; data-start=&quot;1154&quot;&gt;Lalu, bagaimana sebenarnya cara kerja laundry QRIS?&amp;nbsp;&lt;/p&gt;&lt;h2 data-end=&quot;1248&quot; data-section-id=&quot;14phzj1&quot; data-start=&quot;1212&quot;&gt;⚙️ Proses Cara Kerja Laundry QRIS&lt;/h2&gt;
&lt;p data-end=&quot;1288&quot; data-start=&quot;1250&quot;&gt;Secara sederhana, alurnya seperti ini:&lt;/p&gt;
&lt;ol data-end=&quot;1517&quot; data-start=&quot;1290&quot;&gt;&lt;li data-end=&quot;1326&quot; data-section-id=&quot;1k39dzb&quot; data-start=&quot;1290&quot;&gt;
Pelanggan memilih mesin laundry
&lt;/li&gt;&lt;li data-end=&quot;1360&quot; data-section-id=&quot;bv4963&quot; data-start=&quot;1327&quot;&gt;
Sistem menampilkan kode QRIS
&lt;/li&gt;&lt;li data-end=&quot;1428&quot; data-section-id=&quot;1a6fti7&quot; data-start=&quot;1361&quot;&gt;
Pelanggan melakukan scan menggunakan e-wallet / mobile banking
&lt;/li&gt;&lt;li data-end=&quot;1466&quot; data-section-id=&quot;9uhszf&quot; data-start=&quot;1429&quot;&gt;
Pembayaran dikonfirmasi otomatis
&lt;/li&gt;&lt;li data-end=&quot;1517&quot; data-section-id=&quot;34vgbx&quot; data-start=&quot;1467&quot;&gt;
Mesin laundry langsung berjalan sesuai durasi
&lt;/li&gt;&lt;/ol&gt;&lt;p data-end=&quot;1571&quot; data-start=&quot;1519&quot;&gt;👉 Semua proses ini berlangsung dalam hitungan detik&amp;nbsp;&lt;/p&gt;&lt;h2 data-end=&quot;1607&quot; data-section-id=&quot;1127n92&quot; data-start=&quot;1578&quot;&gt;📲 Contoh Penggunaan Nyata&lt;/h2&gt;
&lt;p data-end=&quot;1689&quot; data-start=&quot;1609&quot;&gt;Pada sistem Smart Laundry System, QRIS sudah terintegrasi langsung dengan mesin.&lt;/p&gt;&lt;p data-end=&quot;1781&quot; data-start=&quot;1691&quot;&gt;Jadi setelah pembayaran berhasil:&lt;br /&gt;
👉 mesin akan aktif otomatis tanpa perlu tombol tambahan&amp;nbsp;&lt;/p&gt;&lt;h2 data-end=&quot;1813&quot; data-section-id=&quot;9biu7g&quot; data-start=&quot;1788&quot;&gt;🎥 Lihat Demo Langsung&lt;/h2&gt;
&lt;p data-end=&quot;1910&quot; data-start=&quot;1815&quot;&gt;Untuk melihat bagaimana proses scan QRIS sampai mesin berjalan, kamu bisa tonton video berikut:&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;iframe allowfullscreen=&quot;&quot; class=&quot;BLOG_video_class&quot; height=&quot;318&quot; src=&quot;https://www.youtube.com/embed/FATrve8S4bc&quot; width=&quot;482&quot; youtube-src-id=&quot;FATrve8S4bc&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;br /&gt;&lt;p data-end=&quot;1961&quot; data-start=&quot;1912&quot; style=&quot;text-align: center;&quot;&gt;Sumber : channel yutube carapaklek dot com&lt;/p&gt;&lt;h2 data-end=&quot;1996&quot; data-section-id=&quot;c0mfhu&quot; data-start=&quot;1968&quot;&gt;💡 Kelebihan Laundry QRIS&lt;/h2&gt;
&lt;ul data-end=&quot;2122&quot; data-start=&quot;1998&quot;&gt;&lt;li data-end=&quot;2023&quot; data-section-id=&quot;923iu3&quot; data-start=&quot;1998&quot;&gt;
Tidak perlu uang koin
&lt;/li&gt;&lt;li data-end=&quot;2049&quot; data-section-id=&quot;1kskti9&quot; data-start=&quot;2024&quot;&gt;
Lebih praktis &amp;amp; cepat
&lt;/li&gt;&lt;li data-end=&quot;2091&quot; data-section-id=&quot;1hvlehu&quot; data-start=&quot;2050&quot;&gt;
Pembayaran fleksibel (semua e-wallet)
&lt;/li&gt;&lt;li data-end=&quot;2122&quot; data-section-id=&quot;pbaqrn&quot; data-start=&quot;2092&quot;&gt;
Lebih modern &amp;amp; profesional&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;h2 data-end=&quot;2163&quot; data-section-id=&quot;187xf75&quot; data-start=&quot;2129&quot;&gt;⚠️ Perbedaan dengan Sistem Koin&lt;/h2&gt;
&lt;p data-end=&quot;2182&quot; data-start=&quot;2165&quot;&gt;Pada sistem koin:&lt;/p&gt;
&lt;ul data-end=&quot;2239&quot; data-start=&quot;2183&quot;&gt;&lt;li data-end=&quot;2209&quot; data-section-id=&quot;nc92zo&quot; data-start=&quot;2183&quot;&gt;
harus pakai uang fisik
&lt;/li&gt;&lt;li data-end=&quot;2239&quot; data-section-id=&quot;186zv90&quot; data-start=&quot;2210&quot;&gt;
sering terjadi koin macet
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;2256&quot; data-start=&quot;2241&quot;&gt;Sedangkan QRIS:&lt;/p&gt;
&lt;ul data-end=&quot;2304&quot; data-start=&quot;2257&quot;&gt;&lt;li data-end=&quot;2280&quot; data-section-id=&quot;3ys716&quot; data-start=&quot;2257&quot;&gt;
semua serba digital
&lt;/li&gt;&lt;li data-end=&quot;2304&quot; data-section-id=&quot;1t379iv&quot; data-start=&quot;2281&quot;&gt;
lebih minim masalah&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;h2 data-end=&quot;2335&quot; data-section-id=&quot;ijjtyx&quot; data-start=&quot;2311&quot;&gt;🎯 Cocok Untuk Siapa?&lt;/h2&gt;
&lt;ul data-end=&quot;2433&quot; data-start=&quot;2337&quot;&gt;&lt;li data-end=&quot;2362&quot; data-section-id=&quot;3oq6m8&quot; data-start=&quot;2337&quot;&gt;
Pemilik usaha laundryself service&lt;/li&gt;&lt;li data-end=&quot;2395&quot; data-section-id=&quot;12nv00j&quot; data-start=&quot;2363&quot;&gt;
Yang ingin upgrade dari koin
&lt;/li&gt;&lt;li data-end=&quot;2433&quot; data-section-id=&quot;124qlq8&quot; data-start=&quot;2396&quot;&gt;
Yang ingin membuka laundry modern&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;h2 data-end=&quot;2456&quot; data-section-id=&quot;q30f42&quot; data-start=&quot;2440&quot;&gt;🔥 Kesimpulan&lt;/h2&gt;
&lt;p data-end=&quot;2574&quot; data-start=&quot;2458&quot;&gt;Cara kerja laundry QRIS sangat sederhana dan efisien.&lt;br data-end=&quot;2514&quot; data-start=&quot;2511&quot; /&gt;
Dengan hanya scan QR, mesin bisa langsung berjalan otomatis.&lt;/p&gt;
&lt;p data-end=&quot;2679&quot; data-start=&quot;2576&quot;&gt;Sistem ini menjadi solusi terbaik untuk membuat usaha laundry lebih modern, praktis, dan minim masalah.&lt;/p&gt;&lt;p data-end=&quot;2679&quot; data-start=&quot;2576&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p data-end=&quot;2679&quot; data-start=&quot;2576&quot;&gt;Baca juga : &lt;a href=&quot;https://www.carapaklek.com/2025/12/cara-membuat-laundry-mandiri-otomatis.html&quot;&gt;Cara Membuat Laundry Mandiri Otomatis untuk Kos/Kontrakan – Tanpa Dijaga 24 Jam&amp;nbsp;&lt;/a&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.carapaklek.com/feeds/207813973434728279/comments/default' title='Posting Komentar'/><link rel='replies' type='text/html' href='https://www.carapaklek.com/2026/05/cara-kerja-laundry-qris-scan-bayar.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/2093917475945207513/posts/default/207813973434728279'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/2093917475945207513/posts/default/207813973434728279'/><link rel='alternate' type='text/html' href='https://www.carapaklek.com/2026/05/cara-kerja-laundry-qris-scan-bayar.html' title='Cara Kerja Laundry QRIS: Scan, Bayar, Mesin Jalan Otomatis (Video Demo)'/><author><name>carapaklek.com</name><uri>http://www.blogger.com/profile/12438575085929354819</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj84wNpqEWz7nUZmjNjPBarFLyRAZARNpnydt-LYU_GZhXNGZFUplzpWB82bcX7camGkjKhQ-KGgMvx5RMUkIl4gkJvWLq8dlBfnRdA_lNZPKfK8QjiWqasrUvzS15za_c0-zdUM_aAJ39EGM5XGzVoH0xzAg-7mAIwM90m4_AE9y7kgQ/s220/webcamp.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/FATrve8S4bc/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2093917475945207513.post-317477741366438811</id><published>2026-05-03T17:53:00.001+07:00</published><updated>2026-05-03T17:53:09.547+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Laundry QR"/><category scheme="http://www.blogger.com/atom/ns#" term="Laundry QRIS"/><category scheme="http://www.blogger.com/atom/ns#" term="Teknologi"/><title type='text'>Laundry Tanpa Koin: Mesin QRIS &amp; RFID (Demo Lengkap)</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjafE7i0MWzPRiCsO4c24BNbfTC_cJwSqX1OEPcoTRFYIIDygizKH3jBxb45b8bWFhV1i4VHxAZIAYM7RlRNrSpsNVSdt_lzKAiZeZ4K_I1CSW1rN-yw-4_DegXkChh2HPr-x0srs9i9A7uE_m_OaT7BSqDzCOotSV_9ZfEWcEHVsZdamX7dmn-iyNkvSgs&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;2160&quot; data-original-width=&quot;3840&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjafE7i0MWzPRiCsO4c24BNbfTC_cJwSqX1OEPcoTRFYIIDygizKH3jBxb45b8bWFhV1i4VHxAZIAYM7RlRNrSpsNVSdt_lzKAiZeZ4K_I1CSW1rN-yw-4_DegXkChh2HPr-x0srs9i9A7uE_m_OaT7BSqDzCOotSV_9ZfEWcEHVsZdamX7dmn-iyNkvSgs=w640-h360&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;h2 data-end=&quot;686&quot; data-section-id=&quot;a972o2&quot; data-start=&quot;671&quot;&gt;&lt;/h2&gt;
&lt;p data-end=&quot;863&quot; data-start=&quot;688&quot;&gt;Di era digital seperti sekarang, sistem laundry juga mulai beralih dari yang sebelumnya menggunakan koin menjadi sistem pembayaran modern seperti &lt;strong data-end=&quot;862&quot; data-start=&quot;834&quot;&gt;QRIS dan RFID (tap card)&lt;/strong&gt;.&lt;/p&gt;&lt;p data-end=&quot;1013&quot; data-start=&quot;865&quot;&gt;Dengan sistem ini, pelanggan tidak perlu lagi membawa uang koin.&lt;br data-end=&quot;932&quot; data-start=&quot;929&quot; /&gt;
Cukup &lt;strong data-end=&quot;966&quot; data-start=&quot;938&quot;&gt;scan QRIS atau tap kartu&lt;/strong&gt;, dan mesin laundry langsung berjalan otomatis.&amp;nbsp;&lt;/p&gt;&lt;h2 data-end=&quot;1060&quot; data-section-id=&quot;12fdguv&quot; data-start=&quot;1020&quot;&gt;⚙️ Apa Itu Mesin Laundry QRIS &amp;amp; RFID?&lt;/h2&gt;
&lt;p data-end=&quot;1173&quot; data-start=&quot;1062&quot;&gt;Mesin laundry QRIS &amp;amp; RFID adalah alat kontrol yang memungkinkan pembayaran dilakukan secara digital tanpa koin.&lt;/p&gt;&lt;p data-end=&quot;1345&quot; data-start=&quot;1175&quot;&gt;Sistem ini biasanya digunakan pada laundry self service, di mana pelanggan dapat memilih mesin, melakukan pembayaran, lalu mesin akan aktif sesuai durasi yang ditentukan.&amp;nbsp;&lt;/p&gt;&lt;h2 data-end=&quot;1375&quot; data-section-id=&quot;iksei3&quot; data-start=&quot;1352&quot;&gt;🚀 Cara Kerja Sistem&lt;/h2&gt;
&lt;p data-end=&quot;1421&quot; data-start=&quot;1377&quot;&gt;Secara sederhana, cara kerjanya seperti ini:&lt;/p&gt;
&lt;ol data-end=&quot;1540&quot; data-start=&quot;1423&quot;&gt;&lt;li data-end=&quot;1447&quot; data-section-id=&quot;1n54zfv&quot; data-start=&quot;1423&quot;&gt;
Pilih mesin laundry
&lt;/li&gt;&lt;li data-end=&quot;1476&quot; data-section-id=&quot;6dpu4h&quot; data-start=&quot;1448&quot;&gt;
Pilih metode pembayaran
&lt;/li&gt;&lt;li data-end=&quot;1511&quot; data-section-id=&quot;cp4kmy&quot; data-start=&quot;1477&quot;&gt;
Scan QRIS atau tap kartu RFID
&lt;/li&gt;&lt;li data-end=&quot;1540&quot; data-section-id=&quot;1jz4rlh&quot; data-start=&quot;1512&quot;&gt;
Mesin langsung berjalan
&lt;/li&gt;&lt;/ol&gt;&lt;p data-end=&quot;1635&quot; data-start=&quot;1542&quot;&gt;Sistem ini sangat praktis dan mengurangi banyak masalah yang sering terjadi pada sistem koin.&amp;nbsp;&lt;/p&gt;&lt;p data-end=&quot;252&quot; data-start=&quot;202&quot;&gt;&lt;strong data-end=&quot;244&quot; data-start=&quot;202&quot;&gt;Smart Laundry System dari Paklek Store&lt;/strong&gt; adalah:&lt;/p&gt;
&lt;p data-end=&quot;342&quot; data-start=&quot;254&quot;&gt;👉 &lt;strong data-end=&quot;318&quot; data-start=&quot;257&quot;&gt;alat kontrol mesin laundry berbasis digital (QRIS &amp;amp; RFID)&lt;/strong&gt;&lt;br data-end=&quot;321&quot; data-start=&quot;318&quot; /&gt;
yang berfungsi untuk:&lt;/p&gt;
&lt;ul data-end=&quot;428&quot; data-start=&quot;343&quot;&gt;&lt;li data-end=&quot;364&quot; data-section-id=&quot;190oqf6&quot; data-start=&quot;343&quot;&gt;
menerima pembayaran
&lt;/li&gt;&lt;li data-end=&quot;394&quot; data-section-id=&quot;j9mhlm&quot; data-start=&quot;365&quot;&gt;
mengontrol mesin cuci/dryer
&lt;/li&gt;&lt;li data-end=&quot;428&quot; data-section-id=&quot;12t8qka&quot; data-start=&quot;395&quot;&gt;
dan mencatat transaksi otomatis&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;h1 data-end=&quot;1576&quot; data-section-id=&quot;1852e3n&quot; data-start=&quot;1534&quot;&gt;🔢 Kapasitas Smart Laundry System Paklek&lt;/h1&gt;
&lt;p data-end=&quot;1604&quot; data-start=&quot;1578&quot;&gt;Ini yang paling penting 👇&lt;/p&gt;
&lt;h2 data-end=&quot;1628&quot; data-section-id=&quot;2pdacz&quot; data-start=&quot;1606&quot;&gt;🧩 Kapasitas Mesin:&lt;/h2&gt;
&lt;p data-end=&quot;1663&quot; data-start=&quot;1629&quot;&gt;👉 &lt;strong data-end=&quot;1663&quot; data-start=&quot;1632&quot;&gt;1 – 16 Mesin (dalam 1 alat)&lt;/strong&gt;&lt;/p&gt;
&lt;p data-end=&quot;1680&quot; data-start=&quot;1665&quot;&gt;Pembagian umum:&lt;/p&gt;
&lt;ul data-end=&quot;1724&quot; data-start=&quot;1681&quot;&gt;&lt;li data-end=&quot;1701&quot; data-section-id=&quot;7ssa8f&quot; data-start=&quot;1681&quot;&gt;
1–8 = mesin cuci
&lt;/li&gt;&lt;li data-end=&quot;1724&quot; data-section-id=&quot;16qo5vg&quot; data-start=&quot;1702&quot;&gt;
9–16 = mesin dryer&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;h2 data-end=&quot;1755&quot; data-section-id=&quot;e3f9t6&quot; data-start=&quot;1731&quot;&gt;🔌 Kapasitas Channel:&lt;/h2&gt;
&lt;p data-end=&quot;1779&quot; data-start=&quot;1756&quot;&gt;👉 &lt;strong data-end=&quot;1779&quot; data-start=&quot;1759&quot;&gt;16 Channel Relay&lt;/strong&gt;&lt;/p&gt;
&lt;p data-end=&quot;1789&quot; data-start=&quot;1781&quot;&gt;Artinya:&lt;/p&gt;
&lt;ul data-end=&quot;1890&quot; data-start=&quot;1790&quot;&gt;&lt;li data-end=&quot;1811&quot; data-section-id=&quot;479zxm&quot; data-start=&quot;1790&quot;&gt;
1 channel = 1 mesin
&lt;/li&gt;&lt;li data-end=&quot;1890&quot; data-section-id=&quot;1x8sclu&quot; data-start=&quot;1812&quot;&gt;
bisa kontrol:
&lt;ul data-end=&quot;1890&quot; data-start=&quot;1830&quot;&gt;&lt;li data-end=&quot;1861&quot; data-section-id=&quot;1nwan4&quot; data-start=&quot;1830&quot;&gt;
16 mesin sekaligus&lt;br data-end=&quot;1853&quot; data-start=&quot;1850&quot; /&gt;
ATAU
&lt;/li&gt;&lt;li data-end=&quot;1890&quot; data-section-id=&quot;1ipxaxi&quot; data-start=&quot;1864&quot;&gt;
kombinasi washer + dryer&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2 data-end=&quot;1680&quot; data-section-id=&quot;123hyug&quot; data-start=&quot;1642&quot;&gt;💡 Keunggulan Dibanding Sistem Koin&lt;/h2&gt;
&lt;ul data-end=&quot;1801&quot; data-start=&quot;1682&quot;&gt;&lt;li data-end=&quot;1706&quot; data-section-id=&quot;1fsp25e&quot; data-start=&quot;1682&quot;&gt;
Tidak ada koin macet
&lt;/li&gt;&lt;li data-end=&quot;1739&quot; data-section-id=&quot;13ikwj2&quot; data-start=&quot;1707&quot;&gt;
Lebih modern dan profesional
&lt;/li&gt;&lt;li data-end=&quot;1770&quot; data-section-id=&quot;m37t9l&quot; data-start=&quot;1740&quot;&gt;
Pembayaran lebih fleksibel
&lt;/li&gt;&lt;li data-end=&quot;1801&quot; data-section-id=&quot;1dpce7p&quot; data-start=&quot;1771&quot;&gt;
Bisa dicatat dan dimonitor&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;h2 data-end=&quot;1847&quot; data-section-id=&quot;9oau4&quot; data-start=&quot;1808&quot;&gt;🎥 Demo Lengkap&amp;nbsp;&lt;/h2&gt;
&lt;p data-end=&quot;1901&quot; data-start=&quot;1849&quot;&gt;👉 Tonton langsung demo penggunaan di video berikut:&lt;/p&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;iframe allowfullscreen=&quot;&quot; class=&quot;BLOG_video_class&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/FATrve8S4bc&quot; width=&quot;474&quot; youtube-src-id=&quot;FATrve8S4bc&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;p data-end=&quot;1952&quot; data-start=&quot;1903&quot; style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2 data-end=&quot;2037&quot; data-section-id=&quot;ijjtyx&quot; data-start=&quot;2013&quot;&gt;🎯 Cocok Untuk Siapa?&lt;/h2&gt;
&lt;ul data-end=&quot;2187&quot; data-start=&quot;2039&quot;&gt;&lt;li data-end=&quot;2064&quot; data-section-id=&quot;3oq6m8&quot; data-start=&quot;2039&quot;&gt;
Pemilik usaha laundry
&lt;/li&gt;&lt;li data-end=&quot;2104&quot; data-section-id=&quot;z6urfq&quot; data-start=&quot;2065&quot;&gt;
Yang ingin upgrade dari sistem koin
&lt;/li&gt;&lt;li data-end=&quot;2142&quot; data-section-id=&quot;124qlq8&quot; data-start=&quot;2105&quot;&gt;
Yang ingin membuka laundry modern
&lt;/li&gt;&lt;li data-end=&quot;2187&quot; data-section-id=&quot;183w0zp&quot; data-start=&quot;2143&quot;&gt;
Kos / apartemen dengan fasilitas laundry&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;h2 data-end=&quot;2210&quot; data-section-id=&quot;q30f42&quot; data-start=&quot;2194&quot;&gt;🔥 Kesimpulan&lt;/h2&gt;
&lt;p data-end=&quot;2348&quot; data-start=&quot;2212&quot;&gt;Menggunakan sistem QRIS &amp;amp; RFID pada laundry bukan hanya soal teknologi, tapi juga meningkatkan kenyamanan pelanggan dan efisiensi usaha.&lt;/p&gt;&lt;p data-end=&quot;2453&quot; data-start=&quot;2350&quot;&gt;Jika kamu ingin membuat usaha laundry lebih modern dan praktis, sistem ini bisa menjadi solusi terbaik.&amp;nbsp;&lt;/p&gt;&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.carapaklek.com/feeds/317477741366438811/comments/default' title='Posting Komentar'/><link rel='replies' type='text/html' href='https://www.carapaklek.com/2026/05/laundry-tanpa-koin-mesin-qris-rfid-demo.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/2093917475945207513/posts/default/317477741366438811'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/2093917475945207513/posts/default/317477741366438811'/><link rel='alternate' type='text/html' href='https://www.carapaklek.com/2026/05/laundry-tanpa-koin-mesin-qris-rfid-demo.html' title='Laundry Tanpa Koin: Mesin QRIS &amp; RFID (Demo Lengkap)'/><author><name>carapaklek.com</name><uri>http://www.blogger.com/profile/12438575085929354819</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj84wNpqEWz7nUZmjNjPBarFLyRAZARNpnydt-LYU_GZhXNGZFUplzpWB82bcX7camGkjKhQ-KGgMvx5RMUkIl4gkJvWLq8dlBfnRdA_lNZPKfK8QjiWqasrUvzS15za_c0-zdUM_aAJ39EGM5XGzVoH0xzAg-7mAIwM90m4_AE9y7kgQ/s220/webcamp.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEjafE7i0MWzPRiCsO4c24BNbfTC_cJwSqX1OEPcoTRFYIIDygizKH3jBxb45b8bWFhV1i4VHxAZIAYM7RlRNrSpsNVSdt_lzKAiZeZ4K_I1CSW1rN-yw-4_DegXkChh2HPr-x0srs9i9A7uE_m_OaT7BSqDzCOotSV_9ZfEWcEHVsZdamX7dmn-iyNkvSgs=s72-w640-h360-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2093917475945207513.post-5676821805693812135</id><published>2026-04-15T15:06:00.002+07:00</published><updated>2026-07-30T12:40:57.905+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Arduino"/><category scheme="http://www.blogger.com/atom/ns#" term="esspressif"/><category scheme="http://www.blogger.com/atom/ns#" term="Handphone"/><category scheme="http://www.blogger.com/atom/ns#" term="Teknologi"/><title type='text'>How to Create a WiFi Hotspot with ESP32 using Espressif IDE (ESP-IDF Guide)</title><content type='html'>&lt;h2 data-end=&quot;247&quot; data-section-id=&quot;17mk0oo&quot; data-start=&quot;229&quot;&gt;&lt;span style=&quot;font-family: Ubuntu;&quot;&gt;🚀 Introduction&lt;/span&gt;&lt;/h2&gt;
&lt;p data-end=&quot;358&quot; data-start=&quot;249&quot;&gt;&lt;span style=&quot;font-family: Ubuntu;&quot;&gt;The ESP32 DevKitC V4 is not only capable of connecting to WiFi — it can also &lt;b data-end=&quot;357&quot; data-start=&quot;326&quot;&gt;create its own WiFi network&lt;/b&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;451&quot; data-start=&quot;360&quot;&gt;&lt;span style=&quot;font-family: Ubuntu;&quot;&gt;This feature is called &lt;b data-end=&quot;409&quot; data-start=&quot;383&quot;&gt;Access Point (AP) mode&lt;/b&gt;, where the ESP32 acts like a mini router.&lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;493&quot; data-start=&quot;453&quot;&gt;&lt;span style=&quot;font-family: Ubuntu;&quot;&gt;In this tutorial, you will learn how to:&lt;/span&gt;&lt;/p&gt;
&lt;ul data-end=&quot;607&quot; data-start=&quot;494&quot;&gt;&lt;li data-end=&quot;531&quot; data-section-id=&quot;2wk11y&quot; data-start=&quot;494&quot;&gt;&lt;span style=&quot;font-family: Ubuntu;&quot;&gt;
Create a WiFi hotspot using ESP32
&lt;/span&gt;&lt;/li&gt;&lt;li data-end=&quot;566&quot; data-section-id=&quot;11wuu38&quot; data-start=&quot;532&quot;&gt;&lt;span style=&quot;font-family: Ubuntu;&quot;&gt;
Set your own SSID and password
&lt;/span&gt;&lt;/li&gt;&lt;li data-end=&quot;607&quot; data-section-id=&quot;1kkzmqn&quot; data-start=&quot;567&quot;&gt;&lt;span style=&quot;font-family: Ubuntu;&quot;&gt;
Connect your phone directly to ESP32
&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;737&quot; data-start=&quot;609&quot;&gt;&lt;span style=&quot;font-family: Ubuntu;&quot;&gt;We will use &lt;span class=&quot;hover:entity-accent entity-underline inline cursor-pointer align-baseline&quot;&gt;&lt;span class=&quot;whitespace-normal&quot;&gt;Espressif IDE&lt;/span&gt;&lt;/span&gt; (based on &lt;span class=&quot;hover:entity-accent entity-underline inline cursor-pointer align-baseline&quot;&gt;&lt;span class=&quot;whitespace-normal&quot;&gt;ESP-IDF&lt;/span&gt;&lt;/span&gt;), making it beginner-friendly.&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;737&quot; data-start=&quot;609&quot;&gt;&lt;span style=&quot;font-family: Ubuntu;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;span style=&quot;font-family: Ubuntu;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdk0Lk4MUYeplRn_lpNv4lgXDpyb3wlbC7RWPYnB5L8QAtyMvtqJvXXpchcRwsH-Jab-PhkNJao5HFBI1CTM-DrG1IvpUX2H9LigfpuzbZyLUly5MpuT0kniEUH-_432glQO-iDYIragT6YXhNygqp8VbJ0cx-Lo7-DZe3zbr26pACz-WhsvgIRCcLxn_C/s1280/esp32d.jpg&quot; style=&quot;font-family: Ubuntu; margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;720&quot; data-original-width=&quot;1280&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdk0Lk4MUYeplRn_lpNv4lgXDpyb3wlbC7RWPYnB5L8QAtyMvtqJvXXpchcRwsH-Jab-PhkNJao5HFBI1CTM-DrG1IvpUX2H9LigfpuzbZyLUly5MpuT0kniEUH-_432glQO-iDYIragT6YXhNygqp8VbJ0cx-Lo7-DZe3zbr26pACz-WhsvgIRCcLxn_C/w640-h360/esp32d.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;h2 data-end=&quot;785&quot; data-section-id=&quot;17afvvk&quot; data-start=&quot;744&quot;&gt;&lt;span style=&quot;font-family: Ubuntu;&quot;&gt;Step 1: Create WiFi Hotspot Program&lt;/span&gt;&lt;/h2&gt;
&lt;p data-end=&quot;849&quot; data-start=&quot;787&quot;&gt;&lt;span style=&quot;font-family: Ubuntu;&quot;&gt;First, we write the code to make ESP32 broadcast its own WiFi.&lt;/span&gt;&lt;/p&gt;&lt;pre style=&quot;background-color: #2d2d2d; border-left: 5px solid rgb(0, 122, 204); border-radius: 8px; color: #f8f8f2; overflow-x: auto; padding: 15px;&quot;&gt;&lt;span style=&quot;font-family: Ubuntu;&quot;&gt;#include &quot;esp_wifi.h&quot;
#include &quot;esp_event.h&quot;
#include &quot;esp_netif.h&quot;
#include &quot;nvs_flash.h&quot;
#include &quot;esp_log.h&quot;

#define WIFI_SSID      &quot;ESP32_HOTSPOT&quot;
#define WIFI_PASS      &quot;12345678&quot;
#define MAX_STA_CONN   4

void wifi_init_softap(void)
{
    esp_netif_init();
    esp_event_loop_create_default();
    esp_netif_create_default_wifi_ap();

    wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
    esp_wifi_init(&amp;amp;cfg);

    wifi_config_t wifi_config = {
        .ap = {
            .ssid = WIFI_SSID,
            .ssid_len = strlen(WIFI_SSID),
            .channel = 1,
            .password = WIFI_PASS,
            .max_connection = MAX_STA_CONN,
            .authmode = WIFI_AUTH_WPA_WPA2_PSK
        },
    };

    if (strlen(WIFI_PASS) == 0)
    {
        wifi_config.ap.authmode = WIFI_AUTH_OPEN;
    }

    esp_wifi_set_mode(WIFI_MODE_AP);
    esp_wifi_set_config(WIFI_IF_AP, &amp;amp;wifi_config);
    esp_wifi_start();
}

void app_main(void)
{
    nvs_flash_init();
    wifi_init_softap();
}&lt;/span&gt;&lt;/pre&gt;&lt;p data-end=&quot;1886&quot; data-start=&quot;1868&quot;&gt;&lt;span style=&quot;font-family: Ubuntu;&quot;&gt;👉 This code will:&lt;/span&gt;&lt;/p&gt;
&lt;ul data-end=&quot;1996&quot; data-start=&quot;1887&quot;&gt;&lt;li data-end=&quot;1934&quot; data-section-id=&quot;1kteck2&quot; data-start=&quot;1887&quot;&gt;&lt;span style=&quot;font-family: Ubuntu;&quot;&gt;
Create a WiFi network named &lt;b data-end=&quot;1934&quot; data-start=&quot;1917&quot;&gt;ESP32_HOTSPOT&lt;/b&gt;&lt;/span&gt;
&lt;/li&gt;&lt;li data-end=&quot;1962&quot; data-section-id=&quot;quho3h&quot; data-start=&quot;1935&quot;&gt;&lt;span style=&quot;font-family: Ubuntu;&quot;&gt;
Set password &lt;b data-end=&quot;1962&quot; data-start=&quot;1950&quot;&gt;12345678&lt;/b&gt;&lt;/span&gt;
&lt;/li&gt;&lt;li data-end=&quot;1996&quot; data-section-id=&quot;1i88sr3&quot; data-start=&quot;1963&quot;&gt;&lt;span style=&quot;font-family: Ubuntu;&quot;&gt;
Allow up to 4 connected devices&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Ubuntu;&quot;&gt;🔌 Step 2: Build and Flash using Espressif IDE&amp;nbsp;&lt;/span&gt;&lt;/h2&gt;&lt;p data-end=&quot;2131&quot; data-start=&quot;2096&quot;&gt;&lt;span style=&quot;font-family: Ubuntu;&quot;&gt;Open your project in Espressif IDE or klik new project in ess[ressif IDE and than&lt;/span&gt;&lt;/p&gt;
&lt;ol data-end=&quot;2212&quot; data-start=&quot;2133&quot;&gt;&lt;li data-end=&quot;2159&quot; data-section-id=&quot;xalzg7&quot; data-start=&quot;2133&quot;&gt;&lt;span style=&quot;font-family: Ubuntu;&quot;&gt;
Click &lt;b data-end=&quot;2159&quot; data-start=&quot;2142&quot;&gt;Build Project&lt;/b&gt;&lt;/span&gt;
&lt;/li&gt;&lt;li data-end=&quot;2185&quot; data-section-id=&quot;1g4o82n&quot; data-start=&quot;2160&quot;&gt;&lt;span style=&quot;font-family: Ubuntu;&quot;&gt;
Click &lt;b data-end=&quot;2185&quot; data-start=&quot;2169&quot;&gt;Flash Device&lt;/b&gt;&lt;/span&gt;
&lt;/li&gt;&lt;li data-end=&quot;2212&quot; data-section-id=&quot;k12vs0&quot; data-start=&quot;2186&quot;&gt;&lt;span style=&quot;font-family: Ubuntu;&quot;&gt;
Open &lt;b data-end=&quot;2212&quot; data-start=&quot;2194&quot;&gt;Serial Monitor&lt;/b&gt;&lt;/span&gt;
&lt;/li&gt;&lt;/ol&gt;
&lt;p data-end=&quot;2248&quot; data-start=&quot;2214&quot;&gt;&lt;span style=&quot;font-family: Ubuntu;&quot;&gt;👉 Wait until flashing is complete&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjvLMBxTGi-7eQmzqw_YaOakus-RDyr7WNWx-nuviCbZwu1gTm0DwSz5VL2cpQceiqwpG41fwiO7YcwLQIYca6KskMc-Y3XKNBRCSFJeN8oET7vQU2DzxNt2-PBNZBAs3jJaoV98pQnrtvVTqDjnCbC3cXTQqHh95kj5d8lM24119O3LomBLb6vSN2rYhCa&quot; style=&quot;font-family: Ubuntu; margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;720&quot; data-original-width=&quot;1280&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjvLMBxTGi-7eQmzqw_YaOakus-RDyr7WNWx-nuviCbZwu1gTm0DwSz5VL2cpQceiqwpG41fwiO7YcwLQIYca6KskMc-Y3XKNBRCSFJeN8oET7vQU2DzxNt2-PBNZBAs3jJaoV98pQnrtvVTqDjnCbC3cXTQqHh95kj5d8lM24119O3LomBLb6vSN2rYhCa=w640-h360&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;font-family: Ubuntu;&quot;&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;p data-end=&quot;2248&quot; data-start=&quot;2214&quot;&gt;&lt;span style=&quot;font-family: Ubuntu;&quot;&gt;&amp;nbsp;dont forget to make name your proect&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;2248&quot; data-start=&quot;2214&quot;&gt;&lt;span style=&quot;font-family: Ubuntu;&quot;&gt;&lt;br /&gt;&lt;img alt=&quot;&quot; height=&quot;336&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhZYvtx_zFQJ-h7yX7tX4eufZ5x3OYszoBiPRx7TuNMYP74_-nKIu_XFiWgfJKsR-4x8SEoKG6vJNqCYn078Y9zX58R0qjpgJ-MXojdn7rhFcyzT6tyX3s1RJkk7tZ-R6CpGcBrL9CW81o4ehbWq1lRFyXIPp28W7wD-qUIWbT-s4McDltUc2t5ov5Ay2VX=w640-h336&quot; width=&quot;640&quot; /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Ubuntu;&quot;&gt;Please paste the program code above&lt;/span&gt;&lt;/p&gt;&lt;h2 data-end=&quot;2299&quot; data-section-id=&quot;oqtnnc&quot; data-start=&quot;2255&quot;&gt;&lt;span style=&quot;font-family: Ubuntu;&quot;&gt;📡 Step 3: ESP32 Starts Broadcasting WiFi&lt;/span&gt;&lt;/h2&gt;
&lt;p data-end=&quot;2343&quot; data-start=&quot;2301&quot;&gt;&lt;span style=&quot;font-family: Ubuntu;&quot;&gt;Once powered on, ESP32 will automatically:&lt;/span&gt;&lt;/p&gt;
&lt;ul data-end=&quot;2413&quot; data-start=&quot;2344&quot;&gt;&lt;li data-end=&quot;2359&quot; data-section-id=&quot;1ws16vu&quot; data-start=&quot;2344&quot;&gt;&lt;span style=&quot;font-family: Ubuntu;&quot;&gt;
Start AP mode
&lt;/span&gt;&lt;/li&gt;&lt;li data-end=&quot;2383&quot; data-section-id=&quot;1bnkzw8&quot; data-start=&quot;2360&quot;&gt;&lt;span style=&quot;font-family: Ubuntu;&quot;&gt;
Broadcast WiFi signal
&lt;/span&gt;&lt;/li&gt;&lt;li data-end=&quot;2413&quot; data-section-id=&quot;1oq2786&quot; data-start=&quot;2384&quot;&gt;&lt;span style=&quot;font-family: Ubuntu;&quot;&gt;
Wait for devices to connect&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style=&quot;font-family: Ubuntu;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Ubuntu;&quot;&gt;📱 Step 4: Connect Your Phone to ESP32&amp;nbsp;&lt;/span&gt;&lt;/h3&gt;&lt;p data-end=&quot;2519&quot; data-start=&quot;2505&quot;&gt;&lt;span style=&quot;font-family: Ubuntu;&quot;&gt;On your phone:&lt;/span&gt;&lt;/p&gt;
&lt;ol data-end=&quot;2624&quot; data-start=&quot;2521&quot;&gt;&lt;li data-end=&quot;2544&quot; data-section-id=&quot;19o8exm&quot; data-start=&quot;2521&quot;&gt;&lt;span style=&quot;font-family: Ubuntu;&quot;&gt;
Open WiFi settings
&lt;/span&gt;&lt;/li&gt;&lt;li data-end=&quot;2577&quot; data-section-id=&quot;1pxwito&quot; data-start=&quot;2545&quot;&gt;&lt;span style=&quot;font-family: Ubuntu;&quot;&gt;
Look for: &lt;b data-end=&quot;2575&quot; data-start=&quot;2558&quot;&gt;ESP32_HOTSPOT&lt;/b&gt;&lt;/span&gt;
&lt;/li&gt;&lt;li data-end=&quot;2611&quot; data-section-id=&quot;na52jh&quot; data-start=&quot;2578&quot;&gt;&lt;span style=&quot;font-family: Ubuntu;&quot;&gt;
Enter password: &lt;b data-end=&quot;2609&quot; data-start=&quot;2597&quot;&gt;12345678&lt;/b&gt;&lt;/span&gt;
&lt;/li&gt;&lt;li data-end=&quot;2624&quot; data-section-id=&quot;1o19qw1&quot; data-start=&quot;2612&quot;&gt;&lt;span style=&quot;font-family: Ubuntu;&quot;&gt;
Connect
&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;
&lt;p data-end=&quot;2680&quot; data-start=&quot;2626&quot;&gt;&lt;span style=&quot;font-family: Ubuntu;&quot;&gt;👉 If successful, your phone is now connected to ESP32&lt;/span&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Ubuntu;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/h3&gt;&lt;h2 data-end=&quot;2718&quot; data-section-id=&quot;1chug32&quot; data-start=&quot;2687&quot;&gt;📊 Step 5: Verify Connection&lt;/h2&gt;
&lt;p data-end=&quot;2746&quot; data-start=&quot;2720&quot;&gt;Check Serial Monitor logs:&lt;/p&gt;&lt;pre style=&quot;background-color: #2d2d2d; border-left: 5px solid rgb(0, 122, 204); border-radius: 8px; color: #f8f8f2; font-family: &amp;quot;Courier New&amp;quot;, monospace; overflow-x: auto; padding: 15px;&quot;&gt;I (1234) wifi: AP started
I (1235) wifi: station connected&lt;/pre&gt;



&lt;style&gt;

.cpk-shop{
margin:25px 0;
}

.cpk-title{
font-size:22px;
font-weight:bold;
margin-bottom:15px;
}

.cpk-wrapper{
position:relative;
}

.cpk-slider{

display:flex;
overflow-x:auto;
gap:15px;
scroll-behavior:smooth;
padding:5px;
scrollbar-width:none;

}

.cpk-slider::-webkit-scrollbar{
display:none;
}

.cpk-card{

min-width:190px;
max-width:190px;
background:#fff;
border-radius:12px;
overflow:hidden;
border:1px solid #eee;
box-shadow:0 2px 8px rgba(0,0,0,.08);
transition:.3s;
flex-shrink:0;

}

.cpk-card:hover{
transform:translateY(-4px);
box-shadow:0 8px 18px rgba(0,0,0,.15);
}

.cpk-card img{

width:100%;
height:170px;
object-fit:cover;

}

.cpk-info{
padding:10px;
}

.cpk-name{

font-size:14px;
font-weight:600;
height:42px;
overflow:hidden;

}

.cpk-price{

color:#ee4d2d;
font-size:20px;
font-weight:bold;
margin:8px 0;

}

.cpk-btn{

display:block;
background:#ee4d2d;
color:white!important;
text-align:center;
padding:9px;
border-radius:8px;
text-decoration:none;
font-weight:bold;

}

.cpk-btn:hover{

background:#d73211;

}

.arrow{

position:absolute;
top:40%;
transform:translateY(-50%);
width:38px;
height:38px;
border-radius:50%;
background:white;
border:none;
cursor:pointer;
box-shadow:0 2px 8px rgba(0,0,0,.2);
font-size:20px;
z-index:10;

}

.left{
left:-12px;
}

.right{
right:-12px;
}

@media(max-width:768px){

.arrow{
display:none;
}

.cpk-card{

min-width:170px;

}

}

&lt;/style&gt;

&lt;div class=&quot;cpk-shop&quot;&gt;

&lt;div class=&quot;cpk-title&quot;&gt;
🛒 Komponen yang Dibutuhkan
&lt;/div&gt;

&lt;div class=&quot;cpk-wrapper&quot;&gt;

&lt;button class=&quot;arrow left&quot; onclick=&quot;geserKiri()&quot;&gt;❮&lt;/button&gt;

&lt;div class=&quot;cpk-slider&quot; id=&quot;cpkSlider&quot;&gt;

&lt;div class=&quot;cpk-card&quot;&gt;

&lt;img src=&quot;https://down-id.img.susercontent.com/file/sg-11134201-825ai-mqo8z6o5el8h0e.webp&quot; /&gt;

&lt;div class=&quot;cpk-info&quot;&gt;

&lt;div class=&quot;cpk-name&quot;&gt;
ESP32 DevKit V4
&lt;/div&gt;

&lt;div class=&quot;cpk-price&quot;&gt;
Rp79.000
&lt;/div&gt;

&lt;a class=&quot;cpk-btn&quot; href=&quot;https://s.shopee.co.id/5fnYRG7MYC&quot; target=&quot;_blank&quot;&gt;

Lihat Shopee

&lt;/a&gt;

&lt;/div&gt;

&lt;/div&gt;

&lt;div class=&quot;cpk-card&quot;&gt;

&lt;img src=&quot;https://down-id.img.susercontent.com/file/id-11134201-7r98y-lmnb9bggkq7f65.webp&quot; /&gt;

&lt;div class=&quot;cpk-info&quot;&gt;

&lt;div class=&quot;cpk-name&quot;&gt;
Kabel JST 
&lt;/div&gt;

&lt;div class=&quot;cpk-price&quot;&gt;
Rp 2.500
&lt;/div&gt;

&lt;a class=&quot;cpk-btn&quot; href=&quot;https://s.shopee.co.id/gOsWnof5h&quot; rel=&quot;nofollow sponsored&quot; target=&quot;_blank&quot;&gt;

Lihat Shopee

&lt;/a&gt;

&lt;/div&gt;

&lt;/div&gt;

&lt;!--
tanda diatas adalah untuk menyembunyikan dari sini
&lt;div class=&quot;cpk-card&quot;&gt;

&lt;img src=&quot;URL_GAMBAR3&quot; /&gt;

&lt;div class=&quot;cpk-info&quot;&gt;

&lt;div class=&quot;cpk-name&quot;&gt;
Relay 2 Channel
&lt;/div&gt;

&lt;div class=&quot;cpk-price&quot;&gt;
Rp28.000
&lt;/div&gt;

&lt;a class=&quot;cpk-btn&quot; href=&quot;LINK3&quot; rel=&quot;nofollow sponsored&quot; target=&quot;_blank&quot;&gt;

Lihat Shopee

&lt;/a&gt;

&lt;/div&gt;

&lt;/div&gt;

&lt;div class=&quot;cpk-card&quot;&gt;

&lt;img src=&quot;URL_GAMBAR4&quot; /&gt;

&lt;div class=&quot;cpk-info&quot;&gt;

&lt;div class=&quot;cpk-name&quot;&gt;
Breadboard MB102
&lt;/div&gt;

&lt;div class=&quot;cpk-price&quot;&gt;
Rp19.000
&lt;/div&gt;

&lt;a class=&quot;cpk-btn&quot; href=&quot;LINK4&quot; rel=&quot;nofollow sponsored&quot; target=&quot;_blank&quot;&gt;

Lihat Shopee

&lt;/a&gt;

&lt;/div&gt;
tanda dibawah adalah untuk menyembunyikan sampai sini
--&gt;

&lt;/div&gt;

&lt;/div&gt;

&lt;button class=&quot;arrow right&quot; onclick=&quot;geserKanan()&quot;&gt;❯&lt;/button&gt;

&lt;/div&gt;

&lt;/div&gt;

&lt;script&gt;

const slider=document.getElementById(&#39;cpkSlider&#39;);

function geserKanan(){

slider.scrollBy({
left:220,
behavior:&#39;smooth&#39;
});

}

function geserKiri(){

slider.scrollBy({
left:-220,
behavior:&#39;smooth&#39;
});

}

&lt;/script&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.carapaklek.com/feeds/5676821805693812135/comments/default' title='Posting Komentar'/><link rel='replies' type='text/html' href='https://www.carapaklek.com/2026/04/how-to-create-wifi-hotspot-with-esp32.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/2093917475945207513/posts/default/5676821805693812135'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/2093917475945207513/posts/default/5676821805693812135'/><link rel='alternate' type='text/html' href='https://www.carapaklek.com/2026/04/how-to-create-wifi-hotspot-with-esp32.html' title='How to Create a WiFi Hotspot with ESP32 using Espressif IDE (ESP-IDF Guide)'/><author><name>carapaklek.com</name><uri>http://www.blogger.com/profile/12438575085929354819</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj84wNpqEWz7nUZmjNjPBarFLyRAZARNpnydt-LYU_GZhXNGZFUplzpWB82bcX7camGkjKhQ-KGgMvx5RMUkIl4gkJvWLq8dlBfnRdA_lNZPKfK8QjiWqasrUvzS15za_c0-zdUM_aAJ39EGM5XGzVoH0xzAg-7mAIwM90m4_AE9y7kgQ/s220/webcamp.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdk0Lk4MUYeplRn_lpNv4lgXDpyb3wlbC7RWPYnB5L8QAtyMvtqJvXXpchcRwsH-Jab-PhkNJao5HFBI1CTM-DrG1IvpUX2H9LigfpuzbZyLUly5MpuT0kniEUH-_432glQO-iDYIragT6YXhNygqp8VbJ0cx-Lo7-DZe3zbr26pACz-WhsvgIRCcLxn_C/s72-w640-h360-c/esp32d.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2093917475945207513.post-3509871887369838914</id><published>2026-04-15T09:53:00.001+07:00</published><updated>2026-04-15T09:53:05.267+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Arduino"/><category scheme="http://www.blogger.com/atom/ns#" term="esspressif"/><category scheme="http://www.blogger.com/atom/ns#" term="Mesin Cuci"/><category scheme="http://www.blogger.com/atom/ns#" term="Teknisi laptop"/><category scheme="http://www.blogger.com/atom/ns#" term="Teknologi"/><title type='text'>ESP32 DevKitC V4 WROOM-32D vs WROOM-32U: What’s the Difference? (Complete Guide)</title><content type='html'>&lt;h2 style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Ubuntu;&quot;&gt;&amp;nbsp;🚀 Introduction&lt;/span&gt;&lt;/h2&gt;
&lt;p data-end=&quot;438&quot; data-start=&quot;338&quot;&gt;&lt;span style=&quot;font-family: Ubuntu;&quot;&gt;If you&#39;re working with the ESP32 DevKitC V4, you might notice there are two popular module variants:&lt;/span&gt;&lt;/p&gt;
&lt;ul data-end=&quot;479&quot; data-start=&quot;440&quot;&gt;&lt;li data-end=&quot;459&quot; data-section-id=&quot;8eiyki&quot; data-start=&quot;440&quot;&gt;&lt;span style=&quot;font-family: Ubuntu;&quot;&gt;
ESP32-WROOM-32D
&lt;/span&gt;&lt;/li&gt;&lt;li data-end=&quot;479&quot; data-section-id=&quot;8ejb83&quot; data-start=&quot;460&quot;&gt;&lt;span style=&quot;font-family: Ubuntu;&quot;&gt;
ESP32-WROOM-32U
&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;558&quot; data-start=&quot;481&quot;&gt;&lt;span style=&quot;font-family: Ubuntu;&quot;&gt;At first glance, they look identical. Same chip, same performance, same GPIO.&lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;637&quot; data-start=&quot;560&quot;&gt;&lt;span style=&quot;font-family: Ubuntu;&quot;&gt;But there is &lt;b data-end=&quot;600&quot; data-start=&quot;573&quot;&gt;one critical difference&lt;/b&gt; that can affect your entire project.&lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;654&quot; data-start=&quot;639&quot;&gt;&lt;span style=&quot;font-family: Ubuntu;&quot;&gt;👉 The antenna.&lt;/span&gt;&lt;/p&gt;&lt;h2 data-end=&quot;700&quot; data-section-id=&quot;1458175&quot; data-start=&quot;661&quot;&gt;&lt;span style=&quot;font-family: Ubuntu;&quot;&gt;📡 The Core Difference: Antenna Type&lt;/span&gt;&lt;/h2&gt;
&lt;h3 data-end=&quot;738&quot; data-section-id=&quot;1kx861z&quot; data-start=&quot;702&quot;&gt;&lt;span style=&quot;font-family: Ubuntu;&quot;&gt;🔹 ESP32-WROOM-32U (External Antenna)&lt;/span&gt;&lt;/h3&gt;&lt;h3 data-end=&quot;738&quot; data-section-id=&quot;1kx861z&quot; data-start=&quot;702&quot;&gt;&amp;nbsp;&lt;/h3&gt;&lt;h3 data-end=&quot;738&quot; data-section-id=&quot;1kx861z&quot; data-start=&quot;702&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjDj0oGuf7TVAnWa3au8MaHGxA87kl2qjCgP1xbCV_P4YFbCr0dgDDyuOwWGoKxJJ4gUZBSqHDjsdIh5HnAvStEoVi09JkMmR_aBr3bfejWitVBXv-6T9knvpwaruJk4XiwD8uMqQvITUMIDTSLTKAF5vw-4NOWmrt_cNBHfkLOA_tFa1GHKAaDFbCmZUcb&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;722&quot; data-original-width=&quot;1284&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjDj0oGuf7TVAnWa3au8MaHGxA87kl2qjCgP1xbCV_P4YFbCr0dgDDyuOwWGoKxJJ4gUZBSqHDjsdIh5HnAvStEoVi09JkMmR_aBr3bfejWitVBXv-6T9knvpwaruJk4XiwD8uMqQvITUMIDTSLTKAF5vw-4NOWmrt_cNBHfkLOA_tFa1GHKAaDFbCmZUcb=w640-h360&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/h3&gt;&lt;ul data-end=&quot;1104&quot; data-start=&quot;1006&quot;&gt;&lt;li data-end=&quot;1057&quot; data-section-id=&quot;soqko2&quot; data-start=&quot;1006&quot;&gt;&lt;span style=&quot;font-family: Ubuntu; font-size: small;&quot;&gt;Uses &lt;b data-end=&quot;1057&quot; data-start=&quot;1013&quot;&gt;external antenna (IPEX / U.FL connector)&lt;/b&gt;&lt;/span&gt;
&lt;/li&gt;&lt;li data-end=&quot;1082&quot; data-section-id=&quot;ica2jk&quot; data-start=&quot;1058&quot;&gt;&lt;span style=&quot;font-family: Ubuntu; font-size: small;&quot;&gt;
Requires antenna cable
&lt;/span&gt;&lt;/li&gt;&lt;li data-end=&quot;1104&quot; data-section-id=&quot;r1ssvt&quot; data-start=&quot;1083&quot;&gt;&lt;span style=&quot;font-family: Ubuntu; font-size: small;&quot;&gt;
Better signal range
&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;1157&quot; data-start=&quot;1106&quot;&gt;&lt;span style=&quot;font-family: Ubuntu; font-size: small;&quot;&gt;👉 Designed for &lt;b data-end=&quot;1157&quot; data-start=&quot;1122&quot;&gt;long-distance or industrial use&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;h3 data-end=&quot;654&quot; data-start=&quot;639&quot; style=&quot;text-align: left;&quot;&gt;&amp;nbsp;🔹 ESP32-WROOM-32D (PCB Antenna)&lt;/h3&gt;&lt;h3 data-end=&quot;654&quot; data-start=&quot;639&quot; style=&quot;text-align: left;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjJGNciePmRwvd-gq_3Vv84EDg0rf13pVEkZ5bB9TweknHrELeUUX8SkslpyaSR6GFoQnZQmtxrv4S4cyB-T2gbItQMHsWlYEnLXD0Svh68ptT0Zjvv_5hhqB-LMFlQbvs0WIYo8fTF4siheLoBodV5pVyfgdhXV1WNUDDMZ0wNHoebBolNq0yxd6RjVQ9q&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;722&quot; data-original-width=&quot;1282&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjJGNciePmRwvd-gq_3Vv84EDg0rf13pVEkZ5bB9TweknHrELeUUX8SkslpyaSR6GFoQnZQmtxrv4S4cyB-T2gbItQMHsWlYEnLXD0Svh68ptT0Zjvv_5hhqB-LMFlQbvs0WIYo8fTF4siheLoBodV5pVyfgdhXV1WNUDDMZ0wNHoebBolNq0yxd6RjVQ9q=w640-h360&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/h3&gt;&lt;ul data-end=&quot;856&quot; data-start=&quot;781&quot;&gt;&lt;li data-end=&quot;813&quot; data-section-id=&quot;zeczow&quot; data-start=&quot;781&quot;&gt;&lt;span style=&quot;font-family: Ubuntu;&quot;&gt;Built-in PCB antenna (onboard)
&lt;/span&gt;&lt;/li&gt;&lt;li data-end=&quot;840&quot; data-section-id=&quot;7jg14x&quot; data-start=&quot;814&quot;&gt;&lt;span style=&quot;font-family: Ubuntu;&quot;&gt;
No need external antenna
&lt;/span&gt;&lt;/li&gt;&lt;li data-end=&quot;856&quot; data-section-id=&quot;86xux5&quot; data-start=&quot;841&quot;&gt;&lt;span style=&quot;font-family: Ubuntu;&quot;&gt;
Plug and play
&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p data-end=&quot;915&quot; data-start=&quot;858&quot;&gt;&lt;span style=&quot;font-family: Ubuntu;&quot;&gt;👉 This is the &lt;b data-end=&quot;896&quot; data-start=&quot;873&quot;&gt;most common version&lt;/b&gt; used by beginners.&lt;/span&gt;&lt;/p&gt;&lt;h2 data-end=&quot;1516&quot; data-section-id=&quot;f8ha4&quot; data-start=&quot;1482&quot;&gt;📶 Which One Has Better Signal?&lt;/h2&gt;
&lt;p data-end=&quot;1559&quot; data-start=&quot;1518&quot;&gt;👉 Short answer: &lt;b data-end=&quot;1559&quot; data-start=&quot;1535&quot;&gt;ESP32-WROOM-32U wins&lt;/b&gt;&lt;/p&gt;
&lt;p data-end=&quot;1565&quot; data-start=&quot;1561&quot;&gt;Why?&lt;/p&gt;
&lt;p data-end=&quot;1593&quot; data-start=&quot;1567&quot;&gt;Because external antennas:&lt;/p&gt;
&lt;ul data-end=&quot;1668&quot; data-start=&quot;1594&quot;&gt;&lt;li data-end=&quot;1620&quot; data-section-id=&quot;1f2aiyi&quot; data-start=&quot;1594&quot;&gt;
Can be positioned freely
&lt;/li&gt;&lt;li data-end=&quot;1639&quot; data-section-id=&quot;q9ajc3&quot; data-start=&quot;1621&quot;&gt;
Have better gain
&lt;/li&gt;&lt;li data-end=&quot;1668&quot; data-section-id=&quot;hg687y&quot; data-start=&quot;1640&quot;&gt;
Less interference from PCB
&lt;/li&gt;&lt;/ul&gt;
&lt;h3 data-end=&quot;1693&quot; data-section-id=&quot;7f2axt&quot; data-start=&quot;1670&quot;&gt;Real-world example:&lt;/h3&gt;
&lt;ul data-end=&quot;1768&quot; data-start=&quot;1694&quot;&gt;&lt;li data-end=&quot;1729&quot; data-section-id=&quot;11zwuz6&quot; data-start=&quot;1694&quot;&gt;
Inside a box → signal drops (32D)
&lt;/li&gt;&lt;li data-end=&quot;1768&quot; data-section-id=&quot;mokq6a&quot; data-start=&quot;1730&quot;&gt;
With external antenna → stable (32U)&lt;/li&gt;&lt;/ul&gt;&lt;h2 data-end=&quot;1806&quot; data-section-id=&quot;v589rq&quot; data-start=&quot;1775&quot;&gt;🧠 When Should You Use Each?&lt;/h2&gt;
&lt;h3 data-end=&quot;1831&quot; data-section-id=&quot;e1s3f9&quot; data-start=&quot;1808&quot;&gt;✅ Use WROOM-32D if:&lt;/h3&gt;
&lt;ul data-end=&quot;1918&quot; data-start=&quot;1832&quot;&gt;&lt;li data-end=&quot;1848&quot; data-section-id=&quot;18iatjg&quot; data-start=&quot;1832&quot;&gt;
Project indoor
&lt;/li&gt;&lt;li data-end=&quot;1874&quot; data-section-id=&quot;1vhc9rz&quot; data-start=&quot;1849&quot;&gt;
Distance &amp;lt; 10–20 meters
&lt;/li&gt;&lt;li data-end=&quot;1895&quot; data-section-id=&quot;fw04zl&quot; data-start=&quot;1875&quot;&gt;
Simple IoT project
&lt;/li&gt;&lt;li data-end=&quot;1918&quot; data-section-id=&quot;jjm57h&quot; data-start=&quot;1896&quot;&gt;
Prototype / learning&lt;/li&gt;&lt;/ul&gt;&lt;h3 data-end=&quot;1948&quot; data-section-id=&quot;ecewqs&quot; data-start=&quot;1925&quot;&gt;✅ Use WROOM-32U if:&lt;/h3&gt;
&lt;ul data-end=&quot;2047&quot; data-start=&quot;1949&quot;&gt;&lt;li data-end=&quot;1980&quot; data-section-id=&quot;dz8m5j&quot; data-start=&quot;1949&quot;&gt;
Device inside metal enclosure
&lt;/li&gt;&lt;li data-end=&quot;2003&quot; data-section-id=&quot;xctsdi&quot; data-start=&quot;1981&quot;&gt;
Need long range WiFi
&lt;/li&gt;&lt;li data-end=&quot;2024&quot; data-section-id=&quot;s0n87u&quot; data-start=&quot;2004&quot;&gt;
Industrial project
&lt;/li&gt;&lt;li data-end=&quot;2047&quot; data-section-id=&quot;197umdo&quot; data-start=&quot;2025&quot;&gt;
Outdoor installation&lt;/li&gt;&lt;/ul&gt;&lt;h2 data-end=&quot;2091&quot; data-section-id=&quot;s0l6aj&quot; data-start=&quot;2054&quot;&gt;⚠️ Important Design Considerations&lt;/h2&gt;
&lt;h3 data-end=&quot;2114&quot; data-section-id=&quot;1pe80i6&quot; data-start=&quot;2093&quot;&gt;🔴 For WROOM-32D:&lt;/h3&gt;
&lt;ul data-end=&quot;2180&quot; data-start=&quot;2115&quot;&gt;&lt;li data-end=&quot;2152&quot; data-section-id=&quot;jpm71y&quot; data-start=&quot;2115&quot;&gt;
Don’t cover antenna area with metal
&lt;/li&gt;&lt;li data-end=&quot;2180&quot; data-section-id=&quot;3kp0uj&quot; data-start=&quot;2153&quot;&gt;
Keep space around antenna&lt;/li&gt;&lt;/ul&gt;&lt;h3 data-end=&quot;2208&quot; data-section-id=&quot;1pe8073&quot; data-start=&quot;2187&quot;&gt;🔴 For WROOM-32U:&lt;/h3&gt;
&lt;ul data-end=&quot;2289&quot; data-start=&quot;2209&quot;&gt;&lt;li data-end=&quot;2261&quot; data-section-id=&quot;1jr549l&quot; data-start=&quot;2209&quot;&gt;
Must attach antenna (or signal will be very weak!)
&lt;/li&gt;&lt;li data-end=&quot;2289&quot; data-section-id=&quot;9x2ynk&quot; data-start=&quot;2262&quot;&gt;
Use quality antenna cable&lt;/li&gt;&lt;/ul&gt;&lt;h2 data-end=&quot;2334&quot; data-section-id=&quot;1l50l75&quot; data-start=&quot;2296&quot;&gt;🔧 Performance: Are They Different?&lt;/h2&gt;
&lt;p data-end=&quot;2339&quot; data-start=&quot;2336&quot;&gt;No.&lt;/p&gt;
&lt;p data-end=&quot;2364&quot; data-start=&quot;2341&quot;&gt;Both use the same chip:&lt;/p&gt;
&lt;p data-end=&quot;2374&quot; data-start=&quot;2366&quot;&gt;👉 ESP32&lt;/p&gt;
&lt;p data-end=&quot;2379&quot; data-start=&quot;2376&quot;&gt;So:&lt;/p&gt;
&lt;ul data-end=&quot;2444&quot; data-start=&quot;2380&quot;&gt;&lt;li data-end=&quot;2392&quot; data-section-id=&quot;owct2h&quot; data-start=&quot;2380&quot;&gt;
CPU = same
&lt;/li&gt;&lt;li data-end=&quot;2405&quot; data-section-id=&quot;1qwgdap&quot; data-start=&quot;2393&quot;&gt;
RAM = same
&lt;/li&gt;&lt;li data-end=&quot;2424&quot; data-section-id=&quot;1rz703d&quot; data-start=&quot;2406&quot;&gt;
Bluetooth = same
&lt;/li&gt;&lt;li data-end=&quot;2444&quot; data-section-id=&quot;v7tuwp&quot; data-start=&quot;2425&quot;&gt;
WiFi speed = same
&lt;/li&gt;&lt;/ul&gt;&lt;p data-end=&quot;2481&quot; data-start=&quot;2446&quot;&gt;👉 Only antenna design is different&lt;/p&gt;&lt;h2 data-end=&quot;2518&quot; data-section-id=&quot;9vhcyq&quot; data-start=&quot;2488&quot;&gt;💡 Real Insight (Important)&lt;/h2&gt;
&lt;p data-end=&quot;2541&quot; data-start=&quot;2520&quot;&gt;Many beginners think:&lt;/p&gt;
&lt;blockquote data-end=&quot;2568&quot; data-start=&quot;2543&quot;&gt;
&lt;p data-end=&quot;2568&quot; data-start=&quot;2545&quot;&gt;“32U pasti lebih bagus”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-end=&quot;2583&quot; data-start=&quot;2570&quot;&gt;❌ Not always.&lt;/p&gt;
&lt;p data-end=&quot;2604&quot; data-start=&quot;2585&quot;&gt;If your project is:&lt;/p&gt;
&lt;ul data-end=&quot;2639&quot; data-start=&quot;2605&quot;&gt;&lt;li data-end=&quot;2612&quot; data-section-id=&quot;178immv&quot; data-start=&quot;2605&quot;&gt;
Small
&lt;/li&gt;&lt;li data-end=&quot;2621&quot; data-section-id=&quot;1rbawbd&quot; data-start=&quot;2613&quot;&gt;
Indoor
&lt;/li&gt;&lt;li data-end=&quot;2639&quot; data-section-id=&quot;93kyjy&quot; data-start=&quot;2622&quot;&gt;
Close to router
&lt;/li&gt;&lt;/ul&gt;&lt;p data-end=&quot;2670&quot; data-start=&quot;2641&quot;&gt;👉 &lt;b data-end=&quot;2670&quot; data-start=&quot;2644&quot;&gt;32D is already perfect&lt;/b&gt;&lt;/p&gt;&lt;h2 data-end=&quot;2693&quot; data-section-id=&quot;17mzg01&quot; data-start=&quot;2677&quot;&gt;🔚 Conclusion&lt;/h2&gt;
&lt;p data-end=&quot;2718&quot; data-start=&quot;2695&quot;&gt;The difference between:&lt;/p&gt;
&lt;ul data-end=&quot;2758&quot; data-start=&quot;2719&quot;&gt;&lt;li data-end=&quot;2738&quot; data-section-id=&quot;8eiyki&quot; data-start=&quot;2719&quot;&gt;
ESP32-WROOM-32D
&lt;/li&gt;&lt;li data-end=&quot;2758&quot; data-section-id=&quot;8ejb83&quot; data-start=&quot;2739&quot;&gt;
ESP32-WROOM-32U
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;2795&quot; data-start=&quot;2760&quot;&gt;👉 Comes down to &lt;b data-end=&quot;2795&quot; data-start=&quot;2777&quot;&gt;antenna design&lt;/b&gt;&lt;/p&gt;
&lt;p data-end=&quot;2827&quot; data-start=&quot;2797&quot;&gt;Choose based on your use case:&lt;/p&gt;
&lt;ul data-end=&quot;2879&quot; data-start=&quot;2829&quot;&gt;&lt;li data-end=&quot;2849&quot; data-section-id=&quot;131rq9m&quot; data-start=&quot;2829&quot;&gt;
Simplicity → 32D
&lt;/li&gt;&lt;li data-end=&quot;2879&quot; data-section-id=&quot;58kt9m&quot; data-start=&quot;2850&quot;&gt;
Range &amp;amp; flexibility → 32U&lt;/li&gt;&lt;/ul&gt;&lt;h2 data-end=&quot;2906&quot; data-section-id=&quot;127rql7&quot; data-start=&quot;2886&quot;&gt;💡 Final Thoughts&lt;/h2&gt;
&lt;p data-end=&quot;2958&quot; data-start=&quot;2908&quot;&gt;Choosing the right ESP32 module can save you from:&lt;/p&gt;
&lt;ul data-end=&quot;3024&quot; data-start=&quot;2959&quot;&gt;&lt;li data-end=&quot;2979&quot; data-section-id=&quot;131meh0&quot; data-start=&quot;2959&quot;&gt;
Weak signal issues
&lt;/li&gt;&lt;li data-end=&quot;3002&quot; data-section-id=&quot;10qlrqr&quot; data-start=&quot;2980&quot;&gt;
Redesigning hardware
&lt;/li&gt;&lt;li data-end=&quot;3024&quot; data-section-id=&quot;x9c1qh&quot; data-start=&quot;3003&quot;&gt;
Deployment problems
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;3116&quot; data-start=&quot;3026&quot;&gt;Understanding this small difference can make a &lt;b data-end=&quot;3087&quot; data-start=&quot;3073&quot;&gt;big impact&lt;/b&gt; on your IoT project success.&lt;/p&gt;&lt;h3 data-end=&quot;654&quot; data-start=&quot;639&quot; style=&quot;text-align: left;&quot;&gt;&amp;nbsp;Read Also : &lt;a href=&quot;https://www.carapaklek.com/2026/04/how-to-change-uart0-to-uart1-on.html&quot;&gt;🔧 How to Change UART0 to UART1 on Waveshare ESP32-S3 Touch 7B (ESP-IDF Guide)&lt;/a&gt;&lt;/h3&gt;&lt;h3 data-end=&quot;654&quot; data-start=&quot;639&quot; style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&lt;/h3&gt;&lt;h3 data-end=&quot;654&quot; data-start=&quot;639&quot; style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&lt;/h3&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.carapaklek.com/feeds/3509871887369838914/comments/default' title='Posting Komentar'/><link rel='replies' type='text/html' href='https://www.carapaklek.com/2026/04/esp32-devkitc-v4-wroom-32d-vs-wroom-32u.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/2093917475945207513/posts/default/3509871887369838914'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/2093917475945207513/posts/default/3509871887369838914'/><link rel='alternate' type='text/html' href='https://www.carapaklek.com/2026/04/esp32-devkitc-v4-wroom-32d-vs-wroom-32u.html' title='ESP32 DevKitC V4 WROOM-32D vs WROOM-32U: What’s the Difference? (Complete Guide)'/><author><name>carapaklek.com</name><uri>http://www.blogger.com/profile/12438575085929354819</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj84wNpqEWz7nUZmjNjPBarFLyRAZARNpnydt-LYU_GZhXNGZFUplzpWB82bcX7camGkjKhQ-KGgMvx5RMUkIl4gkJvWLq8dlBfnRdA_lNZPKfK8QjiWqasrUvzS15za_c0-zdUM_aAJ39EGM5XGzVoH0xzAg-7mAIwM90m4_AE9y7kgQ/s220/webcamp.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEjDj0oGuf7TVAnWa3au8MaHGxA87kl2qjCgP1xbCV_P4YFbCr0dgDDyuOwWGoKxJJ4gUZBSqHDjsdIh5HnAvStEoVi09JkMmR_aBr3bfejWitVBXv-6T9knvpwaruJk4XiwD8uMqQvITUMIDTSLTKAF5vw-4NOWmrt_cNBHfkLOA_tFa1GHKAaDFbCmZUcb=s72-w640-h360-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2093917475945207513.post-2793315462418271996</id><published>2026-04-11T21:36:00.001+07:00</published><updated>2026-04-11T21:36:05.351+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="esspressif"/><category scheme="http://www.blogger.com/atom/ns#" term="komputer"/><category scheme="http://www.blogger.com/atom/ns#" term="Teknologi"/><title type='text'>🔧 How to Change UART0 to UART1 on Waveshare ESP32-S3 Touch 7B (ESP-IDF Guide)</title><content type='html'>&lt;h1&gt;&lt;/h1&gt;&lt;p&gt;By default, the Waveshare ESP32-S3 Touch 7B uses &lt;b&gt;UART0&lt;/b&gt; for serial communication (logging and monitoring).&lt;/p&gt;&lt;p&gt;However, in many real-world projects, you may need to:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Free UART0 for USB debugging&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Use another UART for external devices (sensors, modules, etc.)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Avoid conflicts with flashing and logs&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;In this guide, you will learn how to switch from &lt;b&gt;UART0 to UART1&lt;/b&gt; using ESP-IDF.&lt;/p&gt;&lt;h2&gt;🧠 Understanding UART on ESP32-S3 Touch 7B waveshare&lt;/h2&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjBNp5eLMj6Paj6OoExtEUBY7aiZA54OOXb6ZZw3kUa_edLPLDw4XyLrXdQu-WPjBfC3nYIWpW1bC4fWR8oO1Oov3efMgV705EBDqxkxmEVeRxkESo3y9ODhG9d9MzFrFj_WZYkMr6Z84LnB4i-Z37-a7X-wqT4iOnX3wyYcj2S_7xsLG8wB6EzESG9RxfD&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;720&quot; data-original-width=&quot;1280&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjBNp5eLMj6Paj6OoExtEUBY7aiZA54OOXb6ZZw3kUa_edLPLDw4XyLrXdQu-WPjBfC3nYIWpW1bC4fWR8oO1Oov3efMgV705EBDqxkxmEVeRxkESo3y9ODhG9d9MzFrFj_WZYkMr6Z84LnB4i-Z37-a7X-wqT4iOnX3wyYcj2S_7xsLG8wB6EzESG9RxfD=w640-h360&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;The ESP32-S3 provides multiple UART interfaces:&lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;b&gt;UART0&lt;/b&gt; → Default (used for flashing and logs)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;b&gt;UART1&lt;/b&gt; → Available for custom use&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;b&gt;UART2&lt;/b&gt; → Optional (depending on configuration)&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;👉 UART signals can be routed to different GPIOs, making it very flexible.&lt;/p&gt;&lt;h2&gt;⚙️ Step 1: Change Console Output to UART1&lt;/h2&gt;&lt;p&gt;before you change UART 0 to UART1 you must change selector to UART selected&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgRQp1zLx3lvbYHG2F_h7HVdzoZIRepfhhff_rwQve6ghB5vtjmuxtJxn6E2EhWNobMU9AUYkogPZmuUjR6HhLZbD8d88ZOqEO57Y2Mg9n1uhkRi-03Med7QRgDdgroB1-1ls90NZjNg5gs5IDh_Xh89gJvZVdDT-59Hkxj_Ao6LNcbsLN9P4oE9ofGpk3y&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;720&quot; data-original-width=&quot;1280&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgRQp1zLx3lvbYHG2F_h7HVdzoZIRepfhhff_rwQve6ghB5vtjmuxtJxn6E2EhWNobMU9AUYkogPZmuUjR6HhLZbD8d88ZOqEO57Y2Mg9n1uhkRi-03Med7QRgDdgroB1-1ls90NZjNg5gs5IDh_Xh89gJvZVdDT-59Hkxj_Ao6LNcbsLN9P4oE9ofGpk3y=w640-h360&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Open your project in ESP-IDF and run:&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;idf.py menuconfig
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Navigate to:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;Component config → ESP System Settings → Channel for console output
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Change:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;UART0
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;To:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;UART1&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;&lt;img alt=&quot;&quot; height=&quot;338&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjj1BkD9SAe9KrBoNl8g4U_hTp3fuezAuWOiaJUh1ayrGXZx_zTz720HF8A0gld26LoLceqD7DmR5TEtpaG1WNgIBjCIsRh-yea-Cg1lDty2xR2V52Z1ZKZpib77cGryWWQH6HxM8Mjfv2jHBnUTSzYr3sh3SmHt1dUD3UlJXcfiqM6egFo4iunKemS05vD=w640-h338&quot; width=&quot;640&quot; /&gt;&amp;nbsp;&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;&lt;img alt=&quot;&quot; height=&quot;470&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgudHr86cDCJ72m2u58PHFdzHYYVuH70CffK5r4bhQK7uYYrTt1OkUWBnK8a4PH5Bb-dXxUhDAD4L7F24c5Jn_r23iyTGrAMNQjklN9zRGPuDwPdrIW3wDsInCUW3CLYIiE5jDKyJ2cH0udSK0MVV6hDZ3fdO8NSjII_6qtnFIGu4aszOH_r8cyJFSVYEua=w640-h470&quot; width=&quot;640&quot; /&gt;&amp;nbsp;&lt;/h2&gt;&lt;h2&gt;&amp;nbsp;&lt;img alt=&quot;&quot; height=&quot;563&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhEEOnbSImEVDaXnHNSqknFg_qxG_85XAzyGQS2WXhYC5Lw7JjKgxdeL_nmAt27OhPBdrYyZmAJ3ULyLJVgJImAaT9Czlk4vYB_KZ5yM28wPcc6-K-zsxJ_StNsDxE3wxH_pYqbKsq9UHk5Oxnlhq8OUhyr7ZNbQ7InnCANTJ0ImuF4PEM4giGLAcDCH2bL=w640-h563&quot; width=&quot;640&quot; /&gt;&lt;/h2&gt;&lt;h2&gt;&lt;img alt=&quot;&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEg8bUCfCz67tbBPAeP2ajVeEMdvvBIxqGjmO01ipBQakDWmohQxk6DwlaQ0wyTUUujQXF5QztckV9qJkL3DutIzOK1qcTnrS0ARRDJSaKBCyPyJtV7kb68N1Ti8FSdQswRPYTCpo1x5mXlBCJbD6JBKp8tt6R6kQC38-Zad87VQ9tiRdkPgTfpYVlNYUI5q=w633-h640&quot; width=&quot;633&quot; /&gt;&amp;nbsp;&lt;/h2&gt;&lt;h2&gt;&amp;nbsp;&lt;/h2&gt;&lt;h2&gt;🔌 Step 2: Configure UART1 Pins&lt;/h2&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Add this code in your &lt;code&gt;main.c&lt;/code&gt;:&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-c&quot;&gt;#include &quot;driver/uart.h&quot;

#define UART_PORT UART_NUM_1
#define TXD_PIN 17
#define RXD_PIN 18

void app_main(void)
{
    uart_config_t uart_config = {
        .baud_rate = 115200,
        .data_bits = UART_DATA_8_BITS,
        .parity    = UART_PARITY_DISABLE,
        .stop_bits = UART_STOP_BITS_1,
        .flow_ctrl = UART_HW_FLOWCTRL_DISABLE
    };

    uart_driver_install(UART_PORT, 1024, 0, 0, NULL, 0);
    uart_param_config(UART_PORT, &amp;amp;uart_config);
    uart_set_pin(UART_PORT, TXD_PIN, RXD_PIN, UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE);
}&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;🔨 Step 3: Build and Flash&lt;/h2&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;idf.py build
idf.py flash&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;📟 Step 4: Monitor UART1 Output&lt;/h2&gt;&lt;p&gt;Since logs are now on UART1:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Use a USB-to-TTL converter&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Connect:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;TX → RX&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;RX → TX&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Then open a serial monitor (PuTTY, Arduino Serial Monitor, etc.)&lt;/p&gt;&lt;h2&gt;⚠️ Important Notes&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Avoid GPIO pins used by the LCD (Waveshare display)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Make sure selected pins are free&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;UART0 is still used during flashing (unless using USB CDC)&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;🎯 Conclusion&lt;/h2&gt;&lt;p&gt;Switching from UART0 to UART1 allows you to:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Separate debugging and communication&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Improve system flexibility&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Build more advanced ESP32-S3 projects&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;With ESP-IDF, you have full control over UART configuration.&lt;/p&gt;&lt;h2&gt;🚀 Next Topics&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;ESP32 UART Communication Example&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;ESP32-S3 USB CDC vs UART&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;LVGL + UART Data Integration&lt;/p&gt;&lt;p&gt;&amp;nbsp;Read also : &lt;a href=&quot;https://www.carapaklek.com/2026/04/getting-started-esp-idf-with-powershell.html&quot;&gt;🚀 Getting Started ESP-IDF with PowerShell &amp;amp; Espressif IDE (Beginner Guide)&amp;nbsp;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.carapaklek.com/feeds/2793315462418271996/comments/default' title='Posting Komentar'/><link rel='replies' type='text/html' href='https://www.carapaklek.com/2026/04/how-to-change-uart0-to-uart1-on.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/2093917475945207513/posts/default/2793315462418271996'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/2093917475945207513/posts/default/2793315462418271996'/><link rel='alternate' type='text/html' href='https://www.carapaklek.com/2026/04/how-to-change-uart0-to-uart1-on.html' title='🔧 How to Change UART0 to UART1 on Waveshare ESP32-S3 Touch 7B (ESP-IDF Guide)'/><author><name>carapaklek.com</name><uri>http://www.blogger.com/profile/12438575085929354819</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj84wNpqEWz7nUZmjNjPBarFLyRAZARNpnydt-LYU_GZhXNGZFUplzpWB82bcX7camGkjKhQ-KGgMvx5RMUkIl4gkJvWLq8dlBfnRdA_lNZPKfK8QjiWqasrUvzS15za_c0-zdUM_aAJ39EGM5XGzVoH0xzAg-7mAIwM90m4_AE9y7kgQ/s220/webcamp.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEjBNp5eLMj6Paj6OoExtEUBY7aiZA54OOXb6ZZw3kUa_edLPLDw4XyLrXdQu-WPjBfC3nYIWpW1bC4fWR8oO1Oov3efMgV705EBDqxkxmEVeRxkESo3y9ODhG9d9MzFrFj_WZYkMr6Z84LnB4i-Z37-a7X-wqT4iOnX3wyYcj2S_7xsLG8wB6EzESG9RxfD=s72-w640-h360-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2093917475945207513.post-7544225122021501285</id><published>2026-04-11T18:42:00.001+07:00</published><updated>2026-04-11T18:42:37.992+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Bios"/><category scheme="http://www.blogger.com/atom/ns#" term="esspressif"/><category scheme="http://www.blogger.com/atom/ns#" term="komputer"/><category scheme="http://www.blogger.com/atom/ns#" term="Teknologi"/><title type='text'>🚀 Getting Started ESP-IDF with PowerShell &amp; Espressif IDE (Beginner Guide)</title><content type='html'>&lt;p&gt;&lt;/p&gt;&lt;p&gt;Belajar ESP-IDF di Windows sering bikin bingung—terutama saat harus memilih terminal yang tepat dan memahami alur build sampai flash ke ESP32.&lt;/p&gt;&lt;p&gt;Kalau kamu sudah berhasil install ESP-IDF tapi masih bingung langkah selanjutnya, artikel ini akan jadi panduan lengkap dari nol sampai jalan.&lt;/p&gt;&lt;p&gt;Di tutorial ini kamu akan belajar:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Setup ESP-IDF menggunakan PowerShell&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Membuat project pertama (Hello World)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Build &amp;amp; flash ke ESP32&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Menggunakan Espressif IDE (mode GUI)&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;🧠 Apa itu ESP-IDF &amp;amp; Espressif IDE?&lt;/h2&gt;&lt;p&gt;&lt;img alt=&quot;Image&quot; src=&quot;https://images.openai.com/static-rsc-4/fJk7nzp9UnAkNuaba4XAlWEtNrty78OE1t4-T5P8yfzwKRNtBhWQScUENSRTHtk3_DyQnoEW65szX3hueMDk6jkHA-zbXUhwPACZmyMEem5Yq2wDcpk-zc9RHz5Pd3InGLO5mku8MC6_PNqsLGSTVNnWXfyUC7rK6hxVYeUAGsDMk_SWE6HfAClbYwy3P1X7?purpose=fullsize&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;img alt=&quot;Image&quot; height=&quot;294&quot; src=&quot;https://images.openai.com/static-rsc-4/9u1mpyJQkAVHaOh8bu6zWuQbm89T26FDsazr9-u3lR8jCS-OuTos5VdJOEJMaTQXzfvu1dM5xR1bJeHxKUDCfEf0HRmMVltmxPqEUsI1GlP4BHZLdHllq8nH8p924XtVwY8V2M6SPpWTZQz_E5Ujm4lAAnekfSiWzIgBNzUl5FmemGtKBWstmXkNH8jhzdBf?purpose=fullsize&quot; width=&quot;400&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h3&gt;🔹 ESP-IDF&lt;/h3&gt;&lt;p&gt;ESP-IDF adalah framework resmi dari Espressif untuk mengembangkan firmware ESP32.&lt;/p&gt;&lt;p&gt;Kelebihannya:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Kontrol penuh terhadap hardware&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Lebih stabil untuk project besar&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Digunakan di industri profesional&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;🔹 Espressif IDE&lt;/h3&gt;&lt;p&gt;Espressif IDE adalah tools berbasis GUI yang mempermudah:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Build project&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Flash firmware&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Monitoring serial output&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;👉 Cocok untuk yang tidak ingin terlalu banyak bermain di terminal&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;img alt=&quot;&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgbrD86zhyweq57U4A3IkjIgcbzKdg1aQ6MkqzyN1NaApS4vAaNSlQscgS5U-WscIsc-S_mY7RFo8fXHj7E6KXfZdLkd5wHMl5LH9gzoV9iinAJRyBDlK_Oz257JCtHqSMgIWPnXv5PJDQn8bLbBPt-DZ5YnqiKjgP4wzBTpsZ4i8R3BF9sZ9m36EGz--im=w640-h360&quot; width=&quot;640&quot; /&gt;&amp;nbsp;&lt;/p&gt;&lt;h2&gt;⚙️ Kenapa Pakai PowerShell?&lt;/h2&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;img alt=&quot;Image&quot; height=&quot;484&quot; src=&quot;https://images.openai.com/static-rsc-4/BRAvD1HUHV8DN3ApIANJZ4b--thaJijSvqh9BDdQ_c5FNEOkK9w-pMJ4WXJieVw_jKdBCc02oAO65b-Pl8B-7kdLG14AOpaOYYr-kdq32NezyISs0PBxSsFB-DKlrY0OBJ4j55ab7_X3_Eo_P6oX6wD04I_K4KO_FN5xBn0yj59oYsb2uGifbcajvrckhIKM?purpose=fullsize&quot; width=&quot;640&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img alt=&quot;Image&quot; height=&quot;426&quot; src=&quot;https://images.openai.com/static-rsc-4/-7UDM4ItdknxkzAlVeb02FkXX_fQxuUGoFcORY2fSVQOub7rfgQJJNTBm8BFSU9Xk2H5rOkwfAUUVtNoP9Sw6udlQiFSNgFRsyWpeMPq6TOlG-twCFwEsrciKtmheWFq2iLBvn3eGxmEQlFwxLo_FmxQUIuwxpIoP4Jixo8lXo7eSsYIrOEbHX6enBjTDEW5?purpose=fullsize&quot; width=&quot;640&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img alt=&quot;&quot; height=&quot;336&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiX1Gh1FftHU2tlUfNRJ5dhrDZEiVnKlKsKYauSAvgQL2cKSkWylc6iRXistqDwVJ9YyMpflGtcCU5JyNGYVrykMuB2P76N_NpFNaDJITy-qi7eNQnRZiLQ5jT0kghYGSc37wcl9glisBOv0TwpLCDRtSmCmUgbpaVM6qctN9ntRbxIaSnBsIavQXCrnxE0=w640-h336&quot; width=&quot;640&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Menggunakan PowerShell punya banyak keuntungan:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Lebih modern dibanding CMD&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Mendukung script (&lt;code&gt;.ps1&lt;/code&gt;)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Direkomendasikan oleh dokumentasi ESP-IDF&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Lebih stabil untuk setup environment&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;👉 Intinya: PowerShell = pilihan terbaik untuk ESP-IDF di Windows&lt;/p&gt;&lt;h2&gt;🧱 Persiapan Sebelum Mulai&lt;/h2&gt;&lt;p&gt;Pastikan kamu sudah memiliki:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;ESP-IDF terinstall&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Python (biasanya otomatis)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Git&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Driver USB ESP32&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;💡 Tips: Gunakan kabel data (bukan kabel charger)&lt;/p&gt;&lt;h2&gt;🖥️ Setup ESP-IDF di PowerShell&lt;/h2&gt;&lt;p&gt;Buka PowerShell, lalu jalankan:&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;cd C:\esp\esp-idf
.\export.ps1
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Jika berhasil:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Tidak ada error&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Command &lt;code&gt;idf.py&lt;/code&gt; bisa digunakan&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Cek dengan:&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;idf.py --version&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;&amp;nbsp;&lt;/code&gt;&lt;/pre&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;🚀 Cara Membuat Project Baru ESP-IDF di Espressif IDE + Build &amp;amp; Flash&lt;/h3&gt;&lt;p&gt;Buat kamu yang baru belajar ESP-IDF, sekarang kamu bisa langsung membuat project tanpa perlu command line, cukup menggunakan Espressif IDE.&lt;/p&gt;&lt;p&gt;Tutorial ini akan memandu kamu dari:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Membuat project baru&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Konfigurasi project&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Build program&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Flash ke ESP32&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;🖥️ 1. Membuat Project Baru&lt;/h2&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhvRKdVlNDztSaPZjIqi_8l0bCLNva0V8RvPQPoPKhXtGSau4QQrhpR8lV_f4pgFRY2_HA70D74oFeew4hIIPd5HaBWRSz6QulQ7VOesr_F2S-v76_q_k3h2yeX6ot6myoh2i6hpgYXCZEvgvf6lgD2vnQuOpQh1Dk-WnZbjWzN3ilzKK3a5PtjTc8gmg7S&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;720&quot; data-original-width=&quot;1280&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhvRKdVlNDztSaPZjIqi_8l0bCLNva0V8RvPQPoPKhXtGSau4QQrhpR8lV_f4pgFRY2_HA70D74oFeew4hIIPd5HaBWRSz6QulQ7VOesr_F2S-v76_q_k3h2yeX6ot6myoh2i6hpgYXCZEvgvf6lgD2vnQuOpQh1Dk-WnZbjWzN3ilzKK3a5PtjTc8gmg7S=w640-h360&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Langkah-langkah:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;p&gt;Klik menu &lt;b&gt;File&lt;/b&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Pilih &lt;b&gt;New&lt;/b&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Klik &lt;b&gt;Espressif IDF Project&lt;/b&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;📌 Keterangan gambar:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;b&gt;1 = Menu File&lt;/b&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;b&gt;2 = Pilih Espressif IDF Project&lt;/b&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;⚙️ 2. Konfigurasi Project&lt;/h2&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhBt4ekbjADvIYCc-YtkWqKngUzHk3VlHwEsWYXCExhGqkCzs0vZc4F9zIYDiKskDJ6weaDbai_iJA_LrK2a3Wxpwa96fCoNCHeMKNq0ZlijrThfMAnO3Z9zKJQHydnlzLQE1uoOHA6x93Be-wrAO9zzNUc44230GdAywymlR_ngaDd0lZpJ5Mp-6yeXD-V&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;720&quot; data-original-width=&quot;1280&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhBt4ekbjADvIYCc-YtkWqKngUzHk3VlHwEsWYXCExhGqkCzs0vZc4F9zIYDiKskDJ6weaDbai_iJA_LrK2a3Wxpwa96fCoNCHeMKNq0ZlijrThfMAnO3Z9zKJQHydnlzLQE1uoOHA6x93Be-wrAO9zzNUc44230GdAywymlR_ngaDd0lZpJ5Mp-6yeXD-V=w640-h360&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Isi konfigurasi sebagai berikut:&lt;/p&gt;&lt;h3&gt;🧾 (1) Project Name&lt;/h3&gt;&lt;p&gt;Isi nama project, contoh:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;hello_world&lt;/code&gt;&lt;/pre&gt;&lt;h3&gt;🔧 (2) Target Chip&lt;/h3&gt;&lt;p&gt;Pilih sesuai board:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;ESP32&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;ESP32-S3&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;📦 (3) Template&lt;/h3&gt;&lt;p&gt;Centang:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;Create project using one of the templates
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Pilih:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;hello_world&lt;/code&gt;&lt;/pre&gt;&lt;h3&gt;✅ (4) Finish&lt;/h3&gt;&lt;p&gt;Klik tombol &lt;b&gt;Finish&lt;/b&gt;&lt;/p&gt;&lt;h2&gt;📁 3. Struktur Project &amp;amp; Build&lt;/h2&gt;&lt;p&gt;&lt;img alt=&quot;&quot; height=&quot;594&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhinWCHi74YQsBKiZznsHJtha9IeTVwxW61VZbHPZUFA_rKzTnfJExbSYX3usBrOkohA295g_vWrasEN9UrVdkVuPs90FUIajEXXeMvECHbbF5p1CB8uS4QeDInlIO2pmmjr_LEW0NJ7ZYGapv4LH77xxqr-g49uqu6ABEQucKKRJ7OeJTijC2g_994_HEN=w640-h594&quot; width=&quot;640&quot; /&gt;&lt;/p&gt;&lt;p&gt;Setelah project dibuat:&lt;/p&gt;&lt;h3&gt;📌 (1) Struktur Project&lt;/h3&gt;&lt;p&gt;Project muncul di panel kiri&lt;/p&gt;&lt;h3&gt;🔨 (2) Build&lt;/h3&gt;&lt;p&gt;Klik tombol &lt;b&gt;Build (🔨)&lt;/b&gt; untuk compile&lt;/p&gt;&lt;br /&gt;&lt;h2&gt;🔌 4. Flash ke ESP32&lt;/h2&gt;&lt;p&gt;Setelah build berhasil:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;p&gt;Hubungkan ESP32 ke komputer&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Klik tombol &lt;b&gt;Flash (⚡)&lt;/b&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;💡 Tips:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Tekan tombol &lt;b&gt;BOOT&lt;/b&gt; jika gagal&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Pastikan port COM benar&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;📟 5. Monitor Output&lt;/h2&gt;&lt;p&gt;Klik tombol &lt;b&gt;Monitor&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Jika berhasil:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;Hello world!&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;🎯 Kesimpulan&lt;/h2&gt;&lt;p&gt;Menggunakan Espressif IDE membuat proses development ESP32 jadi:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Lebih mudah&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Tanpa command line&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Cocok untuk pemula&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;🚀 Artikel Selanjutnya&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;ESP-IDF Error Fix&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;ESP-IDF vs Arduino&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;ESP32 GUI dengan LVGL&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;&amp;nbsp;&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;&amp;nbsp;&lt;/code&gt;&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.carapaklek.com/feeds/7544225122021501285/comments/default' title='Posting Komentar'/><link rel='replies' type='text/html' href='https://www.carapaklek.com/2026/04/getting-started-esp-idf-with-powershell.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/2093917475945207513/posts/default/7544225122021501285'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/2093917475945207513/posts/default/7544225122021501285'/><link rel='alternate' type='text/html' href='https://www.carapaklek.com/2026/04/getting-started-esp-idf-with-powershell.html' title='🚀 Getting Started ESP-IDF with PowerShell &amp; Espressif IDE (Beginner Guide)'/><author><name>carapaklek.com</name><uri>http://www.blogger.com/profile/12438575085929354819</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj84wNpqEWz7nUZmjNjPBarFLyRAZARNpnydt-LYU_GZhXNGZFUplzpWB82bcX7camGkjKhQ-KGgMvx5RMUkIl4gkJvWLq8dlBfnRdA_lNZPKfK8QjiWqasrUvzS15za_c0-zdUM_aAJ39EGM5XGzVoH0xzAg-7mAIwM90m4_AE9y7kgQ/s220/webcamp.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEgbrD86zhyweq57U4A3IkjIgcbzKdg1aQ6MkqzyN1NaApS4vAaNSlQscgS5U-WscIsc-S_mY7RFo8fXHj7E6KXfZdLkd5wHMl5LH9gzoV9iinAJRyBDlK_Oz257JCtHqSMgIWPnXv5PJDQn8bLbBPt-DZ5YnqiKjgP4wzBTpsZ4i8R3BF9sZ9m36EGz--im=s72-w640-h360-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2093917475945207513.post-4960161020178835379</id><published>2026-04-10T19:18:00.002+07:00</published><updated>2026-04-10T19:18:40.734+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Arduino"/><category scheme="http://www.blogger.com/atom/ns#" term="komputer"/><category scheme="http://www.blogger.com/atom/ns#" term="Teknologi"/><title type='text'>How to Install ESP-IDF 5.3 on Windows (PowerShell &amp; CMD) – Complete Beginner Guide</title><content type='html'>&lt;!--FEATURED IMAGE--&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;
  &lt;img alt=&quot;Install ESP-IDF 5.3 Windows PowerShell CMD&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiuS1Lxoi3M9kn1WdFcEE08A1UE9LdEG9Io2pAS6JcI_lajHzu15RS9Aayq92pdIBJIlYweONSmkPFP1scd-XDJkv2XmT59TOn_Jq2v8QO7opCqvu4BOZL0t8M_s8o79sqqBp7B3w_gp1pngY1J2hguzDhBwLi3mwehTjdO_Gfp62V-r1VMaoL4g2zpLgdq=w640-h360&quot; width=&quot;640&quot; /&gt;
&lt;/p&gt;

&lt;h1&gt;How to Install ESP-IDF 5.3 on Windows (PowerShell &amp;amp; CMD Guide)&lt;/h1&gt;

&lt;p&gt;If you&#39;re serious about building professional IoT products using ESP32, then &lt;b&gt;ESP-IDF&lt;/b&gt; is the official framework you need to learn.&lt;/p&gt;

&lt;p&gt;Unlike Arduino IDE, ESP-IDF gives you full control over hardware, performance, and memory optimization — making it the preferred choice for commercial and production-grade projects.&lt;/p&gt;&lt;p&gt;In this step-by-step guide, you&#39;ll learn how to &lt;b&gt;install ESP-IDF 5.3 on Windows using PowerShell and Command Prompt (CMD)&lt;/b&gt;.&lt;/p&gt;&lt;h2&gt;🚀 What is ESP-IDF?&lt;/h2&gt;

&lt;p&gt;&lt;b&gt;ESP-IDF (Espressif IoT Development Framework)&lt;/b&gt; is the official development framework from Espressif for:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;ESP32&lt;/li&gt;
  &lt;li&gt;ESP32-S2&lt;/li&gt;
  &lt;li&gt;ESP32-S3&lt;/li&gt;
  &lt;li&gt;ESP32-C3&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It includes:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;FreeRTOS-based system&lt;/li&gt;
  &lt;li&gt;Built-in WiFi &amp;amp; Bluetooth stack&lt;/li&gt;
  &lt;li&gt;Peripheral drivers (GPIO, UART, SPI, I2C, etc.)&lt;/li&gt;
  &lt;li&gt;CMake-based build system&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;b&gt;👉 Perfect for real-world IoT projects&lt;/b&gt; like smart laundry systems, automation, and payment devices.&lt;/p&gt;&lt;h2&gt;🧰 System Requirements&lt;/h2&gt;

&lt;p&gt;Before installing ESP-IDF 5.3, make sure your system meets these requirements:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Windows 10 / 11 (64-bit)&lt;/li&gt;
  &lt;li&gt;Stable internet connection&lt;/li&gt;
  &lt;li&gt;Minimum 10 GB free storage&lt;/li&gt;&lt;li&gt;Python (installed automatically)&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;📥 Step 1 — Download ESP-IDF Installer&lt;/h2&gt;

&lt;p&gt;Go to the official Espressif website and download:&lt;/p&gt;

&lt;p&gt;&lt;b&gt;👉 ESP-IDF Tools Installer for Windows&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Example file:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;esp-idf-tools-setup-2.x.exe&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;⚙️ Step 2 — Run the Installer&lt;/h2&gt;

&lt;ol&gt;
  &lt;li&gt;Double-click the installer&lt;/li&gt;
  &lt;li&gt;Select:
    &lt;ul&gt;
      &lt;li&gt;✔ ESP-IDF version: &lt;b&gt;v5.3&lt;/b&gt;&lt;/li&gt;
      &lt;li&gt;✔ Install Tools&lt;/li&gt;
      &lt;li&gt;✔ Install Python environment&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Click &lt;b&gt;Next → Install&lt;/b&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;⏳ Installation may take 10–30 minutes depending on your internet speed.&lt;/p&gt;&lt;h2&gt;💻 Step 3 — Open ESP-IDF Environment&lt;/h2&gt;

&lt;p&gt;After installation, you will find:&lt;/p&gt;

&lt;h3&gt;Option 1 — ESP-IDF PowerShell (Recommended)&lt;/h3&gt;
&lt;h3&gt;Option 2 — ESP-IDF Command Prompt (CMD)&lt;/h3&gt;

&lt;p&gt;Open from Start Menu:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;ESP-IDF 5.3 PowerShell&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;or&lt;/p&gt;&lt;pre&gt;&lt;code&gt;ESP-IDF 5.3 CMD&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;🔍 Step 4 — Verify Installation&lt;/h2&gt;

&lt;p&gt;Run this command:&lt;/p&gt;

&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;idf.py --version&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;If successful, output should be:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;ESP-IDF v5.3&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;⚠️ Common Beginner Mistakes&lt;/h2&gt;

&lt;h3&gt;❌ Running in Normal CMD / PowerShell&lt;/h3&gt;
&lt;p&gt;ESP-IDF will NOT work in standard terminal.&lt;/p&gt;

&lt;p&gt;✔ Always use:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;ESP-IDF PowerShell&lt;/li&gt;
  &lt;li&gt;ESP-IDF CMD&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;❌ &#39;idf.py not recognized&#39; Error&lt;/h3&gt;
&lt;p&gt;This happens when environment variables are not loaded.&lt;/p&gt;

&lt;p&gt;✔ Fix:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;export.bat&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;❌ Python Conflict&lt;/h3&gt;
&lt;p&gt;ESP-IDF uses its own Python environment.&lt;/p&gt;

&lt;p&gt;✔ Avoid mixing with:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;System Python&lt;/li&gt;&lt;li&gt;Anaconda&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;🧠 PowerShell vs CMD (Which One Should You Use?)&lt;/h2&gt;

&lt;table border=&quot;1&quot; cellpadding=&quot;8&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
  &lt;th&gt;Feature&lt;/th&gt;
  &lt;th&gt;PowerShell&lt;/th&gt;
  &lt;th&gt;CMD&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
  &lt;td&gt;Modern shell&lt;/td&gt;
  &lt;td&gt;✅ Yes&lt;/td&gt;
  &lt;td&gt;❌ No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;Compatibility&lt;/td&gt;
  &lt;td&gt;✅ High&lt;/td&gt;
  &lt;td&gt;✅ High&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;Recommended&lt;/td&gt;
  &lt;td&gt;⭐ Yes&lt;/td&gt;
  &lt;td&gt;✔ Optional&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;p&gt;&lt;b&gt;👉 Recommendation: Use PowerShell&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;img alt=&quot;&quot; height=&quot;406&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiwL0kprrDtUCZHaXSZgacPLkfjTcLHaEcLSiSNBvq49OsjGbEya0RxPosEbMOUbqHQvXKqkiL8kva87fYApHZ3zxVUloBPIlI16REO78Yj_jzy2SgfCc4ioV8TWc8yUoBbCvE_VByJnH4IRyQN6Ar8QYFKOu0OTkOU66cS4fJaXbmhzJDDQbg5xM03exUm=w640-h406&quot; width=&quot;640&quot; /&gt;&amp;nbsp;&lt;/b&gt;&lt;/p&gt;&lt;h2&gt;🔥 Pro Tips&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Stick to one ESP-IDF version per project&lt;/li&gt;
  &lt;li&gt;Avoid random updates&lt;/li&gt;&lt;li&gt;Use stable version like &lt;b&gt;v5.3&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;📌 Conclusion&lt;/h2&gt;

&lt;p&gt;Installing ESP-IDF 5.3 on Windows is straightforward if you follow the correct steps.&lt;/p&gt;

&lt;p&gt;Once installed, you’re ready to build powerful and scalable IoT applications using ESP32.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Next step:&lt;/b&gt; Learn how to create your first ESP-IDF project 🚀&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.carapaklek.com/feeds/4960161020178835379/comments/default' title='Posting Komentar'/><link rel='replies' type='text/html' href='https://www.carapaklek.com/2026/04/how-to-install-esp-idf-53-on-windows.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/2093917475945207513/posts/default/4960161020178835379'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/2093917475945207513/posts/default/4960161020178835379'/><link rel='alternate' type='text/html' href='https://www.carapaklek.com/2026/04/how-to-install-esp-idf-53-on-windows.html' title='How to Install ESP-IDF 5.3 on Windows (PowerShell &amp; CMD) – Complete Beginner Guide'/><author><name>carapaklek.com</name><uri>http://www.blogger.com/profile/12438575085929354819</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj84wNpqEWz7nUZmjNjPBarFLyRAZARNpnydt-LYU_GZhXNGZFUplzpWB82bcX7camGkjKhQ-KGgMvx5RMUkIl4gkJvWLq8dlBfnRdA_lNZPKfK8QjiWqasrUvzS15za_c0-zdUM_aAJ39EGM5XGzVoH0xzAg-7mAIwM90m4_AE9y7kgQ/s220/webcamp.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEiuS1Lxoi3M9kn1WdFcEE08A1UE9LdEG9Io2pAS6JcI_lajHzu15RS9Aayq92pdIBJIlYweONSmkPFP1scd-XDJkv2XmT59TOn_Jq2v8QO7opCqvu4BOZL0t8M_s8o79sqqBp7B3w_gp1pngY1J2hguzDhBwLi3mwehTjdO_Gfp62V-r1VMaoL4g2zpLgdq=s72-w640-h360-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2093917475945207513.post-400450079926170784</id><published>2026-03-20T06:00:00.001+07:00</published><updated>2026-03-20T06:00:10.947+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Arduino"/><category scheme="http://www.blogger.com/atom/ns#" term="esspressif"/><category scheme="http://www.blogger.com/atom/ns#" term="Teknologi"/><title type='text'>Cara Mengaktifkan Bluetooth ESP32 dengan ESP-IDF (Lengkap untuk Pemula)</title><content type='html'>&lt;h1&gt;&lt;/h1&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLrIJW_emx5x2YJqmctuCHIjYDk3QLPCKPt0g5tIjzfEZQUNSOlH47jSJihjDqE0a817xr7RJcQ6ucBtqp3AKpt6mXq5V81sk3xHCUm2j4mcQsR1AF6IyMJ2qFKeoSZSLap39YP8i2YSpBiunu2ajo2ybPW7fSK4VgTmW7wyDHdwmjr4Mck_KxK8Kl57oZ/s1280/esp32d.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;720&quot; data-original-width=&quot;1280&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLrIJW_emx5x2YJqmctuCHIjYDk3QLPCKPt0g5tIjzfEZQUNSOlH47jSJihjDqE0a817xr7RJcQ6ucBtqp3AKpt6mXq5V81sk3xHCUm2j4mcQsR1AF6IyMJ2qFKeoSZSLap39YP8i2YSpBiunu2ajo2ybPW7fSK4VgTmW7wyDHdwmjr4Mck_KxK8Kl57oZ/w640-h360/esp32d.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Bluetooth pada ESP32 merupakan salah satu fitur unggulan yang sangat powerful untuk berbagai kebutuhan proyek IoT, termasuk sistem kontrol, monitoring, hingga integrasi dengan smartphone. Jika kamu sedang belajar menggunakan ESP-IDF, memahami cara mengaktifkan Bluetooth adalah langkah penting yang wajib dikuasai.&lt;/p&gt;

&lt;p&gt;Pada artikel ini, kita akan membahas secara lengkap dan mendalam tentang cara mengaktifkan Bluetooth ESP32 menggunakan ESP-IDF, mulai dari konsep dasar hingga implementasi langsung. Artikel ini dibuat khusus untuk pemula, jadi kamu tidak perlu khawatir jika belum pernah menggunakan ESP-IDF sebelumnya.&lt;/p&gt;

&lt;!--TOC--&gt;
&lt;div style=&quot;background: rgb(245, 247, 250); border-radius: 10px; border: 1px solid rgb(224, 230, 237); margin-bottom: 25px; padding: 20px;&quot;&gt;
  &lt;h3 style=&quot;margin-top: 0px;&quot;&gt;Table of Contents&lt;/h3&gt;
  &lt;ul style=&quot;line-height: 1.8; list-style: none; padding-left: 0px;&quot;&gt;
    &lt;li&gt;&lt;a href=&quot;#pengertian&quot; style=&quot;text-decoration: none;&quot;&gt;1. Pengertian Bluetooth pada ESP32&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#jenis&quot; style=&quot;text-decoration: none;&quot;&gt;2. Jenis Bluetooth di ESP32&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#kelebihan&quot; style=&quot;text-decoration: none;&quot;&gt;3. Kelebihan Bluetooth ESP32&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#persiapan&quot; style=&quot;text-decoration: none;&quot;&gt;4. Persiapan Sebelum Memulai&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#install&quot; style=&quot;text-decoration: none;&quot;&gt;5. Instalasi ESP-IDF&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#struktur&quot; style=&quot;text-decoration: none;&quot;&gt;6. Struktur Project ESP-IDF&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#aktifkan&quot; style=&quot;text-decoration: none;&quot;&gt;7. Cara Mengaktifkan Bluetooth&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#penjelasan&quot; style=&quot;text-decoration: none;&quot;&gt;8. Penjelasan Kode Program&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#contoh&quot; style=&quot;text-decoration: none;&quot;&gt;9. Contoh Program BLE&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#build&quot; style=&quot;text-decoration: none;&quot;&gt;10. Build &amp;amp; Upload Program&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#testing&quot; style=&quot;text-decoration: none;&quot;&gt;11. Testing Bluetooth&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#studi&quot; style=&quot;text-decoration: none;&quot;&gt;12. Studi Kasus&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#tips&quot; style=&quot;text-decoration: none;&quot;&gt;13. Tips Optimasi&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#troubleshoot&quot; style=&quot;text-decoration: none;&quot;&gt;14. Troubleshooting&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;#kesimpulan&quot; style=&quot;text-decoration: none;&quot;&gt;15. Kesimpulan&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;h2 id=&quot;pengertian&quot;&gt;1. Pengertian Bluetooth pada ESP32&lt;/h2&gt;
&lt;p&gt;ESP32 adalah mikrokontroler yang sudah dilengkapi dengan fitur WiFi dan Bluetooth dalam satu chip. Dengan adanya fitur ini, kamu tidak perlu lagi menambahkan modul tambahan untuk komunikasi nirkabel.&lt;/p&gt;&lt;p&gt;Bluetooth memungkinkan ESP32 berkomunikasi langsung dengan smartphone atau perangkat lain tanpa internet. Ini sangat cocok untuk sistem offline seperti kontrol alat, monitoring, dan automation.&lt;/p&gt;&lt;h2 id=&quot;jenis&quot;&gt;2. Jenis Bluetooth di ESP32&lt;/h2&gt;

&lt;h3&gt;🔵 Bluetooth Classic&lt;/h3&gt;
&lt;p&gt;Digunakan untuk transfer data besar dan komunikasi serial (SPP).&lt;/p&gt;

&lt;h3&gt;🟢 Bluetooth Low Energy (BLE)&lt;/h3&gt;
&lt;p&gt;BLE lebih hemat daya dan cocok untuk IoT seperti sensor dan monitoring.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Tips:&lt;/b&gt; Gunakan BLE untuk project modern karena lebih efisien.&lt;/p&gt;&lt;h2 id=&quot;kelebihan&quot;&gt;3. Kelebihan Bluetooth ESP32&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Tidak membutuhkan internet&lt;/li&gt;
&lt;li&gt;Hemat daya (BLE)&lt;/li&gt;
&lt;li&gt;Stabil dan cepat&lt;/li&gt;
&lt;li&gt;Mudah terhubung ke smartphone&lt;/li&gt;&lt;li&gt;Tidak perlu modul tambahan&lt;/li&gt;&lt;/ul&gt;&lt;h2 id=&quot;persiapan&quot;&gt;4. Persiapan Sebelum Memulai&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Board ESP32&lt;/li&gt;
&lt;li&gt;Kabel USB&lt;/li&gt;
&lt;li&gt;PC/Laptop&lt;/li&gt;&lt;li&gt;ESP-IDF sudah terinstall&lt;/li&gt;&lt;/ul&gt;&lt;h2 id=&quot;install&quot;&gt;5. Instalasi ESP-IDF&lt;/h2&gt;

&lt;pre style=&quot;background: rgb(17, 17, 17); border-radius: 8px; color: lime; padding: 15px;&quot;&gt;git clone https://github.com/espressif/esp-idf.git
cd esp-idf
install.bat
&lt;/pre&gt;

&lt;pre style=&quot;background: rgb(17, 17, 17); border-radius: 8px; color: lime; padding: 15px;&quot;&gt;export.bat&lt;/pre&gt;&lt;h2 id=&quot;struktur&quot;&gt;6. Struktur Project ESP-IDF&lt;/h2&gt;

&lt;pre style=&quot;background: rgb(34, 34, 34); border-radius: 8px; color: white; padding: 15px;&quot;&gt;project/
├── main/
│   └── main.c
├── CMakeLists.txt
└── sdkconfig&lt;/pre&gt;&lt;h2 id=&quot;aktifkan&quot;&gt;7. Cara Mengaktifkan Bluetooth ESP32&lt;/h2&gt;

&lt;h3&gt;Step 1: Menuconfig&lt;/h3&gt;
&lt;pre style=&quot;background: rgb(17, 17, 17); border-radius: 8px; color: lime; padding: 15px;&quot;&gt;idf.py menuconfig
&lt;/pre&gt;

&lt;p&gt;Masuk ke: Component config → Bluetooth&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgZgnwXiynzkruu1tOIE5dfN2TY8JB5awmb0S2P3J_q8deGKd-4wj-2xFeCkb12ArMiIcGB4Tkt4r5S96gXOmDPP9T3sug1szuiDFOmcZz8Z9AhJe_ayq5lB4StGOxf0n775nvLqwW_PJ5D4dATp9YkXBlaESh3x2dBHn08t2A6LXoY5mJAhs6fMHxa5S8F&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;358&quot; data-original-width=&quot;654&quot; height=&quot;350&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgZgnwXiynzkruu1tOIE5dfN2TY8JB5awmb0S2P3J_q8deGKd-4wj-2xFeCkb12ArMiIcGB4Tkt4r5S96gXOmDPP9T3sug1szuiDFOmcZz8Z9AhJe_ayq5lB4StGOxf0n775nvLqwW_PJ5D4dATp9YkXBlaESh3x2dBHn08t2A6LXoY5mJAhs6fMHxa5S8F=w640-h350&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjjUTBi_1uym1VSE78B3r0nr9Iw30ueRCSAmdER6kIssE5GoEdlD3XRbWT59k-TjkLDoNSBHY_42jSMESLcE17nW7AYAH9ssInqJDWbPCKnh78zeOPDUo7tpOBPmXWPaQmKwhhPsiOBnnuLw5okYh0Y6O-iASpRba9oDRuxvrRJYo1-2bmwz-CQepTTEXdI&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;1038&quot; data-original-width=&quot;1309&quot; height=&quot;507&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjjUTBi_1uym1VSE78B3r0nr9Iw30ueRCSAmdER6kIssE5GoEdlD3XRbWT59k-TjkLDoNSBHY_42jSMESLcE17nW7AYAH9ssInqJDWbPCKnh78zeOPDUo7tpOBPmXWPaQmKwhhPsiOBnnuLw5okYh0Y6O-iASpRba9oDRuxvrRJYo1-2bmwz-CQepTTEXdI=w640-h507&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;

&lt;h3&gt;Step 2: Inisialisasi&lt;/h3&gt;
&lt;pre style=&quot;background: rgb(30, 30, 30); border-radius: 8px; color: #00ffcc; padding: 15px;&quot;&gt;#include &quot;esp_bt.h&quot;
#include &quot;esp_bt_main.h&quot;

void app_main(void)
{
    esp_bt_controller_config_t bt_cfg = BT_CONTROLLER_INIT_CONFIG_DEFAULT();

    esp_bt_controller_init(&amp;amp;bt_cfg);
    esp_bt_controller_enable(ESP_BT_MODE_BLE);

    esp_bluedroid_init();
    esp_bluedroid_enable();
}&lt;/pre&gt;&lt;h2 id=&quot;penjelasan&quot;&gt;8. Penjelasan Kode Program&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;esp_bt_controller_init() → Inisialisasi controller&lt;/li&gt;
&lt;li&gt;esp_bt_controller_enable() → Aktifkan BLE&lt;/li&gt;
&lt;li&gt;esp_bluedroid_init() → Init stack&lt;/li&gt;&lt;li&gt;esp_bluedroid_enable() → Aktifkan Bluetooth&lt;/li&gt;&lt;/ul&gt;&lt;h2 id=&quot;contoh&quot;&gt;9. Contoh Program BLE&lt;/h2&gt;

&lt;pre style=&quot;background: rgb(0, 0, 0); border-radius: 8px; color: lime; padding: 15px;&quot;&gt;#include &lt;stdio .h=&quot;&quot;&gt;
#include &quot;esp_bt.h&quot;
#include &quot;esp_bt_main.h&quot;

void app_main(void)
{
    esp_bt_controller_config_t bt_cfg = BT_CONTROLLER_INIT_CONFIG_DEFAULT();

    esp_bt_controller_init(&amp;amp;bt_cfg);
    esp_bt_controller_enable(ESP_BT_MODE_BLE);

    esp_bluedroid_init();
    esp_bluedroid_enable();

    printf(&quot;Bluetooth BLE Aktif!\n&quot;);
}&lt;/stdio&gt;&lt;/pre&gt;&lt;h2 id=&quot;build&quot;&gt;10. Build &amp;amp; Upload Program&lt;/h2&gt;

&lt;pre style=&quot;background: rgb(17, 17, 17); border-radius: 8px; color: lime; padding: 15px;&quot;&gt;idf.py build
idf.py flash
idf.py monitor&lt;/pre&gt;&lt;h2 id=&quot;testing&quot;&gt;11. Testing Bluetooth&lt;/h2&gt;&lt;p&gt;Gunakan aplikasi seperti nRF Connect atau LightBlue untuk scan device ESP32.&lt;/p&gt;&lt;h2 id=&quot;studi&quot;&gt;12. Studi Kasus&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Kontrol relay via HP&lt;/li&gt;
&lt;li&gt;Monitoring sensor&lt;/li&gt;&lt;li&gt;Sistem laundry coin&lt;/li&gt;&lt;/ul&gt;&lt;h2 id=&quot;tips&quot;&gt;13. Tips Optimasi&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Gunakan BLE untuk hemat daya&lt;/li&gt;
&lt;li&gt;Matikan jika tidak digunakan&lt;/li&gt;&lt;li&gt;Gunakan deep sleep&lt;/li&gt;&lt;/ul&gt;&lt;h2 id=&quot;troubleshoot&quot;&gt;14. Troubleshooting&lt;/h2&gt;
&lt;p&gt;&lt;b&gt;Bluetooth tidak muncul:&lt;/b&gt; cek menuconfig&lt;/p&gt;&lt;p&gt;&lt;b&gt;ESP32 restart:&lt;/b&gt; cek power supply&lt;/p&gt;&lt;h2 id=&quot;kesimpulan&quot;&gt;15. Kesimpulan&lt;/h2&gt;&lt;p&gt;Mengaktifkan Bluetooth ESP32 dengan ESP-IDF cukup mudah jika mengikuti langkah yang benar. Dengan dasar ini, kamu bisa membuat berbagai proyek IoT lanjutan seperti smart home, monitoring, dan sistem otomatis lainnya.&lt;/p&gt;&lt;h2&gt;🎯 Penutup&lt;/h2&gt;
&lt;p&gt;Semoga tutorial ini membantu kamu memahami dasar Bluetooth ESP32. Jangan ragu untuk mencoba dan eksplorasi lebih lanjut.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.carapaklek.com/feeds/400450079926170784/comments/default' title='Posting Komentar'/><link rel='replies' type='text/html' href='https://www.carapaklek.com/2026/03/cara-mengaktifkan-bluetooth-esp32.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/2093917475945207513/posts/default/400450079926170784'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/2093917475945207513/posts/default/400450079926170784'/><link rel='alternate' type='text/html' href='https://www.carapaklek.com/2026/03/cara-mengaktifkan-bluetooth-esp32.html' title='Cara Mengaktifkan Bluetooth ESP32 dengan ESP-IDF (Lengkap untuk Pemula)'/><author><name>carapaklek.com</name><uri>http://www.blogger.com/profile/12438575085929354819</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj84wNpqEWz7nUZmjNjPBarFLyRAZARNpnydt-LYU_GZhXNGZFUplzpWB82bcX7camGkjKhQ-KGgMvx5RMUkIl4gkJvWLq8dlBfnRdA_lNZPKfK8QjiWqasrUvzS15za_c0-zdUM_aAJ39EGM5XGzVoH0xzAg-7mAIwM90m4_AE9y7kgQ/s220/webcamp.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLrIJW_emx5x2YJqmctuCHIjYDk3QLPCKPt0g5tIjzfEZQUNSOlH47jSJihjDqE0a817xr7RJcQ6ucBtqp3AKpt6mXq5V81sk3xHCUm2j4mcQsR1AF6IyMJ2qFKeoSZSLap39YP8i2YSpBiunu2ajo2ybPW7fSK4VgTmW7wyDHdwmjr4Mck_KxK8Kl57oZ/s72-w640-h360-c/esp32d.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2093917475945207513.post-4214437188648077353</id><published>2026-02-14T21:31:00.008+07:00</published><updated>2026-02-14T21:36:20.977+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Arduino"/><category scheme="http://www.blogger.com/atom/ns#" term="esspressif"/><category scheme="http://www.blogger.com/atom/ns#" term="Teknologi"/><title type='text'>ESP-IDF LVGL Error: build/config/sdkconfig.h:939:39 expected identifier before string constant (CONFIG_LV_FONT_CUSTOM_DECLARE)</title><content type='html'>&lt;div style=&quot;background: rgb(245, 247, 250); border-radius: 10px; border: 1px solid rgb(224, 230, 237); margin-bottom: 25px; padding: 20px;&quot;&gt;
  &lt;h3 style=&quot;margin-top: 0px;&quot;&gt;📚 Table of Contents&lt;/h3&gt;
  &lt;ul style=&quot;line-height: 1.8; list-style: none; padding-left: 0px;&quot;&gt;
    &lt;li&gt;&lt;a href=&quot;#step1&quot; style=&quot;text-decoration: none;&quot;&gt;1️⃣ Open ESP-IDF PowerShell&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#step2&quot; style=&quot;text-decoration: none;&quot;&gt;2️⃣ Navigate to Project Directory&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#step3&quot; style=&quot;text-decoration: none;&quot;&gt;3️⃣ Run menuconfig&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#step4&quot; style=&quot;text-decoration: none;&quot;&gt;4️⃣ Enter Component Config&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#step5&quot; style=&quot;text-decoration: none;&quot;&gt;5️⃣ Open LVGL Configuration&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#step6&quot; style=&quot;text-decoration: none;&quot;&gt;6️⃣ Go to Font Usage&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#step7&quot; style=&quot;text-decoration: none;&quot;&gt;7️⃣ Disable Custom Font&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#step8&quot; style=&quot;text-decoration: none;&quot;&gt;8️⃣ Save Configuration&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#step9&quot; style=&quot;text-decoration: none;&quot;&gt;9️⃣ Clean and Rebuild&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
&lt;/div&gt;

&lt;h1&gt;&lt;/h1&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;If you are seeing this error after exporting your UI from SquareLine Studio and rebuilding your project in ESP-IDF v5.x, you are not alone.&lt;/p&gt;

&lt;p&gt;The build suddenly fails with something like:&lt;/p&gt;

&lt;pre style=&quot;background-color: #2d2d2d; border-left: 5px solid rgb(0, 122, 204); border-radius: 8px; color: #f8f8f2; font-family: &amp;quot;Courier New&amp;quot;, monospace; overflow-x: auto; padding: 15px;&quot;&gt;build/config/sdkconfig.h:939:39: error: expected identifier or &#39;(&#39; before string constant
#define CONFIG_LV_FONT_CUSTOM_DECLARE &quot;&quot;
&lt;/pre&gt;

&lt;p&gt;Sometimes the error trace continues into internal LVGL files such as:&lt;/p&gt;

&lt;pre style=&quot;background-color: #2d2d2d; border-left: 5px solid rgb(0, 122, 204); border-radius: 8px; color: #f8f8f2; font-family: &amp;quot;Courier New&amp;quot;, monospace; overflow-x: auto; padding: 15px;&quot;&gt;lv_disp.c
&lt;/pre&gt;&lt;p&gt;The confusing part? You never modified those files.&lt;/p&gt;&lt;h2&gt;Why This Error Is So Confusing&lt;/h2&gt;

&lt;p&gt;The compiler points to:&lt;/p&gt;

&lt;pre style=&quot;background-color: #2d2d2d; border-left: 5px solid rgb(0, 122, 204); border-radius: 8px; color: #f8f8f2; font-family: &amp;quot;Courier New&amp;quot;, monospace; overflow-x: auto; padding: 15px;&quot;&gt;build/config/sdkconfig.h
&lt;/pre&gt;

&lt;p&gt;Or even deeper inside:&lt;/p&gt;

&lt;pre style=&quot;background-color: #2d2d2d; border-left: 5px solid rgb(0, 122, 204); border-radius: 8px; color: #f8f8f2; font-family: &amp;quot;Courier New&amp;quot;, monospace; overflow-x: auto; padding: 15px;&quot;&gt;components/lvgl__lvgl/src/core/lv_disp.c
&lt;/pre&gt;

&lt;p&gt;But remember:&lt;/p&gt;&lt;p&gt;&lt;b&gt;Error location does not always mean root cause.&lt;/b&gt;&lt;/p&gt;&lt;h2&gt;Understanding LVGL Configuration in ESP-IDF v5.x&lt;/h2&gt;

&lt;p&gt;When LVGL is integrated as a component in ESP-IDF, configuration is handled via Kconfig.&lt;/p&gt;

&lt;p&gt;You configure it using:&lt;/p&gt;

&lt;pre style=&quot;background-color: #2d2d2d; border-left: 5px solid rgb(0, 122, 204); border-radius: 8px; color: #f8f8f2; font-family: &amp;quot;Courier New&amp;quot;, monospace; overflow-x: auto; padding: 15px;&quot;&gt;idf.py menuconfig
&lt;/pre&gt;

&lt;p&gt;The settings are stored in:&lt;/p&gt;

&lt;pre style=&quot;background-color: #2d2d2d; border-left: 5px solid rgb(0, 122, 204); border-radius: 8px; color: #f8f8f2; font-family: &amp;quot;Courier New&amp;quot;, monospace; overflow-x: auto; padding: 15px;&quot;&gt;sdkconfig
&lt;/pre&gt;

&lt;p&gt;And macros are auto-generated into:&lt;/p&gt;

&lt;pre style=&quot;background-color: #2d2d2d; border-left: 5px solid rgb(0, 122, 204); border-radius: 8px; color: #f8f8f2; font-family: &amp;quot;Courier New&amp;quot;, monospace; overflow-x: auto; padding: 15px;&quot;&gt;sdkconfig.h
&lt;/pre&gt;&lt;p&gt;In ESP-IDF integration, Kconfig overrides &lt;code&gt;lv_conf.h&lt;/code&gt;.&lt;/p&gt;&lt;h2&gt;Root Cause Analysis&lt;/h2&gt;

&lt;p&gt;This is the problematic macro:&lt;/p&gt;

&lt;pre style=&quot;background-color: #2d2d2d; border-left: 5px solid rgb(0, 122, 204); border-radius: 8px; color: #f8f8f2; font-family: &amp;quot;Courier New&amp;quot;, monospace; overflow-x: auto; padding: 15px;&quot;&gt;#define CONFIG_LV_FONT_CUSTOM_DECLARE &quot;&quot;
&lt;/pre&gt;

&lt;p&gt;Inside LVGL internal config:&lt;/p&gt;

&lt;pre style=&quot;background-color: #2d2d2d; border-left: 5px solid rgb(0, 122, 204); border-radius: 8px; color: #f8f8f2; font-family: &amp;quot;Courier New&amp;quot;, monospace; overflow-x: auto; padding: 15px;&quot;&gt;#define LV_FONT_CUSTOM_DECLARE CONFIG_LV_FONT_CUSTOM_DECLARE
&lt;/pre&gt;

&lt;p&gt;After macro expansion, the compiler effectively sees:&lt;/p&gt;

&lt;pre style=&quot;background-color: #2d2d2d; border-left: 5px solid rgb(0, 122, 204); border-radius: 8px; color: #f8f8f2; font-family: &amp;quot;Courier New&amp;quot;, monospace; overflow-x: auto; padding: 15px;&quot;&gt;#define LV_FONT_CUSTOM_DECLARE &quot;&quot;
&lt;/pre&gt;

&lt;p&gt;But LVGL expects something like:&lt;/p&gt;

&lt;pre style=&quot;background-color: #2d2d2d; border-left: 5px solid rgb(0, 122, 204); border-radius: 8px; color: #f8f8f2; font-family: &amp;quot;Courier New&amp;quot;, monospace; overflow-x: auto; padding: 15px;&quot;&gt;extern lv_font_t ui_font_MyFont;
&lt;/pre&gt;&lt;p&gt;A string literal is not a valid C declaration — therefore the compiler throws the error.&lt;/p&gt;&lt;h2&gt;Proper Fix (Recommended)&lt;/h2&gt;

&lt;p&gt;Run:&lt;/p&gt;

&lt;pre style=&quot;background-color: #2d2d2d; border-left: 5px solid rgb(0, 122, 204); border-radius: 8px; color: #f8f8f2; font-family: &amp;quot;Courier New&amp;quot;, monospace; overflow-x: auto; padding: 15px;&quot;&gt;idf.py menuconfig
&lt;/pre&gt;

&lt;p&gt;Navigate to:&lt;/p&gt;

&lt;pre style=&quot;background-color: #2d2d2d; border-left: 5px solid rgb(0, 122, 204); border-radius: 8px; color: #f8f8f2; font-family: &amp;quot;Courier New&amp;quot;, monospace; overflow-x: auto; padding: 15px;&quot;&gt;Component config
→ LVGL configuration
→ Custom font declaration
&lt;/pre&gt;

&lt;p&gt;If unused, disable it.&lt;/p&gt;

&lt;p&gt;Then clean and rebuild:&lt;/p&gt;&lt;pre style=&quot;background-color: #2d2d2d; border-left: 5px solid rgb(0, 122, 204); border-radius: 8px; color: #f8f8f2; font-family: &amp;quot;Courier New&amp;quot;, monospace; overflow-x: auto; padding: 15px;&quot;&gt;idf.py fullclean
idf.py build&lt;/pre&gt;&lt;h2&gt;Quick Debug Fix (Temporary)&lt;/h2&gt;

&lt;p&gt;Edit:&lt;/p&gt;

&lt;pre style=&quot;background-color: #2d2d2d; border-left: 5px solid rgb(0, 122, 204); border-radius: 8px; color: #f8f8f2; font-family: &amp;quot;Courier New&amp;quot;, monospace; overflow-x: auto; padding: 15px;&quot;&gt;sdkconfig
&lt;/pre&gt;

&lt;p&gt;Change:&lt;/p&gt;

&lt;pre style=&quot;background-color: #2d2d2d; border-left: 5px solid rgb(0, 122, 204); border-radius: 8px; color: #f8f8f2; font-family: &amp;quot;Courier New&amp;quot;, monospace; overflow-x: auto; padding: 15px;&quot;&gt;CONFIG_LV_FONT_CUSTOM_DECLARE=&quot;&quot;
&lt;/pre&gt;

&lt;p&gt;To:&lt;/p&gt;

&lt;pre style=&quot;background-color: #2d2d2d; border-left: 5px solid rgb(0, 122, 204); border-radius: 8px; color: #f8f8f2; font-family: &amp;quot;Courier New&amp;quot;, monospace; overflow-x: auto; padding: 15px;&quot;&gt;# CONFIG_LV_FONT_CUSTOM_DECLARE is not set
&lt;/pre&gt;&lt;p&gt;Then rebuild.&lt;/p&gt;&lt;h2&gt;Key Takeaway&lt;/h2&gt;

&lt;p&gt;ESP-IDF is not Arduino.&lt;/p&gt;

&lt;p&gt;Configuration is controlled by Kconfig.&lt;/p&gt;

&lt;p&gt;Understanding how &lt;code&gt;sdkconfig&lt;/code&gt; generates macros can save hours of debugging.&lt;/p&gt;&lt;p&gt;&lt;b&gt;In embedded systems, fixing the error is easy. Understanding why it happens is what makes you an engineer.&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/p&gt;&lt;h2&gt;Fix CONFIG_LV_FONT_CUSTOM_DECLARE Error via ESP-IDF PowerShell (Step-by-Step)&lt;/h2&gt;

&lt;p&gt;If you are seeing this error:&lt;/p&gt;

&lt;pre style=&quot;background-color: #2d2d2d; border-left: 5px solid rgb(0, 122, 204); border-radius: 8px; color: #f8f8f2; font-family: &amp;quot;Courier New&amp;quot;, monospace; overflow-x: auto; padding: 15px;&quot;&gt;build/config/sdkconfig.h:939:39: error: expected identifier or &#39;(&#39; before string constant
#define CONFIG_LV_FONT_CUSTOM_DECLARE &quot;&quot;
&lt;/pre&gt;&lt;p&gt;The safest and most reliable way to fix it is through &lt;b&gt;ESP-IDF PowerShell&lt;/b&gt; using &lt;code&gt;menuconfig&lt;/code&gt;.&lt;/p&gt;&lt;h3 id=&quot;step1&quot;&gt;Step 1 — Open ESP-IDF PowerShell&lt;/h3&gt;

&lt;p&gt;Click the Start Menu and open:&lt;/p&gt;

&lt;pre style=&quot;background-color: #2d2d2d; border-left: 5px solid rgb(0, 122, 204); border-radius: 8px; color: #f8f8f2; font-family: &amp;quot;Courier New&amp;quot;, monospace; overflow-x: auto; padding: 15px;&quot;&gt;ESP-IDF 5.3 PowerShell
&lt;/pre&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEivUl5MPYAxFQ_ZzRU8Bz5KuW6oqAkWzuue4f_5zWhXiCDQdtiAxbxOrAexZz1WTs_Rxdhk9zep4pe0Outg2femHmfIrPYdl1vzb5YxkflYEZt79NzJ-REPrqPq9Cjz4gBd2t-J9eTtW9lp7oa-ruAUC2glf6XSkzs12dYyABgC1Yw-lEybduK4wC6Vc8nj&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;720&quot; data-original-width=&quot;1280&quot; height=&quot;225&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEivUl5MPYAxFQ_ZzRU8Bz5KuW6oqAkWzuue4f_5zWhXiCDQdtiAxbxOrAexZz1WTs_Rxdhk9zep4pe0Outg2femHmfIrPYdl1vzb5YxkflYEZt79NzJ-REPrqPq9Cjz4gBd2t-J9eTtW9lp7oa-ruAUC2glf6XSkzs12dYyABgC1Yw-lEybduK4wC6Vc8nj=w400-h225&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;h3 id=&quot;step2&quot;&gt;Step 2 — Navigate to Project Directory&lt;/h3&gt;

&lt;p&gt;Use the &lt;code&gt;cd&lt;/code&gt; command to open your project folder:&lt;/p&gt;

&lt;pre style=&quot;background-color: #2d2d2d; border-left: 5px solid rgb(0, 122, 204); border-radius: 8px; color: #f8f8f2; font-family: &amp;quot;Courier New&amp;quot;, monospace; overflow-x: auto; padding: 15px;&quot;&gt;cd C:\Users\arto\Desktop\keyboard_test\keyboard_test
&lt;/pre&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjYCaQbzPqWmeFTFLYH86KJkIZ9TRhG-X1iFOOzdqL6vTfF2fXYuF4L7UwMT3EsKz5T9bz3hVQLTv_osa-ZaJOmGnbbZPDRV4i81xCK-ZyNwSXdpc__KtBtuq1_ivlzM6T2QgYSkGDvxlh6HaYBk9s8SowgD6UyoCQa6EsH53-L-wgL2khnqt-1cIZYTIge&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;720&quot; data-original-width=&quot;1280&quot; height=&quot;225&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjYCaQbzPqWmeFTFLYH86KJkIZ9TRhG-X1iFOOzdqL6vTfF2fXYuF4L7UwMT3EsKz5T9bz3hVQLTv_osa-ZaJOmGnbbZPDRV4i81xCK-ZyNwSXdpc__KtBtuq1_ivlzM6T2QgYSkGDvxlh6HaYBk9s8SowgD6UyoCQa6EsH53-L-wgL2khnqt-1cIZYTIge=w400-h225&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;h3 id=&quot;step3&quot;&gt;Step 3 — Run menuconfig&lt;/h3&gt;
&lt;p&gt;Type the following command:&lt;/p&gt;

&lt;pre style=&quot;background-color: #2d2d2d; border-left: 5px solid rgb(0, 122, 204); border-radius: 8px; color: #f8f8f2; font-family: &amp;quot;Courier New&amp;quot;, monospace; overflow-x: auto; padding: 15px;&quot;&gt;idf.py menuconfig
&lt;/pre&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgrfNrIF5aBiKXYKuX6xxuiT44q5lDgt46NSLQvjHgygb5nq8XFHL76TMogDoMZ4N3kD01QFvnlgKL6gGfFPdRm_oOhtzK4ij0PRX1FVTARtelrljwly2uqHmz8SthvTt2Wjrw1upTNNxNpZwGMutnxR6xbK4C1tj_58xTrO_e2AmkzXHXKQ996PRLCj4c0&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;720&quot; data-original-width=&quot;1280&quot; height=&quot;225&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgrfNrIF5aBiKXYKuX6xxuiT44q5lDgt46NSLQvjHgygb5nq8XFHL76TMogDoMZ4N3kD01QFvnlgKL6gGfFPdRm_oOhtzK4ij0PRX1FVTARtelrljwly2uqHmz8SthvTt2Wjrw1upTNNxNpZwGMutnxR6xbK4C1tj_58xTrO_e2AmkzXHXKQ996PRLCj4c0=w400-h225&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;This will open the ESP-IDF configuration interface.&lt;/p&gt;&lt;h3 id=&quot;step4&quot;&gt;Step 4 — Enter Component Config&lt;/h3&gt;

&lt;p&gt;Inside the menu, select:&lt;/p&gt;

&lt;pre style=&quot;background-color: #2d2d2d; border-left: 5px solid rgb(0, 122, 204); border-radius: 8px; color: #f8f8f2; font-family: &amp;quot;Courier New&amp;quot;, monospace; overflow-x: auto; padding: 15px;&quot;&gt;Component config
&lt;/pre&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhqeIfHiUGaGQTH6RTjTGI5iU_bBKt5LkDdPxrvFBCW8qkyVCX88mEkyXJceMGuspagRcoJKj8ssgZnA7KLCRA3um57sZtkjjriLjCrsul9xfsYI0KFdDmXyB1R34PmgyGG3RtICUONMHad6RQzQiGhYlUXaz4H4i8n4zRjL0NHvhtpC2Nguanw0jhDXtt2&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;720&quot; data-original-width=&quot;1280&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhqeIfHiUGaGQTH6RTjTGI5iU_bBKt5LkDdPxrvFBCW8qkyVCX88mEkyXJceMGuspagRcoJKj8ssgZnA7KLCRA3um57sZtkjjriLjCrsul9xfsYI0KFdDmXyB1R34PmgyGG3RtICUONMHad6RQzQiGhYlUXaz4H4i8n4zRjL0NHvhtpC2Nguanw0jhDXtt2=w640-h360&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;Step 5 — Open LVGL Configuration&lt;/h4&gt;&lt;p&gt;Scroll down and choose:&lt;/p&gt;

&lt;pre style=&quot;background-color: #2d2d2d; border-left: 5px solid rgb(0, 122, 204); border-radius: 8px; color: #f8f8f2; font-family: &amp;quot;Courier New&amp;quot;, monospace; overflow-x: auto; padding: 15px;&quot;&gt;LVGL configuration
&lt;/pre&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjWKMM6K9zicpij9ovJncD0vi_SHGKR6WL1hmDpdmJT3cuCuenCgWoxiofWXfZcjCEXXOYZifX2lZ-ijiEpOEjq04QPHNSNq_mTlP7_RaQ-6rkS5lMDxLX3rGTGfYnFOpjSy_tI9rYNNR1ficYqDCvORN6TBxomnVLjg8xy_GVHuVFDKHmbyjmgJ_OQoput&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;720&quot; data-original-width=&quot;1280&quot; height=&quot;225&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjWKMM6K9zicpij9ovJncD0vi_SHGKR6WL1hmDpdmJT3cuCuenCgWoxiofWXfZcjCEXXOYZifX2lZ-ijiEpOEjq04QPHNSNq_mTlP7_RaQ-6rkS5lMDxLX3rGTGfYnFOpjSy_tI9rYNNR1ficYqDCvORN6TBxomnVLjg8xy_GVHuVFDKHmbyjmgJ_OQoput=w400-h225&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;h3 id=&quot;step6&quot;&gt;Step 6 — Go to Font Usage&lt;/h3&gt;

&lt;p&gt;Select:&lt;/p&gt;

&lt;pre style=&quot;background-color: #2d2d2d; border-left: 5px solid rgb(0, 122, 204); border-radius: 8px; color: #f8f8f2; font-family: &amp;quot;Courier New&amp;quot;, monospace; overflow-x: auto; padding: 15px;&quot;&gt;Font usage
&lt;/pre&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEixq-P9mKHSPrzB-gHYz6bFY6eOK9g08jCISDf1nseN9-1AIqDOP27RL0kSTreWV2gjXHeB1ibEEq-RM9Dn79mb_LoenWKxzDS4OsVo_jhRrCHy-mUVwTeuvj3-4aapTigs_08rb7UF4WRXAt-molz33mpGy5MnTf_BtEcj5RyfIZQyEI6djofhByeL-PX7&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;720&quot; data-original-width=&quot;1280&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEixq-P9mKHSPrzB-gHYz6bFY6eOK9g08jCISDf1nseN9-1AIqDOP27RL0kSTreWV2gjXHeB1ibEEq-RM9Dn79mb_LoenWKxzDS4OsVo_jhRrCHy-mUVwTeuvj3-4aapTigs_08rb7UF4WRXAt-molz33mpGy5MnTf_BtEcj5RyfIZQyEI6djofhByeL-PX7=w640-h360&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;h3 id=&quot;step7&quot;&gt;Step 7 — Disable Custom Font&lt;/h3&gt;

&lt;p&gt;Scroll down until you find:&lt;/p&gt;

&lt;pre style=&quot;background-color: #2d2d2d; border-left: 5px solid rgb(0, 122, 204); border-radius: 8px; color: #f8f8f2; font-family: &amp;quot;Courier New&amp;quot;, monospace; overflow-x: auto; padding: 15px;&quot;&gt;Enable the custom font
&lt;/pre&gt;

&lt;p&gt;Make sure it is &lt;b&gt;unchecked&lt;/b&gt;.&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhU43ZjK5wh_0wuzKdWxPoXh3jbr-IvJ_QJKKlh0dlJ5vRfICUMbnJnYVMKX9dkifKm3euWigBRx_3CXB-M7HTtAdS0MqaD4jeDwMMZ-MdOm1DjnL8KAi7pegnwozDtMOfzP4CgL2ZPvaNNYrg5inxYxKrX6CtbsQ4cQPgy0PnklD8BQWnpwU2MTxChcweR&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;720&quot; data-original-width=&quot;1280&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhU43ZjK5wh_0wuzKdWxPoXh3jbr-IvJ_QJKKlh0dlJ5vRfICUMbnJnYVMKX9dkifKm3euWigBRx_3CXB-M7HTtAdS0MqaD4jeDwMMZ-MdOm1DjnL8KAi7pegnwozDtMOfzP4CgL2ZPvaNNYrg5inxYxKrX6CtbsQ4cQPgy0PnklD8BQWnpwU2MTxChcweR=w640-h360&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;If this option is enabled, ESP-IDF generates:&lt;/p&gt;

&lt;pre style=&quot;background-color: #2d2d2d; border-left: 5px solid rgb(0, 122, 204); border-radius: 8px; color: #f8f8f2; font-family: &amp;quot;Courier New&amp;quot;, monospace; overflow-x: auto; padding: 15px;&quot;&gt;CONFIG_LV_FONT_CUSTOM_DECLARE=&quot;&quot;
&lt;/pre&gt;

&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEi9b_0zBWItDVM31KUUBhKGtzRqPzfTaI87_wR0XWmBhgs7IP6GtF2xNX2cZ356xogcHTlFJx9nE6tREunVj38aAejgIlb4GmqhJ_ni6oLt86AQqYsH2--XOtpsBdUiprqq8Or-QbPwiZQRGRWUeazoKJn-xUyWzKlsrjtcUWnquBPDpNHjmYFfc-vht5LN&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;720&quot; data-original-width=&quot;1280&quot; height=&quot;225&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEi9b_0zBWItDVM31KUUBhKGtzRqPzfTaI87_wR0XWmBhgs7IP6GtF2xNX2cZ356xogcHTlFJx9nE6tREunVj38aAejgIlb4GmqhJ_ni6oLt86AQqYsH2--XOtpsBdUiprqq8Or-QbPwiZQRGRWUeazoKJn-xUyWzKlsrjtcUWnquBPDpNHjmYFfc-vht5LN=w400-h225&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&lt;p&gt;&lt;/p&gt;&lt;p&gt;disable like this :&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgMyMZTuBsC0FYz9FLZ9GRxpiq1Y1VQq8VJNaqqoDYob1iKR_mKz4zBwf9sew-PClfw9SOEizy6gEkqdlPDpD3hh3UmnCLI9fxSvEJyvD0fdlekRUd3Iyg6HI_RBHFHYWemmacgauPNMmRw9X3wstN5HCFZ9uZI9xINMLhXfBb9lBl_3OZuib4GUH-qTYhs&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;720&quot; data-original-width=&quot;1280&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgMyMZTuBsC0FYz9FLZ9GRxpiq1Y1VQq8VJNaqqoDYob1iKR_mKz4zBwf9sew-PClfw9SOEizy6gEkqdlPDpD3hh3UmnCLI9fxSvEJyvD0fdlekRUd3Iyg6HI_RBHFHYWemmacgauPNMmRw9X3wstN5HCFZ9uZI9xINMLhXfBb9lBl_3OZuib4GUH-qTYhs=w640-h360&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;h3 id=&quot;step8&quot;&gt;Step 8 — Save Configuration&lt;/h3&gt;

&lt;p&gt;Press:&lt;/p&gt;

&lt;pre style=&quot;background-color: #2d2d2d; border-left: 5px solid rgb(0, 122, 204); border-radius: 8px; color: #f8f8f2; font-family: &amp;quot;Courier New&amp;quot;, monospace; overflow-x: auto; padding: 15px;&quot;&gt;S
&lt;/pre&gt;

&lt;p&gt;To save the configuration.&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEj8LWdcSJHQuf3trmgC3M91O-3fDB_2Ei0gvFnJBT7Difl_hKjFsxrJWWm8jyIOsxHE6OFH2OWzveC5BeDkr2BJVMDNAivQgBpOTFR21wSLgGWZo3BlFA7R0I2J59PSaV3FdE_5K3g2JN8Nj85EQSB6kit8MFeWS_Ih78KEIugWRr5ki37HyOLQ-tAQJlJF&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;720&quot; data-original-width=&quot;1280&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEj8LWdcSJHQuf3trmgC3M91O-3fDB_2Ei0gvFnJBT7Difl_hKjFsxrJWWm8jyIOsxHE6OFH2OWzveC5BeDkr2BJVMDNAivQgBpOTFR21wSLgGWZo3BlFA7R0I2J59PSaV3FdE_5K3g2JN8Nj85EQSB6kit8MFeWS_Ih78KEIugWRr5ki37HyOLQ-tAQJlJF=w640-h360&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Then exit menuconfig.&lt;/p&gt;&lt;h3 id=&quot;step9&quot;&gt;Step 9 — Clean and Rebuild&lt;/h3&gt;

&lt;p&gt;Run the following commands:&lt;/p&gt;&lt;pre style=&quot;background-color: #2d2d2d; border-left: 5px solid rgb(0, 122, 204); border-radius: 8px; color: #f8f8f2; font-family: &amp;quot;Courier New&amp;quot;, monospace; overflow-x: auto; padding: 15px;&quot;&gt;idf.py fullclean
idf.py build
&lt;/pre&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgNiwQANHPFVpeHJ_6mJ3xeqo5vktlaJ_yA8Y-5XBLeZNAasb3nc7pZgQyLv-ESkEzVVc8CbU7qso71iLzQkRfDlQ2TNkOlYXghzJYkhen5cgYAIfR8a-Mo9idSfDEL172zVPHyPPtqTLfHGUroRCZULpBxbRS-O4CeDbjX_kkZBrbULZqdgOpbw8Wh7NF7&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;720&quot; data-original-width=&quot;1280&quot; height=&quot;225&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgNiwQANHPFVpeHJ_6mJ3xeqo5vktlaJ_yA8Y-5XBLeZNAasb3nc7pZgQyLv-ESkEzVVc8CbU7qso71iLzQkRfDlQ2TNkOlYXghzJYkhen5cgYAIfR8a-Mo9idSfDEL172zVPHyPPtqTLfHGUroRCZULpBxbRS-O4CeDbjX_kkZBrbULZqdgOpbw8Wh7NF7=w400-h225&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;h3&gt;Why This Works&lt;/h3&gt;

&lt;p&gt;This error is caused by a Kconfig-generated macro:&lt;/p&gt;
&lt;script type=&quot;application/ld+json&quot;&gt;
{
  &quot;@context&quot;: &quot;https://schema.org&quot;,
  &quot;@type&quot;: &quot;TechArticle&quot;,
  &quot;headline&quot;: &quot;ESP-IDF LVGL Error: build/config/sdkconfig.h:939:39 expected identifier before string constant (CONFIG_LV_FONT_CUSTOM_DECLARE)&quot;,
  &quot;description&quot;: &quot;Fix for ESP-IDF LVGL error build/config/sdkconfig.h:939:39 expected identifier before string constant by disabling custom font using menuconfig step-by-step.&quot;,
  &quot;url&quot;: &quot;https://www.carapaklek.com/2026/02/esp-idf-lvgl-error-buildconfigsdkconfig.html&quot;,
  &quot;image&quot;: &quot;https://blogger.googleusercontent.com/img/a/AVvXsEj8LWdcSJHQuf3trmgC3M91O-3fDB_2Ei0gvFnJBT7Difl_hKjFsxrJWWm8jyIOsxHE6OFH2OWzveC5BeDkr2BJVMDNAivQgBpOTFR21wSLgGWZo3BlFA7R0I2J59PSaV3FdE_5K3g2JN8Nj85EQSB6kit8MFeWS_Ih78KEIugWRr5ki37HyOLQ-tAQJlJF&quot;,
  &quot;datePublished&quot;: &quot;2026-02-14&quot;,
  &quot;dateModified&quot;: &quot;2026-02-14&quot;,
  &quot;author&quot;: {
    &quot;@type&quot;: &quot;Person&quot;,
    &quot;name&quot;: &quot;Paklek&quot;
  },
  &quot;publisher&quot;: {
    &quot;@type&quot;: &quot;Organization&quot;,
    &quot;name&quot;: &quot;carapaklek.com&quot;,
    &quot;logo&quot;: {
      &quot;@type&quot;: &quot;ImageObject&quot;,
      &quot;url&quot;: &quot;https://blogger.googleusercontent.com/img/a/AVvXsEj8LWdcSJHQuf3trmgC3M91O-3fDB_2Ei0gvFnJBT7Difl_hKjFsxrJWWm8jyIOsxHE6OFH2OWzveC5BeDkr2BJVMDNAivQgBpOTFR21wSLgGWZo3BlFA7R0I2J59PSaV3FdE_5K3g2JN8Nj85EQSB6kit8MFeWS_Ih78KEIugWRr5ki37HyOLQ-tAQJlJF&quot;
    }
  },
  &quot;mainEntityOfPage&quot;: {
    &quot;@type&quot;: &quot;WebPage&quot;,
    &quot;@id&quot;: &quot;https://www.carapaklek.com/2026/02/esp-idf-lvgl-error-buildconfigsdkconfig.html&quot;
  },
  &quot;inLanguage&quot;: &quot;en&quot;,
  &quot;keywords&quot;: [
    &quot;ESP-IDF LVGL error&quot;,
    &quot;CONFIG_LV_FONT_CUSTOM_DECLARE&quot;,
    &quot;expected identifier before string constant&quot;,
    &quot;sdkconfig.h error&quot;,
    &quot;LVGL menuconfig fix&quot;,
    &quot;ESP-IDF PowerShell&quot;
  ]
}
&lt;/script&gt;

&lt;script type=&quot;application/ld+json&quot;&gt;
{
  &quot;@context&quot;: &quot;https://schema.org&quot;,
  &quot;@type&quot;: &quot;FAQPage&quot;,
  &quot;mainEntity&quot;: [
    {
      &quot;@type&quot;: &quot;Question&quot;,
      &quot;name&quot;: &quot;What causes the expected identifier before string constant error in ESP-IDF LVGL?&quot;,
      &quot;acceptedAnswer&quot;: {
        &quot;@type&quot;: &quot;Answer&quot;,
        &quot;text&quot;: &quot;The error is caused by the macro CONFIG_LV_FONT_CUSTOM_DECLARE being set as an empty string in sdkconfig, which produces invalid C syntax during compilation.&quot;
      }
    },
    {
      &quot;@type&quot;: &quot;Question&quot;,
      &quot;name&quot;: &quot;How do I fix the CONFIG_LV_FONT_CUSTOM_DECLARE error in ESP-IDF?&quot;,
      &quot;acceptedAnswer&quot;: {
        &quot;@type&quot;: &quot;Answer&quot;,
        &quot;text&quot;: &quot;You can fix it by running idf.py menuconfig via ESP-IDF PowerShell, navigating to Component config → LVGL configuration → Font usage, and disabling custom font support before rebuilding.&quot;
      }
    },
    {
      &quot;@type&quot;: &quot;Question&quot;,
      &quot;name&quot;: &quot;Can the error be resolved without editing source files?&quot;,
      &quot;acceptedAnswer&quot;: {
        &quot;@type&quot;: &quot;Answer&quot;,
        &quot;text&quot;: &quot;Yes. The correct fix is at the configuration layer using menuconfig, not by modifying LVGL source files directly.&quot;
      }
    }
  ]
}
&lt;/script&gt;


&lt;pre style=&quot;background-color: #2d2d2d; border-left: 5px solid rgb(0, 122, 204); border-radius: 8px; color: #f8f8f2; font-family: &amp;quot;Courier New&amp;quot;, monospace; overflow-x: auto; padding: 15px;&quot;&gt;#define CONFIG_LV_FONT_CUSTOM_DECLARE &quot;&quot;
&lt;/pre&gt;

&lt;p&gt;By disabling custom font support, ESP-IDF stops generating the invalid macro, and the build system regenerates a valid &lt;code&gt;sdkconfig.h&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Always fix configuration-layer errors at the configuration layer — not inside source files.&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Read Also : &lt;a href=&quot;https://www.carapaklek.com/2026/02/how-to-add-register-waveshare-esp32-s3.html&quot;&gt;How to add / register Waveshare ESP32-S3 7-inch board into SquareLine Studio as a custom board configuration&amp;nbsp;&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
</content><link rel='replies' type='application/atom+xml' href='https://www.carapaklek.com/feeds/4214437188648077353/comments/default' title='Posting Komentar'/><link rel='replies' type='text/html' href='https://www.carapaklek.com/2026/02/esp-idf-lvgl-error-buildconfigsdkconfig.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/2093917475945207513/posts/default/4214437188648077353'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/2093917475945207513/posts/default/4214437188648077353'/><link rel='alternate' type='text/html' href='https://www.carapaklek.com/2026/02/esp-idf-lvgl-error-buildconfigsdkconfig.html' title='ESP-IDF LVGL Error: build/config/sdkconfig.h:939:39 expected identifier before string constant (CONFIG_LV_FONT_CUSTOM_DECLARE)'/><author><name>carapaklek.com</name><uri>http://www.blogger.com/profile/12438575085929354819</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj84wNpqEWz7nUZmjNjPBarFLyRAZARNpnydt-LYU_GZhXNGZFUplzpWB82bcX7camGkjKhQ-KGgMvx5RMUkIl4gkJvWLq8dlBfnRdA_lNZPKfK8QjiWqasrUvzS15za_c0-zdUM_aAJ39EGM5XGzVoH0xzAg-7mAIwM90m4_AE9y7kgQ/s220/webcamp.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEivUl5MPYAxFQ_ZzRU8Bz5KuW6oqAkWzuue4f_5zWhXiCDQdtiAxbxOrAexZz1WTs_Rxdhk9zep4pe0Outg2femHmfIrPYdl1vzb5YxkflYEZt79NzJ-REPrqPq9Cjz4gBd2t-J9eTtW9lp7oa-ruAUC2glf6XSkzs12dYyABgC1Yw-lEybduK4wC6Vc8nj=s72-w400-h225-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2093917475945207513.post-6622846701380039433</id><published>2026-02-14T01:42:00.003+07:00</published><updated>2026-04-14T07:52:33.170+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Arduino"/><category scheme="http://www.blogger.com/atom/ns#" term="esspressif"/><category scheme="http://www.blogger.com/atom/ns#" term="Teknologi"/><title type='text'>How to add / register Waveshare ESP32-S3 7-inch board into SquareLine Studio as a custom board configuration</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIugjbfwIRS57akO-POOiiZRhKEXb1YWp-uVW3SrObsjIShsVdWShJVTjthq1Tcjb2_Ik_sTSrFPA2eqNlJ2SWSI0-Om0YeVFWo1sUVC6DbKM-ybFzfeilOrqPYzApV65dEAeZzzmOoMNkOh-ReNw4tYiimMPbNCT8kS5jFMNkbwlrD3sDucRA96MIkknZ/s1103/5.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;604&quot; data-original-width=&quot;1103&quot; height=&quot;350&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIugjbfwIRS57akO-POOiiZRhKEXb1YWp-uVW3SrObsjIShsVdWShJVTjthq1Tcjb2_Ik_sTSrFPA2eqNlJ2SWSI0-Om0YeVFWo1sUVC6DbKM-ybFzfeilOrqPYzApV65dEAeZzzmOoMNkOh-ReNw4tYiimMPbNCT8kS5jFMNkbwlrD3sDucRA96MIkknZ/w640-h350/5.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p data-end=&quot;285&quot; data-start=&quot;190&quot;&gt;The Waveshare ESP32-S3 7-inch series is a family of all-in-one development boards that combine:&lt;/p&gt;

&lt;script async=&quot;&quot; crossorigin=&quot;anonymous&quot; src=&quot;https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-1713449561739026&quot;&gt;&lt;/script&gt;
&lt;!--iklan di artikel How to add / register Waveshare ESP32-S3 7--&gt;
&lt;ins class=&quot;adsbygoogle&quot; data-ad-client=&quot;ca-pub-1713449561739026&quot; data-ad-format=&quot;auto&quot; data-ad-slot=&quot;2255667868&quot; data-full-width-responsive=&quot;true&quot; style=&quot;display: block;&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;

&lt;ul data-end=&quot;477&quot; data-start=&quot;287&quot;&gt;&lt;li data-end=&quot;317&quot; data-start=&quot;287&quot;&gt;
&lt;p data-end=&quot;317&quot; data-start=&quot;289&quot;&gt;&lt;b data-end=&quot;317&quot; data-start=&quot;289&quot;&gt;ESP32-S3 microcontroller&lt;/b&gt;&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;359&quot; data-start=&quot;318&quot;&gt;
&lt;p data-end=&quot;359&quot; data-start=&quot;320&quot;&gt;7-inch TFT LCD (RGB parallel interface)&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;393&quot; data-start=&quot;360&quot;&gt;
&lt;p data-end=&quot;393&quot; data-start=&quot;362&quot;&gt;Optional capacitive touch panel&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;443&quot; data-start=&quot;394&quot;&gt;
&lt;p data-end=&quot;443&quot; data-start=&quot;396&quot;&gt;Onboard PSRAM (required for large framebuffers)&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;477&quot; data-start=&quot;444&quot;&gt;
&lt;p data-end=&quot;477&quot; data-start=&quot;446&quot;&gt;USB-C for power and programming&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;509&quot; data-start=&quot;479&quot;&gt;These boards are designed for:&lt;/p&gt;
&lt;ul data-end=&quot;655&quot; data-start=&quot;511&quot;&gt;&lt;li data-end=&quot;542&quot; data-start=&quot;511&quot;&gt;
&lt;p data-end=&quot;542&quot; data-start=&quot;513&quot;&gt;Human-Machine Interface (HMI)&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;570&quot; data-start=&quot;543&quot;&gt;
&lt;p data-end=&quot;570&quot; data-start=&quot;545&quot;&gt;Smart home control panels&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;599&quot; data-start=&quot;571&quot;&gt;
&lt;p data-end=&quot;599&quot; data-start=&quot;573&quot;&gt;Industrial control systems&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;616&quot; data-start=&quot;600&quot;&gt;
&lt;p data-end=&quot;616&quot; data-start=&quot;602&quot;&gt;IoT dashboards&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;655&quot; data-start=&quot;617&quot;&gt;
&lt;p data-end=&quot;655&quot; data-start=&quot;619&quot;&gt;Embedded GUI applications using LVGL&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;694&quot; data-start=&quot;657&quot;&gt;Two commonly found product names are:&lt;/p&gt;
&lt;ul data-end=&quot;760&quot; data-start=&quot;696&quot;&gt;&lt;li data-end=&quot;731&quot; data-start=&quot;696&quot;&gt;
&lt;p data-end=&quot;731&quot; data-start=&quot;698&quot;&gt;Waveshare ESP32-S3-Touch-LCD-7B&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;760&quot; data-start=&quot;732&quot;&gt;
&lt;p data-end=&quot;760&quot; data-start=&quot;734&quot;&gt;Waveshare ESP32-S3-LCD-7&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;&lt;p data-end=&quot;841&quot; data-start=&quot;762&quot;&gt;Now let’s clarify the differences between the variants available on the market.&lt;/p&gt;&lt;h1 data-end=&quot;886&quot; data-start=&quot;848&quot;&gt;1️⃣ “7” vs “7B” – What Does It Mean?&lt;/h1&gt;
&lt;p data-end=&quot;939&quot; data-start=&quot;888&quot;&gt;This is one of the most common points of confusion.&lt;/p&gt;
&lt;h2 data-end=&quot;961&quot; data-start=&quot;941&quot;&gt;🔹 ESP32-S3-LCD-7&lt;/h2&gt;
&lt;p data-end=&quot;986&quot; data-start=&quot;963&quot;&gt;This usually refers to:&lt;/p&gt;
&lt;ul data-end=&quot;1134&quot; data-start=&quot;988&quot;&gt;&lt;li data-end=&quot;1012&quot; data-start=&quot;988&quot;&gt;
&lt;p data-end=&quot;1012&quot; data-start=&quot;990&quot;&gt;A 7-inch RGB LCD board&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1054&quot; data-start=&quot;1013&quot;&gt;
&lt;p data-end=&quot;1054&quot; data-start=&quot;1015&quot;&gt;May come in touch or non-touch versions&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1096&quot; data-start=&quot;1055&quot;&gt;
&lt;p data-end=&quot;1096&quot; data-start=&quot;1057&quot;&gt;Earlier hardware revision in some cases&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1134&quot; data-start=&quot;1097&quot;&gt;
&lt;p data-end=&quot;1134&quot; data-start=&quot;1099&quot;&gt;Basic display-focused configuration&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;1158&quot; data-start=&quot;1136&quot;&gt;It typically includes:&lt;/p&gt;
&lt;ul data-end=&quot;1266&quot; data-start=&quot;1160&quot;&gt;&lt;li data-end=&quot;1194&quot; data-start=&quot;1160&quot;&gt;
&lt;p data-end=&quot;1194&quot; data-start=&quot;1162&quot;&gt;ESP32-S3-WROOM or similar module&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1214&quot; data-start=&quot;1195&quot;&gt;
&lt;p data-end=&quot;1214&quot; data-start=&quot;1197&quot;&gt;RGB LCD interface&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1231&quot; data-start=&quot;1215&quot;&gt;
&lt;p data-end=&quot;1231&quot; data-start=&quot;1217&quot;&gt;External PSRAM&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1266&quot; data-start=&quot;1232&quot;&gt;&lt;p data-end=&quot;1266&quot; data-start=&quot;1234&quot;&gt;Standard power and USB interface&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2 data-end=&quot;1300&quot; data-start=&quot;1273&quot;&gt;🔹 ESP32-S3-Touch-LCD-7B&lt;/h2&gt;
&lt;p data-end=&quot;1351&quot; data-start=&quot;1302&quot;&gt;The “B” generally indicates a &lt;b data-end=&quot;1350&quot; data-start=&quot;1332&quot;&gt;board revision&lt;/b&gt;.&lt;/p&gt;
&lt;p data-end=&quot;1392&quot; data-start=&quot;1353&quot;&gt;In most cases, the 7B version includes:&lt;/p&gt;
&lt;ul data-end=&quot;1547&quot; data-start=&quot;1394&quot;&gt;&lt;li data-end=&quot;1415&quot; data-start=&quot;1394&quot;&gt;
&lt;p data-end=&quot;1415&quot; data-start=&quot;1396&quot;&gt;Improved PCB layout&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1451&quot; data-start=&quot;1416&quot;&gt;
&lt;p data-end=&quot;1451&quot; data-start=&quot;1418&quot;&gt;Better power regulation stability&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1480&quot; data-start=&quot;1452&quot;&gt;
&lt;p data-end=&quot;1480&quot; data-start=&quot;1454&quot;&gt;Refined RGB signal routing&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1547&quot; data-start=&quot;1481&quot;&gt;
&lt;p data-end=&quot;1547&quot; data-start=&quot;1483&quot;&gt;Integrated capacitive touch controller (commonly GT911 over I2C)&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;1628&quot; data-start=&quot;1549&quot;&gt;The “Touch” label explicitly confirms the presence of a capacitive touch panel.&lt;/p&gt;&lt;p data-end=&quot;1741&quot; data-start=&quot;1630&quot;&gt;Important note:&lt;br /&gt;
Not all “7” versions include touch. The word “Touch” in the product name is what guarantees it.&lt;/p&gt;&lt;h1 data-end=&quot;1785&quot; data-start=&quot;1748&quot;&gt;2️⃣ Touch vs Without Touch Versions&lt;/h1&gt;
&lt;p data-end=&quot;1859&quot; data-start=&quot;1787&quot;&gt;Another major difference in the lineup is the presence of a touch panel.&lt;/p&gt;
&lt;h2 data-end=&quot;1880&quot; data-start=&quot;1861&quot;&gt;🔹 Touch Version&lt;/h2&gt;
&lt;p data-end=&quot;1891&quot; data-start=&quot;1882&quot;&gt;Features:&lt;/p&gt;
&lt;ul data-end=&quot;2037&quot; data-start=&quot;1893&quot;&gt;&lt;li data-end=&quot;1917&quot; data-start=&quot;1893&quot;&gt;
&lt;p data-end=&quot;1917&quot; data-start=&quot;1895&quot;&gt;Capacitive touch panel&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1973&quot; data-start=&quot;1918&quot;&gt;
&lt;p data-end=&quot;1973&quot; data-start=&quot;1920&quot;&gt;Typically uses GT911 touch controller (I2C interface)&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1995&quot; data-start=&quot;1974&quot;&gt;
&lt;p data-end=&quot;1995&quot; data-start=&quot;1976&quot;&gt;Multi-touch support&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2037&quot; data-start=&quot;1996&quot;&gt;
&lt;p data-end=&quot;2037&quot; data-start=&quot;1998&quot;&gt;Requires I2C initialization in firmware&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;2068&quot; data-start=&quot;2039&quot;&gt;These versions are ideal for:&lt;/p&gt;
&lt;ul data-end=&quot;2154&quot; data-start=&quot;2070&quot;&gt;&lt;li data-end=&quot;2086&quot; data-start=&quot;2070&quot;&gt;
&lt;p data-end=&quot;2086&quot; data-start=&quot;2072&quot;&gt;Interactive UI&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2103&quot; data-start=&quot;2087&quot;&gt;
&lt;p data-end=&quot;2103&quot; data-start=&quot;2089&quot;&gt;Control panels&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2128&quot; data-start=&quot;2104&quot;&gt;
&lt;p data-end=&quot;2128&quot; data-start=&quot;2106&quot;&gt;Kiosk-style interfaces&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2154&quot; data-start=&quot;2129&quot;&gt;&lt;p data-end=&quot;2154&quot; data-start=&quot;2131&quot;&gt;LVGL-based applications&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2 data-end=&quot;2188&quot; data-start=&quot;2161&quot;&gt;🔹 Without Touch Version&lt;/h2&gt;
&lt;p data-end=&quot;2199&quot; data-start=&quot;2190&quot;&gt;Features:&lt;/p&gt;
&lt;ul data-end=&quot;2297&quot; data-start=&quot;2201&quot;&gt;&lt;li data-end=&quot;2215&quot; data-start=&quot;2201&quot;&gt;
&lt;p data-end=&quot;2215&quot; data-start=&quot;2203&quot;&gt;Display only&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2237&quot; data-start=&quot;2216&quot;&gt;
&lt;p data-end=&quot;2237&quot; data-start=&quot;2218&quot;&gt;No touch controller&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2268&quot; data-start=&quot;2238&quot;&gt;
&lt;p data-end=&quot;2268&quot; data-start=&quot;2240&quot;&gt;Lower complexity in firmware&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2297&quot; data-start=&quot;2269&quot;&gt;
&lt;p data-end=&quot;2297&quot; data-start=&quot;2271&quot;&gt;No I2C touch driver needed&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;2322&quot; data-start=&quot;2299&quot;&gt;These are suitable for:&lt;/p&gt;
&lt;ul data-end=&quot;2437&quot; data-start=&quot;2324&quot;&gt;&lt;li data-end=&quot;2352&quot; data-start=&quot;2324&quot;&gt;
&lt;p data-end=&quot;2352&quot; data-start=&quot;2326&quot;&gt;Information display panels&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2376&quot; data-start=&quot;2353&quot;&gt;
&lt;p data-end=&quot;2376&quot; data-start=&quot;2355&quot;&gt;Monitoring dashboards&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2437&quot; data-start=&quot;2377&quot;&gt;&lt;p data-end=&quot;2437&quot; data-start=&quot;2379&quot;&gt;Applications using external input (buttons, encoder, etc.)&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h1 data-end=&quot;2490&quot; data-start=&quot;2444&quot;&gt;3️⃣ Resolution Variants: 800×480 vs 1024×600&lt;/h1&gt;
&lt;p data-end=&quot;2581&quot; data-start=&quot;2492&quot;&gt;Although both are 7-inch panels, different versions may use different native resolutions:&lt;/p&gt;
&lt;h3 data-end=&quot;2599&quot; data-start=&quot;2583&quot;&gt;🔹 800 × 480&lt;/h3&gt;
&lt;ul data-end=&quot;2698&quot; data-start=&quot;2600&quot;&gt;&lt;li data-end=&quot;2631&quot; data-start=&quot;2600&quot;&gt;
&lt;p data-end=&quot;2631&quot; data-start=&quot;2602&quot;&gt;Lower framebuffer requirement&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2664&quot; data-start=&quot;2632&quot;&gt;
&lt;p data-end=&quot;2664&quot; data-start=&quot;2634&quot;&gt;More forgiving for PSRAM usage&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2698&quot; data-start=&quot;2665&quot;&gt;
&lt;p data-end=&quot;2698&quot; data-start=&quot;2667&quot;&gt;Common in embedded HMI projects&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;h3 data-end=&quot;2717&quot; data-start=&quot;2700&quot;&gt;🔹 1024 × 600&lt;/h3&gt;
&lt;ul data-end=&quot;2859&quot; data-start=&quot;2718&quot;&gt;&lt;li data-end=&quot;2740&quot; data-start=&quot;2718&quot;&gt;
&lt;p data-end=&quot;2740&quot; data-start=&quot;2720&quot;&gt;Higher pixel density&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2780&quot; data-start=&quot;2741&quot;&gt;
&lt;p data-end=&quot;2780&quot; data-start=&quot;2743&quot;&gt;Larger framebuffer (≈1.2MB at RGB565)&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2817&quot; data-start=&quot;2781&quot;&gt;
&lt;p data-end=&quot;2817&quot; data-start=&quot;2783&quot;&gt;Higher PSRAM bandwidth requirement&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2859&quot; data-start=&quot;2818&quot;&gt;
&lt;p data-end=&quot;2859&quot; data-start=&quot;2820&quot;&gt;More demanding RGB timing configuration&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;2889&quot; data-start=&quot;2861&quot;&gt;Resolution directly impacts:&lt;/p&gt;
&lt;ul data-end=&quot;2977&quot; data-start=&quot;2890&quot;&gt;&lt;li data-end=&quot;2908&quot; data-start=&quot;2890&quot;&gt;
&lt;p data-end=&quot;2908&quot; data-start=&quot;2892&quot;&gt;Framebuffer size&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2926&quot; data-start=&quot;2909&quot;&gt;
&lt;p data-end=&quot;2926&quot; data-start=&quot;2911&quot;&gt;DMA performance&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2954&quot; data-start=&quot;2927&quot;&gt;
&lt;p data-end=&quot;2954&quot; data-start=&quot;2929&quot;&gt;Pixel clock configuration&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2977&quot; data-start=&quot;2955&quot;&gt;&lt;p data-end=&quot;2977&quot; data-start=&quot;2957&quot;&gt;LVGL buffer strategy&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h1 data-end=&quot;3021&quot; data-start=&quot;2984&quot;&gt;4️⃣ Common Hardware Characteristics&lt;/h1&gt;
&lt;p data-end=&quot;3093&quot; data-start=&quot;3023&quot;&gt;Across most 7-inch ESP32-S3 Waveshare boards, you will typically find:&lt;/p&gt;
&lt;ul data-end=&quot;3291&quot; data-start=&quot;3095&quot;&gt;&lt;li data-end=&quot;3127&quot; data-start=&quot;3095&quot;&gt;
&lt;p data-end=&quot;3127&quot; data-start=&quot;3097&quot;&gt;ESP32-S3 with dual-core Xtensa&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;3156&quot; data-start=&quot;3128&quot;&gt;
&lt;p data-end=&quot;3156&quot; data-start=&quot;3130&quot;&gt;External PSRAM (often 8MB)&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;3195&quot; data-start=&quot;3157&quot;&gt;
&lt;p data-end=&quot;3195&quot; data-start=&quot;3159&quot;&gt;RGB parallel LCD interface (not SPI)&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;3220&quot; data-start=&quot;3196&quot;&gt;
&lt;p data-end=&quot;3220&quot; data-start=&quot;3198&quot;&gt;USB-C programming port&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;3248&quot; data-start=&quot;3221&quot;&gt;
&lt;p data-end=&quot;3248&quot; data-start=&quot;3223&quot;&gt;Backlight control circuit&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;3291&quot; data-start=&quot;3249&quot;&gt;
&lt;p data-end=&quot;3291&quot; data-start=&quot;3251&quot;&gt;Optional microSD slot (in some variants)&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;3317&quot; data-start=&quot;3293&quot;&gt;The RGB interface means:&lt;/p&gt;
&lt;ul data-end=&quot;3424&quot; data-start=&quot;3318&quot;&gt;&lt;li data-end=&quot;3340&quot; data-start=&quot;3318&quot;&gt;
&lt;p data-end=&quot;3340&quot; data-start=&quot;3320&quot;&gt;High pin count usage&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;3380&quot; data-start=&quot;3341&quot;&gt;
&lt;p data-end=&quot;3380&quot; data-start=&quot;3343&quot;&gt;Precise timing configuration required&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;3424&quot; data-start=&quot;3381&quot;&gt;
&lt;p data-end=&quot;3424&quot; data-start=&quot;3383&quot;&gt;Much higher performance than SPI displays&lt;/p&gt;&lt;p data-end=&quot;3424&quot; data-start=&quot;3383&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p data-end=&quot;3424&quot; data-start=&quot;3383&quot;&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;script async=&quot;&quot; crossorigin=&quot;anonymous&quot; src=&quot;https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-1713449561739026&quot;&gt;&lt;/script&gt;
&lt;!--iklan di tengah artikel How to add / register Waveshare ESP32-S3 7--&gt;
&lt;ins class=&quot;adsbygoogle&quot; data-ad-client=&quot;ca-pub-1713449561739026&quot; data-ad-format=&quot;auto&quot; data-ad-slot=&quot;3046005359&quot; data-full-width-responsive=&quot;true&quot; style=&quot;display: block;&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;

&lt;h2 style=&quot;text-align: left;&quot;&gt;&lt;b&gt;SquareLine Studio Overview&amp;nbsp;&lt;/b&gt;&lt;/h2&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/h2&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;&lt;b&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhcP0lHBJQTRS5KKB9umixqo26X5mJEDFB36Qnvcg9YxURehViUBvunkFbiysezWAiKUnOyTmiMvter5RLUAVw_c5GDeHcX4cfygZjcD8ZxsN80LgFiHKWnb71WBVwbepKK_goN6Kfl7-KrelNjX8Ti5VSwhZwwvSN2hjpaZHDf94LtwaG-NV6PiUZfYTy/s1082/squareline.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;573&quot; data-original-width=&quot;1082&quot; height=&quot;211&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhcP0lHBJQTRS5KKB9umixqo26X5mJEDFB36Qnvcg9YxURehViUBvunkFbiysezWAiKUnOyTmiMvter5RLUAVw_c5GDeHcX4cfygZjcD8ZxsN80LgFiHKWnb71WBVwbepKK_goN6Kfl7-KrelNjX8Ti5VSwhZwwvSN2hjpaZHDf94LtwaG-NV6PiUZfYTy/w400-h211/squareline.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&lt;/b&gt;&lt;/h2&gt;&lt;p data-end=&quot;338&quot; data-start=&quot;244&quot;&gt;&lt;span class=&quot;hover:entity-accent entity-underline inline cursor-pointer align-baseline&quot;&gt;&lt;span class=&quot;whitespace-normal&quot;&gt;SquareLine Studio&lt;/span&gt;&lt;/span&gt; is a professional UI design tool built specifically for:&lt;/p&gt;
&lt;blockquote data-end=&quot;385&quot; data-start=&quot;340&quot;&gt;
&lt;p data-end=&quot;385&quot; data-start=&quot;342&quot;&gt;LVGL (Light and Versatile Graphics Library)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-end=&quot;511&quot; data-start=&quot;387&quot;&gt;It allows developers to design graphical user interfaces visually, instead of manually writing LVGL C code for every widget.&lt;/p&gt;&lt;p data-end=&quot;675&quot; data-start=&quot;513&quot;&gt;SquareLine Studio does &lt;b data-end=&quot;543&quot; data-start=&quot;536&quot;&gt;not&lt;/b&gt; replace firmware development.&lt;br data-end=&quot;576&quot; data-start=&quot;573&quot; /&gt;
It generates LVGL-compatible UI source code that must be integrated into a microcontroller project.&lt;/p&gt;&lt;h1 data-end=&quot;718&quot; data-start=&quot;682&quot;&gt;What SquareLine Studio Actually Is&lt;/h1&gt;
&lt;p data-end=&quot;741&quot; data-start=&quot;720&quot;&gt;SquareLine Studio is:&lt;/p&gt;
&lt;ul data-end=&quot;886&quot; data-start=&quot;743&quot;&gt;&lt;li data-end=&quot;771&quot; data-start=&quot;743&quot;&gt;
&lt;p data-end=&quot;771&quot; data-start=&quot;745&quot;&gt;A drag-and-drop UI builder&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;799&quot; data-start=&quot;772&quot;&gt;
&lt;p data-end=&quot;799&quot; data-start=&quot;774&quot;&gt;A code generator for LVGL&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;841&quot; data-start=&quot;800&quot;&gt;
&lt;p data-end=&quot;841&quot; data-start=&quot;802&quot;&gt;A layout designer for embedded displays&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;886&quot; data-start=&quot;842&quot;&gt;
&lt;p data-end=&quot;886&quot; data-start=&quot;844&quot;&gt;A project-based UI development environment&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;901&quot; data-start=&quot;888&quot;&gt;It generates:&lt;/p&gt;
&lt;ul data-end=&quot;1006&quot; data-start=&quot;903&quot;&gt;&lt;li data-end=&quot;911&quot; data-start=&quot;903&quot;&gt;
&lt;p data-end=&quot;911&quot; data-start=&quot;905&quot;&gt;&lt;code data-end=&quot;911&quot; data-start=&quot;905&quot;&gt;ui.c&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;920&quot; data-start=&quot;912&quot;&gt;
&lt;p data-end=&quot;920&quot; data-start=&quot;914&quot;&gt;&lt;code data-end=&quot;920&quot; data-start=&quot;914&quot;&gt;ui.h&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;936&quot; data-start=&quot;921&quot;&gt;
&lt;p data-end=&quot;936&quot; data-start=&quot;923&quot;&gt;&lt;code data-end=&quot;936&quot; data-start=&quot;923&quot;&gt;ui_events.c&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;949&quot; data-start=&quot;937&quot;&gt;
&lt;p data-end=&quot;949&quot; data-start=&quot;939&quot;&gt;Font files&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;964&quot; data-start=&quot;950&quot;&gt;
&lt;p data-end=&quot;964&quot; data-start=&quot;952&quot;&gt;Image assets&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;985&quot; data-start=&quot;965&quot;&gt;
&lt;p data-end=&quot;985&quot; data-start=&quot;967&quot;&gt;Screen definitions&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1006&quot; data-start=&quot;986&quot;&gt;
&lt;p data-end=&quot;1006&quot; data-start=&quot;988&quot;&gt;Object hierarchies&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;1033&quot; data-start=&quot;1008&quot;&gt;It does &lt;b data-end=&quot;1023&quot; data-start=&quot;1016&quot;&gt;not&lt;/b&gt; generate:&lt;/p&gt;
&lt;ul data-end=&quot;1150&quot; data-start=&quot;1035&quot;&gt;&lt;li data-end=&quot;1052&quot; data-start=&quot;1035&quot;&gt;
&lt;p data-end=&quot;1052&quot; data-start=&quot;1037&quot;&gt;Display drivers&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1068&quot; data-start=&quot;1053&quot;&gt;
&lt;p data-end=&quot;1068&quot; data-start=&quot;1055&quot;&gt;Touch drivers&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1095&quot; data-start=&quot;1069&quot;&gt;
&lt;p data-end=&quot;1095&quot; data-start=&quot;1071&quot;&gt;RGB timing configuration&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1126&quot; data-start=&quot;1096&quot;&gt;
&lt;p data-end=&quot;1126&quot; data-start=&quot;1098&quot;&gt;Hardware initialization code&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1150&quot; data-start=&quot;1127&quot;&gt;&lt;p data-end=&quot;1150&quot; data-start=&quot;1129&quot;&gt;ESP-IDF project setup&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h1 data-end=&quot;1181&quot; data-start=&quot;1157&quot;&gt;Relationship with LVGL&lt;/h1&gt;
&lt;p data-end=&quot;1217&quot; data-start=&quot;1183&quot;&gt;SquareLine Studio is built around:&lt;/p&gt;
&lt;p data-end=&quot;1256&quot; data-start=&quot;1219&quot;&gt;&lt;span class=&quot;hover:entity-accent entity-underline inline cursor-pointer align-baseline&quot;&gt;&lt;span class=&quot;whitespace-normal&quot;&gt;LVGL&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;1320&quot; data-start=&quot;1258&quot;&gt;LVGL is the graphics library that runs on the microcontroller.&lt;/p&gt;
&lt;p data-end=&quot;1338&quot; data-start=&quot;1322&quot;&gt;The workflow is:&lt;/p&gt;
&lt;ol data-end=&quot;1482&quot; data-start=&quot;1340&quot;&gt;&lt;li data-end=&quot;1366&quot; data-start=&quot;1340&quot;&gt;
&lt;p data-end=&quot;1366&quot; data-start=&quot;1343&quot;&gt;Design UI in SquareLine&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1397&quot; data-start=&quot;1367&quot;&gt;
&lt;p data-end=&quot;1397&quot; data-start=&quot;1370&quot;&gt;Export LVGL-compatible code&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1439&quot; data-start=&quot;1398&quot;&gt;
&lt;p data-end=&quot;1439&quot; data-start=&quot;1401&quot;&gt;Integrate exported files into firmware&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1482&quot; data-start=&quot;1440&quot;&gt;
&lt;p data-end=&quot;1482&quot; data-start=&quot;1443&quot;&gt;Compile using framework (e.g., ESP-IDF)&lt;/p&gt;
&lt;/li&gt;&lt;/ol&gt;&lt;p data-end=&quot;1592&quot; data-start=&quot;1484&quot;&gt;SquareLine only creates the top-layer UI objects.&lt;br data-end=&quot;1536&quot; data-start=&quot;1533&quot; /&gt;
LVGL handles rendering and object management at runtime.&lt;/p&gt;&lt;h1 data-end=&quot;1621&quot; data-start=&quot;1599&quot;&gt;Supported Frameworks&lt;/h1&gt;
&lt;p data-end=&quot;1658&quot; data-start=&quot;1623&quot;&gt;SquareLine can export projects for:&lt;/p&gt;
&lt;ul data-end=&quot;1741&quot; data-start=&quot;1660&quot;&gt;&lt;li data-end=&quot;1674&quot; data-start=&quot;1660&quot;&gt;
&lt;p data-end=&quot;1674&quot; data-start=&quot;1662&quot;&gt;Generic LVGL&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1684&quot; data-start=&quot;1675&quot;&gt;
&lt;p data-end=&quot;1684&quot; data-start=&quot;1677&quot;&gt;Arduino&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1694&quot; data-start=&quot;1685&quot;&gt;
&lt;p data-end=&quot;1694&quot; data-start=&quot;1687&quot;&gt;ESP-IDF&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1706&quot; data-start=&quot;1695&quot;&gt;
&lt;p data-end=&quot;1706&quot; data-start=&quot;1697&quot;&gt;STM32 HAL&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1741&quot; data-start=&quot;1707&quot;&gt;
&lt;p data-end=&quot;1741&quot; data-start=&quot;1709&quot;&gt;Other supported MCU environments&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;1791&quot; data-start=&quot;1743&quot;&gt;For ESP32-S3 development, the common backend is:&lt;/p&gt;
&lt;p data-end=&quot;1830&quot; data-start=&quot;1793&quot;&gt;&lt;span class=&quot;hover:entity-accent entity-underline inline cursor-pointer align-baseline&quot;&gt;&lt;span class=&quot;whitespace-normal&quot;&gt;ESP-IDF&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p data-end=&quot;1930&quot; data-start=&quot;1832&quot;&gt;However, SquareLine does not configure ESP-IDF internally.&lt;br data-end=&quot;1893&quot; data-start=&quot;1890&quot; /&gt;
It only generates compatible UI code.&lt;/p&gt;&lt;h1 data-end=&quot;1970&quot; data-start=&quot;1937&quot;&gt;Project Structure in SquareLine&lt;/h1&gt;
&lt;p data-end=&quot;2012&quot; data-start=&quot;1972&quot;&gt;When creating a new project, you define:&lt;/p&gt;
&lt;ul data-end=&quot;2138&quot; data-start=&quot;2014&quot;&gt;&lt;li data-end=&quot;2062&quot; data-start=&quot;2014&quot;&gt;
&lt;p data-end=&quot;2062&quot; data-start=&quot;2016&quot;&gt;Display resolution (e.g., 800×480 or 1024×600)&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2102&quot; data-start=&quot;2063&quot;&gt;
&lt;p data-end=&quot;2102&quot; data-start=&quot;2065&quot;&gt;Color depth (typically 16-bit RGB565)&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2117&quot; data-start=&quot;2103&quot;&gt;
&lt;p data-end=&quot;2117&quot; data-start=&quot;2105&quot;&gt;LVGL version&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2138&quot; data-start=&quot;2118&quot;&gt;
&lt;p data-end=&quot;2138&quot; data-start=&quot;2120&quot;&gt;Target export type&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;2244&quot; data-start=&quot;2140&quot;&gt;SquareLine does not require you to select a specific hardware board.&lt;br data-end=&quot;2211&quot; data-start=&quot;2208&quot; /&gt;
It only needs display parameters.&lt;/p&gt;
&lt;p data-end=&quot;2264&quot; data-start=&quot;2246&quot;&gt;This is important:&lt;/p&gt;&lt;p data-end=&quot;2338&quot; data-start=&quot;2266&quot;&gt;SquareLine operates at the LVGL layer, not at the hardware driver layer.&lt;/p&gt;&lt;h1 data-end=&quot;2360&quot; data-start=&quot;2345&quot;&gt;Core Features&lt;/h1&gt;
&lt;p data-end=&quot;2389&quot; data-start=&quot;2362&quot;&gt;SquareLine Studio provides:&lt;/p&gt;
&lt;ul data-end=&quot;2583&quot; data-start=&quot;2391&quot;&gt;&lt;li data-end=&quot;2413&quot; data-start=&quot;2391&quot;&gt;
&lt;p data-end=&quot;2413&quot; data-start=&quot;2393&quot;&gt;Visual screen editor&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2473&quot; data-start=&quot;2414&quot;&gt;
&lt;p data-end=&quot;2473&quot; data-start=&quot;2416&quot;&gt;Widget library (buttons, labels, sliders, keyboard, etc.)&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2488&quot; data-start=&quot;2474&quot;&gt;
&lt;p data-end=&quot;2488&quot; data-start=&quot;2476&quot;&gt;Style editor&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2508&quot; data-start=&quot;2489&quot;&gt;
&lt;p data-end=&quot;2508&quot; data-start=&quot;2491&quot;&gt;Animation builder&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2548&quot; data-start=&quot;2509&quot;&gt;
&lt;p data-end=&quot;2548&quot; data-start=&quot;2511&quot;&gt;Event editor (callback configuration)&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2565&quot; data-start=&quot;2549&quot;&gt;
&lt;p data-end=&quot;2565&quot; data-start=&quot;2551&quot;&gt;Font converter&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2583&quot; data-start=&quot;2566&quot;&gt;
&lt;p data-end=&quot;2583&quot; data-start=&quot;2568&quot;&gt;Image converter&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;&lt;p data-end=&quot;2666&quot; data-start=&quot;2585&quot;&gt;It significantly reduces development time compared to writing LVGL code manually.&lt;/p&gt;&lt;h1 data-end=&quot;2704&quot; data-start=&quot;2673&quot;&gt;What SquareLine Studio Is NOT&lt;/h1&gt;
&lt;p data-end=&quot;2732&quot; data-start=&quot;2706&quot;&gt;To avoid misunderstanding:&lt;/p&gt;
&lt;p data-end=&quot;2759&quot; data-start=&quot;2734&quot;&gt;SquareLine Studio is not:&lt;/p&gt;
&lt;ul data-end=&quot;2886&quot; data-start=&quot;2761&quot;&gt;&lt;li data-end=&quot;2793&quot; data-start=&quot;2761&quot;&gt;
&lt;p data-end=&quot;2793&quot; data-start=&quot;2763&quot;&gt;An IDE like Visual Studio Code&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2815&quot; data-start=&quot;2794&quot;&gt;
&lt;p data-end=&quot;2815&quot; data-start=&quot;2796&quot;&gt;A firmware compiler&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2847&quot; data-start=&quot;2816&quot;&gt;
&lt;p data-end=&quot;2847&quot; data-start=&quot;2818&quot;&gt;A hardware configuration tool&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2865&quot; data-start=&quot;2848&quot;&gt;
&lt;p data-end=&quot;2865&quot; data-start=&quot;2850&quot;&gt;A board manager&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2886&quot; data-start=&quot;2866&quot;&gt;
&lt;p data-end=&quot;2886&quot; data-start=&quot;2868&quot;&gt;A driver installer&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;2923&quot; data-start=&quot;2888&quot;&gt;It does not “install” ESP32 boards.&lt;/p&gt;
&lt;p data-end=&quot;2961&quot; data-start=&quot;2925&quot;&gt;It does not detect display hardware.&lt;/p&gt;
&lt;p data-end=&quot;3002&quot; data-start=&quot;2963&quot;&gt;It does not manage PSRAM or RGB timing.&lt;/p&gt;&lt;p data-end=&quot;3074&quot; data-start=&quot;3004&quot;&gt;All hardware-level configuration must be done in the firmware project.&lt;/p&gt;&lt;h1 data-end=&quot;3118&quot; data-start=&quot;3081&quot;&gt;Where SquareLine Fits in the System&lt;/h1&gt;
&lt;p data-end=&quot;3187&quot; data-start=&quot;3120&quot;&gt;In an ESP32-S3 7-inch project, the stack typically looks like this:&lt;/p&gt;
&lt;p data-end=&quot;3341&quot; data-start=&quot;3189&quot;&gt;Layer 1 → Hardware (RGB LCD + Touch Controller)&lt;br data-end=&quot;3239&quot; data-start=&quot;3236&quot; /&gt;
Layer 2 → ESP-IDF Drivers (esp_lcd, I2C, PSRAM)&lt;br data-end=&quot;3289&quot; data-start=&quot;3286&quot; /&gt;
Layer 3 → LVGL&lt;br data-end=&quot;3306&quot; data-start=&quot;3303&quot; /&gt;
Layer 4 → SquareLine-generated UI&lt;/p&gt;
&lt;p data-end=&quot;3379&quot; data-start=&quot;3343&quot;&gt;SquareLine only operates at Layer 4.&lt;/p&gt;&lt;p data-end=&quot;3399&quot; data-start=&quot;3381&quot;&gt;That is its scope.&lt;/p&gt;&lt;p data-end=&quot;3399&quot; data-start=&quot;3381&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;h2 data-end=&quot;3399&quot; data-start=&quot;3381&quot; style=&quot;text-align: left;&quot;&gt;ESP32-S3 7-Inch Waveshare Is NOT Built-In in SquareLine Studio&amp;nbsp;&lt;/h2&gt;&lt;h2 data-end=&quot;3399&quot; data-start=&quot;3381&quot; style=&quot;text-align: left;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEig2ycer8anPJQX_FV35VI8kZNMCgTQkqOKWoDB3rTbezsEe10Idp3nkCV7cpuVXS_J-yOAffGViXdcdrm-UM1LdRktEB3JJZsdE42NzEx27EGIb1-1OU3B9vbJuSrM_cBwKBUSXE61LV7oDEi2dT6JtP-BJY0n4xGV9_I4ZTXfUU-3zzL_jaJ8kudm-nv8/s1222/2.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;686&quot; data-original-width=&quot;1222&quot; height=&quot;225&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEig2ycer8anPJQX_FV35VI8kZNMCgTQkqOKWoDB3rTbezsEe10Idp3nkCV7cpuVXS_J-yOAffGViXdcdrm-UM1LdRktEB3JJZsdE42NzEx27EGIb1-1OU3B9vbJuSrM_cBwKBUSXE61LV7oDEi2dT6JtP-BJY0n4xGV9_I4ZTXfUU-3zzL_jaJ8kudm-nv8/w400-h225/2.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/h2&gt;&lt;p data-end=&quot;282&quot; data-start=&quot;157&quot;&gt;&lt;span class=&quot;hover:entity-accent entity-underline inline cursor-pointer align-baseline&quot;&gt;&lt;span class=&quot;whitespace-normal&quot;&gt;SquareLine Studio&lt;/span&gt;&lt;/span&gt; does &lt;b data-end=&quot;207&quot; data-start=&quot;200&quot;&gt;not&lt;/b&gt; include a built-in board profile for the Waveshare ESP32-S3 7-inch series.&lt;/p&gt;
&lt;p data-end=&quot;298&quot; data-start=&quot;284&quot;&gt;That includes:&lt;/p&gt;
&lt;ul data-end=&quot;364&quot; data-start=&quot;300&quot;&gt;&lt;li data-end=&quot;335&quot; data-start=&quot;300&quot;&gt;
&lt;p data-end=&quot;335&quot; data-start=&quot;302&quot;&gt;Waveshare ESP32-S3-Touch-LCD-7B&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;364&quot; data-start=&quot;336&quot;&gt;
&lt;p data-end=&quot;364&quot; data-start=&quot;338&quot;&gt;Waveshare ESP32-S3-LCD-7&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;417&quot; data-start=&quot;366&quot;&gt;When you create a new project in SquareLine Studio:&lt;/p&gt;
&lt;ul data-end=&quot;625&quot; data-start=&quot;419&quot;&gt;&lt;li data-end=&quot;485&quot; data-start=&quot;419&quot;&gt;
&lt;p data-end=&quot;485&quot; data-start=&quot;421&quot;&gt;You will not find “ESP32-S3 7-inch Waveshare” in the board list.&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;579&quot; data-start=&quot;486&quot;&gt;
&lt;p data-end=&quot;579&quot; data-start=&quot;488&quot;&gt;There is no official preset for 800×480 or 1024×600 specifically labeled for this hardware.&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;625&quot; data-start=&quot;580&quot;&gt;
&lt;p data-end=&quot;625&quot; data-start=&quot;582&quot;&gt;There is no automatic driver configuration.&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;&lt;p data-end=&quot;665&quot; data-start=&quot;627&quot;&gt;This is intentional — not an omission.&lt;/p&gt;&lt;h1 data-end=&quot;716&quot; data-start=&quot;672&quot;&gt;Why It Is Not Included (Technical Reality)&lt;/h1&gt;
&lt;p data-end=&quot;749&quot; data-start=&quot;718&quot;&gt;SquareLine Studio is built for:&lt;/p&gt;
&lt;blockquote data-end=&quot;771&quot; data-start=&quot;751&quot;&gt;
&lt;p data-end=&quot;771&quot; data-start=&quot;753&quot;&gt;LVGL UI generation&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-end=&quot;824&quot; data-start=&quot;773&quot;&gt;It is &lt;b data-end=&quot;786&quot; data-start=&quot;779&quot;&gt;not&lt;/b&gt; a hardware configuration environment.&lt;/p&gt;
&lt;p data-end=&quot;870&quot; data-start=&quot;826&quot;&gt;Board profiles inside SquareLine are simply:&lt;/p&gt;
&lt;ul data-end=&quot;947&quot; data-start=&quot;872&quot;&gt;&lt;li data-end=&quot;892&quot; data-start=&quot;872&quot;&gt;
&lt;p data-end=&quot;892&quot; data-start=&quot;874&quot;&gt;Resolution presets&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;914&quot; data-start=&quot;893&quot;&gt;
&lt;p data-end=&quot;914&quot; data-start=&quot;895&quot;&gt;Color depth presets&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;947&quot; data-start=&quot;915&quot;&gt;
&lt;p data-end=&quot;947&quot; data-start=&quot;917&quot;&gt;Export configuration templates&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;983&quot; data-start=&quot;949&quot;&gt;They are &lt;b data-end=&quot;982&quot; data-start=&quot;958&quot;&gt;not hardware drivers&lt;/b&gt;.&lt;/p&gt;
&lt;p data-end=&quot;1032&quot; data-start=&quot;985&quot;&gt;Since the Waveshare ESP32-S3 7-inch boards use:&lt;/p&gt;
&lt;ul data-end=&quot;1162&quot; data-start=&quot;1034&quot;&gt;&lt;li data-end=&quot;1058&quot; data-start=&quot;1034&quot;&gt;
&lt;p data-end=&quot;1058&quot; data-start=&quot;1036&quot;&gt;RGB parallel interface&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1088&quot; data-start=&quot;1059&quot;&gt;
&lt;p data-end=&quot;1088&quot; data-start=&quot;1061&quot;&gt;Custom timing configuration&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1119&quot; data-start=&quot;1089&quot;&gt;
&lt;p data-end=&quot;1119&quot; data-start=&quot;1091&quot;&gt;PSRAM framebuffer allocation&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1162&quot; data-start=&quot;1120&quot;&gt;
&lt;p data-end=&quot;1162&quot; data-start=&quot;1122&quot;&gt;I2C touch controller (in touch versions)&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;1237&quot; data-start=&quot;1164&quot;&gt;All of that belongs to firmware level (e.g., ESP-IDF), not to SquareLine.&lt;/p&gt;&lt;p data-end=&quot;1307&quot; data-start=&quot;1239&quot;&gt;SquareLine has no mechanism to install RGB timing or PSRAM settings.&lt;/p&gt;&lt;h1 data-end=&quot;1343&quot; data-start=&quot;1314&quot;&gt;What This Means Practically&lt;/h1&gt;
&lt;p data-end=&quot;1356&quot; data-start=&quot;1345&quot;&gt;You cannot:&lt;/p&gt;
&lt;ul data-end=&quot;1516&quot; data-start=&quot;1358&quot;&gt;&lt;li data-end=&quot;1414&quot; data-start=&quot;1358&quot;&gt;
&lt;p data-end=&quot;1414&quot; data-start=&quot;1360&quot;&gt;“Install” the Waveshare ESP32-S3 board into SquareLine&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1441&quot; data-start=&quot;1415&quot;&gt;
&lt;p data-end=&quot;1441&quot; data-start=&quot;1417&quot;&gt;Download a board package&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1474&quot; data-start=&quot;1442&quot;&gt;
&lt;p data-end=&quot;1474&quot; data-start=&quot;1444&quot;&gt;Enable it from a board manager&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1516&quot; data-start=&quot;1475&quot;&gt;
&lt;p data-end=&quot;1516&quot; data-start=&quot;1477&quot;&gt;Select it from a built-in dropdown list&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;1536&quot; data-start=&quot;1518&quot;&gt;Instead, you must:&lt;/p&gt;
&lt;ul data-end=&quot;1651&quot; data-start=&quot;1538&quot;&gt;&lt;li data-end=&quot;1577&quot; data-start=&quot;1538&quot;&gt;
&lt;p data-end=&quot;1577&quot; data-start=&quot;1540&quot;&gt;Manually configure display resolution&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1598&quot; data-start=&quot;1578&quot;&gt;
&lt;p data-end=&quot;1598&quot; data-start=&quot;1580&quot;&gt;Match LVGL version&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1610&quot; data-start=&quot;1599&quot;&gt;
&lt;p data-end=&quot;1610&quot; data-start=&quot;1601&quot;&gt;Export UI&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1651&quot; data-start=&quot;1611&quot;&gt;
&lt;p data-end=&quot;1651&quot; data-start=&quot;1613&quot;&gt;Integrate it into your ESP-IDF project&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;1731&quot; data-start=&quot;1653&quot;&gt;SquareLine works generically with LVGL, not with specific RGB hardware boards.&lt;/p&gt;&lt;h2 data-end=&quot;3399&quot; data-start=&quot;3381&quot; style=&quot;text-align: left;&quot;&gt;How to Install a Custom ESP32-S3 7-Inch Waveshare Board in SquareLine Studio&lt;/h2&gt;&lt;h2 data-end=&quot;3399&quot; data-start=&quot;3381&quot; style=&quot;text-align: left;&quot;&gt;&amp;nbsp;STEP 1- Close Squareline Studio&lt;/h2&gt;&lt;h2 data-end=&quot;3399&quot; data-start=&quot;3381&quot; style=&quot;text-align: left;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhq56JfyJ4fta8Oe_Vjcwntd96h8kpp0wQd2NyK2kjyOuDeZJ66xhjtIuPllHRgpSlUL5L8idgsrK2RL6mqCXSzI-s123MrvhD4APrPbdyyGRSUVNpVgansgMkLBOWlwcTpdwrXTTVmWmL8-RE4QhU6q0hAnYfAowGKC3np7WS3FG5qQ5TwkcZu7MlWAyK0/s1235/3.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;713&quot; data-original-width=&quot;1235&quot; height=&quot;231&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhq56JfyJ4fta8Oe_Vjcwntd96h8kpp0wQd2NyK2kjyOuDeZJ66xhjtIuPllHRgpSlUL5L8idgsrK2RL6mqCXSzI-s123MrvhD4APrPbdyyGRSUVNpVgansgMkLBOWlwcTpdwrXTTVmWmL8-RE4QhU6q0hAnYfAowGKC3np7WS3FG5qQ5TwkcZu7MlWAyK0/w400-h231/3.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&lt;/h2&gt;&lt;h2 data-end=&quot;3399&quot; data-start=&quot;3381&quot; style=&quot;text-align: left;&quot;&gt;STEP 2-&amp;nbsp;Download the Official ESP32-S3 Waveshare Board Resources&lt;/h2&gt;&lt;div data-end=&quot;3399&quot; data-start=&quot;3381&quot; style=&quot;text-align: left;&quot;&gt;Before integrating the board into &lt;span class=&quot;hover:entity-accent entity-underline inline cursor-pointer align-baseline&quot;&gt;&lt;span class=&quot;whitespace-normal&quot;&gt;SquareLine Studio&lt;/span&gt;&lt;/span&gt;, you must first download the official resources provided by Waveshare for the ESP32-S3 7-inch series.&amp;nbsp;&lt;/div&gt;&lt;h2 data-end=&quot;3399&quot; data-start=&quot;3381&quot; style=&quot;text-align: left;&quot;&gt;link :&amp;nbsp;&lt;/h2&gt;
&lt;b&gt;&lt;a href=&quot;#&quot; onclick=&quot;document.getElementById(&#39;popupForm&#39;).style.display=&#39;block&#39;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;👉Klik di sini untuk download&lt;/span&gt;&lt;/a&gt;&lt;/b&gt;
&lt;!--Popup--&gt;
&lt;div id=&quot;popupForm&quot;&gt;
  &lt;div class=&quot;popup-inner&quot;&gt;
    &lt;h3&gt;Akses Download&lt;/h3&gt;
    &lt;form id=&quot;emailForm&quot;&gt;
      &lt;label&gt;Email:&lt;/label&gt;&lt;br /&gt;
      &lt;input name=&quot;email&quot; required=&quot;&quot; type=&quot;email&quot; /&gt;&lt;br /&gt;&lt;br /&gt;
      &lt;label&gt;
        &lt;input required=&quot;&quot; type=&quot;checkbox&quot; /&gt;
        Saya setuju menerima email dari &lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=carapaklek.com&amp;amp;bbid=2093917475945207513&amp;amp;bpid=2437804466559784368&quot; target=&quot;_blank&quot;&gt;carapaklek.com&lt;/a&gt;
      &lt;/label&gt;&lt;br /&gt;&lt;br /&gt;
      &lt;button type=&quot;submit&quot;&gt;Kirim&lt;/button&gt;
      &lt;button onclick=&quot;document.getElementById(&#39;popupForm&#39;).style.display=&#39;none&#39;&quot; type=&quot;button&quot;&gt;Tutup&lt;/button&gt;
    &lt;/form&gt;
    &lt;div id=&quot;resultMsg&quot;&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;!--Style responsif--&gt;
&lt;style&gt;
  #popupForm {
    display: none;
    position: fixed;
    top: 0; left: 0;
    width: 100vw; height: 100vh;
    background: rgba(0,0,0,0.5);
    z-index: 999;
    padding: 10px;
    box-sizing: border-box;
  }

  .popup-inner {
    background: #fff;
    padding: 20px;
    border-radius: 10px;
    max-width: 400px;
    width: 100%;
    margin: 60px auto;
    box-shadow: 0 0 10px rgba(0,0,0,0.4);
  }

  input[type=&quot;email&quot;] {
    width: 100%;
    padding: 8px;
    box-sizing: border-box;
  }

  button {
    padding: 10px 20px;
    margin-top: 10px;
  }

  @media (max-width: 500px) {
    .popup-inner {
      max-width: 90%;
      font-size: 14px;
    }
  }
&lt;/style&gt;


&lt;!--Script--&gt;
&lt;script&gt;
  document.getElementById(&#39;emailForm&#39;).addEventListener(&#39;submit&#39;, function(e) {
    e.preventDefault();
    const email = this.email.value;
    const resultMsg = document.getElementById(&#39;resultMsg&#39;);

    fetch(&#39;https://script.google.com/macros/s/AKfycbwT_bFXg7cGVTuJBKCpHiAHBX2j9IW82pnvnTBMqDsUMWVzhUIQPgiav05x69rnio1IOw/exec&#39;, {
      method: &#39;POST&#39;,
      headers: {&#39;Content-Type&#39;: &#39;application/x-www-form-urlencoded&#39;},
      body: &#39;email=&#39; + encodeURIComponent(email)
    })
    .then(res =&gt; res.text())
    .then(res =&gt; {
      if (res.trim() === &quot;success&quot;) {
        resultMsg.innerHTML = &quot;✅ Link sudah dikirim ke email Anda.&quot;;
        this.style.display = &quot;none&quot;;
      } else {
        resultMsg.innerHTML = &quot;❌ Terjadi kesalahan: &quot; + res;
      }
    })
    .catch(err =&gt; resultMsg.innerHTML = &quot;❌ Error: &quot; + err);
  });
&lt;/script&gt;
&lt;div data-end=&quot;3399&quot; data-start=&quot;3381&quot; style=&quot;text-align: left;&quot;&gt;after download extrak file to folder and copy to location squareline studio :&lt;/div&gt;&lt;div data-end=&quot;3399&quot; data-start=&quot;3381&quot; style=&quot;text-align: left;&quot;&gt;&lt;h1 data-end=&quot;705&quot; data-start=&quot;657&quot;&gt;&lt;/h1&gt;
&lt;p data-end=&quot;757&quot; data-start=&quot;707&quot;&gt;Navigate to the SquareLine installation directory.&lt;/p&gt;
&lt;p data-end=&quot;785&quot; data-start=&quot;759&quot;&gt;Typical Windows locations:&lt;/p&gt;
&lt;pre style=&quot;background-color: #2d2d2d; border-left: 5px solid rgb(0, 122, 204); border-radius: 8px; color: #f8f8f2; font-family: &amp;quot;Courier New&amp;quot;, monospace; overflow-x: auto; padding: 15px;&quot;&gt;C:\Users\&amp;lt;username&amp;gt;\AppData\Local\Programs\SquareLine Studio\
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Inside the installation folder, look for:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div style=&quot;background-color: #1e1e1e; border-left: 4px solid rgb(255, 152, 0); border-radius: 8px; box-shadow: rgba(0, 0, 0, 0.3) 0px 4px 10px; color: #d4d4d4; font-family: &amp;quot;Consolas&amp;quot;, &amp;quot;Monaco&amp;quot;, monospace; line-height: 1.5; overflow-x: auto; padding: 20px;&quot;&gt;
  &lt;span style=&quot;color: #4ec9b0;&quot;&gt;SquareLine Studio/&lt;/span&gt;&lt;br /&gt;
  &amp;nbsp;└── &lt;span style=&quot;color: #ce9178;&quot;&gt;resources/&lt;/span&gt;&lt;br /&gt;
  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;└── &lt;span style=&quot;color: #ce9178;&quot;&gt;boards/&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&amp;nbsp;|-- Dekstop&lt;/span&gt;&lt;br /&gt;
  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;├── &lt;span style=&quot;color: #9cdcfe;&quot;&gt;arduino&lt;/span&gt;&lt;br /&gt;
  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;├── &lt;span style=&quot;color: #9cdcfe;&quot;&gt;esp32&lt;/span&gt;&lt;br /&gt;
  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;└── &lt;span style=&quot;color: #9cdcfe;&quot;&gt;stm32&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&amp;nbsp;|-- Espressif&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;|-- copy file download here&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;after copy open squareline studio, select esspressif ,&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIugjbfwIRS57akO-POOiiZRhKEXb1YWp-uVW3SrObsjIShsVdWShJVTjthq1Tcjb2_Ik_sTSrFPA2eqNlJ2SWSI0-Om0YeVFWo1sUVC6DbKM-ybFzfeilOrqPYzApV65dEAeZzzmOoMNkOh-ReNw4tYiimMPbNCT8kS5jFMNkbwlrD3sDucRA96MIkknZ/s1103/5.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;604&quot; data-original-width=&quot;1103&quot; height=&quot;350&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIugjbfwIRS57akO-POOiiZRhKEXb1YWp-uVW3SrObsjIShsVdWShJVTjthq1Tcjb2_Ik_sTSrFPA2eqNlJ2SWSI0-Om0YeVFWo1sUVC6DbKM-ybFzfeilOrqPYzApV65dEAeZzzmOoMNkOh-ReNw4tYiimMPbNCT8kS5jFMNkbwlrD3sDucRA96MIkknZ/w640-h350/5.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;

&lt;script async src=&quot;https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-1713449561739026&quot;
     crossorigin=&quot;anonymous&quot;&gt;&lt;/script&gt;
&lt;!-- iklan diakhir artikelHow to add / register Waveshare ESP32-S3 7 --&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:block&quot;
     data-ad-client=&quot;ca-pub-1713449561739026&quot;
     data-ad-slot=&quot;6598846368&quot;
     data-ad-format=&quot;auto&quot;
     data-full-width-responsive=&quot;true&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&amp;nbsp;Read Also : &lt;a href=&quot;https://www.carapaklek.com/2026/02/unboxing-esp32-s3-7-inch-touchscreen.html&quot;&gt;Unboxing ESP32-S3 7 Inch Touchscreen Waveshare: Fungsi USB dan Skema Port Lengkap&lt;/a&gt;&lt;p&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.carapaklek.com/feeds/6622846701380039433/comments/default' title='Posting Komentar'/><link rel='replies' type='text/html' href='https://www.carapaklek.com/2026/02/how-to-add-register-waveshare-esp32-s3.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/2093917475945207513/posts/default/6622846701380039433'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/2093917475945207513/posts/default/6622846701380039433'/><link rel='alternate' type='text/html' href='https://www.carapaklek.com/2026/02/how-to-add-register-waveshare-esp32-s3.html' title='How to add / register Waveshare ESP32-S3 7-inch board into SquareLine Studio as a custom board configuration'/><author><name>carapaklek.com</name><uri>http://www.blogger.com/profile/12438575085929354819</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj84wNpqEWz7nUZmjNjPBarFLyRAZARNpnydt-LYU_GZhXNGZFUplzpWB82bcX7camGkjKhQ-KGgMvx5RMUkIl4gkJvWLq8dlBfnRdA_lNZPKfK8QjiWqasrUvzS15za_c0-zdUM_aAJ39EGM5XGzVoH0xzAg-7mAIwM90m4_AE9y7kgQ/s220/webcamp.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIugjbfwIRS57akO-POOiiZRhKEXb1YWp-uVW3SrObsjIShsVdWShJVTjthq1Tcjb2_Ik_sTSrFPA2eqNlJ2SWSI0-Om0YeVFWo1sUVC6DbKM-ybFzfeilOrqPYzApV65dEAeZzzmOoMNkOh-ReNw4tYiimMPbNCT8kS5jFMNkbwlrD3sDucRA96MIkknZ/s72-w640-h350-c/5.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2093917475945207513.post-4109779019430380446</id><published>2026-02-08T11:35:00.002+07:00</published><updated>2026-02-08T11:35:54.546+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Arduino"/><category scheme="http://www.blogger.com/atom/ns#" term="Teknologi"/><title type='text'>Panduan Lengkap LCD 7 Inch ESP32-S3 Waveshare: Soket, Pin, dan Kesalahan Umum</title><content type='html'>&lt;p&gt;LCD 7 inch ESP32-S3 dari &lt;b data-end=&quot;452&quot; data-start=&quot;411&quot;&gt;&lt;span class=&quot;hover:entity-accent entity-underline inline cursor-pointer align-baseline&quot;&gt;&lt;span class=&quot;whitespace-normal&quot;&gt;Waveshare&lt;/span&gt;&lt;/span&gt;&lt;/b&gt; merupakan board all-in-one yang banyak dipakai untuk HMI, kiosk, dan proyek IoT display.&lt;br data-end=&quot;544&quot; data-start=&quot;541&quot; /&gt;
Namun karena fiturnya lengkap, &lt;b data-end=&quot;637&quot; data-start=&quot;575&quot;&gt;banyak pengguna pemula salah memahami fungsi soket dan pin&lt;/b&gt;, yang berujung layar nyala tapi touch tidak jalan, atau GPIO terasa “habis”.&lt;/p&gt;
&lt;p data-end=&quot;815&quot; data-start=&quot;716&quot;&gt;Artikel ini membahas &lt;b data-end=&quot;786&quot; data-start=&quot;737&quot;&gt;fungsi setiap soket dan pin secara konseptual&lt;/b&gt;, bukan sekadar sebutan nama.&lt;/p&gt;&lt;h2 data-end=&quot;864&quot; data-start=&quot;822&quot;&gt;Gambaran Umum Board LCD 7 Inch ESP32-S3&lt;/h2&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxs626R8s38Ky-AHljc_VUbBFwZ2SQcu0zmu3KfIdg-8p1YYIcGSczd9Co1BqHzFR3WvKiO8sIErRvamT0b2c_8bq_knPSLlfD9gRhKZvd7ZvYY_WA8JkFztIV-whBZWmrOiUOz3IY3Oo7V3PLcbgKEPMdvk7LlScgn_OXUJnItCI6eo3TLpdOusDOSfPB/s960/ESP32-S3-Touch-LCD-7-details-intro.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;608&quot; data-original-width=&quot;960&quot; height=&quot;406&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxs626R8s38Ky-AHljc_VUbBFwZ2SQcu0zmu3KfIdg-8p1YYIcGSczd9Co1BqHzFR3WvKiO8sIErRvamT0b2c_8bq_knPSLlfD9gRhKZvd7ZvYY_WA8JkFztIV-whBZWmrOiUOz3IY3Oo7V3PLcbgKEPMdvk7LlScgn_OXUJnItCI6eo3TLpdOusDOSfPB/w640-h406/ESP32-S3-Touch-LCD-7-details-intro.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgieALsygaPoeCGCd5xrOoi1i4RjjHtS2NZ69i7LtmhA1hDHp-7CZNE6lAi1VxEsy_xiZkk5cioYYKI2q4B2JxddT_EXZVkEvIYN2XQ7RDYpk9XO8kWtHIXs9vPuO-C1Fbuz9RD_AL3yDzmRSMQx1IextmWsIB-LICkrDX_T4TSqqh2dR36anuAcPLmVsCH/s1158/Untitled-2.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;506&quot; data-original-width=&quot;1158&quot; height=&quot;280&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgieALsygaPoeCGCd5xrOoi1i4RjjHtS2NZ69i7LtmhA1hDHp-7CZNE6lAi1VxEsy_xiZkk5cioYYKI2q4B2JxddT_EXZVkEvIYN2XQ7RDYpk9XO8kWtHIXs9vPuO-C1Fbuz9RD_AL3yDzmRSMQx1IextmWsIB-LICkrDX_T4TSqqh2dR36anuAcPLmVsCH/w640-h280/Untitled-2.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;p data-end=&quot;911&quot; data-start=&quot;865&quot;&gt;&lt;/p&gt;
&lt;p data-end=&quot;994&quot; data-start=&quot;913&quot;&gt;Board ini &lt;b data-end=&quot;950&quot; data-start=&quot;923&quot;&gt;bukan sekadar modul LCD&lt;/b&gt;, melainkan satu sistem lengkap yang berisi:&lt;/p&gt;
&lt;ul data-end=&quot;1149&quot; data-start=&quot;995&quot;&gt;&lt;li data-end=&quot;1034&quot; data-start=&quot;995&quot;&gt;
&lt;p data-end=&quot;1034&quot; data-start=&quot;997&quot;&gt;ESP32-S3 sebagai mikrokontroler utama&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1075&quot; data-start=&quot;1035&quot;&gt;
&lt;p data-end=&quot;1075&quot; data-start=&quot;1037&quot;&gt;Panel LCD 7 inch resolusi tinggi (RGB)&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1103&quot; data-start=&quot;1076&quot;&gt;
&lt;p data-end=&quot;1103&quot; data-start=&quot;1078&quot;&gt;Touch controller terpisah&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1129&quot; data-start=&quot;1104&quot;&gt;
&lt;p data-end=&quot;1129&quot; data-start=&quot;1106&quot;&gt;Power regulator onboard&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1149&quot; data-start=&quot;1130&quot;&gt;
&lt;p data-end=&quot;1149&quot; data-start=&quot;1132&quot;&gt;Header GPIO &amp;amp; I2C&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;1281&quot; data-start=&quot;1151&quot;&gt;📌 &lt;b data-end=&quot;1172&quot; data-start=&quot;1154&quot;&gt;Tujuan gambar:&lt;/b&gt;&lt;br data-end=&quot;1175&quot; data-start=&quot;1172&quot; /&gt;
Memberi konteks visual awal agar pembaca tahu &lt;b data-end=&quot;1259&quot; data-start=&quot;1221&quot;&gt;“ini papan yang sedang kita bahas”&lt;/b&gt; sebelum masuk teknis.&lt;/p&gt;&lt;p data-end=&quot;1281&quot; data-start=&quot;1151&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;h2 data-end=&quot;1326&quot; data-start=&quot;1288&quot;&gt;Soket Power (Bagian Paling Krusial)&lt;/h2&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_PqJrxS-rl9JFV-7d12ZAMbi3tavLKXWZzBFABMY-F3YZ3K2dI3WXWO5SLkYyiDKx4bXCwzs7MWiRokp2Y3R7HZSB-Vr3xgri4QPqzCnMtm7ZydhgjwuiFcW-eqX7qXE7V6CZ_gNk0BYYqnt_mzpPGQNHkksT5o-8_NQhzAsnKAmc1nJTn9UE5JrLiiYj/s1282/usb.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;722&quot; data-original-width=&quot;1282&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_PqJrxS-rl9JFV-7d12ZAMbi3tavLKXWZzBFABMY-F3YZ3K2dI3WXWO5SLkYyiDKx4bXCwzs7MWiRokp2Y3R7HZSB-Vr3xgri4QPqzCnMtm7ZydhgjwuiFcW-eqX7qXE7V6CZ_gNk0BYYqnt_mzpPGQNHkksT5o-8_NQhzAsnKAmc1nJTn9UE5JrLiiYj/w640-h360/usb.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p data-end=&quot;1379&quot; data-start=&quot;1327&quot;&gt;&lt;/p&gt;
&lt;p data-end=&quot;1512&quot; data-start=&quot;1381&quot;&gt;LCD 7 inch membutuhkan &lt;b data-end=&quot;1434&quot; data-start=&quot;1404&quot;&gt;arus yang jauh lebih besar&lt;/b&gt; dibanding LCD kecil.&lt;br data-end=&quot;1458&quot; data-start=&quot;1455&quot; /&gt;
Karena itu, soket power menjadi bagian paling krusial.&lt;/p&gt;
&lt;p data-end=&quot;1538&quot; data-start=&quot;1514&quot;&gt;Hal yang perlu dipahami:&lt;/p&gt;
&lt;ul data-end=&quot;1654&quot; data-start=&quot;1539&quot;&gt;&lt;li data-end=&quot;1569&quot; data-start=&quot;1539&quot;&gt;
&lt;p data-end=&quot;1569&quot; data-start=&quot;1541&quot;&gt;Tegangan kerja utama: &lt;b data-end=&quot;1569&quot; data-start=&quot;1563&quot;&gt;5V&lt;/b&gt;&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1611&quot; data-start=&quot;1570&quot;&gt;
&lt;p data-end=&quot;1611&quot; data-start=&quot;1572&quot;&gt;Board sudah memiliki regulator internal&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1654&quot; data-start=&quot;1612&quot;&gt;
&lt;p data-end=&quot;1654&quot; data-start=&quot;1614&quot;&gt;USB laptop &lt;b data-end=&quot;1654&quot; data-start=&quot;1625&quot;&gt;tidak selalu cukup stabil&lt;/b&gt;&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;1750&quot; data-start=&quot;1656&quot;&gt;⚠️ &lt;b data-end=&quot;1678&quot; data-start=&quot;1659&quot;&gt;Kesalahan umum:&lt;/b&gt;&lt;br data-end=&quot;1681&quot; data-start=&quot;1678&quot; /&gt;
LCD nyala sebentar lalu restart → &lt;b data-end=&quot;1733&quot; data-start=&quot;1715&quot;&gt;masalah supply&lt;/b&gt;, bukan firmware.&lt;/p&gt;&lt;p data-end=&quot;1848&quot; data-start=&quot;1752&quot;&gt;📌 &lt;b data-end=&quot;1773&quot; data-start=&quot;1755&quot;&gt;Tujuan gambar:&lt;/b&gt;&lt;br data-end=&quot;1776&quot; data-start=&quot;1773&quot; /&gt;
Menunjukkan lokasi fisik soket power agar pembaca &lt;b data-end=&quot;1847&quot; data-start=&quot;1826&quot;&gt;tidak salah colok&lt;/b&gt;.&lt;/p&gt;&lt;h2 data-end=&quot;1888&quot; data-start=&quot;1855&quot;&gt;Soket LCD RGB (Jantung Sistem)&lt;/h2&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkLcPEJis03GDI7dIGcYYIZbK0U2p2SlWsuSFP1NUdKMpqs_OCTI_UOf_zEEtPvuRbQMtELj0TFiICt8cMDiIJ54zJ7JPRtOBPBAtKvsfZ9_ZY5rqePDgQ36X4DEf1XS_lg2XhRmLGw2rl8TaR9rOqOpGkEJD0L-2fVWwJs73-CE6Z2Vzwd_rz2ZJ5qTaM/s1282/soket%20lcd.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;722&quot; data-original-width=&quot;1282&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkLcPEJis03GDI7dIGcYYIZbK0U2p2SlWsuSFP1NUdKMpqs_OCTI_UOf_zEEtPvuRbQMtELj0TFiICt8cMDiIJ54zJ7JPRtOBPBAtKvsfZ9_ZY5rqePDgQ36X4DEf1XS_lg2XhRmLGw2rl8TaR9rOqOpGkEJD0L-2fVWwJs73-CE6Z2Vzwd_rz2ZJ5qTaM/w640-h360/soket%20lcd.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p data-end=&quot;1930&quot; data-start=&quot;1889&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-end=&quot;2012&quot; data-start=&quot;1932&quot;&gt;Panel LCD terhubung ke ESP32-S3 melalui &lt;b data-end=&quot;2000&quot; data-start=&quot;1972&quot;&gt;interface RGB (parallel)&lt;/b&gt;, bukan SPI.&lt;/p&gt;
&lt;p data-end=&quot;2038&quot; data-start=&quot;2014&quot;&gt;Ciri khas interface RGB:&lt;/p&gt;
&lt;ul data-end=&quot;2134&quot; data-start=&quot;2039&quot;&gt;&lt;li data-end=&quot;2065&quot; data-start=&quot;2039&quot;&gt;
&lt;p data-end=&quot;2065&quot; data-start=&quot;2041&quot;&gt;Jumlah pin sangat banyak&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2134&quot; data-start=&quot;2066&quot;&gt;
&lt;p data-end=&quot;2081&quot; data-start=&quot;2068&quot;&gt;Terdiri dari:&lt;/p&gt;
&lt;ul data-end=&quot;2134&quot; data-start=&quot;2084&quot;&gt;&lt;li data-end=&quot;2098&quot; data-start=&quot;2084&quot;&gt;
&lt;p data-end=&quot;2098&quot; data-start=&quot;2086&quot;&gt;HSYNC, VSYNC&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2111&quot; data-start=&quot;2101&quot;&gt;
&lt;p data-end=&quot;2111&quot; data-start=&quot;2103&quot;&gt;DE, PCLK&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2134&quot; data-start=&quot;2114&quot;&gt;
&lt;p data-end=&quot;2134&quot; data-start=&quot;2116&quot;&gt;Data RGB (R, G, B)&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;2184&quot; data-start=&quot;2136&quot;&gt;📌 &lt;b data-end=&quot;2182&quot; data-start=&quot;2139&quot;&gt;Poin penting yang sering disalahpahami:&lt;/b&gt;&lt;/p&gt;
&lt;blockquote data-end=&quot;2278&quot; data-start=&quot;2185&quot;&gt;
&lt;p data-end=&quot;2278&quot; data-start=&quot;2187&quot;&gt;Banyak GPIO “habis” bukan karena salah desain, tapi karena &lt;b data-end=&quot;2277&quot; data-start=&quot;2246&quot;&gt;RGB memang butuh banyak pin&lt;/b&gt;.&lt;/p&gt;
&lt;/blockquote&gt;&lt;p data-end=&quot;2400&quot; data-start=&quot;2280&quot;&gt;📌 &lt;b data-end=&quot;2301&quot; data-start=&quot;2283&quot;&gt;Tujuan gambar:&lt;/b&gt;&lt;br data-end=&quot;2304&quot; data-start=&quot;2301&quot; /&gt;
Menunjukkan bahwa konektor LCD memang besar dan kompleks → membantu pembaca menerima konsep ini.&lt;/p&gt;&lt;h2 data-end=&quot;2441&quot; data-start=&quot;2407&quot;&gt;Soket Touch Panel (GT911 – I2C)&lt;/h2&gt;
&lt;p data-end=&quot;2490&quot; data-start=&quot;2442&quot;&gt;&lt;/p&gt;
&lt;p data-end=&quot;2644&quot; data-start=&quot;2492&quot;&gt;Touch panel &lt;b data-end=&quot;2551&quot; data-start=&quot;2504&quot;&gt;tidak berhubungan langsung dengan soket RGB&lt;/b&gt;.&lt;br data-end=&quot;2555&quot; data-start=&quot;2552&quot; /&gt;
Touch menggunakan &lt;b data-end=&quot;2596&quot; data-start=&quot;2573&quot;&gt;controller terpisah&lt;/b&gt;, umumnya GT911, yang berkomunikasi via &lt;b data-end=&quot;2643&quot; data-start=&quot;2636&quot;&gt;I2C&lt;/b&gt;.&lt;/p&gt;
&lt;p data-end=&quot;2664&quot; data-start=&quot;2646&quot;&gt;Pin yang terlibat:&lt;/p&gt;
&lt;ul data-end=&quot;2688&quot; data-start=&quot;2665&quot;&gt;&lt;li data-end=&quot;2670&quot; data-start=&quot;2665&quot;&gt;
&lt;p data-end=&quot;2670&quot; data-start=&quot;2667&quot;&gt;SDA&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2676&quot; data-start=&quot;2671&quot;&gt;
&lt;p data-end=&quot;2676&quot; data-start=&quot;2673&quot;&gt;SCL&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2682&quot; data-start=&quot;2677&quot;&gt;
&lt;p data-end=&quot;2682&quot; data-start=&quot;2679&quot;&gt;INT&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2688&quot; data-start=&quot;2683&quot;&gt;
&lt;p data-end=&quot;2688&quot; data-start=&quot;2685&quot;&gt;RST&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;2712&quot; data-start=&quot;2690&quot;&gt;📌 &lt;b data-end=&quot;2712&quot; data-start=&quot;2693&quot;&gt;Kesalahan umum:&lt;/b&gt;&lt;/p&gt;
&lt;ul data-end=&quot;2817&quot; data-start=&quot;2713&quot;&gt;&lt;li data-end=&quot;2763&quot; data-start=&quot;2713&quot;&gt;
&lt;p data-end=&quot;2763&quot; data-start=&quot;2715&quot;&gt;LCD sudah tampil → diasumsikan touch pasti aktif&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2817&quot; data-start=&quot;2764&quot;&gt;
&lt;p data-end=&quot;2817&quot; data-start=&quot;2766&quot;&gt;Padahal touch &lt;b data-end=&quot;2817&quot; data-start=&quot;2780&quot;&gt;harus di-init via I2C di firmware&lt;/b&gt;&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;&lt;p data-end=&quot;2924&quot; data-start=&quot;2819&quot;&gt;📌 &lt;b data-end=&quot;2840&quot; data-start=&quot;2822&quot;&gt;Tujuan gambar:&lt;/b&gt;&lt;br data-end=&quot;2843&quot; data-start=&quot;2840&quot; /&gt;
Memisahkan secara visual konsep &lt;b data-end=&quot;2890&quot; data-start=&quot;2875&quot;&gt;LCD ≠ Touch&lt;/b&gt;, ini sangat penting untuk pemula.&lt;/p&gt;&lt;h2 data-end=&quot;2967&quot; data-start=&quot;2931&quot;&gt;Header I2C (Sering Disalahpahami)&lt;/h2&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjV4sUm4dABgheKekojlbFnRM9oxdllMM8zGAYv1pz6D2512ocXFdF7egxeQY-z2mcBiC7Maw88-tb4XQnYoOUnepVJ4fnx3yNMJVw60DWNCLeM5xXvHyTjY5Ah0vrznv26ZDPk3JWCuI7cWRgxwMuiirfvXsVt9-gdCVE_ENU5Sm2n2KQ1J3pB_o4U1gJQ/s1217/soket%20power.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;605&quot; data-original-width=&quot;1217&quot; height=&quot;318&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjV4sUm4dABgheKekojlbFnRM9oxdllMM8zGAYv1pz6D2512ocXFdF7egxeQY-z2mcBiC7Maw88-tb4XQnYoOUnepVJ4fnx3yNMJVw60DWNCLeM5xXvHyTjY5Ah0vrznv26ZDPk3JWCuI7cWRgxwMuiirfvXsVt9-gdCVE_ENU5Sm2n2KQ1J3pB_o4U1gJQ/w640-h318/soket%20power.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p data-end=&quot;3012&quot; data-start=&quot;2968&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-end=&quot;3067&quot; data-start=&quot;3014&quot;&gt;Board menyediakan header I2C tambahan untuk ekspansi.&lt;/p&gt;
&lt;p data-end=&quot;3108&quot; data-start=&quot;3069&quot;&gt;Hal paling penting yang wajib dipahami:&lt;/p&gt;
&lt;blockquote data-end=&quot;3167&quot; data-start=&quot;3109&quot;&gt;
&lt;p data-end=&quot;3167&quot; data-start=&quot;3111&quot;&gt;&lt;b data-end=&quot;3167&quot; data-start=&quot;3111&quot;&gt;I2C touch dan I2C header adalah satu jalur yang sama&lt;/b&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-end=&quot;3210&quot; data-start=&quot;3169&quot;&gt;Artinya, dalam satu bus I2C bisa dipakai:&lt;/p&gt;
&lt;ul data-end=&quot;3285&quot; data-start=&quot;3211&quot;&gt;&lt;li data-end=&quot;3224&quot; data-start=&quot;3211&quot;&gt;
&lt;p data-end=&quot;3224&quot; data-start=&quot;3213&quot;&gt;Touch GT911&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;3236&quot; data-start=&quot;3225&quot;&gt;
&lt;p data-end=&quot;3236&quot; data-start=&quot;3227&quot;&gt;PN532 NFC&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;3271&quot; data-start=&quot;3237&quot;&gt;
&lt;p data-end=&quot;3271&quot; data-start=&quot;3239&quot;&gt;IO Expander (PCF8574 / MCP23017)&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;3285&quot; data-start=&quot;3272&quot;&gt;
&lt;p data-end=&quot;3285&quot; data-start=&quot;3274&quot;&gt;Sensor lain&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;3294&quot; data-start=&quot;3287&quot;&gt;Selama:&lt;/p&gt;
&lt;ul data-end=&quot;3342&quot; data-start=&quot;3295&quot;&gt;&lt;li data-end=&quot;3325&quot; data-start=&quot;3295&quot;&gt;
&lt;p data-end=&quot;3325&quot; data-start=&quot;3297&quot;&gt;Alamat I2C &lt;b data-end=&quot;3325&quot; data-start=&quot;3308&quot;&gt;tidak bentrok&lt;/b&gt;&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;3342&quot; data-start=&quot;3326&quot;&gt;
&lt;p data-end=&quot;3342&quot; data-start=&quot;3328&quot;&gt;Pull-up sesuai&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;&lt;p data-end=&quot;3450&quot; data-start=&quot;3344&quot;&gt;📌 &lt;b data-end=&quot;3365&quot; data-start=&quot;3347&quot;&gt;Tujuan gambar:&lt;/b&gt;&lt;br data-end=&quot;3368&quot; data-start=&quot;3365&quot; /&gt;
Menunjukkan lokasi header I2C agar pembaca paham bahwa &lt;b data-end=&quot;3449&quot; data-start=&quot;3423&quot;&gt;ini bukan I2C terpisah&lt;/b&gt;.&lt;/p&gt;&lt;h2 data-end=&quot;3480&quot; data-start=&quot;3457&quot;&gt;Header GPIO ESP32-S3&lt;/h2&gt;
&lt;p data-end=&quot;3520&quot; data-start=&quot;3481&quot;&gt;[GAMBAR 6 – GPIO header dengan anotasi]&lt;/p&gt;
&lt;p data-end=&quot;3543&quot; data-start=&quot;3522&quot;&gt;GPIO digunakan untuk:&lt;/p&gt;
&lt;ul data-end=&quot;3575&quot; data-start=&quot;3544&quot;&gt;&lt;li data-end=&quot;3551&quot; data-start=&quot;3544&quot;&gt;
&lt;p data-end=&quot;3551&quot; data-start=&quot;3546&quot;&gt;Relay&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;3560&quot; data-start=&quot;3552&quot;&gt;
&lt;p data-end=&quot;3560&quot; data-start=&quot;3554&quot;&gt;Tombol&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;3566&quot; data-start=&quot;3561&quot;&gt;
&lt;p data-end=&quot;3566&quot; data-start=&quot;3563&quot;&gt;LED&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;3575&quot; data-start=&quot;3567&quot;&gt;
&lt;p data-end=&quot;3575&quot; data-start=&quot;3569&quot;&gt;Buzzer&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;3590&quot; data-start=&quot;3577&quot;&gt;Namun karena:&lt;/p&gt;
&lt;ul data-end=&quot;3660&quot; data-start=&quot;3591&quot;&gt;&lt;li data-end=&quot;3660&quot; data-start=&quot;3591&quot;&gt;
&lt;p data-end=&quot;3660&quot; data-start=&quot;3593&quot;&gt;Banyak GPIO sudah dipakai LCD RGB&lt;br data-end=&quot;3629&quot; data-start=&quot;3626&quot; /&gt;
maka GPIO tersisa &lt;b data-end=&quot;3659&quot; data-start=&quot;3647&quot;&gt;terbatas&lt;/b&gt;.&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;3697&quot; data-start=&quot;3662&quot;&gt;📌 &lt;b data-end=&quot;3697&quot; data-start=&quot;3665&quot;&gt;Solusi terbaik (disarankan):&lt;/b&gt;&lt;/p&gt;
&lt;ul data-end=&quot;3773&quot; data-start=&quot;3698&quot;&gt;&lt;li data-end=&quot;3724&quot; data-start=&quot;3698&quot;&gt;
&lt;p data-end=&quot;3724&quot; data-start=&quot;3700&quot;&gt;Gunakan &lt;b data-end=&quot;3724&quot; data-start=&quot;3708&quot;&gt;I2C expander&lt;/b&gt;&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;3773&quot; data-start=&quot;3725&quot;&gt;
&lt;p data-end=&quot;3773&quot; data-start=&quot;3727&quot;&gt;Jangan memaksakan semua fitur ke GPIO langsung&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;&lt;p data-end=&quot;3872&quot; data-start=&quot;3775&quot;&gt;📌 &lt;b data-end=&quot;3796&quot; data-start=&quot;3778&quot;&gt;Tujuan gambar:&lt;/b&gt;&lt;br data-end=&quot;3799&quot; data-start=&quot;3796&quot; /&gt;
Membantu pembaca mengidentifikasi &lt;b data-end=&quot;3871&quot; data-start=&quot;3833&quot;&gt;pin mana yang benar-benar tersedia&lt;/b&gt;.&lt;/p&gt;&lt;h2 data-end=&quot;3916&quot; data-start=&quot;3879&quot;&gt;Kesalahan Umum yang Sering Terjadi&lt;/h2&gt;&lt;p data-end=&quot;4022&quot; data-start=&quot;3978&quot;&gt;Kesalahan yang paling sering dialami pemula:&lt;/p&gt;
&lt;ul data-end=&quot;4185&quot; data-start=&quot;4023&quot;&gt;&lt;li data-end=&quot;4067&quot; data-start=&quot;4023&quot;&gt;
&lt;p data-end=&quot;4067&quot; data-start=&quot;4025&quot;&gt;Mengira I2C touch terpisah dari I2C header&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;4097&quot; data-start=&quot;4068&quot;&gt;
&lt;p data-end=&quot;4097&quot; data-start=&quot;4070&quot;&gt;Supply arus tidak mencukupi&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;4129&quot; data-start=&quot;4098&quot;&gt;
&lt;p data-end=&quot;4129&quot; data-start=&quot;4100&quot;&gt;Salah asumsi semua GPIO bebas&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;4151&quot; data-start=&quot;4130&quot;&gt;
&lt;p data-end=&quot;4151&quot; data-start=&quot;4132&quot;&gt;Salah versi ESP-IDF&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;4185&quot; data-start=&quot;4152&quot;&gt;
&lt;p data-end=&quot;4185&quot; data-start=&quot;4154&quot;&gt;Touch tidak di-init di firmware&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;&lt;p data-end=&quot;4294&quot; data-start=&quot;4187&quot;&gt;📌 &lt;b data-end=&quot;4210&quot; data-start=&quot;4190&quot;&gt;Catatan penting:&lt;/b&gt;&lt;br data-end=&quot;4213&quot; data-start=&quot;4210&quot; /&gt;
Sebagian besar masalah &lt;b data-end=&quot;4260&quot; data-start=&quot;4236&quot;&gt;bukan hardware rusak&lt;/b&gt;, tapi &lt;b data-end=&quot;4293&quot; data-start=&quot;4267&quot;&gt;salah pemahaman konsep&lt;/b&gt;.&lt;/p&gt;&lt;h2 data-end=&quot;4314&quot; data-start=&quot;4301&quot;&gt;Kesimpulan&lt;/h2&gt;
&lt;p data-end=&quot;4420&quot; data-start=&quot;4315&quot;&gt;LCD 7 inch ESP32-S3 Waveshare adalah board yang &lt;b data-end=&quot;4382&quot; data-start=&quot;4363&quot;&gt;sangat powerful&lt;/b&gt;, tapi &lt;b data-end=&quot;4419&quot; data-start=&quot;4389&quot;&gt;wajib dipahami strukturnya&lt;/b&gt;.&lt;/p&gt;
&lt;p data-end=&quot;4439&quot; data-start=&quot;4422&quot;&gt;Ringkasan konsep:&lt;/p&gt;
&lt;ul data-end=&quot;4543&quot; data-start=&quot;4440&quot;&gt;&lt;li data-end=&quot;4460&quot; data-start=&quot;4440&quot;&gt;
&lt;p data-end=&quot;4460&quot; data-start=&quot;4442&quot;&gt;LCD → RGB parallel&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;4474&quot; data-start=&quot;4461&quot;&gt;
&lt;p data-end=&quot;4474&quot; data-start=&quot;4463&quot;&gt;Touch → I2C&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;4495&quot; data-start=&quot;4475&quot;&gt;
&lt;p data-end=&quot;4495&quot; data-start=&quot;4477&quot;&gt;I2C → bisa sharing&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;4513&quot; data-start=&quot;4496&quot;&gt;
&lt;p data-end=&quot;4513&quot; data-start=&quot;4498&quot;&gt;GPIO → terbatas&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;4543&quot; data-start=&quot;4514&quot;&gt;
&lt;p data-end=&quot;4543&quot; data-start=&quot;4516&quot;&gt;Power → harus kuat &amp;amp; stabil&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;4620&quot; data-start=&quot;4545&quot;&gt;Jika konsep ini sudah benar, proses development akan &lt;b data-end=&quot;4619&quot; data-start=&quot;4598&quot;&gt;jauh lebih lancar&lt;/b&gt;.&lt;/p&gt;&lt;p data-end=&quot;4620&quot; data-start=&quot;4545&quot;&gt;berikut gambar lengkap yang bisa anda gunakan untuk mengakses soket-soket LCD ESP32_S3_Touch_7B waveshare&lt;/p&gt;&lt;p data-end=&quot;4620&quot; data-start=&quot;4545&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhF1NilwI5S0wXM3IU-81L1JkbcTcppgGIT3LvgjfPHx_CAf8YvPRDGK7XI8-1Yau7K7HmTaaoU-NsHeZ-_rpYmgOSkDeIdF_ac8xysEqaKQ5gfIocj-3qm4xnCYM5Y1mezf0z27E7wAklwgiy_MLEB-0aWGXkhDCh9f-M_ORZqsSLsIgRLvhsSibjizEaR/s1050/ESP32-S3-Touch-LCD-7B-details-9.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1050&quot; data-original-width=&quot;960&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhF1NilwI5S0wXM3IU-81L1JkbcTcppgGIT3LvgjfPHx_CAf8YvPRDGK7XI8-1Yau7K7HmTaaoU-NsHeZ-_rpYmgOSkDeIdF_ac8xysEqaKQ5gfIocj-3qm4xnCYM5Y1mezf0z27E7wAklwgiy_MLEB-0aWGXkhDCh9f-M_ORZqsSLsIgRLvhsSibjizEaR/w586-h640/ESP32-S3-Touch-LCD-7B-details-9.jpg&quot; width=&quot;586&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&lt;p&gt;&lt;/p&gt;&lt;p data-end=&quot;1281&quot; data-start=&quot;1151&quot;&gt;&amp;nbsp;Baca Juga : &lt;a href=&quot;https://www.carapaklek.com/2026/02/unboxing-esp32-s3-7-inch-touchscreen.html&quot;&gt;Unboxing ESP32-S3 7 Inch Touchscreen Waveshare: Fungsi USB dan Skema Port Lengkap&lt;/a&gt;&lt;/p&gt;&lt;p data-end=&quot;815&quot; data-start=&quot;716&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;script type=&quot;application/ld+json&quot;&gt;
{
  &quot;@context&quot;: &quot;https://schema.org&quot;,
  &quot;@type&quot;: &quot;Article&quot;,
  &quot;mainEntityOfPage&quot;: {
    &quot;@type&quot;: &quot;WebPage&quot;,
    &quot;@id&quot;: &quot;https://www.carapaklek.com/2026/02/panduan-lengkap-lcd-7-inch-esp32-s3.html&quot;
  },
  &quot;headline&quot;: &quot;Panduan Lengkap LCD 7 Inch ESP32-S3 Waveshare: Soket, Pin, dan Kesalahan Umum&quot;,
  &quot;description&quot;: &quot;Panduan lengkap LCD 7 inch ESP32-S3 Waveshare. Pelajari fungsi soket, pin RGB, touch I2C, GPIO, serta kesalahan umum yang sering dialami pemula.&quot;,
  &quot;image&quot;: [
    &quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhF1NilwI5S0wXM3IU-81L1JkbcTcppgGIT3LvgjfPHx_CAf8YvPRDGK7XI8-1Yau7K7HmTaaoU-NsHeZ-_rpYmgOSkDeIdF_ac8xysEqaKQ5gfIocj-3qm4xnCYM5Y1mezf0z27E7wAklwgiy_MLEB-0aWGXkhDCh9f-M_ORZqsSLsIgRLvhsSibjizEaR/s1050/ESP32-S3-Touch-LCD-7B-details-9.jpg&quot;
  ],
  &quot;author&quot;: {
    &quot;@type&quot;: &quot;Person&quot;,
    &quot;name&quot;: &quot;Paklek&quot;
  },
  &quot;publisher&quot;: {
    &quot;@type&quot;: &quot;Organization&quot;,
    &quot;name&quot;: &quot;Carapaklek.com&quot;,
    &quot;logo&quot;: {
      &quot;@type&quot;: &quot;ImageObject&quot;,
      &quot;url&quot;: &quot;https://www.carapaklek.com/favicon.ico&quot;
    }
  },
  &quot;datePublished&quot;: &quot;2026-02-08&quot;,
  &quot;dateModified&quot;: &quot;2026-02-08&quot;
}
&lt;/script&gt;
</content><link rel='replies' type='application/atom+xml' href='https://www.carapaklek.com/feeds/4109779019430380446/comments/default' title='Posting Komentar'/><link rel='replies' type='text/html' href='https://www.carapaklek.com/2026/02/panduan-lengkap-lcd-7-inch-esp32-s3.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/2093917475945207513/posts/default/4109779019430380446'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/2093917475945207513/posts/default/4109779019430380446'/><link rel='alternate' type='text/html' href='https://www.carapaklek.com/2026/02/panduan-lengkap-lcd-7-inch-esp32-s3.html' title='Panduan Lengkap LCD 7 Inch ESP32-S3 Waveshare: Soket, Pin, dan Kesalahan Umum'/><author><name>carapaklek.com</name><uri>http://www.blogger.com/profile/12438575085929354819</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj84wNpqEWz7nUZmjNjPBarFLyRAZARNpnydt-LYU_GZhXNGZFUplzpWB82bcX7camGkjKhQ-KGgMvx5RMUkIl4gkJvWLq8dlBfnRdA_lNZPKfK8QjiWqasrUvzS15za_c0-zdUM_aAJ39EGM5XGzVoH0xzAg-7mAIwM90m4_AE9y7kgQ/s220/webcamp.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxs626R8s38Ky-AHljc_VUbBFwZ2SQcu0zmu3KfIdg-8p1YYIcGSczd9Co1BqHzFR3WvKiO8sIErRvamT0b2c_8bq_knPSLlfD9gRhKZvd7ZvYY_WA8JkFztIV-whBZWmrOiUOz3IY3Oo7V3PLcbgKEPMdvk7LlScgn_OXUJnItCI6eo3TLpdOusDOSfPB/s72-w640-h406-c/ESP32-S3-Touch-LCD-7-details-intro.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2093917475945207513.post-445352273880148894</id><published>2026-02-01T19:47:00.003+07:00</published><updated>2026-02-01T19:47:44.753+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Arduino"/><category scheme="http://www.blogger.com/atom/ns#" term="komputer"/><category scheme="http://www.blogger.com/atom/ns#" term="Teknologi"/><title type='text'>Cara Upload Program ke ESP32-S3 7 Inch LCD Waveshare (Anti Gagal &amp; Anti Salah Port)</title><content type='html'>&lt;p&gt;Banyak pengguna &lt;strong data-end=&quot;470&quot; data-start=&quot;437&quot;&gt;ESP32-S3 7 inch LCD Waveshare&lt;/strong&gt; mengalami masalah yang sama:&lt;/p&gt;
&lt;ul data-end=&quot;667&quot; data-start=&quot;501&quot;&gt;&lt;li data-end=&quot;534&quot; data-start=&quot;501&quot;&gt;
&lt;p data-end=&quot;534&quot; data-start=&quot;503&quot;&gt;Dicolok ke laptop &lt;strong data-end=&quot;534&quot; data-start=&quot;521&quot;&gt;ada bunyi&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;567&quot; data-start=&quot;535&quot;&gt;
&lt;p data-end=&quot;567&quot; data-start=&quot;537&quot;&gt;Tapi &lt;strong data-end=&quot;567&quot; data-start=&quot;542&quot;&gt;tidak muncul COM port&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;620&quot; data-start=&quot;568&quot;&gt;
&lt;p data-end=&quot;620&quot; data-start=&quot;570&quot;&gt;Atau muncul sebentar lalu &lt;strong data-end=&quot;620&quot; data-start=&quot;596&quot;&gt;hilang seperti eject&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;667&quot; data-start=&quot;621&quot;&gt;
&lt;p data-end=&quot;667&quot; data-start=&quot;623&quot;&gt;Sudah ganti kabel, ganti laptop, tetap gagal&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;781&quot; data-start=&quot;669&quot;&gt;Padahal &lt;strong data-end=&quot;698&quot; data-start=&quot;677&quot;&gt;board tidak rusak&lt;/strong&gt;.&lt;br data-end=&quot;702&quot; data-start=&quot;699&quot; /&gt;
Masalahnya hampir selalu &lt;strong data-end=&quot;780&quot; data-start=&quot;727&quot;&gt;salah port USB dan salah cara masuk download mode&lt;/strong&gt;.&lt;/p&gt;&lt;p data-end=&quot;892&quot; data-start=&quot;783&quot;&gt;Artikel ini membahas &lt;strong data-end=&quot;838&quot; data-start=&quot;804&quot;&gt;cara upload program yang BENAR&lt;/strong&gt;, berdasarkan pengalaman nyata, bukan teori datasheet.&lt;/p&gt;&lt;h2 data-end=&quot;950&quot; data-start=&quot;899&quot;&gt;Kenali Dulu: ESP32-S3 Waveshare Punya 2 Port USB&lt;/h2&gt;&lt;h2 data-end=&quot;950&quot; data-start=&quot;899&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtFw2cbsod9didto4YNaxqcTs6RiAwR-xCVLyIUA1UlbvAhwUUBktfhesbbxoSnBN60CqC5iZRcuNL-QaDYW4suUqBY0kvXil5cFBQ0B0w-SCYm2Te55ID_cw8kimAodqfT5O_gu3QY8RZPz4QpHMrOtzTfVisAOmoz1e-wPqWqw7dP1vmzsl885NXtH5z/s960/ESP32-S3-Touch-LCD-7-details-intro.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;608&quot; data-original-width=&quot;960&quot; height=&quot;406&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtFw2cbsod9didto4YNaxqcTs6RiAwR-xCVLyIUA1UlbvAhwUUBktfhesbbxoSnBN60CqC5iZRcuNL-QaDYW4suUqBY0kvXil5cFBQ0B0w-SCYm2Te55ID_cw8kimAodqfT5O_gu3QY8RZPz4QpHMrOtzTfVisAOmoz1e-wPqWqw7dP1vmzsl885NXtH5z/w640-h406/ESP32-S3-Touch-LCD-7-details-intro.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiXjTOOGyAY8JHJuAeQICFomsYhbFUXq7b-B9hnrNiF5UmyL6zzMemzI5RfdiuKcjBSmXXj7WHst0CF430tJnppqUG_kWUsoyTXcr5keMEZxMpF4Cev4VLZzOyMdJVLXnrkNX4xxpE6j2a8y3nf6oca6TW15vL563BqmrGKtQwHe1oaGHRfUJV2_2WbhklJ&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;506&quot; data-original-width=&quot;1158&quot; height=&quot;280&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiXjTOOGyAY8JHJuAeQICFomsYhbFUXq7b-B9hnrNiF5UmyL6zzMemzI5RfdiuKcjBSmXXj7WHst0CF430tJnppqUG_kWUsoyTXcr5keMEZxMpF4Cev4VLZzOyMdJVLXnrkNX4xxpE6j2a8y3nf6oca6TW15vL563BqmrGKtQwHe1oaGHRfUJV2_2WbhklJ=w640-h280&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/h2&gt;&lt;p data-end=&quot;1039&quot; data-start=&quot;994&quot;&gt;Pada board ini terdapat &lt;strong data-end=&quot;1038&quot; data-start=&quot;1018&quot;&gt;dua konektor USB&lt;/strong&gt;:&lt;/p&gt;
&lt;h3 data-end=&quot;1061&quot; data-start=&quot;1041&quot;&gt;1️⃣ Port &lt;strong data-end=&quot;1061&quot; data-start=&quot;1054&quot;&gt;USB&lt;/strong&gt;&lt;/h3&gt;
&lt;ul data-end=&quot;1262&quot; data-start=&quot;1062&quot;&gt;&lt;li data-end=&quot;1104&quot; data-start=&quot;1062&quot;&gt;
&lt;p data-end=&quot;1104&quot; data-start=&quot;1064&quot;&gt;Ini adalah &lt;strong data-end=&quot;1104&quot; data-start=&quot;1075&quot;&gt;USB native / OTG ESP32-S3&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1138&quot; data-start=&quot;1105&quot;&gt;
&lt;p data-end=&quot;1138&quot; data-start=&quot;1107&quot;&gt;&lt;strong data-end=&quot;1138&quot; data-start=&quot;1107&quot;&gt;BUKAN untuk upload firmware&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1179&quot; data-start=&quot;1139&quot;&gt;
&lt;p data-end=&quot;1179&quot; data-start=&quot;1141&quot;&gt;Biasanya hanya bunyi “ting” di Windows&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1234&quot; data-start=&quot;1180&quot;&gt;
&lt;p data-end=&quot;1234&quot; data-start=&quot;1182&quot;&gt;Kadang muncul seperti flash disk atau langsung eject&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1262&quot; data-start=&quot;1235&quot;&gt;
&lt;p data-end=&quot;1262&quot; data-start=&quot;1237&quot;&gt;&lt;strong data-end=&quot;1262&quot; data-start=&quot;1237&quot;&gt;TIDAK muncul COM port&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;1290&quot; data-start=&quot;1264&quot;&gt;👉 Port ini dipakai untuk:&lt;/p&gt;
&lt;ul data-end=&quot;1365&quot; data-start=&quot;1291&quot;&gt;&lt;li data-end=&quot;1300&quot; data-start=&quot;1291&quot;&gt;
&lt;p data-end=&quot;1300&quot; data-start=&quot;1293&quot;&gt;USB HID&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1308&quot; data-start=&quot;1301&quot;&gt;
&lt;p data-end=&quot;1308&quot; data-start=&quot;1303&quot;&gt;Touch&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1318&quot; data-start=&quot;1309&quot;&gt;
&lt;p data-end=&quot;1318&quot; data-start=&quot;1311&quot;&gt;USB MSC&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1365&quot; data-start=&quot;1319&quot;&gt;&lt;p data-end=&quot;1365&quot; data-start=&quot;1321&quot;&gt;Fitur USB lanjutan (jika firmware mendukung)&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3 data-end=&quot;1411&quot; data-start=&quot;1372&quot;&gt;2️⃣ Port &lt;strong data-end=&quot;1394&quot; data-start=&quot;1385&quot;&gt;UART1&lt;/strong&gt; (INI YANG BENAR)&lt;/h3&gt;
&lt;ul data-end=&quot;1539&quot; data-start=&quot;1412&quot;&gt;&lt;li data-end=&quot;1466&quot; data-start=&quot;1412&quot;&gt;
&lt;p data-end=&quot;1466&quot; data-start=&quot;1414&quot;&gt;Terhubung ke chip &lt;strong data-end=&quot;1466&quot; data-start=&quot;1432&quot;&gt;USB-to-Serial (CH343 / CP210x)&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1539&quot; data-start=&quot;1467&quot;&gt;
&lt;p data-end=&quot;1485&quot; data-start=&quot;1469&quot;&gt;Digunakan untuk:&lt;/p&gt;
&lt;ul data-end=&quot;1539&quot; data-start=&quot;1488&quot;&gt;&lt;li data-end=&quot;1504&quot; data-start=&quot;1488&quot;&gt;
&lt;p data-end=&quot;1504&quot; data-start=&quot;1490&quot;&gt;Upload program&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1523&quot; data-start=&quot;1507&quot;&gt;
&lt;p data-end=&quot;1523&quot; data-start=&quot;1509&quot;&gt;Serial monitor&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1539&quot; data-start=&quot;1526&quot;&gt;
&lt;p data-end=&quot;1539&quot; data-start=&quot;1528&quot;&gt;Debug dasar&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;&lt;/ul&gt;&lt;p data-end=&quot;1585&quot; data-start=&quot;1541&quot;&gt;📌 &lt;strong data-end=&quot;1585&quot; data-start=&quot;1544&quot;&gt;Semua proses upload WAJIB lewat UART1&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;&lt;h2 data-end=&quot;1648&quot; data-start=&quot;1592&quot;&gt;Ciri ESP32-S3 Waveshare Sudah Terdeteksi dengan Benar&lt;/h2&gt;
&lt;p data-end=&quot;1740&quot; data-start=&quot;1650&quot;&gt;Jika colok ke &lt;strong data-end=&quot;1673&quot; data-start=&quot;1664&quot;&gt;UART1&lt;/strong&gt; dan driver sudah benar, di &lt;strong data-end=&quot;1727&quot; data-start=&quot;1701&quot;&gt;Device Manager Windows&lt;/strong&gt; akan muncul:&lt;/p&gt;
&lt;pre class=&quot;overflow-visible! px-0!&quot; data-end=&quot;1804&quot; data-start=&quot;1742&quot;&gt;&lt;div class=&quot;contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary&quot;&gt;&lt;div class=&quot;sticky top-[calc(var(--sticky-padding-top)+9*var(--spacing))]&quot;&gt;&lt;div class=&quot;absolute end-0 bottom-0 flex h-9 items-center pe-2&quot;&gt;&lt;div class=&quot;bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;overflow-y-auto p-4&quot; dir=&quot;ltr&quot;&gt;&lt;code class=&quot;whitespace-pre!&quot;&gt;&lt;span&gt;&lt;span&gt;Ports (COM &amp;amp; LPT)
 └─ USB-Enhanced-SERIAL CH343 (COMx)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;p data-end=&quot;1904&quot; data-start=&quot;1806&quot;&gt;Jika COM port sudah muncul:&lt;br /&gt;
✅ Board aman&lt;br data-end=&quot;1849&quot; data-start=&quot;1846&quot; /&gt;
✅ USB aman&lt;br data-end=&quot;1862&quot; data-start=&quot;1859&quot; /&gt;
✅ Tinggal masalah software / mode upload&lt;/p&gt;&lt;p data-end=&quot;1904&quot; data-start=&quot;1806&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiO_sCOXtBUh91QQ-bUeOdOneI8n0JP-VhMbMjncpQF5zzRHAQNjvp23X7QjIh1UAc7S4415uEHiopKsEWvh2-YXrqULewO6Rfl1WcH8xzgovmXaRBAAkckF4N1sqAXZcPAbEasaKawXHjz5cDLr7FMqkBpIynMGugzuVgDth_wO9swD0voKF0mYsSmArz_&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;675&quot; data-original-width=&quot;1144&quot; height=&quot;378&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiO_sCOXtBUh91QQ-bUeOdOneI8n0JP-VhMbMjncpQF5zzRHAQNjvp23X7QjIh1UAc7S4415uEHiopKsEWvh2-YXrqULewO6Rfl1WcH8xzgovmXaRBAAkckF4N1sqAXZcPAbEasaKawXHjz5cDLr7FMqkBpIynMGugzuVgDth_wO9swD0voKF0mYsSmArz_=w640-h378&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;h2 data-end=&quot;1951&quot; data-start=&quot;1911&quot;&gt;Cara Masuk Download Mode (WAJIB TAHU)&lt;/h2&gt;
&lt;p data-end=&quot;2016&quot; data-start=&quot;1953&quot;&gt;Board Waveshare &lt;strong data-end=&quot;1985&quot; data-start=&quot;1969&quot;&gt;cukup bandel&lt;/strong&gt;, jadi jangan asal klik upload.&lt;/p&gt;
&lt;h3 data-end=&quot;2040&quot; data-start=&quot;2018&quot;&gt;Urutan yang BENAR:&lt;/h3&gt;
&lt;ol data-end=&quot;2192&quot; data-start=&quot;2041&quot;&gt;&lt;li data-end=&quot;2072&quot; data-start=&quot;2041&quot;&gt;
&lt;p data-end=&quot;2072&quot; data-start=&quot;2044&quot;&gt;Colok kabel USB ke &lt;strong data-end=&quot;2072&quot; data-start=&quot;2063&quot;&gt;UART1&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2105&quot; data-start=&quot;2073&quot;&gt;
&lt;p data-end=&quot;2105&quot; data-start=&quot;2076&quot;&gt;Tekan &amp;amp; tahan tombol &lt;strong data-end=&quot;2105&quot; data-start=&quot;2097&quot;&gt;BOOT&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2141&quot; data-start=&quot;2106&quot;&gt;
&lt;p data-end=&quot;2141&quot; data-start=&quot;2109&quot;&gt;Tekan tombol &lt;strong data-end=&quot;2131&quot; data-start=&quot;2122&quot;&gt;RESET&lt;/strong&gt; satu kali&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2169&quot; data-start=&quot;2142&quot;&gt;
&lt;p data-end=&quot;2169&quot; data-start=&quot;2145&quot;&gt;Lepaskan tombol &lt;strong data-end=&quot;2169&quot; data-start=&quot;2161&quot;&gt;BOOT&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2192&quot; data-start=&quot;2170&quot;&gt;
&lt;p data-end=&quot;2192&quot; data-start=&quot;2173&quot;&gt;Baru lakukan upload&lt;/p&gt;
&lt;/li&gt;&lt;/ol&gt;
&lt;p data-end=&quot;2220&quot; data-start=&quot;2194&quot;&gt;📌 Kalau upload mentok di:&lt;/p&gt;
&lt;pre class=&quot;overflow-visible! px-0!&quot; data-end=&quot;2248&quot; data-start=&quot;2221&quot;&gt;&lt;div class=&quot;contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary&quot;&gt;&lt;div class=&quot;sticky top-[calc(var(--sticky-padding-top)+9*var(--spacing))]&quot;&gt;&lt;div class=&quot;absolute end-0 bottom-0 flex h-9 items-center pe-2&quot;&gt;&lt;div class=&quot;bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;overflow-y-auto p-4&quot; dir=&quot;ltr&quot;&gt;&lt;code class=&quot;whitespace-pre!&quot;&gt;&lt;span&gt;&lt;span&gt;Connecting.........
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p data-end=&quot;2275&quot; data-start=&quot;2249&quot;&gt;👉 tekan &lt;strong data-end=&quot;2274&quot; data-start=&quot;2258&quot;&gt;RESET sekali&lt;/strong&gt;.&lt;/p&gt;&lt;h2 data-end=&quot;2319&quot; data-start=&quot;2282&quot;&gt;Upload Program Menggunakan ESP-IDF&lt;/h2&gt;
&lt;h3 data-end=&quot;2338&quot; data-start=&quot;2321&quot;&gt;Setting awal:&lt;/h3&gt;
&lt;pre class=&quot;overflow-visible! px-0!&quot; data-end=&quot;2394&quot; data-start=&quot;2339&quot;&gt;&lt;div class=&quot;contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary&quot;&gt;&lt;div class=&quot;sticky top-[calc(var(--sticky-padding-top)+9*var(--spacing))]&quot;&gt;&lt;div class=&quot;absolute end-0 bottom-0 flex h-9 items-center pe-2&quot;&gt;&lt;div class=&quot;bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;overflow-y-auto p-4&quot; dir=&quot;ltr&quot;&gt;&lt;code class=&quot;whitespace-pre! language-bash&quot;&gt;&lt;span&gt;&lt;span&gt;idf.py set-target esp32s3
idf.py menuconfig
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;h3 data-end=&quot;2417&quot; data-start=&quot;2396&quot;&gt;Pastikan di menu:&lt;/h3&gt;
&lt;pre class=&quot;overflow-visible! px-0!&quot; data-end=&quot;2503&quot; data-start=&quot;2418&quot;&gt;&lt;div class=&quot;contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary&quot;&gt;&lt;div class=&quot;sticky top-[calc(var(--sticky-padding-top)+9*var(--spacing))]&quot;&gt;&lt;div class=&quot;absolute end-0 bottom-0 flex h-9 items-center pe-2&quot;&gt;&lt;div class=&quot;bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;overflow-y-auto p-4&quot; dir=&quot;ltr&quot;&gt;&lt;code class=&quot;whitespace-pre!&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span class=&quot;hljs-built_in&quot;&gt;Serial&lt;/span&gt;&lt;/span&gt;&lt;span&gt; flasher config
 ├─ Flash UART port : COMx
 └─ Flash baud rate : &lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-number&quot;&gt;460800&lt;/span&gt;&lt;/span&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;p data-end=&quot;2510&quot; data-start=&quot;2505&quot;&gt;Lalu:&lt;/p&gt;
&lt;pre class=&quot;overflow-visible! px-0!&quot; data-end=&quot;2556&quot; data-start=&quot;2511&quot;&gt;&lt;div class=&quot;contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary&quot;&gt;&lt;div class=&quot;sticky top-[calc(var(--sticky-padding-top)+9*var(--spacing))]&quot;&gt;&lt;div class=&quot;absolute end-0 bottom-0 flex h-9 items-center pe-2&quot;&gt;&lt;div class=&quot;bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;overflow-y-auto p-4&quot; dir=&quot;ltr&quot;&gt;&lt;code class=&quot;whitespace-pre! language-bash&quot;&gt;&lt;span&gt;&lt;span&gt;idf.py build
idf.py flash monitor&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;&lt;h2 data-end=&quot;2604&quot; data-start=&quot;2563&quot;&gt;Upload Program Menggunakan Arduino IDE&lt;/h2&gt;
&lt;h3 data-end=&quot;2628&quot; data-start=&quot;2606&quot;&gt;Setting yang aman:&lt;/h3&gt;
&lt;ul data-end=&quot;2740&quot; data-start=&quot;2629&quot;&gt;&lt;li data-end=&quot;2661&quot; data-start=&quot;2629&quot;&gt;
&lt;p data-end=&quot;2661&quot; data-start=&quot;2631&quot;&gt;Board : &lt;strong data-end=&quot;2661&quot; data-start=&quot;2639&quot;&gt;ESP32S3 Dev Module&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2680&quot; data-start=&quot;2662&quot;&gt;
&lt;p data-end=&quot;2680&quot; data-start=&quot;2664&quot;&gt;Port  : &lt;strong data-end=&quot;2680&quot; data-start=&quot;2672&quot;&gt;COMx&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2712&quot; data-start=&quot;2681&quot;&gt;
&lt;p data-end=&quot;2712&quot; data-start=&quot;2683&quot;&gt;USB CDC on boot : &lt;strong data-end=&quot;2712&quot; data-start=&quot;2701&quot;&gt;Enabled&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2740&quot; data-start=&quot;2713&quot;&gt;
&lt;p data-end=&quot;2740&quot; data-start=&quot;2715&quot;&gt;Upload Speed : &lt;strong data-end=&quot;2740&quot; data-start=&quot;2730&quot;&gt;460800&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;&lt;p data-end=&quot;2795&quot; data-start=&quot;2742&quot;&gt;Klik &lt;strong data-end=&quot;2757&quot; data-start=&quot;2747&quot;&gt;Upload&lt;/strong&gt;&lt;br data-end=&quot;2760&quot; data-start=&quot;2757&quot; /&gt;
Jika gagal → tekan &lt;strong data-end=&quot;2795&quot; data-start=&quot;2779&quot;&gt;RESET sekali&lt;/strong&gt;&lt;/p&gt;&lt;h2 data-end=&quot;2856&quot; data-start=&quot;2802&quot;&gt;Kesalahan Paling Sering (dan Penyebab Gagal Upload)&lt;/h2&gt;&lt;p data-end=&quot;3056&quot; data-start=&quot;2858&quot;&gt;❌ Upload lewat port &lt;strong data-end=&quot;2885&quot; data-start=&quot;2878&quot;&gt;USB&lt;/strong&gt;, bukan UART1&lt;br data-end=&quot;2901&quot; data-start=&quot;2898&quot; /&gt;
❌ Mengira board rusak karena COM tidak muncul&lt;br data-end=&quot;2949&quot; data-start=&quot;2946&quot; /&gt;
❌ Tidak masuk &lt;strong data-end=&quot;2980&quot; data-start=&quot;2963&quot;&gt;download mode&lt;/strong&gt;&lt;br data-end=&quot;2983&quot; data-start=&quot;2980&quot; /&gt;
❌ Kabel USB hanya untuk charging&lt;br data-end=&quot;3018&quot; data-start=&quot;3015&quot; /&gt;
❌ Langsung upload program LVGL berat&lt;/p&gt;&lt;h2 data-end=&quot;3094&quot; data-start=&quot;3063&quot;&gt;Tips Aman untuk Pertama Kali&lt;/h2&gt;
&lt;p data-end=&quot;3256&quot; data-start=&quot;3096&quot;&gt;✔ Selalu tes upload program &lt;strong data-end=&quot;3142&quot; data-start=&quot;3124&quot;&gt;sederhana dulu&lt;/strong&gt;&lt;br data-end=&quot;3145&quot; data-start=&quot;3142&quot; /&gt;
✔ Jangan langsung pakai LVGL / SquareLine&lt;br data-end=&quot;3189&quot; data-start=&quot;3186&quot; /&gt;
✔ Pastikan COM port stabil&lt;br data-end=&quot;3218&quot; data-start=&quot;3215&quot; /&gt;
✔ Gunakan kabel USB data berkualitas&lt;/p&gt;&lt;p data-end=&quot;3329&quot; data-start=&quot;3258&quot;&gt;Jika program sederhana berhasil di-flash:&lt;br /&gt;
👉 &lt;strong data-end=&quot;3329&quot; data-start=&quot;3303&quot;&gt;board dipastikan sehat&lt;/strong&gt;&lt;/p&gt;&lt;h2 data-end=&quot;3346&quot; data-start=&quot;3336&quot;&gt;Penutup&lt;/h2&gt;
&lt;p data-end=&quot;3445&quot; data-start=&quot;3348&quot;&gt;ESP32-S3 7 inch LCD Waveshare &lt;strong data-end=&quot;3399&quot; data-start=&quot;3378&quot;&gt;bukan board rusak&lt;/strong&gt;, tapi &lt;strong data-end=&quot;3444&quot; data-start=&quot;3406&quot;&gt;board yang mudah bikin salah paham&lt;/strong&gt;.&lt;/p&gt;
&lt;p data-end=&quot;3453&quot; data-start=&quot;3447&quot;&gt;Kalau:&lt;/p&gt;
&lt;ul data-end=&quot;3554&quot; data-start=&quot;3454&quot;&gt;&lt;li data-end=&quot;3487&quot; data-start=&quot;3454&quot;&gt;
&lt;p data-end=&quot;3487&quot; data-start=&quot;3456&quot;&gt;Salah port → COM tidak muncul&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;3517&quot; data-start=&quot;3488&quot;&gt;
&lt;p data-end=&quot;3517&quot; data-start=&quot;3490&quot;&gt;Salah mode → upload gagal&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;3554&quot; data-start=&quot;3518&quot;&gt;
&lt;p data-end=&quot;3554&quot; data-start=&quot;3520&quot;&gt;Salah asumsi → dikira board mati&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;3667&quot; data-start=&quot;3556&quot;&gt;Dengan memahami &lt;strong data-end=&quot;3624&quot; data-start=&quot;3572&quot;&gt;fungsi dua port USB dan cara masuk download mode&lt;/strong&gt;, proses upload akan &lt;strong data-end=&quot;3666&quot; data-start=&quot;3645&quot;&gt;normal dan stabil&lt;/strong&gt;.&lt;/p&gt;&lt;p data-end=&quot;3667&quot; data-start=&quot;3556&quot;&gt;baca juga : &lt;a href=&quot;https://www.carapaklek.com/2026/02/unboxing-esp32-s3-7-inch-touchscreen.html&quot;&gt;Unboxing ESP32-S3 7 Inch Touchscreen Waveshare: Fungsi USB dan Skema Port Lengkap&amp;nbsp;&lt;/a&gt;&lt;/p&gt;

&lt;script type=&quot;application/ld+json&quot;&gt;
{
  &quot;@context&quot;: &quot;https://schema.org&quot;,
  &quot;@type&quot;: &quot;Article&quot;,
  &quot;mainEntityOfPage&quot;: {
    &quot;@type&quot;: &quot;WebPage&quot;,
    &quot;@id&quot;: &quot;https://www.carapaklek.com/2026/02/cara-upload-program-ke-esp32-s3-7-inch.html&quot;
  },
  &quot;headline&quot;: &quot;Cara Upload Program ke ESP32-S3 7 Inch LCD Waveshare&quot;,
  &quot;description&quot;: &quot;Cara upload program ke ESP32-S3 7 inch LCD Waveshare lewat UART1. Bahas port USB vs UART, download mode, dan solusi COM port tidak muncul.&quot;,
  &quot;image&quot;: [
    &quot;https://blogger.googleusercontent.com/img/a/AVvXsEiO_sCOXtBUh91QQ-bUeOdOneI8n0JP-VhMbMjncpQF5zzRHAQNjvp23X7QjIh1UAc7S4415uEHiopKsEWvh2-YXrqULewO6Rfl1WcH8xzgovmXaRBAAkckF4N1sqAXZcPAbEasaKawXHjz5cDLr7FMqkBpIynMGugzuVgDth_wO9swD0voKF0mYsSmArz_&quot;
  ],
  &quot;author&quot;: {
    &quot;@type&quot;: &quot;Person&quot;,
    &quot;name&quot;: &quot;Paklek&quot;
  },
  &quot;publisher&quot;: {
    &quot;@type&quot;: &quot;Organization&quot;,
    &quot;name&quot;: &quot;CaraPaklek&quot;,
    &quot;logo&quot;: {
      &quot;@type&quot;: &quot;ImageObject&quot;,
      &quot;url&quot;: &quot;https://www.carapaklek.com/favicon.ico&quot;
    }
  },
  &quot;datePublished&quot;: &quot;2026-02-01&quot;,
  &quot;dateModified&quot;: &quot;2026-02-01&quot;
}
&lt;/script&gt;
</content><link rel='replies' type='application/atom+xml' href='https://www.carapaklek.com/feeds/445352273880148894/comments/default' title='Posting Komentar'/><link rel='replies' type='text/html' href='https://www.carapaklek.com/2026/02/cara-upload-program-ke-esp32-s3-7-inch.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/2093917475945207513/posts/default/445352273880148894'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/2093917475945207513/posts/default/445352273880148894'/><link rel='alternate' type='text/html' href='https://www.carapaklek.com/2026/02/cara-upload-program-ke-esp32-s3-7-inch.html' title='Cara Upload Program ke ESP32-S3 7 Inch LCD Waveshare (Anti Gagal &amp; Anti Salah Port)'/><author><name>carapaklek.com</name><uri>http://www.blogger.com/profile/12438575085929354819</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj84wNpqEWz7nUZmjNjPBarFLyRAZARNpnydt-LYU_GZhXNGZFUplzpWB82bcX7camGkjKhQ-KGgMvx5RMUkIl4gkJvWLq8dlBfnRdA_lNZPKfK8QjiWqasrUvzS15za_c0-zdUM_aAJ39EGM5XGzVoH0xzAg-7mAIwM90m4_AE9y7kgQ/s220/webcamp.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtFw2cbsod9didto4YNaxqcTs6RiAwR-xCVLyIUA1UlbvAhwUUBktfhesbbxoSnBN60CqC5iZRcuNL-QaDYW4suUqBY0kvXil5cFBQ0B0w-SCYm2Te55ID_cw8kimAodqfT5O_gu3QY8RZPz4QpHMrOtzTfVisAOmoz1e-wPqWqw7dP1vmzsl885NXtH5z/s72-w640-h406-c/ESP32-S3-Touch-LCD-7-details-intro.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2093917475945207513.post-1725853760394174994</id><published>2026-02-01T16:56:00.002+07:00</published><updated>2026-02-01T19:51:06.573+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Arduino"/><category scheme="http://www.blogger.com/atom/ns#" term="komputer"/><category scheme="http://www.blogger.com/atom/ns#" term="Teknologi"/><title type='text'>Unboxing ESP32-S3 7 Inch Touchscreen Waveshare: Fungsi USB dan Skema Port Lengkap</title><content type='html'>&lt;p&gt;&lt;/p&gt;&lt;p&gt;ESP32-S3 7 Inch Touchscreen dari Waveshare cukup populer digunakan untuk HMI, dashboard IoT, hingga panel kontrol industri. Namun pada penggunaan awal, banyak pengguna mengalami kebingungan, terutama terkait &lt;b&gt;dua port USB Type-C&lt;/b&gt; yang terlihat sama tetapi memiliki fungsi berbeda.&lt;/p&gt;&lt;p&gt;Artikel ini dibuat sebagai pelengkap video YouTube, dengan fokus pada &lt;b&gt;penjelasan skema, fungsi port, dan jalur komunikasi&lt;/b&gt; agar tidak salah sambung sejak awal.&lt;/p&gt;&lt;h2&gt;Sekilas Spesifikasi ESP32-S3 Touch LCD 7 Inch&lt;/h2&gt;&lt;p&gt;Modul ini menggabungkan mikrokontroler ESP32-S3 dengan layar LCD touchscreen berukuran 7 inch (resolusi 800×480). Beberapa poin penting:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;ESP32-S3 dengan WiFi &amp;amp; Bluetooth&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;PSRAM dan Flash onboard&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Layar LCD 7 inch + touch panel&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Mendukung USB to UART, CAN, RS485, dan I2C&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Cocok untuk LVGL dan SquareLine Studio&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Gambar berikut menunjukkan penamaan komponen dan konektor utama pada board:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgq6mg1CEn8CFuXnvr-UuagbJNBHB-SKkubVl7cH3A0UJ8fi5coNEseKY61COcHkmG_4G5gQWWN_ZC91Y4NlDCCSJdzib-eQJaM7zyCBU_WeP9qvne4q-m-70DwnN8lked_Tbm1fPm9im29-kODP4DVQcrkS5rJuOeeprolM2QgFx1UUtbLhREG6D1JyLOi&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;608&quot; data-original-width=&quot;960&quot; height=&quot;406&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgq6mg1CEn8CFuXnvr-UuagbJNBHB-SKkubVl7cH3A0UJ8fi5coNEseKY61COcHkmG_4G5gQWWN_ZC91Y4NlDCCSJdzib-eQJaM7zyCBU_WeP9qvne4q-m-70DwnN8lked_Tbm1fPm9im29-kODP4DVQcrkS5rJuOeeprolM2QgFx1UUtbLhREG6D1JyLOi=w640-h406&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBZ0VJ0ju2AbANz4fvuPiFceP_TR8C7f1IWo4kxprKZMy_TfLeQCA9L5U_xe21H_pZbh_B8W9etVrwDh7mle-l3DgOiJNJakOqLjshs2L4yLH8527lmTkZssB2txDxwLpVxnLC1P22aK1mFfBNzYnNsRq4S5OhBRrzXc_iteo2v3ajI8ifQ77svUd4_hOc/s1158/Untitled-2.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;506&quot; data-original-width=&quot;1158&quot; height=&quot;280&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBZ0VJ0ju2AbANz4fvuPiFceP_TR8C7f1IWo4kxprKZMy_TfLeQCA9L5U_xe21H_pZbh_B8W9etVrwDh7mle-l3DgOiJNJakOqLjshs2L4yLH8527lmTkZssB2txDxwLpVxnLC1P22aK1mFfBNzYnNsRq4S5OhBRrzXc_iteo2v3ajI8ifQ77svUd4_hOc/w640-h280/Untitled-2.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;h2&gt;Fungsi Dua Port USB Type-C (Paling Sering Membingungkan)&lt;/h2&gt;&lt;p&gt;Pada board ESP32-S3 Touch LCD 7 Inch terdapat &lt;b&gt;dua port USB Type-C&lt;/b&gt; yang secara fisik terlihat mirip. Inilah sumber kesalahan paling umum.&lt;/p&gt;&lt;h3&gt;USB Type-C No. 5 – USB untuk Power &amp;amp; Upload Program&lt;/h3&gt;&lt;p&gt;Port USB Type-C &lt;b&gt;nomor 5&lt;/b&gt; digunakan untuk:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Memberikan catu daya ke board&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Upload firmware (ESP-IDF / Arduino)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Serial monitor utama&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Port inilah yang &lt;b&gt;wajib digunakan saat flashing program&lt;/b&gt;. Jika tujuan Anda adalah upload firmware, selalu gunakan port ini.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjnUyQmCd0S6d4AhD81ISoJ4o_Oe9D2QkovHh-wZ6c1VQGlDsiUoxar-L_lGlKg4ff0DrnY1qpW9Nfdy9zKYAAVJ4Gvw8Nw_KuxjGWeMbABwphEXKiDz-0depA6MJJofZK3Xl31v67D3aVxki2r55nW2A1HtTjBsCXwVXRg1kmBz1yrRYdrKTd1frT4etRU&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;1152&quot; data-original-width=&quot;1101&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjnUyQmCd0S6d4AhD81ISoJ4o_Oe9D2QkovHh-wZ6c1VQGlDsiUoxar-L_lGlKg4ff0DrnY1qpW9Nfdy9zKYAAVJ4Gvw8Nw_KuxjGWeMbABwphEXKiDz-0depA6MJJofZK3Xl31v67D3aVxki2r55nW2A1HtTjBsCXwVXRg1kmBz1yrRYdrKTd1frT4etRU=w611-h640&quot; width=&quot;611&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;Kesalahan umum: menggunakan port USB yang salah sehingga upload gagal meskipun COM port terdeteksi.&lt;/p&gt;&lt;/blockquote&gt;&lt;h3&gt;USB Type-C No. 6 – USB to UART Tambahan&lt;/h3&gt;&lt;p&gt;Port USB Type-C &lt;b&gt;nomor 6&lt;/b&gt; juga merupakan USB to UART, namun fungsinya berbeda:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Digunakan untuk komunikasi UART tambahan&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Terhubung ke UART1 atau UART2&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Cocok untuk debugging atau komunikasi serial eksternal&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Port ini &lt;b&gt;bukan port utama untuk upload firmware&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;Jika port ini digunakan untuk flashing, biasanya akan muncul gejala:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;COM port terdeteksi&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Proses upload timeout atau gagal&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;UART1 dan UART2: Jalur yang Sama, Dipilih dengan Switch&lt;/h2&gt;&lt;p&gt;ESP32-S3 Touch LCD 7 Inch memiliki UART1 dan UART2 yang &lt;b&gt;sebenarnya adalah jalur UART yang sama&lt;/b&gt;, dan pemilihannya dilakukan menggunakan switch di board.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Hal yang perlu diperhatikan:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Posisi switch menentukan jalur UART aktif&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Salah posisi switch dapat menyebabkan kegagalan komunikasi&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;UART ini umumnya digunakan untuk modul eksternal seperti RS485 atau perangkat serial lain&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;Antarmuka Lain yang Tersedia&lt;/h2&gt;&lt;p&gt;Selain USB dan UART, board ini juga menyediakan beberapa antarmuka lain:&lt;/p&gt;&lt;h3&gt;Sensor Interface&lt;/h3&gt;&lt;p&gt;Digunakan untuk berbagai modul sensor eksternal.&lt;/p&gt;&lt;h3&gt;I2C Interface&lt;/h3&gt;&lt;p&gt;Mendukung koneksi perangkat I2C dengan level tegangan yang dapat dipilih (3.3V / 5V).&lt;/p&gt;&lt;h3&gt;CAN Interface&lt;/h3&gt;&lt;p&gt;Tersedia header CAN lengkap dengan opsi resistor terminasi.&lt;/p&gt;&lt;h3&gt;RS485 Interface&lt;/h3&gt;&lt;p&gt;Mendukung komunikasi RS485 untuk aplikasi industri.&lt;/p&gt;&lt;p&gt;Semua antarmuka ini sudah ditandai dengan jelas pada silkscreen board.&lt;/p&gt;&lt;h2&gt;Tips Aman Penggunaan Awal&lt;/h2&gt;&lt;p&gt;Agar tidak mengalami masalah saat pertama kali mencoba board ini:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;p&gt;Gunakan &lt;b&gt;USB Type-C No.5&lt;/b&gt; untuk upload program&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Periksa posisi &lt;b&gt;switch UART&lt;/b&gt; sebelum debugging&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Jangan menyimpulkan board rusak hanya karena upload gagal&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Pastikan driver USB to UART sudah terpasang dengan benar&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;h2&gt;Penutup&lt;/h2&gt;&lt;p&gt;ESP32-S3 7 Inch Touchscreen Waveshare bukanlah board yang rumit, tetapi membutuhkan pemahaman dasar tentang &lt;b&gt;fungsi port dan jalur komunikasi&lt;/b&gt;. Dengan mengetahui perbedaan dua USB Type-C dan fungsi UART, proses pengembangan akan jauh lebih lancar.&lt;/p&gt;&lt;p&gt;Artikel ini melengkapi pembahasan video unboxing, khusus untuk pembaca yang membutuhkan &lt;b&gt;skema dan penjelasan teknis lebih detail&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;Semoga membantu, dan semoga tidak salah colok USB lagi 😊&lt;/p&gt;&lt;p&gt;Baca juga : &lt;a href=&quot;https://www.carapaklek.com/2026/01/espressif-ide-download-guide-official.html&quot;&gt;Espressif IDE Download Guide (Official ESP-IDF IDE for Windows, macOS, and Linux)&amp;nbsp;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;script type=&quot;application/ld+json&quot;&gt;
{
  &quot;@context&quot;: &quot;https://schema.org&quot;,
  &quot;@type&quot;: &quot;Article&quot;,
  &quot;mainEntityOfPage&quot;: {
    &quot;@type&quot;: &quot;WebPage&quot;,
    &quot;@id&quot;: &quot;https://www.carapaklek.com/2026/02/unboxing-esp32-s3-7-inch-touchscreen.html&quot;
  },
  &quot;headline&quot;: &quot;Unboxing ESP32-S3 7 Inch Touchscreen Waveshare – Fungsi USB dan Skema Port&quot;,
  &quot;description&quot;: &quot;Penjelasan fungsi USB Type-C, UART, dan skema port ESP32-S3 7 inch Touchscreen Waveshare agar tidak salah colok saat upload program.&quot;,
  &quot;image&quot;: [
    &quot;https://blogger.googleusercontent.com/img/a/AVvXsEgq6mg1CEn8CFuXnvr-UuagbJNBHB-SKkubVl7cH3A0UJ8fi5coNEseKY61COcHkmG_4G5gQWWN_ZC91Y4NlDCCSJdzib-eQJaM7zyCBU_WeP9qvne4q-m-70DwnN8lked_Tbm1fPm9im29-kODP4DVQcrkS5rJuOeeprolM2QgFx1UUtbLhREG6D1JyLOi&quot;
  ],
  &quot;author&quot;: {
    &quot;@type&quot;: &quot;Person&quot;,
    &quot;name&quot;: &quot;carapaklek&quot;
  },
  &quot;publisher&quot;: {
    &quot;@type&quot;: &quot;Organization&quot;,
    &quot;name&quot;: &quot;carapaklek.com&quot;,
    &quot;logo&quot;: {
      &quot;@type&quot;: &quot;ImageObject&quot;,
      &quot;url&quot;: &quot;https://www.carapaklek.com/favicon.ico&quot;
    }
  },
  &quot;datePublished&quot;: &quot;2026-02-01&quot;,
  &quot;dateModified&quot;: &quot;2026-02-01&quot;
}
&lt;/script&gt;
</content><link rel='replies' type='application/atom+xml' href='https://www.carapaklek.com/feeds/1725853760394174994/comments/default' title='Posting Komentar'/><link rel='replies' type='text/html' href='https://www.carapaklek.com/2026/02/unboxing-esp32-s3-7-inch-touchscreen.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/2093917475945207513/posts/default/1725853760394174994'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/2093917475945207513/posts/default/1725853760394174994'/><link rel='alternate' type='text/html' href='https://www.carapaklek.com/2026/02/unboxing-esp32-s3-7-inch-touchscreen.html' title='Unboxing ESP32-S3 7 Inch Touchscreen Waveshare: Fungsi USB dan Skema Port Lengkap'/><author><name>carapaklek.com</name><uri>http://www.blogger.com/profile/12438575085929354819</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj84wNpqEWz7nUZmjNjPBarFLyRAZARNpnydt-LYU_GZhXNGZFUplzpWB82bcX7camGkjKhQ-KGgMvx5RMUkIl4gkJvWLq8dlBfnRdA_lNZPKfK8QjiWqasrUvzS15za_c0-zdUM_aAJ39EGM5XGzVoH0xzAg-7mAIwM90m4_AE9y7kgQ/s220/webcamp.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEgq6mg1CEn8CFuXnvr-UuagbJNBHB-SKkubVl7cH3A0UJ8fi5coNEseKY61COcHkmG_4G5gQWWN_ZC91Y4NlDCCSJdzib-eQJaM7zyCBU_WeP9qvne4q-m-70DwnN8lked_Tbm1fPm9im29-kODP4DVQcrkS5rJuOeeprolM2QgFx1UUtbLhREG6D1JyLOi=s72-w640-h406-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2093917475945207513.post-5658515808778729006</id><published>2026-01-31T10:34:00.001+07:00</published><updated>2026-01-31T10:34:35.218+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Arduino"/><category scheme="http://www.blogger.com/atom/ns#" term="komputer"/><category scheme="http://www.blogger.com/atom/ns#" term="Teknologi"/><title type='text'>Setup TFT 4 Inch yang Benar (Tanpa Trial Error)</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEit25xMo3vwxpUChGRJEgciHtDh83s5TEneqacGbgG3nXkYGFZ6vvZRwJ_nZTO56ZusIUBcAQWH9ORdYipZrr95TbOyol2SpSElUujfeI6ZM6cfo4UKghOxI-Kjm4etJhoIhw1eUnC2oAh02INKGOOoCTCK1P9hTsc80lNV-BUtPxnxWLgyXS3Ew_4pcIfr&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;2673&quot; data-original-width=&quot;3527&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEit25xMo3vwxpUChGRJEgciHtDh83s5TEneqacGbgG3nXkYGFZ6vvZRwJ_nZTO56ZusIUBcAQWH9ORdYipZrr95TbOyol2SpSElUujfeI6ZM6cfo4UKghOxI-Kjm4etJhoIhw1eUnC2oAh02INKGOOoCTCK1P9hTsc80lNV-BUtPxnxWLgyXS3Ew_4pcIfr&quot; width=&quot;317&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&lt;p&gt;&lt;/p&gt;&lt;p data-end=&quot;537&quot; data-start=&quot;368&quot;&gt;Pakai &lt;strong data-end=&quot;388&quot; data-start=&quot;374&quot;&gt;TFT 4 inch&lt;/strong&gt; itu kelihatannya sederhana: colok, upload sketch, selesai.&lt;br data-end=&quot;450&quot; data-start=&quot;447&quot; /&gt;
Tapi kenyataannya? Banyak yang &lt;strong data-end=&quot;536&quot; data-start=&quot;481&quot;&gt;habis waktu berjam-jam cuma buat layar nyala normal&lt;/strong&gt;.&lt;/p&gt;
&lt;p data-end=&quot;770&quot; data-start=&quot;539&quot;&gt;Masalahnya bukan karena TFT itu “rewel”, tapi karena &lt;strong data-end=&quot;626&quot; data-start=&quot;592&quot;&gt;urutan setup yang sering salah&lt;/strong&gt;.&lt;br data-end=&quot;630&quot; data-start=&quot;627&quot; /&gt;
Artikel ini membahas &lt;strong data-end=&quot;700&quot; data-start=&quot;651&quot;&gt;cara setup TFT 4 inch dengan benar sejak awal&lt;/strong&gt;, tanpa trial error, tanpa gonta-ganti library, dan tanpa nebak-nebak.&lt;/p&gt;
&lt;p data-end=&quot;784&quot; data-start=&quot;772&quot;&gt;Cocok untuk:&lt;/p&gt;
&lt;ul data-end=&quot;929&quot; data-start=&quot;785&quot;&gt;&lt;li data-end=&quot;829&quot; data-start=&quot;785&quot;&gt;
&lt;p data-end=&quot;829&quot; data-start=&quot;787&quot;&gt;Pemula yang baru pertama pakai TFT besar&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;874&quot; data-start=&quot;830&quot;&gt;
&lt;p data-end=&quot;874&quot; data-start=&quot;832&quot;&gt;Praktisi yang capek debugging hal sepele&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;929&quot; data-start=&quot;875&quot;&gt;&lt;p data-end=&quot;929&quot; data-start=&quot;877&quot;&gt;Siapa pun yang ingin layar &lt;strong data-end=&quot;929&quot; data-start=&quot;904&quot;&gt;langsung jalan stabil&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2 data-end=&quot;997&quot; data-start=&quot;936&quot;&gt;1. Cara Identifikasi Controller TFT (Tanpa Buka Datasheet)&lt;/h2&gt;
&lt;p data-end=&quot;1063&quot; data-start=&quot;998&quot;&gt;Ini langkah &lt;strong data-end=&quot;1028&quot; data-start=&quot;1010&quot;&gt;paling penting&lt;/strong&gt;, tapi juga paling sering dilewati.&lt;/p&gt;
&lt;h3 data-end=&quot;1088&quot; data-start=&quot;1065&quot;&gt;Kenapa Ini Krusial?&lt;/h3&gt;
&lt;p data-end=&quot;1125&quot; data-start=&quot;1089&quot;&gt;TFT 4 inch bisa terlihat sama, tapi:&lt;/p&gt;
&lt;ul data-end=&quot;1198&quot; data-start=&quot;1126&quot;&gt;&lt;li data-end=&quot;1146&quot; data-start=&quot;1126&quot;&gt;
&lt;p data-end=&quot;1146&quot; data-start=&quot;1128&quot;&gt;controllernya beda&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1165&quot; data-start=&quot;1147&quot;&gt;
&lt;p data-end=&quot;1165&quot; data-start=&quot;1149&quot;&gt;protokolnya beda&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1198&quot; data-start=&quot;1166&quot;&gt;
&lt;p data-end=&quot;1198&quot; data-start=&quot;1168&quot;&gt;setting library-nya beda total&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;1289&quot; data-start=&quot;1200&quot;&gt;Kalau controller salah → &lt;strong data-end=&quot;1257&quot; data-start=&quot;1225&quot;&gt;setup berikutnya pasti gagal&lt;/strong&gt;, mau kalibrasi sebagus apa pun.&lt;/p&gt;
&lt;h3 data-end=&quot;1332&quot; data-start=&quot;1291&quot;&gt;Cara Praktis Identifikasi Controller:&lt;/h3&gt;
&lt;p data-end=&quot;1409&quot; data-start=&quot;1333&quot;&gt;✔ &lt;strong data-end=&quot;1374&quot; data-start=&quot;1335&quot;&gt;Lihat tulisan di PCB belakang modul&lt;/strong&gt;&lt;br data-end=&quot;1377&quot; data-start=&quot;1374&quot; /&gt;
Biasanya ada kode kecil seperti:&lt;/p&gt;
&lt;ul data-end=&quot;1444&quot; data-start=&quot;1410&quot;&gt;&lt;li data-end=&quot;1421&quot; data-start=&quot;1410&quot;&gt;
&lt;p data-end=&quot;1421&quot; data-start=&quot;1412&quot;&gt;ILI9486&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1433&quot; data-start=&quot;1422&quot;&gt;
&lt;p data-end=&quot;1433&quot; data-start=&quot;1424&quot;&gt;ILI9488&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1444&quot; data-start=&quot;1434&quot;&gt;
&lt;p data-end=&quot;1444&quot; data-start=&quot;1436&quot;&gt;ST7796&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;1465&quot; data-start=&quot;1446&quot;&gt;✔ &lt;strong data-end=&quot;1465&quot; data-start=&quot;1448&quot;&gt;Cek jalur pin&lt;/strong&gt;&lt;/p&gt;
&lt;ul data-end=&quot;1564&quot; data-start=&quot;1466&quot;&gt;&lt;li data-end=&quot;1523&quot; data-start=&quot;1466&quot;&gt;
&lt;p data-end=&quot;1523&quot; data-start=&quot;1468&quot;&gt;Banyak pin data (D0–D7)? → kemungkinan &lt;strong data-end=&quot;1523&quot; data-start=&quot;1507&quot;&gt;mode paralel&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1564&quot; data-start=&quot;1524&quot;&gt;
&lt;p data-end=&quot;1564&quot; data-start=&quot;1526&quot;&gt;Pin sedikit (MOSI, SCK, CS)? → &lt;strong data-end=&quot;1564&quot; data-start=&quot;1557&quot;&gt;SPI&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;1693&quot; data-start=&quot;1566&quot;&gt;✔ &lt;strong data-end=&quot;1594&quot; data-start=&quot;1568&quot;&gt;Gunakan sketch baca ID&lt;/strong&gt;&lt;br /&gt;
Beberapa library menyediakan contoh sketch untuk membaca &lt;strong data-end=&quot;1692&quot; data-start=&quot;1652&quot;&gt;ID controller langsung dari hardware&lt;/strong&gt;.&lt;/p&gt;
&lt;p data-end=&quot;1713&quot; data-start=&quot;1695&quot;&gt;📌 Tips penting:&lt;/p&gt;
&lt;blockquote data-end=&quot;1785&quot; data-start=&quot;1714&quot;&gt;&lt;p data-end=&quot;1785&quot; data-start=&quot;1716&quot;&gt;Jangan percaya judul produk di marketplace. Percaya &lt;strong data-end=&quot;1784&quot; data-start=&quot;1768&quot;&gt;hardware-nya&lt;/strong&gt;.&lt;/p&gt;&lt;/blockquote&gt;&lt;h2 data-end=&quot;1853&quot; data-start=&quot;1792&quot;&gt;2. Menentukan Mode Komunikasi yang Benar (SPI vs Parallel)&lt;/h2&gt;
&lt;p data-end=&quot;1879&quot; data-start=&quot;1854&quot;&gt;Salah mode = layar putih.&lt;/p&gt;
&lt;h3 data-end=&quot;1893&quot; data-start=&quot;1881&quot;&gt;Umumnya:&lt;/h3&gt;
&lt;ul data-end=&quot;1970&quot; data-start=&quot;1894&quot;&gt;&lt;li data-end=&quot;1926&quot; data-start=&quot;1894&quot;&gt;
&lt;p data-end=&quot;1926&quot; data-start=&quot;1896&quot;&gt;&lt;strong data-end=&quot;1907&quot; data-start=&quot;1896&quot;&gt;ILI9486&lt;/strong&gt; → 8-bit parallel&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1970&quot; data-start=&quot;1927&quot;&gt;
&lt;p data-end=&quot;1970&quot; data-start=&quot;1929&quot;&gt;&lt;strong data-end=&quot;1940&quot; data-start=&quot;1929&quot;&gt;ILI9488&lt;/strong&gt; → SPI (lebih umum di ESP32)&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;h3 data-end=&quot;1991&quot; data-start=&quot;1972&quot;&gt;Cara Cek Cepat:&lt;/h3&gt;
&lt;ul data-end=&quot;2105&quot; data-start=&quot;1992&quot;&gt;&lt;li data-end=&quot;2063&quot; data-start=&quot;1992&quot;&gt;
&lt;p data-end=&quot;2063&quot; data-start=&quot;1994&quot;&gt;Kalau TFT punya &lt;strong data-end=&quot;2036&quot; data-start=&quot;2010&quot;&gt;lebih dari 20 pin data&lt;/strong&gt;, hampir pasti &lt;strong data-end=&quot;2063&quot; data-start=&quot;2051&quot;&gt;parallel&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2105&quot; data-start=&quot;2064&quot;&gt;
&lt;p data-end=&quot;2105&quot; data-start=&quot;2066&quot;&gt;Kalau cuma ±10 pin, kemungkinan &lt;strong data-end=&quot;2105&quot; data-start=&quot;2098&quot;&gt;SPI&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;&lt;p data-end=&quot;2172&quot; data-start=&quot;2107&quot;&gt;⚠️ Jangan pakai library SPI untuk TFT parallel (atau sebaliknya).&lt;/p&gt;&lt;h2 data-end=&quot;2222&quot; data-start=&quot;2179&quot;&gt;3. Cara Cek &amp;amp; Menentukan Orientasi Layar&lt;/h2&gt;
&lt;p data-end=&quot;2240&quot; data-start=&quot;2223&quot;&gt;Layar nyala tapi:&lt;/p&gt;
&lt;ul data-end=&quot;2281&quot; data-start=&quot;2241&quot;&gt;&lt;li data-end=&quot;2250&quot; data-start=&quot;2241&quot;&gt;
&lt;p data-end=&quot;2250&quot; data-start=&quot;2243&quot;&gt;kebalik&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2259&quot; data-start=&quot;2251&quot;&gt;
&lt;p data-end=&quot;2259&quot; data-start=&quot;2253&quot;&gt;mirror&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2281&quot; data-start=&quot;2260&quot;&gt;
&lt;p data-end=&quot;2281&quot; data-start=&quot;2262&quot;&gt;atau posisinya aneh&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;2323&quot; data-start=&quot;2283&quot;&gt;Ini &lt;strong data-end=&quot;2302&quot; data-start=&quot;2287&quot;&gt;bukan error&lt;/strong&gt;, tapi belum disetel.&lt;/p&gt;
&lt;h3 data-end=&quot;2342&quot; data-start=&quot;2325&quot;&gt;Langkah Aman:&lt;/h3&gt;
&lt;p data-end=&quot;2497&quot; data-start=&quot;2343&quot;&gt;✔ Jalankan contoh sketch dasar (fillScreen, drawLine)&lt;br data-end=&quot;2399&quot; data-start=&quot;2396&quot; /&gt;
✔ Ubah &lt;code data-end=&quot;2424&quot; data-start=&quot;2406&quot;&gt;setRotation(0–3)&lt;/code&gt;&lt;br data-end=&quot;2427&quot; data-start=&quot;2424&quot; /&gt;
✔ Tentukan orientasi yang &lt;strong data-end=&quot;2497&quot; data-start=&quot;2453&quot;&gt;paling natural sesuai posisi fisik layar&lt;/strong&gt;&lt;/p&gt;
&lt;p data-end=&quot;2520&quot; data-start=&quot;2499&quot;&gt;📌 Catatan penting:&lt;/p&gt;
&lt;blockquote data-end=&quot;2584&quot; data-start=&quot;2521&quot;&gt;&lt;p data-end=&quot;2584&quot; data-start=&quot;2523&quot;&gt;&lt;strong data-end=&quot;2584&quot; data-start=&quot;2523&quot;&gt;Orientasi layar HARUS benar dulu sebelum kalibrasi touch.&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;h2 data-end=&quot;2638&quot; data-start=&quot;2591&quot;&gt;4. Pastikan Touchscreen Terbaca dengan Benar&lt;/h2&gt;
&lt;p data-end=&quot;2673&quot; data-start=&quot;2639&quot;&gt;Banyak yang langsung menyimpulkan:&lt;/p&gt;
&lt;blockquote data-end=&quot;2699&quot; data-start=&quot;2674&quot;&gt;
&lt;p data-end=&quot;2699&quot; data-start=&quot;2676&quot;&gt;“Touchscreen-nya rusak”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-end=&quot;2721&quot; data-start=&quot;2701&quot;&gt;Padahal belum tentu.&lt;/p&gt;
&lt;h3 data-end=&quot;2755&quot; data-start=&quot;2723&quot;&gt;Cara Cek Touch Masih Normal:&lt;/h3&gt;
&lt;p data-end=&quot;2866&quot; data-start=&quot;2756&quot;&gt;✔ Jalankan sketch &lt;strong data-end=&quot;2805&quot; data-start=&quot;2774&quot;&gt;Touch Test / Touch Raw Data&lt;/strong&gt;&lt;br data-end=&quot;2808&quot; data-start=&quot;2805&quot; /&gt;
✔ Sentuh layar dan lihat &lt;strong data-end=&quot;2866&quot; data-start=&quot;2833&quot;&gt;nilai X &amp;amp; Y di Serial Monitor&lt;/strong&gt;&lt;/p&gt;
&lt;p data-end=&quot;2925&quot; data-start=&quot;2868&quot;&gt;Kalau nilai berubah saat disentuh → &lt;strong data-end=&quot;2925&quot; data-start=&quot;2904&quot;&gt;touch masih sehat&lt;/strong&gt;&lt;/p&gt;
&lt;p data-end=&quot;2944&quot; data-start=&quot;2927&quot;&gt;Masalah biasanya:&lt;/p&gt;
&lt;ul data-end=&quot;3002&quot; data-start=&quot;2945&quot;&gt;&lt;li data-end=&quot;2960&quot; data-start=&quot;2945&quot;&gt;
&lt;p data-end=&quot;2960&quot; data-start=&quot;2947&quot;&gt;mapping salah&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2982&quot; data-start=&quot;2961&quot;&gt;
&lt;p data-end=&quot;2982&quot; data-start=&quot;2963&quot;&gt;rotasi belum sesuai&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;3002&quot; data-start=&quot;2983&quot;&gt;&lt;p data-end=&quot;3002&quot; data-start=&quot;2985&quot;&gt;belum dikalibrasi&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2 data-end=&quot;3048&quot; data-start=&quot;3009&quot;&gt;5. Urutan Kalibrasi Touch yang Benar&lt;/h2&gt;
&lt;p data-end=&quot;3099&quot; data-start=&quot;3049&quot;&gt;Kalibrasi itu &lt;strong data-end=&quot;3083&quot; data-start=&quot;3063&quot;&gt;langkah terakhir&lt;/strong&gt;, bukan pertama.&lt;/p&gt;
&lt;h3 data-end=&quot;3117&quot; data-start=&quot;3101&quot;&gt;Urutan Aman:&lt;/h3&gt;
&lt;p data-end=&quot;3247&quot; data-start=&quot;3118&quot;&gt;1️⃣ Controller sudah benar&lt;br data-end=&quot;3147&quot; data-start=&quot;3144&quot; /&gt;
2️⃣ Mode komunikasi sesuai&lt;br data-end=&quot;3176&quot; data-start=&quot;3173&quot; /&gt;
3️⃣ Orientasi layar sudah fix&lt;br data-end=&quot;3208&quot; data-start=&quot;3205&quot; /&gt;
4️⃣ Baru jalankan &lt;strong data-end=&quot;3247&quot; data-start=&quot;3226&quot;&gt;Touch Calibration&lt;/strong&gt;&lt;/p&gt;
&lt;h3 data-end=&quot;3269&quot; data-start=&quot;3249&quot;&gt;Hasil Kalibrasi:&lt;/h3&gt;
&lt;p data-end=&quot;3304&quot; data-start=&quot;3270&quot;&gt;Biasanya berupa 4 nilai koordinat:&lt;/p&gt;
&lt;pre class=&quot;overflow-visible! px-0!&quot; data-end=&quot;3339&quot; data-start=&quot;3305&quot;&gt;&lt;div class=&quot;contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary&quot;&gt;&lt;div class=&quot;sticky top-[calc(var(--sticky-padding-top)+9*var(--spacing))]&quot;&gt;&lt;div class=&quot;absolute end-0 bottom-0 flex h-9 items-center pe-2&quot;&gt;&lt;div class=&quot;bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;overflow-y-auto p-4&quot; dir=&quot;ltr&quot;&gt;&lt;code class=&quot;whitespace-pre!&quot;&gt;&lt;span&gt;&lt;span&gt;X_MIN, X_MAX, Y_MIN, Y_MAX
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;p data-end=&quot;3433&quot; data-start=&quot;3341&quot;&gt;Nilai ini &lt;strong data-end=&quot;3384&quot; data-start=&quot;3351&quot;&gt;spesifik untuk layar tersebut&lt;/strong&gt;, bahkan antar TFT dengan tipe sama bisa berbeda.&lt;/p&gt;&lt;p data-end=&quot;3491&quot; data-start=&quot;3435&quot;&gt;📌 Jangan copy hasil kalibrasi orang lain mentah-mentah.&lt;/p&gt;&lt;h2 data-end=&quot;3553&quot; data-start=&quot;3498&quot;&gt;6. Library yang Paling Stabil (Bukan Paling Populer)&lt;/h2&gt;
&lt;p data-end=&quot;3629&quot; data-start=&quot;3554&quot;&gt;Banyak tutorial pakai library A karena “terkenal”, bukan karena &lt;strong data-end=&quot;3628&quot; data-start=&quot;3618&quot;&gt;stabil&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 data-end=&quot;3652&quot; data-start=&quot;3631&quot;&gt;Rekomendasi Umum:&lt;/h3&gt;
&lt;ul data-end=&quot;3880&quot; data-start=&quot;3653&quot;&gt;&lt;li data-end=&quot;3750&quot; data-start=&quot;3653&quot;&gt;
&lt;p data-end=&quot;3750&quot; data-start=&quot;3655&quot;&gt;Untuk &lt;strong data-end=&quot;3702&quot; data-start=&quot;3661&quot;&gt;&lt;span class=&quot;hover:entity-accent entity-underline inline cursor-pointer align-baseline&quot;&gt;&lt;span class=&quot;whitespace-normal&quot;&gt;ESP32&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br data-end=&quot;3705&quot; data-start=&quot;3702&quot; /&gt;
✔ &lt;strong data-end=&quot;3721&quot; data-start=&quot;3709&quot;&gt;TFT_eSPI&lt;/strong&gt; → cepat, fleksibel, stabil&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;3880&quot; data-start=&quot;3751&quot;&gt;
&lt;p data-end=&quot;3880&quot; data-start=&quot;3753&quot;&gt;Untuk &lt;strong data-end=&quot;3800&quot; data-start=&quot;3759&quot;&gt;&lt;span class=&quot;hover:entity-accent entity-underline inline cursor-pointer align-baseline&quot;&gt;&lt;span class=&quot;whitespace-normal&quot;&gt;Arduino&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt; klasik&lt;br data-end=&quot;3810&quot; data-start=&quot;3807&quot; /&gt;
✔ Adafruit_GFX + driver spesifik (dengan catatan hardware mendukung)&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;h3 data-end=&quot;3909&quot; data-start=&quot;3882&quot;&gt;Kenapa TFT_eSPI Unggul?&lt;/h3&gt;
&lt;ul data-end=&quot;4013&quot; data-start=&quot;3910&quot;&gt;&lt;li data-end=&quot;3946&quot; data-start=&quot;3910&quot;&gt;
&lt;p data-end=&quot;3946&quot; data-start=&quot;3912&quot;&gt;Setup jelas lewat file konfigurasi&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;3976&quot; data-start=&quot;3947&quot;&gt;
&lt;p data-end=&quot;3976&quot; data-start=&quot;3949&quot;&gt;Mendukung banyak controller&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;3994&quot; data-start=&quot;3977&quot;&gt;
&lt;p data-end=&quot;3994&quot; data-start=&quot;3979&quot;&gt;Performa tinggi&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;4013&quot; data-start=&quot;3995&quot;&gt;
&lt;p data-end=&quot;4013&quot; data-start=&quot;3997&quot;&gt;Dokumentasi rapi&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;&lt;p data-end=&quot;4090&quot; data-start=&quot;4015&quot;&gt;⚠️ Tapi:&lt;br data-end=&quot;4026&quot; data-start=&quot;4023&quot; /&gt;
Library ini &lt;strong data-end=&quot;4068&quot; data-start=&quot;4038&quot;&gt;wajib dikonfigurasi manual&lt;/strong&gt;, tidak plug-and-play.&lt;/p&gt;&lt;h2 data-end=&quot;4144&quot; data-start=&quot;4097&quot;&gt;7. Kenapa Banyak Orang Terjebak Trial Error?&lt;/h2&gt;
&lt;p data-end=&quot;4256&quot; data-start=&quot;4145&quot;&gt;Karena urutannya kebalik:&lt;br /&gt;
❌ langsung kalibrasi&lt;br data-end=&quot;4194&quot; data-start=&quot;4191&quot; /&gt;
❌ gonta-ganti library&lt;br data-end=&quot;4218&quot; data-start=&quot;4215&quot; /&gt;
❌ ganti sketch tanpa tahu masalahnya&lt;/p&gt;
&lt;p data-end=&quot;4283&quot; data-start=&quot;4258&quot;&gt;Padahal urutan benar itu:&lt;/p&gt;
&lt;blockquote data-end=&quot;4339&quot; data-start=&quot;4284&quot;&gt;
&lt;p data-end=&quot;4339&quot; data-start=&quot;4286&quot;&gt;&lt;strong data-end=&quot;4339&quot; data-start=&quot;4286&quot;&gt;Controller → Mode → Orientasi → Touch → Kalibrasi&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;&lt;p data-end=&quot;4414&quot; data-start=&quot;4341&quot;&gt;Kalau urutan ini diikuti, &lt;strong data-end=&quot;4413&quot; data-start=&quot;4367&quot;&gt;90% masalah TFT 4 inch selesai lebih cepat&lt;/strong&gt;.&lt;/p&gt;&lt;h2 data-end=&quot;4487&quot; data-start=&quot;4421&quot;&gt;8. Tentang File Setup &amp;amp; Preset Kalibrasi (Opsional, Time Saver)&lt;/h2&gt;
&lt;p data-end=&quot;4551&quot; data-start=&quot;4488&quot;&gt;Artikel ini &lt;strong data-end=&quot;4531&quot; data-start=&quot;4500&quot;&gt;cukup untuk bikin TFT jalan&lt;/strong&gt;.&lt;br data-end=&quot;4535&quot; data-start=&quot;4532&quot; /&gt;
Tapi kalau kamu:&lt;/p&gt;
&lt;ul data-end=&quot;4633&quot; data-start=&quot;4552&quot;&gt;&lt;li data-end=&quot;4573&quot; data-start=&quot;4552&quot;&gt;
&lt;p data-end=&quot;4573&quot; data-start=&quot;4554&quot;&gt;sering ganti proyek&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;4597&quot; data-start=&quot;4574&quot;&gt;
&lt;p data-end=&quot;4597&quot; data-start=&quot;4576&quot;&gt;sering setup TFT baru&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;4633&quot; data-start=&quot;4598&quot;&gt;
&lt;p data-end=&quot;4633&quot; data-start=&quot;4600&quot;&gt;tidak mau buang waktu ulang-ulang&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;4732&quot; data-start=&quot;4635&quot;&gt;Maka:&lt;br /&gt;
🔒 &lt;strong data-end=&quot;4681&quot; data-start=&quot;4644&quot;&gt;File &lt;code data-end=&quot;4660&quot; data-start=&quot;4651&quot;&gt;setup.h&lt;/code&gt; + preset kalibrasi&lt;/strong&gt; itu &lt;strong data-end=&quot;4705&quot; data-start=&quot;4686&quot;&gt;bukan keharusan&lt;/strong&gt;, tapi &lt;strong data-end=&quot;4731&quot; data-start=&quot;4712&quot;&gt;penghemat waktu&lt;/strong&gt;.&lt;/p&gt;
&lt;p data-end=&quot;4750&quot; data-start=&quot;4734&quot;&gt;Isinya biasanya:&lt;/p&gt;
&lt;ul data-end=&quot;4840&quot; data-start=&quot;4751&quot;&gt;&lt;li data-end=&quot;4776&quot; data-start=&quot;4751&quot;&gt;
&lt;p data-end=&quot;4776&quot; data-start=&quot;4753&quot;&gt;driver sudah ditentukan&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;4795&quot; data-start=&quot;4777&quot;&gt;
&lt;p data-end=&quot;4795&quot; data-start=&quot;4779&quot;&gt;pin mapping rapi&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;4811&quot; data-start=&quot;4796&quot;&gt;
&lt;p data-end=&quot;4811&quot; data-start=&quot;4798&quot;&gt;orientasi fix&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;4840&quot; data-start=&quot;4812&quot;&gt;
&lt;p data-end=&quot;4840&quot; data-start=&quot;4814&quot;&gt;nilai kalibrasi siap pakai&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;4888&quot; data-start=&quot;4842&quot;&gt;📌 Cocok dijadikan &lt;strong data-end=&quot;4879&quot; data-start=&quot;4861&quot;&gt;konten premium&lt;/strong&gt;, karena:&lt;/p&gt;
&lt;ul data-end=&quot;4940&quot; data-start=&quot;4889&quot;&gt;&lt;li data-end=&quot;4911&quot; data-start=&quot;4889&quot;&gt;
&lt;p data-end=&quot;4911&quot; data-start=&quot;4891&quot;&gt;bukan “ilmu rahasia”&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;4940&quot; data-start=&quot;4912&quot;&gt;&lt;p data-end=&quot;4940&quot; data-start=&quot;4914&quot;&gt;tapi &lt;strong data-end=&quot;4940&quot; data-start=&quot;4919&quot;&gt;praktis &amp;amp; efisien&lt;/strong&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;strong data-end=&quot;4940&quot; data-start=&quot;4919&quot;&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/div&gt;&lt;strong data-end=&quot;4940&quot; data-start=&quot;4919&quot;&gt;&lt;br /&gt;&lt;/strong&gt;&lt;p&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2 data-end=&quot;4960&quot; data-start=&quot;4947&quot;&gt;Kesimpulan&lt;/h2&gt;
&lt;p data-end=&quot;5022&quot; data-start=&quot;4961&quot;&gt;Setup TFT 4 inch &lt;strong data-end=&quot;5012&quot; data-start=&quot;4978&quot;&gt;tidak serumit yang dibayangkan&lt;/strong&gt;, asalkan:&lt;/p&gt;
&lt;ul data-end=&quot;5100&quot; data-start=&quot;5023&quot;&gt;&lt;li data-end=&quot;5045&quot; data-start=&quot;5023&quot;&gt;
&lt;p data-end=&quot;5045&quot; data-start=&quot;5025&quot;&gt;tidak lompat langkah&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;5072&quot; data-start=&quot;5046&quot;&gt;
&lt;p data-end=&quot;5072&quot; data-start=&quot;5048&quot;&gt;tidak asal ikut tutorial&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;5100&quot; data-start=&quot;5073&quot;&gt;
&lt;p data-end=&quot;5100&quot; data-start=&quot;5075&quot;&gt;dan paham urutan dasarnya&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;5117&quot; data-start=&quot;5102&quot;&gt;Kalau TFT kamu:&lt;/p&gt;
&lt;ul data-end=&quot;5165&quot; data-start=&quot;5118&quot;&gt;&lt;li data-end=&quot;5132&quot; data-start=&quot;5118&quot;&gt;
&lt;p data-end=&quot;5132&quot; data-start=&quot;5120&quot;&gt;nyala normal&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;5150&quot; data-start=&quot;5133&quot;&gt;
&lt;p data-end=&quot;5150&quot; data-start=&quot;5135&quot;&gt;orientasi benar&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;5165&quot; data-start=&quot;5151&quot;&gt;
&lt;p data-end=&quot;5165&quot; data-start=&quot;5153&quot;&gt;touch akurat&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;5249&quot; data-start=&quot;5167&quot;&gt;Artinya &lt;strong data-end=&quot;5202&quot; data-start=&quot;5175&quot;&gt;90% setup sudah selesai&lt;/strong&gt;. Sisanya tinggal desain UI dan logika program.&lt;/p&gt;&lt;p data-end=&quot;5249&quot; data-start=&quot;5167&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p data-end=&quot;5249&quot; data-start=&quot;5167&quot;&gt;Baca juga : &lt;a href=&quot;https://www.carapaklek.com/2025/09/download-file-premium-bayar-download.html&quot;&gt;Download Sket Arduino IDE untuk Kalibrasi Layar Touchscreen TFT 4 Inch ILI9488&amp;nbsp;&lt;/a&gt;&lt;/p&gt;
&lt;script type=&quot;application/ld+json&quot;&gt;
{
  &quot;@context&quot;: &quot;https://schema.org&quot;,
  &quot;@type&quot;: &quot;Article&quot;,
  &quot;mainEntityOfPage&quot;: {
    &quot;@type&quot;: &quot;WebPage&quot;,
    &quot;@id&quot;: &quot;https://www.carapaklek.com/2026/01/setup-tft-4-inch-yang-benar-tanpa-trial.html&quot;
  },
  &quot;headline&quot;: &quot;Setup TFT 4 Inch yang Benar (Tanpa Trial Error)&quot;,
  &quot;description&quot;: &quot;Pelajari setup TFT 4 inch yang benar tanpa trial error. Mulai dari identifikasi controller, orientasi layar, touch akurat, hingga library paling stabil.&quot;,
  &quot;image&quot;: &quot;https://blogger.googleusercontent.com/img/a/AVvXsEit25xMo3vwxpUChGRJEgciHtDh83s5TEneqacGbgG3nXkYGFZ6vvZRwJ_nZTO56ZusIUBcAQWH9ORdYipZrr95TbOyol2SpSElUujfeI6ZM6cfo4UKghOxI-Kjm4etJhoIhw1eUnC2oAh02INKGOOoCTCK1P9hTsc80lNV-BUtPxnxWLgyXS3Ew_4pcIfr&quot;,
  &quot;author&quot;: {
    &quot;@type&quot;: &quot;Person&quot;,
    &quot;name&quot;: &quot;Paklek&quot;
  },
  &quot;publisher&quot;: {
    &quot;@type&quot;: &quot;Organization&quot;,
    &quot;name&quot;: &quot;CaraPaklek&quot;,
    &quot;logo&quot;: {
      &quot;@type&quot;: &quot;ImageObject&quot;,
      &quot;url&quot;: &quot;https://www.carapaklek.com/favicon.ico&quot;
    }
  },
  &quot;datePublished&quot;: &quot;2026-01-31&quot;,
  &quot;dateModified&quot;: &quot;2026-01-31&quot;
}
&lt;/script&gt;
</content><link rel='replies' type='application/atom+xml' href='https://www.carapaklek.com/feeds/5658515808778729006/comments/default' title='Posting Komentar'/><link rel='replies' type='text/html' href='https://www.carapaklek.com/2026/01/setup-tft-4-inch-yang-benar-tanpa-trial.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/2093917475945207513/posts/default/5658515808778729006'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/2093917475945207513/posts/default/5658515808778729006'/><link rel='alternate' type='text/html' href='https://www.carapaklek.com/2026/01/setup-tft-4-inch-yang-benar-tanpa-trial.html' title='Setup TFT 4 Inch yang Benar (Tanpa Trial Error)'/><author><name>carapaklek.com</name><uri>http://www.blogger.com/profile/12438575085929354819</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj84wNpqEWz7nUZmjNjPBarFLyRAZARNpnydt-LYU_GZhXNGZFUplzpWB82bcX7camGkjKhQ-KGgMvx5RMUkIl4gkJvWLq8dlBfnRdA_lNZPKfK8QjiWqasrUvzS15za_c0-zdUM_aAJ39EGM5XGzVoH0xzAg-7mAIwM90m4_AE9y7kgQ/s220/webcamp.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEit25xMo3vwxpUChGRJEgciHtDh83s5TEneqacGbgG3nXkYGFZ6vvZRwJ_nZTO56ZusIUBcAQWH9ORdYipZrr95TbOyol2SpSElUujfeI6ZM6cfo4UKghOxI-Kjm4etJhoIhw1eUnC2oAh02INKGOOoCTCK1P9hTsc80lNV-BUtPxnxWLgyXS3Ew_4pcIfr=s72-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2093917475945207513.post-4993037406670983801</id><published>2026-01-31T10:23:00.001+07:00</published><updated>2026-01-31T10:23:58.618+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Arduino"/><category scheme="http://www.blogger.com/atom/ns#" term="komputer"/><category scheme="http://www.blogger.com/atom/ns#" term="Teknisi laptop"/><category scheme="http://www.blogger.com/atom/ns#" term="Teknologi"/><title type='text'>Kesalahan Paling Umum Pakai TFT 4 Inch (dan Cara Benerinnya)</title><content type='html'>&lt;h1 data-end=&quot;320&quot; data-start=&quot;258&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiQq-3CuaOvw-e2Py_id48KbBQ0t7iNTVuwCHGaLFOibxbEmJVPyd4vsStQZrZYtSa6idX2rEDp1qLx7OnHxrlH2V1StJeEKDkcihV1B70yphkm2DniHCtJ0R02p8h80Xv1YNGWuTQm6AYniO_KtyUiOG4PRtVPAd6aMmExQj91xCDv4KLoI-ts12Wql3QD&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;2673&quot; data-original-width=&quot;3527&quot; height=&quot;485&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiQq-3CuaOvw-e2Py_id48KbBQ0t7iNTVuwCHGaLFOibxbEmJVPyd4vsStQZrZYtSa6idX2rEDp1qLx7OnHxrlH2V1StJeEKDkcihV1B70yphkm2DniHCtJ0R02p8h80Xv1YNGWuTQm6AYniO_KtyUiOG4PRtVPAd6aMmExQj91xCDv4KLoI-ts12Wql3QD=w640-h485&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/h1&gt;
&lt;p data-end=&quot;639&quot; data-start=&quot;322&quot;&gt;Pernahkah Anda membeli layar &lt;strong data-end=&quot;365&quot; data-start=&quot;351&quot;&gt;TFT 4 inch&lt;/strong&gt;, sudah membayangkan bakal punya dashboard keren ala futuristik, tapi saat dicolok ke &lt;strong data-end=&quot;492&quot; data-start=&quot;451&quot;&gt;&lt;span class=&quot;hover:entity-accent entity-underline inline cursor-pointer align-baseline&quot;&gt;&lt;span class=&quot;whitespace-normal&quot;&gt;Arduino&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt; atau &lt;strong data-end=&quot;539&quot; data-start=&quot;498&quot;&gt;&lt;span class=&quot;hover:entity-accent entity-underline inline cursor-pointer align-baseline&quot;&gt;&lt;span class=&quot;whitespace-normal&quot;&gt;ESP32&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;, layarnya cuma putih nge-blank?&lt;br data-end=&quot;574&quot; data-start=&quot;571&quot; /&gt;
Atau yang lebih horor: &lt;strong data-end=&quot;638&quot; data-start=&quot;597&quot;&gt;muncul asap tipis dari arah regulator&lt;/strong&gt;?&lt;/p&gt;
&lt;p data-end=&quot;670&quot; data-start=&quot;641&quot;&gt;Tenang, Anda tidak sendirian.&lt;/p&gt;
&lt;p data-end=&quot;977&quot; data-start=&quot;672&quot;&gt;Menggunakan layar TFT (Thin-Film Transistor) ukuran 4 inch—terutama yang berbasis driver &lt;strong data-end=&quot;794&quot; data-start=&quot;761&quot;&gt;ILI9486, ILI9488, atau ST7796&lt;/strong&gt;—memang punya tingkat kesulitan &lt;strong data-end=&quot;848&quot; data-start=&quot;826&quot;&gt;satu level di atas&lt;/strong&gt; layar OLED 0.96 inch yang mungil itu.&lt;br data-end=&quot;889&quot; data-start=&quot;886&quot; /&gt;
Ukurannya besar, jumlah piksel banyak, dan kebutuhan dayanya &lt;strong data-end=&quot;976&quot; data-start=&quot;950&quot;&gt;tidak bisa disepelekan&lt;/strong&gt;.&lt;/p&gt;&lt;p data-end=&quot;1179&quot; data-start=&quot;979&quot;&gt;Di artikel ini, kita akan membedah &lt;strong data-end=&quot;1063&quot; data-start=&quot;1014&quot;&gt;kesalahan paling umum saat memakai TFT 4 inch&lt;/strong&gt;, lengkap dengan &lt;strong data-end=&quot;1142&quot; data-start=&quot;1080&quot;&gt;penjelasan teknis dan cara memperbaikinya secara realistis&lt;/strong&gt;, bukan sekadar “coba ganti library”.&lt;/p&gt;&lt;h2 data-end=&quot;1237&quot; data-start=&quot;1186&quot;&gt;1. Masalah Power: Mengandalkan Pin 5V dari Board&lt;/h2&gt;
&lt;p data-end=&quot;1302&quot; data-start=&quot;1238&quot;&gt;❌ &lt;strong data-end=&quot;1302&quot; data-start=&quot;1240&quot;&gt;Ini kesalahan nomor satu. Paling sering. Paling mematikan.&lt;/strong&gt;&lt;/p&gt;
&lt;p data-end=&quot;1413&quot; data-start=&quot;1304&quot;&gt;Layar TFT 4 inch memiliki &lt;strong data-end=&quot;1349&quot; data-start=&quot;1330&quot;&gt;backlight besar&lt;/strong&gt; yang mengonsumsi arus jauh lebih tinggi dibanding TFT 2.4 inch.&lt;/p&gt;
&lt;h3 data-end=&quot;1426&quot; data-start=&quot;1415&quot;&gt;Gejala:&lt;/h3&gt;
&lt;ul data-end=&quot;1556&quot; data-start=&quot;1427&quot;&gt;&lt;li data-end=&quot;1475&quot; data-start=&quot;1427&quot;&gt;
&lt;p data-end=&quot;1475&quot; data-start=&quot;1429&quot;&gt;Layar berkedip (flicker) saat tampilan cerah&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1521&quot; data-start=&quot;1476&quot;&gt;
&lt;p data-end=&quot;1521&quot; data-start=&quot;1478&quot;&gt;Mikrokontroler restart sendiri (brownout)&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1556&quot; data-start=&quot;1522&quot;&gt;
&lt;p data-end=&quot;1556&quot; data-start=&quot;1524&quot;&gt;Gambar pudar atau muncul garis&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;h3 data-end=&quot;1580&quot; data-start=&quot;1558&quot;&gt;Penjelasan Teknis:&lt;/h3&gt;
&lt;p data-end=&quot;1787&quot; data-start=&quot;1581&quot;&gt;Backlight TFT 4 inch bisa menarik &lt;strong data-end=&quot;1656&quot; data-start=&quot;1615&quot;&gt;150–300 mA hanya untuk lampu latarnya&lt;/strong&gt;.&lt;br data-end=&quot;1660&quot; data-start=&quot;1657&quot; /&gt;
Jika Anda mengambil daya dari pin 5V Arduino Nano / ESP32 yang bersumber dari USB laptop, &lt;strong data-end=&quot;1786&quot; data-start=&quot;1750&quot;&gt;regulator onboard akan kepanasan&lt;/strong&gt;.&lt;/p&gt;
&lt;p data-end=&quot;1808&quot; data-start=&quot;1789&quot;&gt;Saat tegangan drop:&lt;/p&gt;
&lt;ul data-end=&quot;1904&quot; data-start=&quot;1809&quot;&gt;&lt;li data-end=&quot;1855&quot; data-start=&quot;1809&quot;&gt;
&lt;p data-end=&quot;1855&quot; data-start=&quot;1811&quot;&gt;Komunikasi SPI / paralel jadi tidak stabil&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1879&quot; data-start=&quot;1856&quot;&gt;
&lt;p data-end=&quot;1879&quot; data-start=&quot;1858&quot;&gt;Data ke layar korup&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1904&quot; data-start=&quot;1880&quot;&gt;
&lt;p data-end=&quot;1904&quot; data-start=&quot;1882&quot;&gt;Sistem reset sendiri&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;h3 data-end=&quot;1926&quot; data-start=&quot;1906&quot;&gt;Cara Benerinnya:&lt;/h3&gt;&lt;p data-end=&quot;2171&quot; data-start=&quot;1927&quot;&gt;✔ Gunakan &lt;strong data-end=&quot;1978&quot; data-start=&quot;1937&quot;&gt;sumber daya eksternal 5V (minimal 1A)&lt;/strong&gt;&lt;br data-end=&quot;1981&quot; data-start=&quot;1978&quot; /&gt;
✔ Pisahkan VCC layar dari VCC mikrokontroler&lt;br data-end=&quot;2028&quot; data-start=&quot;2025&quot; /&gt;
✔ &lt;strong data-end=&quot;2057&quot; data-start=&quot;2030&quot;&gt;GND wajib common ground&lt;/strong&gt;&lt;br data-end=&quot;2060&quot; data-start=&quot;2057&quot; /&gt;
✔ Kendalikan backlight via &lt;strong data-end=&quot;2122&quot; data-start=&quot;2087&quot;&gt;PWM + transistor (misal 2N2222)&lt;/strong&gt;&lt;br data-end=&quot;2125&quot; data-start=&quot;2122&quot; /&gt;
→ lebih adem, lebih awet, bisa atur brightness&lt;/p&gt;&lt;h2 data-end=&quot;2215&quot; data-start=&quot;2178&quot;&gt;2. Salah Level Logika (3.3V vs 5V)&lt;/h2&gt;
&lt;p data-end=&quot;2268&quot; data-start=&quot;2216&quot;&gt;⚠️ Banyak modul TFT &lt;strong data-end=&quot;2253&quot; data-start=&quot;2236&quot;&gt;mati perlahan&lt;/strong&gt; gara-gara ini.&lt;/p&gt;
&lt;h3 data-end=&quot;2281&quot; data-start=&quot;2270&quot;&gt;Gejala:&lt;/h3&gt;
&lt;ul data-end=&quot;2398&quot; data-start=&quot;2282&quot;&gt;&lt;li data-end=&quot;2327&quot; data-start=&quot;2282&quot;&gt;
&lt;p data-end=&quot;2327&quot; data-start=&quot;2284&quot;&gt;Layar putih total (White Screen of Death)&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2360&quot; data-start=&quot;2328&quot;&gt;
&lt;p data-end=&quot;2360&quot; data-start=&quot;2330&quot;&gt;IC driver panas tidak normal&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2398&quot; data-start=&quot;2361&quot;&gt;
&lt;p data-end=&quot;2398&quot; data-start=&quot;2363&quot;&gt;Awalnya hidup, lalu mati permanen&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;h3 data-end=&quot;2422&quot; data-start=&quot;2400&quot;&gt;Penjelasan Teknis:&lt;/h3&gt;
&lt;p data-end=&quot;2613&quot; data-start=&quot;2423&quot;&gt;Sebagian besar IC TFT modern (&lt;strong data-end=&quot;2472&quot; data-start=&quot;2453&quot;&gt;ILI9488, ST7796&lt;/strong&gt;) &lt;strong data-end=&quot;2507&quot; data-start=&quot;2474&quot;&gt;berjalan di level logika 3.3V&lt;/strong&gt;.&lt;br data-end=&quot;2511&quot; data-start=&quot;2508&quot; /&gt;
Jika pin CS, DC, RST, MOSI diberi &lt;strong data-end=&quot;2582&quot; data-start=&quot;2545&quot;&gt;5V langsung dari Arduino Uno/Mega&lt;/strong&gt;, gerbang logika IC akan rusak.&lt;/p&gt;
&lt;p data-end=&quot;2626&quot; data-start=&quot;2615&quot;&gt;Masalahnya:&lt;/p&gt;
&lt;blockquote data-end=&quot;2711&quot; data-start=&quot;2627&quot;&gt;
&lt;p data-end=&quot;2711&quot; data-start=&quot;2629&quot;&gt;Banyak modul TFT murah &lt;strong data-end=&quot;2681&quot; data-start=&quot;2652&quot;&gt;tidak punya level shifter&lt;/strong&gt;, meskipun bentuknya “shield”.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 data-end=&quot;2733&quot; data-start=&quot;2713&quot;&gt;Cara Benerinnya:&lt;/h3&gt;&lt;p data-end=&quot;2891&quot; data-start=&quot;2734&quot;&gt;✔ Gunakan &lt;strong data-end=&quot;2777&quot; data-start=&quot;2744&quot;&gt;Logic Level Shifter 8-channel&lt;/strong&gt;&lt;br data-end=&quot;2780&quot; data-start=&quot;2777&quot; /&gt;
✔ Alternatif darurat: &lt;strong data-end=&quot;2830&quot; data-start=&quot;2802&quot;&gt;resistor divider (1k–2k)&lt;/strong&gt;&lt;br data-end=&quot;2833&quot; data-start=&quot;2830&quot; /&gt;
✔ Cara paling waras: &lt;strong data-end=&quot;2891&quot; data-start=&quot;2854&quot;&gt;pakai ESP32 / STM32 (native 3.3V)&lt;/strong&gt;&lt;/p&gt;&lt;h2 data-end=&quot;2937&quot; data-start=&quot;2898&quot;&gt;3. Salah Identifikasi Controller TFT&lt;/h2&gt;
&lt;p data-end=&quot;2965&quot; data-start=&quot;2938&quot;&gt;❌ Label toko sering menipu.&lt;/p&gt;
&lt;h3 data-end=&quot;2978&quot; data-start=&quot;2967&quot;&gt;Gejala:&lt;/h3&gt;
&lt;ul data-end=&quot;3039&quot; data-start=&quot;2979&quot;&gt;&lt;li data-end=&quot;2994&quot; data-start=&quot;2979&quot;&gt;
&lt;p data-end=&quot;2994&quot; data-start=&quot;2981&quot;&gt;Layar putih&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;3010&quot; data-start=&quot;2995&quot;&gt;
&lt;p data-end=&quot;3010&quot; data-start=&quot;2997&quot;&gt;Warna kacau&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;3039&quot; data-start=&quot;3011&quot;&gt;
&lt;p data-end=&quot;3039&quot; data-start=&quot;3013&quot;&gt;Gambar mirror / terbalik&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;h3 data-end=&quot;3063&quot; data-start=&quot;3041&quot;&gt;Penjelasan Teknis:&lt;/h3&gt;
&lt;p data-end=&quot;3090&quot; data-start=&quot;3064&quot;&gt;Fisik TFT bisa sama, tapi:&lt;/p&gt;
&lt;ul data-end=&quot;3163&quot; data-start=&quot;3091&quot;&gt;&lt;li data-end=&quot;3118&quot; data-start=&quot;3091&quot;&gt;
&lt;p data-end=&quot;3118&quot; data-start=&quot;3093&quot;&gt;ILI9486 → 8-bit paralel&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;3136&quot; data-start=&quot;3119&quot;&gt;
&lt;p data-end=&quot;3136&quot; data-start=&quot;3121&quot;&gt;ILI9488 → SPI&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;3163&quot; data-start=&quot;3137&quot;&gt;
&lt;p data-end=&quot;3163&quot; data-start=&quot;3139&quot;&gt;ST7796 → SPI / paralel&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;3266&quot; data-start=&quot;3165&quot;&gt;Kalau &lt;strong data-end=&quot;3204&quot; data-start=&quot;3171&quot;&gt;driver di library tidak cocok&lt;/strong&gt;, kalibrasi atau wiring sebagus apa pun &lt;strong data-end=&quot;3265&quot; data-start=&quot;3244&quot;&gt;tidak akan nolong&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 data-end=&quot;3288&quot; data-start=&quot;3268&quot;&gt;Cara Benerinnya:&lt;/h3&gt;
&lt;p data-end=&quot;3402&quot; data-start=&quot;3289&quot;&gt;✔ Cek tulisan di PCB belakang&lt;br data-end=&quot;3321&quot; data-start=&quot;3318&quot; /&gt;
✔ Baca ID controller via sketch&lt;br data-end=&quot;3355&quot; data-start=&quot;3352&quot; /&gt;
✔ Jangan samakan setup ILI9341 dengan ILI9488&lt;/p&gt;&lt;p data-end=&quot;3454&quot; data-start=&quot;3404&quot;&gt;📌 &lt;strong data-end=&quot;3454&quot; data-start=&quot;3407&quot;&gt;Kalibrasi tidak berguna kalau driver salah.&lt;/strong&gt;&lt;/p&gt;&lt;h2 data-end=&quot;3512&quot; data-start=&quot;3461&quot;&gt;4. Salah Pilih Driver di Library (Driver Jungle)&lt;/h2&gt;
&lt;p data-end=&quot;3588&quot; data-start=&quot;3513&quot;&gt;Banyak yang pakai library tapi lupa satu hal penting: &lt;strong data-end=&quot;3587&quot; data-start=&quot;3567&quot;&gt;setup-nya manual&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 data-end=&quot;3601&quot; data-start=&quot;3590&quot;&gt;Gejala:&lt;/h3&gt;
&lt;ul data-end=&quot;3680&quot; data-start=&quot;3602&quot;&gt;&lt;li data-end=&quot;3623&quot; data-start=&quot;3602&quot;&gt;
&lt;p data-end=&quot;3623&quot; data-start=&quot;3604&quot;&gt;Layar tetap putih&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;3660&quot; data-start=&quot;3624&quot;&gt;
&lt;p data-end=&quot;3660&quot; data-start=&quot;3626&quot;&gt;Warna tertukar (biru jadi merah)&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;3680&quot; data-start=&quot;3661&quot;&gt;
&lt;p data-end=&quot;3680&quot; data-start=&quot;3663&quot;&gt;Tampilan mirror&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;h3 data-end=&quot;3700&quot; data-start=&quot;3682&quot;&gt;Solusi Teknis:&lt;/h3&gt;
&lt;p data-end=&quot;3856&quot; data-start=&quot;3701&quot;&gt;✔ Gunakan &lt;strong data-end=&quot;3723&quot; data-start=&quot;3711&quot;&gt;TFT_eSPI&lt;/strong&gt; (sangat direkomendasikan untuk ESP32)&lt;br data-end=&quot;3764&quot; data-start=&quot;3761&quot; /&gt;
✔ Edit &lt;strong data-end=&quot;3787&quot; data-start=&quot;3771&quot;&gt;User_Setup.h&lt;/strong&gt;, jangan copy-paste&lt;br data-end=&quot;3809&quot; data-start=&quot;3806&quot; /&gt;
✔ Pastikan &lt;strong data-end=&quot;3856&quot; data-start=&quot;3820&quot;&gt;hanya satu driver yang di-enable&lt;/strong&gt;&lt;/p&gt;
&lt;p data-end=&quot;3865&quot; data-start=&quot;3858&quot;&gt;Contoh:&lt;/p&gt;
&lt;pre class=&quot;overflow-visible! px-0!&quot; data-end=&quot;3897&quot; data-start=&quot;3866&quot;&gt;&lt;div class=&quot;contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary&quot;&gt;&lt;div class=&quot;sticky top-[calc(var(--sticky-padding-top)+9*var(--spacing))]&quot;&gt;&lt;div class=&quot;absolute end-0 bottom-0 flex h-9 items-center pe-2&quot;&gt;&lt;div class=&quot;bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;overflow-y-auto p-4&quot; dir=&quot;ltr&quot;&gt;&lt;code class=&quot;whitespace-pre! language-c&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span class=&quot;hljs-meta&quot;&gt;#&lt;span class=&quot;hljs-keyword&quot;&gt;define&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt; ILI9488_DRIVER&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;&lt;h2 data-end=&quot;3938&quot; data-start=&quot;3904&quot;&gt;5. Kecepatan SPI Terlalu Tinggi&lt;/h2&gt;
&lt;p data-end=&quot;4013&quot; data-start=&quot;3939&quot;&gt;TFT 4 inch = &lt;strong data-end=&quot;3980&quot; data-start=&quot;3952&quot;&gt;153.600 piksel (320×480)&lt;/strong&gt;.&lt;br data-end=&quot;3984&quot; data-start=&quot;3981&quot; /&gt;
Data besar = sinyal sensitif.&lt;/p&gt;
&lt;h3 data-end=&quot;4026&quot; data-start=&quot;4015&quot;&gt;Gejala:&lt;/h3&gt;
&lt;ul data-end=&quot;4121&quot; data-start=&quot;4027&quot;&gt;&lt;li data-end=&quot;4058&quot; data-start=&quot;4027&quot;&gt;
&lt;p data-end=&quot;4058&quot; data-start=&quot;4029&quot;&gt;Gambar setengah lalu freeze&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;4082&quot; data-start=&quot;4059&quot;&gt;
&lt;p data-end=&quot;4082&quot; data-start=&quot;4061&quot;&gt;Noise / bintik acak&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;4121&quot; data-start=&quot;4083&quot;&gt;
&lt;p data-end=&quot;4121&quot; data-start=&quot;4085&quot;&gt;Touch tidak responsif saat refresh&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;h3 data-end=&quot;4145&quot; data-start=&quot;4123&quot;&gt;Penjelasan Teknis:&lt;/h3&gt;
&lt;p data-end=&quot;4176&quot; data-start=&quot;4146&quot;&gt;SPI 80 MHz memang cepat, tapi:&lt;/p&gt;
&lt;ul data-end=&quot;4232&quot; data-start=&quot;4177&quot;&gt;&lt;li data-end=&quot;4201&quot; data-start=&quot;4177&quot;&gt;
&lt;p data-end=&quot;4201&quot; data-start=&quot;4179&quot;&gt;Kabel jumper panjang&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;4215&quot; data-start=&quot;4202&quot;&gt;
&lt;p data-end=&quot;4215&quot; data-start=&quot;4204&quot;&gt;PCB murah&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;4232&quot; data-start=&quot;4216&quot;&gt;
&lt;p data-end=&quot;4232&quot; data-start=&quot;4218&quot;&gt;Ground jelek&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;4276&quot; data-start=&quot;4234&quot;&gt;→ sinyal &lt;strong data-end=&quot;4276&quot; data-start=&quot;4243&quot;&gt;terdistorsi sebelum sampai IC&lt;/strong&gt;&lt;/p&gt;
&lt;h3 data-end=&quot;4298&quot; data-start=&quot;4278&quot;&gt;Cara Benerinnya:&lt;/h3&gt;&lt;p data-end=&quot;4424&quot; data-start=&quot;4299&quot;&gt;✔ Mulai dari &lt;strong data-end=&quot;4325&quot; data-start=&quot;4312&quot;&gt;20–27 MHz&lt;/strong&gt;, naikkan pelan&lt;br data-end=&quot;4343&quot; data-start=&quot;4340&quot; /&gt;
✔ Pendekkan kabel&lt;br data-end=&quot;4363&quot; data-start=&quot;4360&quot; /&gt;
✔ Hindari breadboard&lt;br data-end=&quot;4386&quot; data-start=&quot;4383&quot; /&gt;
✔ Solder langsung jika proyek permanen&lt;/p&gt;&lt;h2 data-end=&quot;4467&quot; data-start=&quot;4431&quot;&gt;6. Mengabaikan RAM Mikrokontroler&lt;/h2&gt;
&lt;p data-end=&quot;4510&quot; data-start=&quot;4468&quot;&gt;Ini jebakan klasik buat yang suka animasi.&lt;/p&gt;
&lt;h3 data-end=&quot;4523&quot; data-start=&quot;4512&quot;&gt;Gejala:&lt;/h3&gt;
&lt;ul data-end=&quot;4578&quot; data-start=&quot;4524&quot;&gt;&lt;li data-end=&quot;4541&quot; data-start=&quot;4524&quot;&gt;
&lt;p data-end=&quot;4541&quot; data-start=&quot;4526&quot;&gt;Program crash&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;4559&quot; data-start=&quot;4542&quot;&gt;
&lt;p data-end=&quot;4559&quot; data-start=&quot;4544&quot;&gt;Out of memory&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;4578&quot; data-start=&quot;4560&quot;&gt;
&lt;p data-end=&quot;4578&quot; data-start=&quot;4562&quot;&gt;Refresh lambat&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;h3 data-end=&quot;4602&quot; data-start=&quot;4580&quot;&gt;Penjelasan Teknis:&lt;/h3&gt;
&lt;p data-end=&quot;4689&quot; data-start=&quot;4603&quot;&gt;Arduino Uno cuma punya &lt;strong data-end=&quot;4638&quot; data-start=&quot;4626&quot;&gt;2 KB RAM&lt;/strong&gt;.&lt;br data-end=&quot;4642&quot; data-start=&quot;4639&quot; /&gt;
Satu buffer layar saja sudah bikin ngos-ngosan.&lt;/p&gt;
&lt;h3 data-end=&quot;4711&quot; data-start=&quot;4691&quot;&gt;Cara Benerinnya:&lt;/h3&gt;&lt;p data-end=&quot;4849&quot; data-start=&quot;4712&quot;&gt;✔ Gunakan &lt;strong data-end=&quot;4737&quot; data-start=&quot;4722&quot;&gt;ESP32 + DMA&lt;/strong&gt;&lt;br data-end=&quot;4740&quot; data-start=&quot;4737&quot; /&gt;
✔ Aktifkan sprite hanya seperlunya&lt;br data-end=&quot;4777&quot; data-start=&quot;4774&quot; /&gt;
✔ Simpan gambar di &lt;strong data-end=&quot;4815&quot; data-start=&quot;4796&quot;&gt;Flash (PROGMEM)&lt;/strong&gt;&lt;br data-end=&quot;4818&quot; data-start=&quot;4815&quot; /&gt;
✔ Hindari JPG, pakai BMP mentah&lt;/p&gt;&lt;h2 data-end=&quot;4891&quot; data-start=&quot;4856&quot;&gt;7. Masalah Kalibrasi Touchscreen&lt;/h2&gt;
&lt;p data-end=&quot;4944&quot; data-start=&quot;4892&quot;&gt;Banyak yang nyerah di sini, padahal solusinya jelas.&lt;/p&gt;
&lt;h3 data-end=&quot;4957&quot; data-start=&quot;4946&quot;&gt;Gejala:&lt;/h3&gt;
&lt;ul data-end=&quot;5033&quot; data-start=&quot;4958&quot;&gt;&lt;li data-end=&quot;4984&quot; data-start=&quot;4958&quot;&gt;
&lt;p data-end=&quot;4984&quot; data-start=&quot;4960&quot;&gt;Titik sentuh melenceng&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;5005&quot; data-start=&quot;4985&quot;&gt;
&lt;p data-end=&quot;5005&quot; data-start=&quot;4987&quot;&gt;Sentuhan kebalik&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;5033&quot; data-start=&quot;5006&quot;&gt;
&lt;p data-end=&quot;5033&quot; data-start=&quot;5008&quot;&gt;Tidak akurat di pinggir&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;h3 data-end=&quot;5055&quot; data-start=&quot;5035&quot;&gt;Cara Benerinnya:&lt;/h3&gt;&lt;p data-end=&quot;5177&quot; data-start=&quot;5056&quot;&gt;✔ Jalankan &lt;strong data-end=&quot;5086&quot; data-start=&quot;5067&quot;&gt;Touch_Calibrate&lt;/strong&gt;&lt;br data-end=&quot;5089&quot; data-start=&quot;5086&quot; /&gt;
✔ Catat nilai X/Y&lt;br data-end=&quot;5109&quot; data-start=&quot;5106&quot; /&gt;
✔ Simpan manual di kode&lt;br data-end=&quot;5135&quot; data-start=&quot;5132&quot; /&gt;
✔ Kalibrasi &lt;strong data-end=&quot;5177&quot; data-start=&quot;5147&quot;&gt;setelah rotasi layar benar&lt;/strong&gt;&lt;/p&gt;&lt;h2 data-end=&quot;5231&quot; data-start=&quot;5184&quot;&gt;8. Kabel Terlalu Panjang &amp;amp; Layout Berantakan&lt;/h2&gt;
&lt;p data-end=&quot;5266&quot; data-start=&quot;5232&quot;&gt;TFT &lt;strong data-end=&quot;5265&quot; data-start=&quot;5236&quot;&gt;tidak ramah kabel panjang&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 data-end=&quot;5279&quot; data-start=&quot;5268&quot;&gt;Dampak:&lt;/h3&gt;
&lt;ul data-end=&quot;5323&quot; data-start=&quot;5280&quot;&gt;&lt;li data-end=&quot;5291&quot; data-start=&quot;5280&quot;&gt;
&lt;p data-end=&quot;5291&quot; data-start=&quot;5282&quot;&gt;Flicker&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;5308&quot; data-start=&quot;5292&quot;&gt;
&lt;p data-end=&quot;5308&quot; data-start=&quot;5294&quot;&gt;Touch loncat&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;5323&quot; data-start=&quot;5309&quot;&gt;
&lt;p data-end=&quot;5323&quot; data-start=&quot;5311&quot;&gt;Data korup&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;h3 data-end=&quot;5336&quot; data-start=&quot;5325&quot;&gt;Solusi:&lt;/h3&gt;&lt;p data-end=&quot;5423&quot; data-start=&quot;5337&quot;&gt;✔ Kabel sependek mungkin&lt;br data-end=&quot;5364&quot; data-start=&quot;5361&quot; /&gt;
✔ Jalur data sejajar &amp;amp; rapi&lt;br data-end=&quot;5394&quot; data-start=&quot;5391&quot; /&gt;
✔ Pisahkan jalur power &amp;amp; data&lt;/p&gt;&lt;h2 data-end=&quot;5443&quot; data-start=&quot;5430&quot;&gt;Kesimpulan&lt;/h2&gt;
&lt;p data-end=&quot;5530&quot; data-start=&quot;5444&quot;&gt;Memakai TFT 4 inch memang &lt;strong data-end=&quot;5497&quot; data-start=&quot;5470&quot;&gt;memuaskan secara visual&lt;/strong&gt;, tapi menuntut ketelitian lebih.&lt;/p&gt;
&lt;p data-end=&quot;5651&quot; data-start=&quot;5532&quot;&gt;&lt;strong data-end=&quot;5562&quot; data-start=&quot;5532&quot;&gt;Kunci suksesnya cuma tiga:&lt;/strong&gt;&lt;br /&gt;
1️⃣ Daya yang cukup&lt;br data-end=&quot;5585&quot; data-start=&quot;5582&quot; /&gt;
2️⃣ Level logika yang benar&lt;br data-end=&quot;5615&quot; data-start=&quot;5612&quot; /&gt;
3️⃣ Konfigurasi library yang tepat&lt;/p&gt;
&lt;p data-end=&quot;5665&quot; data-start=&quot;5653&quot;&gt;Urutan aman:&lt;/p&gt;
&lt;blockquote data-end=&quot;5728&quot; data-start=&quot;5666&quot;&gt;
&lt;p data-end=&quot;5728&quot; data-start=&quot;5668&quot;&gt;&lt;strong data-end=&quot;5728&quot; data-start=&quot;5668&quot;&gt;Controller → Power → Wiring → Orientasi → Baru Kalibrasi&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-end=&quot;5864&quot; data-start=&quot;5730&quot;&gt;Jangan langsung menyalahkan modul.&lt;br data-end=&quot;5767&quot; data-start=&quot;5764&quot; /&gt;
Sering kali masalahnya cuma &lt;strong data-end=&quot;5827&quot; data-start=&quot;5795&quot;&gt;satu baris di &lt;code data-end=&quot;5825&quot; data-start=&quot;5811&quot;&gt;User_Setup.h&lt;/code&gt;&lt;/strong&gt; atau &lt;strong data-end=&quot;5863&quot; data-start=&quot;5833&quot;&gt;satu kabel terlalu panjang&lt;/strong&gt;.&lt;/p&gt;&lt;p data-end=&quot;5864&quot; data-start=&quot;5730&quot;&gt;Baca juga : &lt;a href=&quot;https://www.carapaklek.com/2025/09/download-file-premium-bayar-download.html&quot; target=&quot;_blank&quot;&gt;Download Sket Arduino IDE untuk Kalibrasi Layar Touchscreen TFT 4 Inch ILI9488&amp;nbsp;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;script type=&quot;application/ld+json&quot;&gt;
{
  &quot;@context&quot;: &quot;https://schema.org&quot;,
  &quot;@type&quot;: &quot;Article&quot;,
  &quot;mainEntityOfPage&quot;: {
    &quot;@type&quot;: &quot;WebPage&quot;,
    &quot;@id&quot;: &quot;https://www.carapaklek.com/2026/01/kesalahan-paling-umum-pakai-tft-4-inch.html&quot;
  },
  &quot;headline&quot;: &quot;Kesalahan Paling Umum Pakai TFT 4 Inch (dan Cara Benerinnya)&quot;,
  &quot;description&quot;: &quot;Bahas kesalahan paling umum pakai TFT 4 inch: layar putih, reset, warna aneh, touch melenceng, masalah power, driver, dan solusinya.&quot;,
  &quot;image&quot;: &quot;https://blogger.googleusercontent.com/img/a/AVvXsEiQq-3CuaOvw-e2Py_id48KbBQ0t7iNTVuwCHGaLFOibxbEmJVPyd4vsStQZrZYtSa6idX2rEDp1qLx7OnHxrlH2V1StJeEKDkcihV1B70yphkm2DniHCtJ0R02p8h80Xv1YNGWuTQm6AYniO_KtyUiOG4PRtVPAd6aMmExQj91xCDv4KLoI-ts12Wql3QD&quot;,
  &quot;author&quot;: {
    &quot;@type&quot;: &quot;Person&quot;,
    &quot;name&quot;: &quot;Paklek&quot;
  },
  &quot;publisher&quot;: {
    &quot;@type&quot;: &quot;Organization&quot;,
    &quot;name&quot;: &quot;CaraPaklek&quot;,
    &quot;logo&quot;: {
      &quot;@type&quot;: &quot;ImageObject&quot;,
      &quot;url&quot;: &quot;https://www.carapaklek.com/favicon.ico&quot;
    }
  },
  &quot;datePublished&quot;: &quot;2026-01-31&quot;,
  &quot;dateModified&quot;: &quot;2026-01-31&quot;
}
&lt;/script&gt;
</content><link rel='replies' type='application/atom+xml' href='https://www.carapaklek.com/feeds/4993037406670983801/comments/default' title='Posting Komentar'/><link rel='replies' type='text/html' href='https://www.carapaklek.com/2026/01/kesalahan-paling-umum-pakai-tft-4-inch.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/2093917475945207513/posts/default/4993037406670983801'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/2093917475945207513/posts/default/4993037406670983801'/><link rel='alternate' type='text/html' href='https://www.carapaklek.com/2026/01/kesalahan-paling-umum-pakai-tft-4-inch.html' title='Kesalahan Paling Umum Pakai TFT 4 Inch (dan Cara Benerinnya)'/><author><name>carapaklek.com</name><uri>http://www.blogger.com/profile/12438575085929354819</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj84wNpqEWz7nUZmjNjPBarFLyRAZARNpnydt-LYU_GZhXNGZFUplzpWB82bcX7camGkjKhQ-KGgMvx5RMUkIl4gkJvWLq8dlBfnRdA_lNZPKfK8QjiWqasrUvzS15za_c0-zdUM_aAJ39EGM5XGzVoH0xzAg-7mAIwM90m4_AE9y7kgQ/s220/webcamp.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEiQq-3CuaOvw-e2Py_id48KbBQ0t7iNTVuwCHGaLFOibxbEmJVPyd4vsStQZrZYtSa6idX2rEDp1qLx7OnHxrlH2V1StJeEKDkcihV1B70yphkm2DniHCtJ0R02p8h80Xv1YNGWuTQm6AYniO_KtyUiOG4PRtVPAd6aMmExQj91xCDv4KLoI-ts12Wql3QD=s72-w640-h485-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2093917475945207513.post-5794601890820871916</id><published>2026-01-29T22:53:00.005+07:00</published><updated>2026-01-29T22:53:55.179+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Arduino"/><category scheme="http://www.blogger.com/atom/ns#" term="Teknologi"/><title type='text'>Arduino Nano Reset Sendiri Saat Relay Aktif? Ini Penyebab Teknis dan Solusi Paling Aman</title><content type='html'>&lt;h2 style=&quot;text-align: left;&quot;&gt;Masalah yang Sering Dialami Pengguna Arduino Nano&lt;/h2&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgj7EcuLDhR3XJY_aWvSDCxvPRtMsXW_9aWLbfiEWHKGdmT2t08xdncttBAw9mA6-CSwQARroERaSAippaI8ofi9Ld5rHxL9htMcwCw435x9TiS-gWsxW9d-hUGvLyFOAd8_A7mNxE25MIDdl3ttit5KxGpRCnFHWPImnEF_27nF1hGHdNWU4OYht-NcOx4&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;652&quot; data-original-width=&quot;1004&quot; height=&quot;260&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgj7EcuLDhR3XJY_aWvSDCxvPRtMsXW_9aWLbfiEWHKGdmT2t08xdncttBAw9mA6-CSwQARroERaSAippaI8ofi9Ld5rHxL9htMcwCw435x9TiS-gWsxW9d-hUGvLyFOAd8_A7mNxE25MIDdl3ttit5KxGpRCnFHWPImnEF_27nF1hGHdNWU4OYht-NcOx4=w400-h260&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&lt;/h2&gt;
&lt;p data-end=&quot;658&quot; data-start=&quot;481&quot;&gt;Salah satu masalah paling sering dialami pengguna Arduino Nano adalah &lt;strong data-end=&quot;614&quot; data-start=&quot;551&quot;&gt;board tiba-tiba reset atau restart sendiri saat relay aktif&lt;/strong&gt;.&lt;br data-end=&quot;618&quot; data-start=&quot;615&quot; /&gt;
Masalah ini sering bikin bingung karena:&lt;/p&gt;
&lt;ul data-end=&quot;780&quot; data-start=&quot;660&quot;&gt;&lt;li data-end=&quot;683&quot; data-start=&quot;660&quot;&gt;
&lt;p data-end=&quot;683&quot; data-start=&quot;662&quot;&gt;Program sudah benar&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;702&quot; data-start=&quot;684&quot;&gt;
&lt;p data-end=&quot;702&quot; data-start=&quot;686&quot;&gt;Kode sederhana&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;737&quot; data-start=&quot;703&quot;&gt;
&lt;p data-end=&quot;737&quot; data-start=&quot;705&quot;&gt;Tidak ada error di Arduino IDE&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;780&quot; data-start=&quot;738&quot;&gt;
&lt;p data-end=&quot;780&quot; data-start=&quot;740&quot;&gt;Tapi setiap relay ON → Arduino restart&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;831&quot; data-start=&quot;782&quot;&gt;Gejala yang umum terjadi di lapangan antara lain:&lt;/p&gt;
&lt;ul data-end=&quot;1013&quot; data-start=&quot;832&quot;&gt;&lt;li data-end=&quot;863&quot; data-start=&quot;832&quot;&gt;
&lt;p data-end=&quot;863&quot; data-start=&quot;834&quot;&gt;Program mengulang dari awal&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;904&quot; data-start=&quot;864&quot;&gt;
&lt;p data-end=&quot;904&quot; data-start=&quot;866&quot;&gt;LCD 16x2 mati sesaat lalu hidup lagi&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;935&quot; data-start=&quot;905&quot;&gt;
&lt;p data-end=&quot;935&quot; data-start=&quot;907&quot;&gt;Relay hanya aktif sebentar&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;976&quot; data-start=&quot;936&quot;&gt;
&lt;p data-end=&quot;976&quot; data-start=&quot;938&quot;&gt;Serial Monitor kembali ke baris awal&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1013&quot; data-start=&quot;977&quot;&gt;
&lt;p data-end=&quot;1013&quot; data-start=&quot;979&quot;&gt;Arduino terasa hangat atau panas&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;&lt;p data-end=&quot;1153&quot; data-start=&quot;1015&quot;&gt;Banyak pemula mengira ini &lt;strong data-end=&quot;1077&quot; data-start=&quot;1041&quot;&gt;bug sketch atau delay yang salah&lt;/strong&gt;, padahal &lt;strong data-end=&quot;1136&quot; data-start=&quot;1087&quot;&gt;99% kasus disebabkan oleh masalah kelistrikan&lt;/strong&gt;, bukan software.&lt;/p&gt;&lt;h2 data-end=&quot;1210&quot; data-start=&quot;1160&quot;&gt;Kenapa Relay Bisa Membuat Arduino Nano Reset?&lt;/h2&gt;
&lt;p data-end=&quot;1367&quot; data-start=&quot;1212&quot;&gt;Relay bukan sekadar saklar biasa. Relay adalah &lt;strong data-end=&quot;1277&quot; data-start=&quot;1259&quot;&gt;beban induktif&lt;/strong&gt; yang bisa menimbulkan gangguan serius jika sistem catu daya tidak dirancang dengan benar.&lt;/p&gt;&lt;p data-end=&quot;1420&quot; data-start=&quot;1369&quot;&gt;Berikut penyebab teknis yang paling sering terjadi.&lt;/p&gt;&lt;h2 data-end=&quot;1476&quot; data-start=&quot;1427&quot;&gt;Penyebab Arduino Nano Reset Saat Relay Aktif&lt;/h2&gt;
&lt;h3 data-end=&quot;1519&quot; data-start=&quot;1478&quot;&gt;1. Tegangan Drop Saat Relay Menyala&lt;/h3&gt;
&lt;p data-end=&quot;1681&quot; data-start=&quot;1521&quot;&gt;Relay membutuhkan arus cukup besar pada saat pertama kali aktif (inrush current).&lt;br data-end=&quot;1605&quot; data-start=&quot;1602&quot; /&gt;
Jika Arduino dan relay &lt;strong data-end=&quot;1660&quot; data-start=&quot;1628&quot;&gt;menggunakan supply yang sama&lt;/strong&gt;, maka saat relay ON:&lt;/p&gt;
&lt;ul data-end=&quot;1808&quot; data-start=&quot;1683&quot;&gt;&lt;li data-end=&quot;1716&quot; data-start=&quot;1683&quot;&gt;
&lt;p data-end=&quot;1716&quot; data-start=&quot;1685&quot;&gt;Tegangan 5V bisa turun sesaat&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1774&quot; data-start=&quot;1717&quot;&gt;
&lt;p data-end=&quot;1774&quot; data-start=&quot;1719&quot;&gt;Regulator Arduino tidak mampu mempertahankan tegangan&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1808&quot; data-start=&quot;1775&quot;&gt;
&lt;p data-end=&quot;1808&quot; data-start=&quot;1777&quot;&gt;Mikrokontroler langsung reset&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;1849&quot; data-start=&quot;1810&quot;&gt;Masalah ini sering muncul pada kondisi:&lt;/p&gt;
&lt;ul data-end=&quot;1964&quot; data-start=&quot;1850&quot;&gt;&lt;li data-end=&quot;1879&quot; data-start=&quot;1850&quot;&gt;
&lt;p data-end=&quot;1879&quot; data-start=&quot;1852&quot;&gt;Menggunakan adaptor murah&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1901&quot; data-start=&quot;1880&quot;&gt;
&lt;p data-end=&quot;1901&quot; data-start=&quot;1882&quot;&gt;Supply USB laptop&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1915&quot; data-start=&quot;1902&quot;&gt;
&lt;p data-end=&quot;1915&quot; data-start=&quot;1904&quot;&gt;Powerbank&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1964&quot; data-start=&quot;1916&quot;&gt;
&lt;p data-end=&quot;1964&quot; data-start=&quot;1918&quot;&gt;Mengambil 5V relay langsung dari pin Arduino&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;&lt;p data-end=&quot;2031&quot; data-start=&quot;1966&quot;&gt;Drop tegangan sesaat saja sudah cukup membuat ATmega328P restart.&lt;/p&gt;&lt;h3 data-end=&quot;2090&quot; data-start=&quot;2038&quot;&gt;2. Noise dan Lonjakan Tegangan dari Coil Relay&lt;/h3&gt;
&lt;p data-end=&quot;2227&quot; data-start=&quot;2092&quot;&gt;Relay memiliki coil induktif.&lt;br data-end=&quot;2124&quot; data-start=&quot;2121&quot; /&gt;
Saat relay OFF, terjadi &lt;strong data-end=&quot;2186&quot; data-start=&quot;2148&quot;&gt;lonjakan tegangan balik (back EMF)&lt;/strong&gt; yang bisa merambat ke jalur VCC dan GND.&lt;/p&gt;
&lt;p data-end=&quot;2234&quot; data-start=&quot;2229&quot;&gt;Jika:&lt;/p&gt;
&lt;ul data-end=&quot;2323&quot; data-start=&quot;2235&quot;&gt;&lt;li data-end=&quot;2262&quot; data-start=&quot;2235&quot;&gt;
&lt;p data-end=&quot;2262&quot; data-start=&quot;2237&quot;&gt;Tidak ada diode flyback&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2299&quot; data-start=&quot;2263&quot;&gt;
&lt;p data-end=&quot;2299&quot; data-start=&quot;2265&quot;&gt;Modul relay tidak punya proteksi&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2323&quot; data-start=&quot;2300&quot;&gt;
&lt;p data-end=&quot;2323&quot; data-start=&quot;2302&quot;&gt;Jalur kabel panjang&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;2345&quot; data-start=&quot;2325&quot;&gt;Maka noise ini bisa:&lt;/p&gt;
&lt;ul data-end=&quot;2448&quot; data-start=&quot;2346&quot;&gt;&lt;li data-end=&quot;2381&quot; data-start=&quot;2346&quot;&gt;
&lt;p data-end=&quot;2381&quot; data-start=&quot;2348&quot;&gt;Mengganggu kerja mikrokontroler&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2412&quot; data-start=&quot;2382&quot;&gt;
&lt;p data-end=&quot;2412&quot; data-start=&quot;2384&quot;&gt;Membuat logika reset aktif&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2448&quot; data-start=&quot;2413&quot;&gt;&lt;p data-end=&quot;2448&quot; data-start=&quot;2415&quot;&gt;Menyebabkan sistem tidak stabil&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3 data-end=&quot;2505&quot; data-start=&quot;2455&quot;&gt;3. Regulator Onboard Arduino Nano Tidak Kuat&lt;/h3&gt;
&lt;p data-end=&quot;2595&quot; data-start=&quot;2507&quot;&gt;Regulator bawaan Arduino Nano &lt;strong data-end=&quot;2553&quot; data-start=&quot;2537&quot;&gt;sangat kecil&lt;/strong&gt; dan &lt;strong data-end=&quot;2594&quot; data-start=&quot;2558&quot;&gt;tidak didesain untuk beban berat&lt;/strong&gt;.&lt;/p&gt;
&lt;p data-end=&quot;2622&quot; data-start=&quot;2597&quot;&gt;Masalah makin parah jika:&lt;/p&gt;
&lt;ul data-end=&quot;2710&quot; data-start=&quot;2623&quot;&gt;&lt;li data-end=&quot;2639&quot; data-start=&quot;2623&quot;&gt;
&lt;p data-end=&quot;2639&quot; data-start=&quot;2625&quot;&gt;Input 9V–12V&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2668&quot; data-start=&quot;2640&quot;&gt;
&lt;p data-end=&quot;2668&quot; data-start=&quot;2642&quot;&gt;Arduino menyalakan relay&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2710&quot; data-start=&quot;2669&quot;&gt;
&lt;p data-end=&quot;2710&quot; data-start=&quot;2671&quot;&gt;Ditambah LCD, sensor, atau modul lain&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;2727&quot; data-start=&quot;2712&quot;&gt;Regulator akan:&lt;/p&gt;
&lt;ul data-end=&quot;2781&quot; data-start=&quot;2728&quot;&gt;&lt;li data-end=&quot;2737&quot; data-start=&quot;2728&quot;&gt;
&lt;p data-end=&quot;2737&quot; data-start=&quot;2730&quot;&gt;Panas&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2755&quot; data-start=&quot;2738&quot;&gt;
&lt;p data-end=&quot;2755&quot; data-start=&quot;2740&quot;&gt;Drop tegangan&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2781&quot; data-start=&quot;2756&quot;&gt;
&lt;p data-end=&quot;2781&quot; data-start=&quot;2758&quot;&gt;Memicu reset otomatis&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;&lt;p data-end=&quot;2865&quot; data-start=&quot;2783&quot;&gt;Terutama pada Arduino Nano &lt;strong data-end=&quot;2825&quot; data-start=&quot;2810&quot;&gt;versi clone&lt;/strong&gt;, kualitas regulator sering lebih buruk.&lt;/p&gt;&lt;h3 data-end=&quot;2916&quot; data-start=&quot;2872&quot;&gt;4. Ground Tidak Disatukan dengan Benar&lt;/h3&gt;
&lt;p data-end=&quot;2965&quot; data-start=&quot;2918&quot;&gt;Kesalahan wiring klasik yang sering diremehkan:&lt;/p&gt;
&lt;ul data-end=&quot;3095&quot; data-start=&quot;2966&quot;&gt;&lt;li data-end=&quot;3011&quot; data-start=&quot;2966&quot;&gt;
&lt;p data-end=&quot;3011&quot; data-start=&quot;2968&quot;&gt;Ground relay terpisah dari ground Arduino&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;3041&quot; data-start=&quot;3012&quot;&gt;
&lt;p data-end=&quot;3041&quot; data-start=&quot;3014&quot;&gt;Jalur GND terlalu panjang&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;3095&quot; data-start=&quot;3042&quot;&gt;
&lt;p data-end=&quot;3095&quot; data-start=&quot;3044&quot;&gt;Ground bercabang tanpa titik referensi yang jelas&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;3107&quot; data-start=&quot;3097&quot;&gt;Akibatnya:&lt;/p&gt;
&lt;ul data-end=&quot;3213&quot; data-start=&quot;3108&quot;&gt;&lt;li data-end=&quot;3134&quot; data-start=&quot;3108&quot;&gt;
&lt;p data-end=&quot;3134&quot; data-start=&quot;3110&quot;&gt;Referensi logika kacau&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;3181&quot; data-start=&quot;3135&quot;&gt;
&lt;p data-end=&quot;3181&quot; data-start=&quot;3137&quot;&gt;Arduino membaca noise sebagai sinyal reset&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;3213&quot; data-start=&quot;3182&quot;&gt;&lt;p data-end=&quot;3213&quot; data-start=&quot;3184&quot;&gt;Sistem jadi tidak konsisten&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3 data-end=&quot;3262&quot; data-start=&quot;3220&quot;&gt;5. Modul Relay Murahan Tanpa Isolasi&lt;/h3&gt;
&lt;p data-end=&quot;3291&quot; data-start=&quot;3264&quot;&gt;Beberapa modul relay murah:&lt;/p&gt;
&lt;ul data-end=&quot;3368&quot; data-start=&quot;3292&quot;&gt;&lt;li data-end=&quot;3319&quot; data-start=&quot;3292&quot;&gt;
&lt;p data-end=&quot;3319&quot; data-start=&quot;3294&quot;&gt;Tidak punya optocoupler&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;3347&quot; data-start=&quot;3320&quot;&gt;
&lt;p data-end=&quot;3347&quot; data-start=&quot;3322&quot;&gt;Diode flyback abal-abal&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;3368&quot; data-start=&quot;3348&quot;&gt;
&lt;p data-end=&quot;3368&quot; data-start=&quot;3350&quot;&gt;Layout PCB jelek&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;&lt;p data-end=&quot;3431&quot; data-start=&quot;3370&quot;&gt;Modul seperti ini sangat mudah menyuntikkan noise ke Arduino.&lt;/p&gt;&lt;h2 data-end=&quot;3508&quot; data-start=&quot;3438&quot;&gt;Solusi Arduino Nano Reset Saat Relay Aktif (Terbukti di Lapangan)&lt;/h2&gt;
&lt;h3 data-end=&quot;3554&quot; data-start=&quot;3510&quot;&gt;✅ 1. Pisahkan Supply Arduino dan Relay&lt;/h3&gt;
&lt;p data-end=&quot;3575&quot; data-start=&quot;3556&quot;&gt;Solusi paling aman:&lt;/p&gt;
&lt;ul data-end=&quot;3644&quot; data-start=&quot;3576&quot;&gt;&lt;li data-end=&quot;3606&quot; data-start=&quot;3576&quot;&gt;
&lt;p data-end=&quot;3606&quot; data-start=&quot;3578&quot;&gt;Arduino disupply 5V stabil&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;3644&quot; data-start=&quot;3607&quot;&gt;
&lt;p data-end=&quot;3644&quot; data-start=&quot;3609&quot;&gt;Relay menggunakan supply terpisah&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;3674&quot; data-start=&quot;3646&quot;&gt;Jika hanya ada satu adaptor:&lt;/p&gt;
&lt;ul data-end=&quot;3737&quot; data-start=&quot;3675&quot;&gt;&lt;li data-end=&quot;3737&quot; data-start=&quot;3675&quot;&gt;
&lt;p data-end=&quot;3737&quot; data-start=&quot;3677&quot;&gt;Gunakan &lt;strong data-end=&quot;3721&quot; data-start=&quot;3685&quot;&gt;modul step-down (buck converter)&lt;/strong&gt; untuk Arduino&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;3753&quot; data-start=&quot;3739&quot;&gt;Jangan pernah:&lt;/p&gt;
&lt;ul data-end=&quot;3798&quot; data-start=&quot;3754&quot;&gt;&lt;li data-end=&quot;3798&quot; data-start=&quot;3754&quot;&gt;&lt;p data-end=&quot;3798&quot; data-start=&quot;3756&quot;&gt;Mengambil daya relay dari pin 5V Arduino&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3 data-end=&quot;3852&quot; data-start=&quot;3805&quot;&gt;✅ 2. Gunakan Regulator Eksternal (LM2596)&lt;/h3&gt;
&lt;p data-end=&quot;3913&quot; data-start=&quot;3854&quot;&gt;LM2596 jauh lebih kuat dibanding regulator onboard Arduino.&lt;/p&gt;
&lt;p data-end=&quot;3932&quot; data-start=&quot;3915&quot;&gt;Konfigurasi aman:&lt;/p&gt;
&lt;ul data-end=&quot;4008&quot; data-start=&quot;3933&quot;&gt;&lt;li data-end=&quot;3949&quot; data-start=&quot;3933&quot;&gt;
&lt;p data-end=&quot;3949&quot; data-start=&quot;3935&quot;&gt;Input: 7–24V&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;3971&quot; data-start=&quot;3950&quot;&gt;
&lt;p data-end=&quot;3971&quot; data-start=&quot;3952&quot;&gt;Output: 5V stabil&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;3986&quot; data-start=&quot;3972&quot;&gt;
&lt;p data-end=&quot;3986&quot; data-start=&quot;3974&quot;&gt;Arus besar&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;4008&quot; data-start=&quot;3987&quot;&gt;
&lt;p data-end=&quot;4008&quot; data-start=&quot;3989&quot;&gt;Tidak cepat panas&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;4023&quot; data-start=&quot;4010&quot;&gt;Arduino jadi:&lt;/p&gt;
&lt;ul data-end=&quot;4079&quot; data-start=&quot;4024&quot;&gt;&lt;li data-end=&quot;4040&quot; data-start=&quot;4024&quot;&gt;
&lt;p data-end=&quot;4040&quot; data-start=&quot;4026&quot;&gt;Lebih dingin&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;4057&quot; data-start=&quot;4041&quot;&gt;
&lt;p data-end=&quot;4057&quot; data-start=&quot;4043&quot;&gt;Lebih stabil&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;4079&quot; data-start=&quot;4058&quot;&gt;&lt;p data-end=&quot;4079&quot; data-start=&quot;4060&quot;&gt;Tidak mudah reset&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3 data-end=&quot;4123&quot; data-start=&quot;4086&quot;&gt;✅ 3. Tambahkan Kapasitor Filter&lt;/h3&gt;
&lt;p data-end=&quot;4142&quot; data-start=&quot;4125&quot;&gt;Pasang kapasitor:&lt;/p&gt;
&lt;ul data-end=&quot;4228&quot; data-start=&quot;4143&quot;&gt;&lt;li data-end=&quot;4186&quot; data-start=&quot;4143&quot;&gt;
&lt;p data-end=&quot;4186&quot; data-start=&quot;4145&quot;&gt;Elco 470µF – 1000µF di jalur 5V Arduino&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;4228&quot; data-start=&quot;4187&quot;&gt;
&lt;p data-end=&quot;4228&quot; data-start=&quot;4189&quot;&gt;Kapasitor keramik 100nF dekat pin VCC&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;4237&quot; data-start=&quot;4230&quot;&gt;Fungsi:&lt;/p&gt;
&lt;ul data-end=&quot;4299&quot; data-start=&quot;4238&quot;&gt;&lt;li data-end=&quot;4270&quot; data-start=&quot;4238&quot;&gt;
&lt;p data-end=&quot;4270&quot; data-start=&quot;4240&quot;&gt;Menahan drop tegangan sesaat&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;4299&quot; data-start=&quot;4271&quot;&gt;
&lt;p data-end=&quot;4299&quot; data-start=&quot;4273&quot;&gt;Meredam noise dari relay&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;&lt;p data-end=&quot;4338&quot; data-start=&quot;4301&quot;&gt;Ini solusi murah tapi sangat efektif.&lt;/p&gt;&lt;h3 data-end=&quot;4394&quot; data-start=&quot;4345&quot;&gt;✅ 4. Gunakan Modul Relay dengan Optocoupler&lt;/h3&gt;
&lt;p data-end=&quot;4417&quot; data-start=&quot;4396&quot;&gt;Pastikan modul relay:&lt;/p&gt;
&lt;ul data-end=&quot;4510&quot; data-start=&quot;4418&quot;&gt;&lt;li data-end=&quot;4442&quot; data-start=&quot;4418&quot;&gt;
&lt;p data-end=&quot;4442&quot; data-start=&quot;4420&quot;&gt;Memiliki optocoupler&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;4470&quot; data-start=&quot;4443&quot;&gt;
&lt;p data-end=&quot;4470&quot; data-start=&quot;4445&quot;&gt;Sudah ada diode flyback&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;4510&quot; data-start=&quot;4471&quot;&gt;
&lt;p data-end=&quot;4510&quot; data-start=&quot;4473&quot;&gt;Input jelas (LOW atau HIGH trigger)&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;4533&quot; data-start=&quot;4512&quot;&gt;Optocoupler membantu:&lt;/p&gt;
&lt;ul data-end=&quot;4583&quot; data-start=&quot;4534&quot;&gt;&lt;li data-end=&quot;4560&quot; data-start=&quot;4534&quot;&gt;
&lt;p data-end=&quot;4560&quot; data-start=&quot;4536&quot;&gt;Memisahkan noise relay&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;4583&quot; data-start=&quot;4561&quot;&gt;&lt;p data-end=&quot;4583&quot; data-start=&quot;4563&quot;&gt;Melindungi Arduino&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3 data-end=&quot;4637&quot; data-start=&quot;4590&quot;&gt;✅ 5. Rapikan Jalur Ground (Common Ground)&lt;/h3&gt;
&lt;p data-end=&quot;4652&quot; data-start=&quot;4639&quot;&gt;Aturan dasar:&lt;/p&gt;
&lt;ul data-end=&quot;4752&quot; data-start=&quot;4653&quot;&gt;&lt;li data-end=&quot;4676&quot; data-start=&quot;4653&quot;&gt;
&lt;p data-end=&quot;4676&quot; data-start=&quot;4655&quot;&gt;Semua GND disatukan&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;4711&quot; data-start=&quot;4677&quot;&gt;
&lt;p data-end=&quot;4711&quot; data-start=&quot;4679&quot;&gt;Gunakan kabel pendek dan tebal&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;4752&quot; data-start=&quot;4712&quot;&gt;
&lt;p data-end=&quot;4752&quot; data-start=&quot;4714&quot;&gt;Pisahkan jalur arus besar dan sinyal&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;&lt;p data-end=&quot;4787&quot; data-start=&quot;4754&quot;&gt;Idealnya gunakan &lt;strong data-end=&quot;4786&quot; data-start=&quot;4771&quot;&gt;star ground&lt;/strong&gt;.&lt;/p&gt;&lt;h3 data-end=&quot;4849&quot; data-start=&quot;4794&quot;&gt;✅ 6. Hindari Supply USB untuk Sistem dengan Relay&lt;/h3&gt;
&lt;p data-end=&quot;4862&quot; data-start=&quot;4851&quot;&gt;USB laptop:&lt;/p&gt;
&lt;ul data-end=&quot;4924&quot; data-start=&quot;4863&quot;&gt;&lt;li data-end=&quot;4880&quot; data-start=&quot;4863&quot;&gt;
&lt;p data-end=&quot;4880&quot; data-start=&quot;4865&quot;&gt;Arus terbatas&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;4895&quot; data-start=&quot;4881&quot;&gt;
&lt;p data-end=&quot;4895&quot; data-start=&quot;4883&quot;&gt;Mudah drop&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;4924&quot; data-start=&quot;4896&quot;&gt;
&lt;p data-end=&quot;4924&quot; data-start=&quot;4898&quot;&gt;Tidak stabil untuk relay&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;&lt;p data-end=&quot;4956&quot; data-start=&quot;4926&quot;&gt;Gunakan adaptor DC yang layak.&lt;/p&gt;&lt;h2 data-end=&quot;5007&quot; data-start=&quot;4963&quot;&gt;Alat dan Komponen yang Direkomendasikan&lt;/h2&gt;
&lt;ul data-end=&quot;5169&quot; data-start=&quot;5009&quot;&gt;&lt;li data-end=&quot;5025&quot; data-start=&quot;5009&quot;&gt;
&lt;p data-end=&quot;5025&quot; data-start=&quot;5011&quot;&gt;Arduino Nano&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;5053&quot; data-start=&quot;5026&quot;&gt;
&lt;p data-end=&quot;5053&quot; data-start=&quot;5028&quot;&gt;Modul relay optocoupler&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;5080&quot; data-start=&quot;5054&quot;&gt;
&lt;p data-end=&quot;5080&quot; data-start=&quot;5056&quot;&gt;Modul step-down LM2596&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;5104&quot; data-start=&quot;5081&quot;&gt;
&lt;p data-end=&quot;5104&quot; data-start=&quot;5083&quot;&gt;Elco 470µF / 1000µF&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;5132&quot; data-start=&quot;5105&quot;&gt;
&lt;p data-end=&quot;5132&quot; data-start=&quot;5107&quot;&gt;Kapasitor keramik 100nF&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;5154&quot; data-start=&quot;5133&quot;&gt;
&lt;p data-end=&quot;5154&quot; data-start=&quot;5135&quot;&gt;Adaptor DC 9V–12V&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;5169&quot; data-start=&quot;5155&quot;&gt;
&lt;p data-end=&quot;5169&quot; data-start=&quot;5157&quot;&gt;Multimeter&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;&lt;p data-end=&quot;5225&quot; data-start=&quot;5171&quot;&gt;Komponen ini murah, tapi menentukan kestabilan sistem.&lt;/p&gt;&lt;h2 data-end=&quot;5247&quot; data-start=&quot;5232&quot;&gt;Kesimpulan&lt;/h2&gt;
&lt;p data-end=&quot;5353&quot; data-start=&quot;5249&quot;&gt;Arduino Nano reset sendiri saat relay aktif &lt;strong data-end=&quot;5336&quot; data-start=&quot;5293&quot;&gt;bukan disebabkan oleh kesalahan program&lt;/strong&gt;, melainkan oleh:&lt;/p&gt;
&lt;ul data-end=&quot;5459&quot; data-start=&quot;5354&quot;&gt;&lt;li data-end=&quot;5371&quot; data-start=&quot;5354&quot;&gt;
&lt;p data-end=&quot;5371&quot; data-start=&quot;5356&quot;&gt;Tegangan drop&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;5392&quot; data-start=&quot;5372&quot;&gt;
&lt;p data-end=&quot;5392&quot; data-start=&quot;5374&quot;&gt;Noise dari relay&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;5430&quot; data-start=&quot;5393&quot;&gt;
&lt;p data-end=&quot;5430&quot; data-start=&quot;5395&quot;&gt;Regulator onboard yang tidak kuat&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;5459&quot; data-start=&quot;5431&quot;&gt;
&lt;p data-end=&quot;5459&quot; data-start=&quot;5433&quot;&gt;Wiring ground yang salah&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;5468&quot; data-start=&quot;5461&quot;&gt;Dengan:&lt;/p&gt;
&lt;ul data-end=&quot;5554&quot; data-start=&quot;5469&quot;&gt;&lt;li data-end=&quot;5490&quot; data-start=&quot;5469&quot;&gt;
&lt;p data-end=&quot;5490&quot; data-start=&quot;5471&quot;&gt;Supply yang benar&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;5514&quot; data-start=&quot;5491&quot;&gt;
&lt;p data-end=&quot;5514&quot; data-start=&quot;5493&quot;&gt;Regulator eksternal&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;5533&quot; data-start=&quot;5515&quot;&gt;
&lt;p data-end=&quot;5533&quot; data-start=&quot;5517&quot;&gt;Proteksi relay&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;5554&quot; data-start=&quot;5534&quot;&gt;
&lt;p data-end=&quot;5554&quot; data-start=&quot;5536&quot;&gt;Ground yang rapi&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;5639&quot; data-start=&quot;5556&quot;&gt;Masalah ini &lt;strong data-end=&quot;5593&quot; data-start=&quot;5568&quot;&gt;bisa dihilangkan 100%&lt;/strong&gt; dan sistem akan jauh lebih awet serta stabil.&lt;/p&gt;
&lt;hr data-end=&quot;5644&quot; data-start=&quot;5641&quot; /&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.carapaklek.com/feeds/5794601890820871916/comments/default' title='Posting Komentar'/><link rel='replies' type='text/html' href='https://www.carapaklek.com/2026/01/arduino-nano-reset-sendiri-saat-relay.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/2093917475945207513/posts/default/5794601890820871916'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/2093917475945207513/posts/default/5794601890820871916'/><link rel='alternate' type='text/html' href='https://www.carapaklek.com/2026/01/arduino-nano-reset-sendiri-saat-relay.html' title='Arduino Nano Reset Sendiri Saat Relay Aktif? Ini Penyebab Teknis dan Solusi Paling Aman'/><author><name>carapaklek.com</name><uri>http://www.blogger.com/profile/12438575085929354819</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj84wNpqEWz7nUZmjNjPBarFLyRAZARNpnydt-LYU_GZhXNGZFUplzpWB82bcX7camGkjKhQ-KGgMvx5RMUkIl4gkJvWLq8dlBfnRdA_lNZPKfK8QjiWqasrUvzS15za_c0-zdUM_aAJ39EGM5XGzVoH0xzAg-7mAIwM90m4_AE9y7kgQ/s220/webcamp.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEgj7EcuLDhR3XJY_aWvSDCxvPRtMsXW_9aWLbfiEWHKGdmT2t08xdncttBAw9mA6-CSwQARroERaSAippaI8ofi9Ld5rHxL9htMcwCw435x9TiS-gWsxW9d-hUGvLyFOAd8_A7mNxE25MIDdl3ttit5KxGpRCnFHWPImnEF_27nF1hGHdNWU4OYht-NcOx4=s72-w400-h260-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2093917475945207513.post-5263029168618961675</id><published>2026-01-29T18:23:00.001+07:00</published><updated>2026-01-29T18:26:43.723+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Boardview"/><category scheme="http://www.blogger.com/atom/ns#" term="komputer"/><category scheme="http://www.blogger.com/atom/ns#" term="Teknisi laptop"/><category scheme="http://www.blogger.com/atom/ns#" term="Teknologi"/><title type='text'>Download HP ZBook 17 G5 DA0XW3MBAG0 REV G Boardview (BDV) File (.CAD)</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEh_qe4APo-PWGCk7g43n0zVsJtP7AO6WTqwxQVzCURGhQFK3uyo18-XMZqb2xe1xg44a1xfFmtk_EYDl6kLCpIH3yXGanlrrKCIMQBT6kHPT-JRa6VdwTN20s47rwEMAX6XTS0G1HxdCbw1fPM3_wxBVNepVmdGpIB2XyT9c-1bUUmaDblg0RK_uXHnnaMc&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;609&quot; data-original-width=&quot;1272&quot; height=&quot;191&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEh_qe4APo-PWGCk7g43n0zVsJtP7AO6WTqwxQVzCURGhQFK3uyo18-XMZqb2xe1xg44a1xfFmtk_EYDl6kLCpIH3yXGanlrrKCIMQBT6kHPT-JRa6VdwTN20s47rwEMAX6XTS0G1HxdCbw1fPM3_wxBVNepVmdGpIB2XyT9c-1bUUmaDblg0RK_uXHnnaMc=w400-h191&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiY_vQuyx-xt8QhDf8Z-WH6BdnwzRBNUPQF6nL_cLoSWFwB6wrjUzzTxZKlYXxSQW6KHf-76LnzAukhCdy2myjnSDE53mrp7odQLQZZL9MDL0N4xMyyCZpHq_VRR7MMONI31mm7b86N8RIAD-dBGugpsWt61tXvRZqpkgI3_6sGK5o5rrfm9B3WQrOGQDPu&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;536&quot; data-original-width=&quot;1129&quot; height=&quot;190&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiY_vQuyx-xt8QhDf8Z-WH6BdnwzRBNUPQF6nL_cLoSWFwB6wrjUzzTxZKlYXxSQW6KHf-76LnzAukhCdy2myjnSDE53mrp7odQLQZZL9MDL0N4xMyyCZpHq_VRR7MMONI31mm7b86N8RIAD-dBGugpsWt61tXvRZqpkgI3_6sGK5o5rrfm9B3WQrOGQDPu=w400-h190&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p data-end=&quot;658&quot; data-start=&quot;325&quot;&gt;If you are working on motherboard-level laptop repair, having access to the correct &lt;b data-end=&quot;427&quot; data-start=&quot;409&quot;&gt;boardview file&lt;/b&gt; can save hours of troubleshooting. In this article, we will discuss how to download and use the &lt;b data-end=&quot;596&quot; data-start=&quot;524&quot;&gt;HP ZBook 17 G5 DA0XW3MBAG0 REV G Boardview (BDV) file in .CAD format&lt;/b&gt;, and why this file is essential for professional diagnostics.&lt;/p&gt;&lt;p data-end=&quot;846&quot; data-start=&quot;660&quot;&gt;Whether you are an electronics technician, laptop repair engineer, or advanced hobbyist, this guide will help you understand the value of boardview files and how to use them effectively.&lt;/p&gt;&lt;h2 data-end=&quot;887&quot; data-start=&quot;853&quot;&gt;What Is a Boardview (BDV) File?&lt;/h2&gt;
&lt;p data-end=&quot;1146&quot; data-start=&quot;889&quot;&gt;A &lt;b data-end=&quot;909&quot; data-start=&quot;891&quot;&gt;boardview file&lt;/b&gt; is a digital representation of a motherboard that shows the physical layout of components, signal names, net connections, and test points. Unlike schematics, boardview files allow you to visually locate components directly on the board.&lt;/p&gt;
&lt;p data-end=&quot;1187&quot; data-start=&quot;1148&quot;&gt;Key benefits of using a boardview file:&lt;/p&gt;
&lt;ul data-end=&quot;1349&quot; data-start=&quot;1188&quot;&gt;&lt;li data-end=&quot;1228&quot; data-start=&quot;1188&quot;&gt;
&lt;p data-end=&quot;1228&quot; data-start=&quot;1190&quot;&gt;Identify component locations quickly&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1267&quot; data-start=&quot;1229&quot;&gt;
&lt;p data-end=&quot;1267&quot; data-start=&quot;1231&quot;&gt;Trace signal paths and power rails&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1308&quot; data-start=&quot;1268&quot;&gt;
&lt;p data-end=&quot;1308&quot; data-start=&quot;1270&quot;&gt;Locate missing or damaged components&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1349&quot; data-start=&quot;1309&quot;&gt;
&lt;p data-end=&quot;1349&quot; data-start=&quot;1311&quot;&gt;Speed up motherboard troubleshooting&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;&lt;p data-end=&quot;1435&quot; data-start=&quot;1351&quot;&gt;Boardview files are especially useful when schematics are incomplete or unavailable.&lt;/p&gt;&lt;h2 data-end=&quot;1495&quot; data-start=&quot;1442&quot;&gt;About HP ZBook 17 G5 Motherboard DA0XW3MBAG0 REV G&lt;/h2&gt;
&lt;p data-end=&quot;1755&quot; data-start=&quot;1497&quot;&gt;The &lt;b data-end=&quot;1519&quot; data-start=&quot;1501&quot;&gt;HP ZBook 17 G5&lt;/b&gt; is a high-performance mobile workstation designed for professional workloads such as engineering, 3D modeling, and video production. Due to its complex motherboard design, board-level repairs require accurate technical reference files.&lt;/p&gt;&lt;p data-end=&quot;1994&quot; data-start=&quot;1757&quot;&gt;The motherboard code &lt;b data-end=&quot;1799&quot; data-start=&quot;1778&quot;&gt;DA0XW3MBAG0 REV G&lt;/b&gt; identifies a specific board revision. Using the wrong boardview revision can lead to incorrect measurements or misidentified components, so it is important to match the exact model and revision.&lt;/p&gt;&lt;h2 data-end=&quot;2050&quot; data-start=&quot;2001&quot;&gt;Why You Need the HP ZBook 17 G5 Boardview File&lt;/h2&gt;
&lt;p data-end=&quot;2191&quot; data-start=&quot;2052&quot;&gt;When repairing modern laptops like the HP ZBook series, visual references are critical. The &lt;b data-end=&quot;2180&quot; data-start=&quot;2144&quot;&gt;DA0XW3MBAG0 REV G boardview file&lt;/b&gt; helps you:&lt;/p&gt;
&lt;ul data-end=&quot;2384&quot; data-start=&quot;2193&quot;&gt;&lt;li data-end=&quot;2240&quot; data-start=&quot;2193&quot;&gt;
&lt;p data-end=&quot;2240&quot; data-start=&quot;2195&quot;&gt;Locate power coils, MOSFETs, and regulators&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2284&quot; data-start=&quot;2241&quot;&gt;
&lt;p data-end=&quot;2284&quot; data-start=&quot;2243&quot;&gt;Identify CPU, GPU, and RAM signal paths&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2335&quot; data-start=&quot;2285&quot;&gt;
&lt;p data-end=&quot;2335&quot; data-start=&quot;2287&quot;&gt;Find BIOS, EC, and charging circuit components&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2384&quot; data-start=&quot;2336&quot;&gt;
&lt;p data-end=&quot;2384&quot; data-start=&quot;2338&quot;&gt;Diagnose short circuits and missing voltages&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;&lt;p data-end=&quot;2513&quot; data-start=&quot;2386&quot;&gt;For technicians working without this file, troubleshooting often becomes trial-and-error, which increases repair time and risk.&lt;/p&gt;&lt;h2 data-end=&quot;2552&quot; data-start=&quot;2520&quot;&gt;File Format: Boardview (.CAD)&lt;/h2&gt;
&lt;p data-end=&quot;2697&quot; data-start=&quot;2554&quot;&gt;The boardview file for HP ZBook 17 G5 is typically provided in &lt;b data-end=&quot;2632&quot; data-start=&quot;2617&quot;&gt;.CAD format&lt;/b&gt;, which is supported by popular boardview software tools such as:&lt;/p&gt;
&lt;ul data-end=&quot;2748&quot; data-start=&quot;2699&quot;&gt;&lt;li data-end=&quot;2716&quot; data-start=&quot;2699&quot;&gt;
&lt;p data-end=&quot;2716&quot; data-start=&quot;2701&quot;&gt;OpenBoardView&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2727&quot; data-start=&quot;2717&quot;&gt;
&lt;p data-end=&quot;2727&quot; data-start=&quot;2719&quot;&gt;FlexBV&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2748&quot; data-start=&quot;2728&quot;&gt;
&lt;p data-end=&quot;2748&quot; data-start=&quot;2730&quot;&gt;BoardView Viewer&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;&lt;p data-end=&quot;2870&quot; data-start=&quot;2750&quot;&gt;These tools allow you to load the file, search for net names, and click directly on components to see their connections.&lt;/p&gt;
&lt;b&gt;&lt;a href=&quot;#&quot; onclick=&quot;document.getElementById(&#39;popupForm&#39;).style.display=&#39;block&#39;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;👉Klik di sini untuk download&lt;/span&gt;&lt;/a&gt;&lt;/b&gt;
&lt;!--Popup--&gt;
&lt;div id=&quot;popupForm&quot;&gt;
  &lt;div class=&quot;popup-inner&quot;&gt;
    &lt;h3&gt;Akses Download&lt;/h3&gt;
    &lt;form id=&quot;emailForm&quot;&gt;
      &lt;label&gt;Email:&lt;/label&gt;&lt;br /&gt;
      &lt;input name=&quot;email&quot; required=&quot;&quot; type=&quot;email&quot; /&gt;&lt;br /&gt;&lt;br /&gt;
      &lt;label&gt;
        &lt;input required=&quot;&quot; type=&quot;checkbox&quot; /&gt;
        Saya setuju menerima email dari &lt;a data-preview=&quot;&quot; href=&quot;https://www.google.com/search?ved=1t:260882&amp;amp;q=carapaklek.com&amp;amp;bbid=2093917475945207513&amp;amp;bpid=2437804466559784368&quot; target=&quot;_blank&quot;&gt;carapaklek.com&lt;/a&gt;
      &lt;/label&gt;&lt;br /&gt;&lt;br /&gt;
      &lt;button type=&quot;submit&quot;&gt;Kirim&lt;/button&gt;
      &lt;button onclick=&quot;document.getElementById(&#39;popupForm&#39;).style.display=&#39;none&#39;&quot; type=&quot;button&quot;&gt;Tutup&lt;/button&gt;
    &lt;/form&gt;
    &lt;div id=&quot;resultMsg&quot;&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;!--Style responsif--&gt;
&lt;style&gt;
  #popupForm {
    display: none;
    position: fixed;
    top: 0; left: 0;
    width: 100vw; height: 100vh;
    background: rgba(0,0,0,0.5);
    z-index: 999;
    padding: 10px;
    box-sizing: border-box;
  }

  .popup-inner {
    background: #fff;
    padding: 20px;
    border-radius: 10px;
    max-width: 400px;
    width: 100%;
    margin: 60px auto;
    box-shadow: 0 0 10px rgba(0,0,0,0.4);
  }

  input[type=&quot;email&quot;] {
    width: 100%;
    padding: 8px;
    box-sizing: border-box;
  }

  button {
    padding: 10px 20px;
    margin-top: 10px;
  }

  @media (max-width: 500px) {
    .popup-inner {
      max-width: 90%;
      font-size: 14px;
    }
  }
&lt;/style&gt;


&lt;!--Script--&gt;
&lt;script&gt;
  document.getElementById(&#39;emailForm&#39;).addEventListener(&#39;submit&#39;, function(e) {
    e.preventDefault();
    const email = this.email.value;
    const resultMsg = document.getElementById(&#39;resultMsg&#39;);

    fetch(&#39;https://script.google.com/macros/s/AKfycbxOykogXhETcIIRdoEF99TKdmupctKMilm2nFBcFh4ssiuhsiddwQ8nbL1MjZRTGyLhBw/exec&#39;, {
      method: &#39;POST&#39;,
      headers: {&#39;Content-Type&#39;: &#39;application/x-www-form-urlencoded&#39;},
      body: &#39;email=&#39; + encodeURIComponent(email)
    })
    .then(res =&gt; res.text())
    .then(res =&gt; {
      if (res.trim() === &quot;success&quot;) {
        resultMsg.innerHTML = &quot;✅ Link sudah dikirim ke email Anda.&quot;;
        this.style.display = &quot;none&quot;;
      } else {
        resultMsg.innerHTML = &quot;❌ Terjadi kesalahan: &quot; + res;
      }
    })
    .catch(err =&gt; resultMsg.innerHTML = &quot;❌ Error: &quot; + err);
  });
&lt;/script&gt;
&lt;h2 data-end=&quot;2938&quot; data-start=&quot;2877&quot;&gt;How to Download HP ZBook 17 G5 DA0XW3MBAG0 REV G Boardview&lt;/h2&gt;
&lt;p data-end=&quot;3125&quot; data-start=&quot;2940&quot;&gt;You can download the &lt;b data-end=&quot;3020&quot; data-start=&quot;2961&quot;&gt;HP ZBook 17 G5 DA0XW3MBAG0 REV G Boardview (BDV) (.CAD)&lt;/b&gt; file from trusted technical resource websites or repair communities that share verified boardview files.&lt;/p&gt;
&lt;p data-end=&quot;3161&quot; data-start=&quot;3127&quot;&gt;Before downloading, always ensure:&lt;/p&gt;
&lt;ul data-end=&quot;3293&quot; data-start=&quot;3162&quot;&gt;&lt;li data-end=&quot;3196&quot; data-start=&quot;3162&quot;&gt;
&lt;p data-end=&quot;3196&quot; data-start=&quot;3164&quot;&gt;The file matches &lt;b data-end=&quot;3196&quot; data-start=&quot;3181&quot;&gt;DA0XW3MBAG0&lt;/b&gt;&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;3224&quot; data-start=&quot;3197&quot;&gt;
&lt;p data-end=&quot;3224&quot; data-start=&quot;3199&quot;&gt;The revision is &lt;b data-end=&quot;3224&quot; data-start=&quot;3215&quot;&gt;REV G&lt;/b&gt;&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;3249&quot; data-start=&quot;3225&quot;&gt;
&lt;p data-end=&quot;3249&quot; data-start=&quot;3227&quot;&gt;The format is &lt;b data-end=&quot;3249&quot; data-start=&quot;3241&quot;&gt;.CAD&lt;/b&gt;&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;3293&quot; data-start=&quot;3250&quot;&gt;
&lt;p data-end=&quot;3293&quot; data-start=&quot;3252&quot;&gt;The source is reliable and malware-free&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;&lt;p data-end=&quot;3393&quot; data-start=&quot;3295&quot;&gt;Avoid suspicious download sites that bundle unnecessary installers or password-protected archives.&lt;/p&gt;&lt;p data-end=&quot;3393&quot; data-start=&quot;3295&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;h2 data-end=&quot;3441&quot; data-start=&quot;3400&quot;&gt;How to Open and Use the Boardview File&lt;/h2&gt;
&lt;p data-end=&quot;3500&quot; data-start=&quot;3443&quot;&gt;After downloading the boardview file, follow these steps:&lt;/p&gt;
&lt;ol data-end=&quot;3804&quot; data-start=&quot;3502&quot;&gt;&lt;li data-end=&quot;3566&quot; data-start=&quot;3502&quot;&gt;
&lt;p data-end=&quot;3566&quot; data-start=&quot;3505&quot;&gt;Install a compatible boardview viewer (e.g., OpenBoardView)&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;3614&quot; data-start=&quot;3567&quot;&gt;
&lt;p data-end=&quot;3614&quot; data-start=&quot;3570&quot;&gt;Open the software and load the &lt;code data-end=&quot;3607&quot; data-start=&quot;3601&quot;&gt;.CAD&lt;/code&gt; file&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;3688&quot; data-start=&quot;3615&quot;&gt;
&lt;p data-end=&quot;3688&quot; data-start=&quot;3618&quot;&gt;Use the search function to find net names (VIN, VCORE, +3VALW, etc.)&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;3746&quot; data-start=&quot;3689&quot;&gt;
&lt;p data-end=&quot;3746&quot; data-start=&quot;3692&quot;&gt;Click components to view pin connections and signals&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;3804&quot; data-start=&quot;3747&quot;&gt;
&lt;p data-end=&quot;3804&quot; data-start=&quot;3750&quot;&gt;Cross-check measurements on the physical motherboard&lt;/p&gt;
&lt;/li&gt;&lt;/ol&gt;&lt;p data-end=&quot;3859&quot; data-start=&quot;3806&quot;&gt;This workflow significantly improves repair accuracy.&lt;/p&gt;&lt;h2 data-end=&quot;3915&quot; data-start=&quot;3866&quot;&gt;Boardview vs Schematic: What’s the Difference?&lt;/h2&gt;
&lt;p data-end=&quot;3998&quot; data-start=&quot;3917&quot;&gt;While schematics show circuit logic, boardview files focus on physical placement.&lt;/p&gt;
&lt;div class=&quot;TyagGW_tableContainer&quot;&gt;&lt;div class=&quot;group TyagGW_tableWrapper flex flex-col-reverse w-fit&quot; tabindex=&quot;-1&quot;&gt;&lt;table class=&quot;w-fit min-w-(--thread-content-width)&quot; data-end=&quot;4203&quot; data-start=&quot;4000&quot;&gt;&lt;thead data-end=&quot;4035&quot; data-start=&quot;4000&quot;&gt;&lt;tr data-end=&quot;4035&quot; data-start=&quot;4000&quot;&gt;&lt;th data-col-size=&quot;sm&quot; data-end=&quot;4010&quot; data-start=&quot;4000&quot;&gt;Feature&lt;/th&gt;&lt;th data-col-size=&quot;sm&quot; data-end=&quot;4022&quot; data-start=&quot;4010&quot;&gt;Boardview&lt;/th&gt;&lt;th data-col-size=&quot;sm&quot; data-end=&quot;4035&quot; data-start=&quot;4022&quot;&gt;Schematic&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody data-end=&quot;4203&quot; data-start=&quot;4068&quot;&gt;&lt;tr data-end=&quot;4101&quot; data-start=&quot;4068&quot;&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;4089&quot; data-start=&quot;4068&quot;&gt;Component location&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;4095&quot; data-start=&quot;4089&quot;&gt;Yes&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;4101&quot; data-start=&quot;4095&quot;&gt;No&lt;/td&gt;&lt;/tr&gt;&lt;tr data-end=&quot;4130&quot; data-start=&quot;4102&quot;&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;4117&quot; data-start=&quot;4102&quot;&gt;Signal names&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;4123&quot; data-start=&quot;4117&quot;&gt;Yes&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;4130&quot; data-start=&quot;4123&quot;&gt;Yes&lt;/td&gt;&lt;/tr&gt;&lt;tr data-end=&quot;4165&quot; data-start=&quot;4131&quot;&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;4147&quot; data-start=&quot;4131&quot;&gt;Circuit logic&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;4157&quot; data-start=&quot;4147&quot;&gt;Limited&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;4165&quot; data-start=&quot;4157&quot;&gt;Full&lt;/td&gt;&lt;/tr&gt;&lt;tr data-end=&quot;4203&quot; data-start=&quot;4166&quot;&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;4181&quot; data-start=&quot;4166&quot;&gt;Repair speed&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;4193&quot; data-start=&quot;4181&quot;&gt;Very fast&lt;/td&gt;&lt;td data-col-size=&quot;sm&quot; data-end=&quot;4203&quot; data-start=&quot;4193&quot;&gt;Medium&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;p data-end=&quot;4269&quot; data-start=&quot;4205&quot;&gt;For best results, technicians often use &lt;b data-end=&quot;4253&quot; data-start=&quot;4245&quot;&gt;both&lt;/b&gt; files together.&lt;/p&gt;&lt;h2 data-end=&quot;4323&quot; data-start=&quot;4276&quot;&gt;Common Repair Scenarios Using This Boardview&lt;/h2&gt;
&lt;p data-end=&quot;4379&quot; data-start=&quot;4325&quot;&gt;The HP ZBook 17 G5 boardview is especially useful for:&lt;/p&gt;
&lt;ul data-end=&quot;4542&quot; data-start=&quot;4380&quot;&gt;&lt;li data-end=&quot;4414&quot; data-start=&quot;4380&quot;&gt;
&lt;p data-end=&quot;4414&quot; data-start=&quot;4382&quot;&gt;No power or no charging issues&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;4448&quot; data-start=&quot;4415&quot;&gt;
&lt;p data-end=&quot;4448&quot; data-start=&quot;4417&quot;&gt;Short circuit troubleshooting&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;4476&quot; data-start=&quot;4449&quot;&gt;
&lt;p data-end=&quot;4476&quot; data-start=&quot;4451&quot;&gt;BIOS and EC diagnostics&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;4511&quot; data-start=&quot;4477&quot;&gt;
&lt;p data-end=&quot;4511&quot; data-start=&quot;4479&quot;&gt;GPU or CPU power rail analysis&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;4542&quot; data-start=&quot;4512&quot;&gt;
&lt;p data-end=&quot;4542&quot; data-start=&quot;4514&quot;&gt;Post-liquid-damage repairs&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;&lt;p data-end=&quot;4623&quot; data-start=&quot;4544&quot;&gt;Having the correct boardview file reduces guesswork and improves success rates.&lt;/p&gt;&lt;h2 data-end=&quot;4664&quot; data-start=&quot;4630&quot;&gt;Tips for Safe and Effective Use&lt;/h2&gt;
&lt;ul data-end=&quot;4867&quot; data-start=&quot;4666&quot;&gt;&lt;li data-end=&quot;4713&quot; data-start=&quot;4666&quot;&gt;
&lt;p data-end=&quot;4713&quot; data-start=&quot;4668&quot;&gt;Always verify board revision before probing&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;4775&quot; data-start=&quot;4714&quot;&gt;
&lt;p data-end=&quot;4775&quot; data-start=&quot;4716&quot;&gt;Use a current-limited power supply when diagnosing shorts&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;4820&quot; data-start=&quot;4776&quot;&gt;
&lt;p data-end=&quot;4820&quot; data-start=&quot;4778&quot;&gt;Label test points during complex repairs&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;4867&quot; data-start=&quot;4821&quot;&gt;
&lt;p data-end=&quot;4867&quot; data-start=&quot;4823&quot;&gt;Keep backup copies of your boardview files&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;&lt;p data-end=&quot;4935&quot; data-start=&quot;4869&quot;&gt;These habits help avoid accidental damage during board-level work.&lt;/p&gt;&lt;h2 data-end=&quot;4969&quot; data-start=&quot;4942&quot;&gt;Legal and Ethical Notice&lt;/h2&gt;&lt;p data-end=&quot;5139&quot; data-start=&quot;4971&quot;&gt;Boardview files are intended for &lt;b data-end=&quot;5044&quot; data-start=&quot;5004&quot;&gt;educational and repair purposes only&lt;/b&gt;. Always respect intellectual property rights and local regulations when using technical files.&lt;/p&gt;&lt;h2 data-end=&quot;5159&quot; data-start=&quot;5146&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p data-end=&quot;5419&quot; data-start=&quot;5161&quot;&gt;The &lt;b data-end=&quot;5224&quot; data-start=&quot;5165&quot;&gt;HP ZBook 17 G5 DA0XW3MBAG0 REV G Boardview (BDV) (.CAD)&lt;/b&gt; file is an essential resource for anyone performing motherboard-level repairs on this workstation. With the correct boardview, diagnostics become faster, more accurate, and far less frustrating.&lt;/p&gt;
&lt;p data-end=&quot;5576&quot; data-start=&quot;5421&quot;&gt;If you regularly work on professional laptops, keeping an organized library of boardview files like this one is a smart investment in your repair workflow.&lt;/p&gt;&lt;p data-end=&quot;5576&quot; data-start=&quot;5421&quot;&gt;Read Also :&lt;br /&gt;&lt;a href=&quot;https://www.carapaklek.com/2026/01/download-bios-lenovo-yoga-730-13iwl.html&quot; target=&quot;_blank&quot;&gt;📥 Download BIOS Lenovo Yoga 730-13IWL ELZP3 LA-G581P Rev 1.0 16MB – Firmware Recovery Guide&amp;nbsp;&lt;/a&gt;&lt;/p&gt;

&lt;script type=&quot;application/ld+json&quot;&gt;
{
  &quot;@context&quot;: &quot;https://schema.org&quot;,
  &quot;@type&quot;: &quot;BlogPosting&quot;,
  &quot;mainEntityOfPage&quot;: {
    &quot;@type&quot;: &quot;WebPage&quot;,
    &quot;@id&quot;: &quot;https://www.carapaklek.com/2026/01/download-hp-zbook-17-g5-da0xw3mbag0-rev.html&quot;
  },
  &quot;headline&quot;: &quot;Download HP ZBook 17 G5 DA0XW3MBAG0 REV G Boardview (BDV) (.CAD)&quot;,
  &quot;description&quot;: &quot;Download HP ZBook 17 G5 DA0XW3MBAG0 REV G boardview (BDV) file in .CAD format and learn how to open and use it for motherboard repair and diagnostics.&quot;,
  &quot;image&quot;: &quot;https://blogger.googleusercontent.com/img/a/AVvXsEh_qe4APo-PWGCk7g43n0zVsJtP7AO6WTqwxQVzCURGhQFK3uyo18-XMZqb2xe1xg44a1xfFmtk_EYDl6kLCpIH3yXGanlrrKCIMQBT6kHPT-JRa6VdwTN20s47rwEMAX6XTS0G1HxdCbw1fPM3_wxBVNepVmdGpIB2XyT9c-1bUUmaDblg0RK_uXHnnaMc&quot;,
  &quot;author&quot;: {
    &quot;@type&quot;: &quot;Person&quot;,
    &quot;name&quot;: &quot;Carapaklek&quot;,
    &quot;url&quot;: &quot;https://www.carapaklek.com&quot;
  },
  &quot;publisher&quot;: {
    &quot;@type&quot;: &quot;Organization&quot;,
    &quot;name&quot;: &quot;Carapaklek&quot;,
    &quot;logo&quot;: {
      &quot;@type&quot;: &quot;ImageObject&quot;,
      &quot;url&quot;: &quot;https://blogger.googleusercontent.com/img/a/AVvXsEh_qe4APo-PWGCk7g43n0zVsJtP7AO6WTqwxQVzCURGhQFK3uyo18-XMZqb2xe1xg44a1xfFmtk_EYDl6kLCpIH3yXGanlrrKCIMQBT6kHPT-JRa6VdwTN20s47rwEMAX6XTS0G1HxdCbw1fPM3_wxBVNepVmdGpIB2XyT9c-1bUUmaDblg0RK_uXHnnaMc&quot;,
      &quot;width&quot;: 600,
      &quot;height&quot;: 315
    }
  },
  &quot;datePublished&quot;: &quot;2026-01-29T08:00:00+07:00&quot;,
  &quot;dateModified&quot;: &quot;2026-01-29T08:00:00+07:00&quot;
}
&lt;/script&gt;
</content><link rel='replies' type='application/atom+xml' href='https://www.carapaklek.com/feeds/5263029168618961675/comments/default' title='Posting Komentar'/><link rel='replies' type='text/html' href='https://www.carapaklek.com/2026/01/download-hp-zbook-17-g5-da0xw3mbag0-rev.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/2093917475945207513/posts/default/5263029168618961675'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/2093917475945207513/posts/default/5263029168618961675'/><link rel='alternate' type='text/html' href='https://www.carapaklek.com/2026/01/download-hp-zbook-17-g5-da0xw3mbag0-rev.html' title='Download HP ZBook 17 G5 DA0XW3MBAG0 REV G Boardview (BDV) File (.CAD)'/><author><name>carapaklek.com</name><uri>http://www.blogger.com/profile/12438575085929354819</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj84wNpqEWz7nUZmjNjPBarFLyRAZARNpnydt-LYU_GZhXNGZFUplzpWB82bcX7camGkjKhQ-KGgMvx5RMUkIl4gkJvWLq8dlBfnRdA_lNZPKfK8QjiWqasrUvzS15za_c0-zdUM_aAJ39EGM5XGzVoH0xzAg-7mAIwM90m4_AE9y7kgQ/s220/webcamp.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEh_qe4APo-PWGCk7g43n0zVsJtP7AO6WTqwxQVzCURGhQFK3uyo18-XMZqb2xe1xg44a1xfFmtk_EYDl6kLCpIH3yXGanlrrKCIMQBT6kHPT-JRa6VdwTN20s47rwEMAX6XTS0G1HxdCbw1fPM3_wxBVNepVmdGpIB2XyT9c-1bUUmaDblg0RK_uXHnnaMc=s72-w400-h191-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2093917475945207513.post-2956212713363926498</id><published>2026-01-29T17:44:00.003+07:00</published><updated>2026-01-29T17:44:23.376+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Arduino"/><category scheme="http://www.blogger.com/atom/ns#" term="komputer"/><category scheme="http://www.blogger.com/atom/ns#" term="Teknologi"/><title type='text'>Espressif IDE Download Guide (Official ESP-IDF IDE for Windows, macOS, and Linux)</title><content type='html'>&lt;p&gt;&lt;/p&gt;&lt;h2&gt;Introduction&lt;/h2&gt;&lt;h2&gt;&amp;nbsp;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEj_jXljiQ7TJhOFCN7LiRgCTmb_P6GcrpMkmhDzYd3DtbKSu2ORchdfHr26ALpLMfvabRdQBCR0Eh_-JgWae_36DoAOxNU-IUSRRIXF7srSQFItVnpmyiThFJOuUQQ42XCWOyAxAlnAowWSK1WlyIiLAoigI3fG25Pbozs4vA1mKaRkexwyU7ZG6qoxevZX&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;1024&quot; data-original-width=&quot;1536&quot; height=&quot;266&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEj_jXljiQ7TJhOFCN7LiRgCTmb_P6GcrpMkmhDzYd3DtbKSu2ORchdfHr26ALpLMfvabRdQBCR0Eh_-JgWae_36DoAOxNU-IUSRRIXF7srSQFItVnpmyiThFJOuUQQ42XCWOyAxAlnAowWSK1WlyIiLAoigI3fG25Pbozs4vA1mKaRkexwyU7ZG6qoxevZX=w400-h266&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/h2&gt;&lt;h2&gt;&amp;nbsp;&lt;/h2&gt;&lt;p&gt;Espressif IDE, officially known as the ESP-IDF IDE, is the recommended development environment provided by Espressif Systems for building applications on ESP32, ESP32-S, ESP32-C, and ESP8266 series microcontrollers. This IDE is built on top of Eclipse and tightly integrated with ESP-IDF (Espressif IoT Development Framework), making it the most stable and feature-complete option for professional ESP development.&lt;/p&gt;&lt;p&gt;This article provides a complete, step-by-step guide to downloading, installing, and configuring Espressif IDE on Windows, macOS, and Linux. It is written for beginners and intermediate developers who want a reliable setup for ESP32 development. By the end of this guide, you will have a fully working Espressif IDE environment and understand how each component works.&lt;/p&gt;&lt;h2&gt;What Is Espressif IDE?&lt;/h2&gt;&lt;p&gt;Espressif IDE is an official integrated development environment designed specifically for ESP-IDF. Unlike Arduino IDE, which abstracts many low-level details, Espressif IDE gives developers full access to:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Native ESP-IDF APIs&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;FreeRTOS-based multitasking&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Advanced debugging features&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Serial monitor and logging tools&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Menuconfig system for firmware configuration&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The IDE is based on Eclipse CDT and comes bundled with tools such as:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;ESP-IDF framework&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Cross-compilers (Xtensa and RISC-V)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;CMake and Ninja build system&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Python environment and IDF tools&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;This makes Espressif IDE ideal for production-level projects and complex embedded systems.&lt;/p&gt;&lt;h2&gt;Supported Operating Systems&lt;/h2&gt;&lt;p&gt;Espressif IDE officially supports the following platforms:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Windows 10 and Windows 11 (64-bit)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;macOS (Intel and Apple Silicon)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Linux (Ubuntu, Debian, Fedora, Arch, and similar distributions)&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Each operating system has a slightly different installation process, which will be explained in detail below.&lt;/p&gt;&lt;h2&gt;System Requirements&lt;/h2&gt;&lt;p&gt;Before downloading Espressif IDE, ensure your system meets the minimum requirements:&lt;/p&gt;&lt;h3&gt;Hardware Requirements&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;8 GB RAM (minimum 4 GB)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;At least 10 GB of free disk space&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Internet connection for toolchain downloads&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Software Requirements&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Administrator access (Windows/macOS)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Terminal or command-line access&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;USB driver support for ESP boards&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;Downloading Espressif IDE (Official Source)&lt;/h2&gt;&lt;h3&gt;Step 1: Visit the Official Espressif Website&lt;/h3&gt;&lt;p&gt;Always download Espressif IDE from the official Espressif website to avoid corrupted or outdated installers.&lt;/p&gt;&lt;p&gt;Look for the ESP-IDF IDE section and select the installer that matches your operating system.&lt;/p&gt;&lt;p&gt;You can download the official Espressif IDE directly from the &lt;strong data-end=&quot;471&quot; data-start=&quot;433&quot;&gt;official Espressif Systems website&lt;/strong&gt;, which provides the latest and most stable ESP-IDF IDE releases for all supported operating systems.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://docs.espressif.com/projects/espressif-ide/en/latest/downloads.html&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1301&quot; data-original-width=&quot;1301&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2OyJa6CJrTqn4hYgEcthgT5nKMU2U2_oAhE3tjWIYXP4msmM9CQK5AW82naRzoh3jvqpNRlZFSJSqme5qrQ7pMmpHQgww5A-_ptwHn7-_EXXqfN1GY30DNBVswWb2BYdDQgtUDXEl9LAoDvS8GMCDrTdOa__WB4DMEa2NW1ABK_gr_mnoYeSeKg4GB9_R/s320/%E2%80%94Pngtree%E2%80%94download%20button%20icon%20green%20isolated_6364147.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;Step 2: Choose the Correct Installer&lt;/h3&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Espressif provides separate installers for:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Windows (.exe installer)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;macOS (.dmg package)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Linux (.tar.gz archive)&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Download the latest stable version for best compatibility and bug fixes.&lt;/p&gt;&lt;h2&gt;Installing Espressif IDE on Windows&lt;/h2&gt;&lt;h3&gt;Step 1: Run the Installer&lt;/h3&gt;&lt;ol&gt;&lt;li&gt;&lt;p&gt;Double-click the downloaded &lt;code&gt;.exe&lt;/code&gt; file.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Allow the installer to make changes to your system.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Choose the installation directory (default is recommended).&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;h3&gt;Step 2: Select Components&lt;/h3&gt;&lt;p&gt;During installation, make sure the following components are selected:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;ESP-IDF Framework&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;ESP Toolchain&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Python Environment&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;OpenOCD (for debugging)&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;These components are required for a complete development setup.&lt;/p&gt;&lt;h3&gt;Step 3: Install USB Drivers&lt;/h3&gt;&lt;p&gt;If prompted, install the USB drivers for ESP32 and ESP8266 boards. This ensures your board is detected correctly by Windows.&lt;/p&gt;&lt;h3&gt;Step 4: Finish Installation&lt;/h3&gt;&lt;p&gt;Once installation is complete:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Launch Espressif IDE&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Allow the IDE to complete initial setup&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Wait for background tool configuration to finish&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;This process may take several minutes on first launch.&lt;/p&gt;&lt;h2&gt;Installing Espressif IDE on macOS&lt;/h2&gt;&lt;h3&gt;Step 1: Open the DMG File&lt;/h3&gt;&lt;ol&gt;&lt;li&gt;&lt;p&gt;Double-click the downloaded &lt;code&gt;.dmg&lt;/code&gt; file.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Drag Espressif IDE into the Applications folder.&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;h3&gt;Step 2: Grant Permissions&lt;/h3&gt;&lt;p&gt;macOS may block the app on first launch:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;p&gt;Open System Settings&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Go to Privacy &amp;amp; Security&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Allow Espressif IDE to run&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;h3&gt;Step 3: First Launch Setup&lt;/h3&gt;&lt;p&gt;When you open Espressif IDE for the first time:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;The IDE will download ESP-IDF tools&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Python environment will be configured automatically&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Toolchains for ESP32 and RISC-V will be installed&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Ensure your internet connection is stable during this process.&lt;/p&gt;&lt;h2&gt;Installing Espressif IDE on Linux&lt;/h2&gt;&lt;h3&gt;Step 1: Extract the Archive&lt;/h3&gt;&lt;ol&gt;&lt;li&gt;&lt;p&gt;Open a terminal&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Navigate to the download directory&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Extract the archive using:&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;pre&gt;&lt;code&gt;tar -xvf esp-idf-ide-linux.tar.gz
&lt;/code&gt;&lt;/pre&gt;&lt;h3&gt;Step 2: Run the IDE&lt;/h3&gt;&lt;p&gt;Navigate to the extracted folder and run:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;./esp-idf-ide
&lt;/code&gt;&lt;/pre&gt;&lt;h3&gt;Step 3: Install Dependencies&lt;/h3&gt;&lt;p&gt;Depending on your distribution, you may need to install additional packages such as:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;libusb&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;python3&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;gcc&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;cmake&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Most modern Linux distributions already include these dependencies.&lt;/p&gt;&lt;h2&gt;Setting Up ESP-IDF Inside Espressif IDE&lt;/h2&gt;&lt;h3&gt;Step 1: Select ESP-IDF Version&lt;/h3&gt;&lt;p&gt;On first launch, the IDE will ask you to select an ESP-IDF version. It is recommended to use the latest stable release.&lt;/p&gt;&lt;h3&gt;Step 2: Configure Tools Path&lt;/h3&gt;&lt;p&gt;Espressif IDE automatically manages tool paths, but you can verify them under:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Window → Preferences → ESP-IDF&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Ensure all tools show a valid status.&lt;/p&gt;&lt;h2&gt;Creating Your First ESP-IDF Project&lt;/h2&gt;&lt;h3&gt;Step 1: Create a New Project&lt;/h3&gt;&lt;ol&gt;&lt;li&gt;&lt;p&gt;Click File → New → ESP-IDF Project&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Choose a project template (e.g., Hello World)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Select target chip (ESP32, ESP32-S3, etc.)&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;h3&gt;Step 2: Build the Project&lt;/h3&gt;&lt;p&gt;Click the Build button or run:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;idf.py build
&lt;/code&gt;&lt;/pre&gt;&lt;h3&gt;Step 3: Flash to Board&lt;/h3&gt;&lt;p&gt;Connect your ESP board via USB and run:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;idf.py flash
&lt;/code&gt;&lt;/pre&gt;&lt;h3&gt;Step 4: Monitor Output&lt;/h3&gt;&lt;p&gt;Use the serial monitor to view logs:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;idf.py monitor&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;Common Installation Issues and Solutions&lt;/h2&gt;&lt;h3&gt;Python Not Found&lt;/h3&gt;&lt;p&gt;Ensure the bundled Python environment is selected in IDE settings.&lt;/p&gt;&lt;h3&gt;USB Port Not Detected&lt;/h3&gt;&lt;p&gt;Install correct USB drivers and check cable quality.&lt;/p&gt;&lt;h3&gt;Build Errors&lt;/h3&gt;&lt;p&gt;Run toolchain update and clean the project:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;idf.py fullclean&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;Espressif IDE vs Arduino IDE&lt;/h2&gt;&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Feature&lt;/th&gt;&lt;th&gt;Espressif IDE&lt;/th&gt;&lt;th&gt;Arduino IDE&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Official Support&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt;&lt;td&gt;Partial&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;FreeRTOS Access&lt;/td&gt;&lt;td&gt;Full&lt;/td&gt;&lt;td&gt;Limited&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Debugging&lt;/td&gt;&lt;td&gt;Advanced&lt;/td&gt;&lt;td&gt;Basic&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Learning Curve&lt;/td&gt;&lt;td&gt;Steep&lt;/td&gt;&lt;td&gt;Easy&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;Espressif IDE is recommended for serious and scalable projects.&lt;/p&gt;&lt;h2&gt;Best Practices for ESP-IDF Development&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Use version control (Git)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Keep ESP-IDF updated&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Read official documentation&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Modularize your code&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2 data-end=&quot;334&quot; data-start=&quot;288&quot;&gt;Advanced ESP-IDF Development Best Practices&lt;/h2&gt;
&lt;p data-end=&quot;576&quot; data-start=&quot;336&quot;&gt;Once you are comfortable building and flashing basic ESP-IDF projects, the next step is adopting professional development practices. These practices help ensure your firmware remains stable, scalable, and maintainable as your project grows.&lt;/p&gt;
&lt;h3 data-end=&quot;625&quot; data-start=&quot;578&quot;&gt;Using Version Control with ESP-IDF Projects&lt;/h3&gt;
&lt;p data-end=&quot;825&quot; data-start=&quot;627&quot;&gt;Every serious ESP-IDF project should use a version control system such as Git. ESP-IDF projects naturally fit well with Git because the framework clearly separates source files from build artifacts.&lt;/p&gt;
&lt;p data-end=&quot;852&quot; data-start=&quot;827&quot;&gt;Recommended Git workflow:&lt;/p&gt;
&lt;ul data-end=&quot;1092&quot; data-start=&quot;853&quot;&gt;&lt;li data-end=&quot;899&quot; data-start=&quot;853&quot;&gt;
&lt;p data-end=&quot;899&quot; data-start=&quot;855&quot;&gt;Initialize Git in the project root directory&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;969&quot; data-start=&quot;900&quot;&gt;
&lt;p data-end=&quot;969&quot; data-start=&quot;902&quot;&gt;Commit only source files (&lt;code data-end=&quot;935&quot; data-start=&quot;928&quot;&gt;main/&lt;/code&gt;, &lt;code data-end=&quot;950&quot; data-start=&quot;937&quot;&gt;components/&lt;/code&gt;, &lt;code data-end=&quot;968&quot; data-start=&quot;952&quot;&gt;CMakeLists.txt&lt;/code&gt;)&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1051&quot; data-start=&quot;970&quot;&gt;
&lt;p data-end=&quot;1051&quot; data-start=&quot;972&quot;&gt;Ignore generated folders such as &lt;code data-end=&quot;1013&quot; data-start=&quot;1005&quot;&gt;build/&lt;/code&gt;, &lt;code data-end=&quot;1025&quot; data-start=&quot;1015&quot;&gt;.vscode/&lt;/code&gt;, and temporary tool files&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1092&quot; data-start=&quot;1052&quot;&gt;
&lt;p data-end=&quot;1092&quot; data-start=&quot;1054&quot;&gt;Use branches for experimental features&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;1176&quot; data-start=&quot;1094&quot;&gt;This approach allows you to safely experiment without breaking your main firmware.&lt;/p&gt;
&lt;h3 data-end=&quot;1218&quot; data-start=&quot;1178&quot;&gt;Locking ESP-IDF Versions per Project&lt;/h3&gt;
&lt;p data-end=&quot;1320&quot; data-start=&quot;1220&quot;&gt;ESP-IDF evolves quickly. While updates bring improvements, they can also introduce breaking changes.&lt;/p&gt;
&lt;p data-end=&quot;1336&quot; data-start=&quot;1322&quot;&gt;Best practice:&lt;/p&gt;
&lt;ul data-end=&quot;1471&quot; data-start=&quot;1337&quot;&gt;&lt;li data-end=&quot;1374&quot; data-start=&quot;1337&quot;&gt;
&lt;p data-end=&quot;1374&quot; data-start=&quot;1339&quot;&gt;Select a &lt;strong data-end=&quot;1374&quot; data-start=&quot;1348&quot;&gt;stable ESP-IDF release&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1433&quot; data-start=&quot;1375&quot;&gt;
&lt;p data-end=&quot;1433&quot; data-start=&quot;1377&quot;&gt;Keep that version fixed for the entire project lifecycle&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1471&quot; data-start=&quot;1434&quot;&gt;
&lt;p data-end=&quot;1471&quot; data-start=&quot;1436&quot;&gt;Upgrade only after thorough testing&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;1578&quot; data-start=&quot;1473&quot;&gt;Professional teams often maintain different projects on different ESP-IDF versions for stability reasons.&lt;/p&gt;
&lt;h3 data-end=&quot;1609&quot; data-start=&quot;1580&quot;&gt;Modular Code Architecture&lt;/h3&gt;
&lt;p data-end=&quot;1710&quot; data-start=&quot;1611&quot;&gt;Avoid writing all logic inside &lt;code data-end=&quot;1650&quot; data-start=&quot;1642&quot;&gt;main.c&lt;/code&gt;. Instead, structure your firmware into reusable components.&lt;/p&gt;
&lt;p data-end=&quot;1740&quot; data-start=&quot;1712&quot;&gt;Example component structure:&lt;/p&gt;
&lt;ul data-end=&quot;1858&quot; data-start=&quot;1741&quot;&gt;&lt;li data-end=&quot;1768&quot; data-start=&quot;1741&quot;&gt;
&lt;p data-end=&quot;1768&quot; data-start=&quot;1743&quot;&gt;&lt;code data-end=&quot;1768&quot; data-start=&quot;1743&quot;&gt;components/wifi_manager&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1798&quot; data-start=&quot;1769&quot;&gt;
&lt;p data-end=&quot;1798&quot; data-start=&quot;1771&quot;&gt;&lt;code data-end=&quot;1798&quot; data-start=&quot;1771&quot;&gt;components/display_driver&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1829&quot; data-start=&quot;1799&quot;&gt;
&lt;p data-end=&quot;1829&quot; data-start=&quot;1801&quot;&gt;&lt;code data-end=&quot;1829&quot; data-start=&quot;1801&quot;&gt;components/storage_manager&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;1858&quot; data-start=&quot;1830&quot;&gt;
&lt;p data-end=&quot;1858&quot; data-start=&quot;1832&quot;&gt;&lt;code data-end=&quot;1858&quot; data-start=&quot;1832&quot;&gt;components/input_handler&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;&lt;p data-end=&quot;1965&quot; data-start=&quot;1860&quot;&gt;This modular approach makes debugging easier and allows components to be reused across multiple projects.&lt;/p&gt;&lt;h2 data-end=&quot;2023&quot; data-start=&quot;1972&quot;&gt;Understanding ESP-IDF Project Structure in Depth&lt;/h2&gt;
&lt;p data-end=&quot;2194&quot; data-start=&quot;2025&quot;&gt;A standard ESP-IDF project follows a predictable and powerful directory layout. Understanding this structure is essential for advanced customization and troubleshooting.&lt;/p&gt;
&lt;h3 data-end=&quot;2220&quot; data-start=&quot;2196&quot;&gt;Root Directory Files&lt;/h3&gt;
&lt;p data-end=&quot;2260&quot; data-start=&quot;2222&quot;&gt;Key files in the project root include:&lt;/p&gt;
&lt;ul data-end=&quot;2447&quot; data-start=&quot;2261&quot;&gt;&lt;li data-end=&quot;2315&quot; data-start=&quot;2261&quot;&gt;
&lt;p data-end=&quot;2315&quot; data-start=&quot;2263&quot;&gt;&lt;code data-end=&quot;2279&quot; data-start=&quot;2263&quot;&gt;CMakeLists.txt&lt;/code&gt; – Defines project-level build rules&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2384&quot; data-start=&quot;2316&quot;&gt;
&lt;p data-end=&quot;2384&quot; data-start=&quot;2318&quot;&gt;&lt;code data-end=&quot;2329&quot; data-start=&quot;2318&quot;&gt;sdkconfig&lt;/code&gt; – Stores configuration options generated by menuconfig&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2447&quot; data-start=&quot;2385&quot;&gt;
&lt;p data-end=&quot;2447&quot; data-start=&quot;2387&quot;&gt;&lt;code data-end=&quot;2407&quot; data-start=&quot;2387&quot;&gt;sdkconfig.defaults&lt;/code&gt; – Optional default configuration values&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;2553&quot; data-start=&quot;2449&quot;&gt;The &lt;code data-end=&quot;2464&quot; data-start=&quot;2453&quot;&gt;sdkconfig&lt;/code&gt; file should never be edited manually. Always use &lt;code data-end=&quot;2526&quot; data-start=&quot;2514&quot;&gt;menuconfig&lt;/code&gt; to modify system settings.&lt;/p&gt;
&lt;h3 data-end=&quot;2589&quot; data-start=&quot;2555&quot;&gt;The &lt;code data-end=&quot;2569&quot; data-start=&quot;2563&quot;&gt;main&lt;/code&gt; Directory Explained&lt;/h3&gt;
&lt;p data-end=&quot;2681&quot; data-start=&quot;2591&quot;&gt;The &lt;code data-end=&quot;2601&quot; data-start=&quot;2595&quot;&gt;main&lt;/code&gt; directory contains the application entry point, usually a file called &lt;code data-end=&quot;2680&quot; data-start=&quot;2672&quot;&gt;main.c&lt;/code&gt;.&lt;/p&gt;
&lt;p data-end=&quot;2701&quot; data-start=&quot;2683&quot;&gt;Important details:&lt;/p&gt;
&lt;ul data-end=&quot;2870&quot; data-start=&quot;2702&quot;&gt;&lt;li data-end=&quot;2772&quot; data-start=&quot;2702&quot;&gt;
&lt;p data-end=&quot;2772&quot; data-start=&quot;2704&quot;&gt;The &lt;code data-end=&quot;2720&quot; data-start=&quot;2708&quot;&gt;app_main()&lt;/code&gt; function replaces the traditional &lt;code data-end=&quot;2763&quot; data-start=&quot;2755&quot;&gt;main()&lt;/code&gt; function&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2811&quot; data-start=&quot;2773&quot;&gt;
&lt;p data-end=&quot;2811&quot; data-start=&quot;2775&quot;&gt;&lt;code data-end=&quot;2787&quot; data-start=&quot;2775&quot;&gt;app_main()&lt;/code&gt; runs as a FreeRTOS task&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;2870&quot; data-start=&quot;2812&quot;&gt;
&lt;p data-end=&quot;2870&quot; data-start=&quot;2814&quot;&gt;Blocking delays should use FreeRTOS APIs, not busy loops&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;2945&quot; data-start=&quot;2872&quot;&gt;Understanding this execution model is crucial for real-time applications.&lt;/p&gt;
&lt;h3 data-end=&quot;2976&quot; data-start=&quot;2947&quot;&gt;ESP-IDF Components System&lt;/h3&gt;
&lt;p data-end=&quot;3059&quot; data-start=&quot;2978&quot;&gt;Components are the backbone of ESP-IDF’s modular design. Each component includes:&lt;/p&gt;
&lt;ul data-end=&quot;3115&quot; data-start=&quot;3060&quot;&gt;&lt;li data-end=&quot;3074&quot; data-start=&quot;3060&quot;&gt;
&lt;p data-end=&quot;3074&quot; data-start=&quot;3062&quot;&gt;Header files&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;3089&quot; data-start=&quot;3075&quot;&gt;
&lt;p data-end=&quot;3089&quot; data-start=&quot;3077&quot;&gt;Source files&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;3115&quot; data-start=&quot;3090&quot;&gt;
&lt;p data-end=&quot;3115&quot; data-start=&quot;3092&quot;&gt;A &lt;code data-end=&quot;3110&quot; data-start=&quot;3094&quot;&gt;CMakeLists.txt&lt;/code&gt; file&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;&lt;p data-end=&quot;3236&quot; data-start=&quot;3117&quot;&gt;Components can depend on other components, allowing clean separation of responsibilities while maintaining flexibility.&lt;/p&gt;&lt;h2 data-end=&quot;3295&quot; data-start=&quot;3243&quot;&gt;Deep Dive: ESP-IDF Build System (CMake and Ninja)&lt;/h2&gt;
&lt;p data-end=&quot;3455&quot; data-start=&quot;3297&quot;&gt;ESP-IDF uses CMake for configuration and Ninja for fast builds. While beginners rarely need to touch CMake, understanding it helps solve complex build errors.&lt;/p&gt;
&lt;h3 data-end=&quot;3483&quot; data-start=&quot;3457&quot;&gt;How ESP-IDF Uses CMake&lt;/h3&gt;
&lt;p data-end=&quot;3502&quot; data-start=&quot;3485&quot;&gt;CMake determines:&lt;/p&gt;
&lt;ul data-end=&quot;3600&quot; data-start=&quot;3503&quot;&gt;&lt;li data-end=&quot;3536&quot; data-start=&quot;3503&quot;&gt;
&lt;p data-end=&quot;3536&quot; data-start=&quot;3505&quot;&gt;Which source files are compiled&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;3558&quot; data-start=&quot;3537&quot;&gt;
&lt;p data-end=&quot;3558&quot; data-start=&quot;3539&quot;&gt;Include directories&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;3575&quot; data-start=&quot;3559&quot;&gt;
&lt;p data-end=&quot;3575&quot; data-start=&quot;3561&quot;&gt;Compiler flags&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;3600&quot; data-start=&quot;3576&quot;&gt;
&lt;p data-end=&quot;3600&quot; data-start=&quot;3578&quot;&gt;Component dependencies&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;3690&quot; data-start=&quot;3602&quot;&gt;Each component must call &lt;code data-end=&quot;3653&quot; data-start=&quot;3627&quot;&gt;idf_component_register()&lt;/code&gt; to be included in the build process.&lt;/p&gt;
&lt;h3 data-end=&quot;3717&quot; data-start=&quot;3692&quot;&gt;Common CMake Pitfalls&lt;/h3&gt;
&lt;p data-end=&quot;3745&quot; data-start=&quot;3719&quot;&gt;Frequent mistakes include:&lt;/p&gt;
&lt;ul data-end=&quot;3859&quot; data-start=&quot;3746&quot;&gt;&lt;li data-end=&quot;3788&quot; data-start=&quot;3746&quot;&gt;
&lt;p data-end=&quot;3788&quot; data-start=&quot;3748&quot;&gt;Forgetting to declare header directories&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;3827&quot; data-start=&quot;3789&quot;&gt;
&lt;p data-end=&quot;3827&quot; data-start=&quot;3791&quot;&gt;Incorrect component dependency order&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;3859&quot; data-start=&quot;3828&quot;&gt;
&lt;p data-end=&quot;3859&quot; data-start=&quot;3830&quot;&gt;Editing generated build files&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;&lt;p data-end=&quot;3953&quot; data-start=&quot;3861&quot;&gt;Always modify only source &lt;code data-end=&quot;3903&quot; data-start=&quot;3887&quot;&gt;CMakeLists.txt&lt;/code&gt; files, never files inside the &lt;code data-end=&quot;3942&quot; data-start=&quot;3934&quot;&gt;build/&lt;/code&gt; directory.&lt;/p&gt;&lt;h2 data-end=&quot;4014&quot; data-start=&quot;3960&quot;&gt;Advanced Installation Notes (Windows, macOS, Linux)&lt;/h2&gt;
&lt;h3 data-end=&quot;4051&quot; data-start=&quot;4016&quot;&gt;Windows Path Length Limitations&lt;/h3&gt;
&lt;p data-end=&quot;4126&quot; data-start=&quot;4053&quot;&gt;Windows has a path length limitation that can cause cryptic build errors.&lt;/p&gt;
&lt;p data-end=&quot;4144&quot; data-start=&quot;4128&quot;&gt;To avoid issues:&lt;/p&gt;
&lt;ul data-end=&quot;4285&quot; data-start=&quot;4145&quot;&gt;&lt;li data-end=&quot;4218&quot; data-start=&quot;4145&quot;&gt;
&lt;p data-end=&quot;4218&quot; data-start=&quot;4147&quot;&gt;Install Espressif IDE in a short directory (for example &lt;code data-end=&quot;4217&quot; data-start=&quot;4203&quot;&gt;C:\Espressif&lt;/code&gt;)&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;4256&quot; data-start=&quot;4219&quot;&gt;
&lt;p data-end=&quot;4256&quot; data-start=&quot;4221&quot;&gt;Avoid deeply nested project folders&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;4285&quot; data-start=&quot;4257&quot;&gt;
&lt;p data-end=&quot;4285&quot; data-start=&quot;4259&quot;&gt;Keep workspace paths short&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;4345&quot; data-start=&quot;4287&quot;&gt;These steps prevent many unexplained compilation failures.&lt;/p&gt;
&lt;h3 data-end=&quot;4380&quot; data-start=&quot;4347&quot;&gt;macOS Security and Gatekeeper&lt;/h3&gt;
&lt;p data-end=&quot;4464&quot; data-start=&quot;4382&quot;&gt;macOS may block Espressif IDE because it is not distributed through the App Store.&lt;/p&gt;
&lt;p data-end=&quot;4477&quot; data-start=&quot;4466&quot;&gt;If blocked:&lt;/p&gt;
&lt;ul data-end=&quot;4572&quot; data-start=&quot;4478&quot;&gt;&lt;li data-end=&quot;4521&quot; data-start=&quot;4478&quot;&gt;
&lt;p data-end=&quot;4521&quot; data-start=&quot;4480&quot;&gt;Open System Settings → Privacy &amp;amp; Security&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;4554&quot; data-start=&quot;4522&quot;&gt;
&lt;p data-end=&quot;4554&quot; data-start=&quot;4524&quot;&gt;Allow the application manually&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;4572&quot; data-start=&quot;4555&quot;&gt;
&lt;p data-end=&quot;4572&quot; data-start=&quot;4557&quot;&gt;Restart the IDE&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;4618&quot; data-start=&quot;4574&quot;&gt;This behavior is normal for developer tools.&lt;/p&gt;
&lt;h3 data-end=&quot;4658&quot; data-start=&quot;4620&quot;&gt;Linux USB Permission Configuration&lt;/h3&gt;
&lt;p data-end=&quot;4732&quot; data-start=&quot;4660&quot;&gt;On Linux, ESP boards may not be detected due to permission restrictions.&lt;/p&gt;
&lt;p data-end=&quot;4748&quot; data-start=&quot;4734&quot;&gt;Best practice:&lt;/p&gt;
&lt;ul data-end=&quot;4853&quot; data-start=&quot;4749&quot;&gt;&lt;li data-end=&quot;4791&quot; data-start=&quot;4749&quot;&gt;
&lt;p data-end=&quot;4791&quot; data-start=&quot;4751&quot;&gt;Create udev rules for USB serial devices&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;4830&quot; data-start=&quot;4792&quot;&gt;
&lt;p data-end=&quot;4830&quot; data-start=&quot;4794&quot;&gt;Add your user to the &lt;code data-end=&quot;4824&quot; data-start=&quot;4815&quot;&gt;dialout&lt;/code&gt; group&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;4853&quot; data-start=&quot;4831&quot;&gt;
&lt;p data-end=&quot;4853&quot; data-start=&quot;4833&quot;&gt;Reboot after changes&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;&lt;p data-end=&quot;4915&quot; data-start=&quot;4855&quot;&gt;This allows flashing and monitoring without root privileges.&lt;/p&gt;&lt;h2 data-end=&quot;4959&quot; data-start=&quot;4922&quot;&gt;Debugging ESP32 with Espressif IDE&lt;/h2&gt;
&lt;p data-end=&quot;5044&quot; data-start=&quot;4961&quot;&gt;One of the most powerful features of Espressif IDE is integrated debugging support.&lt;/p&gt;
&lt;h3 data-end=&quot;5076&quot; data-start=&quot;5046&quot;&gt;OpenOCD and JTAG Debugging&lt;/h3&gt;
&lt;p data-end=&quot;5119&quot; data-start=&quot;5078&quot;&gt;Espressif IDE includes OpenOCD, enabling:&lt;/p&gt;
&lt;ul data-end=&quot;5217&quot; data-start=&quot;5120&quot;&gt;&lt;li data-end=&quot;5142&quot; data-start=&quot;5120&quot;&gt;
&lt;p data-end=&quot;5142&quot; data-start=&quot;5122&quot;&gt;Hardware breakpoints&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;5172&quot; data-start=&quot;5143&quot;&gt;
&lt;p data-end=&quot;5172&quot; data-start=&quot;5145&quot;&gt;Step-by-step code execution&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;5194&quot; data-start=&quot;5173&quot;&gt;
&lt;p data-end=&quot;5194&quot; data-start=&quot;5175&quot;&gt;Variable inspection&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;5217&quot; data-start=&quot;5195&quot;&gt;
&lt;p data-end=&quot;5217&quot; data-start=&quot;5197&quot;&gt;Stack trace analysis&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;5275&quot; data-start=&quot;5219&quot;&gt;This requires compatible ESP32 boards with JTAG support.&lt;/p&gt;
&lt;h3 data-end=&quot;5307&quot; data-start=&quot;5277&quot;&gt;Typical Debugging Workflow&lt;/h3&gt;
&lt;ol data-end=&quot;5437&quot; data-start=&quot;5309&quot;&gt;&lt;li data-end=&quot;5330&quot; data-start=&quot;5309&quot;&gt;
&lt;p data-end=&quot;5330&quot; data-start=&quot;5312&quot;&gt;Build the firmware&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;5361&quot; data-start=&quot;5331&quot;&gt;
&lt;p data-end=&quot;5361&quot; data-start=&quot;5334&quot;&gt;Start a debug configuration&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;5380&quot; data-start=&quot;5362&quot;&gt;
&lt;p data-end=&quot;5380&quot; data-start=&quot;5365&quot;&gt;Set breakpoints&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;5409&quot; data-start=&quot;5381&quot;&gt;
&lt;p data-end=&quot;5409&quot; data-start=&quot;5384&quot;&gt;Flash and attach debugger&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;5437&quot; data-start=&quot;5410&quot;&gt;
&lt;p data-end=&quot;5437&quot; data-start=&quot;5413&quot;&gt;Inspect runtime behavior&lt;/p&gt;
&lt;/li&gt;&lt;/ol&gt;&lt;p data-end=&quot;5516&quot; data-start=&quot;5439&quot;&gt;This workflow dramatically reduces development time for complex applications.&lt;/p&gt;&lt;h2 data-end=&quot;5562&quot; data-start=&quot;5523&quot;&gt;Logging, Monitoring, and Diagnostics&lt;/h2&gt;
&lt;p data-end=&quot;5647&quot; data-start=&quot;5564&quot;&gt;ESP-IDF provides a flexible logging system that supports multiple verbosity levels.&lt;/p&gt;
&lt;h3 data-end=&quot;5671&quot; data-start=&quot;5649&quot;&gt;ESP-IDF Log Levels&lt;/h3&gt;
&lt;p data-end=&quot;5702&quot; data-start=&quot;5673&quot;&gt;Available log levels include:&lt;/p&gt;
&lt;ul data-end=&quot;5742&quot; data-start=&quot;5703&quot;&gt;&lt;li data-end=&quot;5710&quot; data-start=&quot;5703&quot;&gt;
&lt;p data-end=&quot;5710&quot; data-start=&quot;5705&quot;&gt;ERROR&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;5717&quot; data-start=&quot;5711&quot;&gt;
&lt;p data-end=&quot;5717&quot; data-start=&quot;5713&quot;&gt;WARN&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;5724&quot; data-start=&quot;5718&quot;&gt;
&lt;p data-end=&quot;5724&quot; data-start=&quot;5720&quot;&gt;INFO&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;5732&quot; data-start=&quot;5725&quot;&gt;
&lt;p data-end=&quot;5732&quot; data-start=&quot;5727&quot;&gt;DEBUG&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;5742&quot; data-start=&quot;5733&quot;&gt;
&lt;p data-end=&quot;5742&quot; data-start=&quot;5735&quot;&gt;VERBOSE&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;5819&quot; data-start=&quot;5744&quot;&gt;Use lower log levels in production firmware to reduce performance overhead.&lt;/p&gt;
&lt;h3 data-end=&quot;5854&quot; data-start=&quot;5821&quot;&gt;Serial Monitor Best Practices&lt;/h3&gt;
&lt;p data-end=&quot;5880&quot; data-start=&quot;5856&quot;&gt;For reliable monitoring:&lt;/p&gt;
&lt;ul data-end=&quot;5990&quot; data-start=&quot;5881&quot;&gt;&lt;li data-end=&quot;5911&quot; data-start=&quot;5881&quot;&gt;
&lt;p data-end=&quot;5911&quot; data-start=&quot;5883&quot;&gt;Ensure the correct baud rate&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;5945&quot; data-start=&quot;5912&quot;&gt;
&lt;p data-end=&quot;5945&quot; data-start=&quot;5914&quot;&gt;Close other serial applications&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;5990&quot; data-start=&quot;5946&quot;&gt;
&lt;p data-end=&quot;5990&quot; data-start=&quot;5948&quot;&gt;Filter logs when debugging complex systems&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;&lt;p data-end=&quot;6056&quot; data-start=&quot;5992&quot;&gt;Effective logging is essential for diagnosing real-world issues.&lt;/p&gt;&lt;h2 data-end=&quot;6112&quot; data-start=&quot;6063&quot;&gt;Performance Optimization Techniques in ESP-IDF&lt;/h2&gt;
&lt;p data-end=&quot;6193&quot; data-start=&quot;6114&quot;&gt;Optimizing performance is critical for embedded systems with limited resources.&lt;/p&gt;
&lt;p data-end=&quot;6223&quot; data-start=&quot;6195&quot;&gt;Key optimization strategies:&lt;/p&gt;
&lt;ul data-end=&quot;6391&quot; data-start=&quot;6224&quot;&gt;&lt;li data-end=&quot;6260&quot; data-start=&quot;6224&quot;&gt;
&lt;p data-end=&quot;6260&quot; data-start=&quot;6226&quot;&gt;Minimize dynamic memory allocation&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;6291&quot; data-start=&quot;6261&quot;&gt;
&lt;p data-end=&quot;6291&quot; data-start=&quot;6263&quot;&gt;Monitor heap and stack usage&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;6327&quot; data-start=&quot;6292&quot;&gt;
&lt;p data-end=&quot;6327&quot; data-start=&quot;6294&quot;&gt;Optimize FreeRTOS task priorities&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;6351&quot; data-start=&quot;6328&quot;&gt;
&lt;p data-end=&quot;6351&quot; data-start=&quot;6330&quot;&gt;Avoid blocking delays&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;6391&quot; data-start=&quot;6352&quot;&gt;
&lt;p data-end=&quot;6391&quot; data-start=&quot;6354&quot;&gt;Use DMA for data-intensive operations&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;&lt;p data-end=&quot;6466&quot; data-start=&quot;6393&quot;&gt;Profiling and optimization should be done iteratively during development.&lt;/p&gt;&lt;h2 data-end=&quot;6521&quot; data-start=&quot;6473&quot;&gt;Memory Management and FreeRTOS Considerations&lt;/h2&gt;
&lt;p data-end=&quot;6611&quot; data-start=&quot;6523&quot;&gt;ESP-IDF applications rely heavily on FreeRTOS. Poor task design can lead to instability.&lt;/p&gt;
&lt;p data-end=&quot;6628&quot; data-start=&quot;6613&quot;&gt;Best practices:&lt;/p&gt;
&lt;ul data-end=&quot;6779&quot; data-start=&quot;6629&quot;&gt;&lt;li data-end=&quot;6670&quot; data-start=&quot;6629&quot;&gt;
&lt;p data-end=&quot;6670&quot; data-start=&quot;6631&quot;&gt;Assign appropriate stack sizes to tasks&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;6704&quot; data-start=&quot;6671&quot;&gt;
&lt;p data-end=&quot;6704&quot; data-start=&quot;6673&quot;&gt;Avoid unnecessary task creation&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;6741&quot; data-start=&quot;6705&quot;&gt;
&lt;p data-end=&quot;6741&quot; data-start=&quot;6707&quot;&gt;Monitor stack usage during runtime&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;6779&quot; data-start=&quot;6742&quot;&gt;
&lt;p data-end=&quot;6779&quot; data-start=&quot;6744&quot;&gt;Use queues and semaphores correctly&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;&lt;p data-end=&quot;6844&quot; data-start=&quot;6781&quot;&gt;Proper FreeRTOS design improves reliability and responsiveness.&lt;/p&gt;&lt;h2 data-end=&quot;6882&quot; data-start=&quot;6851&quot;&gt;Security Features in ESP-IDF&lt;/h2&gt;
&lt;p data-end=&quot;6969&quot; data-start=&quot;6884&quot;&gt;ESP-IDF includes enterprise-grade security features suitable for commercial products.&lt;/p&gt;
&lt;h3 data-end=&quot;7000&quot; data-start=&quot;6971&quot;&gt;Key Security Capabilities&lt;/h3&gt;
&lt;ul data-end=&quot;7100&quot; data-start=&quot;7002&quot;&gt;&lt;li data-end=&quot;7015&quot; data-start=&quot;7002&quot;&gt;
&lt;p data-end=&quot;7015&quot; data-start=&quot;7004&quot;&gt;Secure boot&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;7034&quot; data-start=&quot;7016&quot;&gt;
&lt;p data-end=&quot;7034&quot; data-start=&quot;7018&quot;&gt;Flash encryption&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;7058&quot; data-start=&quot;7035&quot;&gt;
&lt;p data-end=&quot;7058&quot; data-start=&quot;7037&quot;&gt;TLS and HTTPS support&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;7100&quot; data-start=&quot;7059&quot;&gt;
&lt;p data-end=&quot;7100&quot; data-start=&quot;7061&quot;&gt;Hardware-based random number generation&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;7158&quot; data-start=&quot;7102&quot;&gt;These features protect firmware integrity and user data.&lt;/p&gt;
&lt;h3 data-end=&quot;7187&quot; data-start=&quot;7160&quot;&gt;When to Enable Security&lt;/h3&gt;&lt;p data-end=&quot;7340&quot; data-start=&quot;7189&quot;&gt;Security features should be enabled early in development, not as an afterthought. Retrofitting security into finished firmware is significantly harder.&lt;/p&gt;&lt;h2 data-end=&quot;7408&quot; data-start=&quot;7347&quot;&gt;ESP-IDF vs Arduino IDE vs PlatformIO (In-Depth Comparison)&lt;/h2&gt;
&lt;h3 data-end=&quot;7421&quot; data-start=&quot;7410&quot;&gt;ESP-IDF&lt;/h3&gt;
&lt;ul data-end=&quot;7514&quot; data-start=&quot;7423&quot;&gt;&lt;li data-end=&quot;7443&quot; data-start=&quot;7423&quot;&gt;
&lt;p data-end=&quot;7443&quot; data-start=&quot;7425&quot;&gt;Official framework&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;7470&quot; data-start=&quot;7444&quot;&gt;
&lt;p data-end=&quot;7470&quot; data-start=&quot;7446&quot;&gt;Maximum hardware control&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;7489&quot; data-start=&quot;7471&quot;&gt;
&lt;p data-end=&quot;7489&quot; data-start=&quot;7473&quot;&gt;Best performance&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;7514&quot; data-start=&quot;7490&quot;&gt;
&lt;p data-end=&quot;7514&quot; data-start=&quot;7492&quot;&gt;Steeper learning curve&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;h3 data-end=&quot;7531&quot; data-start=&quot;7516&quot;&gt;Arduino IDE&lt;/h3&gt;
&lt;ul data-end=&quot;7615&quot; data-start=&quot;7533&quot;&gt;&lt;li data-end=&quot;7557&quot; data-start=&quot;7533&quot;&gt;
&lt;p data-end=&quot;7557&quot; data-start=&quot;7535&quot;&gt;Very beginner-friendly&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;7576&quot; data-start=&quot;7558&quot;&gt;
&lt;p data-end=&quot;7576&quot; data-start=&quot;7560&quot;&gt;Fast prototyping&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;7615&quot; data-start=&quot;7577&quot;&gt;
&lt;p data-end=&quot;7615&quot; data-start=&quot;7579&quot;&gt;Limited access to low-level features&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;h3 data-end=&quot;7631&quot; data-start=&quot;7617&quot;&gt;PlatformIO&lt;/h3&gt;
&lt;ul data-end=&quot;7729&quot; data-start=&quot;7633&quot;&gt;&lt;li data-end=&quot;7663&quot; data-start=&quot;7633&quot;&gt;
&lt;p data-end=&quot;7663&quot; data-start=&quot;7635&quot;&gt;Supports multiple frameworks&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;7693&quot; data-start=&quot;7664&quot;&gt;
&lt;p data-end=&quot;7693&quot; data-start=&quot;7666&quot;&gt;Powerful project management&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;7729&quot; data-start=&quot;7694&quot;&gt;
&lt;p data-end=&quot;7729&quot; data-start=&quot;7696&quot;&gt;Requires additional configuration&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;&lt;p data-end=&quot;7832&quot; data-start=&quot;7731&quot;&gt;For production-grade ESP32 applications, ESP-IDF with Espressif IDE remains the most robust solution.&lt;/p&gt;&lt;h2 data-end=&quot;7884&quot; data-start=&quot;7839&quot;&gt;Long-Term Maintenance and Firmware Updates&lt;/h2&gt;
&lt;p data-end=&quot;7956&quot; data-start=&quot;7886&quot;&gt;Maintaining ESP32 firmware after deployment requires careful planning.&lt;/p&gt;
&lt;p data-end=&quot;7980&quot; data-start=&quot;7958&quot;&gt;Recommended practices:&lt;/p&gt;
&lt;ul data-end=&quot;8119&quot; data-start=&quot;7981&quot;&gt;&lt;li data-end=&quot;8008&quot; data-start=&quot;7981&quot;&gt;
&lt;p data-end=&quot;8008&quot; data-start=&quot;7983&quot;&gt;Use OTA update mechanisms&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;8042&quot; data-start=&quot;8009&quot;&gt;
&lt;p data-end=&quot;8042&quot; data-start=&quot;8011&quot;&gt;Maintain backward compatibility&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;8077&quot; data-start=&quot;8043&quot;&gt;
&lt;p data-end=&quot;8077&quot; data-start=&quot;8045&quot;&gt;Log firmware version information&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;8119&quot; data-start=&quot;8078&quot;&gt;
&lt;p data-end=&quot;8119&quot; data-start=&quot;8080&quot;&gt;Test updates extensively before release&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;&lt;p data-end=&quot;8185&quot; data-start=&quot;8121&quot;&gt;These practices ensure smooth updates and reduce field failures.&lt;/p&gt;&lt;h2 data-end=&quot;8238&quot; data-start=&quot;8192&quot;&gt;Scaling ESP-IDF Projects for Commercial Use&lt;/h2&gt;
&lt;p data-end=&quot;8319&quot; data-start=&quot;8240&quot;&gt;When projects grow from prototypes into products, scalability becomes critical.&lt;/p&gt;
&lt;p data-end=&quot;8346&quot; data-start=&quot;8321&quot;&gt;Important considerations:&lt;/p&gt;
&lt;ul data-end=&quot;8424&quot; data-start=&quot;8347&quot;&gt;&lt;li data-end=&quot;8364&quot; data-start=&quot;8347&quot;&gt;
&lt;p data-end=&quot;8364&quot; data-start=&quot;8349&quot;&gt;Code modularity&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;8380&quot; data-start=&quot;8365&quot;&gt;
&lt;p data-end=&quot;8380&quot; data-start=&quot;8367&quot;&gt;Documentation&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;8399&quot; data-start=&quot;8381&quot;&gt;
&lt;p data-end=&quot;8399&quot; data-start=&quot;8383&quot;&gt;Automated builds&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;8424&quot; data-start=&quot;8400&quot;&gt;
&lt;p data-end=&quot;8424&quot; data-start=&quot;8402&quot;&gt;Continuous integration&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;8518&quot; data-start=&quot;8426&quot;&gt;ESP-IDF supports professional workflows suitable for commercial and industrial applications.&lt;/p&gt;&lt;h2&gt;SEO FAQ Section&lt;/h2&gt;&lt;h3&gt;Is Espressif IDE free?&lt;/h3&gt;&lt;p&gt;Yes, Espressif IDE is completely free and open-source.&lt;/p&gt;&lt;h3&gt;Can I use Espressif IDE for ESP8266?&lt;/h3&gt;&lt;p&gt;Yes, but ESP32 is more actively supported.&lt;/p&gt;&lt;h3&gt;Which OS is best for ESP-IDF?&lt;/h3&gt;&lt;p&gt;Linux and macOS offer the most stable experience, but Windows works well.&lt;/p&gt;&lt;h2&gt;Conclusion&lt;/h2&gt;&lt;p&gt;Espressif IDE is the official and most powerful development environment for ESP32 and ESP-IDF projects. With proper installation and configuration, it provides a professional-grade workflow suitable for both beginners and advanced developers.&lt;/p&gt;&lt;p&gt;By following this step-by-step Espressif IDE download and installation guide, you can confidently start building reliable and scalable ESP-based applications on Windows, macOS, or Linux.&lt;/p&gt;&lt;h2&gt;&amp;nbsp;🔎 **Read also:**&amp;nbsp;&amp;nbsp;&lt;/h2&gt;&lt;ol style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;h2&gt;&lt;a href=&quot;https://www.carapaklek.com/2026/01/how-to-fix-lvgl-font-errors-in-esp32-s3.html&quot; target=&quot;_blank&quot;&gt;How to Fix LVGL Font Errors in ESP32-S3 Projects&amp;nbsp; SquareLine Studio Export Guide with ESP-IDF (LVGL v8.3.11)&lt;/a&gt;&amp;nbsp;&lt;/h2&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.carapaklek.com/feeds/2956212713363926498/comments/default' title='Posting Komentar'/><link rel='replies' type='text/html' href='https://www.carapaklek.com/2026/01/espressif-ide-download-guide-official.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/2093917475945207513/posts/default/2956212713363926498'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/2093917475945207513/posts/default/2956212713363926498'/><link rel='alternate' type='text/html' href='https://www.carapaklek.com/2026/01/espressif-ide-download-guide-official.html' title='Espressif IDE Download Guide (Official ESP-IDF IDE for Windows, macOS, and Linux)'/><author><name>carapaklek.com</name><uri>http://www.blogger.com/profile/12438575085929354819</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj84wNpqEWz7nUZmjNjPBarFLyRAZARNpnydt-LYU_GZhXNGZFUplzpWB82bcX7camGkjKhQ-KGgMvx5RMUkIl4gkJvWLq8dlBfnRdA_lNZPKfK8QjiWqasrUvzS15za_c0-zdUM_aAJ39EGM5XGzVoH0xzAg-7mAIwM90m4_AE9y7kgQ/s220/webcamp.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEj_jXljiQ7TJhOFCN7LiRgCTmb_P6GcrpMkmhDzYd3DtbKSu2ORchdfHr26ALpLMfvabRdQBCR0Eh_-JgWae_36DoAOxNU-IUSRRIXF7srSQFItVnpmyiThFJOuUQQ42XCWOyAxAlnAowWSK1WlyIiLAoigI3fG25Pbozs4vA1mKaRkexwyU7ZG6qoxevZX=s72-w400-h266-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2093917475945207513.post-5782587201757837431</id><published>2026-01-28T09:29:00.000+07:00</published><updated>2026-01-28T09:29:06.874+07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Arduino"/><category scheme="http://www.blogger.com/atom/ns#" term="Teknologi"/><title type='text'>How to Fix LVGL Font Errors in ESP32-S3 Projects  SquareLine Studio Export Guide with ESP-IDF (LVGL v8.3.11)</title><content type='html'>&lt;h2 data-end=&quot;1137&quot; data-start=&quot;1089&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhETxsByyJSTZVNnMReOVxK7iTgEj54joLkWyS3ydvX2DT0Yy1-VHou6vDatdTZZFAdIntmPBg_3RNxNPNIJa_Cw8up2eX_7KHa01iaQLxg6F1DtdAhRPNdRbyyNsBmXL7PLlSkKzEf9yrPfWzoelZzWUvK7dwa3Na8Im1nclx8rcvgMxAYZOGlG9PiUBaf&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;1024&quot; data-original-width=&quot;1536&quot; height=&quot;266&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhETxsByyJSTZVNnMReOVxK7iTgEj54joLkWyS3ydvX2DT0Yy1-VHou6vDatdTZZFAdIntmPBg_3RNxNPNIJa_Cw8up2eX_7KHa01iaQLxg6F1DtdAhRPNdRbyyNsBmXL7PLlSkKzEf9yrPfWzoelZzWUvK7dwa3Na8Im1nclx8rcvgMxAYZOGlG9PiUBaf=w400-h266&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&lt;/h2&gt;&lt;h2 data-end=&quot;1137&quot; data-start=&quot;1089&quot;&gt;Introduction: The “Undeclared Font” Nightmare&lt;/h2&gt;
&lt;p data-end=&quot;1458&quot; data-start=&quot;1139&quot;&gt;In embedded GUI development, the combination of &lt;strong data-end=&quot;1199&quot; data-start=&quot;1187&quot;&gt;ESP32-S3&lt;/strong&gt;, &lt;strong data-end=&quot;1209&quot; data-start=&quot;1201&quot;&gt;LVGL&lt;/strong&gt;, and &lt;strong data-end=&quot;1236&quot; data-start=&quot;1215&quot;&gt;SquareLine Studio&lt;/strong&gt; has become a practical industry standard. This toolchain enables developers to build smartphone-like user interfaces for industrial controllers, IoT dashboards, and smart appliances such as a &lt;strong data-end=&quot;1457&quot; data-start=&quot;1429&quot;&gt;Smart Laundry Controller&lt;/strong&gt;.&lt;/p&gt;
&lt;p data-end=&quot;1535&quot; data-start=&quot;1460&quot;&gt;However, many developers encounter a critical roadblock during compilation.&lt;/p&gt;
&lt;p data-end=&quot;1725&quot; data-start=&quot;1537&quot;&gt;You design a clean screen, select a large bold font—such as &lt;strong data-end=&quot;1614&quot; data-start=&quot;1597&quot;&gt;Montserrat 46&lt;/strong&gt; for displaying prices—export the UI from SquareLine Studio, press &lt;em data-end=&quot;1688&quot; data-start=&quot;1681&quot;&gt;Build&lt;/em&gt;, and suddenly face this fatal error:&lt;/p&gt;
&lt;pre class=&quot;overflow-visible! px-0!&quot; data-end=&quot;1806&quot; data-start=&quot;1727&quot;&gt;&lt;div class=&quot;contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary&quot;&gt;&lt;div class=&quot;sticky top-[calc(--spacing(9)+var(--header-height))] @w-xl/main:top-9&quot;&gt;&lt;div class=&quot;absolute end-0 bottom-0 flex h-9 items-center pe-2&quot;&gt;&lt;div class=&quot;bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;overflow-y-auto p-4&quot; dir=&quot;ltr&quot;&gt;&lt;code class=&quot;whitespace-pre! language-c&quot;&gt;&lt;span&gt;&lt;span&gt;error: &lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-string&quot;&gt;&#39;lv_font_montserrat_46&#39;&lt;/span&gt;&lt;/span&gt;&lt;span&gt; undeclared (first use in this function)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;p data-end=&quot;1884&quot; data-start=&quot;1808&quot;&gt;The font clearly exists in SquareLine Studio, so why does the compiler fail?&lt;/p&gt;&lt;p data-end=&quot;2163&quot; data-start=&quot;1886&quot;&gt;The answer lies in the interaction between &lt;strong data-end=&quot;1954&quot; data-start=&quot;1929&quot;&gt;LVGL’s modular design&lt;/strong&gt;, &lt;strong data-end=&quot;1998&quot; data-start=&quot;1956&quot;&gt;ESP-IDF’s component-based build system&lt;/strong&gt;, and &lt;strong data-end=&quot;2067&quot; data-start=&quot;2004&quot;&gt;how LVGL configuration headers are resolved at compile time&lt;/strong&gt;.&lt;br data-end=&quot;2071&quot; data-start=&quot;2068&quot; /&gt;
This article explains the root cause and provides a &lt;strong data-end=&quot;2162&quot; data-start=&quot;2123&quot;&gt;reliable, production-ready solution&lt;/strong&gt;.&lt;/p&gt;&lt;h2 data-end=&quot;2212&quot; data-start=&quot;2170&quot;&gt;1. Core Concepts: Why This Error Occurs&lt;/h2&gt;
&lt;h3 data-end=&quot;2244&quot; data-start=&quot;2214&quot;&gt;The Modular Nature of LVGL&lt;/h3&gt;
&lt;p data-end=&quot;2410&quot; data-start=&quot;2246&quot;&gt;LVGL is designed to be lightweight and memory-efficient. To minimize Flash and RAM usage, &lt;strong data-end=&quot;2381&quot; data-start=&quot;2336&quot;&gt;every font size is conditionally compiled&lt;/strong&gt; using C preprocessor macros.&lt;/p&gt;
&lt;p data-end=&quot;2493&quot; data-start=&quot;2412&quot;&gt;By default, LVGL enables only a small set of fonts (typically &lt;strong data-end=&quot;2491&quot; data-start=&quot;2474&quot;&gt;Montserrat 14&lt;/strong&gt;).&lt;/p&gt;
&lt;p data-end=&quot;2541&quot; data-start=&quot;2495&quot;&gt;When SquareLine Studio generates code such as:&lt;/p&gt;
&lt;pre class=&quot;overflow-visible! px-0!&quot; data-end=&quot;2616&quot; data-start=&quot;2543&quot;&gt;&lt;div class=&quot;contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary&quot;&gt;&lt;div class=&quot;sticky top-[calc(--spacing(9)+var(--header-height))] @w-xl/main:top-9&quot;&gt;&lt;div class=&quot;absolute end-0 bottom-0 flex h-9 items-center pe-2&quot;&gt;&lt;div class=&quot;bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;overflow-y-auto p-4&quot; dir=&quot;ltr&quot;&gt;&lt;code class=&quot;whitespace-pre! language-c&quot;&gt;&lt;span&gt;&lt;span&gt;lv_obj_set_style_text_font(ui_Label, &amp;amp;lv_font_montserrat_46, &lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-number&quot;&gt;0&lt;/span&gt;&lt;/span&gt;&lt;span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;p data-end=&quot;2701&quot; data-start=&quot;2618&quot;&gt;it assumes that the corresponding font has already been enabled inside &lt;code data-end=&quot;2700&quot; data-start=&quot;2689&quot;&gt;lv_conf.h&lt;/code&gt;.&lt;/p&gt;&lt;p data-end=&quot;2827&quot; data-start=&quot;2703&quot;&gt;If the font macro is disabled, the symbol &lt;code data-end=&quot;2768&quot; data-start=&quot;2745&quot;&gt;lv_font_montserrat_46&lt;/code&gt; is &lt;strong data-end=&quot;2790&quot; data-start=&quot;2772&quot;&gt;never compiled&lt;/strong&gt;, resulting in an “undeclared” error.&lt;/p&gt;&lt;h3 data-end=&quot;2866&quot; data-start=&quot;2834&quot;&gt;The ESP-IDF Component System&lt;/h3&gt;
&lt;p data-end=&quot;2987&quot; data-start=&quot;2868&quot;&gt;ESP-IDF treats every directory inside &lt;code data-end=&quot;2919&quot; data-start=&quot;2906&quot;&gt;components/&lt;/code&gt; as an independent module.&lt;br data-end=&quot;2948&quot; data-start=&quot;2945&quot; /&gt;
Each component must explicitly declare:&lt;/p&gt;
&lt;ul data-end=&quot;3040&quot; data-start=&quot;2989&quot;&gt;&lt;li data-end=&quot;3005&quot; data-start=&quot;2989&quot;&gt;
&lt;p data-end=&quot;3005&quot; data-start=&quot;2991&quot;&gt;Source files&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;3023&quot; data-start=&quot;3006&quot;&gt;
&lt;p data-end=&quot;3023&quot; data-start=&quot;3008&quot;&gt;Include paths&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;3040&quot; data-start=&quot;3024&quot;&gt;
&lt;p data-end=&quot;3040&quot; data-start=&quot;3026&quot;&gt;Dependencies&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;&lt;p data-end=&quot;3201&quot; data-start=&quot;3042&quot;&gt;If LVGL, the UI component, or &lt;code data-end=&quot;3083&quot; data-start=&quot;3072&quot;&gt;lv_conf.h&lt;/code&gt; are placed incorrectly, ESP-IDF may compile LVGL &lt;strong data-end=&quot;3163&quot; data-start=&quot;3133&quot;&gt;without your configuration&lt;/strong&gt;, even if you edited the correct file.&lt;/p&gt;&lt;h2 data-end=&quot;3266&quot; data-start=&quot;3208&quot;&gt;2. The Perfect Folder Structure (ESP-IDF v5.x Standard)&lt;/h2&gt;
&lt;pre class=&quot;overflow-visible! px-0!&quot; data-end=&quot;3646&quot; data-start=&quot;3268&quot;&gt;&lt;div class=&quot;contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary&quot;&gt;&lt;div class=&quot;sticky top-[calc(--spacing(9)+var(--header-height))] @w-xl/main:top-9&quot;&gt;&lt;div class=&quot;absolute end-0 bottom-0 flex h-9 items-center pe-2&quot;&gt;&lt;div class=&quot;bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;overflow-y-auto p-4&quot; dir=&quot;ltr&quot;&gt;&lt;code class=&quot;whitespace-pre! language-text&quot;&gt;&lt;span&gt;&lt;span&gt;smart_project/
├── CMakeLists.txt
├── main/
│   ├── CMakeLists.txt
│   └── main.c
├── components/
│   ├── lvgl/
│   │   ├── src/
│   │   ├── env_support/
│   │   └── CMakeLists.txt
│   ├── ui/
│   │   ├── components/
│   │   ├── fonts/
│   │   ├── images/
│   │   ├── screens/
│   │   ├── ui.c
│   │   ├── ui.h
│   │   └── CMakeLists.txt
│   └── lv_conf.h
└── build/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;h3 data-end=&quot;3678&quot; data-start=&quot;3648&quot;&gt;Why This Structure Matters&lt;/h3&gt;
&lt;ul data-end=&quot;3930&quot; data-start=&quot;3680&quot;&gt;&lt;li data-end=&quot;3815&quot; data-start=&quot;3680&quot;&gt;
&lt;p data-end=&quot;3815&quot; data-start=&quot;3682&quot;&gt;&lt;strong data-end=&quot;3711&quot; data-start=&quot;3682&quot;&gt;Single global &lt;code data-end=&quot;3709&quot; data-start=&quot;3698&quot;&gt;lv_conf.h&lt;/code&gt;&lt;/strong&gt;&lt;br data-end=&quot;3714&quot; data-start=&quot;3711&quot; /&gt;
Placing it under &lt;code data-end=&quot;3746&quot; data-start=&quot;3733&quot;&gt;components/&lt;/code&gt; ensures it is visible to both LVGL and SquareLine-generated UI code.&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;3930&quot; data-start=&quot;3817&quot;&gt;&lt;p data-end=&quot;3930&quot; data-start=&quot;3819&quot;&gt;&lt;strong data-end=&quot;3845&quot; data-start=&quot;3819&quot;&gt;Separated UI component&lt;/strong&gt;&lt;br data-end=&quot;3848&quot; data-start=&quot;3845&quot; /&gt;
Makes LVGL upgrades safe and avoids mixing library code with generated UI logic.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2 data-end=&quot;3983&quot; data-start=&quot;3937&quot;&gt;3. CMakeLists.txt Configuration (Mandatory)&lt;/h2&gt;
&lt;h3 data-end=&quot;4011&quot; data-start=&quot;3985&quot;&gt;A. Root CMakeLists.txt&lt;/h3&gt;
&lt;pre class=&quot;overflow-visible! px-0!&quot; data-end=&quot;4135&quot; data-start=&quot;4013&quot;&gt;&lt;div class=&quot;contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary&quot;&gt;&lt;div class=&quot;sticky top-[calc(--spacing(9)+var(--header-height))] @w-xl/main:top-9&quot;&gt;&lt;div class=&quot;absolute end-0 bottom-0 flex h-9 items-center pe-2&quot;&gt;&lt;div class=&quot;bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;overflow-y-auto p-4&quot; dir=&quot;ltr&quot;&gt;&lt;code class=&quot;whitespace-pre! language-cmake&quot;&gt;&lt;span&gt;cmake_minimum_required(VERSION 3.16)
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
project(smart_laundry)&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;&lt;h3 data-end=&quot;4178&quot; data-start=&quot;4142&quot;&gt;B. LVGL Component CMakeLists.txt&lt;/h3&gt;
&lt;pre class=&quot;overflow-visible! px-0!&quot; data-end=&quot;4330&quot; data-start=&quot;4180&quot;&gt;&lt;div class=&quot;contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary&quot;&gt;&lt;div class=&quot;sticky top-[calc(--spacing(9)+var(--header-height))] @w-xl/main:top-9&quot;&gt;&lt;div class=&quot;absolute end-0 bottom-0 flex h-9 items-center pe-2&quot;&gt;&lt;div class=&quot;bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;overflow-y-auto p-4&quot; dir=&quot;ltr&quot;&gt;&lt;code class=&quot;whitespace-pre! language-cmake&quot;&gt;&lt;span&gt;set(LVGL_ROOT_DIR ${CMAKE_CURRENT_LIST_DIR})

if(ESP_PLATFORM)
    include(${CMAKE_CURRENT_LIST_DIR}/env_support/cmake/esp.cmake)
endif()&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;&lt;h3 data-end=&quot;4371&quot; data-start=&quot;4337&quot;&gt;C. UI Component CMakeLists.txt&lt;/h3&gt;
&lt;pre class=&quot;overflow-visible! px-0!&quot; data-end=&quot;4505&quot; data-start=&quot;4373&quot;&gt;&lt;div class=&quot;contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary&quot;&gt;&lt;div class=&quot;sticky top-[calc(--spacing(9)+var(--header-height))] @w-xl/main:top-9&quot;&gt;&lt;div class=&quot;absolute end-0 bottom-0 flex h-9 items-center pe-2&quot;&gt;&lt;div class=&quot;bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;overflow-y-auto p-4&quot; dir=&quot;ltr&quot;&gt;&lt;code class=&quot;whitespace-pre! language-cmake&quot;&gt;&lt;span&gt;file(GLOB_RECURSE SOURCES *.c)

idf_component_register(
    SRCS ${SOURCES}
    INCLUDE_DIRS .
    PRIV_REQUIRES lvgl
)&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;&lt;h2 data-end=&quot;4577&quot; data-start=&quot;4512&quot;&gt;4. Choosing the Correct LVGL Version (Critical for SquareLine)&lt;/h2&gt;
&lt;h3 data-end=&quot;4618&quot; data-start=&quot;4579&quot;&gt;Why LVGL &lt;strong data-end=&quot;4603&quot; data-start=&quot;4592&quot;&gt;v8.3.11&lt;/strong&gt; Is Recommended&lt;/h3&gt;
&lt;p data-end=&quot;4771&quot; data-start=&quot;4620&quot;&gt;SquareLine Studio (current stable releases) is designed around &lt;strong data-end=&quot;4695&quot; data-start=&quot;4683&quot;&gt;LVGL 8.x&lt;/strong&gt;, and &lt;strong data-end=&quot;4712&quot; data-start=&quot;4701&quot;&gt;v8.3.11&lt;/strong&gt; is the most stable and widely tested version for ESP32-S3.&lt;/p&gt;
&lt;p data-end=&quot;4782&quot; data-start=&quot;4773&quot;&gt;Benefits:&lt;/p&gt;
&lt;ul data-end=&quot;4904&quot; data-start=&quot;4783&quot;&gt;&lt;li data-end=&quot;4825&quot; data-start=&quot;4783&quot;&gt;
&lt;p data-end=&quot;4825&quot; data-start=&quot;4785&quot;&gt;Fully compatible with SquareLine exports&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;4849&quot; data-start=&quot;4826&quot;&gt;
&lt;p data-end=&quot;4849&quot; data-start=&quot;4828&quot;&gt;Stable font subsystem&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;4878&quot; data-start=&quot;4850&quot;&gt;
&lt;p data-end=&quot;4878&quot; data-start=&quot;4852&quot;&gt;Mature ESP-IDF integration&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;4904&quot; data-start=&quot;4879&quot;&gt;
&lt;p data-end=&quot;4904&quot; data-start=&quot;4881&quot;&gt;No breaking API changes&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p data-end=&quot;5019&quot; data-start=&quot;4906&quot;&gt;⚠ Using LVGL 9.x will cause &lt;strong data-end=&quot;4977&quot; data-start=&quot;4934&quot;&gt;font symbols, styles, and APIs to break&lt;/strong&gt; unless SquareLine explicitly supports it.&lt;/p&gt;&lt;p data-end=&quot;5119&quot; data-start=&quot;5021&quot;&gt;&lt;strong data-end=&quot;5040&quot; data-start=&quot;5021&quot;&gt;Recommendation:&lt;/strong&gt;&lt;br data-end=&quot;5043&quot; data-start=&quot;5040&quot; /&gt;
✔ Lock LVGL to &lt;strong data-end=&quot;5069&quot; data-start=&quot;5058&quot;&gt;v8.3.11&lt;/strong&gt;&lt;br data-end=&quot;5072&quot; data-start=&quot;5069&quot; /&gt;
✔ Match SquareLine project LVGL version exactly&lt;/p&gt;&lt;h2 data-end=&quot;5179&quot; data-start=&quot;5126&quot;&gt;5. Mastering &lt;code data-end=&quot;5153&quot; data-start=&quot;5142&quot;&gt;lv_conf.h&lt;/code&gt;: Enabling Fonts Correctly&lt;/h2&gt;
&lt;h3 data-end=&quot;5222&quot; data-start=&quot;5181&quot;&gt;Step 1: Enable the Configuration File&lt;/h3&gt;
&lt;pre class=&quot;overflow-visible! px-0!&quot; data-end=&quot;5278&quot; data-start=&quot;5224&quot;&gt;&lt;div class=&quot;contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary&quot;&gt;&lt;div class=&quot;sticky top-[calc(--spacing(9)+var(--header-height))] @w-xl/main:top-9&quot;&gt;&lt;div class=&quot;absolute end-0 bottom-0 flex h-9 items-center pe-2&quot;&gt;&lt;div class=&quot;bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;overflow-y-auto p-4&quot; dir=&quot;ltr&quot;&gt;&lt;code class=&quot;whitespace-pre! language-c&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span class=&quot;hljs-meta&quot;&gt;#&lt;span class=&quot;hljs-keyword&quot;&gt;if&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt; 1 &lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-comment&quot;&gt;/* Set this to &quot;1&quot; to enable content */&lt;/span&gt;&lt;/span&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p data-end=&quot;5336&quot; data-start=&quot;5280&quot;&gt;If this is set to &lt;code data-end=&quot;5301&quot; data-start=&quot;5298&quot;&gt;0&lt;/code&gt;, LVGL ignores everything below it.&lt;/p&gt;&lt;h3 data-end=&quot;5385&quot; data-start=&quot;5343&quot;&gt;Step 2: Enable Required Built-In Fonts&lt;/h3&gt;
&lt;pre class=&quot;overflow-visible! px-0!&quot; data-end=&quot;5587&quot; data-start=&quot;5387&quot;&gt;&lt;div class=&quot;contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary&quot;&gt;&lt;div class=&quot;sticky top-[calc(--spacing(9)+var(--header-height))] @w-xl/main:top-9&quot;&gt;&lt;div class=&quot;absolute end-0 bottom-0 flex h-9 items-center pe-2&quot;&gt;&lt;div class=&quot;bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;overflow-y-auto p-4&quot; dir=&quot;ltr&quot;&gt;&lt;code class=&quot;whitespace-pre! language-c&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span class=&quot;hljs-meta&quot;&gt;#&lt;span class=&quot;hljs-keyword&quot;&gt;define&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt; LV_FONT_MONTSERRAT_12 1
&lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-meta&quot;&gt;#&lt;span class=&quot;hljs-keyword&quot;&gt;define&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt; LV_FONT_MONTSERRAT_14 1
&lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-meta&quot;&gt;#&lt;span class=&quot;hljs-keyword&quot;&gt;define&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt; LV_FONT_MONTSERRAT_24 1
&lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-meta&quot;&gt;#&lt;span class=&quot;hljs-keyword&quot;&gt;define&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt; LV_FONT_MONTSERRAT_44 1
&lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-meta&quot;&gt;#&lt;span class=&quot;hljs-keyword&quot;&gt;define&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt; LV_FONT_MONTSERRAT_46 1
&lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-meta&quot;&gt;#&lt;span class=&quot;hljs-keyword&quot;&gt;define&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt; LV_FONT_MONTSERRAT_48 1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p data-end=&quot;5662&quot; data-start=&quot;5589&quot;&gt;LVGL will now compile the corresponding font data and expose the symbols.&lt;/p&gt;&lt;h3 data-end=&quot;5716&quot; data-start=&quot;5669&quot;&gt;Step 3: Custom Fonts Exported by SquareLine&lt;/h3&gt;
&lt;p data-end=&quot;5774&quot; data-start=&quot;5718&quot;&gt;If SquareLine exports fonts into &lt;code data-end=&quot;5773&quot; data-start=&quot;5751&quot;&gt;components/ui/fonts/&lt;/code&gt;:&lt;/p&gt;
&lt;ul data-end=&quot;5894&quot; data-start=&quot;5776&quot;&gt;&lt;li data-end=&quot;5801&quot; data-start=&quot;5776&quot;&gt;
&lt;p data-end=&quot;5801&quot; data-start=&quot;5778&quot;&gt;Ensure &lt;code data-end=&quot;5789&quot; data-start=&quot;5785&quot;&gt;.c&lt;/code&gt; files exist&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;5856&quot; data-start=&quot;5802&quot;&gt;
&lt;p data-end=&quot;5856&quot; data-start=&quot;5804&quot;&gt;Ensure they are included by &lt;code data-end=&quot;5856&quot; data-start=&quot;5832&quot;&gt;file(GLOB_RECURSE *.c)&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;5894&quot; data-start=&quot;5857&quot;&gt;&lt;p data-end=&quot;5894&quot; data-start=&quot;5859&quot;&gt;No additional &lt;code data-end=&quot;5882&quot; data-start=&quot;5873&quot;&gt;#define&lt;/code&gt; is required&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2 data-end=&quot;5949&quot; data-start=&quot;5901&quot;&gt;6. Ensuring UI Sees the Correct Configuration&lt;/h2&gt;
&lt;p data-end=&quot;5993&quot; data-start=&quot;5951&quot;&gt;Force the configuration include in &lt;code data-end=&quot;5992&quot; data-start=&quot;5986&quot;&gt;ui.h&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;overflow-visible! px-0!&quot; data-end=&quot;6075&quot; data-start=&quot;5995&quot;&gt;&lt;div class=&quot;contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary&quot;&gt;&lt;div class=&quot;sticky top-[calc(--spacing(9)+var(--header-height))] @w-xl/main:top-9&quot;&gt;&lt;div class=&quot;absolute end-0 bottom-0 flex h-9 items-center pe-2&quot;&gt;&lt;div class=&quot;bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;overflow-y-auto p-4&quot; dir=&quot;ltr&quot;&gt;&lt;code class=&quot;whitespace-pre! language-c&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span class=&quot;hljs-meta&quot;&gt;#&lt;span class=&quot;hljs-keyword&quot;&gt;define&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt; LV_CONF_INCLUDE_SIMPLE 1
&lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-meta&quot;&gt;#&lt;span class=&quot;hljs-keyword&quot;&gt;include&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-string&quot;&gt;&quot;lv_conf.h&quot;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;
&lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-meta&quot;&gt;#&lt;span class=&quot;hljs-keyword&quot;&gt;include&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&lt;span class=&quot;hljs-string&quot;&gt;&quot;lvgl.h&quot;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p data-end=&quot;6142&quot; data-start=&quot;6077&quot;&gt;This guarantees consistent font availability across all UI files.&lt;/p&gt;&lt;h2 data-end=&quot;6196&quot; data-start=&quot;6149&quot;&gt;7. The Build Cache Trap (Why Errors Persist)&lt;/h2&gt;
&lt;p data-end=&quot;6256&quot; data-start=&quot;6198&quot;&gt;ESP-IDF uses &lt;strong data-end=&quot;6220&quot; data-start=&quot;6211&quot;&gt;Ninja&lt;/strong&gt;, which aggressively caches results.&lt;/p&gt;
&lt;p data-end=&quot;6330&quot; data-start=&quot;6258&quot;&gt;Font macro changes often &lt;strong data-end=&quot;6315&quot; data-start=&quot;6283&quot;&gt;do not trigger recompilation&lt;/strong&gt; automatically.&lt;/p&gt;
&lt;h3 data-end=&quot;6347&quot; data-start=&quot;6332&quot;&gt;Always Run:&lt;/h3&gt;
&lt;pre class=&quot;overflow-visible! px-0!&quot; data-end=&quot;6390&quot; data-start=&quot;6349&quot;&gt;&lt;div class=&quot;contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary&quot;&gt;&lt;div class=&quot;sticky top-[calc(--spacing(9)+var(--header-height))] @w-xl/main:top-9&quot;&gt;&lt;div class=&quot;absolute end-0 bottom-0 flex h-9 items-center pe-2&quot;&gt;&lt;div class=&quot;bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;overflow-y-auto p-4&quot; dir=&quot;ltr&quot;&gt;&lt;code class=&quot;whitespace-pre! language-bash&quot;&gt;&lt;span&gt;&lt;span&gt;idf.py fullclean
idf.py build
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p data-end=&quot;6434&quot; data-start=&quot;6392&quot;&gt;Or delete the &lt;code data-end=&quot;6414&quot; data-start=&quot;6406&quot;&gt;build/&lt;/code&gt; directory manually.&lt;/p&gt;&lt;h2 data-end=&quot;6491&quot; data-start=&quot;6441&quot;&gt;8. Conclusion: From Font Errors to a Working UI&lt;/h2&gt;
&lt;p data-end=&quot;6563&quot; data-start=&quot;6493&quot;&gt;To successfully use large fonts in SquareLine-generated LVGL projects:&lt;/p&gt;
&lt;ol data-end=&quot;6729&quot; data-start=&quot;6565&quot;&gt;&lt;li data-end=&quot;6588&quot; data-start=&quot;6565&quot;&gt;
&lt;p data-end=&quot;6588&quot; data-start=&quot;6568&quot;&gt;&lt;strong data-end=&quot;6588&quot; data-start=&quot;6568&quot;&gt;Use LVGL v8.3.11&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;6623&quot; data-start=&quot;6589&quot;&gt;
&lt;p data-end=&quot;6623&quot; data-start=&quot;6592&quot;&gt;&lt;strong data-end=&quot;6623&quot; data-start=&quot;6592&quot;&gt;Place &lt;code data-end=&quot;6611&quot; data-start=&quot;6600&quot;&gt;lv_conf.h&lt;/code&gt; correctly&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;6654&quot; data-start=&quot;6624&quot;&gt;
&lt;p data-end=&quot;6654&quot; data-start=&quot;6627&quot;&gt;&lt;strong data-end=&quot;6654&quot; data-start=&quot;6627&quot;&gt;Enable fonts explicitly&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;6686&quot; data-start=&quot;6655&quot;&gt;
&lt;p data-end=&quot;6686&quot; data-start=&quot;6658&quot;&gt;&lt;strong data-end=&quot;6686&quot; data-start=&quot;6658&quot;&gt;Configure CMake properly&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;6729&quot; data-start=&quot;6687&quot;&gt;
&lt;p data-end=&quot;6729&quot; data-start=&quot;6690&quot;&gt;&lt;strong data-end=&quot;6729&quot; data-start=&quot;6690&quot;&gt;Always fullclean after font changes&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;&lt;/ol&gt;&lt;p data-end=&quot;6833&quot; data-start=&quot;6731&quot;&gt;Once these steps are followed, SquareLine Studio exports compile cleanly and run reliably on ESP32-S3.&lt;/p&gt;&lt;h3 data-end=&quot;6854&quot; data-start=&quot;6840&quot;&gt;Next Steps&lt;/h3&gt;&lt;ul data-end=&quot;7021&quot; data-start=&quot;6856&quot;&gt;&lt;li data-end=&quot;6911&quot; data-start=&quot;6856&quot;&gt;
&lt;p data-end=&quot;6911&quot; data-start=&quot;6858&quot;&gt;Verify your display driver (RGB LCD, ST7789, ILI9341)&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;6955&quot; data-start=&quot;6912&quot;&gt;
&lt;p data-end=&quot;6955&quot; data-start=&quot;6914&quot;&gt;Match SquareLine resolution with hardware&lt;/p&gt;
&lt;/li&gt;&lt;li data-end=&quot;7021&quot; data-start=&quot;6956&quot;&gt;
&lt;p data-end=&quot;7021&quot; data-start=&quot;6958&quot;&gt;Implement &lt;code data-end=&quot;6978&quot; data-start=&quot;6968&quot;&gt;ui_event&lt;/code&gt; callbacks to control real laundry hardware&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;Baca Juga :&lt;a href=&quot;https://www.carapaklek.com/2026/01/esp32-wifi-keeps-disconnecting-real.html&quot;&gt; ESP32 WiFi Keeps Disconnecting? Real Causes, Real Fixes (Power, RF &amp;amp; WiFi Manager)&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.carapaklek.com/feeds/5782587201757837431/comments/default' title='Posting Komentar'/><link rel='replies' type='text/html' href='https://www.carapaklek.com/2026/01/how-to-fix-lvgl-font-errors-in-esp32-s3.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/2093917475945207513/posts/default/5782587201757837431'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/2093917475945207513/posts/default/5782587201757837431'/><link rel='alternate' type='text/html' href='https://www.carapaklek.com/2026/01/how-to-fix-lvgl-font-errors-in-esp32-s3.html' title='How to Fix LVGL Font Errors in ESP32-S3 Projects  SquareLine Studio Export Guide with ESP-IDF (LVGL v8.3.11)'/><author><name>carapaklek.com</name><uri>http://www.blogger.com/profile/12438575085929354819</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj84wNpqEWz7nUZmjNjPBarFLyRAZARNpnydt-LYU_GZhXNGZFUplzpWB82bcX7camGkjKhQ-KGgMvx5RMUkIl4gkJvWLq8dlBfnRdA_lNZPKfK8QjiWqasrUvzS15za_c0-zdUM_aAJ39EGM5XGzVoH0xzAg-7mAIwM90m4_AE9y7kgQ/s220/webcamp.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEhETxsByyJSTZVNnMReOVxK7iTgEj54joLkWyS3ydvX2DT0Yy1-VHou6vDatdTZZFAdIntmPBg_3RNxNPNIJa_Cw8up2eX_7KHa01iaQLxg6F1DtdAhRPNdRbyyNsBmXL7PLlSkKzEf9yrPfWzoelZzWUvK7dwa3Na8Im1nclx8rcvgMxAYZOGlG9PiUBaf=s72-w400-h266-c" height="72" width="72"/><thr:total>0</thr:total></entry></feed>