Proses manufaktur
| × | 1 | ||||
| × | 1 | ||||
| × | 3 | ||||
| × | 3 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 2 | ||||
| × | 3 |
| ||||
|
Pendahuluan
Halo, salam dari Indonesia.
Mesin penjual snack ini adalah tugas akhir saya. Proyek ini sebenarnya telah selesai pada akhir tahun 2015.
Tujuan dari proyek ini adalah untuk membuat mesin penjual otomatis, yang didukung oleh mikrokontroler arduino, menggunakan komponen "murah dan mudah didapat" yang tersedia di toko lokal.
Video di bawah ini adalah video tes akhir Snack Vending Machine, mulai dari tes pembayaran/koin, pemilihan produk, hingga pengiriman produk.
Jadi, inilah yang saya lakukan untuk mencapai tujuan itu:
Langkah 1:Buat sketsa konsep
Pikirkan dulu, konsepnya .
Sketsa ini adalah ide pertama saya tentang apa yang mungkin saya buat. Ini akan menjadi mesin penjual makanan ringan, menerima koin sebagai pembayaran, dan menggunakan kotak Akrilik.
Pilih dan matangkan konsep Anda , coba pikirkan apa saja, skenario apa saja, kondisi apa pun.
Cobalah untuk membuat sketsa semuanya, jangan khawatir jika gambar Anda jelek, lihatlah gambar saya dengan serius. :D
Waktu yang tepat untuk memikirkan hal yang tidak terpikirkan adalah sebelum proyek dimulai.
Langkah 2:Buat Model 3D
Mungkin langkah ini tidak diperlukan untuk semua orang, tetapi bagi saya, dan untuk proyek ini, ini sangat penting.
Saya membuat model solidworks. Dan maksud saya model yang benar-benar lengkap. Saya perlu menentukan dimensi produk, dalam hal ini, paket makanan ringan. Ukuran koin yang diterima, ukuran koin yang ditolak, ukuran slot koin, ukuran jalur koin, ukuran tombol tekan, ukuran hampir semuanya. Langkah ini meliputi membandingkan, memilih, dan mengukur ukuran Mikrokontroler Arduino yang digunakan. Sensor apa yang digunakan, atau mungkin akan digunakan di masa depan, di mana harus ditempatkan, apa dimensi dan ukurannya, ke mana koin yang diterima pergi, saya juga memikirkan di mana saya harus meletakkan LCD monokrom (tidak perlu tapi saya bersikeras).
Dan terakhir, masih dalam pembuatan model solidworks, jangan lupa buat lubang untuk sekrup di setiap bagiannya.
Case terbuat dari bahan Acrylic, dan dipotong menggunakan metode laser cutting. Itu sebabnya saya membuat model sedetail dan seakurat mungkin, karena semakin akurat model saya, semakin banyak presisi case yang akan saya dapatkan.
Langkah 3:Rancang Slot Koin
Untuk menyaring koin, pertama saya menggunakan dimensi koin. Dengan merancang koin slot, saya dapat menentukan ukuran koin apa yang boleh masuk ke mesin .
Kemudian filter kedua, saya menentukan ukuran koin apa yang diperbolehkan untuk diterima dan digulirkan ke tempat koin .
Karena dengan menggunakan gaya gravitasi, jika ukuran koin (diameter) lebih kecil dari panjang ramp/track koin, maka koin akan jatuh dan ditolak.
Ini adalah video ketika saya melakukan beberapa pengujian koin, ini akan menunjukkan kepada Anda bagaimana metode ini bekerja.
Langkah 4:Siapkan dan uji setiap komponen
Siapkan arduino Anda, siapkan segala sesuatu yang dibutuhkan.
Uji setiap komponen, tombol tekan LCD, relai, LED, coba gabungkan semuanya dan pelajari logika dan pengkodean yang berbeda. Pastikan Anda tahu tentang apa yang Anda lakukan. Cobalah untuk menguji hingga batasnya, temukan batasnya, tetapi jangan sampai melanggarnya.
Mengapa menggunakan resistor, apa yang terjadi ketika ini, atau itu, mengapa pembacaan sensor tidak stabil, nilai apa yang sebenarnya dibaca oleh sensor, dll. Saya melakukan tes dan menemukan bahwa pembacaan sensor jarak "tidak bersih", perlu menambahkan resistor ke tenang.
Sensor inframerah berkinerja sangat buruk dan tidak normal di bawah sinar matahari langsung (saya tahu tentang ini sebelumnya, tetapi tidak pernah benar-benar merasakan dampaknya, sampai sekarang). Solusinya adalah dengan menggunakan beberapa lakban untuk mengisolasi di sekitar bagian penerima sensor inframerah, seperti yang ditunjukkan pada gambar.
Langkah 5:Bangun mekanisme Spiral
Ini adalah salah satu bagian terpenting pada mesin penjual otomatis, mekanisme pengiriman.
Saya menggunakan mekanisme spiral, dengan kawat aluminium (diameter kawat 2mm), dibentuk secara manual menjadi spiral dengan bantuan Pipa PVC diameter 9cm.
Kawat spiral diikat ke roda menggunakan pengikat kabel. Saat motor DC ON, roda berputar, dan kawat spiral akan berputar.
Spiral yang berputar sebenarnya mengubah rotasi menjadi gerakan linier produk.
Langkah 6:Bangun mekanisme pengidentifikasi koin
Gambar pertama adalah sensor koin nomor 1, menggunakan sensor jarak, atau sensor elektromagnet induksi. Ketika koin diterima melewati sensor ini, itu akan memicu Arduino untuk mulai menghitung waktu (dalam milidetik).
jika sensor1 terpicu maka mulailah menghitung waktu dalam milidetik
Dan ketika menerima koin pass sensor koin nomor 2, sensor interupter jarak, arduino akan berhenti menghitung waktu, dan mendapatkan waktu yang dibutuhkan untuk koin tertentu, untuk melakukan perjalanan dari sensor nomor 1 ke sensor nomor 2.
jika sensor2 terpicu maka berhenti menghitung waktu dalam milidetik. "waktu perjalanan" adalah xxx milidetik
Jangan terlalu banyak menggunakan magnet karena akan macet dan membuat koin berhenti di tengah jalan koin. Kami tidak ingin itu terjadi, karena kami perlu menghitung waktu untuk setiap koin, untuk mendapatkan "waktu tempuh" antara sensor nomor 1 dan nomor 2. "Waktu tempuh" ini (dalam milidetik), digunakan untuk arduino untuk menentukan nilai koin yang diterima.
jika "waktu tempuh" lebih dari atau sama dengan "yyy" milidetik, maka koinnya "aaa", selain itu "bbb"
Ini adalah video ketika saya menguji metode ini, mengidentifikasi koin menggunakan magnet.
Langkah 7:Bangun mekanisme pendeteksian produk
Saya menggunakan 3 sensor inframerah untuk mendeteksi produk saat jatuh karena didorong/digerakkan oleh mekanisme spiral.
Ketika produk jatuh, itu akan memicu sensor inframerah, mengirimkan sinyal OFF ke Motor DC (melalui relai).
Video ini menunjukkan cara kerja pendeteksian produk di mesin penjual otomatis ini.
Langkah 8:Menggunakan LCD untuk informasi
Dalam proyek ini, saya membuat LCD yang menampilkan informasi (dalam mata uang Indonesia) tentang nilai koin yang diterima, setiap pelanggan memasukkan koin. Ini juga akan menunjukkan berapa banyak saldo total dari koin yang diterima, dan instruksi umum lainnya tentang langkah demi langkah untuk mengoperasikan mesin ini.
Saat mesin AKTIF
Setelah koin berhasil diidentifikasi
Setelah mekanisme spiral AKTIF (pengiriman terjadi)
Langkah 9:Menyelesaikan dan menguji
Akhirnya, selesai Snack Vending Machine.;)
Setelah 3 bulan atau lebih, saya siap untuk melakukan beberapa tes akhir untuk mesin ini, mulai dari tes pembayaran/koin, pemilihan produk, dan pengiriman produk.
Ini adalah video tes akhir Snack Vending Machine:
Saya harap proyek ini membantu beberapa dari Anda, mungkin memberi Anda inspirasi atau ide, tentang membangun dan membuat mesin penjual otomatis bertenaga Arduino berikutnya.
Langkah 10:Ruang untuk perbaikan
Beberapa ide untuk meningkatkan Mesin Penjual Makanan Ringan ini:
Terima kasih khusus:ITENAS Bandung, Departemen Teknik Mesin.
const byte SIAP =0;const byte KOIN_MASUK1 =1;const byte KOIN_MASUK2 =2;const byte KOIN_MASUK3 =3;const byte KOIN_MASUK4 =4;const byte KOIN_MASUK5 =5; byte konstituen KOIN_MASUK6 =6;byte konstituen KOIN_MASUK7 =7;bita konstanta SALDO_500 =8;bita konstanta SALDO_500500 =9;bita konstanta SALDO_500500500 =10;bita konstanta SALDO_500500500500 =11;byte konstanta SALDO_500_5005001000 =12; SALDO_5001000500 =14;byte konstanta SALDO_50010001000 =15;bita konstanta SALDO_5005001000 =16;bita konstanta SALDO_1000 =17;bita konstan SALDO_10001000 =18;bita konstanta SALDO_1000500 =19;bita konstan SALDO_1000500500 =20;KO_1000_bita konstan SALDO 22;byte state =SIAP;const float jeda_waktu =876;unsigned long time1;unsigned long time2;unsigned long time3;unsigned long time4;unsigned long time5;unsigned long time6;unsigned long time7;#definisi PIN_SCE 7#definisi PIN_RESET 6# tentukan PIN_DC 5#tentukan PIN_SDIN 4# tentukan PIN_SCLK 3#tentukan LCD_C RENDAH#tetapkan LCD_D TINGGI#tetapkan LCD_X 84#tetapkan LCD_Y 48statis const byte ASCII[][5] ={ {0x00, 0x00, 0x00, 0x00, 0x00} // 20 , {0x00, 0x00, 0x5f , 0x00, 0x00} // 21 ! , {0x00, 0x07, 0x00, 0x07, 0x00} // 22 " , {0x14, 0x7f, 0x14, 0x7f, 0x14} // 23 # , {0x24, 0x2a, 0x7f, 0x2a, 0x12} // 24 $ , { 0x23, 0x13, 0x08, 0x64, 0x62} // 25 % , {0x36, 0x49, 0x55, 0x22, 0x50} // 26 &, {0x00, 0x05, 0x03, 0x00, 0x00} // 27 ' , {0x00, 0x1c, 0x22, 0x41, 0x00} // 28 ( , {0x00, 0x41, 0x22, 0x1c, 0x00} // 29 ) , {0x14, 0x08, 0x3e, 0x08, 0x14} // 2a * , {0x08, 0x08, 0x3e, 0x08, 0x08} // 2b + , {0x00, 0x50, 0x30, 0x00, 0x00} // 2c , , {0x08, 0x08, 0x08, 0x08, 0x08} // 2d - , {0x00, 0x60, 0x60, 0x00, 0x00} // 2e . , {0x20, 0x10, 0x08, 0x04, 0x02} // 2f / , {0x3e, 0x51, 0x49, 0x45, 0x3e} // 30 0 , {0x00, 0x42, 0x7f, 0x40, 0x00} // 31 1 , {0x42, 0x61, 0x51, 0x49, 0x46} // 32 2 , {0x21, 0x41, 0x45, 0x4b, 0x31} // 33 3 , {0x18, 0x14, 0x12, 0x7f, 0x10} // 34 4 , {0x27, 0x45, 0x45, 0x45, 0x39} // 35 5 , {0x3c, 0x4a, 0x49, 0x49, 0x30} // 36 6 , {0x01, 0x71, 0x09, 0x05, 0x03} // 37 7 , {0x36, 0x49, 0x49, 0x49, 0x36} // 38 8 , {0x06, 0x49, 0x49, 0x29, 0x1e} // 39 9 , {0x00, 0x36, 0 x36, 0x00, 0x00} // 3a :, {0x00, 0x56, 0x36, 0x00, 0x00} // 3b; , {0x08, 0x14, 0x22, 0x41, 0x00} // 3c <, {0x14, 0x14, 0x14, 0x14, 0x14} // 3d =, {0x00, 0x41, 0x22, 0x14, 0x08} // 3e> , { 0x02, 0x01, 0x51, 0x09, 0x06} // 3f ? , {0x32, 0x49, 0x79, 0x41, 0x3e} // 40 @ , {0x7e, 0x11, 0x11, 0x11, 0x7e} // 41 A , {0x7f, 0x49, 0x49, 0x49, 0x36} // 42 B , { 0x3e, 0x41, 0x41, 0x41, 0x22} // 43 C , {0x7f, 0x41, 0x41, 0x22, 0x1c} // 44 D , {0x7f, 0x49, 0x49, 0x49, 0x41} // 45 E , {0x7f, 0x09, 0x09, 0x09, 0x01} // 46 F , {0x3e, 0x41, 0x49, 0x49, 0x7a} // 47 G , {0x7f, 0x08, 0x08, 0x08, 0x7f} // 48 H , {0x00, 0x41, 0x7f, 0x41, 0x00} // 49 I , {0x20, 0x40, 0x41, 0x3f, 0x01} // 4a J , {0x7f, 0x08, 0x14, 0x22, 0x41} // 4b K , {0x7f, 0x40, 0x40, 0x40, 0x40} // 4c L , {0x7f, 0x02, 0x0c, 0x02, 0x7f} // 4d M , {0x7f, 0x04, 0x08, 0x10, 0x7f} // 4e N , {0x3e, 0x41, 0x41, 0x41, 0x3e} // 4f O , {0x7f, 0x09, 0x09, 0x09, 0x06} // 50 P , {0x3e, 0x41, 0x51, 0x21, 0x5e} // 51 Q , {0x7f, 0x09, 0x19, 0x29, 0x46} // 52 R , {0x46, 0x49, 0x49, 0x49, 0x31} // 53 S , {0x01, 0x01, 0x7f, 0x01, 0x01} // 54 T , {0x3f, 0x40, 0x40, 0x40, 0x3f} // 55 U , {0x1f, 0x20, 0x40, 0x20, 0x1f} // 56 V , {0x3f, 0x40, 0x38, 0x40, 0x3f} // 57 W , {0x63, 0x14, 0 x08, 0x14, 0x63} // 58 X , {0x07, 0x08, 0x70, 0x08, 0x07} // 59 Y , {0x61, 0x51, 0x49, 0x45, 0x43} // 5a Z , {0x00, 0x7f, 0x41, 0x41, 0x00} // 5b [ , {0x02, 0x04, 0x08, 0x10, 0x20} // 5c Â¥ , {0x00, 0x41, 0x41, 0x7f, 0x00} // 5d ] , {0x04, 0x02, 0x01, 0x02 , 0x04} // 5e ^ , {0x40, 0x40, 0x40, 0x40, 0x40} // 5f _ , {0x00, 0x01, 0x02, 0x04, 0x00} // 60 ` , {0x20, 0x54, 0x54, 0x54, 0x78 } // 61 a , {0x7f, 0x48, 0x44, 0x44, 0x38} // 62 b , {0x38, 0x44, 0x44, 0x44, 0x20} // 63 c , {0x38, 0x44, 0x44, 0x48, 0x7f} / / 64 d , {0x38, 0x54, 0x54, 0x54, 0x18} // 65 e , {0x08, 0x7e, 0x09, 0x01, 0x02} // 66 f , {0x0c, 0x52, 0x52, 0x52, 0x3e} // 67 g , {0x7f, 0x08, 0x04, 0x04, 0x78} // 68 j , {0x00, 0x44, 0x7d, 0x40, 0x00} // 69 i , {0x20, 0x40, 0x44, 0x3d, 0x00} // 6a j , {0x7f, 0x10, 0x28, 0x44, 0x00} // 6b k , {0x00, 0x41, 0x7f, 0x40, 0x00} // 6c l , {0x7c, 0x04, 0x18, 0x04, 0x78} // 6d m , {0x7c , 0x08, 0x04, 0x04, 0x78} // 6e n , {0x38, 0x44, 0x44, 0x44, 0x38} // 6f o , {0x7c, 0x14, 0x14, 0x14, 0x08 } // 70 p , {0x08, 0x14, 0x14, 0x18, 0x7c} // 71 q , {0x7c, 0x08, 0x04, 0x04, 0x08} // 72 r , {0x48, 0x54, 0x54, 0x54, 0x20} / / 73 d , {0x04, 0x3f, 0x44, 0x40, 0x20} // 74 t , {0x3c, 0x40, 0x40, 0x20, 0x7c} // 75 u , {0x1c, 0x20, 0x40, 0x20, 0x1c} // 76 v , {0x3c, 0x40, 0x30, 0x40, 0x3c} // 77 w , {0x44, 0x28, 0x10, 0x28, 0x44} // 78 x , {0x0c, 0x50, 0x50, 0x50, 0x3c} // 79 y , {0x44, 0x64, 0x54, 0x4c, 0x44} // 7a z , {0x00, 0x08, 0x36, 0x41, 0x00} // 7b { , {0x00, 0x00, 0x7f, 0x00, 0x00} // 7c | , {0x00, 0x41, 0x36, 0x08, 0x00} // 7d } , {0x10, 0x08, 0x08, 0x10, 0x08} // 7e â†� , {0x78, 0x46, 0x41, 0x46, 0x78} // 7f â '};void LcdWrite(byte dc, byte data){ digitalWrite(PIN_DC, dc); digitalWrite(PIN_SCE, RENDAH); shiftOut(PIN_SDIN, PIN_SCLK, MSBFIRST, data); digitalWrite(PIN_SCE, HIGH);}void LcdCharacter(char character){ LcdWrite(LCD_D, 0x00); for (int indeks =0; indeks <5; indeks++) { LcdWrite(LCD_D, ASCII[karakter - 0x20][indeks]); } LcdWrite(LCD_D, 0x00);}void LcdClear(void){ for (int indeks =0; indeksSiap"); LcdInitialise(); LcdClear(); LcdString("Masukkan Koin Rp500 atau Koin Rp1000 @ Rp2000"); delay(500);}void loop() { int x =analogRead(14); if (status ==SIAP) { if (x>=33) { status =KOIN_MASUK1; waktu1 =mili(); nada (2, 4200, 40); Serial.println("snsr1,"); Serial.println("mulai minggu"); } } else if ((status ==KOIN_MASUK1) &&(!(digitalRead(13)))) { if ((digitalRead(12)) &&(status ==KOIN_MASUK1)) { unsigned long diff1 =(millis() - time1 ); Serial.println("snsr2,"); Serial.println("berhenti wkt"); Serial.print("jeda wkt:"); Serial.print(diff1); Serial.println("ms"); if (diff1> jeda_waktu) { state =SALDO_1000; LcdInitialise(); LcdClear(); LcdString("diterima Saldo=Rp1000 Tambah Koin Koin Rp1000"); digitalWrite (13, TINGGI); Serial.println("koin=Rp1000, Saldo:Rp1000"); nada(2, 4200, 299); } else if (diff1 =33) { status =KOIN_MASUK2; waktu2 =mili(); nada (2, 4200, 40); Serial.println("snsr1,"); Serial.println("mulai minggu"); } } else if ((status ==KOIN_MASUK2) &&((digitalRead(13)))) { if ((digitalRead(12)) &&(status ==KOIN_MASUK2)) { unsigned long diff2 =(millis() - time2); Serial.println("snsr2,"); Serial.println("berhenti wkt"); Serial.print("jeda wkt:"); Serial.print(diff2); Serial.println("ms"); if (diff2> jeda_waktu) { state =SALDO_5001000; LcdInitialise(); LcdClear(); LcdString("Diterima Saldo=Rp1500 Tambah Koin Koin Rp1000"); nada(2, 4200, 299); Serial.println("koin=Rp1000, Saldo:Rp1500"); } else if (diff2 =33) { status =KOIN_MASUK3; waktu3 =mili(); nada (2, 4200, 40); Serial.println("snsr1,"); Serial.println("mulai minggu"); } } else if ((status ==KOIN_MASUK3) &&((digitalRead(13)))) { if ((digitalRead(12)) &&(status ==KOIN_MASUK3)) { unsigned long diff3 =(millis() - time3); Serial.println("snsr2,"); Serial.println("berhenti wkt"); Serial.print("jeda wkt:"); Serial.print(diff3); Serial.println("ms"); if (diff3> jeda_waktu) { state =SALDO_5005001000; LcdInitialise(); LcdClear(); LcdString(" diterima Saldo=Rp2000 Pilih Produk Koin Rp1000"); Serial.println("koin=Rp1000, Saldo:Rp2000"); nada(2, 4200, 799); } else if (diff3 =33) { status =KOIN_MASUK4; waktu4 =mili(); nada (2, 4200, 40); Serial.println("snsr1,"); Serial.println("mulai minggu"); } } else if ((status ==KOIN_MASUK4) &&((digitalRead(13)))) { if ((digitalRead(12)) &&(status ==KOIN_MASUK4)) { unsigned long diff4 =(millis() - time4); Serial.println("snsr2,"); Serial.println("berhenti wkt"); Serial.print("jeda wkt:"); Serial.print(diff4); Serial.println("ms"); if (diff4> jeda_waktu) { state =SALDO_5005005001000; LcdInitialise(); LcdClear(); LcdString(" diterima Saldo=Rp2500 Pilih Produk Koin Rp1000"); Serial.println("koin=Rp1000, Saldo:Rp2500"); nada(2, 4200, 799); } else if (diff4 =33) { status =KOIN_MASUK5; waktu5 =mili(); nada (2, 4200, 40); Serial.println("snsr1,"); Serial.println("mulai minggu"); } } else if ((status ==KOIN_MASUK5) &&((digitalRead(13)))) { if ((digitalRead(12)) &&(status ==KOIN_MASUK5)) { unsigned long diff5 =(millis() - time5); Serial.println("snsr2,"); Serial.println("berhenti wkt"); Serial.print("jeda wkt:"); Serial.print(diff5); Serial.println("ms"); if (diff5> jeda_waktu) { state =SALDO_50010001000; LcdInitialise(); LcdClear(); LcdString(" diterima Saldo=Rp2500 Pilih Produk Koin Rp1000"); Serial.println("koin=Rp1000, Saldo:Rp2500"); nada(2, 4200, 799); } else if (diff5 =33) { status =KOIN_MASUK6; waktu6 =mili(); nada (2, 4200, 40); Serial.println("snsr1,"); Serial.println("mulai minggu"); } } else if ((status ==KOIN_MASUK6) &&((digitalRead(13)))) { if ((digitalRead(12)) &&(status ==KOIN_MASUK6)) { unsigned long diff6 =(millis() - time6); Serial.println("snsr2,"); Serial.println("berhenti wkt"); Serial.print("jeda wkt:"); Serial.print(diff6); Serial.println("ms"); if (diff6> jeda_waktu) { state =SALDO_10001000; LcdInitialise(); LcdClear(); LcdString(" diterima Saldo=Rp2000 Pilih Produk Koin Rp1000"); Serial.println("koin=Rp1000, Saldo:Rp2000"); nada(2, 4200, 799); } else if (diff6 =33) { status =KOIN_MASUK7; waktu7 =mili(); nada (2, 4200, 40); Serial.println("snsr1,"); Serial.println("mulai minggu"); } } else if ((status ==KOIN_MASUK7) &&((digitalRead(13)))) { if ((digitalRead(12)) &&(status ==KOIN_MASUK7)) { unsigned long diff7 =(millis() - time7); Serial.println("snsr2,"); Serial.println("berhenti wkt"); Serial.print("jeda wkt:"); Serial.print(diff7); Serial.println("ms"); if (diff7> jeda_waktu) { state =SALDO_10005001000; LcdInitialise(); LcdClear(); LcdString(" diterima Saldo=Rp2500 Pilih Produk Koin Rp1000"); Serial.println("koin=Rp1000, Saldo:Rp2500"); nada(2, 4200, 799); } else if (diff7 Siap"); } }}
Proses manufaktur
Dalam tutorial ini kita akan belajar cara membuat mesin pemotong busa Arduino CNC. Ini adalah mesin CNC DIY khas karena terbuat dari bahan yang sederhana dan murah, beberapa bagian yang dicetak 3D dan memiliki Arduino sebagai pengontrol. Anda dapat menonton video berikut atau membaca tutorial tertu
Dalam tutorial ini saya akan menunjukkan kepada Anda bagaimana saya membuat mesin bending kawat 3D berbasis Arduino. Ini sebenarnya adalah sistem mekatronik yang khas karena melibatkan teknik mesin, listrik, dan komputer. Oleh karena itu, saya yakin banyak mahasiswa teknik atau siapa pun yang baru m
Dalam proyek ini kita akan belajar cara membuat mesin penjual otomatis DIY berbasis Arduino. Saya akan menunjukkan kepada Anda seluruh proses pembuatannya, mulai dari memotong dan merakit papan MDF, hingga menghubungkan semua komponen elektronik menjadi satu dan menulis kode Arduino. Anda dapat men
Mesin pengerjaan logam atau peralatan mesin terus mengalami jumlah pengunjung tertinggi di antara kategori produk lainnya di Exapro. Mesin perkakas adalah mesin yang digunakan untuk membentuk logam dengan metode penggilingan, penggilingan, pemotongan, pengeboran dll. Meskipun mesin perkakas mesin be