Bagi rekan-rekan yang tidak memiliki software simulator seperti Proteus, maka saya rekomendasikan untuk menggunakan Wokwi. Wokwi cukup menarik, gratis dan mudah digunakan, bahkan bisa digunakan untuk mensimulasikan Outseal Nano. Ok, seperti apakah cara penggunaannya, ikuti tulisan di bawah ini (oya, bagi rekan-rekan yang belum mengetahui apa itu Outseal, silahkan mengunjungi situs resminya di sini: www.outseal.com).
Agar mempermudah pemahaman, maka saya akan membahas cara penggunaan Wokwi untuk simulasi Outseal Nano, mulai dari topik yang sederhana hingga kompleks.
Berikut ini (rencana) beberapa topiknya:
- Membaca Tombol dan menyalakan LED
- Membaca Potensio dan memutar Motor Servo
- Komunikasi Modbus: Coil dan Input Diskrit
- Komunikasi Modbus: Input Register dan Holding Register
- Menampilkan data di 7-segmen 1 digit
- Menampilkan data di 7-segmen 4 digit
- Pewaktuan hitung naik (Count-up Timer)
- Pewaktuan hitung mundur (Countdown timer)
- Menggunakan 7-segmen 4-digit Common Cathode
- Menggunakan 7-segmen 8-digit untuk menampilkan 4 data
- Menampilkan data Modbus di 7-segmen 8-digit Common Cathode
- Simulasi Pengisian Botol dengan LabVIEW
- Kontrol & Monitor IO Outseal Nano dari Halaman Web
- Kontrol & Monitor IO Outseal Nano dari jarak jauh via Internet
- Kontrol & Monitor IO Outseal Nano dengan IoT MQTT Panel
- Simulasi Lift 5 lantai dengan EasyBuilder Pro, Outseal Nano & Wokwi
- Simulasi Lift 5 lantai dengan memori internal
- Simulasi Lift 5 lantai terpantau Outseal Nano
- Simulasi Lift 5 lantai terkontrol Outseal Nano
- Simulasi Proses Sorting dengan EasyBuilder Pro, Outseal Nano & Wokwi
- Simulasi Proses Distribusi dengan EasyBuilder Pro, Outseal Nano & Wokwi
- Simulasi Pengisian Botol dengan EasyBuilder Pro, Outseal Nano & Wokwi
1. Membaca tombol dan Menyalakan LED
18. Agar lebih jelas, berikut ini video pembuatan bagian 1 ini:
=========================================================================
2. Membaca Potensio dan Memutar Motor Servo
3. Komunikasi Modbus: Coil dan Input Diskrit
- Tambahkan kode ini di bagian "parts":
{"type": "wokwi-serial-port","id": "serial","attrs": {"baud": "9600"}},
- Tambahkan kode ini di bagian "connections":
["nano:0","serial:TX","",[]],["nano:1","serial:RX","",[]],
13. Setelah kode untuk komunikasi serial di atas selesai ditambahkan, langkah berikutnya, klik kanan di halaman Sketch, pilih Command Palette, pilih Upload Firmware and Start Simulation, arahkan ke lokasi file Hasil.hex, yang berada di C:\Users\***\AppData\Local\Temp\Outseal\Hasil.hex. Kemudian pastikan ketika simulasi Wokwi berjalan, muncul kotak dialog pemilihan Port COM seperti ditunjukkan pada Gambar 3.8 berikut ini.
Catatan: Apabila kotak pemilihan Port COM tersebut tidak muncul, tekan tombol Stop, kemudian ulangi kembali Upload Firmware and Start Simulation (Seandainya kotak dialog masih tidak muncul, silahkan menggunakan browser Google Chrome).
4. Komunikasi Modbus: Input Register dan Holding Register
- Di bagian "parts":
{"type": "wokwi-serial-port","id": "serial","attrs": {"baud": "9600"}},
- Di bagian "connections":
["nano:0","serial:TX","",[]],["nano:1","serial:RX","",[]],
10. Berikutnya, klik kanan di halaman Sketch, pilih Command Palette, pilih Upload Firmware and Start Simulation, arahkan ke lokasi file Hasil.hex, yang berada di direktori C:\Users\***\AppData\Local\Temp\Outseal\Hasil.hex, dengan *** adalah nama user.
11. Secara otomatis simulasi berjalan setelah Upload Firmware and Start Simulation. Pastikan ketika simulasi Wokwi berjalan, muncul kotak dialog pemilihan Port COM seperti ditunjukkan pada Gambar 4.8 berikut ini.
Catatan: Apabila kotak pemilihan Port COM tersebut tidak muncul, tekan tombol Stop, kemudian ulangi kembali Upload Firmware and Start Simulation (Seandainya kotak dialog masih tidak muncul, silahkan menggunakan browser Google Chrome).
=========================================================================
5. Menampilkan data di 7-segmen 1 digit

