- Node.js คืออะไร?
- ส่วนประกอบที่จำเป็น
- แผนภูมิวงจรรวม
- การตั้งค่า Node.js Framework
- การติดตั้งห้องสมุด Johnny-Five
- LED กะพริบพร้อม Arduino และ Node.js
- การควบคุมความสว่างของ LED โดยใช้ Arduino และ Node.js Webserver
เราได้เห็นตัวอย่างมากมายของการกะพริบ LED โดยใช้ไมโครคอนโทรลเลอร์ที่แตกต่างกันและภาษาโปรแกรมต่างๆ วันนี้เราจะใช้ที่นิยมมาก JavaScript กรอบ Node.js เพื่อควบคุม LED เชื่อมต่อกับ Arduino Uno นอกจากนี้เราจะใช้ Node.js เพื่อควบคุมความสว่างของ LEDจากหน้าเว็บโดยใช้ Arduino ด้วยการปรับแต่งเพียงเล็กน้อยและใช้ ESP8266 สิ่งนี้สามารถแปลงเป็นโครงการ IoT ที่สามารถควบคุม LED ได้จากทุกที่
Node.js คืออะไร?
Node.jsเป็นใช้กันอย่างแพร่หลายกรอบ JavaScript-based ที่สร้างขึ้นบนของ Google Chrome JavaScript V8 เครื่องยนต์และนำไปใช้ในการพัฒนาของ I / O การใช้งานเว็บอย่างเข้มข้นเช่นการใช้งานหน้าเดียว, สตรีมมิ่งวิดีโอเว็บไซต์ ฯลฯ
เราได้ทำแบบฝึกหัดให้ข้อมูลก่อนหน้านี้เกี่ยวกับการเริ่มต้นใช้งาน Node.js และ Raspberry Pi เพื่อควบคุม LED ในบทช่วยสอนนี้เราจะทำตามแนวทางที่คล้ายกันนั่นคือ LED จะถูกควบคุมโดยใช้สองวิธีเช่น:
- LED อย่างง่ายกะพริบโดยการเขียนโค้ด JavaScript ในกรอบงาน Node.js
- การควบคุมความสว่าง LED โดยใช้กรอบงาน Node.js และเว็บอินเตอร์เฟสจากเบราว์เซอร์ใด ๆ: Arduino UNO จะทำหน้าที่เป็นเว็บเซิร์ฟเวอร์และหน้าเว็บ HTML จะโฮสต์บนพีซีหรือแล็ปท็อป
ส่วนประกอบที่จำเป็น
ฮาร์ดแวร์:
- บอร์ด Arduino UNO
- นำ
- ตัวต้านทาน
ซอฟต์แวร์:
- Arduino IDE:สำหรับการอัพโหลดภาพร่างไปยัง Arduino UNO Board
- Firmata:เป็นโปรโตคอลสำหรับการสื่อสารกับไมโครคอนโทรลเลอร์ที่แตกต่างกันจากซอฟต์แวร์บนคอมพิวเตอร์สมาร์ทโฟน ฯลฯ เฟิร์มแวร์ Firmata สามารถโหลดได้ในบอร์ดไมโครคอนโทรลเลอร์ (เช่น Arduino, Teensy) และสามารถพูดคุยกับแล็ปท็อปพีซีหรือสมาร์ทโฟนได้ Firmata Library มาพร้อมกับ Arduino IDE จึงไม่จำเป็นต้องดาวน์โหลดจากทุกที่ เราได้ทำการสอนเกี่ยวกับการควบคุม Arduino ด้วย Raspberry Pi โดยใช้ pyFirmata
- Johnny-Five: Johnny-Five เป็นแพลตฟอร์มหุ่นยนต์และ IoT ที่ใช้ JavaScript ที่ใช้ในการเขียนโค้ดใน JavaScript และใช้เพื่อสร้างสะพานเชื่อมระหว่างบอร์ด Arduino และคอมพิวเตอร์ Johnny-Five ได้รับการทดสอบกับบอร์ดที่เข้ากันได้กับ Arduino เช่น Arduino UNO, NANO, Promini และอื่น ๆ ในบทช่วยสอนนี้จะต้องดาวน์โหลดไลบรารี Johnny-Five เพื่อใช้คุณสมบัติทั้งหมด คู่มือการติดตั้งจะอธิบายต่อไปในบทช่วยสอนนี้
แผนภูมิวงจรรวม
แผนภาพวงจรเป็นพื้นฐานมากเราต้องเชื่อมต่อ LED กับ Arduinoการตั้งค่า Node.js Framework
ก่อนที่จะเริ่มการเข้ารหัสและพัฒนาจำเป็นต้องดาวน์โหลดและตั้งค่า Node.js สำหรับการดาวน์โหลดสภาพแวดล้อม Node.js ให้ทำตามขั้นตอนง่ายๆ
ขั้นตอนที่ 1: -ดาวน์โหลดไฟล์. exe ของ Node.js จากเว็บไซต์ทางการ
ขั้นตอนที่ 2: -เรียกใช้. exe และทำตามคำแนะนำที่ระบุในโปรแกรมติดตั้ง
ขั้นตอนที่ 3: -รีสตาร์ทคอมพิวเตอร์ตามคำแนะนำในเอกสาร Node.js และใช้คุณสมบัติทั้งหมดของ Node.js
ขั้นตอนที่ 4: -หากต้องการตรวจสอบว่าโหนดได้รับการติดตั้งแล้วให้เปิด Command Prompt แล้วพิมพ์Node –v
ขั้นตอนที่ 5: -เวอร์ชัน Node.js จะแสดงขึ้นเพื่อระบุว่าได้ติดตั้ง Node.js แล้ว
การติดตั้งห้องสมุด Johnny-Five
หลังจากดาวน์โหลด Node.js แล้วให้สร้างโฟลเดอร์ใหม่ชื่อ“ LED_Control”ในเอกสารเพื่อเก็บไฟล์โครงการทั้งหมดไว้ในที่เดียว ไฟล์โครงการทุกไฟล์จะถูกเก็บไว้ในโฟลเดอร์“ LED_Control ” ตอนนี้ดาวน์โหลด Johnny-Five Library ในโฟลเดอร์“ LED_Control ” ในการดาวน์โหลดให้ทำตามขั้นตอนด้านล่าง:
ขั้นตอนที่ 1: -เปิดพร้อมรับคำสั่ง
ขั้นตอนที่ 2: -ไปที่โฟลเดอร์“ LED_Control ” โดยทำตามคำสั่ง ' cd '
ขั้นตอนที่ 3: -เรียกใช้คำสั่ง ' npm install johnny-five'
ขั้นตอนที่ 4: -สิ่งนี้จะติดตั้งการอ้างอิงทั้งหมดของ Johnny-Five
ขั้นตอนที่ 5: -ติดตั้งไลบรารีที่จำเป็นที่ใช้ในบทช่วยสอนนี้เพื่อควบคุมความสว่างของ LED มีห้องสมุดสามแห่งที่ใช้ที่นี่:
- ด่วน:เครื่องห่อเซิร์ฟเวอร์
- socket.i o: ไลบรารี WebSockets
- serialpor t: Serial port wrapper
ขั้นตอนที่ 5: -เรียกใช้คำสั่งด้านล่างทีละคำสั่งเพื่อติดตั้งไลบรารีทั้งสามนี้
npm ติดตั้ง express npm ติดตั้ง socket.io npm ติดตั้ง serialport
อย่างที่บอกไปก่อนหน้านี้โครงการแบ่งออกเป็นสองส่วน:
- ประการแรก Arduino กะพริบ LED พร้อม Node.js
- ประการที่สองการควบคุมความสว่างของ LED จากเว็บอินเตอร์เฟสโดยใช้ Arduino และ Node.js
LED กะพริบพร้อม Arduino และ Node.js
ในการกะพริบ LED Arduino จะต้องตั้งค่าเพื่อสื่อสารกับคอมพิวเตอร์
การตั้งค่า Arduino UNO สำหรับ LED กะพริบ:
ในการทำให้ Arduino UNO ยอมรับคำสั่งจากแล็ปท็อปไปยัง LED ควบคุมต้องโหลดเฟิร์มแวร์ Firmata ใน Arduino UNO ในการโหลดเฟิร์มแวร์เฟิร์มแวร์ให้ทำตามขั้นตอนง่ายๆเหล่านี้:
- เชื่อมต่อ Arduino UNO โดยใช้สาย USB
- เปิด Arduino IDE และเลือกบอร์ด Arduino UNO (หากใช้บอร์ดอื่นให้เลือกตามลำดับ) จาก Tools
- เลือกพอร์ต Respective COM ของ Arduino UNO ที่เชื่อมต่อ
- ตอนนี้ค้นหา Firmata Sketch โดยใช้เมนู -> ไฟล์ -> ตัวอย่าง -> Firmata -> StandardFirmata
- อัปโหลดร่าง“ StandardFirmata”โดยไปที่ไฟล์ -> อัปโหลด
สิ่งนี้จะโหลด Firmata Sketch ลงใน Arduino UNO และตอนนี้ Arduino UNO พร้อมที่จะยอมรับคำสั่งใด ๆ จากคอมพิวเตอร์
การเขียนโปรแกรม Node.js สำหรับ LED กะพริบ:
ในการเขียนโปรแกรม Node.js ให้เปิดโปรแกรมแก้ไขข้อความใด ๆ (Notepad, Notepad ++ และอื่น ๆ) และวางโค้ด"blink_led" ที่แนบท้ายบทช่วยสอนนี้และบันทึกด้วยนามสกุล".js"เช่น (blink_led.js) ในโฟลเดอร์“ LED_Control” ที่สร้างขึ้นก่อนหน้านี้ เราจะพูดถึงขั้นตอนสำคัญในไฟล์โค้ดblink_led.js
เริ่มแรกกำหนด Pin ของไมโครคอนโทรลเลอร์ที่เชื่อมต่อ led ในตัวอย่างนี้ LED เชื่อมต่อกับ Pin 5 ของ Arduino UNO 'var' ใน Node.js แสดงถึงการประกาศตัวแปร
var led_pin = 5;
จอห์นนี่ห้า โมดูลความต้องการที่จะรวมและความต้องการของคณะกรรมการที่ได้รับเลือก โมดูลใน Node.js คือไลบรารี ฟังก์ชัน ' require () ' จะเข้าถึงโมดูล
var johnny_five = ต้องใช้ ("johnny-five"); var arduino_board = johnny_five.Board ใหม่ ();
console.logคำสั่งจะคล้ายกับการพิมพ์คำสั่งและมันจะพิมพ์ข้อความ และขา LED ถูกตั้งค่าเป็นโหมดเอาท์พุทและความล่าช้าที่กำหนดจะถูกกำหนดให้กับไฟ LED กะพริบ
console.log ("LED เริ่มกะพริบแล้ว!"); var led = johnny_five.Led ใหม่ (led_pin); led.blink (100);
ตอนนี้เพื่อเรียกใช้โปรแกรมให้ทำตามขั้นตอนด้านล่าง:
- เปิด Command Prompt
- ค้นหาโฟลเดอร์“ LED_Control”โดยทำตามคำสั่ง'cd'
- เรียกใช้คำสั่ง'Node led_blink.js' หากดำเนินการสำเร็จจะแสดงข้อความ"LED เริ่มกะพริบแล้ว!" ดังแสดงในภาพด้านล่าง
- ไฟ led จะเริ่มกะพริบใน Arduino UNO Pin 5
- และเสร็จสิ้นส่วนแรกของบทช่วยสอนของเรานั่นคือLED กะพริบพร้อม Node.js
การควบคุมความสว่างของ LED โดยใช้ Arduino และ Node.js Webserver
เช่นเดียวกับการกะพริบ LED ด้วย Node.jsในส่วนนี้จะมีบางส่วนเช่นการตั้งค่า Arduino UNO การตั้งค่าเว็บอินเตอร์เฟสและการเขียนโปรแกรม Node.js
การตั้งค่า Arduino UNO เพื่อควบคุมความสว่างของ LED:
ในการตั้งค่า Arduino UNO เพียงแค่อัปโหลดร่าง“ arduino_control.ino ” ลงในบอร์ด Arduino UNO เท่านี้ก็เสร็จเรียบร้อย เพื่อตั้งค่าบอร์ด Arduino คุณสามารถดาวน์โหลดโค้ดทั้งหมดพร้อมไฟล์ HTML ได้จากที่นี่ “การ arduino_control.ino” รหัสได้ทำตามขั้นตอนสำคัญที่เกี่ยวข้องกับ
เริ่มแรกอัตราการส่งข้อมูลตั้งไว้ที่ 9600
Serial.begin (9600);
พอร์ตอนุกรมจะมองหาไบต์ขาเข้าเสมอและไบต์จะเขียนลงใน Pin 5 ซึ่งเป็นพิน PWM
ในขณะที่ (! Serial.available ()); analogWrite (5, Serial.read ());
แค่นั้นแหละ. สิ่งนี้จะตั้งค่า Arduino ให้สลักไบต์เป็นพินPWMและจะเปลี่ยนความสว่างของ LED
การตั้งค่า Web Interface:
เพื่อควบคุมความสว่างของนำใช้อินเตอร์เฟซเว็บหนึ่งชิ้นเล็ก ๆ ของโค้ด HTMLถูกเขียนไปยังมีอินเตอร์เฟซในเบราว์เซอร์ในการมีอินเทอร์เฟซให้ทำตามขั้นตอนง่ายๆด้านล่าง:
- สร้างโฟลเดอร์ใหม่ชื่อ"สาธารณะ"ภายในโฟลเดอร์"LED_Control" ที่สร้างขึ้นก่อนหน้านี้
- ตอนนี้ดาวน์โหลดไฟล์“ index.html”และ“ style.css”แล้วย้ายทั้งสองไฟล์ไปไว้ในโฟลเดอร์“ สาธารณะ” ที่สร้างขึ้นในขั้นตอนแรกด้านบน สามารถดาวน์โหลดไฟล์ได้จากที่นี่
สิ่งนี้จะสร้างแถบเลื่อนบนหน้าเว็บเพื่อควบคุมความสว่างของ LED โดยใช้ Node.js และ Arduino
การควบคุม LED จากหน้าเว็บเป็นสิ่งที่น่าสนใจในการเรียนรู้และสามารถทำได้กับไมโครคอนโทรลเลอร์อื่น ๆ โดยการสร้างเว็บเซิร์ฟเวอร์และโฮสต์หน้าเว็บบนเว็บเซิร์ฟเวอร์ ตรวจสอบโครงการที่เกี่ยวข้องกับเว็บเซิร์ฟเวอร์ทั้งหมดที่นี่
การเขียนโปรแกรม Node.js เพื่อควบคุมความสว่างของ LED:
ขั้นตอนต่อไปคือการเขียนร่าง“ bright_control.js ”โดยใช้ Node.js และเรียกใช้โค้ด การทำงานของโค้ดจะคล้ายกับการกะพริบของ LED พร้อม Node.js
ในการเขียนโปรแกรม Node.js ให้เปิดโปรแกรมแก้ไขข้อความใด ๆ (Notepad, Notepad ++ ฯลฯ) และวางโค้ด"bright_control" ที่แนบท้ายบทช่วยสอนนี้และบันทึกด้วยนามสกุล".js"เช่น (bright_control.js) ในโฟลเดอร์“ LED_Control” ที่สร้างขึ้นก่อนหน้านี้ คุณยังสามารถดาวน์โหลดโค้ดได้จากที่นี่
คล้ายกับโปรแกรม Blink Led Node.js ในส่วนนี้จะใช้โมดูล (ไลบรารี) ด้วย รวมโมดูล "express", "http" และ "serial port"
var express = ต้องใช้ ('ด่วน'); แอป = ด่วน (); เซิร์ฟเวอร์ = ต้องการ ('http'). createServer (แอป); io = ต้องใช้ ('socket.io') ฟัง (เซิร์ฟเวอร์); var SerialPort = ต้องใช้ ("serialport") //. SerialPort
ตั้งค่าพอร์ต COM และ baudrate โปรดทราบว่าใน windows จะเป็น COM ที่มีส่วนขยายของตัวเลข (COM6, COM4, COM24 เป็นต้น) เสมอดังนั้นให้ตั้งค่าด้านล่างตามต้องการหลัง '/' ตั้งค่า buadrate ด้วย
var serialPort = SerialPort ใหม่ ("/ COM4", {baudRate: 9600});
เริ่มฟังเซิร์ฟเวอร์ที่พอร์ต 8080
server.listen (8080);
ตั้งค่าความสว่างที่ 0 ในตอนแรก จากนั้นล็อกข้อมูลความสว่างกับ IO ด้วยโมดูลซ็อกเก็ตซึ่งเป็นโมดูล websocket ข้อมูลจะได้รับโดย Web Interface โดยใช้โปรโตคอลซ็อกเก็ต
io.sockets.on ('การเชื่อมต่อ', ฟังก์ชัน (ซ็อกเก็ต) { socket.on ('led', ฟังก์ชัน (ข้อมูล) { ความสว่าง = data.value; var buf = บัฟเฟอร์ใหม่ (1); buf.writeUInt8 (ความสว่าง, 0); serialPort.write (buf);
ตอนนี้ปล่อยค่าความสว่าง LED ที่ได้รับจากซ็อกเก็ตไปยังขา LED
io.sockets.emit ('led', {value: ความสว่าง}); }); socket.emit ('led', {value: ความสว่าง}); });
ตอนนี้เพียงเพื่อแก้จุดบกพร่องให้เพิ่มคำสั่งพิมพ์ในตอนท้าย Console.logเป็นคำสั่งการพิมพ์ใน Node.js
console.log ("เริ่มต้นเว็บเซิร์ฟเวอร์ไปที่ 'http: // localhost: 8080' ในเบราว์เซอร์ของคุณ");
ตอนนี้เพื่อเรียกใช้โปรแกรมโดยทำตามขั้นตอนด้านล่าง:
- เปิด Command Prompt
- ค้นหาโฟลเดอร์“ LED_Control”โดยทำตามคำสั่ง'cd'
- เรียกใช้คำสั่ง'Node bright_control.js' หากดำเนินการสำเร็จจะแสดง"Web Server เริ่มต้นไปที่" http: // localhost: 8080 "ในเบราว์เซอร์ของคุณ" เพียงด้านล่างคำสั่ง
- ไปที่เบราว์เซอร์ของคุณแล้วพิมพ์“ localhost: 8080” ใน url
- หากต้องการเปลี่ยนความสว่างเพียงแค่เลื่อนแถบเลื่อนจากค่า 0-255
รหัสที่สมบูรณ์และวิดีโอการทำงานของทั้งสองส่วนจะแนบมาด้านล่าง นอกจากนี้หากคุณมีข้อสงสัยหรือข้อเสนอแนะคุณสามารถติดต่อเราผ่านฟอรัมหรือแสดงความคิดเห็นด้านล่าง ไฟล์โค้ดทั้งหมดสามารถดาวน์โหลดได้จากที่นี่