- Vật liệu thiết yếu
- Cài đặt Node.js trên Raspberry Pi
- Nhấp nháy đèn LED bằng Node.js
- Giải thích và tập lệnh nhấp nháy LED của Node.js
- Sơ đồ mạch để nhấp nháy đèn LED bằng Node.js
- Raspberry Pi
Trong các Hướng dẫn Raspberry Pi trước, chúng tôi đã sử dụng nhiều ngôn ngữ lập trình và phần mềm khác nhau để điều khiển Raspberry Pi bao gồm Python, nhúng C, Flask, v.v. Để mở rộng chân trời của bảng Raspberry Pi mạnh mẽ, hôm nay chúng ta sẽ sử dụng một môi trường dựa trên JavaScript rất phổ biến (Node.js) để kiểm soát các GPIO của Raspberry Pi tại địa phương cũng như trên toàn cầu bằng cách thiết lập nó làm máy chủ web. Ban đầu, Node.js được phát triển cho Google Chrome nhưng sau đó nó đã được Google chuyển sang nguồn mở.
Trong hướng dẫn này, chúng tôi sẽ điều khiển đèn LED, được kết nối với Raspberry Pi, sử dụng hai phương pháp
- Đầu tiên, chúng tôi sẽ viết một mã JavaScript đơn giản bằng cách sử dụng Node.js để nhấp nháy đèn LED
- Trong phương pháp thứ hai, chúng ta sẽ tạo một trang HTML với hai nút để bật và tắt đèn LED. Trang web HTML này sẽ được lưu trữ trên raspberry pi và có thể được mở trên bất kỳ trình duyệt web nào. Vì vậy, ở đây Raspberry Pi sẽ hoạt động như một máy chủ web
Vật liệu thiết yếu
- Bảng Raspberry pi với Raspbian được cài đặt trong đó
- Đèn LED
Trong hướng dẫn này, tôi đang sử dụng Màn hình ngoài bằng cáp HDMI để kết nối với Raspberry Pi. Nếu không có màn hình, bạn có thể sử dụng máy khách SSH (Putty) hoặc máy chủ VNC để kết nối với Raspberry pi bằng Laptop hoặc máy tính. Nếu bạn thấy khó khăn, hãy làm theo Hướng dẫn Bắt đầu với Raspberry Pi của chúng tôi.
Cài đặt Node.js trên Raspberry Pi
Chúng tôi sẽ cài đặt Node.js trong bảng của chúng tôi bằng các lệnh sau.
Bước 1: - Đầu tiên hãy kiểm tra phiên bản cánh tay của bảng pi raspberry của bạn bằng lệnh này.
uname -m
Trong trường hợp của tôi, phiên bản là 7.
Bước 2: - Tải xuống trình cài đặt bằng cách sao chép liên kết này trong thiết bị đầu cuối. Đừng quên thay đổi phiên bản trong liên kết dưới đây.
wget https://nodejs.org/dist/v4.6.1/node-v4.6.1-linux-armvl.tar.gz
Bước 3: - Giải nén các tập tin bằng lệnh dưới đây
tar -xvf node-v4.6.1-linux-armvl.tar.gz
Bước 4: - Cuối cùng, thực hiện các lệnh này để thêm các tệp quan trọng vào thư mục cục bộ.
cd node-v4.3.1-linux-armvl sudo cp -R * / usr / local /
Node.js hiện đã được cài đặt trong Raspberry Pi của bạn. Kiểm tra phiên bản của nút để xác nhận bằng lệnh này.
nút –version
Trước khi tạo một máy chủ Node.js, trước tiên chúng ta sẽ xem cách viết một script để nhấp nháy đèn LED bằng cách sử dụng node.js (gói npm onoff).
Nhấp nháy đèn LED bằng Node.js
Để điều khiển GPIO trên Raspberry Pi bằng Node.js, chúng tôi sẽ sử dụng mô-đun onoff.
Chúng tôi sẽ sử dụng NPM quản lý gói để cài đặt ONOFF mô-đun sử dụng dưới lệnh
npm cài đặt onoff
Bây giờ, chúng ta sẽ viết một kịch bản cho nhấp nháy của đèn led. Mở trình chỉnh sửa nano và đặt tên cho tệp bằng lệnh
nano flash_led.js
Nếu bạn là người mới bắt đầu sử dụng Node.js và nó là các gói, bạn có thể xem tài liệu về npm để hiểu rõ hơn về tập lệnh.
Giải thích và tập lệnh nhấp nháy LED của Node.js
Đầu tiên, khai báo các biến cho led, delay và GPIO. Tôi đang sử dụng Raspberry Pi GPIO 4 để kết nối đèn LED.
var Gpio = Required ('onoff'). gpio; var LED = new Gpio (4, 'out'); var flashInterval = setInterval (flashLED, 500);
Bây giờ, chúng ta sẽ tạo một hàm để bắt đầu nhấp nháy.
function flashLED () {if (LED.readSync () === 0) {LED.writeSync (1); // đặt đầu ra là 1 tức là bật led} else {LED.writeSync (0); // đặt đầu ra thành 0 tức là tắt led }}
Tương tự, tạo một chức năng để dừng nhấp nháy
hàm endBlink () {clearInterval (flashInterval); LED.writeSync (0); LED.unexport (); // Bỏ xuất GPIO thành tài nguyên miễn phí} setTimeout (endBlink, 10000);
Mã Node.js hoàn chỉnh cho đèn LED nhấp nháy được đưa ra ở cuối hướng dẫn này. Vì vậy, sao chép và dán mã vào tệp led_blink.js , mà chúng tôi đã tạo trước đó bằng lệnh nano , lưu tệp bằng Ctrl + x, sau đó nhấn Y và nhấn Enter.
Để chạy script, hãy mở terminal và nhập lệnh dưới đây:
nút flash_led.js
Bạn sẽ thấy đèn LED đó sẽ nhấp nháy trong 10 giây và sau đó nó ngừng nhấp nháy. Kiểm tra hoạt động hoàn chỉnh trong Video được cung cấp ở cuối hướng dẫn này.
Sơ đồ mạch để nhấp nháy đèn LED bằng Node.js
Raspberry Pi
Bây giờ, đến với phần thú vị, ở đây chúng ta sẽ tạo một máy chủ web của riêng mình mà từ đó chúng ta có thể điều khiển GPIO của Raspberry pi bằng cách sử dụng một trang web.
Đối với điều này, trước tiên chúng ta cần tạo một trang HTML và viết một tập lệnh để thực hiện tác vụ back-end, tức là để điều khiển RPi GPIO.
Bước 1: - Tạo một thư mục để lưu trữ tất cả các tập tin tại một nơi.
mkdir nodejs_server
Bước 2: - Bên trong thư mục nodejs_server, tạo thêm một thư mục để lưu tệp HTML.
cd nodejs_server lượt xem mkdir
Bước 3: - Nếu bạn muốn thêm hình ảnh vào trang html của mình, thì bạn nên tạo một thư mục khác có tên public bên trong thư mục chính tức là trong thư mục nodejs_server . Trong thư mục chung, tạo thư mục hình ảnh và lưu trữ tất cả hình ảnh trong thư mục này.
Bước 4: - Bây giờ, chúng ta sẽ tạo trang HTML. Đối với điều này, hãy chuyển đến thư mục views và mở trình soạn thảo văn bản nano với tên tệp index.ejs
Không có gì lạ mắt trong kịch bản. Nó chỉ là một tệp HTML để tạo nút Bật và Tắt.
Sao chép, dán mã HTML bên dưới vào trình soạn thảo văn bản nano và lưu nó.
Chào mừng bạn đến với Máy chủ Nodejs
Trạng thái Led: <% = status%>Bước 5: - Bây giờ, chúng ta phải viết mã JavaScript. Chúng tôi đang sử dụng khuôn khổ node express để phản hồi các yêu cầu http do người dùng thực hiện.
Bạn có thể theo liên kết để tìm hiểu thêm về Node Express.
Mở terminal và mở trình soạn thảo văn bản nano với tên tệp index.js trong thư mục nodejs_server , sau đó sao chép và dán mã tập lệnh java bên dưới và tệp này.
var express = request ('express'); var app = express (); var path = request ('path'); var gpio = Required ('rpi-gpio'); gpio.setup (7, gpio.DIR_OUT); app.set ('công cụ xem', 'ejs'); app.use (express.static (path.join (__ dirname, 'public'))); console.log (path.join (__ dirname, 'public')); app.get ('/', function (req, res) { res.render ('index', {status: "Press Button"}); }); app.post ('/ led / on', function (req, res) { gpio.write (7, true, function (err) { if (err) throw err; console.log ('Được viết Đúng thành pin'); console.log (path.join (__ dirname, 'public'))); return res.render ('index',{status: "Led is On"}); }); }); app.post ('/ led / off', function (req, res) { gpio.write (7, false, function (err) { if (err) throw err; console.log ('Viết sai thành ghim'); console.log (path.join (__ dirname, 'public'))); return res.render ('index', {status: "Led is Off"}); }); }); app.listen (3000, function () { console.log ('Máy chủ đã khởi động trên cổng: 3000!') })
Bước 6: - Bên trong thư mục nodejs_server , chúng ta phải thực hiện lệnh sau để cài đặt các thư viện của node.js
cài đặt npm
Bước 7: - Bây giờ, máy chủ của bạn đã sẵn sàng hoạt động. Để khởi động máy chủ cục bộ, hãy chạy lệnh sau bên trong thư mục nodejs_server
node index.js
bạn sẽ thấy một thông báo trong thiết bị đầu cuối rằng máy chủ của bạn được khởi động tại cổng đã xác định.
Bước 8: - Bây giờ mở trình duyệt của bạn và mở URL Raspberry Pi với số cổng tức là raspberrypi: 3000
Đảm bảo rằng raspberry pi và máy tính xách tay bạn đang mở trình duyệt được kết nối với cùng một mạng.
Bạn sẽ thấy trang sau trong trình duyệt.
Bây giờ, nhấn nút LED On để bật đèn LED và nút LED Off để tắt đèn LED.