- Rung (anak tangga) 0 - 1 untuk membaca penekanan tombol dan memasukkan nilainya ke dalam Counter Up C.2. Ketika nilainya sudah mencapai 11 akan di-reset kembali ke 0. (Pertanyaan: mengapa angka terakhir C.2 adalah 11, bukan 10? Rekan-rekan akan dapat menjawab pertanyaan ini setelah mencoba hasil simulasinya. Silahkan mengganti angka 11 dengan 10, kemudian lihat hasil simulasinya, lalu bandingkan apabila angkanya dibuat 11)
- Rung 2 - 11 untuk mengubah input angka 0 sampai 9 menjadi kode biner untuk ketujuh LED pada 7-segmen sehingga nyalanya membentuk angka yang sesuai.
- Rung 12 - 14 untuk menghasilkan pulsa Clock untuk kaki SHCP di IC 74595.
- Rung 15 - 23 untuk menghasilkan data serial dari nilai Counter C2 untuk kaki DS di IC 74595.
- Rung 24 untuk menghasilkan pulsa Latch untuk kaki STCP di IC74595, sekaligus me-reset pulsa Clock (Counter Up C.1).
6. Menampilkan data di 7-segmen 4 digit

- Rung (anak tangga) 0 - 1 untuk membaca nilai ADC Potensio di kaki A.1 Outseal Nano, dan hasilnya disimpan di memori I.11.
- Rung 2 - 7 untuk memisahkan angka yang disimpan di I.11 menjadi angka ribuan, angka ratusan, angka puluhan dan angka satuan. Angka ribuan disimpan di I.12, angka ratusan disimpan di I.15, angka puluhan disimpan di I.18 dan angka satuan disimpan di I.20.
- Rung 8 - 13 untuk menampilkan angka ribuan di digit pertama, angka ratusan di digit kedua, angka puluhan di digit ketiga dan angka satuan di digit keempat.
- Rung 14 - 23 untuk mengubah input angka 0 sampai 9 menjadi kode biner untuk ketujuh LED pada 7-segmen sehingga nyalanya membentuk angka yang sesuai.
- Rung 24 - 25 untuk menghasilkan pulsa Clock untuk kaki SHCP di IC 74595.
- Rung 26 - 40 untuk menghasilkan data serial dari nilai Counter C2 untuk kaki DS1 di IC 74595 yang pertama dan kaki DS2 di IC 74595 yang kedua.
- Rung 41 untuk menghasilkan pulsa Latch untuk kaki STCP di IC74595.
- Rung 42 untuk mereset Counter Up C.1.
6.1 Pewaktuan Hitung Naik (Count-up Timer)
- Rung (anak tangga) 0 untuk membuat Count-up Timer dapat dijalankan dan dimatikan dengan 1 tombol. Ketika tombol ditekan yang pertama kali, Count-up Timer berjalan, ketika tombol ditekan berikutnya, Count-Up Timer berhenti, demikian seterusnya.
- Rung 1-2 untuk membuat pulsa per detik, dan menghidup-matikan Colon (titik dua) yang ada di bagian tengah tampilan 7-segmen 4-digit.
- Rung 3-8 untuk mengatur Counter menit (C4) dan detik (C3). Di sini nilai Preset Counter dibuat 61, bukan 60, karena ketika Counter direset, nilainya bukan menjadi 0 tetapi langsung 1. Maka agar bisa membuat nilai 0 muncul, nilai Preset dibuat 61. Ketika nilai Counter mencapai 60, nilai tersebut dibuat 0, dan nilai menit bertambah 1.
- Rung 9 - 14 untuk membuat nilai menit disimpan di I.15, dan nilai detik disimpan di I.11. Angka puluhan pada menit disimpan di I.16, angka satuan pada menit disimpan di I.18. Angka puluhan pada detik disimpan di I.12 dan angka satuan pada detik disimpan di I.14.
- Rung 15 - 20 untuk menampilkan angka puluhan menit di digit pertama, angka satuan menit di digit kedua, angka puluhan detik di digit ketiga dan angka satuan detik di digit keempat.
- Rung 21 - 30 untuk mengubah input angka 0 sampai 9 menjadi kode biner untuk ketujuh LED pada 7-segmen sehingga nyalanya membentuk angka yang sesuai.
- Rung 31 - 32 untuk menghasilkan pulsa Clock untuk kaki SHCP di IC 74595.
- Rung 33 - 47 untuk menghasilkan data serial dari nilai Counter C2 untuk kaki DS1 di IC 74595 yang pertama dan kaki DS2 di IC 74595 yang kedua.
- Rung 48 untuk menghasilkan pulsa Latch untuk kaki STCP di IC74595.
- Rung 49 untuk mereset Counter Up C.1.
6.2 Pewaktuan Hitung Mundur (Countdown Timer)
- Rung (anak tangga) 0-1 untuk membuat Countdown Timer dapat dijalankan dengan menekan tombol, dengan nilai batas (setpoin) menit dapat diisikan di memori I.20. LED di R.2 menyala ketika Timer sedang berjalan, dan LED tersebut padam ketika Timer berhenti. Counter C4 harus di-reset agar Countdown Timer dapat dijalankan lagi ketika tombol ditekan.
- Rung 2-3 untuk membuat pulsa per detik, dan menghidup-matikan Colon (titik dua) yang ada di bagian tengah tampilan 7-segmen 4-digit.
- Rung 4-10 untuk mengatur Counter menit (C4) dan detik (C3). Di sini nilai Preset Counter dibuat 61, bukan 60, karena ketika Counter direset, nilainya bukan menjadi 0 tetapi langsung 1. Maka agar bisa membuat nilai 0 muncul, nilai Preset dibuat 61. Ketika nilai Counter mencapai 60, nilai tersebut dibuat 0. Karena diinginkan penghitungan mundur, maka penghitungan dilakukan dengan mengurangkan angka 60 dengan nilai Counter, sehingga nilainya akan berjalan mulai dari 0, kemudian 59, 58, 57 dan seterusnya. Ketika nilai detik 0 berubah menjadi 59, maka nilai menit akan dikurangi 1.
- Rung 11 - 14 untuk membuat nilai menit disimpan di I.15, dan nilai detik disimpan di I.11. Angka puluhan pada menit disimpan di I.16, angka satuan pada menit disimpan di I.18. Angka puluhan pada detik disimpan di I.12 dan angka satuan pada detik disimpan di I.14.
- Rung 15 - 20 untuk menampilkan angka puluhan menit di digit pertama, angka satuan menit di digit kedua, angka puluhan detik di digit ketiga dan angka satuan detik di digit keempat.
- Rung 21 - 30 untuk mengubah input angka 0 sampai 9 menjadi kode biner untuk ketujuh LED pada 7-segmen sehingga nyalanya membentuk angka yang sesuai.
- Rung 31 - 32 untuk menghasilkan pulsa Clock untuk kaki SHCP di IC 74595.
- Rung 33 - 47 untuk menghasilkan data serial untuk data 7-segmen ke kaki DS di IC 74595 yang bawah, dan untuk data 4-digit ke kaki DS di IC 74595 yang atas.
- Rung 48 untuk menghasilkan pulsa Latch untuk kaki STCP di IC74595.
- Rung 49 untuk mereset Counter Up C.1 yang digunakan untuk menghasilkan data segmen.
6.3 Menggunakan 7-segmen 4-digit Common Cathode
- Ladder Diagram Gambar 6.11 di atas hanya menampilkan instruksi yang berbeda dengan Ladder Diagram Gambar 6.8.
- Ada 3 hal yang berbeda, yaitu pertama di Rung 3, di kontak P.1.ST menggunakan NC karena untuk menyalakan Colon (tanda titik dua di tengah 7-segmen 4-digit), perlu logika 1, di mana diinginkan ketika angka yang baru muncul, Colon juga muncul.
- Hal yang kedua adalah data segmen a-b-c-d-e-f-g-dp yang diisikan pada Rung 21 - 30, diisi dengan data sesuai Tabel 3 untuk Common Cathode.
- Hal yang ketiga adalah data untuk DIG1, DIG2, DIG3 dan DIG4, yang dikontrol dari R.8 melalui IC74595. Karena tipe Cathode, maka R.8 harus dibuat 0 agar keempat digit tersebut dapat dinyalakan.
6.4 Menggunakan 7-Segmen 8-digit untuk menampilkan 4 data
- Rung 0 - 3 untuk membuat keempat data secara berturut-turut diletakkan di I.11, I.15, I.19 dan I.23.
- Rung 4 - 11 untuk membuat pemisahan antara angka puluhan dengan angka satuan pada keempat data. Angka puluhan dan angka satuan pada data pertama disimpan di I.12 dan di I.14. Angka puluhan dan angka satuan pada data kedua disimpan di I.16 dan di I.18. Angka puluhan dan angka satuan pada data ketiga disimpan di I.20 dan di I.22. Angka puluhan dan angka satuan pada data keempat disimpan di I.24 dan di I.26.
- Rung 12 - 21 untuk menempatkan angka puluhan dan angka satuan, dari data pertama hingga data keempat, pada kedelapan digit secara berurutan.
- Rung 22 - 31 untuk mengubah input angka 0 sampai 9 menjadi kode biner untuk ketujuh LED pada 7-segmen sehingga nyalanya membentuk angka yang sesuai.
- Rung 32 - 33 untuk menghasilkan pulsa Clock untuk kaki SHCP di kedua IC 74595.
- Rung 34 - 43 untuk menghasilkan data serial untuk data 7-segmen yang diberikan ke kaki DS (R.4) di IC 74595 yang bawah.
- Rung 44 - 52 untuk menghasilkan data serial untuk data 8-digit yang diberikan ke kaki DS (R.8) di IC 74595 yang atas.
- Rung 53 untuk menghasilkan pulsa Latch untuk kaki STCP di kedua IC 74595.
- Rung 54 untuk mereset Counter Up C.1 yang digunakan untuk membuat data 7-segmen.
6.5 Menampilkan data Modbus di 7-Segmen 8-digit Common Cathode
- Ladder Diagram untuk menampilkan 4 data pada 7-segmen 8-digit Common Cathode sama seperti Ladder Diagram Gambar 6.14, hanya berbeda pada data untuk 7-segmen dan 8-digitnya. Gambar 6.17 di atas menunjukkan hal yang berbeda tersebut, yaitu di rung 22 - 31 dan rung 52.
- Rung 22 - 31 mengisikan data untuk ketujuh segmen (a-b-c-d-e-f-g) sesuai Tabel 3 untuk Common Cathode.
- Rung 52 mengatur R.8 untuk data 8-digit. Karena tipe Cathode, maka R.8 harus dibuat 0 agar kedelapan digit tersebut dapat dinyalakan.
- Di bagian akhir "parts":
,{"type": "wokwi-serial-port","id": "serial","attrs": {"baud": "9600"}}
- Di bagian "connections":
["nano:0","serial:TX","",[]],["nano:1","serial:RX","",[]],
Catatan: Apabila kotak pemilihan Port COM tersebut tidak muncul, tekan tombol Stop, kemudian ulangi kembali Upload Firmware and Start Simulation (Seandainya kotak dialog masih tidak muncul, silahkan menggunakan browser Google Chrome).
7. Simulasi Pengisian Botol dengan LabVIEW
- Ketiga tombol (S1, S2, S3) dan Saklar Manual/Auto dapat dibaca dan disimpan datanya di I.1, di mana secara berturut-turut memiliki nilai mulai dari 1 - 5 (S1 = 1, S2 = 2, S3 = 3, S4 = Man = 4, S5 = Auto = 5).
- Indikator Conveyor1 ditampilkan dalam bentuk Relay R.1, yang diaktifkan dengan Coil di B.7.
- Indikator Valve atau katup pengisian ditampilkan dalam bentuk Relay R.2, yang diaktifkan dengan Coil di B.8.
- Indikator Conveyor2 ditampilkan dalam bentuk Relay R.3, yang diaktifkan dengan Coil di B.9.
- Indikator pemutar piringan ditampilkan dalam bentuk simulasi Motor Stepper, yang dikontrol oleh B.10 dan SPWM melalui R.4.
- Jumlah botol yang diisi ditampilkan di 7-segmen 4 digit, melalui R5 - R8, dengan bantuan 2 buah IC Shift Register. Data untuk tampilan 7-segmen ini dapat dimasukkan melalui I.11 (lihat Ladder Diagram untuk menampilkan data potensio di 7-segmen 4 digit, di mana hasil pembacaan potensio disimpan di I.11).
- Rung (anak tangga) 0 - 4 untuk menyediakan memori modbus I.1 sebagai alternatif input untuk S1, S2, S3 dan Saklar Man/Auto. Apabila I.1 diisi 1, ini berarti S1 ditekan, apabila diisi 3, ini berarti S3 ditekan, apabila diisi 5, ini berarti Saklar di posisi Auto.
- Rung 5 untuk mengaktifkan indikator R.1 (Conveyor1) dengan memori modbus B.7.
- Rung 6 untuk mengaktifkan indikator R.2 (Valve) dengan memori modbus B.8.
- Rung 7 untuk mengaktifkan indikator R.3 (Conveyor2) dengan memori modbus B.9.
- Rung 8 - 9 untuk memberikan pulsa ke indikator R.4 (membuat Stepper berputar) dengan memori modbus B.10.
- Rung 10 - 50 untuk menampilkan data jumlah botol ke 7-segmen 4 digit.
Catatan: Apabila kotak pemilihan Port COM tersebut tidak muncul, tekan tombol Stop, kemudian ulangi kembali Upload Firmware and Start Simulation (Seandainya kotak dialog masih tidak muncul, silahkan menggunakan browser Google Chrome).
8. Kontrol & Monitor IO Outseal Nano dari Halaman Web
- Input digital berupa Dip Switch, dengan variabel S.1 - S.8 berada di memori Input Diskrit di alamat (indeks) 0 - 7.
- Rung 0 - 7 membaca kondisi S.1 - S.8 dan menampilkannya di memori B.1 - B.8.
- Output digital berupa 2 buah Relay dan sebuah Motor Stepper, dengan variabel kontrol B.15 - B.17 berada di memori Coil di alamat 142 - 144.
- Rung 8 - 11 membaca kondisi B.15 - B.17 untuk mengontrol 2 buah Relay di R.1 - R.2, dan Motor Stepper di R.3.
- Input analog berupa Potensio Putar dan Potensio Geser dengan variabel A.1 - A.2 berada di memori Input Register di alamat 0 - 1.
- Rung 12 mengaktifkan input analog, termasuk A.1 dan A.2.
- Output analog berupa kontrol Motor Servo dan data 7-segmen 4 digit, dengan variabel I.1 - I.2 berada di memori Holding Register di alamat 0 - 1.
- Rung 13 - 14 untuk mengatur sudut servo dengan data input Holding Register indeks 0 (I.1), dengan nilai antara 0 - 180. Nilai ini diubah menjadi 880 - 975 untuk nilai duty cycle pwm servo di alamat I.3.
- Rung 15 untuk mengisi I.11 dengan isi memori Holding Register indeks 1 (I.2).
- Rung 16 - 56 untuk menampilkan data I.11 di 7-segmen 4-digit.
- Jendela pertama adalah Coil dengan alamat 0 - 2, untuk menampilkan data 2 buah Relay (R.1, R.2) dan Motor Stepper (R.3).
- Jendela kedua adalah Input Diskrit dengan alamat 0 - 7, untuk menampilkan data Dip Switch 8 jalur (S.1 - S.8).
- Jendela ketiga adalah Input Register, dengan alamat 0 - 1, untuk menampilkan data Potensio putar (A.1) dan Potensio geser (A.2).
- Jendela keempat adalah Holding Register, dengan alamat 0 - 1, untuk mengatur data sudut Motor Servo (I.1) dan menampilkan data untuk 7-segmen 4 digit (I.2).
- Jendela kelima adalah Coil, dengan alamat 142 - 144 untuk mengatur data R.1, R.2 dan R.3.
npm install -g --unsafe-perm node-red
9. Kontrol & Monitor IO Outseal Nano jarak jauh via Internet
10. Kontrol & Monitor IO Outseal Nano dengan IoT MQTT Panel
- 3 LED Indicator dengan data Coil: R.1 - R.3, dengan topik MQTT: "outseal/mon/coil"
- 8 LED Indicator dengan data Input Diskrit S.1 - S.8, dengan topik MQTT: "outseal/mon/idis"
- 2 Gauge dengan data Input Register A.1 - A.2, dengan topik MQTT: "outseal/mon/ireg"
- 1 Gauge dengan data Holding Register I.1, dengan topik MQTT: "outseal/mon/hreg"
- 1 Text Log dengan data Holding Register I.2, dengan topik MQTT: "outseal/mon/hreg"
- 3 Switch dengan data Coil: B.15 - B.17, dengan topik MQTT: "outseal/kon/coil"
- 1 Slider dengan data Holding Register I.1, dengan topik MQTT: "outseal/kon/hreg"
- 1 Text Input dengan data Holding Register I.2, dengan topik MQTT: "outseal/kon/hreg"



23. Berikutnya, jalankan rangkaian Outseal Nano di link Wokwi ini:
25. Agar lebih jelas, berikut ini video pembuatan kontrol dan monitor Outseal Nano menggunakan IoT MQTT Panel.
No comments:
Post a Comment