Giao thức FTP sử dụng SMT32F103 và module SIM

Bài viết này sẽ là về kết nối FTP giữa STM32F103C8T6 với máy chủ (server). Trong bài viết các bạn sẽ được hướng dẫn cách để upload file .txt đã tạo lên server hoặc download file .txt trên server về thông qua tập lệnh AT.

Giao thức FTP (File Transfer Protocol)

Nghe cái tên File Transfer Protocol chắc các bạn cũng hiểu giao thức này dùng để làm gì. FTP cung cấp một trong các chức năng cơ bản của Internet và là phương thức được quy định để chuyển các tệp giữa các máy tính. Đây cũng là cách thông dụng nhất để truyền file bởi vì giao thức FTP giúp truyền tải dữ liệu một cách đáng tin cậy và có hiệu quả cao.

Không đi sâu vào các kiến thức liên quan đến giao thức FTP (File Transfer Protocol), dưới đây là cách để thiết lập cũng như chương trình code để truyền file giữa STM32F103 với server (cụ thể ở đây là server TAPIT).

[HỌC ONLINE: LẬP TRÌNH VI ĐIỀU KHIỂN STM32, VI XỬ LÝ ARM CORTEX – M]

Kết nối phần cứng

STM32 SIM800C
Kết nối nguồn ngoài cho VCC (4V)
PA9 RX
PA10 TX
GND GND

– Ngoài ra nên có thêm 1 USB TTL để quan sát dữ liệu:

STM32 USB TTL
PA3 TX
PA2 RX

Các lệnh AT liên quan và mô tả ngắn gọn về các câu lệnh đó

AT command Phản hồi của Sim Mô tả
AT+SAPBR OK Định cấu hình GPRS
AT+FTPCID=1 OK Thiết lập profile FTP
AT+FTPSERV=***** OK Thiết lập domain name hoặc địa chỉ IP của server.
AT+FTPPORT=*** OK Thiết lập port của server
AT+FTPUN=***** OK Tên người dùng để truy cập máy chủ FTP
AT+FTPPW=***** OK Đặt mật khẩu để truy cập máy chủ FTP
AT+FTPPUTNAME=***** OK Chọn tên file được upload
AT+FTPPUTPATH=***** OK Chọn đường dẫn upload
AT+FTPPUT OK Sử dụng để đưa một tệp vào Server
AT+FTPGETNAME=***** OK Chọn tên file để download
AT+FTPGETPATH=***** OK Chọn đường dẫn để download file
AT+FTPGET OK Sử dụng để tải tệp về

Tạo project với CubeMx và Keil uVision5

Bước 1: Chọn các chức năng cho ví dụ này: Serial wire (nạp code và debug), USART1 (hiển thị dữ liệu lên màn hình máy tính), USART2 (truyền nhận dữ liệu giữa MCU và Sim).

Bước 2: Kích chọn ô Configuration và thay đổi các thông số đã được highlight như hình dưới đây:

– Cấu hình cho UART1 và UART2 giống nhau:

Bước 3: Generate code

Chương trình truyền file qua FTP sử dụng Module Sim 800C

Khai báo và thay đổi các thông tin của server như host, port, username, password trong file main.c

Ở mục /* USER CODE BEGIN PFP */, khai báo các hàm sau:

– int8_t Sim_sendCommand(char* command, char* response, uint32_t timeout):

  • command: Lệnh gửi đi từ Sim
  • response: Phản hồi mà người dùng muốn đối chiếu. Nếu response trùng với phản hồi của Sim thì hàm Sim_sendCommand sẽ trả về 1, ngược lại sẽ trả về 0
  • timeout: Thời gian tối đa để đợi phản hồi từ Sim

– void Sim_configGPRSnFTP(void): Thiết lập kết nối GPRS và FTP profile

– void Sim_uploadFileFromFTP(char* data): Ghi dữ liệu data vào file có sẵn trên server, nếu file chưa tồn tại thì file sẽ tự động được tạo rồi ghi dữ liệu.

– void Sim_downloadFileFromFTP(void): Đọc dữ liệu ở trong file trên server

– Hàm display(): hiển thị dữ liệu lên màn hình máy tính

– Hàm deleteBuffer(): xóa dữ liệu trong bộ đệm

Upload file

Link video demo:

Vì lí do bảo mật thông tin server nên từ giây 26 đến giây 51 màn hình hiển thị trên Hercules sẽ bị che lại

Download file

Kết quả:

Chúc các bạn thành công!

Xem thêm: Tổng hợp các bài hướng dẫn Lập trình vi điều khiển STM32 tại đây.

Ngoc Hang