Wisata Kuliner Mikrokontroler

Kemampuan suatu platform tidak pernah bisa kita ukur bila kita tidak mencobanya. Sama halnya dengan mikrokontroler. Kelahiran Arduino adalah sebuah terobosan, namun bukan berarti mikrokontroler adalah arduino. Kita perlu mencicipi rasa dari platform lain, mencobanya, mengukurnya, sehingga bisa mendorong lahirnya ide dan kreasi baru.

Satu yang menarik, di Padepokan NEXT SYSTEM Bandung ada satu program pembelajaran baru, yang diberi nama Wisata Kuliner Mikrokontroler. Menggunakan kata kuliner, supaya tidak asing, dan menempatkan mikrokontroler pada posisi yang friendly, bisa dicicipi. Yuk, kita lihat beberapa diantaranya.

Infineon XMC4500

 

Varian mikrokontroler yang satu ini, produk dari Infineon, Jerman, seri XMC4500. Cukup gahar, karena mampu dipacu sampai 120 MHz dan memiliki inti Cortex-M4. Bermain mikrokontroler yang satu ini cukup menarik, walaupun di market Indo, harus mencarinya dengan sabar.

Pertama kali ngoprek mikrokontroler yang satu ini, ketika diundang oleh satu kampus untuk menjadi nara sumber, sementara topik sudah mereka tentukan, yakni bicara soal Mikrokontroler Infineon. Seru, karena dalam waktu yang cukup singkat, harus mencari barangnya, belajar programming secara cepat, dan menyajikannya di ruang seminar. Sangat seru, kejar tayang seperti dikejar anjing galak ?

Harus diakui, chip yang satu ini memang bisa diajak bekerja keras. Di satu industri, ketika arduino sudah “babak belur” dan “pendarahan” hebat, Infineon XMC4500 bisa mengambil alih tugas dengan sangat cantik. Harus diakui, memang beda kelas.

Yuk, kulineran mikrokontroler, arduino saja tidak cukup.

Microchip PIC16F18446

 

Terobosan yg dilakukan tim arduino, harus diakui, membuat perubahan mindset. Kita sebagai developer, tentu tidak boleh terkunci pada satu varian produk. Board Arduino sendiri menggunakan chip dari Atmel AVR, namun tidak semua chip keluarga Atmel AVR bisa diprogram dgn cara Arduino.

Kedua, pabrikan mikrokontroler bukan cuma Atmel. Ada puluhan pabrikan, bahkan lebih, yang menghasilkan chip mikrokontroler dgn beragam kapasitas, fasilitas dan kecepatan. Untuk itu, perlu masuk ke perairan yg lebih dalam, mencicipi beragam jenis mikrokontroler yg ada di market.

Saya coba post, satu breakout dari Microchip, menggunakan seri PIC16F18446. Bisa minta sample ke vendor, for free. Cuma pengirimannya lumayan lama. Pemrogramannya sendiri menggunakan C/C++, cukup sederhana.

Yuk, kulineran mikrokontroler, arduino saja tidak cukup.

Raspberry Pi, 13.01.2020 – 15.01.2020

Kali ini, sobat dan sahabat dari Situ Gunung Sukabumi dan Glamping Lakeside Rancabali Ciwidey, mampir dan bergabung dalam pertapaan bertajuk Raspberry Pi: Sistem Otomasi dan Informasi, di Padepokan NEXT SYSTEM Bandung. Dalam pertapaan ini, peserta mempelajari esensi dari hardware Raspberry Pi, manajemen database, jaringan dan komunikasi data paket, otomasi, serta membangun HMI – Human Machine Interface.

#raspberrypi #situgunung #glampinglakeside #nextsystem

Artificial Intelligence, Machine Learning dan Deep Learning

Setelah hampir 3 tahun memberikan pelatihan terkait Machine Learning dan Deep Learning, serta membimbing skripsi mahasiswa dengan topik terkait; saya mencoba mengutip sebuah penjelasan singkat yang ada di NVIDIA Blog. Penjelasan lebih komprehensif tentunya akan lebih mudah dan menarik, karena disertai contoh secara live, biasanya saya sampaikan di ruang pelatihan atau seminar atau kuliah umum

Artificial Intelligence (AI) atau Kecerdasan Buatan adalah masa depan. Kecerdasan buatan adalah fiksi ilmiah. Kecerdasan buatan sudah menjadi bagian dari kehidupan kita sehari-hari. Semua pernyataan itu benar, hanya tergantung pada rasa AI apa yang kita maksud.

