สารบัญ:

การสังเคราะห์เสียงพูดย้อนยุค ส่วน: 12 IoT, ระบบอัตโนมัติภายในบ้าน: 12 ขั้นตอน (พร้อมรูปภาพ)
การสังเคราะห์เสียงพูดย้อนยุค ส่วน: 12 IoT, ระบบอัตโนมัติภายในบ้าน: 12 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: การสังเคราะห์เสียงพูดย้อนยุค ส่วน: 12 IoT, ระบบอัตโนมัติภายในบ้าน: 12 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: การสังเคราะห์เสียงพูดย้อนยุค ส่วน: 12 IoT, ระบบอัตโนมัติภายในบ้าน: 12 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: ชาววิทย์ชิดชาวบ้าน ตอน 12 มหัศจรรย์เส้นใยจากพลาสติกรีไซเคิล 2024, กรกฎาคม
Anonim
Image
Image
การสังเคราะห์เสียงพูดย้อนยุค ตอนที่: 12 IoT, Home Automation
การสังเคราะห์เสียงพูดย้อนยุค ตอนที่: 12 IoT, Home Automation

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

ภาพที่ 1 แสดงอุปกรณ์สังเคราะห์เสียงพูด IoT ที่เสร็จสมบูรณ์ และภาพที่ 2 แสดงส่วนประกอบทั้งหมดที่ใช้ในต้นแบบซึ่งมีรูปแบบลดลงเพื่อเข้าสู่ผลิตภัณฑ์ขั้นสุดท้าย

วิดีโอแสดงการทำงานของอุปกรณ์ (ระหว่างการทดสอบ)

บทนำ

ดังที่กล่าวไว้ข้างต้นรายละเอียดที่สอนได้นี้เกี่ยวกับวิธีการสร้างอุปกรณ์สังเคราะห์เสียงพูดย้อนยุค IoT และอิงจากเครื่องมือทั่วไป SP0256-AL2

จุดประสงค์หลักคือเพิ่มการสังเคราะห์เสียงแบบ 'โรงเรียนเก่า' ลงในเครือข่าย IoT ทำไม 'โรงเรียนเก่า' คุณอาจถาม? เพราะฉันอยู่ในยุค 80 เมื่อสิ่งเหล่านี้ถูกผลิตขึ้นครั้งแรกและฉันได้เชื่อมต่อกับ BBC Micro ของฉัน ดังนั้นสำหรับฉัน มีความหวนคิดถึงอยู่บ้างรอบๆ SP0256-AL2

ฉันชอบความท้าทายในการพยายามคิดให้ออกว่าเสียงของดาเล็คนี้กำลังพูดอะไรบนโลก มากกว่าฟังเสียงที่ไพเราะของอเมซอนเอคโคหรือ Siri ความท้าทายที่ฉันถามคุณอยู่ที่ไหน

โอ้และไม่ต้องพูดถึงฉันยังมี 'โหลดกระเป๋า' ของไอซี 'SP0256-AL2' วางอยู่รอบ ๆ

อุปกรณ์นี้ยังสามารถอ่านอุณหภูมิและความชื้นในพื้นที่ได้ ดังนั้น จึงขยายการตรวจวัดสภาพแวดล้อมของโครงสร้างพื้นฐาน IoT ที่มีอยู่ของฉันโดยเชื่อมต่อกับเครือข่าย IoT ที่ใช้ MQTT/OpenHAB ซึ่งมีรายละเอียดในซีรีส์นี้เกี่ยวกับระบบอัตโนมัติภายในบ้าน (HA) ซึ่งสร้างจากโค้ดที่ใช้ซ้ำซึ่งนำมาจากที่นี่

หัวใจสำคัญของมันคือ ESP8266-07 ซึ่งรับผิดชอบในการสื่อสาร MQTT และควบคุมการทำงานของระบบทั้งหมด (การเข้าถึงการ์ด SD, การควบคุม led, การตรวจจับอุณหภูมิ/ความชื้น, การควบคุมระดับเสียง, การสังเคราะห์เสียงพูด) อุปกรณ์สามารถกำหนดค่าได้อย่างเต็มที่ผ่านไฟล์ข้อความที่เก็บไว้ใน a การ์ด SD ภายในเครื่อง แม้ว่าพารามิเตอร์การสอบเทียบและความปลอดภัยเครือข่ายสามารถตั้งโปรแกรมผ่านสิ่งพิมพ์ MQTT ระยะไกลได้

ฉันต้องการชิ้นส่วนอะไร?

ดูบิลวัสดุที่นี่

ฉันต้องการซอฟต์แวร์อะไร

  • Arduino IDE 1.6.9,
  • Arduino IDE กำหนดค่าให้โปรแกรม ESP8266-07 (เช่นเดียวกับสิ่งนี้) จากนั้นกำหนดค่า IDE ตามที่ระบุไว้ในคำอธิบายโดยละเอียดที่ให้ไว้ในแบบร่างซอฟต์แวร์ที่นี่
  • Python v3.5.2 หากคุณต้องการใช้ความสามารถในการทดสอบอัตโนมัติ รายละเอียดที่นี่

ฉันต้องการเครื่องมืออะไร?

  • กล้องจุลทรรศน์อย่างน้อย x3 (สำหรับการบัดกรี SMT)
  • เครื่องมือย้ำขั้วต่อ Molex (สำหรับขั้วต่อ JST)
  • หัวแร้ง SMD (พร้อมปากกาฟลักซ์เหลวและหัวแร้งบัดกรี)
  • ไขควง (ต่างๆ),
  • ปืนความร้อน,
  • สว่าน (ต่างๆ),
  • เครื่องมือช่างเคาเตอร์ซิงค์,
  • ไฟล์ (ต่างๆ),
  • Dremel (บิตต่างๆ)
  • รองที่แข็งแกร่ง (เล็กและใหญ่เหมือนเพื่อนร่วมงานผิวดำและฉูดฉาด)
  • มีดผ่าตัด
  • เวอร์เนียคาลิปเปอร์ (ใช้ในการวัดการแปรรูปและมีประโยชน์สำหรับการปรับขนาดส่วนประกอบ PCB)
  • ประแจและตัวขับน๊อต (ต่างๆ)
  • แหนบที่แข็งแรง (สำหรับการบัดกรี SMT)
  • เลื่อยวงเดือนจูเนียร์,
  • สว่าน (พร้อมดอกสว่านแบบต่างๆ)
  • คีมละเอียด (ปลายแหลมและจมูกดูแคลน)
  • เครื่องตัดฟลัช,
  • DMM พร้อมการตรวจสอบความต่อเนื่องของเสียง
  • ขอบเขตดิจิตอลสองช่องสัญญาณ (สะดวกสำหรับการดีบักสัญญาณ)

