สารบัญ:

โครงการ Arduino: ควบคุมอุปกรณ์อิเล็กทรอนิกส์ผ่านอินเทอร์เน็ตโดยใช้ Nodejs + ฐานข้อมูลและเว็บไซต์ SQL: 6 ขั้นตอน
โครงการ Arduino: ควบคุมอุปกรณ์อิเล็กทรอนิกส์ผ่านอินเทอร์เน็ตโดยใช้ Nodejs + ฐานข้อมูลและเว็บไซต์ SQL: 6 ขั้นตอน

วีดีโอ: โครงการ Arduino: ควบคุมอุปกรณ์อิเล็กทรอนิกส์ผ่านอินเทอร์เน็ตโดยใช้ Nodejs + ฐานข้อมูลและเว็บไซต์ SQL: 6 ขั้นตอน

วีดีโอ: โครงการ Arduino: ควบคุมอุปกรณ์อิเล็กทรอนิกส์ผ่านอินเทอร์เน็ตโดยใช้ Nodejs + ฐานข้อมูลและเว็บไซต์ SQL: 6 ขั้นตอน
วีดีโอ: สร้าง Platform iot ใช้เองสั่งงานกี่อุปกรณ์ก็ได้แบบไรข้อจำกัด || Arduino โปรเจกต์ 🍀IT.02 2024, พฤศจิกายน
Anonim
โครงการ Arduino: ควบคุมอุปกรณ์อิเล็กทรอนิกส์ผ่านอินเทอร์เน็ตโดยใช้ฐานข้อมูลและเว็บไซต์ Nodejs + SQL
โครงการ Arduino: ควบคุมอุปกรณ์อิเล็กทรอนิกส์ผ่านอินเทอร์เน็ตโดยใช้ฐานข้อมูลและเว็บไซต์ Nodejs + SQL
โครงการ Arduino: ควบคุมอุปกรณ์อิเล็กทรอนิกส์ผ่านอินเทอร์เน็ตโดยใช้ฐานข้อมูลและเว็บไซต์ Nodejs + SQL
โครงการ Arduino: ควบคุมอุปกรณ์อิเล็กทรอนิกส์ผ่านอินเทอร์เน็ตโดยใช้ฐานข้อมูลและเว็บไซต์ Nodejs + SQL
โครงการ Arduino: ควบคุมอุปกรณ์อิเล็กทรอนิกส์ผ่านอินเทอร์เน็ตโดยใช้ฐานข้อมูลและเว็บไซต์ Nodejs + SQL
โครงการ Arduino: ควบคุมอุปกรณ์อิเล็กทรอนิกส์ผ่านอินเทอร์เน็ตโดยใช้ฐานข้อมูลและเว็บไซต์ Nodejs + SQL

โครงการโดย:Mahmed.tech

วันที่สร้าง: 14 กรกฎาคม 2017

ระดับความยาก: เริ่มต้นด้วยความรู้ด้านการเขียนโปรแกรม

ความต้องการของฮาร์ดแวร์:

- Arduino Uno, Nano, Mega (ฉันคิดว่า MCU ส่วนใหญ่ที่มีการเชื่อมต่อแบบอนุกรมจะใช้งานได้)

- ตัวต้านทานกระแสไฟ LED และกระแสไฟเดี่ยว ใช้เครื่องคิดเลขนี้หากคุณไม่แน่ใจ: Ohms Law Calculator

- โพเทนชิออมิเตอร์ 10K

ความต้องการซอฟต์แวร์:

- Arduino IDE

- Node. JS (นี่คือซอฟต์แวร์บนคอมพิวเตอร์ ติดตั้งง่ายมาก)

- MySQL Server (วิธีที่ง่ายที่สุดที่ฉันพบคือการใช้เว็บโฮสติ้งราคาถูก คุณยังสามารถรับชื่อโดเมนฟรีได้)

ภาษาการเขียนโปรแกรมและการเขียนสคริปต์ที่ใช้:

Arduino (ดัดแปลง C/C++), JavaScript (Nodejs), PHP, HTML & CSS

