สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-23 15:12
จุดประสงค์ของงานสร้างนี้คือการสอนเกี่ยวกับการเชื่อมต่อ Arduino กับ Node-red และฐานข้อมูล ดังนั้นคุณจึงสามารถบันทึกข้อมูลและรวบรวมข้อมูลเพื่อใช้ในภายหลังได้
สำหรับบิลด์นี้ ฉันใช้ระบบเตือนภัย Arduino แบบง่าย ๆ ที่ส่งออกตัวเลขข้อมูล 5 ตัว โดยแต่ละตัวคั่นด้วยเครื่องหมายจุลภาค
ไม่จำเป็นต้องมีจำนวนข้อมูลที่แน่นอนและโปรแกรมสามารถเป็นอะไรก็ได้
ส่วนสำคัญคือข้อมูลจะถูกคั่นด้วยเครื่องหมายจุลภาคตามที่เห็นในภาพหน้าจอนี้
ผลลัพธ์อาจมีลักษณะเช่นนี้: "324, 0, 0, 1, 1"
(การเขียนโปรแกรมและคำแนะนำในการสร้าง Arduino ที่เสร็จสิ้นแล้วจะเชื่อมโยงที่ด้านล่างของบทช่วยสอนนี้)
ขั้นตอนที่ 1: เริ่มต้นใช้งาน Node-red
สำหรับบทช่วยสอนนี้ เราถือว่าคุณได้ติดตั้ง Node-red แล้ว แต่มีจานสีพิเศษบางอย่างที่ใช้สำหรับโปรเจ็กต์นี้ที่เราต้องการให้มันทำงาน
ค้นหาปุ่ม "จัดการจานสี" และติดตั้งจานสีต่อไปนี้
- node-red-แดชบอร์ด
- node-red-node-mysql
- node-red-node-arduino
- node-red-node-serialport
ควรแสดงจานสีใหม่ ๆ ที่ด้านข้างของเมนูปุ่ม Node-red
ขั้นตอนที่ 2: แยกข้อมูลในโหนดสีแดง
ตอนนี้ Node-red พร้อมใช้งานแล้ว เราต้องเริ่มจากการแยกข้อมูลของเราออกเป็นชิ้นๆ
นี่คือเหตุผลที่เราตรวจสอบให้แน่ใจว่าได้แยกพวกมันด้วยเครื่องหมายจุลภาคภายในโค้ด Arduino
ขั้นแรกให้เริ่มต้นด้วยการวางโหนด Arduino Input ที่แผงด้านซ้าย
คุณต้องตรวจสอบให้แน่ใจว่ามีพอร์ตอนุกรมที่ถูกต้อง (ฉันใช้พอร์ต COM4) และอัตราบอด (ในโปรแกรมของฉันฉันใช้อัตราบอด 9600)
หากตั้งค่าอย่างถูกต้องควรแจ้งว่าเชื่อมต่อแล้ว
ขั้นต่อไป เราสร้างบล็อกฟังก์ชัน Javascript และเชื่อมต่อหลังจากโหนดอินพุต Arduino บล็อกนี้ช่วยให้เราเขียนโปรแกรมใน Javascript และที่นี่เราเขียนโค้ดที่สามารถแบ่งข้อมูลของเราสำหรับทุกเครื่องหมายจุลภาค
ในบล็อกฟังก์ชันนี้ ฉันแบ่งข้อมูล 5 รายการโดยใช้รหัสต่อไปนี้:
var m1 = {หัวข้อ: "light1", เพย์โหลด: msg.payload.split(", ")[0]}; var m2 = {หัวข้อ: "light2", เพย์โหลด: msg.payload.split(", ")[1]}; var m3 = {หัวข้อ: "light3", เพย์โหลด: msg.payload.split(", ")[2]}; var m4 = {หัวข้อ: "มิลลิวินาที", เพย์โหลด: msg.payload.split(", ")[3]}; var m5 = {หัวข้อ: "onoff", เพย์โหลด: msg.payload.split(", ")[4]}; กลับ [m1, m2, m3, m4, m5];
(เปลี่ยนรหัสตามความจำเป็น)
ตรวจสอบให้แน่ใจว่าโหนดถูกตั้งค่าเป็น 5 เอาต์พุต (หรือเทียบเท่าของคุณ)
ดังที่เห็นในภาพหน้าจอ ตอนนี้เรามีเอาต์พุต 5 รายการที่เราแต่ละลิงก์ไปยังโหนดดีบักและโหนดแดชบอร์ดข้อความ ซึ่งจะเป็นประโยชน์เมื่อเราต้องการดูบน UI
ขั้นตอนที่ 3: ฐานข้อมูลด้วย Wampserver
เพื่อให้ฐานข้อมูลของเราทำงานได้ คุณต้องติดตั้ง Wampserver หลังจากติดตั้งและแสดงเป็นไอคอนสีเขียว (หลังจากที่คุณได้เริ่มบริการทั้งหมดแล้ว) คุณควรเปิด "phpMyAdmin" ซึ่งจะนำคุณไปยังหน้าจอการเข้าสู่ระบบ ยกเว้นกรณีที่คุณมี ก่อนหน้านี้เปลี่ยนเพียงป้อน "root" ในชื่อผู้ใช้และเข้าสู่ระบบ
กดปุ่ม phpmyadmin ใต้เครื่องมือในแถบด้านซ้าย และควรเปิดเมนูฐานข้อมูล ซึ่งมีลักษณะเหมือนที่แสดงในภาพด้านบน
สร้างฐานข้อมูลใหม่และตั้งชื่อบางอย่างที่เกี่ยวข้องกับโครงการของคุณ เหมืองชื่อ "ระบบเตือนภัย" (ชื่อเหล่านี้จะคำนึงถึงขนาดตัวพิมพ์)
ภายใต้ฐานข้อมูลนั้น ให้สร้างตารางใหม่และตั้งชื่อมัน ของฉันชื่อ "alarmdata"
มันจะถามว่าคุณต้องการใช้ "latin1_swedish_ci" ไหม และเราก็แค่เก็บไว้อย่างนั้น
ตอนนี้คุณสร้างตาราง 6 ตาราง (1 มากกว่าข้อมูลที่เรามี)
ตารางแรกต้องใช้ประเภทข้อมูล "longtext"
และชุดข้อมูลที่เหลือใช้ "ข้อความกลาง"
อย่าลืมตั้งชื่อพวกเขา (ชุดข้อมูลแรกควรตั้งชื่อว่า "เวลา"
ขั้นตอนที่ 4: ฐานข้อมูล
ชุดข้อมูล Wampserver ควรมีลักษณะดังนี้
(แต่ไม่มีข้อมูลจริงเพราะเรายังไปไม่ถึง)
ขั้นตอนที่ 5: Node-red ไปยัง Wampserver
ตอนนี้เราต้องการข้อมูลที่เรากำลังส่งออกจาก Arduino เพื่อไปที่ Wampserver ของเรา
เริ่มต้นด้วยการสร้างบล็อกฟังก์ชัน Javascript อื่นและเชื่อมต่อกับโหนดอินพุต Arduino ของเรา
ในบล็อกสคริปต์นี้ เราแบ่งข้อมูลของเราอีกครั้ง แต่เราแทรกข้อมูลลงในฐานข้อมูลของเราด้วย
var data = msg.payload.split(", ");var Green1 = ข้อมูล[0]; var Green2 = ข้อมูล[1]; var Alarm = ข้อมูล[2]; var Millis = ข้อมูล[3]; var IsActive = ข้อมูล[4]; var out = "INSERT INTO alarmsystem.alarmdata (Time, Green1, Green2, Alarm, Millis, IsActive) VALUES('"+new Date().toISOString().slice(0, 19).replace('T', ' ')+"', '"+Green1+"', '"+Green2+"', '"+Alarm+"', '"+Millis+"', '"+IsActive+"')"; msg.topic = ออก; กลับผงชูรส;
สังเกตว่าฉันป้อน "INSERT INTO alarmsystem.alarmdata" ซึ่งเป็นชื่อที่เราตั้งให้ฐานข้อมูลและตารางของเรา ตรวจสอบให้แน่ใจว่าคุณได้เขียนชื่อที่ถูกต้องตามที่คุณตั้งให้ฐานข้อมูลไว้
ตอนนี้เชื่อมต่อบล็อก Javascript กับโหนดดีบักและโหนด "mysql" ที่อยู่ใต้จานเก็บข้อมูลทางด้านซ้าย
ภายใต้บล็อก mysql คุณตั้งชื่อเหมือนกับฐานข้อมูล "alarmsystem" ของคุณ
เปลี่ยนผู้ใช้เป็น "รูท" (ชื่อที่เราใช้ในการเข้าสู่ระบบเซิร์ฟเวอร์ของเรา)
โฮสต์พอร์ตและฐานข้อมูลควรกรอกด้วย:
โฮสต์: 127.0.0.1
พอร์ต: 3306
ฐานข้อมูล: ระบบเตือนภัย
หากทุกอย่างถูกต้อง ควรเชื่อมต่อหลังจากที่คุณปรับใช้การเปลี่ยนแปลงของคุณ
คุณควรจะเห็นด้วยว่าตอนนี้ฐานข้อมูลบันทึกข้อมูลของคุณจาก Arduino โดยตรง
ขั้นตอนที่ 6: การใช้ข้อมูลจาก Wampserver ไปยัง Node-red
สำหรับช่วงสุดท้าย เราต้องการดูว่าเราสามารถนำข้อมูลที่บันทึกไว้แล้วใส่กลับเข้าไปในโหนดสีแดงของเราได้หรือไม่ และหวังว่าจะแสดงผลได้
เริ่มต้นด้วยการวาง "inject" node
ภายใต้หัวข้อในโหนดนี้ เราใส่รหัส: SELECT*FROM alarmsystem.alarmdata
ซึ่งจะสามารถค้นหาฐานข้อมูลของเราได้เมื่อเรากดเข้าไป
เชื่อมต่อ inject node กับโหนด "mysql" ใหม่ที่ตั้งค่าเหมือนกับที่เราทำในขั้นตอนที่แล้ว
เชื่อมต่อโหนด mysql กับโหนดดีบักและโหนดเทมเพลตที่อยู่ใต้แดชบอร์ด
โหนดเทมเพลตจะเป็นตารางของเราที่เราสามารถอัปเดตเพื่อแสดงข้อมูลจากฐานข้อมูลในขณะที่สร้าง
ป้อนรหัสที่แสดงในภาพหน้าจอด้านบน (เปลี่ยนตามต้องการ) และตอนนี้ควรแสดงตารางข้อมูลใน UI โหนดสีแดงของเรา
นอกจากนี้เรายังสามารถเพิ่มปุ่มแดชบอร์ดเพื่ออัปเดตตารางจาก UI ได้อีกด้วย
เริ่มต้นด้วยการสร้างโหนดปุ่ม
เชื่อมต่อโหนดปุ่มกับบล็อกฟังก์ชัน Javascript
ในบล็อกฟังก์ชันเราใส่รหัสต่อไปนี้
msg.topic = "SELECT * FROM alarmdata ORDER BY Green1 DESC LIMIT 20";ส่งคืนข้อความ;
(Green1 เป็นตัวแปรข้อมูลตัวแรกในตาราง)
บล็อกฟังก์ชันนี้จะต้องเชื่อมต่อกับอินพุตของโหนด mysql ของเราที่เราทำไว้ก่อนหน้านี้ในขั้นตอนนี้
ขั้นตอนที่ 7: เสร็จสิ้น
ตอนนี้ UI ของเราควรมีการอัปเดตข้อมูลของเราและตารางที่มีข้อมูลจากเซิร์ฟเวอร์ของเรา
ซึ่งหมายความว่าเราได้สร้างการเชื่อมต่อระหว่าง Arduino โปรแกรมที่ใช้ UI และฐานข้อมูล
หากคุณสนใจในการทำงานของ Arduino Alarm System ฉันได้เพิ่มเอกสารที่อธิบายวิธีการตั้งโปรแกรมและตั้งค่า
เช่นเดียวกับการส่งออกการเขียนโปรแกรม node-red อย่างเต็มรูปแบบ
แนะนำ:
UCL Embedded - B0B the Linefollower: 9 ขั้นตอน
UCL Embedded - B0B the Linefollower: นี่คือ B0B.*B0B เป็นรถที่ควบคุมด้วยวิทยุทั่วไป ซึ่งให้บริการพื้นฐานของหุ่นยนต์ตามสายชั่วคราว เช่นเดียวกับหุ่นยนต์ติดตามบรรทัดจำนวนมากก่อนหน้าเขา เขาจะพยายามอย่างเต็มที่เพื่ออยู่ต่อ เส้น aa เกิดจากการเปลี่ยนระหว่างพื้นและแ
UCL - Embedded - Pick and Place: 4 ขั้นตอน
UCL - Embedded - Pick and Place: คำแนะนำนี้จะดำเนินการอย่างไรแม้ว่าหน่วยหยิบและวาง 2D จะทำขึ้นอย่างไรและจะเขียนโค้ดอย่างไร
UCL - Embedded // ตัวติดตามแสงแกนคู่สำหรับแผงโซลาร์เซลล์: 7 ขั้นตอน
UCL - Embedded // ตัวติดตามแสงแกนคู่สำหรับแผงโซลาร์เซลล์: โครงการที่ประกอบและไฟล์ 3D แต่ละไฟล์
UCL - การเชื่อมต่อ Node-red กับ Siemens PLC โดยใช้ KEPserver: 7 ขั้นตอน
UCL - การเชื่อมต่อ Node-red กับ Siemens PLC โดยใช้ KEPserver: RequirementsNode-red: https://nodered.org/docs/getting-started/installationKEPserver: https://www.kepware.com/en-us/kepserverex-6 -6-ปล่อย
UCL - อุตสาหกรรม 4.0: เครื่องผสมขนม 4.000: 9 ขั้นตอน
UCL - อุตสาหกรรม 4.0: เครื่องผสมขนม 4.000: สำหรับโครงการของเราในอุตสาหกรรม 4.0 เราได้ตัดสินใจทำเครื่องผสมขนม แนวคิดคือเรามีแผงผู้ใช้ที่ทำใน Node-Red ซึ่งลูกค้าสามารถสั่งขนมได้ จากนั้น Arduino จะประมวลผลคำสั่งซื้อและผสมขนมลงในชาม แล้วเรา