Cara Membuat Smart Room

Smart Room dapat dibuat dengan menggunakan mikroprosesor. Berikut ini tahap-tahap pembuatan smart room tersebut.

Menentukan Tujuan Smart Room

Tahap pertama dari sebuah pekerjaan/proyek adalah menentukan tujuan utama pekerjaan tersebut.

Berikut iniĀ  beberapa alternatif tujuan sebuah smart room

  • Meningkatkan kenyamanan ruangan, bisa dari sisi pencahayaan, temperatur, kelembaban
  • Menghemat pemakaian energi. Suatu ruangan memerlukan temperatur untuk penerangan dan pemanasan/pendinginan
  • Meningkatkan keamanan ruangan

Menentukan Spesifikasi Sistem

Setelah tujuan ditentukan,berikutnya adalah menentukan spesifikasi teknis dari ruangan tersebut.

Hal-hal yang perlu diperhatikan pada spesifikasi smart-room:

  • Apakah temperatur perlu diukur?
  • Apakah temperatur perlu dikendalikan?
  • Apakah kelembaban perlu diukur?
  • Apakah kelembaban perlu dikendalikan?
  • Apakah cahaya perlu diukur?
  • Apakah cahaya perlu dikendalikan?
  • Temperatur ruangan diukur dengan ketelitian tertentu, misal 1 derajat Celcius, 0,5 derajat Celcius dan sebagainya
  • Rentang temperatur ruangan ditentukan. Hal ini untuk menentukan rentang sensor temperatur yang diperlukan.
  • Target temperatur yang diinginkan
  • Ketelitian pengukuran kelembaban.
  • Rentang kelembaban ruangan yang perlu diukur
  • Target kelembaban yang diinginkan.

Membuat Perancangan Sistem Secara Keseluruhan

Pada tahap ini dibuat arsitektur sistem secara keseluruhan. Aliran data & informasi ditentukan.

Perancangan perangkat keras

Pada tahap ini dilakukan pembuatan rancangan perangkat keras.

Hal-hal yang perlu ditentukan:

  • Menentukan mikrokontroler yang dipakai , jika menggunakan mikroprosesor
  • Menentukan sensor-sensor yang dipakai
  • Menentukan aktuator-aktuator yang diperlukan
  • Menentukan catu daya (power supply) yang diperlukan
  • Kotak untuk menyimpan perangkat

Berikut ini contoh sistem smart room dengan sebuah mikrokontroler sebagai pengendali utama.

Blok Diagram Perangkat Keras Smart-Room
Blok Diagram Perangkat Keras Smart-Room

Contoh prosesor populer yang dapat dipakai di antaranya:

  • Arduino UNO (ATmega328)
  • Arduino Nano (ATmega328)
  • ESP32 (Espressif)
  • ESP8266

ESP32 dan ESP8266 dapat dipakai jika kita memerlukan WiFi atau Bluetooth. Jika tidak perlu komunikasi nirkabel, cukup menggunakan Arduino berbasis ATmega328.

Contoh sensor yang dapat dipakai

  • LM35: sensor temperatur analog
  • DS18S20: sensor temperatur digital
  • BMP280: sensor temperatur dan tekanan udara
  • BME280: sensor temperatur, kelembaban dan tekanan udara
  • LDR (Light Dependent Resistor): sensor cahaya
  • Photodiode : sensor cahaya

Contoh Display yang dapat dipakai:

  • LCD 16×2
  • LCD 20×4
  • LCD matrix

Perancangan perangkat lunak

