CHƯƠNG 3: THIẾT KẾ HỆ THỐNG ĐIỀU KHIỂN
3.3. Lập trình điều khiển
3.3.1. Lập trình cho Raspberry Pi 3
Để cài đặt hệ điều hành raspbian cho Raspberry Pi, chúng ta cần:
o Phần mềm Win32 Disk Imager (WDI) hoặc phần mềm tương tự o Một thẻ nhớ MicroSD tối thiểu 4GB.
Các bước cài đặt hệ điều hành cho Raspberry Pi:
Bước 1: Chèn thẻ MicroSD vào đầu đọc thẻ ở máy tính và kiểm tra tên ổ được gán cho thẻ nhớ (ví dụ ổ H:), tránh nhầm ổ dẫn đến mất dữ liệu vì phần mềm sẽ format thẻ.
Bước 2: Mở phần mềm Win32DiskImager, phần mềm này chỉ cần download về rồi chạy mà không cần cài đặt.
Bước 3: Lựa chọn file hệ điều hành đã tải về.
Lưu ý, hệ điều hành cần phải ở định dạng .img. Thông thường, hệ điều hành của RPI được nén dưới dạng .zip hoặc .tar.gz,… Khi tải về chúng ta cần giải nén nó ra để có file hệ điều hành dạng .img). Sau đó lựa chọn ổ thẻ nhớ cần ghi.
Link tải hệ điều hành cho raspberry: http://www.raspberrypi.org/downloads/
Bước 4: Bấm Write và chờ đợi quá trình ghi hoàn tất.
b) Kết nối rapberry với máy tính qua Secure Shell (SSH)
SSH – Secure Shell là một giao thức mạng thuộc lớp Ứng dụng trong mô hình 7 lớp OSI, sử dụng cho việc giao tiếp được mã hóa an toàn giữa các thiết bị mạng. Mặc định các phiên bản Linux của Raspberry Pi có chạy một SSH server (OpenSSH SSHD trên raspbian) thông qua port logic 22, trong khi thực hiện Configure chúng ta có thể Enable/Disable remote command line access to your Pi using SSH, đồng nghĩa với việc bạn chấp nhận hoặc không chấp nhận cho SSHD server này hoạt động trên hệ điều hành rasbian của Raspberry Pi.
Hướng dẫn sử dụng SSH trong window với SSH Client Putty Bước 1: Bật PuTTY
Bước 2: Điền các thông số cơ bản
o Chọn Connection type: giao thức SSH o Chọn Port logic: 22
o Thực hiện điền Host name hoặc IP address, ví dụ: 192.168.9.24 IP của Pi có thể tìm bằng các phần mềm tìm kiếm ip như ipscan.
o Đặt tên cho liên kết trong mục Saved Sessions , ví dụ : MyHome_Pi Chọn Save để lưu các thông số đã thiết lập.
Bước 3: Mở liên kết và truy cập vào SSH Server.
o Chọn Open để mở liên kết
Nhập Username: pi ; và Password để truy nhập vào Raspberry Pi
Hình 3.14 Cài đặt Putty
Hình 3.15 Giao diện Linux trên Raspberry c) Cài đặt MJPG-streamer
MJPG-streamer là một ứng dụng dòng lệnh có thể được sử dụng để truyền các file JPEG trên một mạng IP dựa trên từ một webcam để một người xem như Firefox, Cambozola, Videolanclient hoặc thậm chí đến một thiết bị Windows Mobile chạy TCPMP-Player.
MJPG-streamer được viết cho các thiết bị nhúng với nguồn tài rất hạn chế về bộ nhớ RAM và CPU. Quyết định cho Linux-UVC đã được thực hiện, bởi vì máy ảnh hỗ trợ trực tiếp sản xuất JPEG dữ liệu, cho phép nhanh chóng và perfomant M-JPEG suối và thậm chí từ một thiết bị nhúng chạy OpenWRT.
Hướng dẫn cài dặt MJPG-streamer:
Bước 1: Tải những thư viện cần thiết Lệnh: sudo apt-get install libjpeg8-dev sudo apt-get install imagemagick Bước 2: Tải project về từ Github:
Lệnh: git clone https://github.com/jacksonliam/mjpg-streamer
Bước 3: Đăng nhập vào thư mục mjpg-streaner/mjpg-streamer- experimental
Lệnh: cd mjpg-streaner/mjpg-streamer-experimental Bước 4: Build
Lệnh: sudo make Quá trình cài đặt hoàn tất.
Hình 3.16 giao diện MJPG-Steamer
d) Cài đặt Nodejs
Node.js là một nền tảng dựa vào Chrome Javascript runtime để xây dựng các ứng dụng nhanh, có độ lớn. Node.js sử dụng các phần phát sinh các sự kiện (event- driven), mô hình non-blocking I/O để tạo ra các ứng dụng nhẹ và hiệu quả cho các ứng dụng về dữ liệu thời gian thực chạy trên các thiết bị phân tán.
Hướng dẫn cài đặt và làm việc với Node.js cho Raspberry Pi Bước 1: Cài đặt Node.js
wget https://nodejs.org/dist/v4.0.0/node-v4.0.0-linux-armv7l.tar.gz tar -xvf node-v4.0.0-linux-armv7l.tar.gz
cd node-v4.0.0-linux-armv7l sudo cp -R * /usr/local Bước 2: Tạo dự án
mkdir ~/rovserver cd ~/ rovserver mkdir public Bước 3: Cài đặt thư viện
npm install express npm install socket.io npm install serialport
Sau khi lập trình để chạy chương trình sử dụng lệnh node file-lập-trình.js
Hình 3.17 Giao diện điều khiển sau khi lập trình
e) Thuật toán điều khiển
f) Lập tình tập tin trung tâm của nền tảng node var express = require('express');
app = express();
server = require('http').createServer(app);
io = require('socket.io').listen(server);
var SerialPort = require("serialport").SerialPort
var serialPort = new SerialPort("/dev/ttyACM0", { baudrate: 9600, parser:
SerialPort.parsers.readline('\n') });
server.listen(8080);
app.use(express.static('public'));
//var giatri = 0;
serialPort.on('data', function (data) {
console.log('Data: ' + data);
var res = data.split(":");
io.sockets.emit(res[0], {value: res[1]});;
console.log('Lenh: ' + res[0]+" giatri:"+res[1]);
});
io.sockets.on('connection', function (socket) { socket.on('led', function (data) {
var giatri = data.flag;
var lenh = data.value
serialPort.write(lenh+":"+giatri+'/n');
io.sockets.emit('led', {value: giatri, flag: lenh});;
});
});
console.log("running");