[Intel Galileo] Vài mẹo với Intel Galileo và hệ điều hành Linux Yocto (iot-devkit)

Trên đây là một số mẹo nhỏ giúp bạn có thể làm việc hiệu quả hơn với hệ điều hành Linux Yocto (iot-devkit) trên Galileo mà mình đã tìm hiểu được. Bài viết này cũng tổng hợp lại các bài viết trước đó đã được đăng tại Arduino.vn

Bạn có thể xem hướng dẫn cài bản Linux Yocto (iot-devkit) của mình tại bài viết Cài đặt Linux Yocto (iot-devkit) lên Intel Galileo

Bài viết sẽ tiếp tục được cập nhật trong thời gian tới. Chúc các bạn dự thi Young Makers Challenge 2015 hên xui, à ý mình là may mắn :v

Cũng chúc các bạn dự thi Tin học trẻ toàn quốc 2015 bảng E3 - Lập trình trên Intel Galileo thắng lợi :v

1. Truy cập vào Linux console

Cách 1: Sử dụng Serial Monitor trên IDE để làm việc trực tiếp

Cách này có thể dùng được cho cả 2 board Galileo Gen 1 và Gen 2

Đầu tiên, bạn cần upload sketch có tên là Poor Man's Telnet lên board sử dụng IntelGalileo IDE có sẵn.

Sau đó mở Serial Monitor lên và làm việc với console.

Chú ý

Một số lệnh đòi hỏi phải sử dụng giao diện đồ hoạ trên console như: top, htop, nano, vim,... sẽ không làm việc được. Nếu bạn lỡ chạy một lệnh như htop (giống Task Manager trong Windows), bạn sẽ phải khởi động lại board Galileo nếu không muốn Serial Monitor của mình tràn ngập output của nó :D

Cách 2: Sử dụng cổng Serial /dev/ttyS1 trên board (nằm cạnh cổng Ethernet)

  • Với board Galileo Gen1, các bạn có thể tham khảo bài viết "Độ hoàn toàn" một cổng Terminal RS-232 mà không sử dụng jack 3.5mm, chất lượng đồ hoạ hơi thấp :D
  • Với board Galileo Gen2, các bạn có thể sử dụng các loại mạch chuyển USB to TTL Serial để kết nối máy tính của mình với board Galileo. Bằng cách này, bạn có thể theo dõi các thông báo trạng thái của Galileo từ lúc nó mới khởi chạy bootloader, các dịch vụ cơ bản,... đến khi xuất hiện màn hình đăng nhập, rất tuyệt vời cho việc debug.

Mạch PL2303HXD USB to Serial Breakout

Mạch PL2303HXD

PL2303HXD  Galileo Gen 2
GND GND
RTS RTS
CTS CTS
TXD RXI
RXD TXO

Sơ đồ nối dây

Khi kết nối với máy tính, các bạn có thể dùng những phần mềm telnet client như PuTTY để mở kết nối. Chú ý chọn đúng cổng kết nối.

Download PuTTY tại đây

Dây USB  PL2303HX

Dây USB PL2303HX

PL2303HX Galileo Gen2
TXD RXI
RXD TXO
GND GND

Sơ đồ nối dây

Các bạn cũng sử dụng PuTTY để kết nối như ở trên.

Cách 3: Truy cập qua cổng Ethernet bằng SSH

Cách này có thể sử dụng được cho cả 2 board Galileo Gen 1 và Gen 2. 

Đầu tiên, bạn cần kết nối Galieo vào một mạng LAN (kết nối với Router, Switch,...) bằng cổng Ethernet. Máy tính của bạn cũng phải nằm trong mạng này. Cách truy cập này thường chậm và hay bị lag hơn cách dùng cổng Serial trên board.

Sau đó, bạn phải xác định được địa chỉ IP của board Galileo trong mạng LAN. Bạn có thể vào thẳng Router trong mạng để xem IP của board. Board Galileo có hostname mặc định là galileo

