Biruj gửi vào
- 7666 lượt xem
I. Tổng quan
Console là gì và tầm quan trọng của nó chắc các bạn đã biết trong bài viết này mình sẽ không nhắc lại nữa. Mục tiêu chính của bài viết là mình sẽ hướng dẫn chi tiết cách để các bạn truy cập vào console và một góc tiếp cận cực kì đơn giản cho người dùng Linux.
Bài viết dưới góc nhìn cơ bản cho những bạn mới làm quen với Intel Galileo.
Menu
1. Truy cập UART thông qua mạch giao tiếp UART CP2102
2. Kết nối trực tiếp board Galileo và máy tính thông qua Cable mạng
b. Một phương thức khác đơn giản hơn rất nhiều đó là sử dụng giao thứ ARP (Address Request Protocol)
II. Phân loại
Nói về cách phân loại kết nối, đương nhiên ra nghĩ ngay đến có dây và không dây.
Nói tới dây thì ta lại phân ra dây gì? ( loại kết nối ) và kết nối như thế nào ( trực tiếp hay gián tiếp)? thông qua apdater, UART ICs, MCU, Router ....
Tương tự ta cũng có cho các kết nối không dây như bla bla bla ....... thôi thôi rắc rối quá rồi.
Ngắn gọn lại mình tổng hợp vào một bảng cho các bạn dễ hiểu và đây cũng là nội dung các phần của bài viết.
Loại kết nối | Có dây | Không dây |
Trực tiếp |
Cổng USB: Mạch giao tiếp UART (trong bài sử dụng loại CP2102) |
Galileo Host - PC Client: Card Wifi cho Galileo (phải cài thêm driver) |
Cổng Ethernet: Dây mạng (dây LAN RJ45) |
||
Gián tiếp |
MCUs (Master Control Unit): Board MCU bất kì hỗ trợ giao tiếp Serial (TX-RX). Trong bài viết sử dụng Arduino UNO R3 và Arduino Mega 2560. |
Galileo - PC Client cùng tham gia vào một mạng LAN không dây: Galileo - PC cùng kết nối vào một điểm truy cập Wifi (Wifi Access Point) |
Galileo - PC Client cùng tham gia vào một mạng LAN không dây:
|
Mỗi phương pháp đều có cái ưu và nhược điểm của nó và sẽ được nêu rõ trong từng phần của bài viết.
1. Truy cập UART thông qua mạch giao tiếp UART CP2102
Đầu tiên bạn cần là một em CP 2102 có gía tầm 30-40k hoặc một em giao tiếp UART bất kì (nếu bạn có Arduino Uno thì hãy dùng nó).
CP2102 | Galileo Gen 2 |
TX | RX |
RX | TX |
GND | GND |
DTR/RST | RTS |
3,3V 5V | Chân ở giữa chân RTS và RXI |
Bạn chỉ chọn một trong 2 chân 3,3V hoặc 5V tùy thuộc vào vị trí của jumper trên board galileo (mặc định là 5V)
Một số board giao tiếp có tích hợp jumper 3,3V / 5V ngay trên mạch, bạn cần điều chỉnh vị trí jumper cho phù hợp giua 2 thiết bị.
Giờ thì mở máy tính lên và bắt đầu thôi!
Vào Terminal → gõ vào dòng lệnh:
dmesg | grep tty
Bạn có tháy dòn cuối cùng của kết quả trả về không?
Ở lần đầu tiên mình rút CP2102 ra khỏi máy tính và lần thứ 2 là cắm CP2102 vào.
Điều quan trọng là bạn phải thấy dòng này ở hàng cuối cùng “ …. now attached to ttyUSB0” .
Great! Hãy nhớ nó.
Với những bạn không nhận được CP210x converter các bạn phải cài driver thủ công cho máy tính của mình.
Tiếc là quá trình cài đặt mình không lưu lại hình ảnh, bạn nào vừa cài Ubuntu cần cài giúp driver thì email mình s01667976302@gmail.com, mình lấy công vài bức hình cho bài viết dầy đủ hơn thôi ^^
- Truy cập trang web : https://www.silabs.com/products/mcu/Pages/USBtoUARTBridgeVCPDrivers.aspx
- Tìm mục Download for Linux, bạn chọn phiên bản phù hợp với máy mình.
- Quá trình cài đặt thiếu hình ảnh, mượn tạm của instructable
$> make ( your cp210x driver ) $> cp cp210x.ko to /lib/modules/<kernel-version>/kernel/drivers/usb/serial $> insmod /lib/modules/<kernel-version/kernel/drivers/usb/serial/usbserial.ko $> insmod cp210x.ko
Xong phần driver, phù!
Quay lại với terminal. Sau khi đã có cổng kết nối ttyUSBx rồi, điều bạn cần lúc này là một phiên dịch viên. Phiên dịch viên sẽ đóng vai trò chuyển thông tin liên lạc giữa 2 hệ điều hành. Ở đây bài viết chọn phần mềm PuTTY SSH Client do khả năng chạy trên nhiều nền tảng.
Tuy nhiên điểm yếu của nó là không hỗ trợ được nhiều cổng Serial một lúc và cũng gặp nhiều vấn đề khác với lệnh Ctrl+M, Ctrl+J … ( nếu bạn hiểu vấn đề mình nói là gì thì bạn nên bỏ qua phần PuTTY này)
Mở giao diện PuTTY SSH Client lên, bạn nhập như thế này :
với cổng ttyUSBx là cổng kết nối khi dùng lệnh dmesg | grep tty thu được.
Nếu mọi chuyện êm xui bạn sẽ thu được như thế này mà không có bất kì thông báo nào.
Một màu đen đen, đừng sợ, bạn đang đi đúng hướng!
Bắt đầu chảo hỏi nào, gửi một tin nhắn bất kì, galileo sẽ hỏi bạn password :D
Do Galileo đã được khởi động từ trước khi kết nối, do đó console sẽ đợi bạn ở câu lệnh login:
Bạn nhập vào arduino.vn thì mặc định Galileo hiểu đó là username nên sẽ hỏi Password: như trong hình.
Ở đây mình dể quá 60s nên Galileo không cho mình đăng nhập nữa, phải nhập lại thôi. Mặc định để đăng nhập console của Galileo các bạn gõ : root
Là lá la, All done!
Với những bạn cần sử dụng nhiều cổng serial một lúc, lúc này ta sẽ dùng anh chàng phiên dịch tên Screen với dòng lệnh sau :
screen /dev/ttyUSB0 115200
mình không nhớ chính xác là có phải cài đặt screen trước khi sử dụng không, bạn nào gặp lỗi cứ email báo mình để mình biết cập nhật lại bài viết
Ưu điểm khi sử dụng Screen là bạn không bị giới hạn về số lượng cổng, đồng thời không phải cài thêm phần mềm thứ 3 vào máy tính.
2. Kết nối trực tiếp board Galileo và máy tính thông qua Cable mạng
Ưu điểm lớn nhất của phương pháp này là ít tốn kém, bạn chỉ cần một đoạn dây mạng bấm sẵn 2 đầu, vậy là ok. Cực kì đơn giản.
Tuy nhiên nhược điểm của nó là bạn không thể theo dõi qúa trình khởi động Galileo để debug khi cần.
Nối cổng Ethernet của máy tính và cổng Erthernet của máy tính (đương nhiên thôi, còn cách nào khác đâu :v)
Bước kế tiếp bạn phải chọn kết nối mặc định của mình là mạng dây. Cách đơn giản nhất là tắt WiFi đi hoặc bạn cũng có thế chọn như hình sau:
Bạn kiểm tra thấy bên dưới dòng Ethernet Network mất dòng disconected là OK
Phương thức mình muốn giới thiệu ở đây là SSH - Cổng 22. Ở phương thức này, điều quan trọng nhất là bạn phải biết địa chỉ IP của nơi cần kết nối đến (Galileo). Vậy làm thế nào để biết IP của Galileo????
Thật ra thì có rất nhiều phương pháp để ta giải quyết vấn đề này, trong phạm vi bài viết mình chỉ giới thiệu một hai phương thức đơn giản nhất, đơn giản nhưng có võ
- Cài đặt nmap bằng câu lệnh sau:
- sudo apt-get install nmap
- Truy cập Connection Infomation để xem dãy IPv4 của kết nổi hiện tại.
-
Ở đây mình đã tắt phần IPv6 cho việc mapping diễn ra nhanh hơn (không bắt buộc).
Vậy kết nối đang tạo ra nằm ở lớp 10.42.0.x. Máy tính có IP 10.42.0.1 => dùng phương pháp thầy bói => IP galileo 10.42.0.2
Thầy bói phán thì chắc chắn không thể tin?!
Kiểm tra bằng phương pháp khoa học:
nmap -sP 10.42.0.0/24
Với 10.42.0.0 là lớp IPv4 mà bạn đã tìm thấy ở hình trên.
Mọi chuyện suông sẽ, bạn sẽ tìm thấy 2 IP như hình sau:
10.42.0.1 là máy tính => bằng phương pháp khoa học => 10.42.0.76 là Galileo
Thầy bói phán mà
b. Một phương thức khác đơn giản hơn rất nhiều đó là sử dụng giao thứ ARP (Address Request Protocol)
arp | grep 10.42.0
Done! Quá đơn giản :v
hay thậm chỉ bạn không cần tìm lớp của kết nối mà chỉ cần xem địa chỉ MAC in trên cổng Ethernet của board Galileo, của mình là 98:4f:ee:03:18:61 do đó mình gõ dòng lệnh sau:
arp | grep 98:4f:ee:03:18:61
Kết quả là không đổi!
Thế giờ lỡ mất MAC luôn thì thế nào?
Không phải nghĩ, gõ arp vào dòng lệnh:
Điều gì giúp bạn biết đâu là Galileo giữa một list dài những 4 dòng thế kia (nói hơi quá nhưng lỡ đâu bạn có một list 100 Address) Đó là cột cuối cùng bên phải chữ eth0
eth là viết tắt của ethernet (mạng dây) còn số 0 là số thứ tự của cổng. Hầu hêt máy tính chỉ có một cổng mạng nên hầu hết bạn sẽ nhận được chữ eth0. Và hiện tại chỉ có một em Galileo kết nối vào đó => chính hắn.
Có IP rồi mọi việc quá đơn giản, bật PuTTY SSH Client lên
Đợi khoảng 5s , và:
Một phương pháp đơn giản hơn là gõ dòng lệnh sau vào terminal:
ssh root@10.42.0.76
Gõ yes có thông báo về fingerprint. Và dòng lệnh thần thánh ấy đã xuất hiện!
To be continued .......