Pada tahap ini dilakukan hal-hal sebagai berikut

  • menentukan apakah akan menggunakan sistem operasi. pada sistem seperti ini sering dipakai sistem operasi waktu nyata (Real Time Operating System /RTOS ). Salah satu RTOS yang sering dipakai adalah FreeRTOS (https://www.freertos.org/)
  • membuat model diagram alir (flow chart)
  • membuat model aliran data (data flow diagram)
  • membuat model FSM (finite state machine) jika pada sistem terdapat proses yang memerlukan FSM
  • membuat model pengolahan sinyal dengan DSP (Digital Signal Processing), jika terdapat pengolahan sinyal secara digital. Umumnya melibatkan filter digital , equalizer digital, perekaman data digital.

Implementasi Perangkat Keras

Pada tahap ini dibuat papan rangkaian dengan PCB (Printed Circuit Board)

Implementasi Perangkat Lunak

Pada tahap ini dilakukan proses pembuatan perangkat lunak untuk mikrokontroler

Pengujian sistem

Pada tahap ini dilakukan pengujian untuk membandingkan antara perilaku sistem dengan spesifikasi yang diinginkan. Untuk itu diperlukan pengukuran-pengukuran untuk kemudian dibandingkan dengan angka-angka yang diinginkan pada spesifikasi.

Pengujian ini biasanya dilakukan secara kuantitatif, sehingga cukup obyektif.

Perangkat yang diperlukan untuk pengujian sistem di antaranya

  • Termometer digital atau analog sesuai dengan rentang temperatur dan ketelitian yang diinginkan
  • Higrometer digital atau analog sesuai dengan rentang kelembaban dan ketelitian pengukuran kelembaban.
  • Light Meter untuk mengukur pencahayaan ruangan
  • Voltmeter / Wattmeter untuk mengukur unjuk kerja tegangan/ arus/ daya pada rangkaian.

Validasi Sistem

Pada tahap ini dilakukan perbandingan antara tujuan sistem dengan perilaku sistem. Jika sistem yang dibuat sudah dapat menyelesaikan permasalahan di tujuan, maka sistem dapat dikatakan sudah berhasil divalidasi.

Validasi ini biasanya dilakukan secara kualitatif sehinggak agak sedikit subyektif.

Perancangan Filter Digital Bandpass Dengan Arduino

Arduino UNO
Arduino UNO

Arduino dapat dipakai untuk mengembangkan filter digital bandpass.

Sebelum dilakukan pembuatan perlu dibuat dulu  spesifikasi yang diinginkan, setelah itu baru dikaji apakah bisa atau tidak.

Informasi yang diperlukan adalah sebagai berikut:

  • sinyal input analog/digital? berapa volt?
  • sinyal output analog/digital? berapa volt?
  • bandpas dari berapa Hz sampai berapa Hz?
  • noise maksimum berapa dB?
  • perlu ADC & DAC berapa bit? -> ini dapat diturunkan dari noise yang diinginkan

Filter bandpass digital secara teoritis dapat dibuat di Arduino Nano/UNO, namun mesti diperhatikan bahwa komputasi di prosesorATmega328 terbatas, kalau spesifikasi rada tinggi mesti cari prosesor lain.

Analisis Kebutuhan /  Requirement

Pada tahap ini dirumuskan latar belakang masalah , rumusan permasalah yang perlu diselesaikan, serta tujuan sistem.

Spesifikasi

Pada tahap ini ditentukan spesikasi teknis sistem.

Perancangan

Pada tahap ini dilakukan perancangan hardware dan software.

Diagram pengolahan sinyal digital, meliputi filter anti aliasing, ADC, DSP, DAC, filter rekonstruksi
Diagram pengolahan sinyal digital

Simulasi

Setelah perancangan hardware dan software dibuat, perlu dilakukan simulasi untuk mengecek apakah rangkaian dan software yang dibuat berfungsi baik. Tahap simulasi filter secara umum dibahas di artikel Simulasi Pengolahan Sinyal Digital

Implementasi

Pada tahap ini dilakukan pembuatan hardware dan software.

Pada tahap prototype dapat dilakukan dengan breadboard, namun pada sistem yang lebih serius perlu sampai merancang kotak, tampilan  dan tombol-tombol yang diperlukan.

Pengujian

Pada tahap ini dilakuan pengujian untuk melihat kesesuaian antara sifat sistem yang dicapai dengan spesifikasi yang diinginkan.

Validasi

Pada tahap ini dilakukan validasi, artinya membandingkan antara requirement dan apakah sistem dapat menyelesaikan masalah di requirement.

Referensi

 

 

Sistem Pengendali Pompa versi 3

Sistem pengendali pompa versi 3 ini adalah lanjutan dari Sistem Pengendali Pompa versi 2 dan Pengendali Pompa versi 1.

Pengendali pompa versi 3
Pengendali pompa versi 3

Fitur utama:

  • Prosesor utama menggunakan ESP32
  • Prosesor display menggunakan ATmega328 (Arduino Nano)
  • Sistem operasi menggunakan FreeRTOS
  • Display menggunakan P10 dot matrix 32 x 16 pixel
  • Relay menggunakan solid state relay (SSR), sebelumnya menggunakan relay elektromekanik

Saat ini implementasi masih di breadboard, belum disolder padahal sudah mulai berdebu.

Fitur yang masih direncanakan namun belum sempat diimplementasikan:

  • Monitoring dengan IoT , artinya data sistem dikirim ke suatu server perekam data.
  • Deteksi ketinggian air dengan sensor ultrasonik

Lampu Kedip pada Arduino

Membuat LED berkedip adalah salah satu cara sederhana untuk menunjukkan kemampuan pewaktuan pada mikroprosesor.

Berikut ini beberapa teknik yang dapat dilakukan:

  • interupsi timer
  • delay arduino standar
  • delay dari FreeRTOS

Delay Standar Arduino

Delay pada Arduino dijelaskan di https://www.arduino.cc/reference/en/language/functions/time/delay/

Pada software Arduino standar seperti Arduino Nano dan UNO, delay ini diimplementasikan dengan loop software.

Contoh software yang menggunakan delay ini adalah contoh software Blink pada Arduino (https://www.arduino.cc/en/tutorial/blink)

Diagram alir program Blink ini adalah sebagai berikut

Diagram alir Blink()

Delay pada FreeRTOS

FreeRTOS memungkinkan software Arduino memiliki beberapa loop pada waktu yang bersamaan.

Porting FreeRTOS untuk Arduino UNO dan Nano dapat dilihat di https://github.com/feilipu/Arduino_FreeRTOS_Library

Library FreeRTOS ini dapat diinstall di Arduino IDE dari menu Tools -> Manage Libraries. Kemudian search dengan kata kunci FreeRTOS.

Proses instalasi library FreeRTOS
Proses instalasi library FreeRTOS

Sebagai contoh, berikut ini diagram alir (flowchart) sebuah program yang membuat LED berkedip dengan 3 buah loop. Masing-masing LED memiliki frekuensi yang berbeda.

Lampu kedip dengan FreeRTOS
Lampu kedip dengan FreeRTOS

Source code dapat dilihat di https://github.com/waskita/embedded/tree/master/atmega-blink-freertos

Fungsi FreeRTOS yang dipakai adalah

Arduino dengan LED berkedip
Arduino dengan LED berkedip

Berikut ini demo perangkat keras Arduino Nano tersebut

Interupsi Timer

under construction

Percobaan Output PWM dari Timer 0 pada ATmega328

Pulse Width Modulation (PWM) atau modulasi lebar pulsa sangat bermanfaat pada sistem mikrokontroler, salah satunya adalah untuk mengendalikan motor DC. Pada chip ATmega328, sinyal PWM ini dapat dibangkitkan dengan perangkat lunak, ataupun dapat dibangkitkan dari perangkat keras dengan menggunakan periferal Timer internal. PWM dari perangkat keras cukup praktis karena tidak membebani perangkat lunak, namun ada keterbatasan karena pada ATmega328 hanya terdapat 3 buah timer internal, sehingga tidak bisa memiliki banyak output PWM dari perangkat keras.

Berikut ini ujicoba output PWM (Pulse Width Modulation) dari Timer 0 pada ATmega328. Modul yang digunakan adalah Arduino Nano clone.

Konfigurasi pengujian PWM ini adalah sebagai berikut:

  • Perangkat keras menggunakan Timer 0 (8 bit)
  • Clock Source: System Clock
  • Clock Value 2000.000 kHz
  • Mode: Fast PWM top=0xFF
  • Out A: Non-Inverted PWM
  • Out B: Disconnected
  • tidak ada interupsi dari Timer0
  • output pada pin OC0A (pin PD6 pada ATmega328, D6 pada Arduino Nano)

Pengaturan register menggunakan Code Wizard dari CodeVision AVR Evaluation dengan detail sebagai berikut ini:

Source code terkait dengan Timer 0 adalah sebagai berikut:

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 2000.000 kHz
// Mode: Fast PWM top=0xFF
// OC0A output: Non-Inverted PWM
// OC0B output: Disconnected
// Timer Period: 0.128 ms
// Output Pulse(s):
// OC0A Period: 0.128 ms Width: 0.016063 ms
TCCR0A=(1<<COM0A1) | (0<<COM0A0) | (0<<COM0B1) | (0<<COM0B0) | (1<<WGM01) | (1<<WGM00);
TCCR0B=(0<<WGM02) | (0<<CS02) | (1<<CS01) | (0<<CS00);
TCNT0=0x00;
OCR0A=0x20;
OCR0B=0x00;

Source code lengkap dapat dilihat di https://github.com/waskita/embedded/blob/master/cv-kendali/cv-kendali-usart.c

Variable yang dapat diubah-ubah adalah OCR0A untuk mengatur duty-cycle dari PWM. Nilai register ini dapat diisi dari 0x00 sampai dengan 0xff (255)

Tahap selanjutnya adalah pengujian output PWM dengan cara melihat sinyal yang dihasilkan dengan osiloskop GW INSTEK GDS-1042

Berikut ini adalah output dengan nilai register OCR0A=0x00. Perioda PWM adalah 2000/256 = 0.128 ms

OCR0A=0x01

Nampak bahwa nilai register 0 akan memberikan sinyal yang paling pendek, yaitu dengan panjang pulsa 500 ns. Berikut ini adalah sinyal yang sama dilihat dengan time base 100 ns per div

OCR0A=0x01, zoom

Berikut ini adalah sinyal dengan OCR0A=0x80 atau duty cycle=50%

OCR0A=0x80

Berikut ini adalah sinyal dengan OCR0A=0xfe (254)

OCR0A=0xfe (254)

Terakhir adalah sinyal dengan duty cycle = 100% , dengan OCR0A=0xff (255)

OCR0A=0xff

Hal penting yang perlu diperhatikan: nilai duty cycle tidak pernah 0%, minimum adalah 1/256. Nilai maksimum duty cycle adalah 100%. Untuk membuat sinyal PWM duty cycle =0 dapat dilakukan dengan mematikan output PWM.

FreeRTOS Untuk Arduino AVR, ESP32 dan STM32F103 Blue Pill

Sistem operasi FreeRTOS dapat diaplikasikan pada berbagai mikrokontroler. Pada tulisan ini diulas SDK (IDE + compiler) yang dapat dipakai untuk menjalankan FreeRTOS pada Arduino (UNO+Nano), ESP32 dan STM32F103 (Blue Pill)

Arduino

Arduino Nano
Arduino Nano

Espressif ESP32

ESP32 Lolin Wemos
ESP32 Lolin Wemos

STM32F103C8T6 (Blue Pill)

STM32F103C8T Blue Pill
STM32F103C8T Blue Pill

Perbedaan Arduino ORI dan KW

Apa sih perbedaan utama antara Arduino ORI dan KW? Apakah perbedaannya besar sekali? Pada tulisan ini akan dibahas satu aspek saja, yaitu dari chip USB yang dipakai

Harga

Perbedaan utama tentunya adalah harga. Arduino UNO ori harganya 300 ribuan, sedangkan Arduino UNO KW/clone harganya di bisa bawah 100 ribu.Ā  Arduino Nano original harganya di atas 100 ribu, sedangkan yang KW/clone sekitar 30 ribu sampai 40 ribu.

Hardware

Dari sisi hardware, Arduino Nano / UNO ori maupun KW menggunakan prosesor ATMega168 / ATmega328, dengan variasi ada yang menggunakan kemasan DIP, ada yang SMD. Perbedaan ada pada chip USB to Serial untuk Arduino Nano. Arduino Nano ORI menggunakan chip FTDI untuk menyambungkan port serial ke USB, sedangkan Arduino Nano KW/clone seringnya menggunakan chip CH340 untuk menyambungkan port serial ke USB. Arduino Nano KWĀ  ada yang menggunakan chip FTDI (FT232), namun harganya biasanya lebih mahal daripada Arduino Nano dengan chip CH340.

CH340 di bagian bawah Arduino Nano

Software

Dari sisi software yang dimasukkan ke dalamnya, tidak ada perbedaan pada Arduino Nano/UNO baik yang KW maupun ORI, keduanya sama-sama menggunakan ATMega168 atau ATMega328, jadi tidak ada perbedaan source code.

Driver di Host

USB pada Arduino perlu driver pada komputer host yang dipakai. Komputer host yang umum dipakai adalah berbasis Windows, OSX dan Linux. Pada tulisan ini hanya dibahas Windows dan OSX, karena yang Linux belum dicoba.

Arduino yang clone seringnya untuk USB serial menggunakan chip USB to serial tipe CH340. Arduino yang original biasanya menggunakan chip FTDI. Driver FTDI di Windows 10 sudah built-in, jadi tinggal pasang saja Arduino tersebut keĀ  USB maka akan langsung dikenali.

Arduino yang KW umumnya menggunakan chip CH340, sedangkan driver CH340 tidak built-in di Windows 10, sehingga driver untuk CH340 mesti download & install dulu, baru kemudian Arduino tersebutdapat dikenali. Agak repot, namun proses ini hanya dilakukan sekali saja, setelah itu tidak perlu dilakukan lagi.

Kasus berbeda pada sistem operasi OSX (Apple). Pada OSX (Apple) sudah ada driver untuk FTDI, sehingga untuk Arduino yang ORI tinggal pasang saja USBnya, maka akan langsung dikenali.

Driver CH340 pada OSX belum ada built in, sehingga perlu install dulu. Selain itu juga driver CH340 secara default tidak bisa diinstall di OSX, karena sertifikatnya tidak diakui. Jadi untuk install driver CH340, pengecekan sertifikat driver harus dinonaktifkan dulu, jadi prosesnya agak ribet.

Pada Linux, driver untuk CH340 dan FTDI sudah built in, jadi tidak ada masalah seperti pada OSX. Ref: https://sparks.gogo.co.nz/ch340.html

Kesimpulan : kalau pakai sistem operasi Windows 10, pakai Arduino KW saja, cuma beda install driver CH340 paling juga 10 menitan. Jika pakai OSX dan tidak mau repot, pilih saja Arduino yang menggunakan chip FTDI.

Arduino nano di latar depan dengan Arduino Uno di latar belakang
Arduino nano KW di latar depan dengan Arduino Uno ORI di latar belakang

Referensi

Rangkaian Programmer pada Arduino UNO Dan Nano

Modul mikrokontroler Arduino sangat mudah digunakan, salah satunya karena pada modul Arduino sudah disertakan rangkaian pemrograman yang mudah dipakai, dan juga terintegrasi dengan perangkat lunak Arduino yang dipakai untuk membuat software.

Berikut ini diuraikan rangkaian programmer pada Arduino UNO dan Arduino Nano. Kedua jenis Arduino ini sangat mirip, menggunakan komponen yang sama, hanya bentuknya berbeda. Komponen paling penting adalah mikrokontroler ATMega328.

Pin pada ATMega328
Pin pada ATMega328

Berikut ini gambar konektor pada Arduino UNO:

Arduino UNO
Pin pada Arduino UNO

Konektor yang terkait pemrograman adalah USB-Plug  dan In Circuit Serial Programmer (ICSP). Seringnya yang dipakai untuk pemrograman adalah USB Plug, sedangkan ICSP jarang dipakai.

Arduino Nano
Arduino Nano

Pada Arduino Nano konektor untuk pemrograman adalah USB Mini dan ICSP (In Circuit Serial Programmer).

Konektor ICSP yang dipakai pada Arduino UNO dan Nano menggunakan header 3×2, dengan daftar pin sebagai berikut:

Konektor ICSP pada Arduino Nano dan UNO
Konektor ICSP pada Arduino Nano dan UNO

Pin yang dipakai adalah MISO, MOSI, SCK, Reset, GND dan +5V. Semua pin ini terhubung langsung ke ATMega328:

  • MISO (pin 18 / PB4)
  • MOSI (pin 17 / PB3)
  • SCK (pin 19 / PB5)
  • Reset (pin 1 / PC6)
  • GND (pin 8 & pin 22)
  • +5V (pin 7 / VCC)

Pin-pin ini sesuai dengan rangkaian dasar pemrograman ISP sebagai berikut:

Rangkaian ISP ATMega8535
Rangkaian In System Programming pada ATMega

Cara lain untuk pemrograman Arduino UNO dan Nano adalah menggunakan port USB. Port USB ini masuk ke suatu konverter USB ke Serial, kemudian pin serial TX dan RX dihubungka ke pin RX dan TX pada ATMega, jadi program dikirim melalui port serial pada ATMega. Selain itu pin DTR juga dipakai untuk melakukan reset pada ATMega.

Rangkaian USB to serial pada Arduino UNO dan Nano
Rangkaian USB to serial pada Arduino UNO dan Nano

Supaya program dapat dimasukkan melalui port serial, perlu ada software bootloader yang dimasukkan ke dalam flash memory di ATMega. Program bootloader ini belum ada pada ATMega yang keluaran pabrik, jadi bootloader ini perlu dimasukkan dulu ke dalam ATMega melalui programmer ISP (In System Programming) atau programmer paralel, seperti dijelaskan lebih lanjut di artikel “Programmer AVR“.

Bootloader ini memakai sebagian kecil memori flash, kurang lebih 512 byte, jadi memori aplikasi yang tersisa adalah 32 kilobyte dikurangi memori yang terpakai untuk bootloader. Diagram memori bootloader dan aplikasi dapat dilihat pada gambar berikut:

Memori bootloader di flash
Memori bootloader di flash

 

Gambar Infra Merah Arduino Nano

Berikut ini foto Arduino Nano clone dan hasil thermal imaging dari barang yang sama. Nampak di bagian atas ada 2 sumber panas yaitu prosesor  ATMega dan LED indikator yang selalu menyala.

Thermal Image Arduino Nano
Thermal Image Arduino Nano

Komponen yang aktif di bagian bawah adalah Bagian bawah USB interface CH340 . IC regulator 5 volt AMX117 tidak terlalu panas karena power diambil dari USB.

Arduino Nano V3 clone tampak bawah
Arduino Nano V3 clone tampak bawah

 

Arduino nano bagian bawah
Arduino nano bagian bawah dilihat secara thermal

Thermal imaging menggunakan FLiR Dev Kit dari Sparkfun dengan komponen utama LeptonĀ® longwave infrared (LWIR).

Output dari LWIR ini sangat sederhana, bisa dibilang hanya informasi relatif mana yang panas mana yang dingin, tidak sampai ke temperatur detail di setiap pixel. Kalau mau sampai seperti itu mesti NDA dulu dengan Lepton plus minimum order 1000 unit šŸ™‚

TTP229 16 Key Touch button

TTP229 adalah IC buatan TonTouch yang fungsinya untuk keypad 16 tombol dengan tombol sentuh kapasitif. Modul TTP229 yang siap pakai banyak dijual di eBay dan AliExpress. Berikut ini modul jadi TTP229 yang siap pakai. Modul ini cukup mudah untuk dihubungkan ke Arduino.

TTP229 Keypad
TTP229 Keypad

Modul keypad ini tanpa modifikasi hanya dapat mendeteksi tombol 1 ~ 8 saja. Untuk mengaktifkan dari 1 ~ 16, perlu ada beberapa jalur yang disolder [Ref: http://itimewaste.blogspot.co.id/2014/12/arduino-code-for-ttp229-touch-16-button.html].

Berikut ini modul yang sudah ditambah jalur yang disolder di konektor P1 dan P2

TTP229 yang dengan jalur sudah disolder
TTP229 yang dengan jalur yang sudah disolder

Setelah disolder maka modul TTP229 ini siap diuji dengan Arduino.

TTP229 dengan Arduino
TTP229 dengan Arduino

Software Arduino yang dapat dipakai dapat diambil di https://www.dropbox.com/s/15h3znv4hxid23r/TouchButton16.ino?dl=0

Output Arduino dapat dilihat pada gambar berikut:

Output TTP229 ke port serial
Output TTP229 ke port serial

 

Referensi

Mengukur Radiasi Dengan Geiger Counter Dan Arduino

Pada percobaan ini dilakukan pengukuran radiasi dari beberapa material radioaktif rendah dengan sensor geiger counter dan modul Arduino Nano sebagai penghitung radiasi.

Batang elektroda tungsten, sensor asap dan geiger counter,
Batang elektroda tungsten, sensor asap dan geiger counter,

Perangkat Keras

Perangkat yang digunakan adalah sebagai berikut

  • Arduino Nano v3 sebagai prosesor
  • Modul Geiger Counter sebagai sensor radiasi
  • Batang tungsten dengan campuran thorium sebagai sumber radiasi
  • Sensor asap dengan unsur americium sebagai sumber radiasi

Modul geiger counter memberikan sinyal active low setiap kali mendeteksi adanya peluruhan radioaktif. Sinyal active low ini dihubungkan ke pin 2 pada Arduino Nano untuk dihitung. Hasil perhitungan dikirimkan dengan port serial ke komputer untuk ditampilkan.

Aspek keamanan

  • Batang tungsten dengan campuran thorium memancarkan radiasi alpha, beta dan gamma dalam dosis rendah. Paparan langsung dalam waktu singkat tidak membahayakan. Bahaya muncul jika batang tersebut berubah menjadi serbuk, karena debu thorium berbahaya.
  • Americium pada sensor asap adalah sumber radiasi alpha, beta dan gamma lemah. Tidak membahayakan asal tidak tertelan

Berikut ini penjelasan bahaya Thorium yang dipakai pada campuran elektroda las tungsten (http://www.twi-global.com/technical-knowledge/faqs/health-and-safety-faqs/faq-the-use-of-thoriated-tungsten-electrodes/)

Thorium (Th) is slightly radioactive with a long half life and emits mainly alpha (Ī±) particles, but occasionally some beta (Ī²) and gamma (Ī³) radiation is emitted. Alpha particles cannot penetrate skin or even paper. However, they are harmful if released inside the digestive tract, or inside the lungs, where they act as a carcinogen.

Thorium oxide is, therefore, a low level radioactive material which may give rise to both a small external radiation hazard and an internal hazard from ingestion or inhalation. The external hazard estimated for a welder holding an electrode for a whole year is a very small fraction of the maximum permissible radiation dose and it is concluded that the external radiation hazard is likely to be negligible.

Berikut ini tentang bahaya dari Americium yang dipakai di sensor asap: (http://www.world-nuclear.org/info/Non-Power-Nuclear-Applications/Radioisotopes/Smoke-Detectors-and-Americium/)

The radiation dose to the occupants of a house from a domestic smoke detector is essentially zero, and in any case very much less than that from natural background radiation. The alpha particles are absorbed within the detector, while most of the gamma rays escape harmlessly. The small amount of radioactive material that is used in these detectors is not a health hazard and individual units can be disposed of in normal household wastee.

Even swallowing the radioactive material from a smoke detector would not lead to significant internal absorption of Am-241. Americium dioxide is insoluble, so will pass through the digestive tract without delivering a significant radiation dose. (Americium-241 is however a potentially dangerous isotope if it is taken into the body in soluble form. It decays by both alpha activity and gamma emissions and it would concentrate in the skeleton).

Perangkat Lunak

Perangkat lunak yang dipakai serupa dengan di percobaan Interupsi Dengan Arduino,  hanya saja pada percobaan ini pull up internal pada pin 2 dinonaktifkan karena sudah ada pull up pada modul geiger counter. Jika pull up pada internal Arduino diaktifkan, maka sinyal malah tidak bisa mencapai logika LOW.

// ide dari http://www.rhelectronics.net/store/radiation-detector-geiger-counter-diy-kit-second-edition.html
unsigned long counts; //variable for GM Tube events
unsigned long previousMillis; //variable for time measurement

void impulse() { // dipanggil setiap ada sinyal FALLING di pin 2
    counts++;
}

#define LOG_PERIOD 60000  // cetak tiap detik

void setup() { //setup subprocedure
    counts = 0;
    Serial.begin(9600);
    pinMode(2, INPUT);  
    attachInterrupt(digitalPinToInterrupt(2), impulse, FALLING); //define external interrupts
    Serial.println("Start counter");
}

void loop() { //main cycle
    unsigned long currentMillis = millis();
    if (currentMillis - previousMillis > LOG_PERIOD) {
        previousMillis = currentMillis;
        Serial.println(counts);
        counts = 0;
    }
}

Pengukuran Radiasi Latar Belakang

Pertama adalah pengukuran radiasi latar belakang, yaitu radiasi alamiah yang sudah ada secara alami. Angka yang tercantum adalah CPM (count per minute), yaitu total partikel radioaktif yang terukur setiap menit.

Pengukuran radiasi latar belakang
Pengukuran radiasi latar belakang

Hasil CPM: 21.5

Pengukuran Radiasi Sensor Asap

Berikutnya adalah pengukuran radiasi dari Americium pada sensor asap. Sensor asap ada yang memanfaatkan Americium sebagai sumber partikel alpha yang mengionisasi partikel asap di udara. Sensor ini dikemas dengan logam, sehingga partikel alpha dan beta tidak dapat keluar. Yang keluar hanya partikel gamma yang lemah.

Geiger counter dan sensor asap
Geiger counter dan sensor asap

Berikut hasil pengukuran CPM

Pengukuran radiasi Americium pada sensor asap
Pengukuran radiasi Americium pada sensor asap

CPM rata-rata adalah 108.

Pengukuran Radiasi Elektroda Tungsten

Berikutnya adalah pengukuran radiasi dari batang elektroda tungsten.

Pengukuran radiasi elektroda tungsten
Pengukuran radiasi elektroda tungsten-thorium

Pengukuran radiasi thorium tanpa pelindung
Pengukuran radiasi thorium tanpa pelindung

Hasil CPM rata-rata: 161.4

Pengukuran Radiasi Elektroda Tungsten Melalui Kertas

Pengukuran radiasi thorium dengan pelindung kertas
Pengukuran radiasi elektroda tungsten-thorium dengan pelindung kertas

 

Pengukuran radiasi thorium dengan pelindung kertas
Pengukuran radiasi thorium dengan pelindung kertas

Rata-rata CPM adalah 129

Pengukuran Radiasi Pisang Ambon

Pisang adalah salah satu makanan yang cukup radioaktif, bahkan sampai ada istilah ‘Banana Equivalent Dose’, yaitu dosis radiasi yang setara dengan radiasi dari buah pisang. [https://en.wikipedia.org/wiki/Banana_equivalent_dose]

 

Pengukuran radiasi pisang ambon
Pengukuran radiasi pisang ambon

Radiasi pisang ambon
Radiasi pisang ambon

CPM rata-rata: 25.43

Pengukuran Radiasi Cangkir Keramik

Konon kabarnya keramik putih cukup radioaktif. [Kompas: Sebaiknya Waspada Keramik Putih Rawan Radioaktif]

Pengukuran radiasi cangkir keramik
Pengukuran radiasi cangkir keramik

Radiasi cangkir keramik
Radiasi cangkir keramik

CPM rata-rata: 38.6

 

Pengukuran radiasi kacang tanah
Pengukuran radiasi kacang tanah

Pengukuran radiasi piring keramik putih
Pengukuran radiasi piring keramik putih

 

 

Pengukuran radiasi piring keramik berwarna
Pengukuran radiasi piring keramik berwarna

Rangkuman

Berikut ini kumpulan hasil pengujian beberapa material.

Material yang diuji
CPM
Radiasi Latar Belakang 21.5
Sensor asap (Americium) 108
Elektroda tungsten (Thorium) 161.4
Elektroda tungsten (Thorium) melalui kertas 129
Pisang ambon 25.43
Kacang tanah 23.17
Cangkir keramik besar 38.6
Cangkir keramik kecil 25.75
Mangkok keramik besar 37.5
Piring keramik putih 26.7
Piring keramik warna 28.965

Beberapa hal menarik:

  • Sensor asap dan elektroda tungsten-thorium sudah diduga bersifat cukup radioaktif
  • Radiasi elektroda tungsten berkurang ketika diberi pelindung kertas. Dapat disimpulkan bahwa ada radiasi alpha/beta yang terhalang oleh kertas sehingga total radiasi berkurang.
  • Pisang dan kacang tanah ada radiasi sedikit.
  • Barang-barang keramik memancarkan radiasi walaupun tidak terlalu banyak

Referensi

 

Interupsi Eksternal pada Arduino Nano ATmega328

Pada Arduino terdapat beberapa mekanisme input di antaranya:

  • input digital dengan fungsi digitalRead()
  • input analog dengan fungsi analogRead()
  • input data serial dengan class Serial, fungsinya di antaranya Serial.read()
  • input digital dengan interupsi melalui fungsi attachInterrupt()

Di antara mekanisme input tersebut, yang mudah dipakai adalah digitalRead() dan analogRead(). Pada tulisan ini dibahas contoh sederhana untuk memakai input interupsi.

Deskripsi perangkat keras:

  • Board prosesor menggunakan Arduino Nano v.3
  • Input dari sebuah switch push button, active low (dihubungkan ke GND)
  • Input dari switch dihubungkan ke pin 2
  • Jumlah penekanan switch dikirim dengan port serial
  • Power supply didapat dari USB

Catatan

  • Pada Arduino Nano hanya pin 2 dan pin 3 saja yang dapat dipakai untuk input interupsi. Pada program ini yang dipakai adalah pin 2.

Cara kerja perangkat lunak

  • Setiap kali switch ditekan, maka pin 2 akan menjadi low
  • Setiap kali pin 2 low, akan muncul interupsi
  • Interupsi menyebabkan fungsi impulse() dipanggil, yang akan menaikkan nilai variabel counter.
  • Pada main loop, isi dari variabel counter dikirim setiap 1 detik.

Berikut ini contoh software yang menggunakan interupsi untuk input.

// ide dari http://www.rhelectronics.net/store/radiation-detector-geiger-counter-diy-kit-second-edition.html
unsigned long counts; //variable for GM Tube events
unsigned long previousMillis; //variable for time measurement

void impulse() { // dipanggil setiap ada sinyal FALLING di pin 2
    counts++;
}

#define LOG_PERIOD 1000  // cetak tiap detik

void setup() { //setup subprocedure
    counts = 0;
    Serial.begin(9600);
    pinMode(2, INPUT);  // tidak perlu sebenarnya, untuk jaga-jaga saja.
    digitalWrite(2, HIGH); // mengaktifkan internal pull up resistor
    attachInterrupt(digitalPinToInterrupt(2), impulse, FALLING); //define external interrupts
    Serial.println("Start counter");
}

void loop() { //main cycle
    unsigned long currentMillis = millis();
    if (currentMillis - previousMillis > LOG_PERIOD) {
        previousMillis = currentMillis;
        Serial.println(counts);
        counts = 0;
    }
}

Pada referensi fungsi attachInterrupt() terdapat contoh program yang menggunakan interupsi, namun di situ belum menggunakan port serial u untuk mengirim data, sehingga hasil penekanan tombol susah diamati.

Berikut ini foto percobaan dengan Arduino Nano dan sebuah switch push button.

Arduino Nano yang dihubungkan ke sebuah switch push button
Arduino Nano yang dihubungkan ke sebuah switch push button

 

Switch push button
Switch push button

Berikut ini contoh data yang dikirim melalui port serial, berisi jumlah penekanan tombol.

Output serial dari program
Output serial dari program

Referensi

ACS-712 Dan Arduino Untuk Mengukur Arus Bolak Balik (AC)

Sensor arus ACS-712 menggunakan prinsip Hall Effect untuk mengukur arus. Sensor ini dapat mengukur arus searah (DC) maupun bolak-balik (AC). Berikut ini contoh pengukuran arus AC dengan menggunakan sensor tersebut.

Pengukuran yang dilakukan adalah mengukur arus AC yang mengalir pada bohlam lampu pijar 100 watt dengan tegangan 220 volt AC. Tegangan ini cukup berbahaya sehingga pengukuran harus dilakukan dengan hati-hati.

Pengukuran Daya Lampu

Meskipun disebutkan bahwa daya lampu adalah 100 watt, perlu dipastikan apakah lampu itu benar-benar 100 watt. Daya dan tegangan lampu diukur dengan Energy Meter TS-838. 

Pengujian lampu 100 watt
Pengujian lampu 100 watt

 

Pengukuran daya lampu
Pengukuran daya lampu

Hasil pengukuran adalah sebagai berikut:

  • daya lampu 85.5 watt
  • tegangan pada lampu 205 volt

Berapakah arus?

Rumus P = V x I (asumsi faktor daya = 1)

I = P / V = 85.5 / 205 = 0.417 ampere

Tegangan di rumah 205 volt, cukup jauh di bawah 220 volt yang seharusnya. Berapakah daya jika tegangan benar-benar 220 volt?

Rumus P=V*V/R

R=V*V/P = 205 * 205 / 85.5 = 491.5 ohm

Jadi resistansi lampu adalah 491.5 ohm

Rumus P=V*V/R

P = 220 * 220 / 491.5 = 98.5 watt

Jadi daya lampu jika tegangan 220 volt adalah 98.5 watt, cukup dekat dengan daya seharusnya yaitu 100 watt.

Pengukuran Arus Dengan ACS-712

Tahap selanjutnya adalah mengukur arus dengan sensor ACS-712.

Rangkaian pengukuran adalah sebagai berikut. Sensor ACS-712 dipasang seri dengan lampu 100 watt. Output analog dari sensor ACS-712 dimasukkan ke input analog 0 (AN0) pada Arduino Nano.

Rangkaian lampu
Rangkaian lampu

Karena sifat arus yang bolak-balik dengan frekuensi 50 Hz, maka menurut teori Nyquist, pengukuran arus mesti dilakukan sekurang-kurangnya dengan frekuensi 100 Hz. Pada percobaan ini pengukuran arus dilakukan setiap 2 ms, sehingga frekuensi pengukuran adalah 500 Hz, cukup jauh di atas batas Nyquist.

Berikut ini software Arduino yang dipakai:

void setup() {
    Serial.begin(115200);
}
unsigned long previousMillis = 2;
unsigned long interval = 1;

void loop() {
    unsigned long currentMillis >= millis();
    if (currentMillis - previousMillis >= interval) {
        previousMillis = currentMillis;
        int sensorValue = analogRead(A0);
        Serial.println(sensorValue);
    }
}

Data dari port serial direkam di komputer dengan menggunakan software CoolTerm (http://freeware.the-meiers.org/). Kecepatan baud rate  yang digunakan adalah 115200 supaya tidak ada data yang hilang.

Tampilan CoolTerm
Tampilan CoolTerm

Berikut ini grafik pengukuran arus.

Pengukuran arus
Grafik pengukuran arus

Sensor ACS-712 mengeluarkan tegangan 2.5 volt jika arus tidak ada (0 ampere). Maka pada grafik nampak angkanya naik turun di sekitar 512.

Yang penting dari data tersebut adalah nilai puncak dan minimal:

  • nilai maksimal : 522
  • nilai minimal : 505

Nilai rata-rata terukur: 513.5 , masih dekat dengan nilai rata-rata teoritis yaitu 512.

Dari perbandingan antara pengukuran dengan Energy Meter TS-838 dan sensor ACS-712 maka selanjutnya dapat dilakukan kalibrasi terhadap angka yang dihasilkan dari sensor.

Referensi

Sensor Arus ACS-712

Sensor arus ACS-712
Sensor arus ACS-712

Sensor arus ACS-712
Sensor arus ACS-712

 

1, the current sensor chips: ACS712ELC-30A;
2, pin 30V power supply, on-board power indicator;
3, the module can measure the positive and negative 30 amps, corresponding to the analog output 100mV / A;
4, no test current through the output voltage is VCC / 2;
5, PCB board size: 31 (mm) x13 (mm);

Note: ACS712 is based on the principle of the Hall test, please use this field to avoid impact

Contoh penggunaan:

  • http://henrysbench.capnfatz.com/henrys-bench/acs712-current-sensor-user-manual/
  • http://henrysbench.capnfatz.com/henrys-bench/the-acs712-current-sensor-with-an-arduino/
  • http://www.puntoflotante.net/ACS712-CURRENT-SENSOR-FOR-18F2550.htm
  • http://embedded-lab.com/blog/?p=4469

Menyambungkan Arduino Nano ke sensor ACS-712
Menyambungkan Arduino Nano ke sensor ACS-712

Datasheet:

  • http://www.allegromicro.com/~/Media/Files/Datasheets/ACS712-Datasheet.ashx

Sumber:

  • http://www.aliexpress.com/item/Hot-Sale-ACS712-30A-Range-Hall-Current-Sensor-Module-ACS712-Module-For-Arduino-30A/2021483293.html

Perangkap Tikus Elektronik Dengan Sensor Cahaya

Perangkap tikus umumnya menggunakan trigger mekanik, berupa makanan yang kalau diinjak / ditarik akan menyebabkan perangkap bekerja.

Pada tulisan ini dibahas suatu perangkap tikus dengan trigger menggunakan sensor cahaya.

Prinsip kerjanya ada sumber cahaya dengan laser pointer, cahaya ini diterima oleh sensor cahaya dengan LDR (Light Dependent Resistor). Tegangan dari LDR ini diukur oleh prosesor berbasis Arduino UNO R3. Jika ada tikus yang lewat, maka cahaya tidak sampai ke sensor, dan akan dideteksi oleh prosesor. Prosesor kemudian menggerakkan motor servo untuk menarik trigger perangkap. Setelah itu pintu perangkap akan menutup.

Komponen utama:

  • perangkap tikus standar dengan pintu
  • prosesor Arduino UNO R3
  • Batere 9 volt untuk Arduino
  • Batere 6 volt untuk motor servo
  • Motor servo HS-311
  • Laser pointer sebagai sumber cahaya
  • LDR (Light Dependent Resistor) sebagai sensor cahaya
  • Resistor 10k untuk pembagi tegangan LDR
  • Breadboard untuk menaruh rangkaian
  • Papan kayu untuk dudukan
  • Sekrup
  • Lakban / Duct Tape

Perangkap Tikus Elektronik
Perangkap Tikus Elektronik

Perangkap Tikus Elektronik
Perangkap Tikus Elektronik

 

Sebagai sumber cahaya digunakan laser pointer, dengan pertimbangan berkas cahayanya kecil, tidak menyebar ke mana-mana.

Laser pointer
Laser pointer murah meriah sebagai sumber cahaya

LDR (Light Dependent Resistor) sebagai sensor cahaya.

LDR (light dependet resistor) sebagai sensor cahaya
LDR (light dependent resistor) sebagai sensor cahaya

LDR ditempatkan dalam tabung bekas spidol supaya hanya dapat menerima cahaya dari laser pointer, dan tidak terganggu cahaya sekitar.

Tabung LDR
Tabung LDR

Dudukan motor servo. Fungsi motor servo ini adalah menarik penahan pintu di jebakan tikus agar pintu tertutup.

Dudukan motor servo HS-311
Dudukan motor servo HS-311

Berikut ini perkakas yang diperlukan untuk pembuatan perangkap tikus ini

Perkakas untuk pembuatan
Perkakas untuk pembuatan

 

Jika anda lebih senang perangkap mekanikal yang konvensional, bisa dilihat-lihat di artikel Berbagai Macam Perangkap Tikus.

UPDATE 11 Juni 2015

Akhirnya berhasil juga menangkap si tikus. Perangkap dipasang 7 Juni 2015, tikus tertangkap 11 Juni 2015.

Tikus tertangkap dengan perangkap tikus elektronik
Tikus tertangkap dengan perangkap tikus elektronik

Si tikus terjepit ekornya di pintu perangkap. Nampaknya si tikus sempat mendengar suara motor servo, dan berusaha kabur, namun keburu terjepit di pintu. Untuk selanjutnya nampaknya perlu mencari motor / solenoid yang lebih cepat supaya si tikus tidak sempat berusaha kabur.