การเขียนโปรแกรมด้วยภาพสำหรับ Sonoff Basic

การเขียนโปรแกรมด้วยภาพสำหรับ Sonoff Basic
บทความเกี่ยวกับวิธีสร้างตัวควบคุมลอจิกที่ตั้งโปรแกรมได้จากอุปกรณ์จีนราคาถูก อุปกรณ์ดังกล่าวจะพบการใช้งานทั้งในระบบอัตโนมัติในบ้านและเป็นชั้นเรียนภาคปฏิบัติในสาขาวิทยาการคอมพิวเตอร์ของโรงเรียน
สำหรับการอ้างอิงตามค่าเริ่มต้นโปรแกรม Sonoff Basic จะทำงานร่วมกับแอปพลิเคชันมือถือผ่านบริการคลาวด์ของจีน หลังจากการแก้ไขที่เสนอ การโต้ตอบเพิ่มเติมทั้งหมดกับอุปกรณ์นี้จะเป็นไปได้ในเบราว์เซอร์

ส่วนที่ 24 การเชื่อมต่อ Sonoff กับบริการ MGTXNUMX

ขั้นตอนที่ 1: สร้างแผงควบคุม

ลงทะเบียนออนไลน์ mgt24 (หากยังไม่ได้ลงทะเบียน) และเข้าสู่ระบบโดยใช้บัญชีของคุณ
เข้าสู่ระบบการเขียนโปรแกรมด้วยภาพสำหรับ Sonoff Basic

หากต้องการสร้างแผงควบคุมสำหรับอุปกรณ์ใหม่ ให้คลิกที่ปุ่ม "+"
ตัวอย่างการสร้างแผงการเขียนโปรแกรมด้วยภาพสำหรับ Sonoff Basic

เมื่อสร้างแผงแล้ว แผงจะปรากฏในรายการแผงของคุณ

ในแท็บ "การตั้งค่า" ของแผงที่สร้างขึ้น ให้ค้นหาช่อง "รหัสอุปกรณ์" และ "รหัสการอนุญาต" ในอนาคต ข้อมูลนี้จะต้องระบุเมื่อตั้งค่าอุปกรณ์ Sonoff
ตัวอย่างแท็บการเขียนโปรแกรมด้วยภาพสำหรับ Sonoff Basic

ขั้นตอนที่ 2 รีเฟรชอุปกรณ์

การใช้ยูทิลิตี้ XTCOM_UTIL ดาวน์โหลดเฟิร์มแวร์ PLC Sonoff พื้นฐาน ไปยังอุปกรณ์คุณจะต้องมีตัวแปลง USB-TTL ที่นี่ การแนะนำ и คำแนะนำวิดีโอ.

ขั้นตอนที่ 3 การตั้งค่าอุปกรณ์

จ่ายไฟให้กับอุปกรณ์ หลังจากที่ไฟ LED สว่างขึ้น ให้กดปุ่มค้างไว้จนกว่าไฟ LED จะเริ่มกะพริบสม่ำเสมอเป็นระยะๆ
ในขณะนี้เครือข่าย Wi-Fi ใหม่ที่เรียกว่า "PLC Sonoff Basic" จะปรากฏขึ้น เชื่อมต่อคอมพิวเตอร์ของคุณกับเครือข่ายนี้
คำอธิบายสัญญาณไฟ LED

ไฟ LED แสดงสถานะ
สถานะอุปกรณ์

กระพริบสองครั้งเป็นระยะ
ไม่มีการเชื่อมต่อกับเราเตอร์

ส่องอย่างต่อเนื่อง
การเชื่อมต่อกับเราเตอร์

กระพริบเครื่องแบบเป็นระยะ
โหมดจุดเข้าใช้งาน Wi-Fi

ดับแล้ว
ไม่มีแหล่งจ่ายไฟ

เปิดอินเทอร์เน็ตเบราว์เซอร์แล้วป้อนข้อความ "192.168.4.1" ในแถบที่อยู่ ไปที่หน้าการตั้งค่าเครือข่ายของอุปกรณ์

กรอกข้อมูลในช่องดังต่อไปนี้:

  • “ชื่อเครือข่าย” และ “รหัสผ่าน” (เพื่อเชื่อมโยงอุปกรณ์กับเราเตอร์ Wi-Fi ที่บ้านของคุณ)
  • “รหัสอุปกรณ์” และ “รหัสการอนุญาต” (เพื่ออนุญาตอุปกรณ์ในบริการ MGT24)

ตัวอย่างการตั้งค่าพารามิเตอร์เครือข่ายอุปกรณ์การเขียนโปรแกรมด้วยภาพสำหรับ Sonoff Basic

บันทึกการตั้งค่าและรีบูตอุปกรณ์
ที่นี่ คำแนะนำวิดีโอ.

ขั้นตอนที่ 4 การเชื่อมต่อเซ็นเซอร์ (อุปกรณ์เสริม)

