Cài đặt SSH client trên máy tính Windows

Một phần của tài liệu ĐỀ TÀI THU THẬP DỮ LIỆU DÙNG RASPBERRY PI THÔNG QUA MẠNG INTERNET (Trang 25)

2. Nội dung thực hiện:

3.2.4.1.2. Cài đặt SSH client trên máy tính Windows

Download phần mềm PuTTYvà chạy không cần cài đặt.

Trên giao diện của PuTTY chúng ta nhập địa chỉ IP của Raspberry Pi vào rồi click Open. Raspberry Pi sẽ yêu cầu xác nhận username và password (mặc định là pi và

raspberry). Nếu thành công thì máy tính sẽ xác nhận và hiển thị màn hình command line của Raspberry Pi. Lúc này có thể điều khiển Raspberry Pi bằng giao diện dòng lệnh.

Hình 3.9: Giao diện PuTTY trên máy tính

Hình 3.10: Màn hình điều khiển Raspberry bằng SSH

Như đã thấy, điều khiển Raspberry Pi bằng SSH khá đơn giản. SSH sử dụng rất ít tài nguyên máy của Raspberry Pi do không phải chạy phần đồ họa vì vậy thích hợp cho các ứng dụng cần nhiều tài nguyên tính toán.Tuy nhiên nhược điểm của SSH là

chỉ cho phép truy cập vào môi trường dòng lệnh. Trong trường hợp cần điều khiển desktop của Pi thì VNC (Virtual Network Computing) là một giải pháp tốt.

3.2.4.2 Giao tiếp Raspberry Pi bằng VNC (Virtual Network Computing)

VNC là công nghệ cho phép máy tính truy cập vào môi trường desktop lẫn bàn phím và chuột của một máy tính khác. Để sử dụng VNC thì ta cần cài đặt VNC server lên máy tính được điều khiển, và VNC client lên máy tính điều khiển. Trong trường hợp này ta muốn điều khiển Raspberry Pi từ xa thì ta cài VNC server lên Raspberry Pi.

3.2.4.2.1 Cài đặt VNC server trên Raspberry Pi

Có nhiều phần mềm có chức năng làm VNC server trong đó tốt nhất là sử dụng

TightVNCserver. Cách thức cài đặt và mở TightVNCserver trên LXTerminal như sau:

sudo apt-get install tightvncserver tightvncserver

Khi chạy VNC lần đầu thì nó sẽ yêu cầu tạo một password truy cập. Đây cũng là password được hỏi khi muốn truy cập vào Raspberry Pi nhằm tránh tình trạng truy cập trái phép. Ngoài ra TightVNC còn cho phép đặt password dạng view-only tức là chỉ cho phép thấy màn hình nhưng không điều khiển được bàn phím hay chuột.

Sau khi đặt password thì TightVNC sẽ tạo một màn hình ảo của Raspberry Pi để máy tính khác truy cập vào. Muốn truy cập màn hình này cần có password xác nhận ở trên, địa chỉ IP của Pi và cổng truy cập (port). Port mặc định của VNC là 5900. Như vậy muốn truy cập vào màn hình số 1 thì dùng địa chỉ: 192.168.1.9::5901. Tương tự nếu có một máy tính khác muốn truy cập màn hình số 2 thì sẽ dùng địa chỉ 192.168.1.9::5902. Lưu ý là màn hình số 1 hay số 2 chỉ là màn hình ảo và độc lập với nhau, ai cũng điều khiển được nhưng không ai thấy người khác đang làm gì.

3.2.4.2.2 Cài đặt VNC client trên Windows

Sau khi cài đặt ta mở VNC client lên bằng cách click Start – TightVNC – TightVNC Viewer, rồi nhập địa chỉ truy cập, click Connect và điền password truy cập.

Hình 3.11: Giao diện TightVNC Viewer trên máy tính

Hình 3.12: Màn hình điều khiển Pi từ máy tính

Ngoài ra phần mềm TightVNC này còn tích hợp cả VNC server lẫn client nên có thể sử dụng trong trường hợp ngược lại: dùng Pi để điều khiển máy tính.

 Cấu hình UART:

