Penulis: Latiful Hayat
Layout PCB dengan Laser Engraving EasyEda K40 Whisperer
Siapkan PCB
- Potong PCB sesuai ukuran yang dibutuhkan.
- Gosok PCB dengan stainless pencuci piring atau schottbrite hingga mengkilap.
- Bersihkan dengan IPA atau alkohol dan usap dengan tisue untuk menghilangkan serpihan dan minyak.
- Target: Permukaan bersih, matte halus, bebas minyak
- Semprot dengan pilox warna hitam doff/matte 1 atau 2 usap. Jarak semprot: 20–30 cm.
- Hindari: Lapisan tebal → sulit di-laser → banyak char
- Biarkan mengering atau dijemur minimal 30–60 menit (lebih lama lebih baik) atau dioven jika punya
Siapkan Layout PCB
- Buka EasyEdaStd dan pilih File, export, SVG. Sesuaikan layer mana yang akan dibuat. Misalkan untuk layer atas.
- Untuk EsayEdaPro pilih export, PDF, tambahkan layer dan simpan ke file PDF. Buka PDF dengan inkscape dan save as ke svg.
- Buka file SVG dengan inkscape, dan hapus bagian yang tidak diperlukan. Semisal background putih.
- Tekan Ctrl + Shift + R untuk memotong dan menampilkan bagian yang ada gambarnya saja.
- PENTING: Perbaiki ukuran, tambahkan offset 0.2mm. ALASAN: sinar laser memiliki diameter 0.2mm, sehingga setiap pinggir bagian akan terpotong 0.1mm. Misalnya lebar jalur 0.4mm jika tidak diperbaiki ukuran maka akan terpotong kanan 0.1mm dan kiri 0.1mm, sehingga ukuran setelah dipotong laser menjadi 0.2mm saja.
- Tambahkan 0.2mm untuk setiap jalur.
- Simpan sebagai SVG


Buka K40 Whisperrer
- Buka file SVG
- Pastikan invert raster, karena yang akan ‘dibakar yang hitam’, padahal yang hitam yang akan digunakan. Oleh karena itu pastikan
invert rastersudah dipilih - Matikan
Mirror Designuntuk PCB layer bawah - Atur kecepatan
Raster engrave50 mm/s dan power 50% untuk laser 40 watt. 2x Pass- Mak 100 mm/s, power 80% agar laser tidak cepat aus.
- Matikan halftone dither agar tidak bintik-bintik
- Taruh PCB sesuai dengan poin laser di pojok kanan atas, beri perekat bila perlu.
- Atur jarak nozel sekitar 0.5 mm
- Klik
Raster Engrave- Target hasil: Copper terlihat mengilap (shiny). Bukan hitam / coklat
- Sesuaikan ketinggian pelat, naik turunkan agar mendapatkan titik pusat laser yang maksimal.
Bahaya:
Jika laser menembus cat dan mengenai logam polos yang mengkilap di bawahnya, sinar bisa memantul kembali ke arah nozzle, mengenai lensa, cermin, atau bahkan masuk kembali ke dalam tabung laser (laser tube). Hal ini bisa menyebabkan lensa retak atau memperpendek umur tabung laser.
Cara Menghindari:
Gunakan pengaturan daya yang pas hanya untuk menghilangkan cat, mulai dari 25% jangan berlebihan. Fokus yang sedikit menjauhkan nozzle dari material untuk dapat membantu mengurangi risiko pantulan langsung ke optik


Pembersihan
- Campur IPA – alkohol (76%) 1 banding 4 untuk membersihkan char, usap halus dengan kapas.
- Jika gagal, gunakan aktivasi kimia dengan HCl encer, 1 : 4 (HCl : air). Celup 5–10 detik.
- Bilas air, gunakan magic sponge/sikat halus dengan tekanan sangat ringan.
- Target: Copper mulai lebih metalik / reflektif
- Sebelum etching, ukur tembaga dan pastikan hambatan mendekati 0 ohm
- Tambahkan HCl encer dengan H₂O₂, masukkan PCB dan goyang ringan. Tanda bereaksi: Muncul gelembung kecil.
- Amati jalur antara 5 s.d. 15 menit.




