Node.js Raspberry Pi GPIO - Đèn LED nhấp nháy
Sử dụng GPIO cho đầu ra
Trong chương này, chúng ta sẽ sử dụng Raspberry Pi và GPIO của nó để tạo ra đèn LED nhấp nháy.
Chúng tôi sử dụng Node.js với mô-đun bật tắt để điều khiển GPIO.
Để bật đèn LED, chúng tôi sử dụng chân GPIO làm "Đầu ra" và tạo tập lệnh để bật và tắt (nhấp nháy).
Chúng ta cần gì?
Trong chương này chúng ta sẽ tạo một ví dụ đơn giản để điều khiển đèn LED.
Đối với điều này bạn cần:
- Một Raspberry Pi có Raspian, internet, SSH, đã cài đặt Node.js
- Mô-đun bật tắt cho Node.js
- 1 x Bảng mạch
- Điện trở 1 x 68 Ohm
- 1 x Đèn LED xuyên lỗ
- 2 x dây nhảy từ cái sang đực
Nhấp vào các liên kết trong danh sách ở trên để xem mô tả về các thành phần khác nhau.
Lưu ý: Điện trở bạn cần có thể khác với điện trở chúng tôi sử dụng tùy thuộc vào loại đèn LED bạn sử dụng. Hầu hết các đèn LED nhỏ chỉ cần một điện trở nhỏ, khoảng 200-500 ohm. Nói chung, giá trị chính xác bạn sử dụng không quan trọng, nhưng giá trị của điện trở càng nhỏ thì đèn LED sẽ càng sáng.
Xây dựng mạch
Bây giờ là lúc xây dựng mạch trên Breadboard của chúng ta.
Nếu bạn chưa quen với thiết bị điện tử, chúng tôi khuyên bạn nên tắt nguồn cho Raspberry Pi. Và sử dụng thảm chống tĩnh điện hoặc dây nối đất để tránh làm hỏng nó.
Tắt Raspberry Pi đúng cách bằng lệnh:
pi@w3demopi:~ $ sudo shutdown -h now
Sau khi đèn LED ngừng nhấp nháy trên Raspberry Pi, hãy rút phích cắm nguồn ra khỏi Raspberry Pi (hoặc tắt dải nguồn mà nó được kết nối).
Chỉ cần rút phích cắm mà không tắt đúng cách có thể gây hỏng thẻ nhớ.
Nhìn vào hình minh họa ở trên của mạch.
- Trên Raspberry Pi, kết nối chân cái của dây nhảy đầu tiên với Ground . Bạn có thể sử dụng bất kỳ chân GND nào. Trong ví dụ này, chúng tôi sử dụng Chân vật lý 9 ( GND , hàng 5, cột bên trái)
- Trên Breadboard, nối chân đực của dây nhảy đầu tiên vào cột Ground Bus ở bên phải. Toàn bộ cột của bảng mạch của bạn được kết nối, do đó, hàng nào không quan trọng. Trong ví dụ này chúng tôi đã đính kèm nó vào hàng 1
- Trên Raspberry Pi, kết nối chân cái của cáp nhảy thứ hai với chân GPIO . Trong ví dụ này, chúng tôi sử dụng Chân vật lý 7 ( GPIO 4 , hàng 4, cột bên trái)
- Trên Breadboard, nối chân đực của dây nhảy thứ hai với hàng Tie-Point mà bạn chọn. Trong ví dụ này, chúng tôi đã kết nối nó với hàng 5, cột A
- Trên Breadboard, kết nối một chân của điện trở với cột Ground Bus ở phía bên phải. Toàn bộ cột của bảng mạch của bạn được kết nối, do đó, hàng nào không quan trọng. Trong ví dụ này chúng tôi đã gắn nó vào hàng 5
- Trên Breadboard, kết nối chân còn lại của điện trở với hàng Tie-Point bên phải mà bạn chọn. Trong ví dụ này chúng tôi đã sử dụng hàng 5, cột J
- Trên Breadboard, kết nối chân cực âm (chân ngắn nhất) của đèn LED với cùng hàng Tie-Point mà bạn đã kết nối điện trở từ GND tới. Trong ví dụ này chúng tôi sử dụng hàng 5, cột F
- Trên Breadboard, kết nối chân anode (chân dài nhất) của đèn LED với cùng hàng Tie-Point mà bạn đã kết nối jumper từ chân GPIO tới. Trong ví dụ này chúng tôi sử dụng hàng 5, cột E
Mạch của bạn bây giờ đã hoàn tất và các kết nối của bạn sẽ trông khá giống với hình minh họa ở trên.
Bây giờ là lúc khởi động Raspberry Pi và viết tập lệnh Node.js để tương tác với nó.
Tập lệnh LED nhấp nháy của Raspberry Pi và Node.js
Bây giờ chúng ta đã thiết lập xong mọi thứ, chúng ta có thể viết một đoạn script để bật và tắt đèn LED.
Bắt đầu bằng cách tạo một thư mục nơi chúng ta có thể lưu giữ các tập lệnh Node.js của mình:
pi@w3demopi:~ $ mkdir nodetest
Chuyển đến thư mục mới của chúng tôi:
pi@w3demopi:~ $ cd nodetest
Bây giờ chúng ta sẽ tạo một tệp mới có tên " blink.js
" bằng Nano Editor:
pi@w3demopi:~ $ nano blink.js
Tệp hiện đã mở và có thể được chỉnh sửa bằng Nano Editor tích hợp.
Viết hoặc dán đoạn mã sau:
chớp mắt.js
var Gpio = require('onoff').Gpio; //include onoff to interact with the GPIO
var LED = new Gpio(4, 'out');
//use GPIO pin 4, and specify that it is output
var
blinkInterval = setInterval(blinkLED, 250); //run the blinkLED function every
250ms
function blinkLED() { //function to start blinking
if (LED.readSync() ===
0) { //check the pin state, if the state is 0 (or off)
LED.writeSync(1);
//set pin state to 1 (turn LED on)
} else {
LED.writeSync(0);
//set pin state to 0 (turn LED off)
}
}
function endBlink()
{ //function to stop blinking
clearInterval(blinkInterval); // Stop blink intervals
LED.writeSync(0); // Turn LED off
LED.unexport(); // Unexport GPIO
to free resources
}
setTimeout(endBlink, 5000); //stop blinking
after 5 seconds
Nhấn " Ctrl+x
" để lưu mã. Xác nhận bằng " y
" và xác nhận tên bằng " Enter
".
Chạy mã:
pi@w3demopi:~ $ node blink.js
Bây giờ đèn LED sẽ nhấp nháy trong 5 giây (10 lần) trước khi tắt lại!