ฉันต้องการทักษะอะไร?

  • ความอดทนมาก,
  • ความคล่องแคล่วในการใช้งานและการประสานมือและตาที่ยอดเยี่ยม
  • ทักษะการบัดกรีที่ยอดเยี่ยม
  • ทักษะการประดิษฐ์ที่ยอดเยี่ยม
  • ความสามารถในการมองเห็นใน 3 มิติ,
  • ความรู้เกี่ยวกับการพัฒนาซอฟต์แวร์ด้วย 'C' (ถ้าคุณต้องการเข้าใจซอร์สโค้ด)
  • ความรู้เกี่ยวกับ Python บางส่วน (วิธีการติดตั้งและรันสคริปต์ หากคุณต้องการใช้การทดสอบอัตโนมัติ)
  • ความรู้เกี่ยวกับ Arduino และ IDE
  • มีความรู้ด้านอิเล็คทรอนิคส์เป็นอย่างดี
  • ความเข้าใจบางอย่างเกี่ยวกับเครือข่ายในบ้านของคุณ

หัวข้อที่ครอบคลุม

  • คู่มือการใช้
  • ภาพรวมวงจร
  • ผลิตและประกอบ PCB
  • การผลิต
  • ภาพรวมระบบซอฟต์แวร์
  • ภาพรวมซอฟต์แวร์
  • การสอบเทียบเซ็นเซอร์
  • แบบแผนการตั้งชื่อหัวข้อ MQTT
  • ตรวจแก้จุดบกพร่องและค้นหาข้อผิดพลาด
  • การทดสอบการออกแบบ
  • บทสรุป
  • ข้อมูลอ้างอิงที่ใช้

Series LinksTo ตอนที่ 11: IoT Desktop Console ตอนที่: 11 IoT, Home Automation

ขั้นตอนที่ 1: คู่มือผู้ใช้

คู่มือการใช้
คู่มือการใช้
คู่มือการใช้
คู่มือการใช้
คู่มือการใช้
คู่มือการใช้

ภาพที่ 1 ด้านบนแสดงด้านหน้าของ Retro Speech Synthesizer และภาพที่ 2 ด้านหลัง

ตู้ด้านหน้า

  1. ลำโพงย่าง
  2. แจ็คหูฟัง 3.5 มม.: ลำโพงหลักถูกปิดใช้งานเมื่อเสียบแจ็ค 3.5 มม.
  3. ไฟ LED สีแดง: ไฟ LED นี้จะสว่างขึ้นในขณะที่กำลังพูดคำเมื่อมีการเริ่มต้นคำพูดผ่านคำขอ
  4. ไฟ LED สีฟ้า: ไฟ LED นี้จะสว่างขึ้นในขณะที่กำลังพูดคำเมื่อมีการเริ่มต้นคำพูดผ่านคำขอ MQTT IoT

ตู้ด้านหลัง

  1. ปุ่มรีเซ็ต: ใช้เพื่อฮาร์ดรีเซ็ตอุปกรณ์ ESP8266-07 IoT
  2. ปุ่มแฟลช: เมื่อใช้ร่วมกับปุ่มรีเซ็ตจะช่วยให้แฟลช ESP8266-07 ใหม่ได้
  3. ปลั๊กเสาอากาศ WiFi (ปลั๊ก SMA): สำหรับเสาอากาศ WiFi ภายนอกที่มีการลดทอนสัญญาณ RF น้อยที่สุด เนื่องจากตัวปิดเป็นอะลูมิเนียม
  4. พอร์ตการเขียนโปรแกรมภายนอก: เพื่อขจัดความจำเป็นในการคลายเกลียวกล่องหุ้มเพื่อเข้าถึง ESP8266-07 เพื่อวัตถุประสงค์ในการตั้งโปรแกรมใหม่ หมุดตั้งโปรแกรมของ ESP8266-07 ถูกนำออกไปที่พอร์ตการเขียนโปรแกรมภายนอก ภาพที่ 3 เป็นตัวแปลงโปรแกรม
  5. ไฟ LED สีเขียว: นี่คือระบบ IoT ที่นำและใช้เพื่อระบุสถานะการวินิจฉัยของอุปกรณ์และบูตเครื่องและขณะทำงาน
  6. เซ็นเซอร์อุณหภูมิ/ความชื้นภายนอก (AM2320)
  7. ช่องเสียบการ์ด SD: เก็บข้อมูลการกำหนดค่า/ความปลอดภัยทั้งหมดพร้อมกับหน้าเว็บเซิร์ฟเวอร์
  8. แจ็คจ่ายไฟ 2.1 มม. 6vdc

ขั้นตอนที่ 2: ภาพรวมวงจร

ภาพรวมวงจร
ภาพรวมวงจร
ภาพรวมวงจร
ภาพรวมวงจร

อุปกรณ์ Retro Speech Synth ประกอบด้วย PCB สองตัว;

  • RetroSpeechSynthIoTBoard: นี่คือ PCB ทั่วไปที่ใช้ซ้ำได้ ESP8266-07/12/12E/13
  • RetroSpeechSynthBoard: นี่คือ PCB ทั่วไป SP0256-AL2

