TTGO T8 ESP32 เป็นบอร์ดที่ใช้ ESP32 เป็นตัวขับเคลื่อนการทำงาน รองรับการเขียนโปรแกรมทั้ง ESP-IDF, Arduino และ MicroPython นอกจากนี้จุดเด่นของบอร์ดรุ่นนี้อยู่ที่ มีหน่วยความจำแรมภายนอกให้ใช้งาน 4MB มีช่องอ่าน TF Card ทำให้สามารถอ่าน/เขียน SD Card ได้ มีสวิตช์สำหรับเปิดปิดการทำงานของบอร์ด ปุ่มรีเซ็ต เสาอากาศแบบ 3 มิติ ช่องเสียบสายอากาศภายนอก และวงจรชาร์จ/ใช้งานแบตเตอรีแบบรีชาร์จ
บทความนี้แนะนำคุณสมบัติของบอร์ด และการเขียนโปรแกรมเพื่อใช้งานอุปกรณ์บนบอร์ดด้วยภาษาไพธอน โดยใช้ MicroPython รุ่น 1.13 และใช้ Thonny เป็นโปรแกรมสำหรับเชื่อมต่อกับบอร์ดและเขียนโปรแกรม
รูปต่อไปนี้เป็นบอร์ดและอุปกรณ์ที่มากับบอร์ดครับ
คุณสมบัติ
คุณสมบัติของ TTGO T8 ESP32 เป็นดังนี้
- หน่วยประมวลผลกลางเป็น Xtensa(R) Dual-Core 32-bit LX6
- รองรับ WiFi มาตรฐาน 802.11 b/g/n แบบ HT40
- รองรับ Bluetooth รุ่น 4.2 BR/EDR + BLE (Bluetooth Low Energy)
- ความถี่สัญญาณนาฬิกา 160MHz/240MHz
- หน่วยความจำแรมภายใน 520KB
- พื้นที่เก็บโปรแกรมแบบหน่วยความจำแฟลช (Flash) แบบ SPI ขนาด 4MB
- พื้นที่หน่วยความจำแรมแบบภายนอก PSRAM ขนาด 4MB
- พอร์ตใช้งานหรือ GPIO (General Purpose I/O) 36 ขา
- มีฮาร์ดแวร์ PWM 1 ช่อง และซอฟต์แวร์ PWM จำนวน 16 ช่อง
- รองรับบัส SPI จำนวน 4 ช่อง
- รองรับบัส I2C จำนวน 2 ช่อง
- รองรับบัส I2S จำนวน 2 ช่อง
- รองรับบัส UART จำนวน 2 ช่อง
- มีวงจรแปลสัญญาณแอนาล็อกเป็นดิจิทัลขนาด 12 บิต
- มีวงจรแปลงสัญญาณดิจิทัลเป็นแอนาล็อกที่มีความละเอียด 10 บิต จำนวน 2 ช่อง
- รองรับบัส CAN จำนวน 1 ช่อง
- รองรับ Touch Sensor
- มีเซ็นเซอร์ความเข้มของคลื่นแม่เหล็กในตัว
- มีเซ็นเซอร์อุณหภูมิภายในตัว
- ทำงานในอุณหภูมิ -40 ถึง 125 องศาเซลเซียส
- เสาอากาศแบบ 3D Antenna สำหรับสื่อสาร WiFi และ Bluetooth
- มีช่องเสียบ IPX/U.FL สำหรับเสียบเสาอากาศภายนอก
- มีช่อง TF Card สำหรับเสียบ Micro SD Card
- มีวงจรชาร์จแบตเตอรี่ Lithium รองรับกระแสสูงสุดที่ 500mA
- ใช้ชิป CP2104 สำหรับการแปลง USB to UART
การจัดเรียงขาของ TTGO T8 ESP32 เป็นดังนี้
การอ่านคุณสมบัติของบอร์ด
ตัวอย่างโปรแกรมอ่านข้อมูลรายละเอียดของบอร์ด TTFO T8 ESP32 เพื่อแสดงขนาดของแฟลชรอม หน่วยความจำแรม รุ่นของ MicroPython ความถี่ที่กำลังทำงาน อุณหภูมิ และค่าความเข้มแม่เหล็กเป็นดัง code6-1 และผลลัพธ์เป็นดังนี้
# code6-1
# (C) 2020, JarutEx
import esp
import esp32
import os
import sys
import machine as mc
import gc
import time
gc.enable()
gc.collect()
uname = os.uname()
mem_total = gc.mem_alloc()+gc.mem_free()
free_percent = str((gc.mem_free())/mem_total*100.0)+"%"
alloc_percent = str((gc.mem_alloc())/mem_total*100.0)+"%"
print("ID ............: {}".format(mc.unique_id()))
print("Platform ......: {}".format(sys.platform))
print("Version .......: {}".format(sys.version))
print("ROM Size ......: {} MBytes".format(esp.flash_size()/(1024*1024)))
print("Memory")
print(" total ......: {} Bytes or {} MBytes".format(mem_total, mem_total/(1024*1024)))
print(" usage ......: {} Bytes or {}".format( gc.mem_alloc(), alloc_percent))
print(" free .......: {} Bytes or {}".format( gc.mem_free(), free_percent))
print("system name ...: {}".format(uname.sysname))
print("node name .....: {}".format(uname.nodename))
print("release .......: {}".format(uname.release))
print("version .......: {}".format(uname.version))
print("machine .......: {}".format(uname.machine))
print("Frequency .....: {} MHz".format(mc.freq()/1000000.0))
print("Temperature ...: {}F".format(esp32.raw_temperature()))
print("Hall ..........: {}".format(esp32.hall_sensor()))
เขียนโปรแกรมอ่าน/เขียน SD-Card
ตัวอย่างโปรแกรมสำหรับการเข้าถึง SD Card และเขียนข้อมูลวันที่และเวลาลงไฟล์ log.txt และอ่านมาแสดงผลผ่าน console ดังภาพต่อไปนี้
#code6-2.py
# (C) 2020, JarutEx
import os
import time
from machine import SDCard
if (not('sd' in os.listdir())):
sd = SDCard()
os.mount(sd,'/sd')
print(os.listdir('/'))
print(os.listdir('/sd'))
if ('log.txt' in os.listdir('/sd')):
log = open('/sd/log.txt','a')
else:
log = open('/sd/log.txt','w')
lcTime = time.localtime()
log.write("date {}/{}/{} , time {}:{}:{}\n".format( lcTime[0], lcTime[1], lcTime[2], lcTime[4], lcTime[5], lcTime[6]))
log.close()
log = open('/sd/log.txt','r')
dLog = log.read()
log.close()
print("data from log.txt\n{}".format(dLog))
สรุป
จากคุณสมบัติของบอร์ด TTGO T8 ESP32 จะพบว่าเป็นบอร์ด ESP32 ที่มีหน่วยความจำปริมาณมาก และมีหน่วยอ่าน SD Card และภาคชาร์จแบตเตอรีมาพร้อมสรรพ จึงเป็นบอร์ดหนึ่งที่เหมาะกับการเขียนโปรแกรมด้วยการใช้หน่วยความจำปริมาณมาก เช่น ทำ Data Logger หรือใช้กับ TFT LCD ที่ต้องการหน่วยความจำสำหรับการทำ double buffer เป็นต้น
สุดท้ายนี้ถ้าผู้อ่านสนใจบอร์ดรุ่นนี้สามารถหาซื้อได้จากร้านค้าต่าง ๆ หรือสั่งซื้อจากทีม JarutEx ได้เช่นกันครับ เนื่องจากเราเน้นสั่งซื้อมาทดลอง/ผลิตฮาร์ดแวร์แและพัฒนาซอฟต์แวร์บนระบบ ESP32 ซึ่งมักสั่งมาเกินจำนวนที่ต้องการใช้ แบ่งกันได้ครับ
(C) 2020, โดย อ.ดนัย เจษฎาฐิติกุล/อ.จารุต บุศราทิจ
ปรับปรุง 2020-10-10