Kesimpulan:
- Konfigurasi terbaik: daya laser 50% , kecepatan 100 mm/s, 1x atau 2x pass.
- Kecepatan dikurangi jadi tidak smooth; daya ditambah jadi overburn.
- Lebarkan jalur 0,15 mm di kiri dan kanan (+0,3 mm) agar mendapatkan lebar yang tepat.
- Char tetap terbentuk, perlu dibersikan sebelum etching
- Belum dicoba menggunakan magic spons + air (ref: https://www.youtube.com/watch?v=XwI7-OFcFmg)
- H2O2 masih terlalu banyak yang membuat etching terlalu cepat, dapat dikurangi lagi ke rasio 0.5 bagian HCl
- Gelembung reaksi mengurangi kemampuan lekat cat, terutama di 0.1mm dan 0.2mm
- Hanya cocok untuk track 0,3 mm atau lebih lebar, dengan gap minimal 0,3 mm. Perbaikan lebar track mutlak diperlukan!
Cetak PCB dengan SLA Printer 3D
Siapkan layout dan buat menjadi STL (Cek link ini di pos sebelumnya)
Buka Chitubox dan buka file STL. Pastikan ukuran sudah tepat. Biasakan membuat batas PCB agar mudah untuk scaling. Jika sudah pas ukurannya, lanjutkan dengan membuka halaman machine setting.
Saat di halaman machine setting, ubah Bottom exposure time menjadi 8-12 s untuk monochrome, 20-30 s untuk RGB. Jika kurang, maka bisa jadi photoresist tidak mengeras. Jika berlebihan, ukuran jalur bisa jadi melebar. Silakan coba-coba, karena tiap printer bisa jadi beda.

Slice dan save untuk menyimpan file

Selanjutnya, copy ke Flash untuk dicetak di printer 3D. Sebelum mencetak, ambil semua base/bantalan dan tempat resin. Setelah itu, pilih file dan cetak.
Pastikan PCB sudah dipasangi photoresist dan taruh PCB di printer. Tambahkan pemberat semisal buku untuk menempelkan PCB ke layar tanpa celah.


Note saat etching:
1. JAngan terlalu agresif, berikan 1:1:3 HCl;H2O2; Air
2. Tambahkan surfactan 1 tetes per 100ml untuk mencegah gelembung nempel di PCB
3. Posisikan PCB Vertikal dan lakukan agregasi (digoyang)
4. Pastikan PCB benar-benar bersih tanpa minyak. Gosok, bersihkan dengan sabun, lap dengan IPA.
5. Tekan PR dengan roler dan biarkan kering 15 menit. Gunakan laminator agar jalur kecil benar-benar menempel dengan kuat. Suhu jangan lebih dari 80 °C.

PCB layout ke model 3D (.stl)
Buka EsayEDA dan pilih menu File -> Export -> SVG Source

Klik tombol Download dan simpan file SVGnya

Buka file SVG di inkscape atau coreldraw atau vector editing software yang lainnya. Pilih gambar dengan Select, klik kanan dan pilih Ungroup, agar dapat menghapus yang tidak diperlukan. (Ctrl+Shif+G)

Hapus gambar yang tidak diperlukan dengan tombol Delete, hingga tersisa gambar layout-nya saja. Jika masih ada yang menyatu, lakukan Ungroup Lagi sampai dapat dipilih satu per satu.
Ubah stroke menjadi path dengan memilih semua stroke, lalu tekan Ctrl + Alt + C atau lewat menu Path -> Stroke to Path.
Tekan Ctrl + Shift + R untuk menjadikan frame gambar yang tepat yang dibutuhkan saja. Kemudian simpan.
Buka blender atau 3D editor lain, ubah unit menjadi mm dengan klik tombol logo kerucut di sebelah kanan. isikan skala 0.001 karena SVG akan di konversi ke meter persegi dari mm persegi. Ganti unit menjadi milimeter.

pilih import -> Scalable Vector Graphics -> Lalu pilih file SVGnya

Klik salah sati Line di bagian file SVG, misalkan line 16, lalu klik menu View -> Frame selected


Ketik A (Edit -> Select ALL), lalu Ctrl + J (Object -> Join) untuk menjadikan 1 semua yang tadi sudah di-Ungroup di inkscape.
Piilih gambar hijau, pilih bagian geometri dan isikan nilai Extrude, misalnya 0.0001m atau 1mm

Export ke .stl
Cara mengguanakan aplikasi online:
Create Graph from Text 2
C++ code
#include <iostream>
using namespace std;
int main() {
int number;
// Input from user
cout << "Masukkan sebuah bilangan: ";
cin >> number;
// Check positive, negative, or zero
if (number > 0) {
cout << number << " adalah bilangan positif." << endl;
} else if (number < 0) {
cout << number << " adalah bilangan negatif." << endl;
} else {
cout << number << " adalah nol." << endl;
}
// Check odd or even
if (number % 2 == 0) {
cout << number << " adalah bilangan genap." << endl;
} else {
cout << number << " adalah bilangan ganjil." << endl;
}
return 0;
}
eraser.io syntax
KlasifikasiBilangan {
mulai[shape:oval]
masukkan bilangan[shape:parallelogram]
cek apakah bilangan GE 0 [shape:diamond]
cek apakah bilangan EQ 0 [shape:diamond]
cetak nol [shape:parallelogram]
cetak positif [shape:parallelogram]
cetak negatif [shape:parallelogram]
cek apakah bilangan mod 2 EQ 0 [shape:diamond]
cetak genap [shape:parallelogram]
cetak ganjil [shape:parallelogram]
selesai[shape:oval]
}
mulai>masukkan bilangan>cek apakah bilangan GE 0
cek apakah bilangan GE 0>cek apakah bilangan EQ 0:ya
cek apakah bilangan EQ 0>cetak nol:ya
cek apakah bilangan EQ 0>cetak positif:tidak
cek apakah bilangan GE 0>cetak negatif:tidak
cetak nol>cek apakah bilangan mod 2 EQ 0
cetak positif>cek apakah bilangan mod 2 EQ 0
cetak negatif>cek apakah bilangan mod 2 EQ 0
cek apakah bilangan mod 2 EQ 0>cetak genap:ya
cek apakah bilangan mod 2 EQ 0>cetak ganjil:tidak
cetak genap>selesai
cetak ganjil>selesai
Perbedaan dengan “سَـ” dan “سَوْفَ”
Meskipun “سَـ (sa)” dan “سَوْفَ (saufa)” keduanya menunjukkan masa depan, ada sedikit perbedaan:
- سَـ (sa): Menunjukkan masa depan yang dekat atau lebih dekat daripada “saufa.”
- سَوْفَ (saufa): Menunjukkan masa depan yang lebih jauh atau kurang pasti waktunya dibandingkan “sa.”
Contoh Fi’il dan Fa’il

Kata ganti benda atau “dhamir” (ضمير).
| English | Bahasa | Arabic (Masculine) | Arabic (Feminine) |
| It | ini (sesuatu yang sudah disebutkan) | هو (huwa) | هي (hiya) |
| This | ini (sesuatu yang dekat, baru disebutkan) | هذا (hādhā) | هذه (hādhihi) |
| That | itu (sesuatu yang jauh, baru disebutkan) | ذلك (dhālika) | تلك (tilka) |
| Those | itu jamak | أولئك (ulā’ika) | أولئك (ulā’ika) |
| These | ini jamak | هؤلاء (hā’ulā’) | هؤلاء (hā’ulā’) |
Itu bulan(M): ذلك القمر (dhālika al-qamar)
Itu langit(F): تلك السماء (tilka as-samā’)
Itu bumi(F): تلك الأرض (tilka al-arḍ)
Ini siang(M): هذا النهار (hādhā an-nahār)
Ini malam(F): هذه الليلة (hādhihi al-layla)
Standard I2S vs LSBJ (EIAJ)
in esp8266audio library
ESP32:
out = new AudioOutputI2S();
out->SetLsbJustified(true);
based on AudioOutputI2S.cpp:
else if (lsb_justified)
{
#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(4, 2, 0)
comm_fmt = (i2s_comm_format_t) I2S_COMM_FORMAT_STAND_MSB;
#else
comm_fmt = (i2s_comm_format_t) (I2S_COMM_FORMAT_I2S | I2S_COMM_FORMAT_I2S_LSB);
#endif
}
else
{
#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(4, 2, 0)
comm_fmt = (i2s_comm_format_t) (I2S_COMM_FORMAT_STAND_I2S);
#else
comm_fmt = (i2s_comm_format_t) (I2S_COMM_FORMAT_I2S | I2S_COMM_FORMAT_I2S_MSB);
#endif
}
ESP8266:
Remove I2STMS in file: C:\Users\USER\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.2\cores\esp8266\core_esp8266_i2s.cpp
// I2SRMS, I2STMS = 1-bit delay from WS to MSB (I2S format), I2SRMS: Receiver, I2STMS: Transmitter
//i2sc_temp |= I2SRF | I2SMR | I2SRMS | I2STMS | (div1 << I2SBD) | (div2 << I2SCD);
i2sc_temp |= I2SRF | I2SMR | I2SRMS | (div1 << I2SBD) | (div2 << I2SCD);
Create Graph from Text


GraphViz
digraph Flowchart {
rankdir=TB;
node [shape=box, style=rounded];
S [label="Mulai", shape=ellipse];
T [label="Studi Literatur"];
U [label="Pembuatan MFC"];
V [label="Pengujian MFC"];
W [label="Output sesuai ?", shape=diamond];
X [label="Identifikasi sistem MFC"];
Y [label="Pemilihan dan pengujian komponen"];
Z [label="Karakteristik komponen sesuai kebutuhan ?", shape=diamond];
A [label="A", shape=circle, width=0.2];
A1 [label="A", shape=circle, width=0.2];
C [label="Desain Rangkaian"];
D [label="Pengujian Simulasi dan Analisis Rangkaian"];
E [label="Output sesuai ?", shape=diamond];
F [label="Desain PCB"];
G [label="Simulasi dan Analisis PCB"];
H [label="Sistem bekerja ?", shape=diamond];
I [label="B", shape=circle, width=0.2];
I1 [label="B", shape=circle, width=0.2];
K [label="Mengevaluasi prototipe"];
L [label="Assembly dan Programming"];
M [label="Sistem bekerja ?", shape=diamond];
N [label="Optimasi Rangkaian"];
O [label="Assembly dan Programming"];
P [label="Pengujian sistem"];
Q [label="Mendekati prediksi ?", shape=diamond];
R [label="Dokumentasi dan Publikasi"];
TT [label="Selesai", shape=ellipse];
S -> T;
T -> U;
U -> V;
V -> W;
W -> T [label="Tidak"];
W -> X [label="Ya"];
X -> Y;
Y -> Z;
Z -> X [label="Tidak"];
Z -> A [label="Ya"];
A1 -> C;
C -> D;
D -> E;
E -> C [label="Tidak"];
E -> F [label="Ya"];
F -> G;
G -> H;
H -> F [label="Tidak"];
H -> I [label="Ya"];
I1 -> K;
K -> L;
L -> M;
M -> N [label="Tidak"];
N -> K;
M -> O [label="Ya"];
O -> P;
P -> Q;
Q -> K [label="Tidak"];
Q -> R [label="Ya"];
R -> TT;
}

PlantUML
@startuml
:(Mulai);
repeat :(Studi Literatur);
:(Pembuatan MFC);
:(Pengujian MFC);
repeat while (Output sesuai ?) is (Tidak)
->Ya;
:(Identifikasi sistem MFC);
repeat :(Pemilihan dan pengujian komponen);
repeat while (Karakteristik komponen sesuai kebutuhan ?) is (Tidak)
->Ya;
stop
start
repeat :(Desain Rangkaian);
:(Pengujian Simulasi dan Analisis Rangkaian);
repeat while (Output sesuai ?) is (Tidak)
->Ya;
repeat :(Desain PCB);
:(Simulasi dan Analisis PCB);
repeat while (Sistem bekerja ?) is (Tidak)
->Ya;
stop
start
repeat :(Mengevaluasi prototipe);
:(Assembly dan Programming);
repeat while (Sistem bekerja ?) is (Tidak)
repeat :(Optimasi Rangkaian);
->Ya;
:(Pengujian sistem);
repeat while (Mendekati prediksi ?) is (Tidak)
->Ya;
:(Dokumentasi dan Publikasi);
:selesai;
@enduml

Mermaid:
flowchart TD
S(["Mulai"]) --> T("Studi Literatur")
T --> U("Pembuatan MFC")
U --> V(["Pengujian MFC"])
V --> W{"Output sesuai ?"}
W -- Tidak --> T
W -- Ya --> X("Identifikasi sistem MFC")
X --> Y("Pemilihan dan pengujian komponen")
Y --> Z{"Karakteristik komponen sesuai kebutuhan ?"}
Z -- Tidak --> X
Z -- Ya --> A((("A")))
B((("A"))) --> C("Desain Rangkaian")
C --> D("Pengujian Simulasi dan Analisis Rangkaian")
D --> E{"Output sesuai ?"}
E -- Tidak --> C
E -- Ya --> F("Desain PCB")
F --> G("Simulasi dan Analisis PCB")
G --> H{"Sistem bekerja ?"}
H -- Tidak --> F
H -- Ya --> I((("B")))
J((("B"))) --> K("Mengevaluasi prototipe")
K --> L("Assembly dan Programming")
L --> M{"Sistem bekerja ?"}
M -- Tidak --> N("Optimasi Rangkaian")
N --> K
M -- Ya --> O("Assembly dan Programming")
O --> P("Pengujian sistem")
P --> Q{"mendekati prediksi"}
Q -- Tidak --> K
Q -- Ya --> R("Dokumentasi dan Publikasi")
R --> TT(["Selesai"])
E --> n1["Untitled Node"]

TikZ:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric, arrows}
\tikzstyle{startstop} = [ rounded corners,
minimum width=3cm,
minimum height=1cm,
text centered,
draw=black,
fill=red!30, rounded corners=5mm % Adjust the radius as needed
]
\tikzstyle{io} = [trapezium,
trapezium stretches=true, % A later addition
trapezium left angle=70,
trapezium right angle=110,
minimum width=3cm,
minimum height=1cm, text centered,
draw=black, fill=blue!30]
\tikzstyle{process} = [rectangle,
minimum width=3cm,
minimum height=1cm,
text centered,
text width=3cm,
draw=black,
fill=orange!30]
\tikzstyle{decision} = [diamond,
minimum width=3cm,
minimum height=1cm,
text centered,
draw=black,
fill=green!30]
\tikzstyle{onpage} = [circle,
text centered,
draw=black]
\tikzstyle{arrow} = [thick,->,>=stealth]
\begin{document}
\begin{tikzpicture}[node distance=2cm]
\node (start) [startstop] {Start};
\node (sl) [process, below of=start] {Studi Literature};
\node (pmfc) [process, below of=sl] {Pembuatan MFC};
\node (pmfc2) [process, below of=pmfc] {Pengujian MFC};
\node (dec1) [decision, below of=pmfc2, yshift=-0.5cm] {sesuai?};
\node (pro2b) [process, right of=dec1, xshift=2cm] {Optimasi MFC};
\node (pmfc3) [process, below of=dec1] {Identifikasi sistem MFC};
\node (ppk) [process, below of=pmfc3] {Pemilihan dan pengujian komponen};
\node (dec2) [decision, right of=ppk, xshift=2cm] {Sesuai?};
\node (a) [onpage, below of=dec2] {A};
\draw [arrow] (start) -- (sl);
\draw [arrow] (sl) -- (pmfc);
\draw [arrow] (pmfc) -- (pmfc2);
\draw [arrow] (pmfc2) -- (dec1);
\draw [arrow] (dec1) -- node[anchor=east] {Ya} (pmfc3);
\draw [arrow] (dec1) -- node[anchor=south] {tidak} (pro2b);
\draw [arrow] (pro2b) |- (pmfc2);
\draw [arrow] (pmfc3) -- (ppk);
\draw [arrow] (ppk) -- (dec2);
\draw [arrow] (dec2) -- node[anchor=east] {Ya} (a);
\draw [arrow] (dec2) |- node[anchor=south] {tidak} (pmfc3);
\end{tikzpicture}
\end{document}