กระดาน IoT Speech Synth ย้อนยุค

บอร์ดนี้อนุญาตให้ทำการบัดกรีโดยตรงของซ็อกเก็ตระยะพิทช์ ESP8266-07/12/12E/13 หรือ 0.1 ที่รองรับ PCB ตัวพา ESP8266

บอร์ดถูกออกแบบมาเพื่อขยาย I/O ผ่านการเชื่อมต่อ I2C และสามารถรองรับระดับการจ่ายไฟ 3v3 หรือ 5v ผ่าน Q1, Q2, R8-13

การเชื่อมต่อกับบอร์ดทำได้โดยใช้ส่วนหัว J2 และ J4 หนึ่งในสองส่วนหัว, ริบบอน DIL IDC 8 ทาง หรือ JST/Molex 5 ทาง

ข้อกำหนด U2 และ U3 3.3v และ 5v บนระเบียบการจ่ายไฟบนกระดาน อีกทางหนึ่งหากต้องการความจุกระแสไฟที่มากขึ้น อาจมีการติดตั้งตัวควบคุมการแบ่งอนุกรมแบบ off board ผ่านตัวเชื่อมต่อ J10 และ J11 ตามลำดับ

ตัวเชื่อมต่อ J1 และ J3 รองรับการ์ด SD ภายนอกผ่าน SPI J1 ได้รับการออกแบบสำหรับ Molex 8 ทิศทาง และ J3 มีพินโดยตรงสำหรับรองรับพินที่เข้ากันได้สำหรับ PCB การ์ด SD นอกชั้นวางพร้อมรองรับ 3v3 หรือ 5v

Retro Speech Synth Board

การควบคุมบอร์ดนี้ผ่านการเชื่อมต่อที่สอดคล้องกับ I2C 5v ผ่าน J1, J5 หรือ J6, 4-way JST/Molex, 8-way DIL IDC หรือ 8-way IDC ribbon connector

U2 MPC23017 ให้ I2C กับอินเทอร์เฟซแบบขนานกับ U3 SP0256-AL2 และ LEDS D1 (สีเขียว), D2 (สีแดง) และ D3 (สีน้ำเงิน) เอาต์พุตของ Speech Synth จะถูกป้อนไปยังแอมป์เสียง CR1 TBA820M ผ่านหม้ออนาล็อก RV1 หรือหม้อดิจิตอล U1 MCP4561

Digital Pot U1 ยังควบคุมผ่าน I2C ที่สอดคล้องกับ 5v

หมายเหตุ: เลือกอุปกรณ์ ESP8266-07 เนื่องจากมีตัวเชื่อมต่อ IPX RF ในตัว ซึ่งช่วยให้เพิ่มเสาอากาศ WiFi ภายนอกเข้ากับตัวเครื่องอะลูมิเนียมได้

ขั้นตอนที่ 3: การผลิตและการประกอบ PCB

ผลิตและประกอบ PCB
ผลิตและประกอบ PCB
ผลิตและประกอบ PCB
ผลิตและประกอบ PCB
ผลิตและประกอบ PCB
ผลิตและประกอบ PCB
ผลิตและประกอบ PCB
ผลิตและประกอบ PCB

ภาพที่ 1 และ 2 แสดงส่วนประกอบย่อยของ PCB ที่เสร็จสมบูรณ์และมีสายซึ่งอยู่บนพื้นผิวของโครงอะลูมิเนียม

PCB สองตัวได้รับการออกแบบโดยใช้ Kicad v4.0.7 ผลิตโดย JLCPCB และประกอบโดยฉันและแสดงด้านบน Pics 3 ถึง 13

ขั้นตอนที่ 4: การผลิต

การผลิต
การผลิต
การผลิต
การผลิต
การผลิต
การผลิต

ภาพที่ 1 แสดงเลย์เอาต์สไตล์ Haynes Manual ของชิ้นส่วนสำเร็จรูปทั้งหมดก่อนการประกอบขั้นสุดท้าย

ภาพที่ 2 … 5 แสดงช็อตต่างๆ ระหว่างการสร้างกล่องหุ้มโดยมีระยะห่างน้อยที่สุด

ขั้นตอนที่ 5: ภาพรวมระบบซอฟต์แวร์

ภาพรวมระบบซอฟต์แวร์
ภาพรวมระบบซอฟต์แวร์
ภาพรวมระบบซอฟต์แวร์
ภาพรวมระบบซอฟต์แวร์

อุปกรณ์สังเคราะห์เสียงพูด IoT Retro นี้มีส่วนประกอบซอฟต์แวร์หลัก 6 ชิ้นดังแสดงในรูปที่ 1 ด้านบน

การ์ด SD