Để sử dụng chức năng truyền nhận dữ liệu UART trên Raspberry cần phải cấu hình lại như sau:

- Chỉnh sửa file cmdline.txt, dùng lệnh: sudo nano /boot/cmdline.txt

Xóa đoạn sau: console=ttyAMA0,115200 kgdboc=ttyAMA0,115200

Sau đó nhấn Ctrl + X để thoát và lưu lại.

- Chỉnh sửa file inittab: sudo nano /etc/inittab

Tìm dòng

T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100

rồi thêm dấu “#” vào đầu dòng để chỉnh sửa thành chú thích. Nhấn Ctrl + X để thoát và lưu lại.

- Khởi động lại để có hiệu lực: sudo reboot

 Cài đặt thư viện WebIOPi:

Trong đồ án có sử dụng thư viện WebIOPi để sử dụng trên chương trình viết bằng Python, cài đặt như sau:

• Cài đặt WebIOPi SVN:

$ sudo aptitude update

$ sudo aptitude install subversion

$ svn checkout http://webiopi.googlecode.com/svn/trunk/ webiopi-trunk $ cd webiopi-trunk

$ sudo ./setup.sh

• Cài đặt WebIOPi:

Download từ link:

https://code.google.com/p/webiopi/wiki/DOWNLOADS

Để cài đặt thư viện dùng lệnh sau:

$ tar xvzf WebIOPi-x.y.z.tar.gz $ cd WebIOPi-x.y.z

$ sudo ./setup.sh

• Chạy chương trình: $ sudo webiopi -d -c /etc/webiopi/config

3.3 PIC 16F887

3.3.1 Cấu tạo và sơ đồ chân

Hình 3.13: Sơ đồ chân của PIC16F887.

Các khối bên trong vi điều khiển bao gồm:

• Các khối thanh ghi định cấu hình cho vi điều khiển.

• Các khối bộ nhớ chương trình có nhiều dung lượng cho 5 loại khác nhau. • Khối bộ nhớ ngăn xếp 8 cấp (8 level stack).

• Khối bộ nhớ RAM cùng với thanh ghi FSR để tính toán tạo địa chỉ cho 2 cách truy xuất gián tiếp và trực tiếp.

• Có thanh ghi lệnh (Instruction Register) dùng để lưu mã lệnh nhận về từ bộ nhớ chương trình.

• Có thanh ghi bộ đếm chương trình PC dùng để quản lý địa chỉ của bộ nhớ chương trình.

• Có thanh ghi trạng thái (Status Register) cho biết trạng thái sau khi tính toán ALU. • Có thanh ghi FSR.

• Khối ALU cùng với thanh ghi working hay thanh ghi A để xử lý dữ liệu. • Khối giải mã lệnh và điều khiển (Instruction Decode and control).

• Khối các bộ định thời khi cấp điện PUT, có bộ định thời chờ dao động ổn định, có mạch reset khi có điện, có bộ định thời giám sát watchdog, có mạch reset khi phát hiện sụt giảm nguồn.

• Khối dao động nội (Internal Oscillator Block).

• Khối dao động kết nối với 2 ngõ OSC1 và OSC2 để tạo dao động.

• Khối bộ dao động cho timer1 có tần số 32 KHz kết nối với 2 ngõ vào T1OSI và T1OSO.

• Khối CCP2 và ECCP.

• Khối timer0 với ngõ vào xung đếmtừ bên ngoài là T0CKI. • Khối truyền dữ liệu đồng bộ/bất đồng bộ nâng cao.

• Khối truyền dữ liệu đồng bộ MSSP cho SPI và I2C.

• Khối bộ nhớ Eeprom 256 byte và thanh ghi quản lý địa chỉ EEADDR và thanh ghi dữ liệu EEADATA.

• Khối chuyển đổi tín hiệu tương tự sang số ADC.

• Khối 2 bộ so sánh với nhiều ngõ vào ra và điện áp tham chiếu. • Khối các Port A, B, C, D và E.