Sebagai contoh, ketika program Google DeepMind AlphaGo mengalahkan Master Korea Selatan Lee Se-dol di game board Go awal tahun 2016, istilah AI, machine learning dan deep learning, digunakan di media untuk menggambarkan bagaimana DeepMind menang. Dan ketiganya adalah bagian dari alasan mengapa AlphaGo bisa mengalahkan Lee Se-Dol. Namun, ketiganya tidak sama.

Cara termudah untuk membayangkan hubungan mereka adalah, dengan mem-visualisasikan mereka sebagai lingkaran konsentris dengan AI – ide yang datang pertama – terbesar, kemudian machine learning – yang berkembang kemudian, dan akhirnya deep learning – yang mendorong ledakan AI hari ini – tepat di dalam keduanya .

 

Berkat Deep Learning, AI Memiliki Masa Depan yang Cerah

Deep Learning telah memungkinkan banyak aplikasi machine learning praktis, dan dengan perluasan bidang AI secara keseluruhan. Deep Learning memecah tugas dengan cara yang membuat semua jenis alat berat tampak mungkin, bahkan mungkin. Mobil tanpa pengemudi, perawatan kesehatan preventif yang lebih baik, bahkan rekomendasi film yang lebih baik, ada di sini hari ini atau di cloud. AI adalah saat ini dan masa depan. Dengan bantuan Deep learning, AI bahkan dapat mencapai kondisi fiksi ilmiah yang telah lama kita bayangkan.

Bersambung …

Di Padepokan NEXT SYSTEM Bandung, ada kelas pelatihan terkait Computer Vision, Machine Learning dan Deep Learning, yang diselenggarakan secara intensif, dan terbuka untuk umum.

NodeMCU ESP8266 Pinout

ESP8266 bekerja pada tegangan 3.3V, jadi seluruh I/O bekerja pada tegangan yang sama. Seluruh pin tidak 5V tolerant, memberikan tegangan lebih dari 3.6V pada pin akan membuat chip “bermasalah”. Arus maksimum yang dapat ditarik dari setiap pin GPIO adalah 12 mA. On board LED terhubung dengan GPIO2 dan GPIO16.

ESP8266 memiliki 17 pin GPIO (0-16) namun hanya 11 pin yang dapat digunakan, karena 6 pin (GPIO6 – GPIO11) terhubung dengan chip flash memory. Jika mencoba menggunakan satu dari pin-pin ini, program akan crash.

Pin GPIO1 (TX0) dan GPIO3 (RX0) digunakan untuk komunikasi secara serial dengan komputer melalui USB.

Modul ESP memeriksa pin GPIO0, GPIO2 dan GPIO15 setiap kali boot, berdasarkan mode-mode berikut:

Silahkan mempelajari catatan terkait dengan boot messsage dan mode boot yang terdapat pada link berikut.

Catatan: kita tidak perlu menambahkan pull-up eksternal pada GPIO2 karena pull-up internal di-enable saat boot.

  • GPIO15 selalu pulled low, jadi kita tidak dapat menggunakan internal pull-up resistor. Hal ini harus diperhatikan ketika menggunakan GPIO15 sebagai input untuk membaca sebuah saklar atau menghubungkannya ke divais dengan output open-collector / open-drain seperti I2C.
  • GPIO0 pulled high selama operasi normal, jadi tidak dapat menggunakannnya sebagai input Hi-Z.
  • GPIO2 tidak dapat low pada saat boot, jadi tidak dapat menghubungkannya dengan switch (active high).

ESP8266 dapat mengalami gagal boot jika beberapa pin pulled LOW atau HIGH:

  • GPIO16 (D0): pin HIGH saat BOOT dan jatuh ke ~1 Volt.
  • GPIO0 (D3): boot failure jika pulled LOW
  • GPIO2 (D4): osilasi dan kemudian HIGH setelah ~ 100 ms, boot failure jika pulled LOW
  • GPIO15 (D8): boot failure jika pulled HIGH
  • GPIO3 (RX): LOW selama ~ 50 ms kemudian pin HIGH
  • GPIO1 (TX): LOW selama ~ 50 ms, kemudian HIGH, boot failure jika pulled LOW
  • GPIO10 (SD3): pin HIGH saat BOOT
  • GPIO9 (SD2): pin HIGH saat BOOT

Pengertian pin HIGH saat BOOT di atas adalah, pin mengeluarkan sinyal 3.3V ketika ESP8266 boot. Hal ini akan menjadi masalah ketika ada sejumlah periferal active HIGH yang terhubung dengan GPIO-GPIO tersebut. GPIO lainnya, kecuali GPIO5 dan GPIO4, memiliki output LOW saat boot, yang akan menjadi masalah jika terhubung dengan periferal active LOW. Anda dapat membaca artikel ini yang meng-investigasi kondisi dan perilaku setiap GPIO pada saat boot.

