Imam Ferianto Blogs

sekedar catatan kecil saja

Halo teman-teman, Ketemu lagi nih dengan tulisan lanjutan tentang pemrograman pada arduino board wemos ESP8266. Bagi kamu yang belum tahu apa itu wemos , saya sarankan untuk membaca tulisan saya tentang “otomasi murah dan hemat dengan esp8266” . dan “cara mudah memprogram arduino” tentunya.

Sesuai janji saya pada tulisan sebelumnya, kali ini kita akan membahas tentang pemrograman python pada wemos ESP8266.

Apa itu python ? python adalah bahasa pemrograman yang benar-benar simple terutama untuk math dan science dan ajaibnya micropython dapat dijalankan pada board berbasis ESP8266, keren banget kan, dengan python, ga bakal kamu ruwet lagi mikirin coding c++ untuk melakukan otomasi tentunya.

Untuk tutorial kali ini pastikan Python telah terinstall pada laptopmu. Bila kamu menggunakan mac os seperti saya ada baiknya membaca tulisan “cara cerdas menjalankan pythonscript pada jupiter network”  berikut Untuk menginstall python pada macbook kamu. Untuk environment windows dapat download installer pada python.org.

Jika python, sudah terinstall pastikan python dapat dipanggil pada terminal (macos)  atau cmd.exe (windows) dengan perintah

python

Tulisan kali ini akan membahasa beberapa bagian yaitu:

  1. tools yang dibutuhkan untuk develop Python pada wemos D1
  2. pengecekan port/com serial dan driver
  3. flash firmware esp8266 yang support python intepreter
  4. cara menjalankan script python langsung pada console wemos
  5. menaktifkan koneksi wifi client pada wemos
  6. mengaktifkan websocket webrpl untuk transfer file ke wemos D1
  7. menjalankan autostart program pada wemos dan contoh code
  8. cara lain mengupload script python dengan console
  9. reboot device
  10. mencoba script python web server

 

A. Tools yang dibutuhkan untuk develop Python pada wemos

Baiklah langsung saja kita bahas satu persatu ya. Pertama kali kita harus menginstall beberapa requirement tools selain python interpreter

#install screen console (screen ini berguna untuk koneksi ke console wemos)

brew install screen

#install esptool

pip install esptool

#install adafruit-ampy

pip install adafruit-ampy

 

B. Pengecekan Port/COM Serial dan Driver

Driver CH341 harus terlebih dahulu di-install (cara install dapat dibaca postingan sebelumnya) dan pastikan Port telah terdeteksi pada console agar bisa diprogram. Pada Mac OS Biasanya   ada di /dev/tty.wchusbserial1410  pada windows bisa dicek COM port tertentu misalnya :COM1.

ls /dev/| grep tty.wch

 

C. Flash firmware esp8266 yang support python intepreter

Supaya esp8266 dapat menjalankan script/program python yang kita tulis, maka kita harus melakukan re-flash firmwarenya dan mengganti dengan versi terbaru dari esp8266.  List download firmware dapat dilihat tautan berikut:

https://micropython.org/download/all/

Untuk wemos D1 karena memorynya kecil saya memilih menggunakan firmware esp8266-1m-20200902-v1.13.bin

mkdir micropython
cd micropython
wget -c https://micropython.org/resources/firmware/esp8266-1m-20200902-v1.13.bin
ls

Cara melakukan flashing menggunakan tools esp  ( esptool.py ) yang telah kita install sebelumnya diatas dengan pip. syntaknya adalah   esptool.py   [portcom]  [arguments] [filefirmware] ,  Oiya jangan lupa wemos harus sudah dihubungkan via kabel microusb.  Contohnya sebagai berikut:

esptool.py --port /dev/tty.wchusbserial1410 erase_flash
esptool.py --port /dev/tty.wchusbserial1410 --baud 921600 write_flash \
--flash_size=4MB -fm dio 0 esp8266-1m-20200902-v1.13.bin

Tunggu sampai flashing selesai dalam beberapa detik.

Jika flashing telah selesai maka langkah berikutnya adalah  mencoba menjalankan script test pada console wemos.

 

D. Cara menjalankan script python langsung pada console wemos

Untuk menjalankan script python secara langsung kita menggunakan tool screen untuk memanggil console python pada embeded python yang ada pada wemos.

screen /dev/tty.wchusbserial1410 115200

Setelah muncul console python ketikan perintah

print("hello world")

Bila muncul hasilnya “Hello World” , berarti instalasi / flash firmware esp8266 dengan embeded python telah berhasil.

 

E. Mengaktifkan koneksi wifi client pada wemos

Wemos mengunakan chipset esp8266 embeded wifi yang dapat berfungsi sebagai client maupun accesspoint. Pada tahap ini kita akan memfungsikan wemos menjadi client pada jaringan wifi kita, sehingga nanti dapat mengirimkan data sensor langsung ke server cloud atau server di jaringan LAN ataupun difungsikan standalone sebagai web server.