3.3.2 Các khối chức năng được sử dụng3.3.2.1 Các thành phần trong ADC 3.3.2.1 Các thành phần trong ADC

 AN0 đến AN13 (analog) là 14 ngõ vào của 14 kênh tương tự được đưa đến mạch đa hợp.

 Điện áp tham chiếu dương Vref+ có thể lập trình nối với nguồn cung cấp dương hoặc điện áp tham chiếu bên ngoài nối với ngõ vào Vref+ của chân AN3.

 Điện cáp tham chiếu âm Vref- có thể lập trình nối với nguồn cung cấp hoặc điện áp tham chiếu bên ngoài nối với ngõ vào Vref- của chân AN2.

 Hai ngõ vào Vref+ và Vref- có chức năng thiết lập độ phân giải cho ADC.  Kết quả chuyển đổi là số nhị phân 10 bit sẽ lưu vào cặp thanh ghi 16 bit có tên

là ADRESH và ADRESL.

ADC có 14 kênh nhưng mỗi thời điểm chỉ chuyển đổi 1 kênh và chuyển đổi kênh nào thì phụ thuộc vào 4 bit chọn kênh CHS3:CHS0. Hai ngõ vào điện áp tham chiếu dương và âm có thể lập trình nối với nguồn VDD và VSS hoặc nhận điện áp tham chiếu từ bên ngoài qua 2 chân RA3 và RA2.

3.3.2.2 Timer/Counter:

 Timer/Counter0:

Hình 3.15: Sơ đồ khối của timer0 của PIC 16F887

Bộ timer/counter0 có những đặc điểm sau: • Là timer/counter 8 bit.

• Có thể đọc và ghi giá trị đếm của timer/counter.

• Có bộ chia trước 8 bit cho phép lập trình lựa chọn hệ số chia bằng phần mềm. •

• Phát sinh ngắt khi bị tràn từ FFH về 00H.

• Cho phép lụa chọn tác động cung CK cạnh lên hoặc cạnh xuống.  Timer/Counter1

Bộ timer/counter1 có những đặc điểm sau:

• Là timer/counter 16 bit bao gồm hai thanh ghi 8 bit TMR1L và TMR1H với giá trị tối đa có là 65,535.

• Cho phép hoạt động với xung nội và xung ngoại. • Có 3 bit cho phép lập trình chọn tỷ lệ chia xung. • Có chế độ xung dao động thấp LP Oscillator. • Hoạt động đồng bộ hoạt bất đồng bộ.

• Chân gate control phục vụ cho bộ so sánh. • Cho phép ngắt khi có tràm thanh ghi. • Cho phép ngắt tác động bên ngoài. • Có chế độ lưu giá trị xung.

Hình 3.16: Hình ảnh 2 thanh ghi TMR1L và TMR1H

Lựu chọn nguồn xung clock:

CLOCK SOURCE TMR1CS

FOSC / 4 0

Hình 3.18: Sơ đồ cấu trúc Timer/Counter1của Pic16F887

- Hoạt động ở chế độ LP Oscillator.

Hình 3.19: Kết nối với tụ thạch anh Bảng giá trị tụ thạch anh và tụ C1 và C2 OSCILLATOR FREQUENCY C1 C2 LP 32 kHz 33 pF 33 pF 100 kHz 15 pF 15 pF 200 kHz 15 pF 15 pF  Timer2

Bộ timer2 có những đặc điểm sau:

• Chỉ lấy xung từ nguồn dao động nội.

• Có hai bit để lập trình tỉ lệ chia xung T2CKPS1 và T2CKPS0 với 3 giá trị chia.

• Có thêm 4 bit để lập trình tỉ lệ chia xung TOUTPS0, TOUTPS1, TOUTPS2, TOUTPS3. Với 16 giá trị.

Hình 3.20: Sơ đồ cấu trúc Timer2

Bảng giá trị chia tương ứng với giá trị 2 bit T2CKPS1 và T2CKPS0

T2CKPS1 T2CKPS0 PRESCALER RATE

0 0 1:1

0 1 1:4

1 X 1:16

Bảng giá trị chia tương ứng với giá trị 4 bit TOUTPS0, TOUTPS1, TOUTPS2, TOUTPS3

TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 POSTSCALER RATE

0 0 0 0 1:1 0 0 0 1 1:2 0 0 1 0 1:3 0 0 1 1 1:4 0 1 0 0 1:5 0 1 0 1 1:6 0 1 1 0 1:7 0 1 1 1 1:8 1 0 0 0 1:9 1 0 0 1 1:10 1 0 1 0 1:11 1 0 1 1 1:12 1 1 0 0 1:13 1 1 0 1 1:14

1 1 1 0 1:15

1 1 1 1 1:16

3.3.2.3 Giao thức truyền dữ liệu UART:

UART là viết tắt của Universal Asynchronous Receiver – Transmitter. Thường là một mạch tích hợp được sử dụng trong việc truyền dẫn dữ liệu nối tiếp giữa máy tính và các thiết bị ngoại vi. Rất nhiều vi điều khiển hiện nay đã được tích hợp UART, vì vấn đề tốc độ và độ điện dụng của UART không thể so sánh với các giao tiếp mới hiện nay nên các dòng PC & Laptop đời mới không còn tích hợp cổng UART.

Để bắt đầu cho việc truyền dữ liệu bằng UART, một START bit được gửi đi, sau đó là các bit dữ liệu và kết thúc quá trình truyền là STOP bit.

Hình 3.21: Khung dữ liệu truyền UART

Như hình có thể thấy, khi ở rạng thái chờ mức điện thế ở mức 1 (high). Khi bắt đầu truyền START bit sẽ chuyển từ 1 xuống 0 để báo hiệu cho bộ nhận là quá trình truyền dữ liệu sắp xảy ra. Sau START bit là đến các bit dữ liệu D0-D7 (Theo hình vẽ các bit này có thể ở mức cao hoặc thấp tùy theo dữ liệu). Sau khi truyền hết dữ liệu thì đến Bit Parity để bộ nhận kiểm tra tính đúng đắn của dữ liệu truyền. Cuối cùng là STOP bit là 1 báo cho thiết bị rằng các bit đã được gửi xong. Thiết bị nhận sẽ tiến hành kiểm tra khung truyền nhằm đảm báo tính đúng đắn của dữ liệu.

Các thông số cơ bản trong truyền nhận UART:

- Baund rate (tốc độ baund): Khoảng thời gian dành cho 1 bit được truyền. Phải được cài đặt giống nhau ở gửi và nhận.

- Frame (khung truyền): Khung truyền quy định về số bit trong mỗi lần truyền. - Start bit (bit bắt buộc) là bit đầu tiên được truyền trong 1 Frame. Báo hiệu cho thiết bị nhận có một gói dữ liệu sắp được truyền đến.

- Data: dữ liệu cần truyền. Bit có trọng số nhỏ nhất LSB được truyền trước sau đó đến bit MSB.

- Stop bit (bit bắt buộc): là 1 hoặc các bit báo cho thiết bị rằng các bit đã được gửi xong. Thiết bị nhận sẽ tiến hành kiểm tra khung truyền nhằm đảm bảo tính đúng đắn của dữ liệu.

Sơ đồ khối bộ truyền UART trong PIC 16F887:

Hình 3.22: Sơ đồ khối bộ truyền UART

 Nguyên tắc hoạt động:

- Dữ liệu cần truyền được đặt vào thanh ghi TXREG, baund rate được tạo ra, khi TXEN gán bằng 1 dữ liệu từ thanh ghi TXREG đưa vào thanh ghi TSR đồng thời baund rate tác động đến TSR, đẩy dữ liệu cần truyền ra bộ đệm sau đó xuất ra chân TX.

- Bit TXIF dùng để báo trạng thái trong thanh ghi TXREG, nếu có dữ liệu trong TXREG thì TXIF = 1. Nếu dữ liệu được truyền xuống thanh TSR thì TXIF =0. Tương tự bit TRMT dùng để báo trạng thái thanh ghi TSR.

Như vậy các bước cho quá trình gửi dữ liệu bao gồm: + Khởi tạo baund rate: ở thanh ghi SPBRG

Cho phép quá trình truyền thông không đồng bộ bằng cách thiết lập SPEN=1; SYNC = 0;