GPIO4 (D2) dan GPIO5 (D1) adalah GPIO paling aman jika kita ingin mengoperasikan relay. Kedua pin tersebut sering digunakan untuk komunikasi I2C (Pin SCL dan SDA).  Pin lainnya, GPIO14 (D5), GPIO12 (D6) dan GPIO13 (D7). Ketiganya juga aman untuk operasi input dan output. Ketiganya terhubung ke jalur SPI (Pin SCLK, MISO dan MOSI). Ketika menggunakan periferal SPI, pin CS dapat menggunakan GPIO15 (D8), namun perlu hati-hati karena proses boot akan gagal jika pin ini pulled HIGH.

Jadi, dengan memahami karakter dari pin GPIO yang ada, maka kita dapat merangkai dengan aman, terhindar dari hal-hal yang tidak diharapkan. Untuk opsi yang lebih leluasa, bisa mempertimbangkan ESP32, karena memiliki GPIO yang lebih banyak.

Pinout NodeMCU memiliki label D0 – D8, RX serta TX. Namun ketika memrogramnya menggunakan Arduino IDE, label yang tertera tidak sesuai dengan nomor GPIO.

NodeMCU memiliki pemetaan pin yang sedikit aneh. Nomor pin yang tertera pada board tidak sesuai dengan nomor GPIO ESP8266. Berikut adalah konstanta yang kami definisikan untuk memudahkan penggunaan:

#define PIN_WIRE_SDA (4)
#define PIN_WIRE_SCL (5)

static const uint8_t SDA = PIN_WIRE_SDA;
static const uint8_t SCL = PIN_WIRE_SCL;

static const uint8_t LED_BUILTIN = 16;
static const uint8_t BUILTIN_LED = 16;

static const uint8_t D0 = 16;
static const uint8_t D1 = 5;
static const uint8_t D2 = 4;
static const uint8_t D3 = 0;
static const uint8_t D4 = 2;
static const uint8_t D5 = 14;
static const uint8_t D6 = 12;
static const uint8_t D7 = 13;
static const uint8_t D8 = 15;
static const uint8_t D9 = 3;
static const uint8_t D10 = 1;

Diagram rangkaian dari NodeMCU memberikan informasi yang lebih jelas terkait hubungan antara NodeMCU dengan GPIO ESP8266. Jangan pernah menggunakan GPIO0 (D3) sebagai pin input, pin ini adalah flash button. Jika memiliki kondisi LOW pada saat power ON, akan menempatkan ESP dalam programming mode.

Pin VU adalah pin USB 5V, hanya bekerja ketika NodeMCU dicatu melalui port micro USB. Pin VIN adalah pin untuk mencatu NodeMCU menggunakan catu daya eksternal (7V – 12V).

Untuk meng-enable PWM pada pin tertentu, gunakan analogWrite(pin, value); di mana pin adalah digital pin, dan value adalah angka antara 0 – 1023. Untuk mengubah bit depth dari output PWM, gunakan analogWriteRange(newRange); Frekuensi PWM dapat diubah menggunakan analogWriteFreq(newFreq); newFreq antara 100 – 1000 Hz.

Untuk input analog, hanya terdapat satu kanal pada pin A0, 0 = 0V, 1023 = 1V). ESP dapat menggunakan ADC-nya untuk mengukur tegangan catu. Untuk melakukan hal ini, sertakan ADC_MODE(ADC_VCC); pada bagian atas dari sketch, dan gunakan ESP.getVcc(); untuk mendapatkannya. Jika menggunakannya untuk membaca tegangan catu, pin analog tidak dapat dihubungkan dengan divais.

Untuk menggunakan UART0 (TX=GPIO1, RX=GPIO3) dapat menggunakan obyek Serial seperti pada Arduino: Serial.begin(baud); Untuk menggunakan pin alternatif (TX=GPIO15, RX=GPIO13) gunakan Serial.swap(); setelah Serial.begin(); Untuk menggunakan UART1 (TX=GPIO2) gunakan obyek Serial1.

Satu yang harus diingat adalah ketika menulis program untuk ESP8266 dimana sketch harus berbagi sumber daya (waktu CPU dan memori) dengan WiFi dan TCP-stacks (software yang berjalan di background dan menangani seluruh fungsi WiFi dan mengelola TCP stack).  Jika kode yang kita susun eksekusinya terlalu lama dan “tidak memberi kesempatan” TCP stacks untuk melakukan tugasnya, maka akan terjadi crash dan kita dapat kehilangan data. Yang terbaik adalah menjaga waktu eksekusi dalam loop dalam beberapa ratus milidetik.