นี่คือระบบการจัดเก็บแฟลช SD SPI ภายนอกและใช้เพื่อเก็บข้อมูลต่อไปนี้ (ดูรูปที่ 2 ด้านบน);

  • ไอคอนและ 'โฮมเพจการกำหนดค่า Speech Synth Configuration' index.htm: ให้บริการโดยอุปกรณ์ IoT เมื่อไม่สามารถเชื่อมต่อกับเครือข่าย IoT WiFi ของคุณ (โดยปกติเนื่องจากข้อมูลความปลอดภัยที่ไม่ถูกต้อง หรือการใช้งานครั้งแรก) และให้วิธีการแก่ผู้ใช้ ของการกำหนดค่าเซ็นเซอร์จากระยะไกลโดยไม่จำเป็นต้องแฟลชเนื้อหา SD ใหม่อีกครั้ง นอกจากนี้ยังมี index1.htm, mqtt.htm และ sp0256.htm ซึ่งเป็นหน้าเว็บที่ให้บริการในเครื่องซึ่งสามารถเข้าถึงได้ผ่านเว็บเบราว์เซอร์ทำให้สามารถควบคุมการสังเคราะห์เสียงได้อย่างจำกัด ผ่าน
  • ข้อมูลความปลอดภัย: เก็บข้อมูลที่ใช้ในการเปิดเครื่องโดยอุปกรณ์ IoT เพื่อเชื่อมต่อกับเครือข่าย IoT WiFi และนายหน้า MQTT ข้อมูลที่ส่งผ่าน 'โฮมเพจ Speech Synth Configuration' จะถูกเขียนลงในไฟล์นี้ ('secvals.txt')
  • ข้อมูลการสอบเทียบ: ข้อมูลที่มีอยู่ในไฟล์ ('calvals1.txt' และ 'calvals2.txt') ใช้เพื่อสอบเทียบเซ็นเซอร์อุณหภูมิ/ความชื้นบนบอร์ดหากจำเป็น สามารถเขียนค่าคงที่การสอบเทียบไปยังอุปกรณ์ IoT ผ่านคำสั่ง MQTT จากโบรกเกอร์ MQTT หรือโดยการแฟลชการ์ด SD อีกครั้ง 'calvals1.txt' เกี่ยวข้องกับเซ็นเซอร์ AM2320 และ 'calvals2.txt' กับ DHT22
  • ค่ากำหนดของระบบที่ผู้ใช้กำหนดได้: ข้อมูลที่อยู่ในไฟล์นี้ ('confvals.txt') ที่เลือกโดยผู้ใช้ จะควบคุมการตอบสนองของระบบบางอย่าง เช่น ระดับเสียงดิจิตอลเริ่มต้น การประกาศ 'ความพร้อมของระบบ' อัตโนมัติในการสมัครรับข้อมูลนายหน้า MQTT เป็นต้น

เซิร์ฟเวอร์ mDNS

ฟังก์ชันนี้ถูกเรียกใช้เมื่ออุปกรณ์ IoT ไม่สามารถเชื่อมต่อกับเครือข่าย WiFi ของคุณเป็นสถานี WiFi และกลายเป็นจุดเชื่อมต่อ WiFi ที่คล้ายกับเราเตอร์ WiFi ในประเทศแทน ในกรณีของเราเตอร์ดังกล่าว คุณมักจะเชื่อมต่อโดยป้อนที่อยู่ IP เช่น 192.168.1.1 (ปกติจะพิมพ์บนฉลากที่ติดอยู่ในกล่อง) ลงในแถบ URL ของเบราว์เซอร์โดยตรง จากนั้นคุณจะได้รับหน้าเข้าสู่ระบบเพื่อเข้าสู่ ชื่อผู้ใช้และรหัสผ่านเพื่อให้คุณสามารถกำหนดค่าอุปกรณ์ สำหรับ ESP8266-07 ในโหมด AP (โหมดจุดเข้าใช้งาน) อุปกรณ์จะมีค่าเริ่มต้นเป็นที่อยู่ IP 192.168.4.1 อย่างไรก็ตาม เมื่อเซิร์ฟเวอร์ mDNS ทำงานอยู่ คุณจะต้องป้อนชื่อที่เป็นมิตรต่อมนุษย์ 'SPEECHSVR.local' ลงในแถบ URL ของเบราว์เซอร์เพื่อ ดู 'โฮมเพจการกำหนดค่า Speech Synth'

ลูกค้า MQTT

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

เว็บเซิร์ฟเวอร์

เว็บเซิร์ฟเวอร์นี้มีวัตถุประสงค์สองประการ

  1. หากอุปกรณ์ IoT ไม่สามารถเชื่อมต่อกับเครือข่าย WiFi ที่มี SSID, P/W ฯลฯ ที่กำหนดไว้ในไฟล์ข้อมูลความปลอดภัยที่อยู่ในการ์ด SD อุปกรณ์จะกลายเป็นจุดเข้าใช้งาน เมื่อเชื่อมต่อกับเครือข่าย WiFi ที่จุดเข้าใช้งานแล้ว การมีอยู่ของเว็บเซิร์ฟเวอร์ HTTP จะทำให้คุณสามารถเชื่อมต่อโดยตรงกับอุปกรณ์และเปลี่ยนการกำหนดค่าผ่านการใช้เว็บเบราว์เซอร์ HTTP ซึ่งมีจุดประสงค์เพื่อให้บริการ 'การกำหนดค่า Synth คำพูด หน้าแรกของหน้าเว็บซึ่งอยู่ในการ์ด SD
  2. เมื่ออุปกรณ์สังเคราะห์เสียง IoT Retro Speech เชื่อมต่อกับเครือข่าย WiFi และโบรกเกอร์ MQTT หากเข้าถึงได้ เว็บเซิร์ฟเวอร์ HTTP จะให้บริการหน้าเว็บ HTTP โดยอัตโนมัติ ซึ่งอนุญาตให้ควบคุมอุปกรณ์ IoT ได้อย่างจำกัดเพื่อพูดวลีที่เลือกคงที่และความสามารถในการ วน LEDS สีแดงและสีน้ำเงินสองด้านหน้า

สถานี WiFi

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

จุดเชื่อมต่อ WiFi

ความสามารถในการเป็น WiFi Access Point เป็นวิธีที่อุปกรณ์ IoT อนุญาตให้คุณเชื่อมต่อและทำการเปลี่ยนแปลงการกำหนดค่าผ่านสถานี WiFi และเบราว์เซอร์ (เช่น Safari บน Apple iPad) จุดเชื่อมต่อนี้เผยแพร่ SSID = "SPEECHSYN" + 6 หลักสุดท้ายของที่อยู่ MAC ของอุปกรณ์ IoT รหัสผ่านสำหรับเครือข่ายปิดนี้มีชื่อว่า 'PASSWORD' ในจินตนาการ

ขั้นตอนที่ 6: ภาพรวมซอฟต์แวร์

ภาพรวมซอฟต์แวร์
ภาพรวมซอฟต์แวร์
ภาพรวมซอฟต์แวร์
ภาพรวมซอฟต์แวร์
ภาพรวมซอฟต์แวร์
ภาพรวมซอฟต์แวร์