บทนำโปรเจ็กต์นี้โดยย่อ: การควบคุมไมโครคอนโทรลเลอร์ Arduino จากเว็บอินเตอร์เฟส จึงควบคุมอุปกรณ์ไฟฟ้าได้จากทุกที่ด้วยอินเทอร์เน็ต ฉันต้องการขยายความเข้าใจเกี่ยวกับการเขียนโปรแกรมและการพัฒนาเว็บ และจะมีวิธีใดที่จะดีไปกว่าการทำโปรเจ็กต์ที่เรียบง่ายแต่มีประสิทธิภาพ ฮาร์ดแวร์ถูกเก็บไว้ให้น้อยที่สุด ดังนั้นฉันจึงสามารถมุ่งเน้นไปที่ซอฟต์แวร์ได้มากขึ้น ดังนั้นฉันจึงเลือกใช้ LED แบบง่าย ๆ การติดตั้งหม้อ หม้อจะส่งข้อมูลและไฟ LED จะได้รับ (ความสว่าง PWM) การใช้ NodeJS ข้อมูลอนุกรมจะถูกอ่าน (ค่าโพเทนชิออมิเตอร์) และเขียน (ความสว่างนำ) ส่วนที่ยากของโครงการนี้คือการรับข้อมูลเข้าจากตำแหน่งระยะไกล (เว็บเซิร์ฟเวอร์)

ขั้นตอนที่ 1: ลอจิกซอฟต์แวร์: สถาปัตยกรรมระบบ

ลอจิกซอฟต์แวร์: สถาปัตยกรรมระบบ
ลอจิกซอฟต์แวร์: สถาปัตยกรรมระบบ

ข้อมูลโพเทนชิออมิเตอร์:

สิ่งนี้เริ่มต้นที่ Arduino อ่านค่าพ็อตคือการพิมพ์แบบอนุกรม อย่างไรก็ตาม คราวนี้เราจะใช้ Node. JS เพื่ออ่านค่า NodeJS จะเปิดการสื่อสารแบบอนุกรมไปยังพอร์ตเดียวกับที่ Arduino เชื่อมต่อและอ่านค่าพ็อตที่พิมพ์ออกมา จากนั้น NodeJS จะอัปโหลดข้อมูลไปยังฐานข้อมูล SQL ระยะไกล ซึ่งจะเกิดขึ้นทุกครั้งที่พิมพ์ค่า pot ใหม่ หน้าเว็บจะเชื่อมต่อกับช่วงการตั้งค่าฐานข้อมูล SQL และดึงค่าโพเทนชิออมิเตอร์ จากนั้นจะปรากฏบนหน้าเว็บ

ข้อมูลนำ:

สำหรับไฟ LED ความสว่างของ PWM จะถูกตั้งค่าโดยผู้ใช้บนหน้าเว็บระยะไกล ดังนั้นการเดินทางจึงเริ่มต้นที่ฝั่งตรงข้ามของสเปกตรัม ข้อมูลอินพุตจะถูกบันทึกลงในฐานข้อมูล SQL ทุกช่วงที่ตั้งไว้ ฐานข้อมูลจะถูกตรวจสอบการเปลี่ยนแปลงใน PWM นำ ซึ่งทำโดย NodeJS หากค่าต่างจากค่าก่อนหน้า ค่าใหม่จะถูกส่งไปยัง Arduino ผ่านบัสอนุกรม Arduino เปลี่ยนค่าเอาต์พุต PWM ของ led เพื่อเปลี่ยนความสว่าง

เครื่องคิดเลขกฎหมายโอห์มใช้สูตร V = IR และ P = IV = I²R = V²/R สำหรับโครงงานนี้ ฉันจะใช้ไฟ LED สีฟ้า นี่เป็นสิ่งสำคัญเพราะเมื่อความถี่แสงเพิ่มขึ้น แรงดันตกคร่อมก็เพิ่มขึ้นเช่นกัน เนื่องจากแสงสีน้ำเงินมีความถี่สูงกว่าเมื่อเปรียบเทียบกับไฟ LED สีแดง นี่หมายถึงแรงดันไปข้างหน้าที่สูงขึ้น ช่วงการทำงานจะแตกต่างกันไปขึ้นอยู่กับยี่ห้อ ชนิด และขนาด สำหรับการตั้งค่าของฉัน ฉันใช้ตัวต้านทาน 220 Ω แบบอนุกรม ลบกับกราวด์และบวกกับพิน PWM บน Arduino หม้อเชื่อมต่อกับพินอะนาล็อก ด้วย 5VCC ปลายด้านหนึ่ง GND อีกข้างหนึ่งและพินกลางเชื่อมต่อกับพินอะนาล็อก (A0 ในกรณีของฉัน)