Setiap kali main loop diulang, sketch yang kita susun memberi kesempatan kepada WiFi dan TCP untuk menangani semua WiFi dan TCP request. Jika loop lebih lama dari ini (blocking loop), kita harus secara eksplisit memberi waktu CPU kepada WiFi / TCP stack, dengan menyertakan delay(0); atau yield(); Jika tidak, network communication tidak akan bekerja sebagaimana mestinya, dan jika lebih lama dari 3 detik, soft WDT (Watch Dog Timer) akan me-reset ESP. Jika soft WDT di-disable, setelah sedikit lebih dari 8 detik, hardware WDT akan me-reset chip.

pinMode(12, INPUT_PULLUP); 
while (digitalRead(12) == HIGH) 
  yield(); // Do (almost) nothing -- yield to allow ESP8266 background functions
Serial.println("Button is pressed!"); // Print button pressed message.

Dari pespektif mikrokontroler, 3 detik adalah waktu yang panjang (240 juta siklus clock). Jadi, selain kita melakukan proses yang ekstrim atau mengirim string yang sangat panjang melalui Serial, kita tidak akan melewati batas ini. Perlu diingat bahwa menambahkan yield(); dalam loop dapat memerlukan waktu lebih dari 100 ms, tergantung situasi saat itu.

void delay(unsigned long ms)
{
  uint32_t start = micros();
  while (ms > 0) {
    yield();
    while ( ms > 0 && (micros() - start) >= 1000) {
      ms--;
      start += 1000;
    }
  }
}

Raspberry Pi dan Internet of Things, 22.11.2019-23.11.2019

Selama 2 hari, 22 – 23 November 2019, di kampus Politeknik Elektronika Negeri Surabaya (PENS), tepatnya di Gedung Pascasarjana, memimpin pelatihan Raspberry Pi dan Internet of Things, membekali mahasiswa /i Program Pascasarjana dari Program Studi Teknik Elektro dan Program Studi Teknik Informatika dan Komputer.

Matur nuwun Dr. Eng. Agus Indra Gunawan, S.T., M.Sc. (Ketua Program Studi S2 Teknik Elektro) dan Dr. Bayu Sena Dewantara, S.ST., M.T. (Ketua Program Studi S2 Teknik Informatika dan Komputer), yang sudah hadir dan membuka acara ini.

Seminar Pendidikan di SMK Yadika, 12.10.2019

Hari ini, 12 Oktober 2019, diundang SMK Yadika Soreang, untuk sharing terkait dengan teknologi dan perlunya dunia mengantisipasi perkembangannya, dalam rangka persiapan SDM SMK Yadika untuk memasuki dunia robotik.

Dalam pertemuan yang dihadiri oleh stake holder sekolah, sesi paparan berlangsung hampir 2 jam, dilanjutkan dengan tanya jawab.

Hatur nuhun SMK Yadika Soreang!

Mikrokontroler AVR, 08.10.2019 – 11.10.2019

Dua peserta dari Salonok Ladang Mas dan Sumber Mahardhika Graha, keduanya perusahaan industri berkedudukan di Jakarta, di kelas Pemrograman dan Aplikasi Mikrokontroler AVR / Arduino, 8 – 11 Oktober 2019.

Mikrokontroler AVR Lanjutan, 24.09.2019 – 25.09.2019

Satu kelas khusus atas permintaan dari Bapak Suparjo, S.Pd, dari Rafflesia Robotic, Bengkulu, 24-25 September 2019. Semangat beliau yang menghantarnya dari Bengkulu dan tiba di Padepokan NEXT SYSTEM Bandung 🙂

Computer Vision, Machine Learning dan Deep Learning, 22.07.2019 – 26.07.2019

Sejumlah pejuang pendidikan dari Politeknik Negeri Jakarta, mengikuti pertapaan Computer Vision, Machine Learning dan Deep Learning di Padepokan NEXT SYSTEM Bandung. Pelatihan yang berlangsung dari 22 – 26 Juli 2019 ini, diikuti oleh Agus Wagyana, S.T., M.T., Nuralam, S.T., M.T., Endang Wijaya, S.T., M.Si., Dr.(cand) Danang Widjajanto, S.T., M.T., Murie Dwiyaniti, S.T., M.T., dan Riandhini, S.T., M.Sc.

Raspberry Pi: Computer Vision, Machine Learning dan Deep Learning, 15.07.2019 – 19.07.2019

Rekan-rekan dari P2TE Lembaga Ilmu Pengetahuan Indonesia: Eko Djoni Pristianto, S.T., M.T., Arief Nur Rahman S.Si dan Ahmad Nurmaulana Firli, S.T.bergabung di pertapaan Raspberry Pi: Computer Vision, Machine Learning dan Deep Learning, 15 – 19 Juli 2019, di Padepokan NEXT SYSTEM Bandung.