คำนำ

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

ภาพรวม

ซอฟต์แวร์ใช้ประโยชน์จากเครื่องสถานะดังแสดงในรูปที่ 1 ด้านบน (สำเนาเต็มของแหล่งที่มาในที่เก็บ GitHub ของฉันที่นี่) มี 5 รัฐหลักตามที่ระบุไว้ด้านล่าง;

  • ในนั้น

    สถานะการเริ่มต้นนี้เป็นสถานะแรกที่ป้อนหลังจากเปิดเครื่อง

  • NOCONFIG

    สถานะนี้จะถูกป้อนหากตรวจพบไฟล์ secvals.txt ที่ไม่ถูกต้องหรือหายไปหลังจากเปิดเครื่องแล้ว ระหว่างสถานะนี้ หน้าการกำหนดค่าจะมองเห็นได้

  • รอดำเนินการ NW

    สถานะนี้เป็นสถานะชั่วคราว ป้อนในขณะที่ไม่มีการเชื่อมต่อเครือข่าย WiFi

  • MQTT ที่รอดำเนินการ

    สถานะนี้เป็นสถานะชั่วคราว ป้อนหลังจากทำการเชื่อมต่อเครือข่าย WiFi และในขณะที่ไม่มีการเชื่อมต่อกับนายหน้า MQTT บนเครือข่ายนั้น

  • คล่องแคล่ว

    นี่เป็นสถานะการทำงานปกติที่ป้อนเมื่อสร้างการเชื่อมต่อเครือข่าย WiFi และ MQTT Broker แล้ว ในช่วงเวลานี้ อุณหภูมิ ดัชนีความร้อน และความชื้นที่อุปกรณ์สังเคราะห์เสียงพูดย้อนยุค IoT ได้รับการเผยแพร่ไปยังโบรกเกอร์ MQTT เป็นประจำ ในสถานะนี้โฮมเพจ Speech Synth จะปรากฏขึ้น

เหตุการณ์ที่ควบคุมการเปลี่ยนแปลงระหว่างรัฐได้อธิบายไว้ในรูปที่ 1 ด้านบน การเปลี่ยนผ่านระหว่างรัฐยังควบคุมโดยพารามิเตอร์ SecVals ต่อไปนี้

  • ที่อยู่ IP ของโบรกเกอร์ MQTT ที่ 1 ในรูปแบบจุดทศนิยม AAA. BBB. CCC. DDD
  • พอร์ตนายหน้า MQTT แห่งที่ 2 ในรูปแบบจำนวนเต็ม
  • พยายามเชื่อมต่อ MQTT Broker ครั้งที่ 3 ก่อนที่จะเปลี่ยนจากโหมด STA เป็นโหมด AP ในรูปแบบจำนวนเต็ม
  • SSID เครือข่าย WiFi ที่ 4 ในข้อความรูปแบบอิสระ
  • รหัสผ่านเครือข่าย WiFi ที่ 5 ในข้อความรูปแบบอิสระ

ตามที่กล่าวไว้ข้างต้น หากอุปกรณ์ IoT ไม่สามารถเชื่อมต่อเป็นสถานี WiFi กับเครือข่าย WiFi ที่มีการกำหนด SSID และ P/W ใน secvals.txt ที่อยู่ในการ์ด SD อุปกรณ์ IoT จะกลายเป็นจุดเข้าใช้งาน เมื่อเชื่อมต่อกับจุดเชื่อมต่อนี้แล้ว 'โฮมเพจการกำหนดค่า Speech Synth Configuration' ดังที่แสดงด้านบนในรูปที่ 2 (โดยการป้อน 'SPEECHSVR.local' หรือ 192.168.4.1 ลงในแถบที่อยู่ URL ของเบราว์เซอร์ของคุณ) โฮมเพจนี้อนุญาตให้กำหนดค่าใหม่ของอุปกรณ์สังเคราะห์เสียงพูดย้อนยุค IoT ผ่านเบราว์เซอร์

การเข้าถึงระยะไกลขณะอยู่ในสถานะ ACTIVE

เมื่อเชื่อมต่อกับ MQTT Broker แล้ว ยังสามารถทั้งปรับเทียบใหม่และกำหนดค่าอุปกรณ์ผ่านการเผยแพร่หัวข้อ MQTT ไฟล์ calvals.txt มีการเข้าถึง R/W และ secvals.txt มีการเปิดเผยการเข้าถึงแบบเขียนเท่านั้น

ตามที่กล่าวไว้ข้างต้น เมื่ออยู่ในโหมดแอ็คทีฟ คุณจะสามารถเข้าถึง Speech Synth ผ่านอินเทอร์เฟซ HTTP ได้โดยป้อน 'SPEECHSVR.local' หรือ 192.168.4.1 ลงในแถบที่อยู่ URL ของเบราว์เซอร์ อินเทอร์เฟซที่ใช้ HTTP นี้ช่วยให้สามารถควบคุม Speech Synth ขั้นพื้นฐานได้ ภาพที่ 3, 4 และ 5 แสดงหน้าเว็บที่มี

ผู้ใช้ดีบัก

ระหว่างลำดับการบู๊ต อุปกรณ์ IoT สีเขียว ระบบที่นำที่ด้านหลังของกล่องหุ้มจะให้ข้อเสนอแนะการดีบักดังต่อไปนี้

  • 1 แฟลชสั้น: ไม่มีไฟล์ Config อยู่ในการ์ด SD (secvals.txt)
  • 2 กะพริบสั้นๆ: อุปกรณ์ IoT กำลังพยายามเชื่อมต่อกับเครือข่าย WiFi
  • ไฟส่องสว่างต่อเนื่อง: อุปกรณ์ IoT กำลังพยายามเชื่อมต่อกับ MQTT Broker
  • ปิด: อุปกรณ์เปิดใช้งานอยู่

ฟังก์ชันการทำงานของอุปกรณ์สังเคราะห์เสียงพูดย้อนยุค IoT ในสถานะ ACTIVE

