สารบัญ:
วีดีโอ: วิธีการแฟลชเฟิร์มแวร์ MicroPython บนสวิตช์ Sonoff Smart Switch แบบ ESP8266: 3 ขั้นตอน (พร้อมรูปภาพ)
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:09
Sonoff คืออะไร?
Sonoff เป็นอุปกรณ์สำหรับ Smart Home ที่พัฒนาโดย ITEAD หนึ่งในอุปกรณ์ที่ยืดหยุ่นและราคาไม่แพงที่สุดจากกลุ่มผลิตภัณฑ์ดังกล่าว ได้แก่ Sonoff Basic และ Sonoff Dual สวิตช์เหล่านี้เป็นสวิตช์ที่เปิดใช้งาน Wi-Fi ซึ่งใช้ชิปที่ยอดเยี่ยม ESP8266 แม้ว่าโครงสร้างพื้นฐานของ Sonoff อาจทำงานได้ดีสำหรับผู้ใช้ขั้นพื้นฐาน คนอื่นๆ อาจต้องการแฮ็กเข้าไปในฮาร์ดแวร์นั้นและเรียกใช้โค้ดของตนเอง ฮาร์ดแวร์ของ Sonoff Smart Switches นั้นน่าทึ่งเมื่อพิจารณาจากราคาที่ต่ำ:
- ESP8266 พร้อมแฟลช 1MB
- อะแดปเตอร์แปลงไฟแบบรวม 220V AC
- รีเลย์ 10A (หรือสองตัวใน Sonoff Dual)
- LED ออนบอร์ด (หรือสองตัวใน Sonoff Dual)
- ปุ่มออนบอร์ด
หากคุณต้องการควบคุมฮาร์ดแวร์นี้อย่างสมบูรณ์โดยใช้ภาษาการเขียนโปรแกรมที่คุณชื่นชอบ บทช่วยสอนนี้เหมาะสำหรับคุณ
ขั้นตอนที่ 1: แฮ็คฮาร์ดแวร์
ESP8266 ได้รับการตั้งโปรแกรมผ่านพอร์ตอนุกรม ทั้ง Sonoff Basic และ Sonoff Dual มีอยู่ใน PCD
คุณอาจต้องบัดกรีส่วนหัวของพินบน PCB เพื่อเชื่อมต่ออะแดปเตอร์ USB-UART อย่างง่ายดาย
ขั้นตอนที่ 2: การเตรียมการแฮ็กซอฟต์แวร์
ฉันรัก Python ดังนั้นฉันจะใช้เฟิร์มแวร์ MicroPython คุณยังสามารถใช้ SDK ที่รองรับได้ มาดำเนินการแฟลช MicroPython แทนเฟิร์มแวร์ Sonoff ที่เป็นกรรมสิทธิ์:
ติดตั้งแพ็คเกจ esptool python ที่ทำให้การแฟลช ESP8266 ง่ายขึ้น:
pip ติดตั้ง esptool
ดาวน์โหลดเฟิร์มแวร์ MicroPython ที่เสถียรล่าสุดจากหน้าดาวน์โหลด MicroPython เชื่อมต่ออะแดปเตอร์ USB-UART เข้ากับบอร์ด เพื่อความปลอดภัย ขอแนะนำให้จ่ายไฟให้กับบอร์ดจากอแดปเตอร์แทนเต้ารับไฟ AC 220V โปรดทราบว่าคุณสามารถใช้ 3.3V ได้เท่านั้น หากคุณเชื่อมต่อชิป ESP8266 กับแหล่งจ่ายไฟ 5V ชิปจะตาย
บูต ESP8266 เข้าสู่โหมดแฟลช คุณสามารถทำได้โดยดึงพิน GPIO0 ลงขณะเปิดเครื่อง:
- บน Sonoff Basic GPIO0 เป็นเพียงปุ่มเดียว เชื่อมต่ออะแดปเตอร์ USB-UART กับพีซีของคุณในขณะที่กดปุ่มและคุณอยู่ในโหมดแฟลช
- ใน Sonoff Dual สิ่งต่าง ๆ ยากขึ้นเล็กน้อย คุณต้องลัดวงจรแผ่นสองแผ่นบน PCB ในขณะที่เปิดเครื่อง แผ่นอิเล็กโทรดที่จำเป็นแสดงอยู่ในภาพด้านบน ใช้แหนบหรือบัดกรีลวดขนาดเล็กระหว่างพวกเขา
เมื่อ ESP8266 อยู่ในโหมดแฟลช ไฟ LED ของบอร์ดไม่ควรกะพริบ
ตรวจสอบให้แน่ใจว่าคุณสามารถเข้าถึงพอร์ตอนุกรมที่เปิดโดยอะแดปเตอร์ USB-UART บน Linux อาจเป็น \dev\ttyUSB0 บน Mac คุณควรค้นหาบางอย่างเช่น “usbserial” หรือ “usbmodem” ในเอาต์พุตคำสั่ง ls \dev\cu.* หรือ ls \dev\tty.* บน Windows ควรเป็น COM3 หรือสูงกว่า. ติดตั้งไดรเวอร์อะแดปเตอร์ USB-UART หากจำเป็น
ลบแฟลชโดยใช้ esptool แทนที่ /dev/ttyUSB0 สำหรับพอร์ตของคุณหากจำเป็น:
esptool.py --port /dev/ttyUSB0 Erase_flash
คุณอาจต้องเรียกใช้ esptool.py ในฐานะ superuser เพื่อเข้าถึงพอร์ตอนุกรม
ขั้นตอนที่ 3: กระพริบ
หากการลบสำเร็จ ให้ตัดกระแสไฟของบอร์ด บูต ESP8266 ในโหมดแฟลชอีกครั้ง และแฟลชเฟิร์มแวร์ของคุณ:
esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash --flash_size=ตรวจจับ 0 esp8266-20170823-v1.9.2.bin
หากการกะพริบสำเร็จ ให้ตัดกระแสไฟของบอร์ด เชื่อมต่ออีกครั้งโดยไม่ต้องกดปุ่ม และเปิดพอร์ตอนุกรมในเทอร์มินัล บน Linux และ Mac คุณสามารถใช้หน้าจอ /dev/ttyUSB0 115200 (แทนที่ /dev/ttyUSB0 สำหรับพอร์ตของคุณ หากจำเป็น) บน Windows คุณสามารถใช้ PuTTY (อัตรารับส่งข้อมูลเริ่มต้นคือ 115200) เมื่อคุณเชื่อมต่อแล้ว ให้กด Enter และหากคุณเห็นวงเล็บเหลี่ยมสามมุมของ Python shell แสดงว่าทุกอย่างทำงานได้!
>> >>> ช่วย () ยินดีต้อนรับสู่ MicroPython! สำหรับเอกสารออนไลน์ โปรดไปที่ https://docs.micropython.org/en/latest/esp8266/ สำหรับข้อมูลการวินิจฉัยที่จะรวมไว้ในรายงานข้อบกพร่อง ให้ดำเนินการ 'import port_diag' การกำหนดค่า WiFi พื้นฐาน: นำเข้าเครือข่าย sta_if = network. WLAN(network. STA_IF); sta_if.active(True) sta_if.scan() # สแกนหาจุดเชื่อมต่อที่ใช้ได้ sta_if.connect("", "") # เชื่อมต่อกับ AP sta_if.isconnected() # ตรวจสอบการเชื่อมต่อที่สำเร็จ # เปลี่ยนชื่อ/รหัสผ่านของ AP ของ ESP8266: ap_if = network. WLAN(network. AP_IF) ap_if.config(essid="", authmode=network. AUTH_WPA_WPA2_PSK, password="") คำสั่งควบคุม: CTRL-A -- ในบรรทัดว่าง ให้ป้อน raw REPL mode CTRL- B - ในบรรทัดว่าง เข้าสู่โหมด REPL ปกติ CTRL-C - ขัดจังหวะโปรแกรมที่ทำงานอยู่ CTRL-D - ในบรรทัดว่าง ทำการซอฟต์รีเซ็ตบอร์ด CTRL-E - ในบรรทัดว่าง ให้ป้อน paste โหมด สำหรับความช่วยเหลือเพิ่มเติมเกี่ยวกับวัตถุเฉพาะ พิมพ์ help(obj) >>>
ในคำแนะนำถัดไป เราจะอธิบายวิธีโต้ตอบกับแพลตฟอร์ม Cloud4RPi ผ่านโปรโตคอล MQTT
แนะนำ:
สมาร์ทโฟน Android แบบ USB (!!) เว็บแคม: 8 ขั้นตอน (พร้อมรูปภาพ)
สมาร์ทโฟน Android แบบ USB (!!) เว็บแคม: ในช่วงสองสามเดือนที่ผ่านมา เราทุกคนถูกบังคับให้สื่อสารออนไลน์มากกว่าที่จะติดต่อด้วยตนเอง ในฐานะนักเรียน การบรรยายส่วนใหญ่ของฉันกลายเป็นการประชุมของ Zoom และเช่นเดียวกันกับชั่วโมงการสอนของฉัน ในอีกไม่กี่สัปดาห์ข้างหน้า นักเรียนจำนวนมากทุกวัยจะ
เครื่องส่งสัญญาณ RC จาก Arduino แบบ 3 มิติ: 25 ขั้นตอน (พร้อมรูปภาพ)
เครื่องส่งสัญญาณ RC แบบใช้ Arduino แบบพิมพ์ 3 มิติ: โครงการนี้จะแสดงให้คุณเห็นว่าฉันออกแบบและสร้างเครื่องส่งสัญญาณ RC ที่ใช้ Arduino ได้อย่างไร เป้าหมายของฉันสำหรับโครงการนี้คือการออกแบบเครื่องส่งสัญญาณ RC แบบพิมพ์ได้ 3 มิติที่ฉันสามารถใช้ควบคุมโครงการ Arduino อื่น ๆ ได้ ฉันต้องการให้คอนโทรลเลอร์เป็น
ฟื้นคืนชีพ Pleo RB ที่เสียชีวิตของคุณด้วย PSU แบบ Tethered: 5 ขั้นตอน (พร้อมรูปภาพ)
ชุบชีวิต Pleo RB ที่เสียชีวิตของคุณด้วย Tethered PSU: โปรดทราบว่าภาพถ่ายทั้งหมดสำหรับคำแนะนำนี้ถูกถ่ายหลังจากที่ฉันแก้ไขเสร็จแล้ว ดังนั้นคุณจะต้องดูชิ้นส่วนที่คุณมีอย่างใกล้ชิดหลังจากถอดแยกชิ้นส่วนกล่องแบตเตอรี่และเปรียบเทียบกับภาพที่ให้มา ที่นี่ ก่อนแก้ไข
หลอดไฟ LED RGB แบบ Up-Cycled: 6 ขั้นตอน (พร้อมรูปภาพ)
หลอดไฟ LED RGB แบบ Up-Cycled: โปรเจ็กต์นี้ทำจากวัสดุรีไซเคิลและวัสดุจากโครงการอื่น เดิมทีโครงการนี้จะเป็นเครื่องให้อาหารปลาอัตโนมัติ บางภาพอาจสะท้อนโครงการให้อาหารปลา เนื่องจากโครงการส่วนใหญ่สร้างขึ้นจากวัสดุในมือฉัน
เพิ่ม Optical Tachometer แบบ Arduino ให้กับเราเตอร์ CNC: 34 ขั้นตอน (พร้อมรูปภาพ)
เพิ่มเครื่องวัดความเร็วรอบแบบออปติคัลบน Arduino ให้กับเราเตอร์ CNC: สร้างตัวบ่งชี้ RPM แบบออปติคัลสำหรับเราเตอร์ CNC ของคุณด้วย Arduino Nano, เซ็นเซอร์โฟโตไดโอด IR LED/IR และจอแสดงผล OLED ในราคาต่ำกว่า 30 ดอลลาร์ ฉันได้รับแรงบันดาลใจจาก Measure RPM - Optical Tachometer Instructable ของ eletro18 และต้องการเพิ่มมาตร