เฟิร์มแวร์ปัจจุบันรองรับเซ็นเซอร์อุณหภูมิ ds18b20 ได้สูงสุดสี่ตัว ที่นี่ คำแนะนำวิดีโอ สำหรับการติดตั้งเซ็นเซอร์ เห็นได้ชัดว่าขั้นตอนนี้จะยากที่สุดเนื่องจากต้องใช้แขนตรงและหัวแร้ง

ส่วนที่ XNUMX การเขียนโปรแกรมด้วยภาพ

ขั้นตอนที่ 1: สร้างสคริปต์

ใช้เป็นสภาพแวดล้อมการเขียนโปรแกรม Blocklyสภาพแวดล้อมง่ายต่อการเรียนรู้ ดังนั้นคุณไม่จำเป็นต้องเป็นโปรแกรมเมอร์เพื่อสร้างสคริปต์ง่ายๆ

ฉันเพิ่มบล็อกพิเศษสำหรับการเขียนและอ่านพารามิเตอร์ของอุปกรณ์ เข้าถึงพารามิเตอร์ใด ๆ โดยใช้ชื่อ สำหรับพารามิเตอร์ของอุปกรณ์ระยะไกล จะใช้ชื่อผสม: “parameter@device”
รายการตัวเลือกแบบเลื่อนลงการเขียนโปรแกรมด้วยภาพสำหรับ Sonoff Basic

สถานการณ์ตัวอย่างสำหรับการเปิดและปิดโหลดแบบวน (1Hz):
การเขียนโปรแกรมด้วยภาพสำหรับ Sonoff Basic

ตัวอย่างของสคริปต์ที่ซิงโครไนซ์การทำงานของอุปกรณ์สองเครื่องที่แยกจากกัน กล่าวคือรีเลย์ของอุปกรณ์เป้าหมายจะทำซ้ำการทำงานของรีเลย์ของอุปกรณ์ระยะไกล
การเขียนโปรแกรมด้วยภาพสำหรับ Sonoff Basic

สถานการณ์จำลองสำหรับเทอร์โมสตัท (ไม่มีฮิสเทรีซิส):
การเขียนโปรแกรมด้วยภาพสำหรับ Sonoff Basic

หากต้องการสร้างสคริปต์ที่ซับซ้อนมากขึ้น คุณสามารถใช้ตัวแปร ลูป ฟังก์ชัน (พร้อมอาร์กิวเมนต์) และโครงสร้างอื่นๆ ฉันจะไม่อธิบายรายละเอียดทั้งหมดนี้ที่นี่ มีมากมายในเน็ตอยู่แล้ว สื่อการศึกษาเกี่ยวกับ Blockly.

ขั้นตอนที่ 2: ลำดับของสคริปต์

สคริปต์ทำงานอย่างต่อเนื่อง และทันทีที่สคริปต์สิ้นสุด สคริปต์ก็จะเริ่มต้นใหม่อีกครั้ง มีสองบล็อกที่สามารถหยุดสคริปต์ชั่วคราวได้ "ล่าช้า" และ "หยุดชั่วคราว"
บล็อก "ความล่าช้า" ใช้สำหรับความล่าช้าเป็นมิลลิวินาทีหรือไมโครวินาที บล็อกนี้จะรักษาช่วงเวลาอย่างเคร่งครัด โดยบล็อกการทำงานของอุปกรณ์ทั้งหมด
บล็อก “หยุดชั่วคราว” ใช้สำหรับความล่าช้าครั้งที่สอง (หรือน้อยกว่า) และไม่ได้บล็อกการดำเนินการของกระบวนการอื่นๆ ในอุปกรณ์
หากสคริปต์มีการวนซ้ำไม่สิ้นสุด ซึ่งเนื้อหาไม่มี "หยุดชั่วคราว" ล่ามจะเริ่มการหยุดชั่วคราวโดยอิสระ
หากสแต็กหน่วยความจำที่จัดสรรหมด ล่ามจะหยุดดำเนินการสคริปต์ที่ต้องการพลังงาน (โปรดระวังฟังก์ชันแบบเรียกซ้ำ)

ขั้นตอนที่ 3: การดีบักสคริปต์

หากต้องการแก้ไขข้อบกพร่องของสคริปต์ที่โหลดลงในอุปกรณ์แล้ว คุณสามารถเรียกใช้โปรแกรมติดตามทีละขั้นตอน สิ่งนี้มีประโยชน์อย่างยิ่งเมื่อพฤติกรรมของสคริปต์แตกต่างจากที่ผู้เขียนตั้งใจไว้ ในกรณีนี้ การติดตามช่วยให้ผู้เขียนค้นหาสาเหตุของปัญหาได้อย่างรวดเร็วและแก้ไขข้อผิดพลาดในสคริปต์

สถานการณ์จำลองสำหรับการคำนวณแฟกทอเรียลในโหมดแก้ไขข้อบกพร่อง:
การเขียนโปรแกรมด้วยภาพสำหรับ Sonoff Basic