เมื่ออยู่ในสถานะ ACTIVE ESP8266 จะเข้าสู่การวนซ้ำแบบต่อเนื่องที่เรียกใช้ฟังก์ชันต่อไปนี้ timer_update(), checkTemperatureAndHumidity() และ handleSpeech() ผลลัพธ์สุทธิที่ได้รับการออกแบบมาเพื่อนำเสนอผู้ใช้ด้วยอินเทอร์เฟซ HTTP หรือ MQTT ให้บริการอย่างราบรื่นด้วยโปรเซสเซอร์เสียงพูดออนบอร์ดพร้อมหน่วยเสียงตามต้องการ และเผยแพร่ค่าพารามิเตอร์แวดล้อมในพื้นที่ผ่าน MQTT

รายการที่ครอบคลุมของการสมัครรับข้อมูลและสิ่งพิมพ์ของหัวข้อทั้งหมดรวมถึงค่าเพย์โหลดจะรวมอยู่ในซอร์สโค้ด

ขั้นตอนที่ 7: การปรับเทียบเซ็นเซอร์

การสอบเทียบเซ็นเซอร์
การสอบเทียบเซ็นเซอร์

เมื่ออุปกรณ์ IoT เปิดเครื่องขึ้น ไฟล์สองไฟล์ชื่อ 'cavals1.txt' และ 'cavals2.txt' เป็นส่วนหนึ่งของลำดับการบู๊ต ซึ่งเป็นส่วนหนึ่งของลำดับการบู๊ต

เนื้อหาของไฟล์เหล่านี้เป็นค่าคงที่ของการปรับเทียบตามที่ระบุด้านบนในรูปที่ 1

  1. 'cavals1.txt': ใช้โดย AM2320. ภายนอก
  2. 'cavals2.txt': ใช้โดย DHT22. ภายใน

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

กลยุทธ์การรายงาน

พารามิเตอร์นี้กำหนดวิธีที่เซ็นเซอร์ระยะไกลรายงานการเปลี่ยนแปลงพารามิเตอร์แวดล้อมในเครื่อง หากเลือกค่าเป็น 0 เซ็นเซอร์ระยะไกลจะเผยแพร่การเปลี่ยนแปลงที่เห็นในอุณหภูมิหรือความชื้นทุกครั้งที่อ่านเซ็นเซอร์ที่เกี่ยวข้อง (ประมาณทุกๆ 10 วินาที) ค่าอื่นใดจะทำให้การเผยแพร่การเปลี่ยนแปลงล่าช้า 1…60 นาที การแก้ไขพารามิเตอร์นี้ช่วยให้สามารถเพิ่มประสิทธิภาพการรับส่งข้อมูลเครือข่าย MQTT ควรสังเกตข้อมูลอุณหภูมิและความชื้นจาก DHT22 ที่อ่านสลับกันเนื่องจากข้อจำกัดของเซ็นเซอร์

การสอบเทียบอุณหภูมิ

ในการปรับเทียบเซ็นเซอร์อุณหภูมิ ฉันได้ทำตามขั้นตอนเดียวกับที่แสดงไว้ในขั้นตอนที่ 4 อีกครั้งโดยใช้ความสัมพันธ์แบบ y=mx+c อย่างง่าย ฉันใช้ IoT Temperature, Humidity Sensor #1 เป็นอุปกรณ์อ้างอิง ค่าจากเซ็นเซอร์มีหน่วยเป็นองศาเซลเซียส

การสอบเทียบความชื้น

เนื่องจากฉันไม่มีวิธีบันทึกอย่างถูกต้องหรือแม้แต่ควบคุมความชื้นแวดล้อมในพื้นที่ ในการสอบเทียบเซ็นเซอร์ ฉันจึงใช้วิธีที่คล้ายกันกับขั้นตอนที่ 4 ข้างต้นนี้ โดยใช้เซ็นเซอร์ #1 เป็นข้อมูลอ้างอิงอีกครั้ง อย่างไรก็ตาม ที่กล่าวมาข้างต้น เมื่อเร็ว ๆ นี้ฉันได้พบบทความที่ยอดเยี่ยมบนเว็บที่อธิบายถึงวิธีการสอบเทียบเซ็นเซอร์ความชื้น ฉันอาจลองใช้วิธีนี้บ้างในอนาคต ค่าจากเซ็นเซอร์อยู่ใน %age ของความชื้นสัมพัทธ์

ขั้นตอนที่ 8: แบบแผนการตั้งชื่อหัวข้อ MQTT

แบบแผนการตั้งชื่อหัวข้อ MQTT
แบบแผนการตั้งชื่อหัวข้อ MQTT
แบบแผนการตั้งชื่อหัวข้อ MQTT
แบบแผนการตั้งชื่อหัวข้อ MQTT

ดังที่กล่าวไว้ในคำแนะนำก่อนหน้านี้ (ที่นี่) ฉันตัดสินตามแบบแผนการตั้งชื่อหัวข้อที่แสดงไว้ในรูปที่ 1 ด้านบน

กล่าวคือ 'AccessMethod/DeviceType/WhichDevice/Action/SubDevice' ไม่ได้สมบูรณ์แบบ แต่อนุญาตให้ใช้ตัวกรองที่มีประโยชน์เพื่อดูเอาต์พุตเซ็นเซอร์ทั้งหมดสำหรับหัวข้อพารามิเตอร์ที่กำหนด ซึ่งช่วยให้เปรียบเทียบได้ง่ายดังในรูปที่ 2 ด้านบนด้วย MQTTSpy

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

นอกจากนี้ยังสนับสนุนการจัดกลุ่มการทำงานเชิงตรรกะที่ขยายได้อย่างเหมาะสมภายในอุปกรณ์ IoT ที่กำหนด

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

