TTGO T8 ESP32 เป็นบอร์ดที่ใช้ ESP32 เป็นตัวขับเคลื่อนการทำงาน รองรับการเขียนโปรแกรมทั้ง ESP-IDF, Arduino และ MicroPython นอกจากนี้จุดเด่นของบอร์ดรุ่นนี้อยู่ที่ มีหน่วยความจำแรมภายนอกให้ใช้งาน 4MB มีช่องอ่าน TF Card ทำให้สามารถอ่าน/เขียน SD Card ได้ มีสวิตช์สำหรับเปิดปิดการทำงานของบอร์ด ปุ่มรีเซ็ต เสาอากาศแบบ 3 มิติ ช่องเสียบสายอากาศภายนอก และวงจรชาร์จ/ใช้งานแบตเตอรีแบบรีชาร์จ

บทความนี้แนะนำคุณสมบัติของบอร์ด และการเขียนโปรแกรมเพื่อใช้งานอุปกรณ์บนบอร์ดด้วยภาษาไพธอน โดยใช้ MicroPython รุ่น 1.13 และใช้ Thonny เป็นโปรแกรมสำหรับเชื่อมต่อกับบอร์ดและเขียนโปรแกรม

รูปต่อไปนี้เป็นบอร์ดและอุปกรณ์ที่มากับบอร์ดครับ

ตัวอย่างการเชื่อมต่อกับแบตเตอรี

คุณสมบัติ

คุณสมบัติของ TTGO T8 ESP32 เป็นดังนี้

  1. หน่วยประมวลผลกลางเป็น Xtensa(R) Dual-Core 32-bit LX6
  2. รองรับ WiFi มาตรฐาน 802.11 b/g/n แบบ HT40
  3. รองรับ Bluetooth รุ่น 4.2 BR/EDR + BLE (Bluetooth Low Energy)
  4. ความถี่สัญญาณนาฬิกา 160MHz/240MHz
  5. หน่วยความจำแรมภายใน 520KB
  6. พื้นที่เก็บโปรแกรมแบบหน่วยความจำแฟลช (Flash) แบบ SPI ขนาด 4MB
  7. พื้นที่หน่วยความจำแรมแบบภายนอก PSRAM ขนาด 4MB
  8. พอร์ตใช้งานหรือ GPIO (General Purpose I/O) 36 ขา
  9. มีฮาร์ดแวร์ PWM 1 ช่อง และซอฟต์แวร์ PWM จำนวน 16 ช่อง
  10. รองรับบัส SPI จำนวน 4 ช่อง
  11. รองรับบัส I2C จำนวน 2 ช่อง
  12. รองรับบัส I2S จำนวน 2 ช่อง
  13. รองรับบัส UART จำนวน 2 ช่อง
  14. มีวงจรแปลสัญญาณแอนาล็อกเป็นดิจิทัลขนาด 12 บิต
  15. มีวงจรแปลงสัญญาณดิจิทัลเป็นแอนาล็อกที่มีความละเอียด 10 บิต จำนวน 2 ช่อง
  16. รองรับบัส CAN จำนวน 1 ช่อง
  17. รองรับ Touch Sensor
  18. มีเซ็นเซอร์ความเข้มของคลื่นแม่เหล็กในตัว
  19. มีเซ็นเซอร์อุณหภูมิภายในตัว
  20. ทำงานในอุณหภูมิ -40 ถึง 125 องศาเซลเซียส
  21. เสาอากาศแบบ 3D Antenna สำหรับสื่อสาร WiFi และ Bluetooth
  22. มีช่องเสียบ IPX/U.FL สำหรับเสียบเสาอากาศภายนอก
  23. มีช่อง TF Card สำหรับเสียบ Micro SD Card
  24. มีวงจรชาร์จแบตเตอรี่ Lithium รองรับกระแสสูงสุดที่ 500mA
  25. ใช้ชิป CP2104 สำหรับการแปลง USB to UART

การจัดเรียงขาของ TTGO T8 ESP32 เป็นดังนี้

การวางขาของ TTGO T8 ESP32 V1.7 คลิกที่นี่เพื่อชมภาพขนาดเต็ม

การอ่านคุณสมบัติของบอร์ด

ตัวอย่างโปรแกรมอ่านข้อมูลรายละเอียดของบอร์ด TTFO T8 ESP32 เพื่อแสดงขนาดของแฟลชรอม หน่วยความจำแรม รุ่นของ MicroPython ความถี่ที่กำลังทำงาน อุณหภูมิ และค่าความเข้มแม่เหล็กเป็นดัง code6-1 และผลลัพธ์เป็นดังนี้

ตัวอย่างผลลัพธ์การทำงานของ 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
#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