GPIO ย่อมาจาก general purpose input/output เรียกเป็นภาษาไทยง่ายๆว่า
พอร์ตเอนกประสงค์ คือเราสามารถควบคุม คอนโทรลให้เป็น ค่าต่างๆได้ และเรายังสามารถกำหนด GPIO เหล่านี้ให้เป็น INPUT หรือ OUTPUT ก็ได้
DevKitC ESP32 มี GPIO ทั้งหมด 32 ขา ในการใช้งาน GPIO มีสิ่งที่ต้องพึงระมัดระวังให้มากเป็นพิเศษก็คือเรื่อง ในการต่อสาย เนื่องจาก GPIO เหล่านี้ ใช้ไฟ 3.3 โวลต์ และทนแรงดันไฟฟ้าได้แค่ 3.3V เท่านั้น ดังนั้นถ้าหากใช้ไฟ 5 โวลต์ มาต่อเข้ากับ port นี้ก็จะพังทันที ไม่สามารถใช้งานได้อีกต่อไป และไม่สามารถเปลี่ยน หรือ ซ่อมแซมได้
การควบคุมโหมดใช้งานขา GPIO แบบดิจิตอล ในการใช้งานขา GPIO แบบดิจิตอล จำเป็นต้องมีการควบคุมหรือบอกให้ขา GPIO นั้น ๆ ได้รู้ว่าต้องการจะให้ใช้รับค่าดิจิตอลเข้ามา หรือจะให้เขียนค่าออกไป ซึ่งจะใช้คำสั่ง pinMode() ในการกำหนด
คำสั่ง pinMode() มีรูปแบบการใช้งานดังนี้
void pinMode( pin, mode);
จะเห็นได้ว่าฟังก์ชั่นมีค่าพารามิเตอร์ 2 ตัว คือ
pin – กำหนดหมายเลขขา GPIO ที่ต้องการควบคุม
mode – โหมดที่ต้องการกำหนดให้ขา GPIO ซึ่งสามารถเป็นได้ดังนี้
INPUT – กำหนดให้ขา GPIO มีสถานะเป็นอินพุต รอรับค่าเข้ามา
OUTPUT – กำหนดให้ขา GPIO มีสถานะเป็นเอาต์พุต รอเขียนค่าออกไป
การกำหนดขา GPIO ของ DevKitC ESP32 โดยดูได้จาก PINOUT ของ DevKitC ESP32 ตามภาพด้านล่าง
โดยให้ใช้ตัวเลขหลัง GPIO ในการกำหนดขาใช้งาน ตัวอย่างเช่น
pinMode(12, OUTPUT); คือ กำหนดให้ GPIO ขาที่ 12 ให้มีสถานะเป็นเอาต์พุต รอเขียนค่าออกไป
ส่วนใหญ่นิยมเขียนที่ ฟังก์ชั่น void setup()
การเขียนค่าเอาต์พุตแบบดิจิตอล เอาต์พุตแบบดิจิตอล คือการใช้งานขา GPIO ในการ เขียนค่าสถานะแบบดิจิตอล ซึ่งใช้งานตั้งอยู่บนพื้นฐานดิจิตอล คือค่าที่ได้หรือค่าที่เขียนจะมีแค่ 2 สถานะ คือสถานะ HIGH และสถานะ LOW ซึ่งขา GPIO จะรองรับการจ่ายกระแสสูงสุดเพียง 12mA เท่านั้น
ซึ่งการเขียนค่าเอาต์พุตแบบดิจิตอลจะใช้คำสั่ง digitalWrite() มีรูปแบบการใช้งานดังนี้
digitalWrite(pin, value);
มีค่าพารามิเตอร์ 2 ตัว คือ
pin – กำหนดหมายเลขขา GPIO ที่ต้องการเขียนค่า
value – ค่าที่ต้องการเขียนออกไป สามารถเป็นได้ดังนี้
HIGH – เขียนค่าลอจิก 1 หรือสถานะ HIGH หรือแรงดัน 3V ออกไป
LOW – เขียนค่าลอจิก 0 หรือสถานะ LOW หรือเทียบเท่ากับขากราว์ด
ตัวอย่างเช่น
digitalWrite(12, HIGH); คือ กำหนดให้ GPIO ขาที่ 12 ให้มีสถานะ HIGH หรือแรงดัน 3V ออกไป
ส่วนใหญ่นิยมเขียนที่ ฟังก์ชั่น void loop()
เตรียมความพร้อม ประกอบหุ่นยนต์ DevKitC ESP32 ลิงค์การประกอบหุ่นยนต์ DevKitC ESP32
https://robotsiam.blogspot.com/2017/11/esp32-4.html
ทดสอบการเคลื่อนที่ของหุ่นยนต์ และ เอาต์พุตแบบดิจิตอล เราจะใช้ หุ่นยนต์ DevKitC ESP32 ที่เราประกอบเสร็จแล้วในขั้นตอนที่ผ่านมา ทดสอบการเคลื่อนที่ของหุ่นยนต์ และ การใช้งานเอาต์พุตแบบดิจิตอล
### อุปกรณ์ที่ใช้ ### 1 .
4WD Smart Robot Car Chassis Kits 2.
DevKitC V2 ESP32 Development Board 3.
Micro USB Cable Wire 1m 4.
Breadboard 8.5CM x 5.5CM 400 holes // จำนวน 2 ชิ้น
5.
Motor Driver Module L298N 6.
สกรูหัวกลม+น็อตตัวเมีย ขนาด 3มม ยาว 12มม 7.
Jumper 20cm Male to Male 8.
Jumper 20cm Female to Male 9.
เพาเวอร์สวิตซ์สำหรับเปิดปิด 10.
รางถ่าน 18650 แบบ 2 ก้อน 11.
ถ่านชาร์จ 18650 Panasonic NCR18650B 3.7v 3400mAh // จำนวน 2 ก้อน
...
เชื่อมต่อสาย Micro USB ระหว่าง คอมพิวเตอร์ กับ DevKitC ESP32
เปิด โปรแกรม Arduino IDE ขึ้นมา เขียนโปรแกรม หรือ Sketch ตามโค้ดด้านล่างนี้
//ฟังก์ชั่นหลักในการควบคุมมอเตอร์
//ฟังก์ชั่นรองในการควบคุมมอเตอร์
digitalWrite(pinA1, HIGH);
digitalWrite(pinA2, LOW);
digitalWrite(pinA1, LOW);
digitalWrite(pinA2, HIGH);
digitalWrite(pinB1, HIGH);
digitalWrite(pinB2, LOW);
digitalWrite(pinB1, LOW);
digitalWrite(pinB2, HIGH);
digitalWrite(pinA1, LOW);
digitalWrite(pinA2, LOW);
digitalWrite(pinA1, HIGH);
digitalWrite(pinA2, HIGH);
digitalWrite(pinB1, LOW);
digitalWrite(pinB2, LOW);
digitalWrite(pinB1, HIGH);
digitalWrite(pinB2, HIGH);
ไปที่ Tools -> Board เลือก "ESP32 Dev Module"
ไปที่ Tools -> Port แล้วเลือกพอร์ตที่ปรากฏ (กรณีใช้เครื่องคอมพิวเตอร์ที่มี COM Port ให้เลือกตัวอื่นที่ไม่ใช่ COM1)
ในตัวอย่างเลือกเป็น "COM12"
ไปที่ Tools -> Upload Speed : เลือกเป็น "115200"
กดปุ่ม
เพื่ออัพโหลด
ตั้งชื่อไฟล์ เป็น Test_DevKitC_Robot_V1 -> Save โปรแกรม จะทำการ อัพโหลด
หากสามารถอัพโหลดโปรแกรมลงบอร์ดได้สำเร็จ จะแสดงคำว่า Done uploading. ที่แถบด้านล่าง
ใสถ่าน แบบ 18650 แรงดันไฟเฉลี่ย 3.7V (3400 mAh) จำนวน 2 ก้อน
แล้วทดสอบการทำงาน โปรแกรมนี้จะทำงานเพียง 1 ครั้ง ถ้าต้องการทดลองใหม่ให้ ปิดเปิด สวิทช์ไฟใหม่
ยกลงวางที่พื้นแล้วทดสอบ เปิด สวิทช์ไฟ ถ้าทุกอย่างถูกต้อง รถจะเคลื่อนที่ไปข้างหน้า-ถอยหลัง แล้ว เลี้ยวซ้าย แล้ว เลี้ยวขวา กลับสู่ตำแหน่งเดิม วีดีโอผลลัพธ์ ทดสอบการเคลื่อนที่ของหุ่นยนต์ DevKitC ESP32
...