Dalam rangka mencoba fitur ADC yang ada pada modul ESP8266 (WeMos D1 / ESP-12E), maka saya melakukan eksperimen singkat dengan rangkaian yang sangat sederhana. Simak foto board WeMos D1 Mini dengan rangkaian sensor suhu LM35DZ berikut ini.

wemos-lm35

Rangkaian sensor suhu LM35DZ hanya terdiri dari kapasitor decouple 100nF dan filter lowpass menggunakan RC. Keluaran filter lowpass dihubungkan ke pin Analog board WeMos D1 Mini yang terletak pada pin nomor 2. Perlu diketahui bahwa board WeMos D1 Mini memiliki rangkaian pembagi tegangan seperti ditunjukkan oleh gambar berikut ini (lihat bagian kanan gambar).

wemosminisch

Dengan adanya rangkaian pembagi tegangan yang terdiri dari resistor 220K dan 100K, maka tegangan yang masuk ke pin ADC menjadi 0.3125 kali tegangan aslinya.

Kode Program

Karena ESP8266 sudah dilengkapi dengan SDK yang komplit – plit – plit, maka membaca ADC bukanlah hal istimewa (sulit), cukup dengan memanggil fungsi system_adc_read(). Pada PunyForth, fungsi ini sudah dimasukkan dalam ekstensi Forth dengan definisi kata “adc-read ( — n )”. Implementasinya dalam bahasa assembly seperti ini:

defprimitive "adc-read",8,adcread,REGULAR
   CCALL sdk_system_adc_read
   DPUSH a2
   NEXT

Untuk membaca suhu, saya membuat sebuah perintah dengan definisi kata sebagai berikut:

: suhu ( -- )
    adc-read 96 * 330 /mod
    print: "Suhu = " . cr
    drop ;

Perintah (kata) suhu memanggil fungsi adc-read dan kemudian melakukan kalkulasi untuk mengkonversi nilai ADC menjadi suhu dalam satuan derajad Celcius. Rumus konversi tidak saya kalkulasi dengan komprehensif, yang terpenting data suhu yang ditampilkan tidak melenceng dari nilai sesungguhnya (hasil pengukuran analog).

Nah, tanpa banyak kata lagi, berikut saya berikan kode program eksperimen monitoring suhu selengkapnya.

\ WIFI-LM35DZ
\ EKSPERIMEN ESP8266 - MEMBACA SENSOR SUHU LM35DZ
\ Chandra MDE
\ http://blog.teknikelektrolinks.com

: suhu ( -- )
    adc-read 96 * 330 /mod
    print: "Suhu = " . cr
    drop ;
5000 ms
2 2 2 0 gpio-write gpio-mode
9600 0 uart-set-bps
str: "password" str: "linksys" wifi-connect
repl-start
variable: cntr
0 cntr !
0 task: task-led
0 task: task-timer
: timer-led
    activate
    begin
       1 cntr +!
       10 ms
       pause
    again
    deactivate ;
: imalive
    activate
    begin
       cntr @
       10 <= if 2 1 gpio-write then
       cntr @
       10 > if 2 0 gpio-write then
       cntr @
       20 > if 0 cntr ! then
       pause
    again
    deactivate ;
task-timer timer-led
task-led imalive

Dengan program di atas, maka modul ESP8266 (WeMos) akan secara otomatis terhubung ke jaringan Wi-Fi yang ada. Setelah proses booting dan membangun koneksitas dengan Wi-Fi Router berhasil, maka LED pada board WeMos akan berkedip-kedip. Ini menandakan bahwa sistem siap menerima perintah.

Seperti telah saya sampaikan sebelumnya, perintah yang saya sediakan hanya 1 saja, yakni: suhu. Ketika sebuah client yang terhubung ke sistem mengirimkan perintah suhu, maka sistem akan membalas dengan mengirimkan data suhu dalam bentuk string: “Suhu = xx“. Server penyedia data suhu ini dapat diakses melalui alamat IP dengan port 2017.

Testing – Ngetes Itu Penting

Untuk menguji sistem server data suhu pada eksperimen ini, saya menggunakan aplikasi Android TCP Telnet Terminal. Screenshot-nya dapat dilihat pada gambar berikut ini.

wifi-lm35

Bagaimana? Seru, bukan?

Eksperimen berikutnya yang akan saya sampaikan laporannya adalah WIFI-KEYPAD, yakni sistem keypad/tombol masukan dengan koneksi Wi-Fi. Sistem ini merupakan bagian dari unit masukan pada sistem antrian dengan koneksitas Wi-Fi.

Setelah WIFI-KEYPAD, selanjutnya saya ingin bereksperimen dengan modul sensor suhu dan kelembaban DHT11/DHT22 dan juga modul display LCD 16×2 dengan komunikasi I2C.

Semoga bermanfaat dan selamat berkarya.