การเริ่มต้นใช้งานพื้นฐานของ ESP32
ชุด
รายการบรรจุภัณฑ์
บทนำ ESP32
ใหม่สำหรับ ESP32 เริ่มที่นี่! ESP32 คือไมโครคอนโทรลเลอร์ System on a Chip (SoC) ราคาประหยัดและใช้พลังงานต่ำที่พัฒนาโดย Espressif ซึ่งมีคุณสมบัติไร้สาย Wi-Fi และ Bluetooth และโปรเซสเซอร์แบบดูอัลคอร์ หากคุณคุ้นเคยกับ ESP8266 ESP32 คือตัวต่อจาก ESPXNUMX ซึ่งเต็มไปด้วยคุณสมบัติใหม่มากมายข้อมูลจำเพาะของ ESP32
หากคุณต้องการข้อมูลทางเทคนิคและเฉพาะเจาะจงมากขึ้น คุณสามารถดูข้อมูลจำเพาะโดยละเอียดของ ESP32 ต่อไปนี้ได้ (แหล่งที่มา: http://esp32.net/)—เพื่อดูรายละเอียดเพิ่มเติม ตรวจสอบแผ่นข้อมูล):
- การเชื่อมต่อไร้สาย WiFi: อัตราข้อมูล 150.0 Mbps พร้อม HT40
- บลูทูธ: BLE (บลูทูธพลังงานต่ำ) และบลูทูธแบบคลาสสิก
- หน่วยประมวลผล: ไมโครโปรเซสเซอร์ Tensilica Xtensa Dual-Core 32-bit LX6 ทำงานที่ความถี่ 160 หรือ 240 MHz
- หน่วยความจำ:
- ROM: 448 KB (สำหรับการบูตและฟังก์ชั่นหลัก)
- SRAM: 520 KB (สำหรับข้อมูลและคำแนะนำ)
- RTC fas SRAM: 8 KB (สำหรับจัดเก็บข้อมูลและ CPU หลักระหว่างการบูต RTC จากโหมดพักลึก)
- SRAM RTC ที่ช้า: 8KB (สำหรับการเข้าถึงโคโปรเซสเซอร์ระหว่างโหมดพักลึก) eFuse: 1 Kbit (ซึ่ง 256 บิตใช้สำหรับระบบ (ที่อยู่ MAC และการกำหนดค่าชิป) และ 768 บิตที่เหลือถูกสงวนไว้สำหรับแอปพลิเคชันของลูกค้า รวมถึงการเข้ารหัสแฟลชและ ID ชิป)
แฟลชฝัง: แฟลชเชื่อมต่อภายในผ่าน IO16, IO17, SD_CMD, SD_CLK, SD_DATA_0 และ SD_DATA_1 บน ESP32-D2WD และ ESP32-PICO-D4
- 0 MiB (ชิป ESP32-D0WDQ6, ESP32-D0WD และ ESP32-S0WD)
- 2 MiB (ชิป ESP32-D2WD)
- 4 MiB (โมดูล ESP32-PICO-D4 SiP)
พลังงานต่ำ: ช่วยให้คุณยังคงใช้การแปลง ADC ได้ เช่นampเล ในระหว่างการนอนหลับลึก
อินพุต/เอาต์พุตอุปกรณ์ต่อพ่วง:
- อินเทอร์เฟซต่อพ่วงพร้อม DMA ซึ่งรวมถึงการสัมผัสแบบ capacitive
- ADC (ตัวแปลงอนาล็อกเป็นดิจิตอล)
- DAC (ตัวแปลงสัญญาณดิจิตอลเป็นแอนะล็อก)
- I²C (วงจรรวมระหว่างกัน)
- UART (ตัวรับ/ตัวส่งสัญญาณแบบอะซิงโครนัสสากล)
- SPI (อินเทอร์เฟซอุปกรณ์ต่อพ่วงแบบอนุกรม)
- I²S (เสียงอินทิเกรตอินเตอร์ชิป)
- RMII (อินเทอร์เฟซอิสระจากสื่อที่ลดลง)
- PWM (การปรับความกว้างของพัลส์)
ความปลอดภัย: ตัวเร่งความเร็วฮาร์ดแวร์สำหรับ AES และ SSL/TLS
บอร์ดพัฒนา ESP32
ESP32 หมายถึงชิป ESP32 เปล่า อย่างไรก็ตาม คำว่า "ESP32" ยังใช้เพื่ออ้างถึงบอร์ดพัฒนา ESP32 อีกด้วย การใช้ชิปเปล่า ESP32 ไม่ใช่เรื่องง่ายหรือใช้งานได้จริง โดยเฉพาะอย่างยิ่งเมื่อต้องเรียนรู้ ทดสอบ และผลิตต้นแบบ ส่วนใหญ่แล้ว คุณจะต้องการใช้บอร์ดพัฒนา ESP32
เราจะใช้บอร์ด ESP32 DEVKIT V1 เป็นข้อมูลอ้างอิง รูปภาพด้านล่างแสดงบอร์ด ESP32 DEVKIT V1 เวอร์ชันที่มีพิน GPIO 30 พินข้อมูลจำเพาะ – ESP32 DEVKIT V1
ตารางต่อไปนี้แสดงสรุปคุณลักษณะและข้อมูลจำเพาะของบอร์ด ESP32 DEVKIT V1 DOIT:
จำนวนแกน | 2 (ดูอัลคอร์) |
ไวไฟ | 2.4 GHz สูงสุด 150 Mbits/s |
บลูทูธ | BLE (Bluetooth Low Energy) และ Bluetooth รุ่นเก่า |
สถาปัตยกรรม | 32 บิต |
ความถี่สัญญาณนาฬิกา | สูงสุดถึง 240 เมกะเฮิรตซ์ |
แรม | 512 กิโลไบต์ |
หมุด | 30(ขึ้นอยู่กับรุ่น) |
อุปกรณ์ต่อพ่วง | หน้าจอสัมผัสแบบ Capacitive, ADC (ตัวแปลงอนาล็อกเป็นดิจิตอล), DAC (ตัวแปลงดิจิตอลเป็นอนาล็อก), 12C (วงจรรวมแบบอินเตอร์), UART (ตัวรับ/ตัวส่งแบบอะซิงโครนัสสากล), CAN 2.0 (เครือข่ายพื้นที่ควบคุม), SPI (อินเทอร์เฟซอุปกรณ์ต่อพ่วงแบบอนุกรม), 12S (อินทิเกรตอินเตอร์ไอซี) เสียง), RMII (อินเทอร์เฟซอิสระจากสื่อที่ลดลง), PWM (การปรับความกว้างของพัลส์) และอื่นๆ |
ปุ่มในตัว | ปุ่ม RESET และ BOOT |
ไฟ LED ในตัว | ไฟ LED สีน้ำเงินในตัวเชื่อมต่อกับ GPIO2 ไฟ LED สีแดงในตัวที่แสดงว่ามีไฟอยู่ในบอร์ด |
USB เป็น UART สะพาน |
ซีพี2102 |
มาพร้อมกับอินเทอร์เฟซ microUSB ที่คุณสามารถใช้เพื่อเชื่อมต่อบอร์ดกับคอมพิวเตอร์ของคุณเพื่ออัพโหลดโค้ดหรือจ่ายไฟ
ชิปนี้ใช้ชิป CP2102 (USB to UART) เพื่อสื่อสารกับคอมพิวเตอร์ของคุณผ่านพอร์ต COM โดยใช้อินเทอร์เฟซแบบอนุกรม ชิปยอดนิยมอีกตัวหนึ่งคือ CH340 ตรวจสอบว่าชิปแปลง USB เป็น UART บนบอร์ดของคุณคืออะไร เพราะคุณจะต้องติดตั้งไดรเวอร์ที่จำเป็นเพื่อให้คอมพิวเตอร์ของคุณสามารถสื่อสารกับบอร์ดได้ (ข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้ในคู่มือนี้)
บอร์ดนี้ยังมาพร้อมกับปุ่ม RESET (อาจติดป้ายว่า EN) เพื่อรีสตาร์ทบอร์ดและปุ่ม BOOT เพื่อนำบอร์ดเข้าสู่โหมดแฟลช (มีให้เพื่อรับรหัส) โปรดทราบว่าบอร์ดบางตัวอาจไม่มีปุ่ม BOOT
นอกจากนี้ยังมาพร้อมกับไฟ LED สีน้ำเงินในตัวที่เชื่อมต่อภายในกับ GPIO 2 ไฟ LED นี้มีประโยชน์ในการดีบักเพื่อให้ได้ผลลัพธ์ทางกายภาพที่มองเห็นได้ นอกจากนี้ยังมีไฟ LED สีแดงที่สว่างขึ้นเมื่อคุณจ่ายไฟให้กับบอร์ดพินเอาต์ ESP32
อุปกรณ์ต่อพ่วง ESP32 ประกอบด้วย:
- ช่องแปลงอนาล็อกเป็นดิจิตอล (ADC) 18 ช่อง
- อินเทอร์เฟซ SPI 3 ตัว
- 3 UART อินเทอร์เฟซ
- อินเทอร์เฟซ I2C 2 ตัว
- ช่องเอาท์พุต PWM 16 ช่อง
- ตัวแปลงดิจิตอลเป็นแอนะล็อก (DAC) 2 ตัว
- อินเทอร์เฟซ I2S 2 ตัว
- GPIO การตรวจจับแบบ Capacitive จำนวน 10 ตัว
ฟีเจอร์ ADC (ตัวแปลงแอนะล็อกเป็นดิจิทัล) และ DAC (ตัวแปลงดิจิทัลเป็นแอนะล็อก) ได้รับมอบหมายให้กับพินคงที่เฉพาะ อย่างไรก็ตาม คุณสามารถตัดสินใจได้ว่าพินใดเป็น UART, I2C, SPI, PWM เป็นต้น – คุณเพียงแค่ต้องกำหนดพินเหล่านี้ในโค้ด ซึ่งทำได้ด้วยฟีเจอร์มัลติเพล็กซ์ของชิป ESP32
แม้ว่าคุณจะสามารถกำหนดคุณสมบัติของพินบนซอฟต์แวร์ได้ แต่ก็มีพินที่ได้รับการกำหนดไว้ตามค่าเริ่มต้นดังที่แสดงในรูปต่อไปนี้นอกจากนี้ ยังมีพินที่มีคุณสมบัติเฉพาะที่ทำให้พินเหล่านี้เหมาะสมหรือไม่เหมาะกับโครงการใดโครงการหนึ่ง ตารางต่อไปนี้แสดงพินที่เหมาะที่สุดสำหรับใช้เป็นอินพุตและเอาต์พุต และพินใดที่คุณจำเป็นต้องระมัดระวัง
พินที่เน้นเป็นสีเขียวสามารถใช้งานได้ พินที่เน้นเป็นสีเหลืองสามารถใช้งานได้ แต่คุณต้องใส่ใจเพราะพินเหล่านี้อาจทำงานผิดปกติโดยเฉพาะอย่างยิ่งเมื่อบูตเครื่อง ไม่แนะนำให้ใช้พินที่เน้นเป็นสีแดงเป็นอินพุตหรือเอาต์พุต
จีพี ไอโอ | ป้อนข้อมูล | เอาท์พุต | หมายเหตุ |
0 | ดึงขึ้นมา | OK | ส่งสัญญาณ PWM ขณะบู๊ต ต้องเป็นระดับต่ำเพื่อเข้าสู่โหมดกระพริบ |
1 | พิน TX | OK | ดีบักเอาท์พุตตอนบูต |
2 | OK | OK | เชื่อมต่อกับ LED บนบอร์ด จะต้องปล่อยให้ลอยหรือ LOW เพื่อเข้าสู่โหมดกระพริบ |
3 | OK | พิน RX | สูงที่บูต |
4 | OK | OK | |
5 | OK | OK | ส่งสัญญาณ PWM ที่ขายึดบูต |
12 | OK | OK | บูตล้มเหลวหากดึงสูง หมุดรัด |
13 | OK | OK | |
14 | OK | OK | ส่งสัญญาณ PWM ขณะบูต |
15 | OK | OK | ส่งสัญญาณ PWM ที่ขายึดบูต |
16 | OK | OK | |
17 | OK | OK | |
18 | OK | OK | |
19 | OK | OK | |
21 | OK | OK | |
22 | OK | OK | |
23 | OK | OK | |
25 | OK | OK | |
26 | OK | OK | |
27 | OK | OK | |
32 | OK | OK | |
33 | OK | OK | |
34 | OK | อินพุตเท่านั้น | |
35 | OK | อินพุตเท่านั้น | |
36 | OK | อินพุตเท่านั้น | |
39 | OK | อินพุตเท่านั้น |
อ่านต่อเพื่อดูรายละเอียดและการวิเคราะห์แบบเจาะลึกเพิ่มเติมเกี่ยวกับ ESP32 GPIO และฟังก์ชันต่างๆ ของมัน
อินพุตเฉพาะพิน
GPIO 34 ถึง 39 เป็น GPI – พินอินพุตเท่านั้น พินเหล่านี้ไม่มีตัวต้านทานแบบดึงขึ้นหรือดึงลงภายใน ไม่สามารถใช้พินเหล่านี้เป็นเอาต์พุตได้ ดังนั้นให้ใช้พินเหล่านี้เป็นอินพุตเท่านั้น:
- GPIO34
- GPIO35
- GPIO36
- GPIO39
SPI flash รวมอยู่ใน ESP-WROOM-32
GPIO 6 ถึง GPIO 11 จะปรากฏในบอร์ดพัฒนา ESP32 บางบอร์ด อย่างไรก็ตาม พินเหล่านี้เชื่อมต่อกับแฟลช SPI ในตัวบนชิป ESP-WROOM-32 และไม่แนะนำให้ใช้ในวัตถุประสงค์อื่น ดังนั้น อย่าใช้พินเหล่านี้ในโครงการของคุณ:
- GPIO 6 (SCK/CLK)
- GPIO7 (SDO/SD0) อินเทอร์เฟซผู้ใช้
- จีพีโอ8 (SDI/SD1)
- GPIO9 (SHD/SD2) อินเทอร์เฟซ
- GPIO10 (SWP/SD3) อินเตอร์เฟซ
- GPIO 11 (CSC/CMD)
GPIO แบบสัมผัสแบบ Capacitive
ESP32 มีเซ็นเซอร์สัมผัสแบบ capacitive ภายใน 10 ตัว เซ็นเซอร์เหล่านี้สามารถตรวจจับการเปลี่ยนแปลงในสิ่งของที่มีประจุไฟฟ้า เช่น ผิวหนังของมนุษย์ ดังนั้น จึงสามารถตรวจจับการเปลี่ยนแปลงที่เกิดจากการสัมผัสกับ GPIO ด้วยนิ้วได้ พินเหล่านี้สามารถรวมเข้ากับแผง capacitive ได้อย่างง่ายดายและแทนที่ปุ่มกลไกได้ พินสัมผัสแบบ capacitive ยังสามารถใช้เพื่อปลุก ESP32 จากโหมดพักลึกได้อีกด้วย เซ็นเซอร์สัมผัสภายในเหล่านี้เชื่อมต่อกับ GPIO เหล่านี้:
- T0 (จีพีโอ 4)
- T1 (จีพีโอ 0)
- T2 (จีพีโอ 2)
- T3 (จีพีโอ 15)
- T4 (จีพีโอ 13)
- T5 (จีพีโอ 12)
- T6 (จีพีโอ 14)
- T7 (จีพีโอ 27)
- T8 (จีพีโอ 33)
- T9 (จีพีโอ 32)
ตัวแปลงอนาล็อกเป็นดิจิตอล (ADC)
ESP32 มีช่องอินพุต ADC 18 x 12 บิต (ในขณะที่ ESP8266 มีเพียง 1 x 10 บิต ADC) เหล่านี้คือ GPIO ที่สามารถใช้เป็น ADC และช่องที่เกี่ยวข้อง:
- ADC1_CH0 (จีพีโอ 36)
- ADC1_CH1 (จีพีโอ 37)
- ADC1_CH2 (จีพีโอ 38)
- ADC1_CH3 (จีพีโอ 39)
- ADC1_CH4 (จีพีโอ 32)
- ADC1_CH5 (จีพีโอ 33)
- ADC1_CH6 (จีพีโอ 34)
- ADC1_CH7 (จีพีโอ 35)
- ADC2_CH0 (จีพีโอ 4)
- ADC2_CH1 (จีพีโอ 0)
- ADC2_CH2 (จีพีโอ 2)
- ADC2_CH3 (จีพีโอ 15)
- ADC2_CH4 (จีพีโอ 13)
- ADC2_CH5 (จีพีโอ 12)
- ADC2_CH6 (จีพีโอ 14)
- ADC2_CH7 (จีพีโอ 27)
- ADC2_CH8 (จีพีโอ 25)
- ADC2_CH9 (จีพีโอ 26)
บันทึก: ไม่สามารถใช้พิน ADC2 ได้เมื่อใช้ Wi-Fi ดังนั้นหากคุณใช้ Wi-Fi และประสบปัญหาในการรับค่าจาก GPIO ของ ADC2 คุณอาจลองใช้ GPIO ของ ADC1 แทน ซึ่งน่าจะช่วยแก้ปัญหาของคุณได้
ช่องอินพุต ADC มีความละเอียด 12 บิต ซึ่งหมายความว่าคุณสามารถรับค่าการอ่านแอนะล็อกได้ตั้งแต่ 0 ถึง 4095 โดยที่ 0 เท่ากับ 0V และ 4095 เท่ากับ 3.3V นอกจากนี้ คุณยังสามารถตั้งค่าความละเอียดของช่องสัญญาณในโค้ดและช่วง ADC ได้อีกด้วย
พิน ESP32 ADC ไม่มีพฤติกรรมเชิงเส้น คุณอาจไม่สามารถแยกแยะระหว่าง 0 และ 0.1V หรือระหว่าง 3.2 และ 3.3V ได้ คุณต้องคำนึงถึงสิ่งนี้เมื่อใช้พิน ADC คุณจะได้รับพฤติกรรมที่คล้ายกับที่แสดงในรูปต่อไปนี้ตัวแปลงดิจิตอลเป็นแอนะล็อก (DAC)
ESP2 มีช่อง DAC 8 x 32 บิตเพื่อแปลงสัญญาณดิจิทัลเป็นสัญญาณอนาล็อกtagสัญญาณเอาท์พุต เหล่านี้คือช่อง DAC:
- DAC1 (GPIO25)
- DAC2 (GPIO26)
GPIO ของ RTC
ESP32 รองรับ RTC GPIO GPIO ที่ส่งไปยังระบบย่อยพลังงานต่ำ RTC สามารถใช้งานได้เมื่อ ESP32 อยู่ในโหมดพักลึก GPIO RTC เหล่านี้สามารถใช้เพื่อปลุก ESP32 จากโหมดพักลึกเมื่อโหมดพักต่ำพิเศษ
โคโปรเซสเซอร์พลังงาน (ULP) กำลังทำงาน GPIO ต่อไปนี้สามารถใช้เป็นแหล่งปลุกระบบภายนอกได้
- RTC_GPIO0 (GPIO36)
- RTC_GPIO3 (GPIO39)
- RTC_GPIO4 (GPIO34)
- RTC_GPIO5 (GPIO35)
- RTC_GPIO6 (GPIO25)
- RTC_GPIO7 (GPIO26)
- RTC_GPIO8 (GPIO33)
- RTC_GPIO9 (GPIO32)
- RTC_GPIO10 (GPIO4)
- RTC_GPIO11 (GPIO0)
- RTC_GPIO12 (GPIO2)
- RTC_GPIO13 (GPIO15)
- RTC_GPIO14 (GPIO13)
- RTC_GPIO15 (GPIO12)
- RTC_GPIO16 (GPIO14)
- RTC_GPIO17 (GPIO27)
พีดับบลิวเอ็ม
ตัวควบคุม ESP32 LED PWM มีช่องสัญญาณอิสระ 16 ช่องที่สามารถกำหนดค่าให้สร้างสัญญาณ PWM ที่มีคุณสมบัติต่างกันได้ พินทั้งหมดที่สามารถทำหน้าที่เป็นเอาต์พุตสามารถใช้เป็นพิน PWM ได้ (GPIO 34 ถึง 39 ไม่สามารถสร้าง PWM ได้)
ในการตั้งค่าสัญญาณ PWM คุณจำเป็นต้องกำหนดพารามิเตอร์เหล่านี้ในโค้ด:
- ความถี่ของสัญญาณ;
- รอบการทำงาน;
- ช่องสัญญาณ PWM;
- GPIO ที่คุณต้องการส่งสัญญาณออก
ไอทูซี
ESP32 มีช่อง I2C สองช่อง และสามารถตั้งค่าพินใดๆ ให้เป็น SDA หรือ SCL ได้ เมื่อใช้ ESP32 กับ Arduino IDE พิน I2C เริ่มต้นจะเป็นดังนี้:
- จีพีไอโอ 21 (SDA)
- จีพีไอโอ 22 (SCL)
หากต้องการใช้พินอื่นเมื่อใช้ไลบรารีสาย คุณเพียงแค่โทร:
Wire.begin(SDA, SCL);
เอสพีไอ
โดยค่าเริ่มต้นการแมปพินสำหรับ SPI คือ:
เอสพีไอ | MOSI | มิโซะ | ซีแอลเค | CS |
วีเอสพีไอ | GPIO23 | GPIO19 | GPIO18 | GPIO5 |
เอชเอสพีไอ | GPIO13 | GPIO12 | GPIO14 | GPIO15 |
ขัดจังหวะ
GPIO ทั้งหมดสามารถกำหนดค่าให้เป็นการขัดจังหวะได้
หมุดรัด
ชิป ESP32 มีพินรัดดังต่อไปนี้:
- GPIO 0 (ต้องเป็น LOW เพื่อเข้าสู่โหมดบูต)
- GPIO 2 (ต้องลอยหรือต่ำในระหว่างการบูต)
- GPIO4
- GPIO 5 (ต้องเป็น HIGH ในระหว่างการบูต)
- GPIO 12 (ต้องเป็นระดับต่ำในระหว่างการบูต)
- GPIO 15 (ต้องเป็น HIGH ในระหว่างการบูต)
พินเหล่านี้ใช้เพื่อใส่ ESP32 ลงในโหมด bootloader หรือโหมดแฟลช ในบอร์ดพัฒนาส่วนใหญ่ที่มี USB/Serial ในตัว คุณไม่จำเป็นต้องกังวลเกี่ยวกับสถานะของพินเหล่านี้ บอร์ดจะใส่พินในสถานะที่ถูกต้องสำหรับโหมดแฟลชหรือโหมดบูต สามารถดูข้อมูลเพิ่มเติมเกี่ยวกับการเลือกโหมดบูตของ ESP32 ได้ที่นี่
อย่างไรก็ตาม หากคุณมีอุปกรณ์ต่อพ่วงที่เชื่อมต่อกับพินเหล่านี้ คุณอาจประสบปัญหาในการพยายามอัปโหลดโค้ดใหม่ การแฟลช ESP32 ด้วยเฟิร์มแวร์ใหม่ หรือการรีเซ็ตบอร์ด หากคุณมีอุปกรณ์ต่อพ่วงบางส่วนที่เชื่อมต่อกับพินสายรัด และคุณประสบปัญหาในการอัปโหลดโค้ดหรือการแฟลช ESP32 อาจเป็นเพราะอุปกรณ์ต่อพ่วงเหล่านั้นขัดขวางไม่ให้ ESP32 เข้าสู่โหมดที่ถูกต้อง อ่านเอกสารคู่มือการเลือกโหมดการบูตเพื่อแนะนำคุณในทิศทางที่ถูกต้อง หลังจากรีเซ็ต แฟลช หรือบูต พินเหล่านั้นจะทำงานตามที่คาดไว้
พินสูงที่บูท
GPIO บางตัวเปลี่ยนสถานะเป็นสูงหรือส่งสัญญาณ PWM ขณะบูตหรือรีเซ็ต
ซึ่งหมายความว่าหากคุณมีเอาท์พุตเชื่อมต่อกับ GPIO เหล่านี้ คุณอาจได้รับผลลัพธ์ที่ไม่คาดคิดเมื่อ ESP32 รีเซ็ตหรือบูต
- GPIO1
- GPIO3
- GPIO5
- GPIO 6 ถึง GPIO 11 (เชื่อมต่อกับหน่วยความจำแฟลช SPI แบบบูรณาการ ESP32 – ไม่แนะนำให้ใช้)
- GPIO14
- GPIO15
เปิดใช้งาน (EN)
พินเปิดใช้งาน (EN) คือพินเปิดใช้งานของตัวควบคุมแรงดันไฟ 3.3V พินนี้ถูกดึงขึ้น ดังนั้นให้เชื่อมต่อกับกราวด์เพื่อปิดการใช้งานตัวควบคุมแรงดันไฟ 3.3V ซึ่งหมายความว่าคุณสามารถใช้พินนี้ที่เชื่อมต่อกับปุ่มกดเพื่อรีสตาร์ท ESP32 ของคุณได้ เช่นampเล.
กระแส GPIO ที่ดึง
กระแสสูงสุดที่แน่นอนที่ถูกดึงต่อ GPIO คือ 40mA ตามส่วน “เงื่อนไขการทำงานที่แนะนำ” ในแผ่นข้อมูล ESP32
เซ็นเซอร์เอฟเฟกต์ฮอลล์ในตัว ESP32
ESP32 ยังมีเซ็นเซอร์เอฟเฟกต์ฮอลล์ในตัวที่ตรวจจับการเปลี่ยนแปลงของสนามแม่เหล็กในบริเวณโดยรอบ
บอร์ด Arduino IDE รุ่น ESP32
มีโปรแกรมเสริมสำหรับ Arduino IDE ที่ช่วยให้คุณเขียนโปรแกรม ESP32 โดยใช้ Arduino IDE และภาษาการเขียนโปรแกรม ในบทช่วยสอนนี้ เราจะแสดงวิธีการติดตั้งบอร์ด ESP32 ใน Arduino IDE ไม่ว่าคุณจะใช้ Windows, Mac OS X หรือ Linux
ข้อกำหนดเบื้องต้น: ติดตั้ง Arduino IDE แล้ว
ก่อนเริ่มขั้นตอนการติดตั้งนี้ คุณต้องติดตั้ง Arduino IDE บนคอมพิวเตอร์ของคุณก่อน Arduino IDE มีสองเวอร์ชันที่คุณสามารถติดตั้งได้ ได้แก่ เวอร์ชัน 1 และเวอร์ชัน 2
คุณสามารถดาวน์โหลดและติดตั้ง Arduino IDE ได้โดยคลิกลิงก์ต่อไปนี้: arduino.cc/en/หลัก/ซอฟต์แวร์
เราแนะนำ Arduino IDE เวอร์ชันใด ในขณะนี้มีบางเวอร์ชัน plugins สำหรับ ESP32 (เช่น SPIFFS Fileปลั๊กอินอัพโหลดระบบ) ที่ยังไม่รองรับบน Arduino 2 ดังนั้น หากคุณต้องการใช้ปลั๊กอิน SPIFFS ในอนาคต เราขอแนะนำให้ติดตั้งเวอร์ชันเก่า 1.8.X คุณเพียงแค่เลื่อนลงในหน้าซอฟต์แวร์ Arduino เพื่อค้นหา
การติดตั้ง ESP32 Add-on ใน Arduino IDE
หากต้องการติดตั้งบอร์ด ESP32 ใน Arduino IDE ของคุณ ให้ทำตามคำแนะนำต่อไปนี้:
- ใน Arduino IDE ของคุณ ไปที่ File> การตั้งค่า
- กรอกรายละเอียดต่อไปนี้ลงใน “ผู้จัดการคณะกรรมการเพิ่มเติม URLฟิลด์ s:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
จากนั้นคลิกปุ่ม “ตกลง”:บันทึก: หากคุณมีบอร์ด ESP8266 แล้ว URL, คุณสามารถแยก URLs มีเครื่องหมายจุลภาคดังนี้:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json,
http://arduino.esp8266.com/stable/package_esp8266com_index.json
เปิดตัวจัดการบอร์ด ไปที่เครื่องมือ > บอร์ด > ตัวจัดการบอร์ด...ค้นหา ESP32 และกดปุ่มติดตั้งสำหรับ “ESP32 โดย Espressif Systems“:
เท่านี้ก็ติดตั้งได้ภายในไม่กี่วินาที
อัพโหลดโค้ดทดสอบ
เสียบบอร์ด ESP32 เข้ากับคอมพิวเตอร์ของคุณ เปิด Arduino IDE ของคุณ แล้วทำตามขั้นตอนเหล่านี้:
- เลือกบอร์ดของคุณในเครื่องมือ > เมนูบอร์ด (ในกรณีของฉันคือโมดูล ESP32 DEV)
- เลือกพอร์ต (หากคุณไม่เห็นพอร์ต COM ใน Arduino IDE ของคุณ คุณจำเป็นต้องติดตั้งไดรเวอร์ CP210x USB to UART Bridge VCP):
- เปิดตัวอย่างต่อไปนี้ampเลออันเดอร์ File > อดีตampเลส > ไวไฟ
(ESP32) > การสแกน WiFi - สเก็ตช์ใหม่จะเปิดขึ้นใน Arduino IDE ของคุณ:
- กดปุ่มอัปโหลดใน Arduino IDE รอสักครู่ขณะที่โค้ดกำลังคอมไพล์และอัปโหลดไปยังบอร์ดของคุณ
- หากทุกอย่างเป็นไปตามที่คาดหวัง คุณควรเห็นข้อความ “อัปโหลดเสร็จสิ้น”
- เปิด Arduino IDE Serial Monitor ที่อัตราบอดเรท 115200:
- กดปุ่มเปิดใช้งานออนบอร์ด ESP32 แล้วคุณควรจะเห็นเครือข่ายที่พร้อมใช้งานใกล้กับ ESP32 ของคุณ:
การแก้ไขปัญหา
หากคุณพยายามอัปโหลดสเก็ตช์ใหม่ไปยัง ESP32 ของคุณ และคุณได้รับข้อความแสดงข้อผิดพลาดนี้ “เกิดข้อผิดพลาดร้ายแรง: ไม่สามารถเชื่อมต่อกับ ESP32 ได้: หมดเวลา... กำลังเชื่อมต่อ...“ หมายความว่า ESP32 ของคุณไม่ได้อยู่ในโหมดแฟลช/อัปโหลด
เมื่อเลือกชื่อบอร์ดและ COM ที่ถูกต้องแล้ว ให้ทำตามขั้นตอนเหล่านี้:
กดปุ่ม “BOOT” บนบอร์ด ESP32 ของคุณค้างไว้
- กดปุ่ม “อัปโหลด” ใน Arduino IDE เพื่ออัปโหลดสเก็ตช์ของคุณ:
- หลังจากที่คุณเห็นข้อความ “กำลังเชื่อมต่อ…” ใน Arduino IDE ให้ปล่อยนิ้วออกจากปุ่ม “BOOT”:
- หลังจากนั้นคุณควรเห็นข้อความ “อัปโหลดเสร็จสิ้น”
เท่านี้ ESP32 ของคุณควรรันสเก็ตช์ใหม่ได้แล้ว กดปุ่ม “เปิดใช้งาน” เพื่อรีสตาร์ท ESP32 และรันสเก็ตช์ที่อัปโหลดใหม่
คุณจะต้องทำซ้ำลำดับปุ่มนี้ทุกครั้งที่คุณต้องการอัปโหลดภาพร่างใหม่
โครงการ 1 ESP32 อินพุตเอาต์พุต
ในคู่มือการเริ่มต้นนี้ คุณจะได้เรียนรู้วิธีอ่านอินพุตดิจิทัล เช่น สวิตช์ปุ่ม และควบคุมเอาต์พุตดิจิทัล เช่น LED โดยใช้ ESP32 ร่วมกับ Arduino IDE
ข้อกำหนดเบื้องต้น
เราจะเขียนโปรแกรม ESP32 โดยใช้ Arduino IDE ดังนั้นโปรดตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งส่วนเสริมของบอร์ด ESP32 ก่อนดำเนินการต่อ:
- การติดตั้ง ESP32 Add-on ใน Arduino IDE
ESP32 ควบคุมเอาท์พุตดิจิตอล
ขั้นแรก คุณต้องตั้งค่า GPIO ที่ต้องการควบคุมเป็นเอาต์พุต ใช้ฟังก์ชัน pinMode() ดังต่อไปนี้:
pinMode(GPIO, OUTPUT);
หากต้องการควบคุมเอาต์พุตดิจิทัล คุณเพียงแค่ใช้ฟังก์ชัน digitalWrite() ซึ่งยอมรับ GPIO (ตัวเลข int) ที่คุณอ้างถึง และสถานะ HIGH หรือ LOW เป็นอาร์กิวเมนต์
digitalWrite(GPIO, สถานะ);
GPIO ทั้งหมดสามารถใช้เป็นเอาท์พุตได้ ยกเว้น GPIO 6 ถึง 11 (เชื่อมต่อกับแฟลช SPI ในตัว) และ GPIO 34, 35, 36 และ 39 (อินพุต GPIO เท่านั้น)
เรียนรู้เพิ่มเติมเกี่ยวกับ ESP32 GPIO: คู่มืออ้างอิง ESP32 GPIO
ESP32 อ่านอินพุตดิจิทัล
ขั้นแรก ให้ตั้งค่า GPIO ที่คุณต้องการอ่านเป็น INPUT โดยใช้ฟังก์ชัน pinMode() ดังต่อไปนี้:
pinMode(GPIO, INPUT);
หากต้องการอ่านอินพุตดิจิทัล เช่น ปุ่ม คุณจะใช้ฟังก์ชัน digitalRead() ซึ่งยอมรับ GPIO (ตัวเลข int) ที่คุณอ้างถึงเป็นอาร์กิวเมนต์
การอ่านแบบดิจิตอล(GPIO)
สามารถใช้ GPIO ของ ESP32 ทั้งหมดเป็นอินพุตได้ ยกเว้น GPIO 6 ถึง 11 (เชื่อมต่อกับแฟลช SPI แบบบูรณาการ)
เรียนรู้เพิ่มเติมเกี่ยวกับ ESP32 GPIO: คู่มืออ้างอิง ESP32 GPIO
โครงการอดีตample
เพื่อแสดงวิธีใช้ข้อมูลอินพุตและเอาต์พุตดิจิทัล เราจะสร้างโปรเจ็กต์ง่ายๆ เช่นampด้วยปุ่มกดและหลอด LED เราจะอ่านสถานะของปุ่มกดและเปิดหลอด LED ตามลำดับตามที่แสดงในรูปภาพต่อไปนี้
ชิ้นส่วนที่ต้องใช้
นี่คือรายการชิ้นส่วนที่คุณต้องใช้เพื่อสร้างวงจร:
- ชุดพัฒนา ESP32 รุ่น V1
- แอลอีดี 5 มม
- ตัวต้านทาน 220 โอห์ม
- ปุ่มกด
- ตัวต้านทาน 10k โอห์ม
- แผงวงจร
- สายจั๊มเปอร์
แผนผัง
ก่อนจะดำเนินการต่อ คุณต้องประกอบวงจรด้วย LED และปุ่มกด
เราจะเชื่อมต่อ LED เข้ากับ GPIO 5 และปุ่มกดเข้ากับ GPIO 4.รหัส
เปิดโค้ด Project_1_ESP32_Inputs_Outputs.ino ใน Arduino IDEโค้ดทำงานอย่างไร
ในสองบรรทัดถัดไป คุณสร้างตัวแปรเพื่อกำหนดพิน:
ปุ่มเชื่อมต่อกับ GPIO 4 และ LED เชื่อมต่อกับ GPIO 5 เมื่อใช้ Arduino IDE กับ ESP32 4 จะสอดคล้องกับ GPIO 4 และ 5 จะสอดคล้องกับ GPIO 5
จากนั้นคุณสร้างตัวแปรเพื่อเก็บสถานะของปุ่ม โดยค่าเริ่มต้นจะเป็น 0 (ไม่ใช่เมื่อกดปุ่ม)
int buttonState = 0;
ในการตั้งค่า () คุณเริ่มต้นปุ่มเป็นอินพุต และ LED เป็นเอาต์พุต
เพื่อให้บรรลุเป้าหมายนี้ คุณใช้ฟังก์ชัน pinMode() ที่ยอมรับพินที่คุณอ้างถึง และโหมด: INPUT หรือ OUTPUT
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
ใน loop() คือที่ที่คุณอ่านสถานะของปุ่มและตั้งค่า LED ให้เหมาะสม
ในบรรทัดถัดไป คุณอ่านสถานะปุ่มและบันทึกในตัวแปร buttonState
อย่างที่เราได้เห็นก่อนหน้านี้ คุณใช้ฟังก์ชัน digitalRead()
buttonState = digitalRead(ปุ่มPin);
คำสั่ง if ต่อไปนี้จะตรวจสอบว่าปุ่มมีสถานะเป็น HIGH หรือไม่ หากเป็นเช่นนั้น คำสั่งจะเปิด LED โดยใช้ฟังก์ชัน digitalWrite() ที่ยอมรับ ledPin เป็นอาร์กิวเมนต์ และสถานะ HIGH
ถ้า (buttonState == HIGH)หากปุ่มอยู่ในสถานะไม่สูง ให้ตั้งค่า LED ให้ปิด เพียงตั้งค่า LOW เป็นอาร์กิวเมนต์ที่สองในฟังก์ชัน digitalWrite()
การอัปโหลดรหัส
ก่อนที่จะคลิกปุ่มอัปโหลด ไปที่เครื่องมือ > บอร์ด และเลือกบอร์ด: บอร์ด DOIT ESP32 DEVKIT V1
ไปที่เครื่องมือ > พอร์ต และเลือกพอร์ต COM ที่ ESP32 เชื่อมต่ออยู่ จากนั้นกดปุ่มอัปโหลดและรอจนกว่าข้อความ "อัปโหลดเสร็จเรียบร้อยแล้ว" จะปรากฎขึ้นหมายเหตุ: หากคุณเห็นจุดจำนวนมาก (กำลังเชื่อมต่อ…__…__) บนหน้าต่างการดีบักและข้อความ “ไม่สามารถเชื่อมต่อกับ ESP32 ได้: หมดเวลาในการรอส่วนหัวของแพ็กเก็ต” นั่นหมายความว่าคุณต้องกดปุ่ม BOOT บนบอร์ด ESP32 หลังจากจุดเหล่านี้
เริ่มปรากฏการแก้ไขปัญหา
สาธิต
หลังจากอัปโหลดโค้ดแล้ว ให้ทดสอบวงจรของคุณ ไฟ LED ควรจะสว่างขึ้นเมื่อคุณกดปุ่ม:และปิดเมื่อคุณปล่อยมัน:
โครงการ 2 อินพุตอะนาล็อก ESP32
โปรเจ็กต์นี้แสดงวิธีการอ่านอินพุตแอนะล็อกด้วย ESP32 โดยใช้ Arduino IDE
การอ่านค่าอะนาล็อกมีประโยชน์ในการอ่านค่าจากตัวต้านทานแบบแปรผัน เช่น โพเทนชิออมิเตอร์หรือเซนเซอร์อะนาล็อก
อินพุตอะนาล็อก (ADC)
การอ่านค่าแอนะล็อกด้วย ESP32 หมายความว่าคุณสามารถวัดปริมาณที่แตกต่างกันได้tagระดับ e ระหว่าง 0 V และ 3.3 V
ฉบับที่tagจากนั้นค่าที่วัดได้จะถูกกำหนดเป็นค่าระหว่าง 0 ถึง 4095 โดยที่ 0 V สอดคล้องกับ 0 และ 3.3 V สอดคล้องกับ 4095 ปริมาตรใดๆtage ระหว่าง 0 V และ 3.3 V จะได้รับค่าที่สอดคล้องกันระหว่างนั้นADC ไม่เป็นเชิงเส้น
ในทางอุดมคติ คุณคาดหวังพฤติกรรมเชิงเส้นเมื่อใช้พิน ESP32 ADC
อย่างไรก็ตาม สิ่งนั้นจะไม่เกิดขึ้น สิ่งที่คุณจะได้รับคือพฤติกรรมดังที่แสดงไว้ในแผนภูมิต่อไปนี้:พฤติกรรมนี้หมายความว่า ESP32 ของคุณไม่สามารถแยกความแตกต่างระหว่าง 3.3 V จาก 3.2 V ได้
คุณจะได้รับค่าเดียวกันสำหรับทั้งสองเล่มtagเอส: 4095.
สิ่งเดียวกันนี้เกิดขึ้นกับปริมาณเสียงที่ต่ำมากtagค่า e: สำหรับ 0 V และ 0.1 V คุณจะได้ค่าเดียวกันคือ 0 คุณต้องคำนึงถึงสิ่งนี้เมื่อใช้พิน ESP32 ADC
ฟังก์ชัน analogRead()
การอ่านอินพุตแอนะล็อกด้วย ESP32 โดยใช้ Arduino IDE นั้นง่ายพอๆ กับการใช้ฟังก์ชัน analogRead() โดยจะยอมรับ GPIO ที่คุณต้องการอ่านเป็นอาร์กิวเมนต์:
analogRead(GPIO)
มีเพียง 15 รายการในบอร์ด DEVKIT V1 (เวอร์ชันที่มี 30 GPIO)
หยิบพินเอาต์บอร์ด ESP32 ของคุณขึ้นมาและค้นหาพิน ADC พินเหล่านี้จะถูกเน้นด้วยขอบสีแดงในภาพด้านล่างพินอินพุตแอนะล็อกเหล่านี้มีความละเอียด 12 บิต ซึ่งหมายความว่าเมื่อคุณอ่านอินพุตแอนะล็อก ช่วงของพินอาจแตกต่างกันไปตั้งแต่ 0 ถึง 4095
หมายเหตุ: ไม่สามารถใช้พิน ADC2 ได้เมื่อใช้ Wi-Fi ดังนั้น หากคุณกำลังใช้ Wi-Fi และประสบปัญหาในการรับค่าจาก GPIO ของ ADC2 คุณอาจลองใช้ GPIO ของ ADC1 แทน ซึ่งน่าจะช่วยแก้ปัญหาของคุณได้
เพื่อดูว่าทุกอย่างเชื่อมโยงกันอย่างไร เราจะสร้างตัวอย่างง่ายๆampเพื่ออ่านค่าอะนาล็อกจากโพเทนชิออมิเตอร์
ชิ้นส่วนที่ต้องใช้
สำหรับอดีตนี้ampคุณต้องการชิ้นส่วนต่อไปนี้:
- บอร์ด ESP32 DEVKIT V1
- ทรานดิวเซอร์วัดตําแหน่งเชิงเส้น
- แผงวงจร
- สายจั๊มเปอร์
แผนผัง
เชื่อมต่อโพเทนชิออมิเตอร์กับ ESP32 ของคุณ พินตรงกลางของโพเทนชิออมิเตอร์ควรเชื่อมต่อกับ GPIO 4 คุณสามารถใช้แผนผังต่อไปนี้เป็นข้อมูลอ้างอิงได้รหัส
เราจะเขียนโปรแกรม ESP32 โดยใช้ Arduino IDE ดังนั้นโปรดตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งส่วนเสริม ESP32 แล้วก่อนที่จะดำเนินการต่อ: (หากคุณได้ทำขั้นตอนนี้แล้ว คุณสามารถข้ามไปที่ขั้นตอนถัดไปได้)
การติดตั้ง ESP32 Add-on ใน Arduino IDE
เปิดโค้ด Project_2_ESP32_Inputs_Outputs.ino ใน Arduino IDEโค้ดนี้เพียงแค่จะอ่านค่าจากโพเทนชิออมิเตอร์และพิมพ์ค่าเหล่านั้นลงใน Serial Monitor
ในโค้ด คุณเริ่มต้นด้วยการกำหนด GPIO ที่โพเทนชิออมิเตอร์เชื่อมต่ออยู่ ในกรณีนี้ampเล, GPIO 4.ในการตั้งค่า () ให้เริ่มต้นการสื่อสารแบบอนุกรมที่อัตราบอดเรท 115200
ใน loop() ให้ใช้ฟังก์ชัน analogRead() เพื่ออ่านอินพุตอะนาล็อกจาก potPin
สุดท้ายให้พิมพ์ค่าที่อ่านจากโพเทนชิออมิเตอร์ในมอนิเตอร์แบบอนุกรม
อัปโหลดโค้ดที่ให้มาลงใน ESP32 ของคุณ ตรวจสอบให้แน่ใจว่าคุณได้เลือกบอร์ดและพอร์ต COM ที่ถูกต้องในเมนูเครื่องมือ
ทดสอบอดีตample
หลังจากอัปโหลดโค้ดและกดปุ่มรีเซ็ต ESP32 แล้ว ให้เปิด Serial Monitor ที่อัตราบอดเรท 115200 หมุนโพเทนชิออมิเตอร์และดูค่าที่เปลี่ยนแปลงค่าสูงสุดที่คุณจะได้รับคือ 4095 และค่าต่ำสุดคือ 0
การห่อหุ้ม
ในบทความนี้ คุณจะได้เรียนรู้วิธีอ่านอินพุตแอนะล็อกโดยใช้ ESP32 กับ Arduino IDE โดยสรุป:
- บอร์ด ESP32 DEVKIT V1 DOIT (เวอร์ชัน 30 พิน) มีพิน ADC 15 พินที่คุณใช้อ่านอินพุตแอนะล็อกได้
- พินเหล่านี้มีความละเอียด 12 บิต ซึ่งหมายความว่าคุณสามารถรับค่าตั้งแต่ 0 ถึง 4095 ได้
- หากต้องการอ่านค่าใน Arduino IDE คุณเพียงใช้ฟังก์ชัน analogRead()
- พิน ESP32 ADC ไม่มีพฤติกรรมเชิงเส้น คุณอาจไม่สามารถแยกแยะระหว่าง 0 และ 0.1V หรือระหว่าง 3.2 และ 3.3V ได้ คุณต้องคำนึงถึงสิ่งนี้เมื่อใช้พิน ADC
โครงการ 3 ESP32 PWM (เอาต์พุตอะนาล็อก)
ในบทช่วยสอนนี้ เราจะแสดงวิธีสร้างสัญญาณ PWM ด้วย ESP32 โดยใช้ Arduino IDE ตัวอย่างเช่นampเราจะสร้างวงจรง่ายๆ ที่หรี่แสง LED โดยใช้ตัวควบคุม LED PWM ของ ESP32ตัวควบคุม LED PWM ของ ESP32
ESP32 มีตัวควบคุม LED PWM พร้อมช่องอิสระ 16 ช่อง ที่สามารถกำหนดค่าให้สร้างสัญญาณ PWM ที่มีคุณสมบัติแตกต่างกันได้
นี่คือขั้นตอนที่คุณต้องปฏิบัติตามเพื่อหรี่แสง LED ด้วย PWM โดยใช้ Arduino IDE:
- ขั้นแรก คุณต้องเลือกช่องสัญญาณ PWM ซึ่งมีทั้งหมด 16 ช่องสัญญาณตั้งแต่ 0 ถึง 15
- จากนั้นคุณต้องตั้งค่าความถี่สัญญาณ PWM สำหรับ LED ความถี่ 5000 Hz ถือว่าใช้ได้
- คุณต้องตั้งค่าความละเอียดของรอบหน้าที่ของสัญญาณด้วย โดยความละเอียดมีตั้งแต่ 1 ถึง 16 บิต เราจะใช้ความละเอียด 8 บิต ซึ่งหมายความว่าคุณสามารถควบคุมความสว่างของ LED ได้โดยใช้ค่าตั้งแต่ 0 ถึง 255
- ขั้นต่อไป คุณต้องระบุว่าสัญญาณจะปรากฏบน GPIO หรือ GPIO ใด โดยให้ใช้ฟังก์ชันต่อไปนี้:
ledcAttachPin(GPIO, ช่องสัญญาณ)
ฟังก์ชันนี้รับอาร์กิวเมนต์ 2 ตัว อาร์กิวเมนต์ตัวแรกคือ GPIO ที่จะส่งสัญญาณ และตัวที่สองคือช่องสัญญาณที่จะสร้างสัญญาณ - สุดท้ายนี้ หากต้องการควบคุมความสว่างของ LED โดยใช้ PWM ให้ใช้ฟังก์ชันต่อไปนี้:
ledcWrite(ช่องทาง, รอบการทำงาน)
ฟังก์ชันนี้ยอมรับช่องสัญญาณที่สร้างสัญญาณ PWM และรอบหน้าที่เป็นอาร์กิวเมนต์
ชิ้นส่วนที่ต้องใช้
หากต้องการทำตามบทช่วยสอนนี้ คุณต้องมีชิ้นส่วนเหล่านี้:
- บอร์ด ESP32 DEVKIT V1
- LED 5M
- ตัวต้านทาน 220 โอห์ม
- แผงวงจร
- สายจั๊มเปอร์
แผนผัง
เชื่อมต่อ LED เข้ากับ ESP32 ของคุณตามแผนผังต่อไปนี้ LED ควรเชื่อมต่อกับ GPIO 4.บันทึก: คุณสามารถใช้พินใดก็ได้ตามต้องการ ตราบใดที่พินนั้นสามารถทำหน้าที่เป็นเอาต์พุตได้ พินทั้งหมดที่สามารถทำหน้าที่เป็นเอาต์พุตได้นั้นสามารถใช้เป็นพิน PWM ได้ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ GPIO ของ ESP32 โปรดอ่าน: การอ้างอิงพินของ ESP32: พิน GPIO ใดที่คุณควรใช้งาน?
รหัส
เราจะเขียนโปรแกรม ESP32 โดยใช้ Arduino IDE ดังนั้นโปรดตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งส่วนเสริม ESP32 แล้วก่อนที่จะดำเนินการต่อ: (หากคุณได้ทำขั้นตอนนี้แล้ว คุณสามารถข้ามไปที่ขั้นตอนถัดไปได้)
การติดตั้ง ESP32 Add-on ใน Arduino IDE
เปิดโค้ด Project_3_ESP32_PWM.ino ใน Arduino IDEเริ่มต้นด้วยการกำหนดพินที่จะต่อ LED ในกรณีนี้ LED จะต่อกับ GPIO 4
จากนั้นคุณตั้งค่าคุณสมบัติสัญญาณ PWM คุณกำหนดความถี่ที่ 5000 เฮิรตซ์ เลือกช่องสัญญาณ 0 เพื่อสร้างสัญญาณ และตั้งค่าความละเอียดเป็น 8 บิต คุณสามารถเลือกคุณสมบัติอื่นๆ ที่แตกต่างไปจากนี้เพื่อสร้างสัญญาณ PWM ที่แตกต่างกัน
ในการตั้งค่า () คุณต้องกำหนดค่า LED PWM ด้วยคุณสมบัติที่คุณได้กำหนดไว้ก่อนหน้านี้โดยใช้ฟังก์ชัน ledcSetup() ที่ยอมรับ ledChannel ความถี่ และความละเอียดเป็นอาร์กิวเมนต์ ดังต่อไปนี้:
ขั้นตอนต่อไป คุณต้องเลือก GPIO ที่จะรับสัญญาณ จากนั้นใช้ฟังก์ชัน ledcAttachPin() ที่ยอมรับ GPIO ที่คุณต้องการรับสัญญาณและช่องสัญญาณที่สร้างสัญญาณเป็นอาร์กิวเมนต์ ในตัวอย่างนี้ampเราจะได้สัญญาณใน ledPin GPIO ที่สอดคล้องกับ GPIO 4 ช่องสัญญาณที่สร้างสัญญาณคือ ledChannel ที่สอดคล้องกับช่องสัญญาณ 0
ในลูป คุณจะเปลี่ยนรอบหน้าที่ระหว่าง 0 ถึง 255 เพื่อเพิ่มความสว่างของ LED
จากนั้นปรับค่าระหว่าง 255 ถึง 0 เพื่อลดความสว่าง
หากต้องการตั้งค่าความสว่างของ LED คุณเพียงแค่ต้องใช้ฟังก์ชัน ledcWrite() ซึ่งยอมรับช่องสัญญาณที่สร้างสัญญาณและรอบหน้าที่เป็นอาร์กิวเมนต์
เนื่องจากเราใช้ความละเอียด 8 บิต รอบการทำงานจึงถูกควบคุมโดยใช้ค่าตั้งแต่ 0 ถึง 255 โปรดทราบว่าในฟังก์ชัน ledcWrite() เราใช้ช่องสัญญาณที่สร้างสัญญาณ ไม่ใช่ GPIO
ทดสอบอดีตample
อัปโหลดโค้ดไปยัง ESP32 ของคุณ ตรวจสอบให้แน่ใจว่าคุณเลือกบอร์ดและพอร์ต COM ที่ถูกต้องแล้ว ดูวงจรของคุณ คุณควรมี LED หรี่แสงที่เพิ่มและลดความสว่าง
โครงการ 4 เซ็นเซอร์ตรวจจับความเคลื่อนไหว ESP32 PIR
โปรเจ็กต์นี้แสดงวิธีการตรวจจับการเคลื่อนไหวด้วย ESP32 โดยใช้เซ็นเซอร์ตรวจจับการเคลื่อนไหว PIR บัซเซอร์จะส่งเสียงเตือนเมื่อตรวจพบการเคลื่อนไหว และหยุดเสียงเตือนเมื่อไม่ตรวจพบการเคลื่อนไหวเป็นเวลาที่กำหนดไว้ล่วงหน้า (เช่น 4 วินาที)
เซ็นเซอร์ตรวจจับความเคลื่อนไหว HC-SR501 ทำงานอย่างไร
.หลักการทำงานของเซ็นเซอร์ HC-SR501 ขึ้นอยู่กับการเปลี่ยนแปลงของรังสีอินฟราเรดบนวัตถุที่เคลื่อนที่ หากต้องการตรวจจับด้วยเซ็นเซอร์ HC-SR501 วัตถุจะต้องเป็นไปตามข้อกำหนดสองประการ:
- วัตถุกำลังแผ่รังสีอินฟราเรด
- วัตถุกำลังเคลื่อนที่หรือสั่น
ดังนั้น:
ถ้าวัตถุปล่อยรังสีอินฟราเรดออกมาแต่ไม่ได้เคลื่อนที่ (เช่น บุคคลยืนนิ่งโดยไม่เคลื่อนที่) เซ็นเซอร์จะตรวจจับรังสีอินฟราเรดไม่ได้
ถ้าวัตถุกำลังเคลื่อนที่แต่ไม่ปล่อยรังสีอินฟราเรดออกมา (เช่น หุ่นยนต์หรือยานพาหนะ) เซ็นเซอร์จะไม่ตรวจจับได้
แนะนำตัวจับเวลา
ในอดีตที่ผ่านมาampเราจะแนะนำตัวจับเวลาด้วย เราต้องการให้ LED ติดสว่างเป็นเวลาหลายวินาทีหลังจากตรวจพบการเคลื่อนไหว แทนที่จะใช้ฟังก์ชัน delay() ที่บล็อกโค้ดของคุณและไม่อนุญาตให้คุณทำอย่างอื่นเป็นเวลาหลายวินาที เราควรใช้ตัวจับเวลาฟังก์ชั่น delay()
คุณควรคุ้นเคยกับฟังก์ชัน delay() เนื่องจากฟังก์ชันนี้ใช้กันอย่างแพร่หลาย ฟังก์ชันนี้ใช้งานง่ายมาก โดยรับค่าตัวเลข int เพียงตัวเดียวเป็นอาร์กิวเมนต์
ตัวเลขนี้แสดงเวลาเป็นมิลลิวินาทีที่โปรแกรมต้องรอจนกว่าจะย้ายไปยังบรรทัดโค้ดถัดไปเมื่อคุณทำการ delay(1000) โปรแกรมของคุณจะหยุดที่บรรทัดนั้นเป็นเวลา 1 วินาที
delay() คือฟังก์ชันการบล็อก ฟังก์ชันการบล็อกจะป้องกันไม่ให้โปรแกรมดำเนินการใดๆ จนกว่างานนั้นๆ จะเสร็จสิ้น หากคุณต้องการให้ทำงานหลายงานพร้อมกัน คุณไม่สามารถใช้ delay() ได้
สำหรับโครงการส่วนใหญ่ คุณควรหลีกเลี่ยงการใช้ความล่าช้าและใช้ตัวจับเวลาแทน
ฟังก์ชัน millis()
การใช้ฟังก์ชันที่เรียกว่า millis() ช่วยให้คุณสามารถส่งคืนจำนวนมิลลิวินาทีที่ผ่านไปนับตั้งแต่ที่โปรแกรมเริ่มทำงานครั้งแรกได้ฟังก์ชันนั้นมีประโยชน์อย่างไร เพราะเมื่อใช้คณิตศาสตร์ คุณสามารถตรวจสอบได้อย่างง่ายดายว่าเวลาผ่านไปนานแค่ไหนแล้วโดยที่ไม่ต้องบล็อกโค้ดของคุณ
ชิ้นส่วนที่ต้องใช้
หากต้องการทำตามบทช่วยสอนนี้ คุณต้องมีส่วนต่างๆ ต่อไปนี้
- บอร์ด ESP32 DEVKIT V1
- เซ็นเซอร์ตรวจจับการเคลื่อนไหว PIR (HC-SR501)
- ใช้งาน Buzzer
- สายจั๊มเปอร์
- แผงวงจร
แผนผังบันทึก: การทำงานเล่มtagHC-SR501 มีแรงดันไฟ 5V ใช้พิน Vin เพื่อจ่ายไฟให้
รหัส
ก่อนดำเนินการตามบทช่วยสอนนี้ คุณควรติดตั้งส่วนเสริม ESP32 ลงใน Arduino IDE ก่อน ปฏิบัติตามบทช่วยสอนต่อไปนี้เพื่อติดตั้ง ESP32 บน Arduino IDE หากคุณยังไม่ได้ทำ (หากคุณทำขั้นตอนนี้แล้ว คุณสามารถข้ามไปยังขั้นตอนถัดไปได้)
การติดตั้ง ESP32 Add-on ใน Arduino IDE
เปิดโค้ด Project_4_ESP32_PIR_Motion_Sensor.ino ใน Arduino IDE
สาธิต
อัปโหลดโค้ดไปยังบอร์ด ESP32 ของคุณ ตรวจสอบให้แน่ใจว่าคุณเลือกบอร์ดและพอร์ต COM ที่ถูกต้อง ขั้นตอนการอัปโหลดโค้ดอ้างอิง
เปิด Serial Monitor ที่อัตราบอดเรท 115200ขยับมือของคุณไปข้างหน้าเซ็นเซอร์ PIR เสียงสัญญาณเตือนควรดังขึ้น และข้อความจะพิมพ์บน Serial Monitor ว่า “ตรวจพบการเคลื่อนไหว! สัญญาณเตือนเสียง”
หลังจากผ่านไป 4 วินาที เสียงบัซเซอร์ควรจะดับลง
โครงการ 5 สวิตช์ ESP32 Web เซิฟเวอร์
ในโครงการนี้คุณจะสร้างแบบสแตนด์อโลน web เซิร์ฟเวอร์ที่มี ESP32 ซึ่งควบคุมเอาท์พุต (LED สองดวง) โดยใช้สภาพแวดล้อมการเขียนโปรแกรม Arduino IDE web เซิร์ฟเวอร์ตอบสนองต่ออุปกรณ์เคลื่อนที่และสามารถเข้าถึงได้จากอุปกรณ์ใดๆ ก็ได้โดยใช้เบราว์เซอร์บนเครือข่ายท้องถิ่น เราจะแสดงวิธีสร้าง web เซิร์ฟเวอร์และวิธีการทำงานของโค้ดทีละขั้นตอน
สิ้นสุดโครงการview
ก่อนจะเข้าไปสู่โครงการโดยตรง สิ่งสำคัญคือต้องสรุปให้ชัดเจนว่าเรา web เซิร์ฟเวอร์จะทำเพื่อให้ง่ายต่อการทำตามขั้นตอนในภายหลัง
- การ web เซิร์ฟเวอร์ที่คุณจะสร้างการควบคุม LED สองดวงที่เชื่อมต่อกับ ESP32 GPIO 26 และ GPIO 27
- คุณสามารถเข้าถึง ESP32 ได้ web เซิร์ฟเวอร์โดยการพิมพ์ที่อยู่ IP ของ ESP32 บนเบราว์เซอร์ในเครือข่ายท้องถิ่น
- โดยการคลิกปุ่มบนของคุณ web เซิร์ฟเวอร์คุณสามารถเปลี่ยนสถานะของแต่ละ LED ได้ทันที
ชิ้นส่วนที่ต้องใช้
สำหรับบทช่วยสอนนี้ คุณจะต้องมีชิ้นส่วนต่อไปนี้:
- บอร์ด ESP32 DEVKIT V1
- ไฟ LED 2x 5มม.
- ตัวต้านทาน 2x200 โอห์ม
- แผงวงจร
- สายจั๊มเปอร์
แผนผัง
เริ่มต้นด้วยการสร้างวงจร เชื่อมต่อ LED สองดวงเข้ากับ ESP32 ตามที่แสดงในแผนผังต่อไปนี้ โดย LED ดวงหนึ่งเชื่อมต่อกับ GPIO 26 และอีกดวงหนึ่งเชื่อมต่อกับ GPIO 27
บันทึก: เรากำลังใช้บอร์ด ESP32 DEVKIT DOIT ที่มีพิน 36 พิน ก่อนที่จะประกอบวงจร ตรวจสอบให้แน่ใจว่าคุณได้ตรวจสอบพินเอาต์ของบอร์ดที่คุณกำลังใช้รหัส
ที่นี่เราให้โค้ดที่สร้าง ESP32 web เซิฟเวอร์ เปิดโค้ด Project_5_ESP32_Switch _Web_Server.ino ใน Arduino IDE แต่ไม่ต้องอัปโหลด คุณต้องทำการเปลี่ยนแปลงบางอย่างเพื่อให้มันใช้งานได้
เราจะเขียนโปรแกรม ESP32 โดยใช้ Arduino IDE ดังนั้นโปรดตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งส่วนเสริม ESP32 แล้วก่อนที่จะดำเนินการต่อ: (หากคุณได้ทำขั้นตอนนี้แล้ว คุณสามารถข้ามไปที่ขั้นตอนถัดไปได้)
การติดตั้ง ESP32 Add-on ใน Arduino IDE
การตั้งค่าข้อมูลรับรองเครือข่ายของคุณ
คุณต้องแก้ไขบรรทัดต่อไปนี้ด้วยข้อมูลประจำตัวเครือข่ายของคุณ: SSID และรหัสผ่าน รหัสได้รับการแสดงความคิดเห็นไว้อย่างดีเกี่ยวกับจุดที่คุณควรทำการเปลี่ยนแปลงการอัปโหลดรหัส
ตอนนี้คุณสามารถอัปโหลดรหัสและและ web เซิร์ฟเวอร์จะทำงานได้ทันที.
ทำตามขั้นตอนต่อไปเพื่ออัปโหลดโค้ดไปยัง ESP32:
- เสียบบอร์ด ESP32 เข้ากับคอมพิวเตอร์ของคุณ
- ใน Arduino IDE ให้เลือกบอร์ดของคุณในเครื่องมือ > บอร์ด (ในกรณีของเรา เราใช้บอร์ด ESP32 DEVKIT DOIT)
- เลือกพอร์ต COM ในเครื่องมือ > พอร์ต
- กดปุ่มอัปโหลดใน Arduino IDE และรอสองสามวินาทีขณะที่โค้ดคอมไพล์และอัปโหลดไปยังบอร์ดของคุณ
- รอจนกว่าข้อความ “อัปโหลดเสร็จสิ้น”
การค้นหาที่อยู่ IP ของ ESP
หลังจากอัปโหลดโค้ดแล้ว ให้เปิด Serial Monitor ที่อัตราบอดเรท 115200กดปุ่ม ESP32 EN (รีเซ็ต) ESP32 จะเชื่อมต่อกับ Wi-Fi และส่งออกที่อยู่ IP ของ ESP บน Serial Monitor คัดลอกที่อยู่ IP นั้น เนื่องจากคุณจำเป็นต้องใช้ที่อยู่ IP นั้นในการเข้าถึง ESP32 web เซิร์ฟเวอร์
การเข้าถึง Web เซิฟเวอร์
เพื่อเข้าถึง web เซิร์ฟเวอร์ เปิดเบราว์เซอร์ของคุณ วางที่อยู่ IP ของ ESP32 และคุณจะเห็นหน้าต่อไปนี้
บันทึก: เบราว์เซอร์และ ESP32 ของคุณควรเชื่อมต่อกับ LAN เดียวกันหากคุณดูที่ Serial Monitor คุณจะเห็นว่ามีอะไรเกิดขึ้นเบื้องหลัง ESP จะได้รับคำขอ HTTP จากไคลเอนต์ใหม่ (ในกรณีนี้คือเบราว์เซอร์ของคุณ)
คุณสามารถดูข้อมูลอื่น ๆ เกี่ยวกับคำขอ HTTP ได้อีกด้วย
สาธิต
ตอนนี้คุณสามารถทดสอบได้ว่า web เซิร์ฟเวอร์ทำงานอย่างถูกต้อง คลิกปุ่มเพื่อควบคุมไฟ LEDในเวลาเดียวกัน คุณสามารถดู Serial Monitor เพื่อดูว่ามีอะไรเกิดขึ้นเบื้องหลัง เช่นampเมื่อคุณคลิกปุ่มเพื่อเปิด GPIO 26 ESP32 จะได้รับคำขอใน /26/on URL.
เมื่อ ESP32 ได้รับคำขอดังกล่าว ไฟ LED ที่ติดอยู่กับ GPIO 26 จะเปิดขึ้นและอัปเดตสถานะบน web หน้าหนังสือ.
ปุ่มสำหรับ GPIO 27 ทำงานในลักษณะเดียวกัน ทดสอบว่าใช้งานได้ปกติหรือไม่
โค้ดทำงานอย่างไร
ในส่วนนี้เราจะมาดูโค้ดโดยละเอียดเพื่อดูว่ามันทำงานอย่างไร
สิ่งแรกที่คุณต้องทำคือรวมไลบรารี WiFiดังที่ได้กล่าวไว้ก่อนหน้านี้ คุณต้องใส่ ssid และรหัสผ่านของคุณในบรรทัดต่อไปนี้ภายในเครื่องหมายคำพูดคู่
จากนั้นคุณตั้งค่าของคุณ web เซิร์ฟเวอร์ไปที่พอร์ต 80
บรรทัดต่อไปนี้จะสร้างตัวแปรเพื่อจัดเก็บส่วนหัวของคำขอ HTTP:
ขั้นต่อไป คุณจะสร้างตัวแปรเสริมเพื่อจัดเก็บสถานะปัจจุบันของเอาต์พุตของคุณ หากคุณต้องการเพิ่มเอาต์พุตเพิ่มเติมและบันทึกสถานะ คุณจะต้องสร้างตัวแปรเพิ่มเติม
คุณต้องกำหนด GPIO ให้กับเอาต์พุตแต่ละรายการด้วย ในที่นี้ เราใช้ GPIO 26 และ GPIO 27 คุณสามารถใช้ GPIO อื่นๆ ที่เหมาะสมได้
การตั้งค่า()
ตอนนี้มาดูการตั้งค่ากันก่อน ขั้นแรก เราจะเริ่มการสื่อสารแบบอนุกรมที่อัตราบอดเรท 115200 เพื่อจุดประสงค์ในการแก้จุดบกพร่องคุณยังกำหนด GPIO ของคุณเป็น OUTPUT และตั้งค่าเป็น LOW
บรรทัดต่อไปนี้จะเริ่มการเชื่อมต่อ Wi-Fi ด้วย WiFi.begin(ssid, password) รอให้การเชื่อมต่อสำเร็จ และพิมพ์ที่อยู่ IP ของ ESP ใน Serial Monitor
ลูป()
ในลูป () เราเขียนโปรแกรมสิ่งที่จะเกิดขึ้นเมื่อไคลเอนต์ใหม่สร้างการเชื่อมต่อกับ web เซิร์ฟเวอร์
ESP32 จะคอยฟังไคลเอนต์ที่เข้ามาอยู่เสมอโดยมีบรรทัดต่อไปนี้:เมื่อได้รับคำขอจากไคลเอนต์ เราจะบันทึกข้อมูลขาเข้า ลูป while ที่ตามมาจะทำงานต่อไปตราบเท่าที่ไคลเอนต์ยังคงเชื่อมต่ออยู่ เราไม่แนะนำให้เปลี่ยนแปลงส่วนต่อไปนี้ของโค้ด เว้นแต่คุณจะรู้แน่ชัดว่ากำลังทำอะไรอยู่
ส่วนถัดไปของคำสั่ง if และ else จะตรวจสอบว่ามีการกดปุ่มใดใน web หน้าและควบคุมผลลัพธ์ให้เหมาะสม ดังที่เราเห็นก่อนหน้านี้ เราส่งคำขอไปยังหน้าอื่น URLขึ้นอยู่กับปุ่มที่กด
เช่นampหากคุณกดปุ่ม GPIO 26 ON, ESP32 จะได้รับคำขอที่ /26/ON URL (เราสามารถดูข้อมูลดังกล่าวได้จากส่วนหัว HTTP บน Serial Monitor) ดังนั้นเราสามารถตรวจสอบว่าส่วนหัวมีนิพจน์ GET /26/on หรือไม่ หากมี ให้เปลี่ยนตัวแปร output26state เป็น ON และ ESP32 จะเปิดไฟ LED
วิธีการนี้ใช้ได้กับปุ่มอื่นๆ เช่นกัน ดังนั้น หากคุณต้องการเพิ่มเอาต์พุตเพิ่มเติม คุณควรแก้ไขส่วนนี้ของโค้ดเพื่อรวมเอาต์พุตเหล่านี้เข้าไปด้วย
การแสดง HTML web หน้าหนังสือ
สิ่งต่อไปที่คุณต้องทำคือการสร้าง web ESP32 จะส่งการตอบกลับไปยังเบราว์เซอร์ของคุณด้วยโค้ด HTML เพื่อสร้าง web หน้าหนังสือ.
การ web หน้าจะถูกส่งไปยังไคลเอนต์โดยใช้การแสดง client.println() นี้ คุณควรป้อนสิ่งที่คุณต้องการส่งไปยังไคลเอนต์เป็นอาร์กิวเมนต์
สิ่งแรกที่เราควรส่งคือบรรทัดถัดไป ซึ่งบ่งบอกว่าเรากำลังส่ง HTMLจากนั้นบรรทัดต่อไปนี้จะทำให้ web หน้าตอบสนองในทุก ๆ web เบราว์เซอร์
และสิ่งต่อไปนี้ใช้เพื่อป้องกันการร้องขอบน favicon – คุณไม่จำเป็นต้องกังวลเกี่ยวกับบรรทัดนี้
การจัดแต่งทรง Web หน้าหนังสือ
ถัดไปเรามีข้อความ CSS เพื่อกำหนดรูปแบบปุ่มและ web ลักษณะของหน้า
เราเลือกแบบอักษร Helvetica กำหนดเนื้อหาที่จะแสดงเป็นบล็อกและจัดตำแหน่งไว้ตรงกลางเรากำหนดสไตล์ปุ่มด้วยสี #4CAF50 ไม่มีขอบ ข้อความเป็นสีขาว และมีขนาดช่องว่าง 16px 40px นอกจากนี้ เรายังตั้งค่าการตกแต่งข้อความเป็นไม่มี กำหนดขนาดตัวอักษร ระยะขอบ และเคอร์เซอร์เป็นตัวชี้
นอกจากนี้ เรายังกำหนดสไตล์สำหรับปุ่มที่สองด้วย โดยมีคุณสมบัติทั้งหมดของปุ่มที่เราได้กำหนดไว้ก่อนหน้านี้ แต่จะมีสีที่แตกต่างกัน ซึ่งจะเป็นสไตล์สำหรับปุ่มปิด
การตั้งค่า Web หน้าแรก หัวเรื่อง
ในบรรทัดถัดไปคุณสามารถกำหนดหัวข้อแรกของคุณได้ web หน้าที่นี่เรามี “ESP32 Web เซิร์ฟเวอร์” แต่คุณสามารถเปลี่ยนข้อความนี้เป็นสิ่งที่คุณต้องการได้การแสดงปุ่มและสถานะที่สอดคล้องกัน
จากนั้นคุณเขียนย่อหน้าเพื่อแสดงสถานะปัจจุบันของ GPIO 26 ดังที่คุณเห็น เราใช้ตัวแปร output26State เพื่อให้สถานะอัปเดตทันทีเมื่อตัวแปรนี้เปลี่ยนแปลงจากนั้นเราแสดงปุ่มเปิดหรือปิดขึ้นอยู่กับสถานะปัจจุบันของ GPIO หากสถานะปัจจุบันของ GPIO ปิดอยู่ เราจะแสดงปุ่มเปิด หากไม่ใช่ เราจะแสดงปุ่มปิด
เราใช้ขั้นตอนเดียวกันสำหรับ GPIO 27
การปิดการเชื่อมต่อ
ในที่สุดเมื่อการตอบสนองสิ้นสุดลง เราจะล้างตัวแปรส่วนหัว และหยุดการเชื่อมต่อกับไคลเอนต์ด้วย client.stop()
การห่อหุ้ม
ในบทช่วยสอนนี้เราจะแสดงให้คุณเห็นวิธีการสร้าง web เซิร์ฟเวอร์ที่มี ESP32 เราได้แสดงตัวอย่างง่ายๆ ให้คุณดูampที่ควบคุม LED สองดวง แต่แนวคิดคือการแทนที่ LED เหล่านั้นด้วยรีเลย์หรือเอาต์พุตอื่นใดที่คุณต้องการควบคุม
โปรเจ็กต์ 6 RGB LED Web เซิฟเวอร์
ในโครงการนี้ เราจะแสดงวิธีการควบคุม LED RGB จากระยะไกลด้วยบอร์ด ESP32 โดยใช้ web เซิร์ฟเวอร์พร้อมตัวเลือกสี
สิ้นสุดโครงการview
ก่อนที่จะเริ่มต้น มาดูวิธีการทำงานของโครงการนี้กันก่อน:
- ESP32 เป็นเครื่องมือ web เซิร์ฟเวอร์จะแสดงตัวเลือกสี
- เมื่อคุณเลือกสี เบราว์เซอร์ของคุณจะส่งคำขอไปยัง URL ซึ่งประกอบด้วยพารามิเตอร์ R, G และ B ของสีที่เลือก
- ESP32 ของคุณได้รับคำขอและแบ่งค่าสำหรับพารามิเตอร์สีแต่ละสี
- จากนั้นจะส่งสัญญาณ PWM ที่มีค่าสอดคล้องกับ GPIO ที่กำลังควบคุม RGB LED
LED RGB ทำงานอย่างไร?
ใน LED RGB แบบแคโทดทั่วไป LED ทั้งสามดวงจะแชร์การเชื่อมต่อเชิงลบ (แคโทด) ซึ่งรวมอยู่ในชุดทั้งหมดเป็น LED RGB แบบแคโทดทั่วไปจะสร้างสีสันต่างๆได้อย่างไร?
ด้วย LED RGB คุณสามารถสร้างแสงสีแดง เขียว และน้ำเงินได้ และโดยการกำหนดค่าความเข้มของ LED แต่ละดวง คุณสามารถสร้างสีอื่นๆ ได้เช่นกัน
เช่นampหากต้องการผลิตแสงสีน้ำเงินล้วนๆ คุณต้องตั้งค่า LED สีน้ำเงินให้มีความเข้มสูงสุด และ LED สีเขียวและสีแดงให้มีความเข้มต่ำสุด สำหรับแสงสีขาว คุณต้องตั้งค่า LED ทั้งสามดวงให้มีความเข้มสูงสุด
การผสมสี
หากต้องการสร้างสีอื่น คุณสามารถผสมสีทั้งสามสีด้วยความเข้มข้นที่แตกต่างกันได้ หากต้องการปรับความเข้มข้นของ LED แต่ละดวง คุณสามารถใช้สัญญาณ PWM
เนื่องจาก LED อยู่ใกล้กันมาก ดวงตาของเราจึงมองเห็นผลลัพธ์จากการผสมสีแทนที่จะมองเห็นสามสีแยกกัน
หากต้องการทราบแนวทางในการผสมสี ให้ดูแผนภูมิต่อไปนี้
นี่เป็นแผนภูมิการผสมสีที่ง่ายที่สุด แต่ช่วยให้คุณเข้าใจถึงวิธีการทำงานและวิธีสร้างสีต่างๆชิ้นส่วนที่ต้องใช้
สำหรับโครงการนี้คุณต้องมีชิ้นส่วนดังต่อไปนี้:
- บอร์ด ESP32 DEVKIT V1
- ไฟ LED RGB
- ตัวต้านทาน 3x 220 โอห์ม
- สายจั๊มเปอร์
- แผงวงจร
แผนผังรหัส
เราจะเขียนโปรแกรม ESP32 โดยใช้ Arduino IDE ดังนั้นโปรดตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งส่วนเสริม ESP32 แล้วก่อนที่จะดำเนินการต่อ: (หากคุณได้ทำขั้นตอนนี้แล้ว คุณสามารถข้ามไปที่ขั้นตอนถัดไปได้)
- การติดตั้ง ESP32 Add-on ใน Arduino IDE
หลังจากประกอบวงจรเสร็จแล้วให้เปิดโค้ด
โครงการ_6_RGB_LED_Web_Server.ino ใน Arduino IDE
ก่อนที่จะอัพโหลดรหัส อย่าลืมใส่ข้อมูลประจำตัวเครือข่ายของคุณเพื่อให้ ESP สามารถเชื่อมต่อกับเครือข่ายท้องถิ่นของคุณได้โค้ดทำงานอย่างไร
สเก็ตช์ ESP32 ใช้ไลบรารี WiFi.hบรรทัดต่อไปนี้กำหนดตัวแปรสตริงเพื่อเก็บพารามิเตอร์ R, G และ B จากคำขอ
ตัวแปรทั้งสี่ตัวถัดไปใช้สำหรับถอดรหัสคำขอ HTTP ในภายหลัง
สร้างตัวแปรสามตัวสำหรับ GPIO ที่จะควบคุมพารามิเตอร์ R, G และ B ในกรณีนี้ เราจะใช้ GPIO 13, GPIO 12 และ GPIO 14
GPIO เหล่านี้จำเป็นต้องส่งสัญญาณ PWM ดังนั้นเราต้องกำหนดค่าคุณสมบัติ PWM ก่อน ตั้งความถี่สัญญาณ PWM เป็น 5000 Hz จากนั้นเชื่อมโยงช่องสัญญาณ PWM สำหรับแต่ละสี
และสุดท้ายให้ตั้งค่าความละเอียดของช่อง PWM เป็น 8 บิต
ในการตั้งค่า () กำหนดคุณสมบัติ PWM ให้กับช่องสัญญาณ PWM
แนบช่อง PWM เข้ากับ GPIO ที่สอดคล้องกัน
ส่วนโค้ดต่อไปนี้จะแสดงตัวเลือกสีในของคุณ web หน้าและทำการร้องขอตามสีที่คุณเลือก
เมื่อคุณเลือกสีคุณจะได้รับคำขอตามรูปแบบต่อไปนี้
ดังนั้น เราจำเป็นต้องแยกสตริงนี้เพื่อรับพารามิเตอร์ R, G และ B พารามิเตอร์จะถูกบันทึกในตัวแปร redString, greenString และ blueString และสามารถมีค่าระหว่าง 0 ถึง 255 ได้ในการควบคุมแถบด้วย ESP32 ให้ใช้ฟังก์ชัน ledcWrite() เพื่อสร้างสัญญาณ PWM ด้วยค่าที่ถอดรหัสจาก HTTP ขอ.
บันทึก: เรียนรู้เพิ่มเติมเกี่ยวกับ PWM ด้วย ESP32: โปรเจ็กต์ 3 ESP32 PWM (เอาต์พุตแอนะล็อก)
ในการควบคุมแถบด้วย ESP8266 เราเพียงแค่ต้องใช้
ฟังก์ชัน analogWrite() เพื่อสร้างสัญญาณ PWM ด้วยค่าที่ถอดรหัสจากคำขอ HTPP
analogWrite(redPin, redString.toInt())
analogWrite(greenPin, greenString.toInt())
การเขียนแบบอะนาล็อก(bluePin, blueString.toInt())
เนื่องจากเราได้รับค่าในตัวแปรสตริง เราจึงต้องแปลงค่าเหล่านี้เป็นจำนวนเต็มโดยใช้เมธอด toInt()
สาธิต
หลังจากใส่ข้อมูลรับรองเครือข่ายของคุณแล้ว เลือกบอร์ดและพอร์ต COM ที่ถูกต้อง และอัปโหลดโค้ดไปยัง ESP32 ของคุณ ขั้นตอนการอัปโหลดโค้ดอ้างอิง
หลังจากอัพโหลดแล้ว ให้เปิด Serial Monitor ที่อัตราบอดเรท 115200 และกดปุ่มเปิดใช้งาน/รีเซ็ต ESP คุณควรได้รับที่อยู่ IP ของบอร์ดเปิดเบราว์เซอร์และป้อนที่อยู่ IP ของ ESP จากนั้นใช้ตัวเลือกสีเพื่อเลือกสีสำหรับ LED RGB
จากนั้นคุณต้องกดปุ่ม “เปลี่ยนสี” เพื่อให้สีมีผลหากต้องการปิดไฟ LED RGB ให้เลือกสีดำ
สีที่เข้มที่สุด (อยู่ที่ด้านบนของตัวเลือกสี) คือสีที่จะให้ผลลัพธ์ที่ดีกว่า
โครงการ 7 รีเลย์ ESP32 Web เซิฟเวอร์
การใช้รีเลย์ร่วมกับ ESP32 เป็นวิธีที่ดีเยี่ยมในการควบคุมเครื่องใช้ไฟฟ้าภายในบ้านแบบ AC จากระยะไกล บทช่วยสอนนี้จะอธิบายวิธีการควบคุมโมดูลรีเลย์ด้วย ESP32
เราจะมาดูว่าโมดูลรีเลย์ทำงานอย่างไร วิธีเชื่อมต่อรีเลย์กับ ESP32 และสร้าง web เซิร์ฟเวอร์เพื่อควบคุมรีเลย์จากระยะไกล
แนะนำรีเลย์
รีเลย์เป็นสวิตช์ที่ทำงานด้วยไฟฟ้า เช่นเดียวกับสวิตช์อื่นๆ รีเลย์สามารถเปิดหรือปิดได้ ปล่อยให้กระแสไฟฟ้าไหลผ่านหรือไม่ไหลก็ได้ รีเลย์สามารถควบคุมได้ด้วยแรงดันไฟฟ้าต่ำtagเช่น 3.3V ที่จัดทำโดย GPIO ของ ESP32 และช่วยให้เราสามารถควบคุมระดับเสียงสูงได้tagเช่น 12V, 24V หรือไฟหลักtage (230V ในยุโรปและ 120V ในสหรัฐอเมริกา)ด้านซ้ายมีช่องเสียบ 3 ช่อง จำนวน 2 ชุด เพื่อเชื่อมต่อกระแสไฟแรงดันสูงtages และพินทางด้านขวา (ระดับเสียงต่ำtage) เชื่อมต่อกับ ESP32 GPIO
เล่มหลักtage การเชื่อมต่อโมดูลรีเลย์ที่แสดงในภาพก่อนหน้ามีขั้วต่อ 2 ตัว โดยแต่ละขั้วต่อมี 3 ซ็อกเก็ต ได้แก่ ทั่วไป (COM), ปกติปิด (NC) และปกติเปิด (NO)
- COM: เชื่อมต่อกระแสไฟที่คุณต้องการควบคุม (ไฟหลัก)tagจ).
- NC (ปกติปิด): การกำหนดค่าปกติปิดจะใช้เมื่อคุณต้องการปิดรีเลย์ตามค่าเริ่มต้น พิน NC และ COM จะเชื่อมต่อกัน ซึ่งหมายความว่ากระแสไฟฟ้าจะไหล เว้นแต่คุณจะส่งสัญญาณจาก ESP32 ไปยังโมดูลรีเลย์เพื่อเปิดวงจรและหยุดการไหลของกระแสไฟฟ้า
- NO (ปกติเปิด): การกำหนดค่าปกติเปิดจะทำงานในทางกลับกัน: ไม่มีการเชื่อมต่อระหว่างพิน NO และ COM ดังนั้นวงจรจึงขาด เว้นแต่คุณจะส่งสัญญาณจาก ESP32 เพื่อปิดวงจร
พินควบคุมระดับเสียงต่ำtagด้าน e มีพิน 1 พินและพิน 1 พิน ชุดแรกประกอบด้วย VCC และ GND เพื่อจ่ายไฟให้โมดูล และอินพุต 2 (IN2) และอินพุต XNUMX (INXNUMX) เพื่อควบคุมรีเลย์ด้านล่างและด้านบนตามลำดับ
หากโมดูลรีเลย์ของคุณมีเพียงช่องเดียว คุณจะมีพิน IN เพียงอันเดียว หากคุณมีสี่ช่อง คุณจะมีพิน IN สี่อัน เป็นต้น
สัญญาณที่คุณส่งไปยังพิน IN จะกำหนดว่ารีเลย์จะทำงานหรือไม่ รีเลย์จะทำงานเมื่อแรงดันไฟฟ้าอินพุตลดลงต่ำกว่า 2V ซึ่งหมายความว่าคุณจะมีสถานการณ์ต่อไปนี้:
- การกำหนดค่าแบบปิดปกติ (NC):
- สัญญาณสูง – กระแสไฟไหล
- สัญญาณต่ำ – กระแสไฟไม่ไหล
- การกำหนดค่าแบบเปิดปกติ (NO):
- สัญญาณสูง – กระแสไฟไม่ไหล
- สัญญาณต่ำ – กระแสไฟไหล
คุณควรใช้การกำหนดค่าแบบปิดปกติเมื่อกระแสไฟฟ้าไหลเป็นส่วนใหญ่ และคุณต้องการหยุดเพียงเป็นครั้งคราวเท่านั้น
ใช้การกำหนดค่าแบบเปิดตามปกติเมื่อคุณต้องการให้กระแสไฟฟ้าไหลเป็นครั้งคราว (เช่นampเล เปิดอัลamp เป็นครั้งคราว).
การเลือกแหล่งจ่ายไฟชุดพินที่สองประกอบด้วยพิน GND, VCC และ JD-VCC
พิน JD-VCC จ่ายไฟให้กับแม่เหล็กไฟฟ้าของรีเลย์ สังเกตว่าโมดูลมีฝาจัมเปอร์ที่เชื่อมต่อพิน VCC และ JD-VCC พินที่แสดงที่นี่เป็นสีเหลือง แต่พินของคุณอาจเป็นสีอื่น
เมื่อใส่ฝาครอบจัมเปอร์แล้ว พิน VCC และ JD-VCC จะเชื่อมต่อกัน นั่นหมายความว่าแม่เหล็กไฟฟ้าของรีเลย์ได้รับพลังงานโดยตรงจากพินจ่ายไฟ ESP32 ดังนั้นโมดูลรีเลย์และวงจร ESP32 จึงไม่ได้แยกจากกันทางกายภาพ
หากไม่มีฝาครอบจัมเปอร์ คุณต้องจัดหาแหล่งจ่ายไฟอิสระเพื่อจ่ายไฟให้กับแม่เหล็กไฟฟ้าของรีเลย์ผ่านพิน JD-VCC การกำหนดค่าดังกล่าวจะแยกรีเลย์ออกจาก ESP32 โดยใช้ตัวต่อออปโตในตัวของโมดูล ซึ่งจะป้องกันไม่ให้ ESP32 เสียหายในกรณีที่เกิดไฟกระชาก
แผนผังคำเตือน: การใช้ปริมาณสูงtagแหล่งจ่ายไฟฟ้าอาจทำให้เกิดบาดเจ็บสาหัสได้
ดังนั้นจึงใช้ LED ขนาด 5 มม. แทนปริมาณไฟสูงtagหลอดไฟอีในการทดลอง หากคุณไม่คุ้นเคยกับปริมาณไฟหลักtage ถามใครสักคนที่จะมาช่วยคุณได้ ขณะตั้งโปรแกรม ESP หรือเดินสายวงจรของคุณ ให้แน่ใจว่าทุกอย่างถูกตัดการเชื่อมต่อจากไฟหลักtage.การติดตั้งไลบรารีสำหรับ ESP32
เพื่อสร้างสิ่งนี้ web เซิฟเวอร์เราใช้ ESPAsyncWebไลบรารีเซิร์ฟเวอร์และไลบรารี AsyncTCP
การติดตั้ง ESPAsyncWebห้องสมุดเซิร์ฟเวอร์
ทำตามขั้นตอนต่อไปเพื่อติดตั้ง เอสปาซิงค์Webเซิฟเวอร์ ห้องสมุด:
- คลิกที่นี่เพื่อดาวน์โหลด ESPAsyncWebไลบรารีเซิร์ฟเวอร์ คุณควรมี
โฟลเดอร์ .zip ในโฟลเดอร์ดาวน์โหลดของคุณ - แตกโฟลเดอร์ .zip แล้วคุณจะได้รับ ESPAsyncWebโฟลเดอร์เซิร์ฟเวอร์มาสเตอร์
- เปลี่ยนชื่อโฟลเดอร์ของคุณจาก ESPAsyncWebเซิร์ฟเวอร์มาสเตอร์ถึง ESPAsyncWebเซิฟเวอร์
- ย้าย ESPAsyncWebโฟลเดอร์เซิร์ฟเวอร์ไปยังโฟลเดอร์ไลบรารีการติดตั้ง Arduino IDE ของคุณ
อีกวิธีหนึ่ง ใน Arduino IDE ของคุณ คุณสามารถไปที่ Sketch > Include
ห้องสมุด > เพิ่มห้องสมุด .ZIP… และเลือกห้องสมุดที่คุณเพิ่งดาวน์โหลด
การติดตั้งไลบรารี AsyncTCP สำหรับ ESP32
การ เอสปาซิงค์Webเซิฟเวอร์ ห้องสมุดต้องการ อะซิงค์TCP ห้องสมุดเพื่อการทำงาน ติดตาม
ขั้นตอนถัดไปในการติดตั้งไลบรารีดังกล่าว:
- คลิกที่นี่เพื่อดาวน์โหลดไลบรารี AsyncTCP คุณควรมีโฟลเดอร์ .zip ในโฟลเดอร์ดาวน์โหลดของคุณ
- แตกโฟลเดอร์ .zip แล้วคุณจะได้โฟลเดอร์ AsyncTCP-master
1. เปลี่ยนชื่อโฟลเดอร์ของคุณจาก AsyncTCP-master เป็น AsyncTCP
3. ย้ายโฟลเดอร์ AsyncTCP ไปยังโฟลเดอร์ไลบรารีการติดตั้ง Arduino IDE ของคุณ
4. สุดท้าย เปิด Arduino IDE ของคุณอีกครั้ง
อีกวิธีหนึ่ง ใน Arduino IDE ของคุณ คุณสามารถไปที่ Sketch > Include
ห้องสมุด > เพิ่มห้องสมุด .ZIP… และเลือกห้องสมุดที่คุณเพิ่งดาวน์โหลด
รหัส
เราจะเขียนโปรแกรม ESP32 โดยใช้ Arduino IDE ดังนั้นโปรดตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งส่วนเสริม ESP32 แล้วก่อนที่จะดำเนินการต่อ: (หากคุณได้ทำขั้นตอนนี้แล้ว คุณสามารถข้ามไปที่ขั้นตอนถัดไปได้)
การติดตั้ง ESP32 Add-on ใน Arduino IDE
หลังจากติดตั้งไลบรารีที่จำเป็นแล้ว ให้เปิดโค้ด Project_7_ESP32_Relay_Web_Server.ino ใน Arduino IDE
ก่อนที่จะอัพโหลดรหัส อย่าลืมใส่ข้อมูลประจำตัวเครือข่ายของคุณเพื่อให้ ESP สามารถเชื่อมต่อกับเครือข่ายท้องถิ่นของคุณได้สาธิต
หลังจากทำการเปลี่ยนแปลงที่จำเป็นแล้ว ให้อัปโหลดโค้ดไปยัง ESP32 ของคุณ ขั้นตอนการอัปโหลดโค้ดอ้างอิง
เปิด Serial Monitor ที่อัตราบอดเรท 115200 และกดปุ่ม ESP32 EN เพื่อรับที่อยู่ IP จากนั้นเปิดเบราว์เซอร์ในเครือข่ายท้องถิ่นของคุณและพิมพ์ที่อยู่ IP ของ ESP32 เพื่อเข้าถึง web เซิร์ฟเวอร์
เปิด Serial Monitor ที่อัตราบอดเรท 115200 และกดปุ่ม ESP32 EN เพื่อรับที่อยู่ IP จากนั้นเปิดเบราว์เซอร์ในเครือข่ายท้องถิ่นของคุณและพิมพ์ที่อยู่ IP ของ ESP32 เพื่อเข้าถึง web เซิร์ฟเวอร์บันทึก: เบราว์เซอร์และ ESP32 ของคุณควรเชื่อมต่อกับ LAN เดียวกัน
คุณควรได้รับสิ่งที่เป็นดังต่อไปนี้โดยมีปุ่มสองปุ่มตามจำนวนรีเลย์ที่คุณกำหนดไว้ในโค้ดของคุณตอนนี้คุณสามารถใช้ปุ่มเพื่อควบคุมรีเลย์ของคุณโดยใช้สมาร์ทโฟนของคุณได้
โครงการ_8_การซิงโครไนซ์สถานะเอาต์พุต_ Web_เซิร์ฟเวอร์
โปรเจ็กต์นี้แสดงวิธีการควบคุมเอาท์พุต ESP32 หรือ ESP8266 โดยใช้ web เซิร์ฟเวอร์และปุ่มทางกายภาพพร้อมกัน สถานะเอาต์พุตจะได้รับการอัปเดตบน web หน้าไม่ว่าจะเปลี่ยนแปลงผ่านปุ่มทางกายภาพหรือ web เซิร์ฟเวอร์
สิ้นสุดโครงการview
มาดูกันอย่างรวดเร็วว่าโครงการนี้ทำงานอย่างไรESP32 หรือ ESP8266 เป็นโฮสต์ web เซิร์ฟเวอร์ที่ให้คุณสามารถควบคุมสถานะเอาท์พุตได้
- สถานะเอาท์พุตปัจจุบันจะแสดงบน web เซิร์ฟเวอร์;
- ESP ยังเชื่อมต่อกับปุ่มกดทางกายภาพที่ควบคุมเอาต์พุตเดียวกันอีกด้วย
- หากคุณเปลี่ยนสถานะเอาต์พุตโดยใช้ปุ่ม puhs ทางกายภาพ สถานะปัจจุบันจะได้รับการอัปเดตบน web เซิร์ฟเวอร์
โดยสรุป โปรเจ็กต์นี้ช่วยให้คุณสามารถควบคุมเอาต์พุตเดียวกันได้โดยใช้ web เซิร์ฟเวอร์และปุ่มกดพร้อมกัน เมื่อใดก็ตามที่สถานะเอาต์พุตเปลี่ยนแปลง web เซิร์ฟเวอร์ได้รับการอัปเดตแล้ว
ชิ้นส่วนที่ต้องใช้
นี่คือรายการชิ้นส่วนที่คุณต้องใช้เพื่อสร้างวงจร:
- บอร์ด ESP32 DEVKIT V1
- แอลอีดี 5 มม
- ตัวต้านทาน 220 โอห์ม
- ปุ่มกด
- ตัวต้านทาน 10k โอห์ม
- แผงวงจร
- สายจั๊มเปอร์
แผนผังการติดตั้งไลบรารีสำหรับ ESP32
เพื่อสร้างสิ่งนี้ web เซิฟเวอร์เราใช้ ESPAsyncWebไลบรารีเซิร์ฟเวอร์และไลบรารี AsyncTCP (หากคุณได้ทำขั้นตอนนี้แล้ว คุณสามารถข้ามไปยังขั้นตอนถัดไปได้)
การติดตั้ง ESPAsyncWebห้องสมุดเซิร์ฟเวอร์
ทำตามขั้นตอนต่อไปเพื่อติดตั้ง ESPAsyncWebไลบรารีเซิร์ฟเวอร์:
- คลิกที่นี่เพื่อดาวน์โหลด ESPAsyncWebไลบรารีเซิร์ฟเวอร์ คุณควรมี
โฟลเดอร์ .zip ในโฟลเดอร์ดาวน์โหลดของคุณ - แตกโฟลเดอร์ .zip แล้วคุณจะได้รับ ESPAsyncWebโฟลเดอร์เซิร์ฟเวอร์มาสเตอร์
- เปลี่ยนชื่อโฟลเดอร์ของคุณจาก ESPAsyncWebเซิร์ฟเวอร์มาสเตอร์ถึง ESPAsyncWebเซิฟเวอร์
- ย้าย ESPAsyncWebโฟลเดอร์เซิร์ฟเวอร์ไปยังโฟลเดอร์ไลบรารีการติดตั้ง Arduino IDE ของคุณ
อีกวิธีหนึ่ง ใน Arduino IDE ของคุณ คุณสามารถไปที่ Sketch > Include
ห้องสมุด > เพิ่มห้องสมุด .ZIP… และเลือกห้องสมุดที่คุณเพิ่งดาวน์โหลด
การติดตั้งไลบรารี AsyncTCP สำหรับ ESP32
เอสปาซิงค์Webไลบรารีเซิร์ฟเวอร์จำเป็นต้องใช้ไลบรารี AsyncTCP จึงจะใช้งานได้ ทำตามขั้นตอนต่อไปนี้เพื่อติดตั้งไลบรารีดังกล่าว:
- คลิกที่นี่เพื่อดาวน์โหลดไลบรารี AsyncTCP คุณควรมีโฟลเดอร์ .zip ในโฟลเดอร์ดาวน์โหลดของคุณ
- แตกโฟลเดอร์ .zip แล้วคุณจะได้โฟลเดอร์ AsyncTCP-master
- เปลี่ยนชื่อโฟลเดอร์ของคุณจาก AsyncTCP-master เป็น AsyncTCP
- ย้ายโฟลเดอร์ AsyncTCP ไปยังโฟลเดอร์ไลบรารีการติดตั้ง Arduino IDE ของคุณ
- สุดท้ายให้เปิด Arduino IDE ของคุณอีกครั้ง
อีกวิธีหนึ่ง ใน Arduino IDE ของคุณ คุณสามารถไปที่ Sketch > Include
ห้องสมุด > เพิ่มห้องสมุด .ZIP… และเลือกห้องสมุดที่คุณเพิ่งดาวน์โหลด
รหัส
เราจะเขียนโปรแกรม ESP32 โดยใช้ Arduino IDE ดังนั้นโปรดตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งส่วนเสริม ESP32 แล้วก่อนที่จะดำเนินการต่อ: (หากคุณได้ทำขั้นตอนนี้แล้ว คุณสามารถข้ามไปที่ขั้นตอนถัดไปได้)
การติดตั้ง ESP32 Add-on ใน Arduino IDE
หลังจากติดตั้งไลบรารีที่จำเป็นแล้ว ให้เปิดโค้ด
โครงการ_8_การซิงโครไนซ์สถานะเอาต์พุต_Web_Server.ino ใน Arduino IDE
ก่อนที่จะอัพโหลดรหัส อย่าลืมใส่ข้อมูลประจำตัวเครือข่ายของคุณเพื่อให้ ESP สามารถเชื่อมต่อกับเครือข่ายท้องถิ่นของคุณได้
โค้ดทำงานอย่างไร
สถานะปุ่มและสถานะเอาต์พุต
ตัวแปร ledState จะเก็บสถานะเอาต์พุตของ LED โดยค่าเริ่มต้น เมื่อ web เซิร์ฟเวอร์เริ่มทำงานแล้ว ระดับต่ำ
buttonState และ lastButtonState ใช้เพื่อตรวจจับว่ามีการกดปุ่มหรือไม่ปุ่ม (web เซิร์ฟเวอร์)
เราไม่ได้รวม HTML ไว้เพื่อสร้างปุ่มบนตัวแปร index_html
นั่นเป็นเพราะเราอยากที่จะสามารถเปลี่ยนแปลงมันได้ขึ้นอยู่กับสถานะ LED ในปัจจุบันที่สามารถเปลี่ยนได้ด้วยปุ่มกดเช่นกัน
ดังนั้นเราจึงสร้างตัวแทนสำหรับปุ่ม %BUTTONPLACEHOLDER% ที่จะถูกแทนที่ด้วยข้อความ HTML เพื่อสร้างปุ่มในภายหลังในโค้ด (ซึ่งจะดำเนินการในฟังก์ชัน processor())โปรเซสเซอร์()
ฟังก์ชัน processor() จะแทนที่ตัวแทนใดๆ ในข้อความ HTML ด้วยค่าจริง ขั้นแรก ฟังก์ชันจะตรวจสอบว่าข้อความ HTML มีข้อมูลใดๆ หรือไม่
ตัวแทน %BUTTONPLACEHOLDER%จากนั้นเรียกใช้ฟังก์ชัน outputState() ที่ส่งคืนสถานะเอาต์พุตปัจจุบัน เราบันทึกไว้ในตัวแปร outputStateValue
จากนั้นนำค่าดังกล่าวมาใช้สร้างข้อความ HTML เพื่อแสดงปุ่มที่มีสถานะที่ถูกต้องดังนี้:
คำขอ HTTP GET เพื่อเปลี่ยนสถานะเอาต์พุต (JavaScript)
เมื่อคุณกดปุ่ม ฟังก์ชันtoggleCheckbox() จะถูกเรียก ฟังก์ชันนี้จะส่งคำขอไปยังที่อื่น URLเพื่อเปิดหรือปิดไฟ LEDหากต้องการเปิดไฟ LED ให้ทำการร้องขอที่ /update?state=1 URL:
มิฉะนั้นจะส่งคำขอไปที่ /update?state=0 URL.
คำขอ HTTP GET เพื่ออัปเดตสถานะ (JavaScript)
เพื่อให้สถานะเอาท์พุตได้รับการอัปเดตบน web เซิร์ฟเวอร์ เราเรียกใช้ฟังก์ชันต่อไปนี้เพื่อสร้างคำขอใหม่ใน /state URL ทุกวินาทีจัดการคำขอ
จากนั้นเราต้องจัดการสิ่งที่เกิดขึ้นเมื่อ ESP32 หรือ ESP8266 ได้รับคำขอจากสิ่งเหล่านั้น URLs.
เมื่อได้รับคำขอบนราก /URLเราจะส่งหน้า HTML และโปรเซสเซอร์ไปด้วยบรรทัดต่อไปนี้จะตรวจสอบว่าคุณได้รับคำขอใน /update?state=1 หรือ /update?state=0 URL และเปลี่ยน ledState ให้เหมาะสม
เมื่อได้รับคำร้องจาก /state URL, เราจะส่งสถานะเอาท์พุตปัจจุบัน:
ลูป()
ในลูป () เราจะดีบาวน์ปุ่มกดและเปิดหรือปิด LED ขึ้นอยู่กับค่าของ ledState ตัวแปร.สาธิต
อัปโหลดโค้ดไปยังบอร์ด ESP32 ของคุณ ขั้นตอนการอ้างอิงโค้ดอัปโหลด
จากนั้นเปิด Serial Monitor ที่อัตราบอดเรท 115200 กดปุ่ม EN/RST บนบอร์ดเพื่อรับที่อยู่ IPเปิดเบราว์เซอร์บนเครือข่ายท้องถิ่นของคุณ และพิมพ์ที่อยู่ IP ของ ESP คุณควรจะสามารถเข้าถึงได้ web เซิร์ฟเวอร์ดังแสดงด้านล่างนี้
บันทึก: เบราว์เซอร์และ ESP32 ของคุณควรเชื่อมต่อกับ LAN เดียวกันคุณสามารถสลับปุ่มบน web เซิร์ฟเวอร์เพื่อเปิดไฟ LED
คุณสามารถควบคุม LED เดียวกันนี้ด้วยปุ่มกดทางกายภาพได้เช่นกัน สถานะของ LED จะได้รับการอัปเดตโดยอัตโนมัติอยู่เสมอ web เซิร์ฟเวอร์
โครงการ 9 ESP32 DHT11 Web เซิฟเวอร์
ในโครงการนี้ คุณจะได้เรียนรู้วิธีสร้าง ESP32 แบบอะซิงโครนัส web เซิร์ฟเวอร์ที่มี DHT11 ที่แสดงอุณหภูมิและความชื้นโดยใช้ Arduino IDE
ข้อกำหนดเบื้องต้น
การ web เซิร์ฟเวอร์เราจะสร้างการอัปเดตการอ่านโดยอัตโนมัติโดยไม่ต้องรีเฟรช web หน้าหนังสือ.
ด้วยโครงการนี้คุณจะได้เรียนรู้:
- วิธีการอ่านอุณหภูมิและความชื้นจากเซ็นเซอร์ DHT;
- สร้างแบบอะซิงโครนัส web เซิร์ฟเวอร์ที่ใช้ เอสปาซิงค์Webห้องสมุดเซิร์ฟเวอร์;
- อัปเดตการอ่านค่าเซนเซอร์โดยอัตโนมัติโดยไม่ต้องรีเฟรช web หน้าหนังสือ.
อะซิงโครนัส Web เซิฟเวอร์
เพื่อสร้าง web เซิร์ฟเวอร์เราจะใช้ เอสปาซิงค์Webห้องสมุดเซิร์ฟเวอร์ ที่ให้วิธีง่ายๆ ในการสร้างแบบอะซิงโครนัส web เซิร์ฟเวอร์ การสร้างระบบอะซิงโครนัส web เซิร์ฟเวอร์มีแอดวานซ์หลายตัวtagตามที่ระบุไว้ในหน้า GitHub ของไลบรารี เช่น:
- “จัดการการเชื่อมต่อมากกว่า 1 รายการในเวลาเดียวกัน”
- “เมื่อคุณส่งการตอบกลับ คุณจะพร้อมจัดการการเชื่อมต่ออื่นๆ ทันที ในขณะที่เซิร์ฟเวอร์กำลังดูแลการส่งการตอบกลับในเบื้องหลัง”
- “เครื่องประมวลผลเทมเพลตที่เรียบง่ายสำหรับจัดการเทมเพลต”
ชิ้นส่วนที่ต้องใช้
เพื่อให้บทช่วยสอนนี้เสร็จสมบูรณ์ คุณต้องมีชิ้นส่วนต่อไปนี้:
- บอร์ดพัฒนา ESP32
- โมดูล DHT11
- แผงวงจร
- สายจั๊มเปอร์
แผนผังการติดตั้งห้องสมุด
คุณจะต้องติดตั้งไลบรารีสองสามแห่งสำหรับโครงการนี้:
- การ ดีเอชที และ เซ็นเซอร์รวม Adafruit ไลบรารีไดรเวอร์สำหรับอ่านจากเซ็นเซอร์ DHT
- เอสปาซิงค์Webเซิฟเวอร์ และ TCP แบบอะซิงค์ ไลบรารีสำหรับสร้างแบบอะซิงโครนัส web เซิร์ฟเวอร์
ปฏิบัติตามคำแนะนำต่อไปนี้เพื่อติดตั้งไลบรารีเหล่านี้:
การติดตั้งไลบรารีเซนเซอร์ DHT
หากต้องการอ่านจากเซ็นเซอร์ DHT โดยใช้ Arduino IDE คุณจำเป็นต้องติดตั้ง ห้องสมุดเซ็นเซอร์ DHTทำตามขั้นตอนต่อไปเพื่อติดตั้งไลบรารี
- คลิกที่นี่เพื่อดาวน์โหลดไลบรารีเซ็นเซอร์ DHT คุณควรมีโฟลเดอร์ .zip ในโฟลเดอร์ดาวน์โหลดของคุณ
- แตกโฟลเดอร์ .zip แล้วคุณจะได้โฟลเดอร์ DHT-sensor-library-master
- เปลี่ยนชื่อโฟลเดอร์ของคุณจาก DHT-sensor-library-master เป็น DHT_sensor
- ย้ายโฟลเดอร์ DHT_sensor ไปยังโฟลเดอร์ไลบรารีการติดตั้ง Arduino IDE ของคุณ
- สุดท้ายให้เปิด Arduino IDE ของคุณอีกครั้ง
การติดตั้งไดรเวอร์เซนเซอร์ Adafruit Unified
คุณยังต้องติดตั้ง ไลบรารีไดรเวอร์เซนเซอร์รวม Adafruit เพื่อทำงานกับเซ็นเซอร์ DHT ทำตามขั้นตอนต่อไปนี้เพื่อติดตั้งไลบรารี
- คลิกที่นี่เพื่อดาวน์โหลดไลบรารี Adafruit Unified Sensor คุณควรมีโฟลเดอร์ .zip ในโฟลเดอร์ดาวน์โหลดของคุณ
- แตกโฟลเดอร์ .zip แล้วคุณจะได้โฟลเดอร์ Adafruit_sensor-master
- เปลี่ยนชื่อโฟลเดอร์ของคุณจาก Adafruit_sensor-master เป็น Adafruit_sensor
- ย้ายโฟลเดอร์ Adafruit_sensor ไปยังโฟลเดอร์ไลบรารีการติดตั้ง Arduino IDE ของคุณ
- สุดท้ายให้เปิด Arduino IDE ของคุณอีกครั้ง
การติดตั้ง ESPAsyncWebห้องสมุดเซิร์ฟเวอร์
ทำตามขั้นตอนต่อไปเพื่อติดตั้ง เอสปาซิงค์Webเซิฟเวอร์ ห้องสมุด:
- คลิกที่นี่เพื่อดาวน์โหลด ESPAsyncWebไลบรารีเซิร์ฟเวอร์ คุณควรมี
โฟลเดอร์ .zip ในโฟลเดอร์ดาวน์โหลดของคุณ - แตกโฟลเดอร์ .zip แล้วคุณควร
รับ ESPAsyncWebโฟลเดอร์เซิร์ฟเวอร์มาสเตอร์ - เปลี่ยนชื่อโฟลเดอร์ของคุณจาก ESPAsyncWebเซิร์ฟเวอร์มาสเตอร์ถึง ESPAsyncWebเซิฟเวอร์
- ย้าย ESPAsyncWebโฟลเดอร์เซิร์ฟเวอร์ไปยังโฟลเดอร์ไลบรารีการติดตั้ง Arduino IDE ของคุณ
การติดตั้งไลบรารี Async TCP สำหรับ ESP32
การ เอสปาซิงค์Webเซิฟเวอร์ ห้องสมุดต้องการ อะซิงค์TCP ไลบรารีจะทำงานได้ ทำตามขั้นตอนต่อไปนี้เพื่อติดตั้งไลบรารีดังกล่าว:
- คลิกที่นี่เพื่อดาวน์โหลดไลบรารี AsyncTCP คุณควรมีโฟลเดอร์ .zip ในโฟลเดอร์ดาวน์โหลดของคุณ
- แตกโฟลเดอร์ .zip แล้วคุณจะได้โฟลเดอร์ AsyncTCP-master
- เปลี่ยนชื่อโฟลเดอร์ของคุณจาก AsyncTCP-master เป็น AsyncTCP
- ย้ายโฟลเดอร์ AsyncTCP ไปยังโฟลเดอร์ไลบรารีการติดตั้ง Arduino IDE ของคุณ
- สุดท้ายให้เปิด Arduino IDE ของคุณอีกครั้ง
รหัส
เราจะเขียนโปรแกรม ESP32 โดยใช้ Arduino IDE ดังนั้นโปรดตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งส่วนเสริม ESP32 แล้วก่อนที่จะดำเนินการต่อ: (หากคุณได้ทำขั้นตอนนี้แล้ว คุณสามารถข้ามไปที่ขั้นตอนถัดไปได้)
การติดตั้ง ESP32 Add-on ใน Arduino IDE
หลังจากติดตั้งไลบรารีที่จำเป็นแล้ว ให้เปิดโค้ด
โครงการ_9_ESP32_DHT11_Web_Server.ino ใน Arduino IDE
ก่อนที่จะอัพโหลดรหัส อย่าลืมใส่ข้อมูลประจำตัวเครือข่ายของคุณเพื่อให้ ESP สามารถเชื่อมต่อกับเครือข่ายท้องถิ่นของคุณได้โค้ดทำงานอย่างไร
ในย่อหน้าต่อไปนี้ เราจะอธิบายวิธีการทำงานของโค้ด อ่านต่อไปหากคุณต้องการเรียนรู้เพิ่มเติมหรือข้ามไปที่ส่วนการสาธิตเพื่อดูผลลัพธ์สุดท้าย
การนำเข้าไลบรารี
ขั้นแรก ให้ทำการอิมพอร์ตไลบรารีที่จำเป็น WiFi, ESPAsyncWebต้องใช้เซิร์ฟเวอร์และ ESPAsyncTCP เพื่อสร้าง web เซิร์ฟเวอร์ ต้องใช้ไลบรารี Adafruit_Sensor และ DHT เพื่ออ่านจากเซ็นเซอร์ DHT11 หรือ DHT22คำจำกัดความของตัวแปร
กำหนด GPIO ที่พินข้อมูล DHT เชื่อมต่ออยู่ ในกรณีนี้ จะเชื่อมต่อกับ GPIO 4จากนั้นเลือกประเภทเซนเซอร์ DHT ที่คุณใช้ ในตัวอย่างนี้ampเรากำลังใช้ DHT22 หากคุณใช้เซนเซอร์ประเภทอื่น คุณเพียงแค่ยกเลิกการแสดงความคิดเห็นและแสดงความคิดเห็นเซนเซอร์ประเภทอื่น
สร้างอินสแตนซ์ของวัตถุ DHT ด้วยประเภทและพินที่เราได้กำหนดไว้ก่อนหน้านี้สร้างแบบอะซิงค์Webวัตถุเซิร์ฟเวอร์อยู่บนพอร์ต 80
อ่านฟังก์ชั่นอุณหภูมิและความชื้น
เราได้สร้างฟังก์ชันสองอย่างขึ้นมา: หนึ่งเพื่ออ่านอุณหภูมิ เราได้สร้างฟังก์ชันสองอย่างขึ้นมา: หนึ่งเพื่ออ่านอุณหภูมิ (readDHTTemperature()) และอีกหนึ่งเพื่ออ่านความชื้น (readDHTHumidity())การรับค่าการอ่านจากเซ็นเซอร์นั้นง่ายพอๆ กับการใช้เมธอด readTemperature() และ readHumidity() กับอ็อบเจ็กต์ dht
เรายังมีเงื่อนไขที่ส่งคืนเครื่องหมายขีดสองอัน (–) ในกรณีที่เซ็นเซอร์ไม่สามารถรับค่าการอ่านได้
ค่าที่อ่านได้จะถูกส่งกลับเป็นประเภทสตริง หากต้องการแปลงค่า float เป็นสตริง ให้ใช้ฟังก์ชัน String()
โดยค่าเริ่มต้น เราจะอ่านอุณหภูมิเป็นองศาเซลเซียส หากต้องการทราบอุณหภูมิเป็นองศาฟาเรนไฮต์ ให้ใส่คำอธิบายอุณหภูมิเป็นองศาเซลเซียสและยกเลิกคำอธิบายอุณหภูมิเป็นองศาฟาเรนไฮต์ เพื่อให้ได้ข้อมูลดังต่อไปนี้:
อัพโหลดโค้ด
ตอนนี้ อัปโหลดโค้ดไปยัง ESP32 ของคุณ ตรวจสอบให้แน่ใจว่าคุณเลือกบอร์ดและพอร์ต COM ที่ถูกต้อง ขั้นตอนการอัปโหลดโค้ดอ้างอิง
หลังจากอัพโหลดแล้ว ให้เปิด Serial Monitor ที่อัตราบอดเรท 115200 กดปุ่มรีเซ็ต ESP32 ที่อยู่ IP ของ ESP32 ควรพิมพ์ใน Serial เฝ้าสังเกต.สาธิต
เปิดเบราว์เซอร์และพิมพ์ที่อยู่ IP ของ ESP32 web เซิร์ฟเวอร์ควรแสดงค่าการอ่านเซนเซอร์ล่าสุด
บันทึก: เบราว์เซอร์และ ESP32 ของคุณควรเชื่อมต่อกับ LAN เดียวกัน
โปรดทราบว่าการอ่านอุณหภูมิและความชื้นจะได้รับการอัปเดตโดยอัตโนมัติโดยไม่จำเป็นต้องรีเฟรช web หน้าหนังสือ.
โครงการ_10_ESP32_OLED_Display
โปรเจ็กต์นี้จะแสดงวิธีใช้จอแสดงผล OLED SSD0.96 ขนาด 1306 นิ้วกับ ESP32 โดยใช้ Arduino IDE
ขอแนะนำจอแสดงผล OLED ขนาด 0.96 นิ้ว
การ จอแสดงผล OLED ที่เราจะใช้ในบทช่วยสอนนี้คือรุ่น SSD1306 ซึ่งเป็นจอแสดงผลสีเดียวขนาด 0.96 นิ้ว พร้อมด้วยความละเอียด 128×64 พิกเซล ดังแสดงในรูปต่อไปนี้จอแสดงผล OLED ไม่ต้องการไฟแบ็คไลท์ ซึ่งทำให้มีความคมชัดดีมากในสภาพแวดล้อมที่มืด นอกจากนี้ พิกเซลของจอแสดงผลจะใช้พลังงานเฉพาะเมื่อเปิดอยู่เท่านั้น ดังนั้นจอแสดงผล OLED จึงใช้พลังงานน้อยกว่าเมื่อเทียบกับจอแสดงผลอื่นๆ
เนื่องจากจอแสดงผล OLED ใช้โปรโตคอลการสื่อสาร I2C การเดินสายจึงง่ายมาก คุณสามารถใช้ตารางต่อไปนี้เป็นข้อมูลอ้างอิงได้
พิน OLED | ESP32 |
วิน | 3.3โวลต์ |
ก.ย.ด. | ก.ย.ด. |
เอส ซี แอล | GPIO22 |
เอสดีเอ | GPIO21 |
แผนผังการติดตั้งไลบรารี SSD1306 OLED – ESP32
มีไลบรารีหลายแห่งที่ใช้ควบคุมหน้าจอ OLED ด้วย ESP32
ในบทช่วยสอนนี้เราจะใช้ไลบรารี Adafruit สองรายการ: ไลบรารี Adafruit_SSD1306 และ ไลบรารี่ Adafruit_GFX.
ทำตามขั้นตอนต่อไปเพื่อติดตั้งไลบรารีเหล่านี้
- เปิด Arduino IDE ของคุณแล้วไปที่ Sketch > Include Library > Manage Libraries ตัวจัดการไลบรารีควรเปิดขึ้นมา
- พิมพ์ “SSD1306” ในกล่องค้นหาและติดตั้งไลบรารี SSD1306 จาก Adafruit
- หลังจากติดตั้งไลบรารี SSD1306 จาก Adafruit แล้ว พิมพ์ “GFX” ในกล่องค้นหาและติดตั้งไลบรารี
- หลังจากติดตั้งไลบรารีแล้วให้รีสตาร์ท Arduino IDE ของคุณ
รหัส
หลังจากติดตั้งไลบรารีที่จำเป็นแล้ว ให้เปิดไฟล์ Project_10_ESP32_OLED_Display.ino ในโค้ด Arduino IDE
เราจะเขียนโปรแกรม ESP32 โดยใช้ Arduino IDE ดังนั้นโปรดตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งส่วนเสริม ESP32 แล้วก่อนที่จะดำเนินการต่อ: (หากคุณได้ทำขั้นตอนนี้แล้ว คุณสามารถข้ามไปที่ขั้นตอนถัดไปได้)
การติดตั้ง ESP32 Add-on ใน Arduino IDEโค้ดทำงานอย่างไร
การนำเข้าไลบรารี
ขั้นแรก คุณต้องนำเข้าไลบรารีที่จำเป็น ไลบรารี Wire ที่ใช้ I2C และไลบรารี Adafruit ที่ใช้เขียนลงในจอแสดงผล: Adafruit_GFX และ Adafruit_SSD1306เริ่มต้นการใช้งานจอแสดงผล OLED
จากนั้นคุณกำหนดความกว้างและความสูง OLED ของคุณ ในตัวอย่างนี้ampเราใช้จอแสดงผล OLED ขนาด 128×64 หากคุณใช้ขนาดอื่น คุณสามารถเปลี่ยนแปลงได้ในตัวแปร SCREEN_WIDTH และ SCREEN_HEIGHTจากนั้น เริ่มต้นวัตถุการแสดงผลด้วยความกว้างและความสูงตามที่กำหนดไว้ก่อนหน้านี้ด้วยโปรโตคอลการสื่อสาร I2C (&Wire)
พารามิเตอร์ (-1) หมายถึงจอแสดงผล OLED ของคุณไม่มีพิน RESET หากจอแสดงผล OLED ของคุณมีพิน RESET ควรเชื่อมต่อกับ GPIO ในกรณีนั้น คุณควรส่งหมายเลข GPIO เป็นพารามิเตอร์
ในการตั้งค่า () ให้เริ่มต้นการทำงานของ Serial Monitor ที่อัตราบอด 115200 เพื่อจุดประสงค์ในการดีบักเริ่มต้นจอแสดงผล OLED ด้วยวิธีการ begin() ดังต่อไปนี้:
นอกจากนี้ ตัวอย่างนี้ยังพิมพ์ข้อความบน Serial Monitor ในกรณีที่เราไม่สามารถเชื่อมต่อกับจอแสดงผลได้
หากคุณใช้จอแสดงผล OLED อื่น คุณอาจต้องเปลี่ยนที่อยู่ OLED ในกรณีของเรา ที่อยู่คือ 0x3C
หลังจากเริ่มการทำงานจอแสดงผลแล้ว ให้เพิ่มการหน่วงเวลาสองวินาที เพื่อให้ OLED มีเวลาเพียงพอในการเริ่มการทำงานก่อนที่จะเขียนข้อความ:
จอแสดงผลชัดเจน ตั้งค่าขนาดตัวอักษร สี และเขียนข้อความได้
หลังจากเริ่มการแสดงผลแล้ว ให้ล้างบัฟเฟอร์การแสดงผลโดยใช้เมธอด clearDisplay():
ก่อนที่จะเขียนข้อความ คุณต้องตั้งค่าขนาดตัวอักษร สี และตำแหน่งที่จะแสดงผลข้อความบน OLED
ตั้งค่าขนาดตัวอักษรโดยใช้เมธอด setTextSize():ตั้งค่าสีตัวอักษรด้วยวิธี setTextColor():
WHITE กำหนดอักษรสีขาวและพื้นหลังสีดำ
กำหนดตำแหน่งที่ข้อความเริ่มต้นโดยใช้เมธอด setCursor(x,y) ในกรณีนี้ เราจะตั้งค่าให้ข้อความเริ่มต้นที่พิกัด (0,0) ซึ่งอยู่ที่มุมซ้ายบนสุดท้ายคุณสามารถส่งข้อความไปที่จอแสดงผลโดยใช้เมธอด println() ดังต่อไปนี้
จากนั้นคุณจะต้องเรียกใช้เมธอด display() เพื่อแสดงข้อความบนหน้าจอจริง
ไลบรารี Adafruit OLED นำเสนอวิธีการที่เป็นประโยชน์สำหรับการเลื่อนข้อความได้อย่างง่ายดาย
- startscrollright(0x00, 0x0F): เลื่อนข้อความจากซ้ายไปขวา
- startscrollleft(0x00, 0x0F): เลื่อนข้อความจากขวาไปซ้าย
- startscrolldiagright(0x00, 0x07): เลื่อนข้อความจากมุมล่างซ้ายไปยังมุมบนขวา startscrolldiagleft(0x00, 0x07): เลื่อนข้อความจากมุมล่างขวาไปยังมุมบนซ้าย
อัพโหลดโค้ด
ตอนนี้อัปโหลดโค้ดไปยัง ESP32 ของคุณ ขั้นตอนอ้างอิงโค้ดอัปโหลด
หลังจากอัพโหลดโค้ดแล้ว OLED จะแสดงข้อความเลื่อน
เอกสาร / แหล่งข้อมูล
![]() |
ชุดเริ่มต้นพื้นฐาน LAFVIN ESP32 [พีดีเอฟ] คู่มือการใช้งาน ชุดเริ่มต้นพื้นฐาน ESP32, ESP32, ชุดเริ่มต้นพื้นฐาน, ชุดเริ่มต้น |