+ Cho phép truyền dữ liệu bằng cách thiết lập bit TXEN = 1; + Khi cần truyền dữ liệu thì cần set dữ liệu đó lên TXREG. Thanh ghi quy định chế độ truyền:

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R-1 R-0 CSRC TX9 TXEN SYNC SEND8 BRGH TRMT TX9D

bit 7 bit 0

CSRC: bit chọn nguồn xung clock TX9: Cho phép truyền nhận chế độ 9 bit TX9 = 1; // Hoạt động với chế độ 9 bit. TX9 = 0; // Hoạt động với chế độ 8 bit. TXEN: Cho phép truyền UART

TXEN = 1; // Cho phép

TXEN = 0; // Không cho phép SYNC: Cho phép chế độ đồng bộ SYNC = 1; // Truyền chế độ đồng bộ. SYNC = 0; // Truyền chế độ bất đồng bộ. BRGH: Chọn chế độ baund rate BRGH = 1; // Tốc độ cao (bất đồng bộ). BRGH = 0; // Tốc độ thấp (bất đồng bộ). TRMT: Trạng thái thanh ghi truyền. TRMT = 1; // Thanh ghi TSR trống TRMT = 0; // Thanh ghi TSR có dữ li ệu.

TX9D: Dữ liệu bit thứ 9 trong chế độ truyền 9 bit.  Sơ đồ khối bộ nhận UART trong PIC 16F887

Hình 3.23: Sơ đồ khối bộ nhận UART

Khi có dữ liệu được truyền đến chân RX và bit SPEN được cho phép thì dữ liệu sẽ được đồng bộ với khối tạo xung, vì baund rate giữa 2 khối bằng nhau nên xung baund rate mang từng bit vào thanh ghi RSR, khi một farm được truyền hoàn tất (xuất hiện bit stop) thì dữ liệu được truy ền xuống thanh ghi RCREG, bit thứ 9 được truyền xuống RX9D, nếu có lỗi thì các bit OERR, FERR dùng để thông báo. Quá trình nhận cũng tạo ra ngắt RCIF = 1, bằng cách thiết lập bit RCIE = 1 mỗi khi có dữ liệu truyền đến thì sẽ sinh ra ngắt và PIC sẽ tạm dừng chương trình hiện thời để xử lý dữ liệu vừa nhận được. Như vậy các bước cho quá trình nhận dữ liệu bao gồm:

- Khởi tạo baund rate: ở thanh ghi SPBRG

Cho phép quá trình truyền thông không đồng bộ bằng cách thiết lập SPEN=SYNC=0; - Cho phép ngắt quá trình nhận dữ liệu CREN = 1;

- Cho phép ngắt toàn cục: CIE = 1; PEIE = 1;

- Xử lý các phần khác của chương trình khi có ngắt xảy ra thì xử lý dữ liệu.

Thanh ghi quy định chế độ nhận:

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 SPEN RX9 SREN CREN ADDEN FERR OERR RX9D

bit 7 bit 0

SPEN: Khởi tạo cổng nối tiếp

SPEN = 1; // Cho phép cổng nối tiếp SPEN = 0; // Không cho phép

RX9: Cho phép nhận 9 bit RX9 = 1; // Cho phép nhận 9 bit RX9 = 0; // Nhận 8 bit

CREN: Cho phép nhận liên tục CREN = 1; // Cho phép

CREN = 0; // Không cho phép

ADDEN: Bit cho phép phát hiện địa chỉ (sử dụng ở chế độ truyền nhận bất đồng bộ 9 bit)

ADDEN = 1; // Cho phép phát hiện địa chỉ, cho phép ngắt và tải bộ đệm nhận khi RSR<8 > được set.

ADDEN = 0; // Không cho phép phát hiện địa chỉ, tất cả byte được nhận và bit thứ 9 dùng làm bit parity.

FERR: Bit báo lỗi frame

Một phần của tài liệu ĐỀ TÀI THU THẬP DỮ LIỆU DÙNG RASPBERRY PI THÔNG QUA MẠNG INTERNET (Trang 25)