14. Contoh Prototipe

Ketentuan:
Buat sebuah prototipe simulasi sistem/alat medis yang memiliki fitur sebagai berikut:
  1. Melibatkan pembacaan sensor dan pengendalian aktuator pada prosesnya.
  2. Bisa menyimpan data (datalogger), sehingga bisa sewaktu-waktu dibuka data yang tersimpan tersebut.
  3. Bisa menampilkan proses dalam bentuk pilihan menu, dari satu tampilan ke tampilan berikutnya (gunakan LCD atau OLED).
  4. Bisa menampilkan data di alat yang lain (contoh HP/komputer), yang terhubung secara serial/bluetooth/Wi-Fi, gunakan COMPIM Proteus.

Alternatif Ide/Solusi:
Prototipe yang dipilih di sini adalah CT Scan.

Dari Chatgpt:
Computed Tomography (CT) scan adalah sebuah teknologi pencitraan medis yang digunakan untuk menghasilkan gambar tiga dimensi (3D) dari organ tubuh manusia menggunakan sinar-X. Berikut adalah proses kerja umum dari CT scan:
  1. Persiapan pasien: Pasien akan diminta untuk mengganti pakaian dan melepas semua logam atau benda yang bisa mengganggu proses pemindaian. Pasien akan diminta berbaring di atas meja yang bisa digerakkan.
  2. Pemindaian: Meja tempat pasien berbaring akan dimasukkan ke dalam donat berbentuk seperti tabung yang disebut gantry. Gantry berisi sumber sinar-X dan detektor yang berputar di sekitar pasien. Ketika pemindaian dimulai, sumber sinar-X akan mengirimkan sejumlah kecil sinar-X melalui tubuh pasien.
  3. Deteksi sinar-X: Detektor dalam gantry akan mendeteksi sinar-X yang melewati tubuh pasien. Detektor ini akan mengubah sinyal sinar-X menjadi sinyal listrik yang kemudian akan dikirimkan ke komputer.
  4. Rekonstruksi gambar: Komputer akan menerima sinyal dari detektor dan mengolahnya untuk membuat gambar penampang melintang (slices) dari organ yang diperiksa. Proses ini melibatkan matematika kompleks yang disebut transformasi sinar-X atau transformasi Radon.
  5. Pengolahan gambar: Setelah gambar penampang terbentuk, komputer akan mengolahnya untuk menghasilkan gambar 3D yang lebih lengkap dan detail. Gambar-gambar ini akan ditampilkan pada layar komputer untuk dianalisis oleh radiolog atau dokter.
  6. Evaluasi hasil: Radiolog atau dokter akan mengevaluasi gambar-gambar CT scan untuk mendiagnosis kondisi medis, mengidentifikasi kelainan atau cedera, atau merencanakan perawatan lebih lanjut.
Proses CT scan biasanya berlangsung dalam waktu yang sangat singkat, hanya beberapa menit. Pasien harus tetap diam dan tidak bergerak selama pemindaian untuk menghindari gambar yang buram. Dalam beberapa kasus, kontras berbasis zat pewarna dapat diberikan ke pasien melalui suntikan intravena untuk meningkatkan kontras gambar pada organ tertentu. Penting untuk dicatat bahwa prosedur CT scan melibatkan penggunaan sinar-X, yang merupakan sumber radiasi ionisasi. Namun, dosis radiasi yang diterima selama CT scan umumnya relatif rendah dan dianggap aman. Dokter akan mempertimbangkan manfaat yang diharapkan dari CT scan terhadap risiko radiasi yang terkait, terutama pada kasus-kasus yang membutuhkan pemindaian yang berulang.