ขั้นตอนที่ 2: ขั้นตอนที่ 1: การเดินสายฮาร์ดแวร์

ขั้นตอนที่ 1: การเดินสายฮาร์ดแวร์
ขั้นตอนที่ 1: การเดินสายฮาร์ดแวร์

สิ่งนี้ง่ายมาก: เพียงเชื่อมต่อตัวต้านทานจำกัดกระแสของคุณเป็นอนุกรมกับ LED ตรวจสอบให้แน่ใจว่าคุณได้รับไฟ LED ที่ถูกต้อง จุดหนึ่งจะไปที่ GND ในขณะที่อีกจุดหนึ่งจะไปที่ขา Arduino สำหรับการตั้งค่าของฉัน ฉันใช้พิน 12 สำหรับ led และ A7 สำหรับ Pot ฉันไม่มีแผนผังเนื่องจากเป็นวงจรที่ง่ายมาก อย่างไรก็ตาม ฉันพบสิ่งนี้ทางออนไลน์ (ภาพ)

ขั้นตอนที่ 3: ขั้นตอนที่ 2: Arduino

ขั้นแรกให้ตรวจสอบไฟ LED และหม้อว่าทำงานตามที่คาดไว้หรือไม่ สิ่งนี้ลดลงโดยโปรแกรมง่าย ๆ ที่ค่า pot ควบคุมการเป็นผู้นำ ฉันใช้ฟังก์ชันจำกัดเพื่อเปลี่ยนช่วงหม้อจาก 0 ถึง 1023 เป็น 0 ถึง 255 แต่ /4 แบบธรรมดาก็ใช้งานได้เช่นกัน ค่า pot ถูกทำให้เรียบโดยเอาค่าเฉลี่ยจากการอ่าน 10 ค่าที่ต่อเนื่องกัน นี่คือการลบ spikes (อย่างไรก็ตาม การปรับให้เรียบนี้ทำให้เกิดปัญหากับ NodeJS ดังนั้นสิ่งนี้จึงถูกลบออกในภายหลังในโปรเจ็กต์ - มากกว่านั้น)

รหัส Arduino

อ่าน / เขียน Serial ขั้นตอนต่อไปคือการป้อนข้อมูลของผู้ใช้ผ่านหน้าต่างมอนิเตอร์แบบอนุกรมที่จัดเตรียมโดย Arduino ide เพื่อตั้งค่าความสว่าง เมื่อต้องการทำเช่นนี้ serial.parseInt() จะใช้ซึ่งรับค่าจำนวนเต็มและละเว้นสตริง นอกจากนี้ยังมีการเพิ่มการตรวจสอบข้อผิดพลาดในรหัส ช่วงที่ถูกต้องของค่า PWM คือ 0 - 255 เมื่อผู้ใช้ป้อน >255 ก็จะกำหนดค่า 255 และหากผู้ใช้ป้อนค่าหรือ < +/-5 ฉันได้ทำสิ่งนี้เพื่อให้การอ่านมีเสถียรภาพมากขึ้นเนื่องจากเป็นความผันผวน. เหตุใดจึงเป็นปัญหาใหญ่ที่เกี่ยวข้องกับการอัปเดต SQL เพิ่มเติมในภายหลัง

ขั้นตอนที่ 4: ขั้นตอนที่ 3: NodeJS

ฉันจะไม่แสดงวิธีรับหรือตั้งค่าและเซิร์ฟเวอร์ SQL มีแบบฝึกหัดมากมาย

โปรแกรม NodeJS มี 3 ประเด็นหลัก:

อ่านข้อมูลอนุกรม

เขียนข้อมูลอนุกรม

อัปเดตฐานข้อมูล SQL

