Lehel My Espressif DevKit for Windows + Eclipse IDE on kirjeldatud, kuidas võiks välja näha ESP8266 programmeerimiseks vajalik skeem. Nagu näha, on siin kasutusel DTR ja RTS, kuid enamikel USB adapteritel need puuduvad. Tegelikult saab ka ilma, aga siis on vaja käsitsi programmeerimise hetkeks GPIO0 ühendada GND-ga. Kui me tahame koodi automaatselt testima hakata, siis see ei tule muidugi kõne alla.

Näiteks minu Aliexpress USB to TTL UART module CH340G alla euro maksval adapteril puudusid DTR ja RTS klemmid samuti. Kui otsida CH340G andmelehte, siis on näha, et tegelikult on kiibil need olemas. Siin on väike kirjeldus, kuidas mul õnnestus adapterit täiendada.

Kõigepealt lõikasin breadboard juhtmed katki ja puhastasin otsad selliselt:

Seejärel jootsin juhtmed külge selliselt. Kasutasin kaherealist pesa, et ühendus oleks tugev.

Nüüd jootsin külge ka teised vajalikud juhtmed:

Mähkisin selle ka isoleerpaela sisse ning tulemus sai selline:

Kuidas pärast make flash käsklust järjestikpordist tulevat infot automaatselt lugeda? Selleks on vaia GPIO klemmi saata loogiline 1 ning siis teha reset. Sai selleks kirjutatud väike python skript. Python on meil nagunii olemas, kui kasutame ESP8266 UDK-d.

Panin faili asukohta C:\Espressif\utils\readport.py

#!/usr/bin/env python
import time
import serial
import threading

def main():
	t = threading.Thread(target=ticker)
	t.start()

	p = threading.Thread(target=readserial)
	p.daemon = True
	p.start()

	
def ticker():
	global counter
	while True:
		  counter += 1
		  time.sleep(1)
		  if counter > timeout:
			  quit()
			  

def readserial():
	global counter
	ser = serial.Serial('COM18',115200)
	ser.setDTR(False)
	# print "setDTR(False)"
	time.sleep(0.1)
	ser.setRTS(True)
	# print "ser.setRTS(True)"
	time.sleep(0.1)
	ser.setRTS(False)
	# print "ser.setRTS(False)"
	while True:
	  print ser.readline()
	  counter = 0
	ser.close()


timeout = 5
counter = 0
main()

See script teeb kõigepealt ESP8266-le reseti ning seejärel loeb COM18 pordist andmeid. Kui 5 sekundi jooksul midagi ei saabu, siis skript lõpetab. Näiteks selliselt on võimalik Unit Teste jooksutada. Võib-olla sellest põhjalikumalt mõnes järgmises artiklis.