- รู้เบื้องต้นเกี่ยวกับ ESP8285
- แผนภาพวงจรบอร์ดพัฒนา ESP
- การสร้างบอร์ด Dev ESP8285 ของเรา
- สั่งซื้อ PCB จาก PCBWay
- การประกอบและการตั้งโปรแกรมบอร์ด ESP8285
- การทดสอบด้วย Simple LED Blink Sketch
- การทดสอบ Webserver Sketch บน ESP8285
ESP Controllers จาก Espressif กลายเป็นตัวเลือกยอดนิยมสำหรับการออกแบบที่ใช้ IoT มีโมดูล ESP และบอร์ดพัฒนาหลายประเภทที่วางจำหน่ายแล้วในตลาดซึ่ง NodeMCU เป็นที่นิยมมากที่สุด นอกจากนั้น ESP-12E, ESP01 ยังเป็นตัวเลือกยอดนิยม แต่ถ้าคุณต้องการทำให้การออกแบบของคุณมีความยืดหยุ่นและกะทัดรัดมากขึ้นโอกาสที่เราจะต้องออกแบบโมดูล ESP ของเราเองจากระดับชิปแทนที่จะใช้โมดูลที่พร้อมใช้งานโดยตรง ในบทความนี้เราจะเรียนรู้วิธีการออกแบบวงจรและ PCB สำหรับการใช้ตัวควบคุม ESP (ESP8285) โดยตรงโดยไม่ต้องใช้โมดูล
ในโครงการนี้เราได้ใช้ESP8285เนื่องจากเป็นชิปตัวเล็ก ๆ ที่น่าสนใจมาก เป็น SoC ขนาดเล็ก (ระบบบนชิป) พร้อม IoT (Internet of Things) และความสามารถในการนอนหลับลึก มีพลังเช่นเดียวกับ ESP8266 พี่ใหญ่ของเขาและเป็นโบนัสมาพร้อมกับหน่วยความจำแฟลชในตัว 1MB พร้อม GPIO จำนวนมาก คุณยังสามารถใช้ ESP8266 เป็นอีกทางเลือกหนึ่งและสิ่งต่างๆที่กล่าวถึงในบทความนี้จะยังคงเหมือนเดิม
ในบทความก่อนหน้านี้ฉันได้แสดงให้คุณเห็นว่าคุณสามารถออกแบบเสาอากาศ PCB ของคุณเองสำหรับ 2.4GHz ได้อย่างไรโดยใช้ชิป ESP8285 เดียวกันเป็นตัวอย่าง คุณสามารถอ่านบทความที่จะเรียนรู้เกี่ยวกับการออกแบบเสาอากาศสำหรับ ESP8266
ดังนั้นในบทความนี้ฉันจะพูดถึงวิธีการทำงานของวงจรทั้งหมดและในที่สุดก็จะมีวิดีโออธิบายทั้งหมด ฉันยังได้กล่าวถึงรายละเอียดขั้นตอนทั้งหมดในการออกแบบและสั่งซื้อบอร์ด PCB จาก PCBWay สำหรับการออกแบบโมดูล ESP ของเรา
รู้เบื้องต้นเกี่ยวกับ ESP8285
หากคุณไม่ทราบเกี่ยวกับชิป ESP8285 อเนกประสงค์นี้นี่คือคำอธิบายโดยย่อพร้อมรายการคุณสมบัติ ESP8285 เป็นชิปขนาดเล็กที่มีแฟลชและแรมในตัว 1Mซึ่งค่อนข้างคล้ายกับโมดูล ESP8286, ESP-01 แต่หน่วยความจำแฟลชภายในทำให้มีขนาดกะทัดรัดและราคาถูกกว่ามาก
ชิปนี้มีหน่วยประมวลผลหลัก L106 Diamond 32 บิตของ Tensilica และเช่นเดียวกันกับ ESP8266 ด้วยนั่นคือเหตุผลที่รหัสทั้งหมดสำหรับ ESP8266 สามารถกะพริบไปยังชิปนี้ได้โดยตรงโดยไม่ต้องมีการปรับเปลี่ยนใด ๆ และมีสแต็กเครือข่ายเดียวกันกับปริมาณ ESp8266.
ESP8285 รวมสวิตช์เสาอากาศ RF balun เครื่องขยายเสียงเครื่องขยายเสียงรับสัญญาณรบกวนต่ำฟิลเตอร์และโมดูลการจัดการพลังงาน การออกแบบที่กะทัดรัดช่วยลดขนาด PCB และต้องใช้วงจรภายนอกน้อยที่สุด หากคุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ IC นี้คุณสามารถตรวจสอบแผ่นข้อมูลของ ESP8285ของอุปกรณ์ได้ที่ Espressif Systems
แผนภาพวงจรบอร์ดพัฒนา ESP
วงจรนั้นง่ายมากและฉันได้แยกมันออกเพื่อความเข้าใจที่ดีขึ้น แผนผัง ESPด้านล่างแสดงวงจรทั้งหมดอย่างที่คุณเห็นมีบล็อกการทำงานแปดบล็อกฉันจะอธิบายแต่ละบล็อกและอธิบายทุกบล็อก
ESP8285 SOC:
หัวใจสำคัญของโครงการคือ ESP8285 SoC GPIO ทั้งหมดและการเชื่อมต่อที่จำเป็นอื่น ๆ จะถูกกำหนดไว้ที่นี่
ตัวกรองพลังงาน:มีพินเพาเวอร์ 7 พินบน IC นี้อันดับแรกคือพินเพาเวอร์สำหรับ ADC และ IO ฉันย่อให้สั้นเข้าด้วยกันและใช้ตัวเก็บประจุตัวกรองไฟ 47uF และตัวเก็บประจุแบบแยกตัว 0.1uF เพื่อกรองอินพุต 3.3V DC
ตัวกรอง PI: ตัวกรอง PI เป็นหนึ่งในบล็อกที่สำคัญที่สุดของการออกแบบนี้เนื่องจากมีหน้าที่ในการเปิดเครื่องขยายสัญญาณ RF และ LNA เสียงรบกวนภายในหรือภายนอกสามารถอธิบายได้สำหรับส่วนนี้ดังนั้นส่วน RF จะไม่ทำงาน. นั่นเป็นเหตุผลว่าทำไมตัวกรองความถี่ต่ำสำหรับส่วน LNA จึงมีความสำคัญมาก คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับตัวกรอง PI ได้ตามลิงค์
Crystal Oscillator:คริสตัลออสซิลเลเตอร์ 40MHz ทำหน้าที่เป็นแหล่งสัญญาณนาฬิกาสำหรับ ESP8285 SoC และเพิ่มตัวเก็บประจุแบบแยกตัว 10pF ตามคำแนะนำของแผ่นข้อมูล
ส่วน LNA:อีกส่วนที่สำคัญที่สุดของวงจรนี้คือส่วน LNA นี่คือจุดที่เสาอากาศ PCB เชื่อมต่อกับพินทางกายภาพของ ESP ตามที่แนะนำโดยแผ่นข้อมูลจะใช้ตัวเก็บประจุ 5.6pF และควรใช้งานได้ดีเช่นเดียวกับวงจรที่ตรงกัน แต่ฉันได้เพิ่มตัวยึดสองตัวสำหรับตัวเหนี่ยวนำสองตัวราวกับว่าในกรณีที่ความไม่ลงรอยกันของวงจรจับคู่ทำงานฉันสามารถใส่ตัวเหนี่ยวนำบางตัวเข้าไปเพื่อปรับแต่งค่าให้ตรงกับอิมพีแดนซ์ของเสาอากาศได้
ส่วน LNA ยังมีจัมเปอร์ PCB สองตัวพร้อมขั้วต่อ UFL เสาอากาศ PCB ถูกตั้งค่าตามค่าเริ่มต้น แต่หากแอปพลิเคชันของคุณต้องการช่วงเพิ่มขึ้นเล็กน้อยคุณสามารถถอดจัมเปอร์ PCB ออกและทำให้จัมเปอร์สั้นลงสำหรับขั้วต่อ UFL และคุณสามารถเชื่อมต่อเสาอากาศภายนอกได้เช่นนั้น
ขั้วต่ออินพุตแบตเตอรี่:
คุณสามารถดูด้านบนฉันได้ใส่ขั้วต่อแบตเตอรี่สามประเภทแบบขนานเพราะหากคุณไม่พบขั้วต่อคุณสามารถใส่ขั้วต่ออื่นได้ตลอดเวลา
GPIO Headers และ Programming Headers:
ส่วนหัว GPIO อยู่ที่นั่นเพื่อเข้าถึงพิน GPIO และส่วนหัวการเขียนโปรแกรมอยู่ที่นั่นเพื่อแฟลช Soc หลัก
วงจรรีเซ็ตอัตโนมัติ:
ในบล็อกนี้ทรานซิสเตอร์ NPN สองตัว MMBT2222A จะสร้างวงจรรีเซ็ตอัตโนมัติเมื่อคุณกดปุ่มอัปโหลดใน Arduino IDE เครื่องมือ python ได้รับสายเครื่องมือ python นี้เป็นเครื่องมือแฟลชสำหรับอุปกรณ์ ESP เครื่องมือ pi นี้ให้ ส่งสัญญาณไปยังตัวแปลง UART เพื่อรีเซ็ตบอร์ดในขณะที่จับพิน GPIO กับกราวด์ หลังจากนั้นกระบวนการอัปโหลดและการตรวจสอบจะเริ่มขึ้น
LED เพาเวอร์, LED ออนบอร์ดและตัวแบ่งแรงดันไฟฟ้า:
LED เพาเวอร์: LED เพาเวอร์มีจัมเปอร์ PCB หากคุณใช้บอร์ดนี้สำหรับแอพพลิเคชั่นที่ใช้พลังงานแบตเตอรี่คุณสามารถบัดกรีจัมเปอร์นี้เพื่อประหยัดพลังงานได้ไม่น้อย
LED ออนบอร์ด: บอร์ดพัฒนาจำนวนมากในตลาดมีLED ออนบอร์ดและบอร์ดนี้ก็ไม่มีข้อยกเว้น GPIO16 ของ IC เชื่อมต่อกับออนบอร์ด led นอกจากนั้นยังมีตัวยึดสำหรับตัวต้านทาน 0 OHM ด้วยการเติมตัวต้านทาน 0 โอห์มคุณกำลังเชื่อมต่อ GPIO16 กับการรีเซ็ตและอย่างที่คุณทราบนี่เป็นขั้นตอนที่สำคัญมากในการทำให้ ESP ในโหมดสลีปลึก
ตัวแบ่งแรงดันไฟฟ้า:อย่างที่คุณทราบแรงดันไฟฟ้าอินพุตสูงสุดของ ADC คือ 1V ดังนั้นในการเปลี่ยนช่วงของอินพุตเป็น 3.3V จะใช้ตัวแบ่งแรงดันไฟฟ้า การกำหนดค่าถูกสร้างขึ้นเพื่อให้คุณสามารถเพิ่มตัวต้านทานในอนุกรมด้วยพินเพื่อเปลี่ยนช่วงเป็น 5V
HT7333 LDO:
LDO หรือ Low Dropout Voltage Regulator ใช้เพื่อควบคุมแรงดันไฟฟ้าไปยัง ESP8285 จากแบตเตอรี่ที่มีการสูญเสียพลังงานน้อยที่สุด
แรงดันไฟฟ้าอินพุตสูงสุดของ HT7333 LDO คือ 12V และใช้ในการแปลงแรงดันแบตเตอรี่เป็น 3.3V ฉันเลือก HT7333 LDO นี้เนื่องจากเป็นอุปกรณ์ที่มีกระแสไฟฟ้านิ่งต่ำมาก 4.7uF decoupling capacitors ใช้เพื่อทำให้ LDO เสถียร
ปุ่มกดสำหรับโหมดการเขียนโปรแกรม:
ปุ่มกดเชื่อมต่อกับ GPIO0 หากตัวแปลง UART ของคุณไม่มีพิน RTS หรือ DTR คุณสามารถใช้ปุ่มกดนี้เพื่อดึง GPIO0 ลงกราวด์ด้วยตนเอง
ตัวต้านทานแบบดึงขึ้นและแบบดึงลง:
ตัวต้านทานแบบดึงขึ้นและแบบดึงลงมีอยู่ตามที่แนะนำโดยแผ่นข้อมูล
นอกจากนั้นยังมีการปฏิบัติตามบรรทัดฐานและแนวทางการออกแบบมากมายในขณะที่ออกแบบ PCB หากคุณต้องการทราบข้อมูลเพิ่มเติมคุณสามารถดูได้ในคู่มือการออกแบบฮาร์ดแวร์สำหรับ ESP8266
การสร้างบอร์ด Dev ESP8285 ของเรา
แผนผังเสร็จสิ้นและเราสามารถดำเนินการจัดวาง PCB ได้ เราใช้ซอฟต์แวร์ออกแบบ Eagle PCB เพื่อสร้าง PCB แต่คุณสามารถออกแบบ PCB ด้วยซอฟต์แวร์ที่คุณต้องการได้ การออกแบบ PCB ของเราจะมีลักษณะเช่นนี้เมื่อเสร็จสิ้น
ไฟล์ BOM และ Gerber สามารถดาวน์โหลดได้จากลิงค์ต่อไปนี้:
- ESP8282 ไฟล์ Dev-Board Gerber
- ESP8282 Dev-Board BOM
ตอนนี้การออกแบบของเราพร้อมแล้วก็ถึงเวลาสร้าง PCBs โดยใช้ โดยทำตามขั้นตอนด้านล่างนี้:
สั่งซื้อ PCB จาก PCBWay
ขั้นตอนที่ 1: เข้าสู่ https://www.pcbway.com/ ลงทะเบียนหากนี่เป็นครั้งแรกของคุณ จากนั้นในแท็บ PCB Prototype ให้ป้อนขนาดของ PCB จำนวนเลเยอร์และจำนวน PCB ที่คุณต้องการ
ขั้นตอนที่ 2:ดำเนินการต่อโดยคลิกที่ปุ่ม 'อ้างสิทธิ์ทันที' คุณจะเข้าสู่หน้าที่ตั้งค่าพารามิเตอร์เพิ่มเติมบางอย่างเช่นประเภทบอร์ด, เลเยอร์, วัสดุสำหรับ PCB, ความหนาและอื่น ๆ โดยส่วนใหญ่จะถูกเลือกโดยค่าเริ่มต้นหากคุณเลือกพารามิเตอร์เฉพาะใด ๆ คุณสามารถเลือกได้ มันได้ยิน
อย่างที่คุณเห็นเราต้องการ PCBs ของเราสีดำ! ดังนั้นฉันจึงเลือกสีดำในส่วนสีของหน้ากากประสาน
ขั้นตอนที่ 3:ขั้นตอนสุดท้ายคือการอัปโหลดไฟล์ Gerber และดำเนินการชำระเงิน เพื่อให้แน่ใจว่ากระบวนการนี้ราบรื่น PCBWAY จะตรวจสอบว่าไฟล์ Gerber ของคุณถูกต้องหรือไม่ก่อนดำเนินการชำระเงิน ด้วยวิธีนี้คุณจะมั่นใจได้ว่า PCB ของคุณเป็นมิตรต่อการผลิตและจะไปถึงคุณอย่างมุ่งมั่น
การประกอบและการตั้งโปรแกรมบอร์ด ESP8285
หลังจากนั้นไม่กี่วันเราได้รับ PCB ของเราในกล่องบรรจุภัณฑ์ที่เรียบร้อยและคุณภาพของ PCB ก็ดีเช่นเคย ชั้นบนสุดและชั้นล่างสุดของกระดานแสดงอยู่ด้านล่าง:
หลังจากได้รับบอร์ดแล้วฉันก็เริ่มบัดกรีบอร์ดทันที ฉันใช้สถานีบัดกรีลมร้อนและฟลักซ์บัดกรีจำนวนมากในการบัดกรีซีพียูหลักและส่วนประกอบอื่น ๆ บน PCB จะบัดกรีผ่านหัวแร้ง โมดูลที่ประกอบจะแสดงด้านล่าง
เมื่อเสร็จแล้วฉันได้เชื่อมต่อโมดูล FTDI ที่เชื่อถือได้เพื่อทดสอบบอร์ดโดยอัปโหลดภาพร่างพินที่เชื่อมต่อและรูปภาพของบอร์ดที่แสดงด้านล่าง:
ESP8285 Dev Board FTDI โมดูล
3.3V -> 3.3V
Tx -> Rx
Rx -> Tx
DTR -> DTR
RST -> RST
GND -> GND
เมื่อทุกการเชื่อมต่อที่จำเป็นจะเสร็จผมได้ตั้งค่า Arduino IDE โดยการเลือกคณะกรรมการ ESP8285 ทั่วไปจาก เครื่องมือ > คณะกรรมการ > ทั่วไป ESP8285 โมดูล
การทดสอบด้วย Simple LED Blink Sketch
ต่อไปก็ถึงเวลาทดสอบบอร์ดโดยการกะพริบ LED ซึ่งฉันได้ใช้รหัสต่อไปนี้:
/ * ESP8285 กะพริบกะพริบ LED สีน้ำเงินบนโมดูล ESP828285 * / # กำหนด LED_PIN 16 // กำหนดการติดตั้งขา LED กะพริบเป็นโมฆะ () {pinMode (LED_PIN, OUTPUT); // เริ่มต้นขา LED เป็นเอาต์พุต} // ฟังก์ชันลูปทำงานซ้ำแล้วซ้ำอีกตลอดไป void loop () {digitalWrite (LED_PIN, LOW) // เปิดไฟ LED (โปรดทราบว่า LOW คือระดับแรงดันไฟฟ้า) ล่าช้า (1000); // รอ digitalWrite วินาที (LED_PIN, HIGH); // ปิด LED โดยทำให้แรงดันไฟฟ้าสูงล่าช้า (1,000); // รอสองวินาที}
รหัสนั้นง่ายมากก่อนอื่นฉันกำหนดพิน LED สำหรับบอร์ดนี้และอยู่ที่ GPIO 16 ถัดไปฉันได้ตั้งค่าพินนั้นเป็นเอาต์พุตในส่วนการตั้งค่า และในที่สุดในส่วนการวนซ้ำฉันได้เปิดและปิดพินโดยมีการหน่วงเวลาหนึ่งวินาทีอยู่ระหว่าง
การทดสอบ Webserver Sketch บน ESP8285
หลังจากที่ปรับได้ทำงานเวลามันจะทดสอบร่าง HelloServer จากตัวอย่าง ESP8266WebServer ฉันใช้ตัวอย่าง ESP8266 เนื่องจากโค้ดส่วนใหญ่เข้ากันได้กับชิป esp8285 โค้ดตัวอย่างสามารถพบได้ที่ด้านล่างของหน้านี้
รหัสนี้ง่ายมากเช่นกันอันดับแรกเราต้องกำหนดไลบรารีที่จำเป็นทั้งหมด
# รวม
ต่อไปเราต้องป้อนชื่อและรหัสผ่านของฮอตสปอต
#ifndef STASSID # กำหนด STASSID "your-ssid" #define STAPSK "your-password" #endif const char * ssid = STASSID; const ถ่าน * รหัสผ่าน = STAPSK;
ต่อไปเราต้องกำหนดวัตถุ ESP8266WebServer ตัวอย่างที่นี่กำหนดเป็นเซิร์ฟเวอร์ (80) (80) คือหมายเลขพอร์ต
ต่อไปเราต้องกำหนดพินสำหรับ LED ในกรณีของฉันคือพินหมายเลข 16
const int นำ = 16;
ถัดไป ฟังก์ชัน handleRoot () ถูกกำหนด ฟังก์ชันนี้จะถูกเรียกใช้เมื่อมีการเรียกใช้ที่อยู่ IP จากเบราว์เซอร์ของเรา
โมฆะ handleRoot () {digitalWrite (led, 1); server.send (200, "text / plain", "สวัสดีจาก esp8266!"); digitalWrite (นำ, 0); }
ถัดไปคือฟังก์ชั่นการตั้งค่าฟังว่าเราต้องกำหนดพารามิเตอร์ที่จำเป็นทั้งหมดเช่น -
PinMode (นำ, เอาท์พุท); // เราได้กำหนดพินledเป็นเอาต์พุต Serial.begin (115200); // เราได้เริ่มการเชื่อมต่อแบบอนุกรมกับ 115200 baud WiFi.mode (WIFI_STA); // เราได้ตั้งค่าโหมด wifi เป็นสถานี WiFi.begin (ssid, รหัสผ่าน); จากนั้นเราจะเริ่มการเชื่อมต่อ wifi Serial.println (""); // บรรทัดนี้ให้พื้นที่เพิ่มเติมในขณะที่ (WiFi.status ()! = WL_CONNECTED) {delay (500); Serial.print ("."); } / * ในลูป while เรากำลังทดสอบสถานะการเชื่อมต่อหนึ่งที่ ESP สามารถเชื่อมต่อกับฮอตสปอตลูปจะเบรก * / Serial.println (""); Serial.print ("เชื่อมต่อกับ"); Serial.println (ssid); Serial.print ("ที่อยู่ IP:"); Serial.println (WiFi.localIP ());
ต่อไปเรากำลังพิมพ์ชื่อและที่อยู่ IP ของ SSID ที่เชื่อมต่อไปยังหน้าต่างมอนิเตอร์แบบอนุกรม
server.on ("/", handleRoot); // บนเมธอดของอ็อบเจ็กต์เซิร์ฟเวอร์ถูกเรียกให้จัดการฟังก์ชันรูท server.on ("/ inline", () {server.send (200, "text / plain", "this work as well");}); // อีกครั้งเราได้เรียกใช้ on methode สำหรับ / inline example server.begin (); // ต่อไปเราจะเริ่มเซิร์ฟเวอร์ด้วยการเริ่มต้น Methode Serial.println ("เซิร์ฟเวอร์ HTTP เริ่มต้น"); // และในที่สุดเราก็พิมพ์คำสั่งในจอภาพอนุกรม } // ซึ่งเป็นจุดสิ้นสุดของฟังก์ชันการตั้งค่า void loop (โมฆะ) {server.handleClient (); }
ในฟังก์ชันลูปเราได้เรียกวิธี handleClient () เพื่อใช้งาน esp อย่างถูกต้อง
เมื่อดำเนินการเสร็จสิ้นบอร์ด ESP8285 ใช้เวลาพอสมควรในการเชื่อมต่อกับเว็บเซิร์ฟเวอร์และทำงานได้สำเร็จตามที่คาดไว้ซึ่งถือเป็นจุดสิ้นสุดของโครงการนี้
คุณสามารถดูการทำงานทั้งหมดของบอร์ดได้ที่วิดีโอที่ลิงก์ด้านล่าง ฉันหวังว่าคุณจะสนุกกับบทความนี้และเรียนรู้สิ่งใหม่ ๆ จากบทความนี้ หากคุณมีข้อสงสัยคุณสามารถถามได้ในความคิดเห็นด้านล่างหรือสามารถใช้ฟอรัมของเราสำหรับการอภิปรายโดยละเอียด