Pada console python yang tadi telah dibuka kita ketikan perintah sebagai berikut:

import network
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.scan()
wlan.connect('namassid', 'password')

(ganti parameter namassid dan password dengan kondisi jaringan wifi yang ada)

Tunggu sampai Wemos Terkoneksi dan mendapat IP dari DHCP server wifi.

kemudian tekan tombol Enter (atau Return)  dan  ketikan perintah selanjutnya.

wlan.isconnected()
wlan.ifconfig()

Hasil dari wlan.ifconfig() bagian pertama :  192.168.100.43 adalah Assign IP yang didapat dari DHCP Server Wifi.

Bila ada hasil seperti diatas berarti wemos kita sudah siap digunakan di jaringan. Tahapan selanjutnya adalah melakukan transfer file ke wemos D1 via websocket.

 

F. Mengaktifkan websocket webrpl untuk transfer file ke wemos D1

Webrpl merupakan library bawan dari firmware esp8266 yang berisi script untuk menjalankan websocket server yang defaultnya ada di port 8266.  Pada console python kita ketikan perintah sebagai berikut:

import webrepl
import webrepl_setup

jika ada pertanyaan enable as boot ketik           yang artinya enable webrpl saat booting wemos (auto startup).
kemudian akan diminta mengetikan 4-9 huruf password. masukan sembarang misalnya:  1234

jika ada pertanyaan lagi untuk reboot, pilih  y

tunggu sampai reboot dengan sempurna

 

G. Menjalankan autostart program pada wemos

Pada wemos esp8266 ada 2 file yang akan dijalankan otomatis saat boot dengan urutan sequential sebagai berikut:
(1) boot.py
(2) main.py

Boot.py biasanya digunakan untuk melakukan inisialisasi koneksi wifi , jadi  pastikan program yang anda upload diberi nama :  main.py    

Berikut adalah contoh kode untuk sebuah web server python yang dijalankan wemos.
(pastikan spasi dan tab sesuai, Kode program python sensitif terhadap tab dan space).

import machine
pins = [machine.Pin(i, machine.Pin.IN) for i in (0, 2, 4, 5, 12, 13, 14, 15)]

html = """<!DOCTYPE html>
<html>
    <head> <title>ESP8266 Pins</title> </head>
    <body> <h1>ESP8266 Pins</h1>
        <table border="1"> <tr><th>Pin</th><th>Value</th></tr> %s </table>
    </body>
</html>
"""

import socket
addr = socket.getaddrinfo('0.0.0.0', 80)[0][-1]

s = socket.socket()
s.bind(addr)
s.listen(1)

print('listening on', addr)

while True:
    cl, addr = s.accept()
    print('client connected from', addr)
    cl_file = cl.makefile('rwb', 0)
    while True:
        line = cl_file.readline()
        if not line or line == b'\r\n':
            break
    rows = ['<tr><td>%s</td><td>%d</td></tr>' % (str(p), p.value()) for p in pins]
    response = html % '\n'.join(rows)
    cl.send('HTTP/1.0 200 OK\r\nContent-type: text/html\r\n\r\n')
    cl.send(response)
    cl.close()

simpan kode diatas menjadi.  main.py

Buka console webrpl menggunakan tools, buka alamat (pada chrome)

http://micropython.org/webrepl/

Kemudian pada address masukan alamat IP  : 192.168.100.43         Port: 8266
atau jika menjadi lengkapnya. (ws://192.168.100.43:8266/ )

Klik tombol connect, masukan password: 1234     (yang sudah dibuat sebelumnya) dan
seharusnya akan muncul prompt python.

Untuk testing coba ketik  helloworld berikut :

print("Hello World")

 

Untuk Mengupload file kedalam micropython wemos  gunakan tombol [Choose File] disebelah kanan dan pilih

file main.py  kemudian klik tombol. [Send to Device] 

Tunggu sampai file di write ke devices selesai.

 

 

H. Cara lain mengupload script python dengan console

Download webrepl client micropython.

wget -c https://github.com/micropython/webrepl/archive/master.zip
unzip master.zip
cd webrepl-master

Cara mengupload code:

python webrepl_cli.py main.py 192.168.100.43:/main.py

 

I. Reboot wemos D1

untuk melakukan reboot ketikan kode berikut pada console python

import machine
machine.reset()

 

J. Mencoba hasil script webserver python

untuk mencoba output dari script main.py diatas yang berisi kode untuk menjalankan webserver yang sudah diupload ke device wemos kita bisa mengetikan  alamat. http://192.168.100.43/    pada browser chrome kamu.

Dan Voilaa…. Ajaib kan !!!. Webserver python secara ajaib sudah running otomatis di device wemos D1 seharga 35 rb gaes…..

Kode main.py diatas dapat diisi sembarang kode yang ingin dijalankan sebagai autostart script python.

Demikian tulisan singkat saya tentang Having Fun python coding pada esp8266, Semoga bermanfaat.

Sampai jumpa di tulisan lainnya yang lebih Fun lagi.

 

HAPPY CODING !

 

Referensi: