- วัสดุที่จำเป็น
- การติดตั้ง Node.js บน Raspberry Pi
- ไฟ LED กะพริบโดยใช้ Node.js
- Node.js LED กะพริบสคริปต์และคำอธิบาย
- แผนภาพวงจรสำหรับการกะพริบ LED โดยใช้ Node.js
- ราสเบอร์รี่ Pi
ในบทเรียน Raspberry Pi ก่อนหน้านี้เราได้ใช้ภาษาการเขียนโปรแกรมและโปรแกรมต่างๆมากมายเพื่อควบคุม Raspberry Pi รวมถึง Python, Embedded C, Flask เป็นต้นเพื่อขยายขอบเขตของบอร์ด Raspberry Pi ที่มีประสิทธิภาพวันนี้เราจะใช้สภาพแวดล้อมที่ใช้ JavaScript (Node.js) เพื่อควบคุม Raspberry Pi GPIO ในพื้นที่และทั่วโลกโดยตั้งค่าเป็นเว็บเซิร์ฟเวอร์ เริ่มแรก Node.js ได้รับการพัฒนาสำหรับ Google Chrome แต่ต่อมา Google ได้รับการพัฒนาแบบโอเพนซอร์ส
ในบทช่วยสอนนี้เราจะควบคุม LED ที่เชื่อมต่อกับ Raspberry Pi โดยใช้สองวิธี
- ก่อนอื่นเราจะเขียนโค้ด JavaScript โดยใช้ Node.js เพื่อกะพริบ LED
- ในวิธีที่สองเราจะสร้างหน้า HTML มีสองปุ่มเพื่อเปิดและปิดไฟ LED หน้าเว็บ HTML นี้จะโฮสต์บน raspberry pi และสามารถเปิดได้บนเว็บเบราว์เซอร์ใดก็ได้ Raspberry Pi จะทำหน้าที่เป็นเว็บเซิร์ฟเวอร์
วัสดุที่จำเป็น
- บอร์ด Raspberry pi ที่ติดตั้ง Raspbian อยู่
- LED
ในบทช่วยสอนนี้ฉันใช้จอภาพภายนอกโดยใช้สาย HDMI เพื่อเชื่อมต่อกับ Raspberry Pi หากคุณไม่มีจอภาพคุณสามารถใช้ไคลเอนต์ SSH (Putty) หรือเซิร์ฟเวอร์ VNC เพื่อเชื่อมต่อกับ Raspberry pi โดยใช้แล็ปท็อปหรือคอมพิวเตอร์ หากคุณพบปัญหาใด ๆ ให้ทำตามการจ้องด้วย Raspberry Pi Guide ของเรา
การติดตั้ง Node.js บน Raspberry Pi
เราจะติดตั้ง Node.js ในบอร์ดของเราโดยใช้คำสั่งต่อไปนี้
ขั้นตอนที่ 1: -ขั้นแรกให้ตรวจสอบรุ่นแขนของบอร์ดราสเบอร์รี่ pi ของคุณโดยใช้คำสั่งนี้
uname -m
ในกรณีของฉันเวอร์ชันคือ 7
ขั้นตอนที่ 2: -ดาวน์โหลดตัวติดตั้งโดยคัดลอกลิงค์นี้ในเทอร์มินัล อย่าลืมเปลี่ยนเวอร์ชันในลิงค์ด้านล่างนี้
wget https://nodejs.org/dist/v4.6.1/node-v4.6.1-linux-armvl.tar.gz
ขั้นตอนที่ 3: -แตกไฟล์โดยใช้คำสั่งด้านล่าง
tar -xvf node-v4.6.1-linux-armvl.tar.gz
ขั้นตอนที่ 4: -สุดท้ายดำเนินการคำสั่งเหล่านี้เพื่อเพิ่มไฟล์สำคัญลงในไดเรกทอรีภายในเครื่องด้วย
ซีดีโหนด v4.3.1-linux-armvl sudo cp -R * / usr / local /
ตอนนี้ติดตั้ง Node.js ใน Raspberry Pi แล้ว ตรวจสอบเวอร์ชันของโหนดเพื่อยืนยันโดยใช้คำสั่งนี้
โหนด - เวอร์ชัน
ก่อนที่จะสร้างเซิร์ฟเวอร์ Node.js ก่อนอื่นเราจะมาดูวิธีการเขียนสคริปต์เพื่อกะพริบ LED โดยใช้ node.js (npm onoff package)
ไฟ LED กะพริบโดยใช้ Node.js
เพื่อควบคุม GPIO ในราสเบอร์รี่ Pi ใช้ Node.js เราจะใช้OnOff โมดูล
เราจะใช้ npm package managerเพื่อติดตั้งโมดูล onoff โดยใช้คำสั่งด้านล่าง
npm ติดตั้ง onoff
ตอนนี้เราจะเขียนสคริปต์สำหรับการกะพริบของ led เปิดตัวแก้ไข นาโน และตั้งชื่อไฟล์โดยใช้คำสั่ง
nano blink_led.js
หากคุณเป็นมือใหม่ใน Node.js และเป็นแพ็กเกจคุณสามารถจัดทำเอกสารของ npm เพื่อให้เข้าใจสคริปต์
Node.js LED กะพริบสคริปต์และคำอธิบาย
ขั้นแรกประกาศตัวแปรสำหรับ led ล่าช้าและ GPIO ฉันใช้ Raspberry Pi GPIO 4 เพื่อเชื่อมต่อ LED
var Gpio = ต้องใช้ ('onoff'). Gpio; var LED = Gpio ใหม่ (4, 'out'); var blinkInterval = setInterval (blinkLED, 500);
ตอนนี้เราจะทำให้ฟังก์ชั่นที่จะเริ่มต้นการกะพริบ
ฟังก์ชัน blinkLED () {if (LED.readSync () === 0) {LED.writeSync (1); // ตั้งค่าเอาต์พุตเป็น 1 เช่นเปิด led บน} else {LED.writeSync (0); // ตั้งค่าเอาต์พุตเป็น 0 เช่นปิด LED}}
ในทำนองเดียวกันให้สร้างฟังก์ชันเพื่อหยุดการกะพริบ
ฟังก์ชัน endBlink () {clearInterval (blinkInterval); LED.writeSync (0); LED.unexport (); // Unexport GPIO ไปยังแหล่งข้อมูลฟรี} setTimeout (endBlink, 10000);
รหัส Node.js ที่สมบูรณ์สำหรับ LED กะพริบจะได้รับในตอนท้ายของบทช่วยสอนนี้ ดังนั้นคัดลอกและวางโค้ดในไฟล์ led_blink.js ซึ่งเราได้สร้างไว้ก่อนหน้านี้โดยใช้คำสั่ง nano บันทึกไฟล์โดยใช้Ctrl + xจากนั้นกดYแล้วกดEnter
ในการรันสคริปต์ให้เปิดเทอร์มินัลแล้วพิมพ์คำสั่งด้านล่าง:
โหนด blink_led.js
คุณจะเห็นว่า LED จะกะพริบเป็นเวลา 10 วินาทีและหลังจากนั้นจะหยุดกะพริบ ตรวจสอบการทำงานทั้งหมดในวิดีโอที่ให้ไว้ในตอนท้ายของบทช่วยสอนนี้
แผนภาพวงจรสำหรับการกะพริบ LED โดยใช้ Node.js
ราสเบอร์รี่ Pi
ตอนนี้มาถึงส่วนที่น่าสนใจที่นี่เราจะสร้างเว็บเซิร์ฟเวอร์ของเราเองซึ่งเราสามารถควบคุม GPIO ของ Raspberry piโดยใช้หน้าเว็บ
สำหรับสิ่งนี้อันดับแรกเราต้องสร้างเพจ HTML และเขียนสคริปต์เพื่อทำงานแบ็คเอนด์เช่นควบคุม RPi GPIO
ขั้นตอนที่ 1: -สร้างไดเร็กทอรีเพื่อจัดเก็บไฟล์ทั้งหมดในที่เดียว
mkdir nodejs_server
ขั้นตอนที่ 2: -ภายในโฟลเดอร์ nodejs_server สร้างอีกหนึ่งโฟลเดอร์สำหรับบันทึกไฟล์ HTML
cd nodejs_server มุมมอง mkdir
ขั้นตอนที่ 3: -หากคุณต้องการเพิ่มรูปภาพในหน้า html ของคุณคุณควรสร้างโฟลเดอร์อื่นที่มีชื่อว่าสาธารณะภายในไดเร็กทอรีหลักเช่นในโฟลเดอร์ nodejs_server ในโฟลเดอร์สาธารณะสร้างโฟลเดอร์รูปภาพและเก็บภาพทั้งหมดไว้ในโฟลเดอร์นี้
ขั้นตอนที่ 4: -ตอนนี้เราจะสร้างหน้า HTML สำหรับสิ่งนี้ไปที่ไดเรกทอรีมุมมองและเปิดโปรแกรมแก้ไขข้อความ นาโน ด้วยชื่อไฟล์ index.ejs
ไม่มีอะไรแฟนซีในบท มันเป็นเพียงไฟล์ HTML เพื่อให้เปิดและปิดปุ่ม
คัดลอกวางโค้ด HTML ด้านล่างในโปรแกรมแก้ไขข้อความ นาโน แล้วบันทึก
ยินดีต้อนรับสู่ Nodejs Server
สถานะ LED: <% = status%>ขั้นตอนที่ 5: -ตอนนี้เราต้องเขียนโค้ด JavaScript เรากำลังใช้ node express framework เพื่อตอบสนองคำขอ http ที่ดำเนินการโดยผู้ใช้
คุณสามารถไปที่ลิงค์เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับ Node Express
เปิดเทอร์มินัลและเปิดโปรแกรมแก้ไขข้อความ นาโน ด้วยชื่อไฟล์index.jsในโฟลเดอร์ nodejs_server จากนั้นคัดลอกและวางโค้ด java ด้านล่างและไฟล์นี้
var express = ต้องใช้ ('ด่วน'); var app = ด่วน (); var path = ต้องใช้ ('path'); var gpio = ต้องการ ('rpi-gpio'); gpio.setup (7, gpio.DIR_OUT); app.set ('ดูเอ็นจิ้น', 'ejs'); app.use (express.static (path.join (__ dirname, 'public'))); console.log (path.join (__ dirname 'สาธารณะ')); app.get ('/', function (req, res) { res.render ('index', {status: "Press Button"}); }); app.post ('/ led / on', ฟังก์ชัน (req, res) { gpio.write (7, true, function (err) { if (err) throw err; console.log ('Written True to pin'); console.log (path.join (__ dirname, 'public')); ส่งคืน res.render ('index',{status: "Led is On"}); }); }); app.post ('/ led / off', ฟังก์ชัน (req, res) { gpio.write (7, false, function (err) { if (err) throw err; console.log ('Written False to pin'); console.log (path.join (__ dirname, 'public')); return res.render ('index', {status: "Led is Off"}); }); }); app.listen (3000, ฟังก์ชัน () { console.log ('เซิร์ฟเวอร์เริ่มต้นที่พอร์ต: 3000!') })
ขั้นตอนที่ 6: -ภายในไดเร็กทอรี nodejs_server เราต้องดำเนินการคำสั่งต่อไปนี้เพื่อติดตั้งไลบรารีของ node.js
npm ติดตั้ง
ขั้นตอนที่ 7: -ตอนนี้เซิร์ฟเวอร์ของคุณพร้อมทำงานแล้ว ในการเริ่มต้นเซิร์ฟเวอร์ภายในให้รันคำสั่งต่อไปนี้ภายในไดเร็กทอรี nodejs_server
โหนด index.js
คุณจะเห็นข้อความในเทอร์มินัลว่าเซิร์ฟเวอร์ของคุณเริ่มต้นที่พอร์ตที่กำหนด
ขั้นตอนที่ 8: -ตอนนี้เปิดเบราว์เซอร์ของคุณและเปิด Raspberry Pi URL ด้วยหมายเลขพอร์ตเช่นraspberrypi: 3000
ตรวจสอบให้แน่ใจว่าราสเบอร์รี่ pi และแล็ปท็อปที่คุณเปิดเบราว์เซอร์เชื่อมต่อกับเครือข่ายเดียวกัน
คุณจะเห็นหน้าต่อไปนี้ในเบราว์เซอร์
ตอนนี้กดปุ่ม LED On เพื่อเปิด LED และปุ่ม ปิด LED เพื่อปิด LED