CT scan dapat dilakukan pada berbagai bagian tubuh manusia. Beberapa bagian tubuh yang umumnya diperiksa menggunakan CT scan meliputi:
  1. Kepala dan otak: CT scan kepala digunakan untuk mendeteksi cedera, tumor, perdarahan, atau infeksi dalam otak. Ini dapat membantu dalam diagnosis stroke, penyakit Alzheimer, atau kondisi neurologis lainnya.
  2. Tulang tengkorak dan wajah: CT scan tulang tengkorak dan wajah membantu mengidentifikasi patah tulang, kelainan struktural, atau infeksi pada tengkorak, tenggorokan, atau rongga sinus.
  3. Leher: CT scan leher digunakan untuk mengevaluasi kelainan kelenjar tiroid, pembengkakan kelenjar getah bening, masalah pada pembuluh darah, atau cedera pada leher.
  4. Dada: CT scan dada sering digunakan untuk memeriksa organ dalam dada, seperti paru-paru, jantung, dan pembuluh darah. Ini membantu dalam diagnosis kanker paru-paru, emboli paru, penyakit jantung koroner, atau kelainan struktural lainnya.
  5. Abdomen dan panggul: CT scan abdomen dan panggul digunakan untuk memeriksa organ-organ seperti hati, pankreas, ginjal, usus, kandung kemih, atau organ reproduksi. Hal ini membantu dalam mendeteksi tumor, batu ginjal, infeksi, atau masalah lainnya pada organ-organ tersebut.
  6. Tulang belakang: CT scan tulang belakang berguna untuk mendeteksi kelainan struktural, herniasi diskus, atau cedera pada tulang belakang.
  7. Ekstremitas: CT scan juga dapat dilakukan pada ekstremitas seperti lengan, kaki, atau sendi untuk mengevaluasi patah tulang, kelainan sendi, atau cedera jaringan lunak.
Selain itu, CT scan juga digunakan dalam beberapa prosedur yang lebih khusus, seperti CT angiografi untuk melihat kondisi pembuluh darah atau CT scan peredarah untuk mengevaluasi aliran darah dalam otak. Perlu diingat bahwa jenis CT scan yang spesifik dan bagian tubuh yang akan diperiksa akan ditentukan berdasarkan indikasi medis dan kebutuhan pasien.

Waktu Pemindaian
Berikut adalah perkiraan waktu yang dibutuhkan untuk proses CT scan pada beberapa bagian tubuh secara berturut-turut:
  1. Kepala dan otak: Sekitar 5 hingga 10 menit.
  2. Tulang tengkorak dan wajah: Sekitar 10 hingga 15 menit.
  3. Leher: Sekitar 10 hingga 20 menit.
  4. Dada: Sekitar 10 hingga 20 menit.
  5. Abdomen dan panggul: Sekitar 10 hingga 30 menit.
  6. Tulang belakang: Durasi dapat bervariasi tergantung pada jumlah dan panjang tulang belakang yang diperiksa, tetapi umumnya berkisar antara 15 hingga 30 menit atau lebih.
  7. Ekstremitas: Waktu yang dibutuhkan dapat bervariasi tergantung pada bagian spesifik yang akan diperiksa, tetapi umumnya berkisar antara 10 hingga 20 menit.
  8. CT angiografi: Durasi CT angiografi tergantung pada area yang akan diperiksa, seperti pembuluh darah di kepala, dada, atau ekstremitas. Waktu yang dibutuhkan dapat bervariasi antara 15 hingga 60 menit tergantung pada kompleksitas kasus.
Perlu diingat bahwa perkiraan waktu yang diberikan di atas adalah perkiraan umum dan dapat berbeda-beda tergantung pada protokol spesifik yang digunakan, kondisi pasien, dan fasilitas kesehatan tempat CT scan dilakukan. Selain itu, faktor seperti persiapan pasien sebelum pemindaian atau kebutuhan tambahan seperti kontras juga dapat mempengaruhi durasi total proses CT scan. Informasi lebih lanjut tentang perkiraan waktu yang dibutuhkan dapat diberikan oleh tenaga medis yang melakukan CT scan.

Dari jawaban yang diberikan oleh Chatgpt di atas, maka berikut ini simulasi prototipe yang akan dibuat:

Gambar 1. Contoh rangkaian simulasi prototipe

Berikut ini keterangan komponen pada rangkaian Gambar 1 di atas:
  1. Dua buah Virtual Terminal: Virtual Terminal VT1 untuk simulasi koneksi ke Node-RED, yang diperlukan untuk penyimpanan data, dan Virtual Terminal VT2 untuk simulasi koneksi ke HP melalui Bluetooth.
  2. Sebuah LCD I2C 20x4 digunakan untuk menampilkan proses yang sedang berlangsung pada CT Scan dan menu pilihan bagi Operator.
  3. Sebuah LCD 128x64 (OLED) digunakan untuk menampilkan animasi proses yang sedang berlangsung pada CT Scan (berhubung memori yang dibutuhkan untuk penampil OLED ini cukup besar, maka dalam pengembangan awal ini, penampil OLED tidak diaktifkan dulu, fokus pada pemenuhan keempat fitur sesuai ketentuan di atas.
  4. Sebuah Sensor sentuh (Touch) dengan pad-nya digunakan sebagai trigger untuk proses CT Scan dimulai dan diakhiri. 
  5. Sebuah Aktuator dalam bentuk Motor DC dan LED indikator digunakan untuk menandai saat proses pemindaian sedang dijalankan.

2. Berhubung LCD OLED belum diaktifkan, maka agar gambar lebih jelas, LCD OLED untuk sementara dihilangkan. Berikut ini tahapan proses kerja dan tampilan rangkaiannya mulai dari awal hingga proses selesai. 

Keterangan tahapan proses:
Ada 5 tahapan proses yang akan ditampilkan, yaitu secara berturut-turut:
  1. Tahap persiapan
  2. Tahap pemilihan bagian yang akan di-scan
  3. Tahap berjalannya aktuator pemindai dengan waktu sesuai bagian yang dipilih
  4. Tahap rekonstruksi gambar (diinginkan gambar ini bisa ditampilkan di LCD OLED, berhubung OLED belum diaktifkan, maka belum ada tampilan gambar)
  5. Tahap penyimpanan data

Keterangan pemicu:
  1. Dari tahap pertama (persiapan) ke tahap kedua (pemilihan bagian), digunakan pemicu sensor sentuh. Jadi hanya ketika sensor sentuh menyentuh pad, barulah tahap kedua dijalankan.
  2. Dari tahap kedua (pemilihan) ke tahap ketiga (pemindai berjalan), digunakan pemicu tombol OK (pemilihan bagian dilakukan dengan tombol Pilih). 
  3. Dari tahap ketiga (pemindai berjalan) ke tahap keempat (rekonstruksi gambar), tidak ada pemicu, tetapi akan berpindah secara langsung ketika waktu pindai sudah selesai (menggunakan counter).
  4. Dari tahap keempat (rekonstruksi gambar) ke tahap kelima (penyimpanan data), digunakan pemicu tombol OK. Dengan menekan tombol OK ini, data akan dikirimkan ke Node-RED untuk penyimpanan dalam dalam file csv.
  5. Untuk kembali ke tahap pertama dari tahap kelima, sensor sentuh harus dijauhkan dari pad hingga maksimal. Demikian seterusnya tahapan proses akan kembali berulang.
Berikut ini gambar tampilan untuk setiap tahapan dan pemicunya:

1. Tahap pertama: persiapan

Gambar 2. Tahap persiapan, untuk ke tahap 2, buat sensor pad tersentuh tangan

Gambar 3. Terlihat pad tersentuh tangan, tampilan LCD menampilkan Tahap 2 pemilihan bagian

Gambar 4. Terlihat tombol pilih ditekan, dengan menekan tombol pilih beberapa kali, nomor pilihan dari angka 1 - 7 akan ditampilkan di LCD. Untuk ke Tahap 3, klik tombol OK

Keterangan nomor pilihan:
  • Pilihan no 1 = Kepala, dengan durasi scan = 10 menit
  • Pilihan no 2 = Wajah, dengan durasi scan = 15 menit
  • Pilihan no 3 = Leher, dengan durasi scan = 20 menit
  • Pilihan no 4 = Dada, dengan durasi scan = 25 menit
  • Pilihan no 5 = Abdomen, dengan durasi scan = 30 menit
  • Pilihan no 6 = Tulang belakang, dengan durasi scan = 35 menit
  • Pilihan no 7 = Angiografi, dengan durasi scan = 40 menit

Gambar 5. Di Tahap 3 pemindaian dilakukan, tampak motor DC berputar dan LED indikator hidup, serta LCD menampilkan counter mulai dari 0 ke nilai target waktu sesuai bagian yang di-scan

Gambar 6. Pemindaian masih berlangsung, apabila target waktu sudah tercapai, akan langsung berpindah ke tahap berikutnya, yaitu tahap pengolahan/rekonstruksi gambar

Gambar 7. Tahap keempat, rekonstruksi gambar menghasilkan diagnosis pada bagian yang di-scan. Untuk ke tahap kelima, tekan tombol OK, yang juga akan mengirim data ke Node-RED untuk disimpan

Gambar 8. Di tahap kelima, hasil scan telah disimpan, dan dapat dibuka di direktori yang sudah ditentukan sebelumnya. Terlihat tampilan Virtual Terminal menampilkan data nomor pasien, bagian yang di-scan, dan hasil diagnosisnya

Gambar 9. Untuk kembali mengulangi proses mulai dari Tahap pertama, jauhkan tangan dari sensor pad pada posisi maksimal, maka LCD menampilkan kembali Tahap pertama, yaitu tahap persiapan

Catatan penting:
1. Agar terhubung ke software atau ke hardware di luar Proteus, seperti Node-RED (software) atau HP (hardware), tidak bisa menggunakan komponen Virtual Terminal. Di uraian berikutnya akan saya tunjukkan bagaimana menghubungkan software dan hardware tersebut dengan komponen COMPIM. Sengaja saya menggunakan Virtual Terminal, untuk memastikan bahwa data yang akan dikirimkan ke Node-RED dan ke HP tersebut sudah benar.
2. Diinginkan agar Node-RED bisa menyimpan data yang diterima melalui komunikasi serial tersebut ke dalam file csv. Gambar 15 di bawah ini menunjukkan kode program Node-RED. Kode programnya bisa diunduh di bagian akhir dari halaman ini.
3. Diinginkan agar Node-RED juga bisa mengontrol jalannya proses CT Scan. Jadi tidak hanya menggunakan komponen yang ada di Proteus, tetapi berpindahnya tahapan dapat juga dikontrol melalui Node-RED, yang akan mengirimkan data angka sesuai tahapannya (kecuali untuk perpindahan dari Tahap kedua ke Tahap ketiga, karena akan berpindah secara langsung begitu target waktu tercapai)
4. Tidak hanya melalui Node-RED, berpindahnya tahapan juga bisa dikontrol melalui HP, dengan aplikasi Serial Bluetooth Terminal.

Berikut ini gambar rangkaian Proteus dengan COMPIM. Pastikan rekan-rekan memiliki 2 pasangan Virtual Port (apabila rekan-rekan belum memiliki pasangan COM, silahkan bisa memasangnya menggunakan software VSPD atau com0com).

Gambar 10. Penggunaan COMPIM untuk bisa terhubung ke Node-RED dan ke HP (melalui bluetooth)

Gambar 11. Pasangan port COM dapat dilihat di Device Manager, di Ports (COM&LPT)

Gambar 12. Atur baud rate physical dan virtual COMPIM P1 ke 9600, dan isi Physical port dengan salah satu pasangan COM, dalam contoh di sini digunakan COM2 (sedangkan nanti di Node-RED digunakan pasangannya yaitu COM4)
 
Gambar 13. Atur baud rate physical dan virtual COMPIM P2 ke 9600, dan isi Physical port dengan port COM yang digunakan untuk Bluetooth

Gambar 14. Di komponen ATmega328, isi kolom Program file dengan lokasi file Hex hasil kompilasi program Arduino Nano, atur juga isi kolom CLKDIV8, CKSEL Fuses, dan Clock Frequency

Berikut ini kode program untuk Arduino Nano:
  1. #include <Wire.h>
  2. #include <SoftwareSerial.h>
  3. #include <LiquidCrystal_I2C.h>
  4. LiquidCrystal_I2C lcd(0x27, 20, 4);
  5. SoftwareSerial mySerial(2, 3);  // RX, TX
  6. int tahap = 1;
  7. int pilih1 = 0;
  8. int pilihan = 0;
  9. int cacah = 0;
  10. int pasien = 0;
  11. int hasil = 0;
  12. char serial = "";
  13. void setup() {
  14.   Serial.begin(9600);
  15.   mySerial.begin(9600);
  16.   pinMode(4, INPUT_PULLUP);
  17.   pinMode(5, INPUT_PULLUP);
  18.   lcd.init();
  19.   lcd.backlight();
  20.   tampilan1();
  21.   mySerial.println("Tahap 1: Persiapan");
  22.   randomSeed(analogRead(0));
  23.   pinMode(6, OUTPUT);
  24.   digitalWrite(6, LOW);
  25.   delay(1000);
  26. }
  27. void loop() {
  28.   int pilih = !digitalRead(4);
  29.   int ok = !digitalRead(5);
  30.   int pad = analogRead(6);
  31.   switch (tahap) {
  32.     case 1:
  33.       tampilan1();
  34.       if (pad > 200 || serial == 'a') {
  35.         tahap = 2;
  36.         pasien++;
  37.         mySerial.println("Tahap 2: Pilih Bagian");
  38.         serial = "";
  39.       }
  40.       break;
  41.     case 2:
  42.       tampilan2();
  43.       if (pilih && pilih != pilih1) {
  44.         pilihan++;
  45.         if (pilihan > 6) pilihan = 0;
  46.       }
  47.       pilih1 = pilih;
  48.       if (ok || serial == 'b') {
  49.         tahap = 3;
  50.         mySerial.println("Tahap 3: Pemindaian");
  51.         serial = "";
  52.       }
  53.       break;
  54.     case 3:
  55.       digitalWrite(6, HIGH);
  56.       for (int i = 0; i < (pilihan * 5 + 10); i++) {
  57.         cacah = i;
  58.         tampilan3();
  59.         delay(1000);
  60.       }
  61.       digitalWrite(6, LOW);
  62.       hasil = random(0, 12);
  63.       tahap = 4;
  64.       mySerial.println("Tahap 4: Rekonstruksi");
  65.       break;
  66.     case 4:
  67.       tampilan4();
  68.       if (ok || serial == 'c') {
  69.         serial = "";
  70.         tahap = 5;
  71.         Serial.print(pasien);
  72.         Serial.print(',');
  73.         switch (pilihan) {
  74.           case 0:
  75.             Serial.print("Kepala");
  76.             break;
  77.           case 1:
  78.             Serial.print("Wajah");
  79.             break;
  80.           case 2:
  81.             Serial.print("Leher");
  82.             break;
  83.           case 3:
  84.             Serial.print("Dada");
  85.             break;
  86.           case 4:
  87.             Serial.print("Abdomen");
  88.             break;
  89.           case 5:
  90.             Serial.print("Tulang_blk");
  91.             break;
  92.           case 6:
  93.             Serial.print("Angiografi");
  94.             break;
  95.         }
  96.         Serial.print(',');
  97.         switch (hasil) {
  98.           case 0:
  99.             Serial.println("Nodul");
  100.             break;
  101.           case 1:
  102.             Serial.println("Lesi");
  103.             break;
  104.           case 2:
  105.             Serial.println("Tumor");
  106.             break;
  107.           case 3:
  108.             Serial.println("Patah_tlg");
  109.             break;
  110.           case 4:
  111.             Serial.println("Kelainan_struk");
  112.             break;
  113.           case 5:
  114.             Serial.println("Pembesaran_org");
  115.             break;
  116.           case 6:
  117.             Serial.println("Penyumbatan");
  118.             break;
  119.           case 7:
  120.             Serial.println("Hematoma");
  121.             break;
  122.           case 8:
  123.             Serial.println("Abses");
  124.             break;
  125.           case 9:
  126.             Serial.println("Inflamasi");
  127.             break;
  128.           case 10:
  129.             Serial.println("Metastasis");
  130.             break;
  131.           case 11:
  132.             Serial.println("Tdk_diketahui");
  133.             break;
  134.         }
  135.         mySerial.println("Tahap 5: Hasil Scan");
  136.       }
  137.       break;
  138.     case 5:
  139.       tampilan5();
  140.       if (pad == 0 || serial == 'd') {
  141.         tahap = 1;
  142.         mySerial.println("Tahap 1: Persiapan");
  143.         serial = "";
  144.       }
  145.       break;
  146.   }
  147.   while (mySerial.available()) {
  148.     char data1 = mySerial.read();
  149.     if (mySerial.read() == char(13)) {
  150.       serial = data1;
  151.     }
  152.   }
  153. }
  154. void tampilan1() {
  155.   lcd.setCursor(0, 0);
  156.   lcd.print(" Simulasi Prototipe ");
  157.   lcd.setCursor(0, 1);
  158.   lcd.print("       CT SCAN      ");
  159.   lcd.setCursor(0, 2);
  160.   lcd.print("Apabila sudah siap, ");
  161.   lcd.setCursor(0, 3);
  162.   lcd.print("Sentuh tangan ke pad");
  163. }
  164. void tampilan2() {
  165.   lcd.setCursor(0, 0);
  166.   lcd.print("Tekan tombol Pilih  ");
  167.   lcd.setCursor(0, 1);
  168.   lcd.print("untuk memilih bagian");
  169.   lcd.setCursor(0, 2);
  170.   lcd.print("Pilihan: nomor      ");
  171.   lcd.setCursor(15, 2);
  172.   lcd.print(pilihan + 1);
  173.   lcd.setCursor(0, 3);
  174.   lcd.print("Klik OK utk diproses");
  175. }
  176. void tampilan3() {
  177.   lcd.setCursor(0, 0);
  178.   lcd.print("Bagian yang dipilih:");
  179.   lcd.setCursor(0, 1);
  180.   switch (pilihan) {
  181.     case 0:
  182.       lcd.print("1.Kepala     10menit");
  183.       break;
  184.     case 1:
  185.       lcd.print("2.Wajah      15menit");
  186.       break;
  187.     case 2:
  188.       lcd.print("3.Leher      20menit");
  189.       break;
  190.     case 3:
  191.       lcd.print("4.Dada       25menit");
  192.       break;
  193.     case 4:
  194.       lcd.print("5.Abdomen    30menit");
  195.       break;
  196.     case 5:
  197.       lcd.print("6.Tulang blk 35menit");
  198.       break;
  199.     case 6:
  200.       lcd.print("7.Angiografi 40menit");
  201.       break;
  202.   }
  203.   lcd.setCursor(0, 2);
  204.   lcd.print("Waktu pemindaian:   ");
  205.   lcd.setCursor(18, 2);
  206.   lcd.print(cacah);
  207.   if (cacah % 20 == 0) {
  208.     lcd.setCursor(0, 3);
  209.     lcd.print("                    ");
  210.   }
  211.   lcd.setCursor(cacah % 20, 3);
  212.   lcd.print(".");
  213. }
  214. void tampilan4() {
  215.   lcd.setCursor(0, 0);
  216.   lcd.print("Hasil CT Scan:      ");
  217.   lcd.setCursor(0, 1);
  218.   lcd.print("Bagian:             ");
  219.   lcd.setCursor(8, 1);
  220.   switch (pilihan) {
  221.     case 0:
  222.       lcd.print("Kepala");
  223.       break;
  224.     case 1:
  225.       lcd.print("Wajah");
  226.       break;
  227.     case 2:
  228.       lcd.print("Leher");
  229.       break;
  230.     case 3:
  231.       lcd.print("Dada");
  232.       break;
  233.     case 4:
  234.       lcd.print("Abdomen");
  235.       break;
  236.     case 5:
  237.       lcd.print("Tulang blk");
  238.       break;
  239.     case 6:
  240.       lcd.print("Angiografi");
  241.       break;
  242.   }
  243.   lcd.setCursor(0, 2);
  244.   switch (hasil) {
  245.     case 0:
  246.       lcd.print("diagnosis: Nodul    ");
  247.       break;
  248.     case 1:
  249.       lcd.print("diagnosis: Lesi     ");
  250.       break;
  251.     case 2:
  252.       lcd.print("diagnosis: Tumor    ");
  253.       break;
  254.     case 3:
  255.       lcd.print("diagnosis: Patah tlg");
  256.       break;
  257.     case 4:
  258.       lcd.print("diag: Kelainan struk");
  259.       break;
  260.     case 5:
  261.       lcd.print("diag: Pembesaran org");
  262.       break;
  263.     case 6:
  264.       lcd.print("diagnos: Penyumbatan");
  265.       break;
  266.     case 7:
  267.       lcd.print("diagnosis: Hematoma ");
  268.       break;
  269.     case 8:
  270.       lcd.print("diagnosis: Abses    ");
  271.       break;
  272.     case 9:
  273.       lcd.print("diagnosis: Inflamasi");
  274.       break;
  275.     case 10:
  276.       lcd.print("diagnos: Metastasis ");
  277.       break;
  278.     default:
  279.       lcd.print("diagn: Tdk diketahui");
  280.       break;
  281.   }
  282.   lcd.setCursor(0, 3);
  283.   lcd.print("Klik OK utk disimpan");
  284. }
  285. void tampilan5() {
  286.   lcd.setCursor(0, 0);
  287.   lcd.print("File telah tersimpan");
  288.   lcd.setCursor(0, 1);
  289.   lcd.print("Proses CTScan slesai");
  290.   lcd.setCursor(0, 2);
  291.   lcd.print("Kembalikan tangan ke");
  292.   lcd.setCursor(0, 3);
  293.   lcd.print("awal untuk mengulang");
  294. }
  295. void serialEvent() {
  296.   while (Serial.available()) {
  297.     char data2 = Serial.read();
  298.     if (Serial.read() == char(13)) {
  299.       serial = data2;
  300.     }
  301.   }
  302. }

Berikut ini kode program untuk Node-RED:

Gambar 15. Program Node-RED (silahkan bisa diunduh di bagian akhir halaman ini)

Berikut ini hasil penyimpanan data dengan program Node-RED:

Gambar 16. Hasil penyimpanan dalam bentuk file csv dapat dibuka dengan Excel

Catatan:
1. Apabila muncul error di kolom debug seperti ini: "failed to create file: Error: EPERM: operation not permitted, mkdir 'D:/'", maka silahkan menambahkan folder pada path direktorinya. Error tersebut muncul ketika saya menggunakan path: D:/dat.csv. Setelah saya menambahkan folder di path seperti ini D:/dian/dat.csv, error tersebut sudah tidak muncul kembali.
2.  Untuk membuat file csv, bisa dibuat dengan Notepad. Buka Notepad, kemudian simpan file tersebut dengan nama yang diinginkan, tambahkan di belakang nama tersebut ".csv". Di kolom Save as type,  ubah pilihan dari Text Documents (*.txt) menjadi All files, seperti gambar berikut.

Gambar 17. Membuat file csv dengan Notepad, save as dengan menambahkan .csv pada nama filenya dan pilih tipe All files

Untuk komunikasi dengan HP, digunakan aplikasi Serial Bluetooth Terminal, silahkan rekan-rekan bisa mengunduh dari Playstore.

Gambar 18. Aplikasi Serial Bluetooth Terminal

Sama seperti Node-RED bisa digunakan untuk menjalankan simulasi proses scan, aplikasi Serial Bluetooth Terminal di HP juga bisa digunakan untuk menjalankan simulasi, seperti ditunjukkan pada gambar berikut:

Gambar 19. Aplikasi Serial Bluetooth Terminal mengirimkan karakter b beberapa kali untuk memilih bagian yang akan di-scan

Agar lebih jelas mengenai pembuatan simulasi prototipe ini, silahkan rekan-rekan bisa membuka video berikut ini.

Video pembuatan simulasi prototipe CT Scan

Semua file yang digunakan dalam pembuatan prototipe ini, silahkan bisa diunduh di link berikut ini: 

No comments:

Post a Comment