หมายเหตุ: หากคุณไม่แน่ใจว่าจะใช้ MQTTSpy อย่างไร โปรดดูที่นี่ 'การตั้งค่านายหน้า MQTT ตอนที่ 2: IoT โฮมออโตเมชั่น'

ขั้นตอนที่ 9: การดีบักและการค้นหาข้อผิดพลาด

ตรวจแก้จุดบกพร่องและค้นหาข้อผิดพลาด
ตรวจแก้จุดบกพร่องและค้นหาข้อผิดพลาด

โดยทั่วไปแล้ว สำหรับโครงการงานอดิเรกของฉัน หากเป็นไปได้ ฉันมักจะสร้างต้นแบบฮาร์ดแวร์ที่เป็นตัวแทนซึ่งพัฒนาซอฟต์แวร์นั้น ฉันไม่ค่อยมีปัญหาใดๆ เมื่อรวมซอฟต์แวร์เข้ากับฮาร์ดแวร์แพลตฟอร์มขั้นสุดท้าย

อย่างไรก็ตาม ในโอกาสนี้ ฉันพบข้อผิดพลาดแปลกๆ เป็นระยะๆ โดยที่หน่วยเสียงบางหน่วยอาจส่งเสียงออกมาแต่บางหน่วยกลับไม่ทำ

หลังจากการดีบักเบื้องต้นของ Speech Synth PCB โดยใช้ Arduino Uno เพื่อส่งหน่วยเสียงและพิสูจน์ว่าบอร์ดนี้ใช้งานได้ ฉันได้กำหนดขอบเขตไปยังเส้น I2C ระหว่าง IoT PCB และ Speech Synth PCB ดูรูปที่ 1 ด้านบน

คุณสามารถเห็น 'ฟันเลื่อย'/ขอบเลขชี้กำลังของสัญญาณ I2C ได้อย่างชัดเจนบนร่องรอย

โดยปกติแล้วจะเป็นการบ่งชี้ว่าค่าการดึงของ I2C สูงเกินไปทำให้แรงดันไฟฟ้าของสายไม่สามารถฟื้นตัวได้เร็วพอในวงจรระบายน้ำแบบเปิด

ในฐานะที่เป็น 'หลีกเลี่ยง' ฉันขนานสอง smt ดึงตัวต้านทาน R12 และ R13 กับ 10Ks เพื่อให้ 4K7 และ Speech Synth 'ระเบิดในชีวิต' นั่นเอง

ความล้มเหลวประเภทนี้เป็นสิ่งที่ตรงกันข้ามกับสิ่งที่จะเกิดขึ้นเมื่อทำการดีบั๊กโปรเจ็กต์ประเภทนี้ โดยทั่วไปแล้วโมดูลที่ใช้ I2C ส่วนใหญ่ที่ซื้อจากอีเบย์มักจะมาพร้อมกับพูลอัพ 10K หรือ 4K7 ที่ติดตั้งไว้แล้ว หากคุณต้องการใช้โมดูล I2C >5 โมดูล แต่ละโมดูลมี 4K7 ดึงขึ้น โหลดโดยรวมคือ 940R ซึ่งจะดีเกินไปสำหรับสเตจเอาต์พุตของมาสเตอร์ การแก้ไขจะเป็นการยกเลิกการบัดกรีทั้งหมดยกเว้นตัวต้านทานแบบดึงขึ้นหนึ่งชุดในแต่ละโมดูล โดยเฉพาะอย่างยิ่งผู้ที่อยู่ห่างจากเจ้านายมากที่สุด

เคล็ดลับที่เป็นประโยชน์และควรค่าแก่การพิจารณาเมื่อออกแบบอุปกรณ์อิเล็กทรอนิกส์ด้วยอุปกรณ์ I2C

ขั้นตอนที่ 10: ทดสอบการออกแบบ

Image
Image
การทดสอบการออกแบบ
การทดสอบการออกแบบ
การทดสอบการออกแบบ
การทดสอบการออกแบบ

การทดสอบดำเนินการโดยใช้สองวิธี แบบแมนนวลและแบบอัตโนมัติ

ครั้งแรก ใช้เอง และโดยทั่วไปใช้ในระหว่างการพัฒนาโค้ดเริ่มต้นคือการใช้ MQTT Spy เพื่อฝึกใช้หัวข้อที่สมัครรับข้อมูลทั้งหมด และตรวจสอบคำตอบที่เผยแพร่ (ดังรูปที่ 2 ด้านบน) เนื่องจากเป็นกระบวนการแบบแมนนวล จึงอาจใช้เวลานานและมีแนวโน้มที่จะเกิดข้อผิดพลาดเมื่อการพัฒนาโค้ดดำเนินไป แม้ว่าการดำเนินการด้วยตนเองจะครอบคลุม 100%

MQTTSpy ได้รับเลือกสำหรับการทดสอบด้วยตนเอง เนื่องจากเป็นเครื่องมือที่ยอดเยี่ยมในการจัดรูปแบบเพย์โหลดที่กำหนดและเผยแพร่ไปยังหัวข้อต่างๆ ได้อย่างง่ายดาย นอกจากนี้ยังแสดงบันทึกการประทับเวลาที่ชัดเจนซึ่งมีประโยชน์มากสำหรับการดีบัก (รูปที่ 3 ด้านบน)

วิธีที่สอง ใช้วิธีการอัตโนมัติเมื่อซอร์สโค้ดมีความซับซ้อนมากขึ้น (>3700 บรรทัด) ความซับซ้อนที่เพิ่มขึ้นหมายถึงรอบการทดสอบด้วยตนเองนานขึ้นและการทดสอบที่ซับซ้อนยิ่งขึ้น เพื่อปรับปรุงความน่าเชื่อถือ การกำหนดและคุณภาพของการทดสอบ การทดสอบอัตโนมัติถูกใช้ผ่านผู้บริหารการทดสอบหลาม (รูปที่ 1) ดูขั้นตอน #10 ในคำแนะนำนี้เกี่ยวกับวิธีการแนะนำการทดสอบอัตโนมัติ สำเนาเต็มของการทดสอบอัตโนมัติที่ใช้ในคำแนะนำนี้มีให้ที่นี่