eraser.io
// Referensi
colorMode default
typeface default
title Proses Pengembangan MFC
// Nodes
Mulai [shape: oval]
MFC Sesuai Kebutuhan?[shape: diamond]
Komponen Sesuai?[shape: diamond]
Output Sesuai?[shape: diamond]
Sistem Bekerja?[shape: diamond]
Mendekati Prediksi?[shape: diamond]
Dokumentasi Publikasi [shape: parallelogram]
Selesai [shape: oval]
// Relationships
Mulai -> Studi Literatur
Studi Literatur -> Pembuatan & Pengujian MFC
Pembuatan & Pengujian MFC -> MFC Sesuai Kebutuhan?
MFC Sesuai Kebutuhan? ->Pembuatan & Pengujian MFC:Tidak
MFC Sesuai Kebutuhan? -> Pemilihan dan Pengujian Komponen: Ya
Pemilihan dan Pengujian Komponen -> Komponen Sesuai?
Komponen Sesuai? -> Pemilihan dan Pengujian Komponen: Tidak
Komponen Sesuai? -> Desain Rangkaian: Ya
Desain Rangkaian -> Simulasi Analisis
Simulasi Analisis -> Output Sesuai?
Output Sesuai? -> Desain Rangkaian: Tidak
Output Sesuai? -> Desain PCB: Ya
Desain PCB -> Assembly Programming
Assembly Programming -> Sistem Bekerja?
Sistem Bekerja? -> Desain PCB: Tidak
Sistem Bekerja? -> Pengujian Sistem: Ya
Pengujian Sistem -> Mendekati Prediksi?
Mendekati Prediksi? -> Desain Rangkaian: Tidak
Mendekati Prediksi? -> Dokumentasi Publikasi: Ya
Dokumentasi Publikasi -> Selesai

Sources:
https://editor.plantuml.com/
https://www.mermaidchart.com/
https://dreampuf.github.io/GraphvizOnline
https://www.overleaf.com/
https://app.eraser.io/