Hoặc sử dụng một sketch đơn giản được upload thông qua ArduinoIntel IDE sau.

void setup() 
{
    Serial.begin(115200);
    system("ifconfig > /dev/ttyGS0");
}

void loop() 
{
}

Mở Serial Monitor, sau đó bấm nút RESET trên board Galileo để xem địa chỉ IP.

Sau khi đã lấy được IP, sử dụng PuTTY để kết nối với board Galileo qua SSH. Cổng SSH mặc định là 22, tên đăng nhập vào Linux console mặc định là root. Không yêu cầu password.

Chia sẻ

Mình thường hay sử dụng một Portable Router là TP-Link MR3040 để truy cập vào Linux console của Galileo bằng cổng Ethernet. Máy tính (dùng PuTTY) hoặc điện thoại Android của mình (dùng JuiceSSH) với kết nối wifi với Router có thể truy cập rất dễ dàng (hoàn toàn không dây, tiết kiệm không gian nhé), không bị lag.

2. Chuyển dữ liệu giữa máy tính và Galileo

Mình sử dụng File Zilla để chuyển file (hoặc nguyên một thư mục) qua lại giữa máy tính. Cài đặt tương tự như khi vào console của Galileo qua SSH.

Bạn có thể chuyển các file qua lại giữa máy tính và Galileo bằng cách kéo thả chúng qua lại giữa 2 cửa sổ Local site và Remote Site. Bạn cũng có thể sửa file trực tiếp trên Remote site (thực ra thì file này được tải về máy bạn và lưu trong một thư mục tạm, sau khi thay đổi hoàn tất, nó sẽ được upload trở lên lại).

3. Cập nhật software cho bản Linux Yocto

Trên bản Linux Yocto này chỉ có duy nhất một package manager mặc định là opkg. Cách sử dụng nó tương tự như các package manager khác như apt-get, apptitute, yum,...

Dĩ nhiên là để cập nhật được, bạn phải gắn dây mạng cho Galileo :D

Cập nhật repository list.

opkg update

Cập nhật toàn bộ software. Lệnh này có thể mất đến 30 phút tuỳ đường truyền mạng và tốc độ đọc ghi của thẻ nhớ. 

opkg upgrade

Cài đặt một số software phổ biến

opkg install htop nano

Trong đó

  • htop - Được xem như là Task Manager trên Linux
  • nano - Trình soạn thảo văn bản trên command-line (dễ xài).

Bạn có thể tự cài thêm các package khác như opencv, alsa,... nếu cần.

4. Cài đặt các software không được package manager hỗ trợ

Ở đây mình sẽ tiến hành cài đặt pyserial-2.7 - một thư viện cho Python giúp nó sử dụng giao tiếp UART.

Đầu tiên là download gói pyserial-2.7

curl -O https://pypi.python.org/packages/source/p/pyserial/pyserial-2.7.tar.gz

Bạn có thể dùng lệnh wget để tải một file như trên, tuy nhiên wget lại không hỗ trợ giao thức HTTPS tốt bằng curl

Giải nén file vừa tải về

tar -xvzf pyserial-2.7.tar.gz

Chạy lệnh cài đặt

python pyserial-2.7/setup.py install

Đối với một số package yêu cầu phải compile mã nguồn C, bạn chạy các lệnh sau

./configure
make
make install

5. Xem nhiệt độ CPU

Nhiệt độ CPU Quark X1000 của Galileo được lưu tại file /sys/class/thermal/thermal_zone0/temp. Để xem nhanh nội dung file này, bạn có thể dùng lệnh cat

cat /sys/class/thermal/thermal_zone0/temp

CPU đang ở 67oC

Nhiệt độ ở đây được tính theo độ C (về mặt hình thức thì là milioC). Do vậy bạn sẽ không bao giờ thấy những output kiểu như 67001 :D

6. Dịch và chạy một file viết bằng C/C++

Trên bản Linux Yocto này có hỗ trợ sẵn compiler cho C/C++ là gcc. Để compile một file C/C++, bạn chạy lệnh sau