ในการสร้างการเชื่อมต่อแบบอนุกรมภายใน NodeJS จะต้องดาวน์โหลดโมดูลที่เรียกว่าพอร์ตอนุกรม ซึ่งสามารถทำได้โดยใช้คำสั่ง npm เปิด CMD ในโฟลเดอร์ที่จะเก็บโปรแกรม NodeJS ไว้ ติดตั้งโดยพิมพ์: npm install serialport นอกจากนี้ยังต้องติดตั้งโมดูล SQL เพื่อให้สามารถเชื่อมต่อกับฐานข้อมูล sql: npm install mysql NodeJS - Serial Port ขั้นตอนแรกของฉันกับ NodeJS โปรแกรมคือการอ่านข้อมูลที่พิมพ์และส่งความสว่าง pwm ไปยัง Arduino ทำได้โดยเปิดการเชื่อมต่อแบบอนุกรมที่ braudrate และพอร์ตเดียวกัน เมื่อสร้างการเชื่อมต่อแล้ว ฉันอ่านข้อความที่เข้ามาและพิมพ์ลงในหน้าต่างคอนโซล ปัญหาเกิดขึ้นเมื่อฉันพยายามเขียนค่า pwm เพื่อควบคุมความสว่าง

มันยังคงส่งข้อผิดพลาด: Port Not Open วิธีแก้ปัญหาเริ่มต้นของฉันคือการเรียกใช้ฟังก์ชันการเขียนเมื่อมีข้อมูลขาเข้า อย่างไรก็ตาม นี่เป็นวิธีแก้ไขที่ไม่ดี และฉันค่อนข้างไม่พอใจกับวิธีแก้ปัญหา แม้ว่าจะใช้งานได้ แต่จะส่งเมื่อค่า pot เปลี่ยนไปเท่านั้น โค้ดตัวอย่างสำหรับโมดูลซีเรียลจะไม่ทำงานหากมีข้อผิดพลาดเดียวกัน ต่อมาฉันพบว่าโปรแกรมกำลังพยายามเรียกใช้ฟังก์ชันการเขียนโดยไม่เปิดพอร์ต ซึ่งทำให้เกิดข้อผิดพลาดนั้น ฉันพบปัญหานี้โดยใช้ฟังก์ชัน setInterval()

NodeJS - MySQLไลบรารี MySQL ถูกใช้ (npm ติดตั้ง MySQL) เพื่อเชื่อมต่อกับฐานข้อมูล SQL เนื่องจากเซิร์ฟเวอร์ในตำแหน่งระยะไกลจะใช้ที่อยู่ IP ของเซิร์ฟเวอร์แทน localhost

var con เก็บข้อมูลการเชื่อมต่อในรูปแบบ JSON เมื่อทำการเชื่อมต่อสำเร็จ ฐานข้อมูลสามารถสอบถามข้อมูลได้ มีการสร้างฟังก์ชัน 2 รายการสำหรับอัปเดตตารางอื่นๆ โดยเลือกด้วยพารามิเตอร์ที่ใช้ในแบบสอบถาม SQL ตารางการอัปเดตจะถูกเรียกเมื่อได้รับค่า pot ใหม่และแบบสอบถามการตรวจสอบความสว่างจะทำงานเป็นระยะ

NodeJSCCode ลิงค์

ขั้นตอนที่ 5: ขั้นตอนที่ 4: เว็บอินเตอร์เฟส

ขั้นตอนที่ 4: เว็บอินเตอร์เฟส
ขั้นตอนที่ 4: เว็บอินเตอร์เฟส

เว็บอินเตอร์เฟส

หน้าเว็บหลักเขียนด้วย PHP เนื่องจากฉันมีประสบการณ์บางอย่างจากฐานข้อมูล CO323 ของฉันและโมดูลเว็บที่มหาวิทยาลัยแล้ว ใช้ตารางและแบบฟอร์ม Html เพื่อแสดงข้อมูล sql

รหัสการเข้าถึง PHP SQL: ลิงก์ เลื่อนไปที่ส่วนเว็บอินเตอร์เฟส

HTML & CSS * รหัสเว็บเพจ Javascript: ลิงก์ เลื่อนไปที่ด้านล่าง

หน้าเว็บสุดท้าย