เครื่องมือดีบักนั้นเรียบง่ายมากและประกอบด้วยปุ่มหลักสามปุ่ม: "เริ่มต้น", "ไปข้างหน้าหนึ่งก้าว" และ "หยุด" (อย่าลืมเกี่ยวกับโหมดดีบัก "เข้า" และ "ออก") นอกเหนือจากการติดตามทีละขั้นตอนแล้ว คุณยังสามารถตั้งค่าจุดพักบนบล็อกใดก็ได้ (โดยคลิกที่บล็อก)
หากต้องการแสดงค่าปัจจุบันของพารามิเตอร์ (เซ็นเซอร์, รีเลย์) บนจอภาพให้ใช้บล็อก "พิมพ์"
ที่นี่ วิดีโอภาพรวม เกี่ยวกับการใช้ดีบักเกอร์

ส่วนสำหรับผู้อยากรู้อยากเห็น อะไรอยู่ภายใต้ประทุน?

เพื่อให้สคริปต์ทำงานบนอุปกรณ์เป้าหมาย จึงมีการพัฒนาล่ามโค้ดไบต์และแอสเซมเบลอร์พร้อมคำสั่ง 38 คำสั่ง ซอร์สโค้ดของ Blockly มีตัวสร้างโค้ดพิเศษในตัวซึ่งจะแปลงบล็อกภาพเป็นคำแนะนำในการประกอบ ต่อจากนั้นโปรแกรมแอสเซมเบลอร์นี้จะถูกแปลงเป็นรหัสไบต์และถ่ายโอนไปยังอุปกรณ์เพื่อดำเนินการ
สถาปัตยกรรมของเครื่องเสมือนนี้ค่อนข้างเรียบง่ายและไม่มีจุดใดในการอธิบายบนอินเทอร์เน็ตคุณจะพบบทความมากมายเกี่ยวกับการออกแบบเครื่องเสมือนที่ง่ายที่สุด
ฉันมักจะจัดสรร 1000 ไบต์สำหรับสแต็กของเครื่องเสมือนของฉัน ซึ่งเพียงพอสำหรับการสำรองไว้ แน่นอนว่าการเรียกซ้ำแบบลึกอาจทำให้สแต็กใดๆ หมดไป แต่ก็ไม่น่าจะมีประโยชน์ใดๆ เลย

bytecode ที่ได้นั้นค่อนข้างกะทัดรัด ตามตัวอย่าง ไบต์โค้ดสำหรับคำนวณแฟกทอเรียลเดียวกันมีขนาดเพียง 49 ไบต์ นี่คือรูปแบบการมองเห็น:
การเขียนโปรแกรมด้วยภาพสำหรับ Sonoff Basic

และนี่คือโปรแกรมแอสเซมเบลอร์ของเขา:

shift -1
ldi 10
call factorial, 1
print
exit
:factorial
ld_arg 0
ldi 1
gt
je 8
ld_arg 0
ld_arg 0
ldi 1
sub
call factorial, 1
mul
ret
ldi 1
ret

หากรูปแบบการแสดงแอสเซมบลีไม่มีค่าในทางปฏิบัติใด ๆ แท็บ "javascrit" จะให้รูปลักษณ์ที่คุ้นเคยมากกว่าบล็อกภาพ:

function factorial(num) {
  if (num > 1) {
    return num + factorial(num - 1);
  }
  return 1;
}

window.alert(factorial(10));

เกี่ยวกับประสิทธิภาพ เมื่อฉันรันสคริปต์ flasher ที่ง่ายที่สุด ฉันได้คลื่นสี่เหลี่ยม 47 kHz บนหน้าจอออสซิลโลสโคป (ที่ความเร็วสัญญาณนาฬิกาของโปรเซสเซอร์ 80 MHz)
การเขียนโปรแกรมด้วยภาพสำหรับ Sonoff Basicการเขียนโปรแกรมด้วยภาพสำหรับ Sonoff Basic
ฉันคิดว่านี่เป็นผลลัพธ์ที่ดี อย่างน้อยความเร็วนี้ก็เร็วกว่าเกือบสิบเท่า Lua и เอสปรูอิโน.

ส่วนสุดท้าย

โดยสรุป ฉันจะบอกว่าการใช้สคริปต์ไม่เพียงช่วยให้เราสามารถตั้งโปรแกรมตรรกะการทำงานของอุปกรณ์ที่แยกจากกันเท่านั้น แต่ยังทำให้สามารถเชื่อมต่ออุปกรณ์หลายเครื่องเป็นกลไกเดียวได้ โดยที่อุปกรณ์บางตัวมีอิทธิพลต่อพฤติกรรมของผู้อื่น
ฉันยังทราบด้วยว่าวิธีการจัดเก็บสคริปต์ที่เลือก (ในอุปกรณ์โดยตรงและไม่ใช่บนเซิร์ฟเวอร์) ช่วยลดความยุ่งยากในการสลับอุปกรณ์ที่ทำงานอยู่แล้วไปยังเซิร์ฟเวอร์อื่นเช่นกับ Raspberry ที่บ้านที่นี่ การแนะนำ.

เพียงเท่านี้ฉันยินดีที่จะรับฟังคำแนะนำและคำวิจารณ์ที่สร้างสรรค์

ที่มา: will.com

เพิ่มความคิดเห็น