gcc hello.cpp -o hello

Chạy file

./hello

7. Quản lí các kết nối Internet

Bạn sẽ không tìm thấy file /etc/network/interfaces trên bản Linux Yocto này :D Thay vào đó, Intel cho bạn một package là connman để để quản lí các kết nối

Xem các kết nối hiện tại

connmanctl technologies

Xem hướng dẫn sử dụng

connmanctl --help

8. Xem thông tin về hệ thống

Chạy lệnh sau để xem toàn bộ thông tin

uname -a

Bạn có thể xem thông tin về từng phần riêng rẽ như:

  • Xem phiên bản kernel: 
    uname -r
  • Xem phiên bản hệ điều hành: 
    uname -o
  • Xem hostname 

    uname -n

9. Xem danh sách các thiết bị USB đang kết nối

Chạy lệnh

lsusb

10. Xem danh sách PCI BUS

Chạy lệnh

lspci

11. Liệt kê các partition

Chạy lệnh

lsblk

12. Xem dung lượng partition và dung lượng còn trống

Chạy lệnh

df

13. Kiểm tra tình trạng sử dụng RAM, swap

Chạy lệnh

free -m

Chạy lệnh sau để xem thông tin đầy đủ hơn

cat /proc/meminfo

14. Xem CPU Load

Chạy lệnh

cat /proc/loadavg

14. Xem thời gian hệ thống đã chạy

Chạy lệnh

cat /proc/uptime

  • Số đầu tiên cho thấy thời gian (tính bằng giây) hệ thống được khởi chạy
  • Số thứ hai là thời gian (tính bằng giây) CPU ở trạng thái rãnh rỗi. Trên các hệ thống có nhiều CPU, con số này là tổng thời gian rãnh của từng CPU

16. Xem thông tin về CPU

Chạy lệnh

cat /proc/cpuinfo

Thông tin này bao gồm những nội dung như nhà sản xuất, xung nhịp CPU, bộ nhớ đệm, kích thước địa chỉ (32bit/64bit), BogoMips,...

17. Chạy server NodeJS

Đầu tiên, các bạn cần tạo một file app.js (tên tuỳ ý) có nội dung như sau

var http = require("http");

http.createServer(function(request, response) {  
    response.writeHead(200, {"Content-Type": "text/plain"});  
    response.write("Hello World\n");  
    response.end();
}).listen(8080);

console.log('Server started');

Bạn có thể sử dụng lệnh nano mình đã hướng dẫn cài đặt ở mục 3 để tạo

nano app.js

Khởi chạy server

node app.js &

Mở trình duyệt và xem kết quả. Nhập IP của Galileo trong mạng như lúc vào Linux console qua cổng Ethernet kèm theo cổng 8080.

Chúc mừng, bạn vừa chạy được chương trình Hello World cho ứng dụng NodeJS của mình :D

lên
6 thành viên đã đánh giá bài viết này hữu ích.
Chuyên mục: 
Các dự án được truyền cảm hứng

Select any filter and click on Apply to see results

Các bài viết cùng tác giả

Nạp bootloader cho vi điều khiển trên Arduino

Bài viết này hướng dẫn các bạn nạp bootloader cho vi điều khiển trên mạch Arduino. Trên thực tế, vi điều khiển trên mạch Arduino đã có sẵn bootloader rồi nên bạn không cần thao tác gì cả. Tuy nhiên, với một số trường hợp cần nạp bootloader, bạn sẽ cần đọc bài viết này để biết cách thực hiện.

lên
18 thành viên đã đánh giá bài viết này hữu ích.

analogWrite()

analogWrite() là lệnh xuất ra từ một chân trên mạch Arduino một mức tín hiệu analog (phát xung PWM). Người ta thường điều khiển mức sáng tối của đèn LED hay hướng quay của động cơ servo bằng cách phát xung PWM như thế này.

lên
31 thành viên đã đánh giá bài viết này hữu ích.