วิดีโอของลำดับการทดสอบอัตโนมัติในการใช้งานแสดงไว้ด้านบน ลำดับดำเนินการตามขั้นตอนต่อไปนี้

  • อัตโนมัติผ่าน MQTT

    • เชื่อมต่อกับแกนหลัก MQTT และประกาศ 'System Ready'
    • ออกกำลังกาย LED สีเขียว
    • ไฟ LED สีแดง
    • ไฟ LED สีฟ้า
    • ตรวจสอบการทำงานของหม้อดิจิตอล
    • พูดโดยใช้ Phonemes
    • พูดโดยใช้รหัสฐานสิบหกสำหรับ Phonemes
    • พูดโดยใช้รหัสสำหรับแก้ไขวลี
    • ความสนุกเล็กน้อยของ Dr Who and the Daleks
  • ด้วยตนเองผ่าน
    • ไฟ LED สีฟ้า
    • ไฟ LED สีแดง
    • พูดวลีคงที่ 'Steven Quinn', 'System Ready' และ 'Hello World'
    • มีเซิร์ฟเวอร์ HTTP ให้บริการ

      • Details on Speech Synth Chip
      • รายละเอียด MQTT

ขั้นตอนที่ 11: บทสรุป

บทสรุป
บทสรุป

แม้ว่าจะต้องใช้ความพยายามอย่างมากกับไฟล์และการฝึกซ้อม ฯลฯ โดยเฉพาะอย่างยิ่งสำหรับตะแกรงลำโพง ฉันคิดว่าผลลัพธ์ที่ได้นั้นน่าพอใจและบรรจุลงในกล่องขนาดเล็กที่สวยงาม ฉันสามารถทำให้มันเล็กลงได้ แต่จะต้องไปที่ PCB ตัวเดียวและฉันจงใจแบ่งมันออกเป็นสองส่วนเพื่อที่ฉันจะได้นำ PCB กลับมาใช้ใหม่ในภายหลังสำหรับโครงการอื่น ดังนั้นจึงเป็นการประนีประนอมอย่างมีความสุข

ซอฟต์แวร์ทำงานได้ดี อุปกรณ์ IoT ทำงานได้อย่างเสถียรมาระยะหนึ่งแล้วโดยไม่มีปัญหาใดๆ

ฉันได้ตรวจสอบอุณหภูมิและความชื้นผ่าน Grafana และเปรียบเทียบกับอุปกรณ์ที่อยู่ร่วม ค่าแวดล้อมทั้งสองมีความสัมพันธ์กันดี แสดงว่าการสอบเทียบมีความสมเหตุสมผล (หรืออย่างน้อยก็ใกล้เคียงกัน)

ฉันหยุดใช้คำสั่ง word ('WFD/SpeechTH/1/Word/Command') เนื่องจากหมดเวลาและจำเป็นต้องดำเนินการต่อไป ฉันอาจกลับมาเยี่ยมชมอีกครั้งหากและเมื่อฉันตั้งค่าฐานข้อมูล MySQL ตอนนี้ฉันกำลังใช้ InfluxDB

ขั้นตอนที่ 12: ข้อมูลอ้างอิงที่ใช้

แหล่งข้อมูลต่อไปนี้ใช้เพื่อรวมคำสั่งนี้เข้าด้วยกัน ซอร์สโค้ดสำหรับอุปกรณ์สังเคราะห์เสียงพูดย้อนยุค IoT (ซึ่งมีสำเนาของทุกอย่าง)

https://github.com/SteveQuinn1/IoT_Retro_Speech_Synthesis_SP0256_AL2

PubSubClient.h

  • โดย: Nick O'Leary
  • วัตถุประสงค์: ทำให้อุปกรณ์สามารถเผยแพร่หรือสมัครสมาชิกหัวข้อ MQTT กับโบรกเกอร์ที่กำหนด
  • จาก:

DHT.h

  • By: อดาฟรุต
  • วัตถุประสงค์: ห้องสมุด Arduino สำหรับ DHT11DHT22 ฯลฯ เซ็นเซอร์อุณหภูมิและความชื้น
  • จาก:

Adafruit_AM2320.h/Adafruit_Sensor.h

  • By: อดาฟรุต
  • วัตถุประสงค์: Arduino library สำหรับ AM2320 และอื่นๆ Temp & Humidity Sensor
  • จาก:

MCP4561_DIGI_POT.h

  • โดย: Steve Quinn
  • วัตถุประสงค์: Arduino Library for MCP4561 digital potentiometer
  • จาก:

Adafruit_MCP23017.h

  • โดย: Steve Quinn
  • วัตถุประสงค์: Arduino Library สำหรับ MCP23017 I2C Port Expander นี่คือส้อม GITHub จาก Adafruit-MCP23017-Arduino-Library โดย Adafruit
  • จาก:

เพื่อความสนุก

https://haynes.com/en-gb/

การผลิต PCB

https://jlcpcb.com/

การติดตั้งไลบรารี Arduino เพิ่มเติม

https://www.arduino.cc/en/Guide/Libraries

วิธีตรวจสอบและปรับเทียบเซ็นเซอร์วัดความชื้น

https://www.allaboutcircuits.com/projects/how-to-check-and-calibrate-a-humidity-sensor/?utm_source=All+About+Circuits+Members&utm_campaign=ffeee38e54-EMAIL_CAMPAIGN_2017_12_06&utm_medium=email_2565529_48c1500 /

SP0256-AL2 เอกสารข้อมูลสินค้า

https://www.futurebots.com/spo256.pdf

ร้านชิปคำพูด

https://www.speechchips.com/shop/

Arduino Contest 2019
Arduino Contest 2019
Arduino Contest 2019
Arduino Contest 2019

รองชนะเลิศการแข่งขัน Arduino 2019

แนะนำ: