Ngày nay, với nhịp độ phát triển ngày càng nhanh chóng của khoa học, kỹ thuật, công nghệ; nhiều tiến bộ khoa học, kỹ thuật, công nghệ đã được áp dụng vào thực tiễn, từ đó chất lượng cuộc sống của con người ngày càng được nâng cao, đất nước ngày càng phát triển. Các khối ngành Điện tử nói chung hay ngành Kỹ thuật điện tử, truyền thông nói riêng là ngành có đóng góp đặc biệt quan trọng, đóng vai trò nền tảng cho sự phát triển bền vững của nước ta trong thời kỳ đối mới, xu thế hội nhập quốc tế hiện nay để hướng tới trở thành một nước công nghiệp hóa, hiện đại hóa. Ngành Kỹ thuật điện tử, truyền thông là ngành sử dụng các công nghệ, kỹ thuật tiên tiến để tạo ra các thiêt bị điện tử hữu ích cho việc xây dựng hệ thống thông tin liên lạc, trao đổi thông tin nhằm đáp ứng nhu cầu ngày càng cao trong đời sống sinh hoạt thường nhật, cũng như trong lao động sản xuất, phát triển và bảo vệ đất nước trong giai đoạn hiện nay. Trong suốt thời gian theo học ngành Kỹ thuật điện tử, truyền thông thuộc Khoa Công nghệ, trường Đại học Cần Thơ, với sự hướng dẫn, chỉ dạy tận tình của các thầy cô chúng em đã tích lũy cho bản thân được nhiều kiến thức, kinh nghiệm trong học tập tập lý thuyết, cũng như thực hành. Với những kiến thức, kinh nghiệm có được cùng với sự hướng dẫn tận tâm của thầy Trần Nhựt Khải Hoàn đã giúp chúng em thực hiện và hoàn thành đề tài “Thiết lập cấu hình phần cứng từ xa cho các hệ thống giám sát và điều khiển”. Do kiến thức còn hạn chế và chưa có nhiều kinh nghiệm trong thực hiện, nên có thể dẫn tới đề tài còn nhiều thiếu xót, nhưng đó là tất cả kiến thức, sự cố gắng trong học tập và nghiên cứu của chúng em, chúng em rất mong nhận được sự đóng góp ý kiến từ thầy cô để đề tài được hoàn thiện hơn.
TỔNG QUAN
Đặt vấn đề
Hiện nay, nhiều thiết bị thông minh đã được áp dụng vào sản xuất và nuôi trồng để thay thế hoạt động thủ công, như hệ thống giám sát môi trường, tưới nước tự động, phân loại trái cây, kiểm soát nhiệt độ lò ấp trứng, máy sấy trái cây và máy làm giá đỗ tự động Tuy nhiên, các hệ thống này chỉ đáp ứng nhu cầu riêng lẻ, chưa thể thỏa mãn nhiều yêu cầu cùng lúc Khi cần thay đổi mục đích sử dụng, việc điều chỉnh cấu trúc phần cứng hoặc cập nhật phần mềm trở nên cần thiết, dẫn đến sự thiếu linh hoạt và bất tiện cho các hệ thống đã được thiết lập.
Tại các nút điều khiển (Slave), các cổng giao tiếp thường được lập trình cố định để tương tác với một loại cảm biến cụ thể Khi cần thay đổi cảm biến hoặc chuẩn giao tiếp, việc nạp lại chương trình hoặc điều chỉnh một số chi tiết phần cứng là cần thiết.
Tại nút xử lý trung tâm (Master), sự thay đổi ở các nút điều khiển (Slave) yêu cầu Master cũng phải điều chỉnh để đảm bảo tính tương thích với toàn hệ thống, thông qua việc nạp lại chương trình hoặc thay đổi một số chi tiết phần cứng.
Các loại cảm biến sẽ được nâng cấp để thu thập nhiều thông số môi trường hơn Tuy nhiên, việc cập nhật cảm biến mới hoặc chuẩn giao tiếp mới đòi hỏi xây dựng lại hệ thống, điều này có thể tốn kém và không phải là giải pháp tối ưu.
Hệ thống yêu cầu có tính tự động cao, cho phép thu thập nhiều dữ liệu cảm biến đồng thời Đặc biệt, hệ thống cần khả năng chuyển đổi mục đích sử dụng hoặc thay thế cảm biến mới mà không cần nạp lại chương trình cho toàn bộ hệ thống.
Dựa trên thực trạng và yêu cầu hiện tại về việc xây dựng các hệ thống giám sát, điều khiển và quản lý dữ liệu trong sản xuất nông nghiệp, chúng tôi đã thực hiện đề tài “Thiết lập cấu hình phần cứng từ xa cho các hệ thống giám sát và điều khiển”.
Lịch sử giải quyết vấn đề
Nhiều đề tài nghiên cứu khoa học và luận văn tốt nghiệp đã được thực hiện, bao gồm hệ thống giám sát và quản lý thông số môi trường trong nhà kín, hệ thống tưới nước tự động, phân loại độ chín của trái cây, kiểm soát nhiệt độ lò ấp trứng, máy sấy trái cây và máy làm giá đỗ tự động Tuy nhiên, vẫn còn nhiều hạn chế cần được khắc phục trong các hệ thống này.
Gần đây, chị Nguyễn Huỳnh Mẫn Nhi và anh Trần Tuấn Kha đã hoàn thành đề tài luận văn tốt nghiệp mang tên “Hệ thống giám sát và điều khiển thiết bị không dây”.
Luận văn tốt nghiệp CBHD: TS Trần Nhựt Khải Hoàn
Trang 1 1 dựng được hệ thống hoàn chỉnh trên các kit Arduino Đề tài đã thu thập được các thông số từ cảm biến để cập nhật lên Google Sheets và điều khiển các thiết bị ngoại vi Tuy nhiên, các cảm biến được đọc từ các thư viện có sẵn trong Arduino, sử dụng các thư viện chuẩn giao tiếp được xây dựng sẵn hoàn toàn trên các chân của chip vi xử lí, hệ thống cập nhật từ Google Sheet tốc độ còn chậm, còn lỗi.
Chúng em sẽ phát triển đề tài bằng cách tự tạo thư viện cho các cảm biến, xây dựng thư viện mới cho các chuẩn giao tiếp trên chân GPIO của chip xử lý, và cải thiện tốc độ cập nhật cũng như xử lý lỗi cho hệ thống Một điểm khác biệt quan trọng là hệ thống của chúng em được xây dựng dựa trên sự kết hợp giữa chip Arduino (Master) và chip MSP430G2553 (Slave), giao tiếp không dây qua chuẩn LoRa.
Mục tiêu đề tài
Trong đề tài này, chúng em sẽ tập trung giải quyết các vấn đề trọng tâm sau:
- Xây dựng được hệ thống gồm một nút xử lí trung tâm (Master) và ba nút điều khiển (Slave).
Thiết kế cổng giao tiếp với cảm biến (PORT) tại các Slave cho phép tương thích với nhiều chuẩn giao tiếp, giúp gắn được nhiều loại cảm biến khác nhau Khi thay hoặc gắn cảm biến mới, hệ thống vẫn duy trì hoạt động bình thường mà không cần nạp lại chương trình hay thay đổi phần cứng.
- Tự xây dựng thư viện cho nhiều loại cảm biến khác nhau.
- Ngoài việc sử dụng các chuẩn giao tiếp đã được xây dựng sẵn trên chip xử lí, cần xây dựng thêm các chuẩn giao tiếp trên các chân GPIO.
- Dữ liệu sẽ được cập nhật theo chu kì từ các Slave đến Master và đưa lên Google Sheets.
Việc thiết lập thiết bị tại các Port có thể thực hiện dễ dàng qua Google Sheets, giúp người dùng tiết kiệm thời gian mà không cần phải nạp lại chương trình cho Master Chỉ cần nhập thông tin cài đặt trên Google Sheets, người dùng có thể điều khiển thiết bị một cách thuận tiện.
- Các Slave sẽ được Master tự cập nhật (xóa Slave không dùng, cấp địa chỉ cho Slave vừa tìm được).
Giới hạn đề tài: Vì vấn đề thời gian và kinh phí, nhóm đã quyết định giới hạn đề tài như sau:
-Hệ thống gồm 1 Master có khả năng thiết lập cấu hình và điều khiển các Slave và 3Slave có khả năng thu thập dữ liệu từ các cảm biến.
Google Sheets serves as a data storage platform where users can perform control operations on Slave instances, mirroring the user interface of the Master.
-Ở mỗi Slave đều được thiết kế 3 Port mà mỗi Port đều có khả năng tương thích với nhiều chuẩn giao tiếp như Analog, UART, I2C, Digital, SPI.
Phương pháp thực hiện
Để thực hiện đề tài một cách hiệu quả, trước hết cần xác định rõ mục tiêu và yêu cầu của đề tài Tiếp theo, lập kế hoạch chi tiết và phân công công việc cho từng thành viên trong nhóm để đảm bảo tiến độ thực hiện được duy trì đúng hạn.
-Vận dụng kiến thức đã học cùng với các tài liệu tham khảo để tiến hành thực hiện đề tài.
- Tích lũy vốn kiến thức ngôn ngữ lập trình chính.
- Hiểu rõ đặc tính, cách sử dụng của các thiết bị, linh kiện sử dụng cho đề tài.
-Tìm hiểu cách ESP8266 lấy dữ liệu từ Google Sheets để phục vụ cho nhu cầu khảo sát và điều kiển qua Internet.
- Hình dung giải pháp cho từng phần của hệ thống.
-Tiến hành thiết kế phần cứng phù hợp với mục tiêu đặt ra, tối giản, tiện nghi và đáp ứng được đa dạng nhu cầu sử dụng.
-Về phần mềm, nghiên cứu, hình dung được giải thuật tối ưu cho hệ thống Tiến hành lập trình, chạy thử và điều chỉnh.
-Tạo trang Google Sheets riêng cho hệ thống thuận mắt, đơn giản, dễ nắm bắt cách sử dụng và điều khiển.
- Kiểm tra và đánh giá kết quả.
Bố cục bài báo cáo
Nội dung bài báo cáo gồm có 05 chương:
Chương 2: Cơ sở lý thuyết
Chương 3: Thiết kế phần cứng
Chương 4: Thiết kế phần mềm
Chương 5: Hướng dẫn sử dụng
Chương 6: Kết luận và kiến nghị
CƠ SỞ LÝ THUYẾT
Giới thiệu về Google Sheets (Trang tính)
Google Sheets là một chương trình bảng tính miễn phí của Google, tích hợp trong dịch vụ Google Drive, lý tưởng cho những ai cần bảng tính đơn giản và làm việc từ xa Ứng dụng này tương thích với định dạng Microsoft Excel, cho phép người dùng tạo và chỉnh sửa tài liệu trực tuyến cùng lúc với nhiều người khác Người dùng có thể theo dõi lịch sử sửa đổi và vị trí của từng biên tập viên được thể hiện bằng màu sắc và con trỏ riêng, đồng thời hệ thống quyền giúp quản lý các thao tác của người dùng.
Lý do nhóm lựa chọn Google Sheets:
- Là một dịch vụ hoàn toàn miễn phí và có tính bảo mật cao.
- Giao diện thân thiện và gần gũi với người dùng.
-Có sẵn dưới dạng một ứng dụng web, có thể truy cập thông qua Chrome, Firefox, Microsoft Edge ….
- Hỗ trợ danh sách các định dạng bảng tính và loại tệp phổ biến: xlsx xls xlsm xlt xltx xltxm od csv txt tsv tab
Người dùng có thể mở, chỉnh sửa và lưu bảng tính cũng như tài liệu bằng Google Sheets, bao gồm cả Microsoft Excel Việc chuyển đổi tệp Excel sang Google Sheets và ngược lại diễn ra dễ dàng và thuận tiện.
- Là một dịch vụ hoàn toàn miễn phí và có tính bảo mật cao.
- Giao diện thân thiện và gần gũi với người dùng.
- Có thể dễ dàng chỉnh sửa, thiết lập và chia sẻ.
-Có khả năng liên kết và kết hợp các tiện ích bổ sung khác như: Google API, GoogleChart, biểu đồ 2D & 3D, Google Form, …
Giao thức HTTP – HTTPS
HTTP (HyperText Transfer Protocol) là giao thức chính để truyền tải dữ liệu giữa máy chủ web và trình duyệt, hoạt động chủ yếu trên cổng 80 và tầng ứng dụng mà không cần chứng chỉ.
HTTPS (Giao thức truyền tải siêu văn bản an toàn) là phiên bản bảo mật của HTTP, được bổ sung thêm giao thức SSL và TLS, giúp đảm bảo an toàn cho việc trao đổi thông tin trên Internet Giao thức này thường được sử dụng trong các giao dịch nhạy cảm, nơi yêu cầu mức độ bảo mật cao.
Giao thức HTTPS sử dụng port 443, có yêu cầu chứng chỉ để đảm bảo thông tin.
Giới thiệu về JSON
JSON, viết tắt của JavaScript Object Notation, là định dạng dữ liệu tiêu chuẩn mở, dễ đọc và hỗ trợ hầu hết các ngôn ngữ lập trình hiện nay Được sử dụng rộng rãi trong việc trao đổi dữ liệu trên web, JSON tổ chức thông tin thông qua các cặp Key-Value.
Giá trị key trong JSON có thể là chuỗi (string), số (numner), rỗng (null), mảng (array), hoặc đối tượng (object).
Object trong JSON được biểu thị bằng dấu ngoặc nhọn {} và có nhiều điểm tương đồng với Object trong JavaScript Tuy nhiên, Object trong JSON cũng tồn tại một số giới hạn riêng.
• Key: phải luôn nằm trong dấu ngoặc kép, không được phép là biến số.
• Value: Chỉ cho phép các kiểu dữ liệu cơ bản: numbers, String, Booleans, arrays, objects, null Không cho phép function, date, undefined.
• Không cho phép dấy phẩy cuối cùng như Object trong Javascript.
Giới thiệu về GSX2JSON - Dịch vụ Google Spreadsheet sang JSON API
API, hay Giao diện Lập trình Ứng dụng, là một phương thức kết nối giữa các ứng dụng và thư viện khác nhau Nó cho phép truy cập vào một tập hợp các hàm thường dùng, từ đó hỗ trợ việc trao đổi dữ liệu hiệu quả giữa các ứng dụng.
Web API là một công cụ cho phép các ứng dụng khác nhau giao tiếp và trao đổi dữ liệu một cách hiệu quả Dữ liệu mà Web API cung cấp thường được định dạng dưới dạng JSON hoặc XML và được truyền tải qua giao thức HTTP hoặc HTTPS.
2.5.2 Giới thiệu về GSX2JSON
Google Spreadsheets cung cấp tính năng truy cập dữ liệu dưới dạng JSON thông qua một URL nguồn cấp dữ liệu cụ thể Mặc dù tính năng này hữu ích, nhưng việc thực hiện có thể gặp khó khăn, và kết quả JSON thường khó đọc, với dữ liệu sử dụng được nằm sâu bên trong các đối tượng.
GSX2JSON này giải quyết vấ đề trên cung cấp JSON đơn giản, dễ đọc, chấp nhận các truy vấn để sử dụng trong ứng dụng.
- Trước tiên, bảng tính phải được xuất bảng lên web, sử dụng File Publish To
Web trong Bảng tính Google.
Sau khi truy cập API JSON qua điểm cuối /api, bạn có thể sử dụng liên kết http://gsx2json.com/api?id=SPREADSHEET_ID&sheet=SHEET_NUM để đọc dữ liệu Liên kết này sẽ tự động cập nhật với mọi thay đổi trong bảng tính.
SPREADSHEET_ID là mã định danh của trang tính được sử dụng để đọc dữ liệu từ JSON, trong khi SHEET_NUM là số của trang tính cụ thể mà bạn muốn lấy thông tin Trang tính đầu tiên được đánh số là 0.
1, trang tính thứ hai là 2, Nếu không có trang tính nào được nhập thì 1 là trang mặc định.
Module Arduino Mega 2560 R3
Arduino Mega 2560 R3 là phiên bản cải tiến của Arduino Uno R3, sở hữu nhiều chân giao tiếp, ngoại vi và dung lượng bộ nhớ lớn hơn Với bộ nhớ EEPROM phong phú và khả năng xử lý mạnh mẽ, Mega 2560 R3 là lựa chọn lý tưởng để làm kit vi xử lý cho Master trong các hệ thống điều khiển.
Hình 2.2 là sơ đồ chân của Mega 2560 R3:
Hình 2.2: Sơ đồ chân của Mega 2560 R3 (Nguồn: TheEngineeringProjects)
• Vi điều khiển chính: ATmega2560
• IC nạp và giao tiếp UART: ATmega16U2.
• Số chân Digital: 54 (15 chân PWM)
• Giao tiếp UART : 4 bộ UART
• Giao tiếp SPI : 1 bộ ( chân 50 -> 53 ) dùng với thư viện SPI của Arduino
• Bộ nhớ Flash: 256 KB, 8KB sử dụng cho Bootloader
MSP430G2553
MSP430 là dòng vi điều khiển RISC 16-bit của Texas Instruments, nổi bật với khả năng tiết kiệm năng lượng và hoạt động ở điện áp thấp từ 1.8V đến 3.6V Vi điều khiển này, viết tắt từ "MIXED SIGNAL MICROCONTROLLER", là lựa chọn lý tưởng cho các ứng dụng yêu cầu trộn tín hiệu.
• Tiêu thụ năng lượng thấp, nguồn nuôi RAM 0.1-mA, 0.8-mA.
• Bộ so sánh điện áp thấp, có khả năng kết nối với thiết bị ngoại vi cực kỳ thông minh.
• Tiêu chuẩn Analog cho phép đo chính xác.
• Trong lập trình cho bộ nhớ Flash cho phép thay đổi Code một cách linh hoạt, phạm vi rộng….
-Sử dụng Chip MSP43G2553 làm vi xử lý cho Slave
Hình 2.3 là sơ đồ chân của MSP43G2553:
Hình 2.3: Sơ đồ chân của MSP430G2553 (Nguồn: https://www.argenox.com/)
Hình 2.4: KIT nạp và chip MSP430G2553 (Nguồn: Shopee)
• Vi điều khiển chính: MSP430G2553
• Giao tiếp UART : 1 bộ UART
• Giao tiếp SPI : 1 bộ SPI
Mạch Thu Phát RF UART LoRa SX1278 433Mhz 3000m
Mạch thu phát RF UART LoRa SX1278 433Mhz 3000m, sử dụng chip SX1278 của SEMTECH, hỗ trợ giao tiếp LoRa (Long Range) với khả năng tiết kiệm năng lượng và khoảng cách phát siêu xa Thiết bị này có khả năng cấu hình để tạo thành mạng, vì vậy nó đang được phát triển và ứng dụng rộng rãi trong các nghiên cứu về IoT.
Sử dụng anten 433Mhz 2dBi SMA đực sẽ giúp khuếch đại khoảng cách và công suất thu phát, với thông số gain 2dbi Anten này có chất lượng tốt và độ bền cao, là lựa chọn lý tưởng cho các ứng dụng cần tín hiệu ổn định.
Hình 2.5 là Kit RF UART LoRa SX1278 433Mhz 3000m và Anten 433Mhz 2dBi
Hình 2.5: Kit RF UART Lora SX1278
IC chính: SX1278 từ SEMTECH.
Điện áp giao tiếp: TTL-3.3V
Hình 2.6: Anten 433Mhz 2dBi SMA đực
Giao tiếp UART Data bits 8, Stop bits 1, Parity none, tốc độ từ 1200 - 115200.
Khoảng cách truyền tối đa trong điều kiện lý tưởng: 3000m
Tốc độ truyền: 0.3 - 19.2 Kbps ( mặc định 2.4 Kbps)
Hỗ trợ 65536 địa chỉ cấu hình.
Anten 433Mhz 2dBi SMA đực:
2.9 Kit RF thu phát wifi ESP8266 NodeMCU Lua CP2102
Kit RF thu phát Wifi ESP8266 NodeMCU Lua CP2102 là một bộ phát triển dựa trên chip Wifi SoC ESP8266, nổi bật với thiết kế thân thiện và khả năng lập trình trực tiếp qua trình biên dịch Arduino Kit này lý tưởng cho các ứng dụng kết nối, thu thập dữ liệu và điều khiển qua sóng Wifi, đặc biệt trong lĩnh vực Internet of Things (IoT).
Mô-đun phát Wifi ESP8266 NodeMCU Lua CP2102 được trang bị chip CP2102, mang lại khả năng nạp và giao tiếp UART ổn định nhất Chip này tự động nhận driver trên mọi hệ điều hành Windows và Linux, là phiên bản cải tiến so với các phiên bản sử dụng IC nạp giá rẻ CH340.
Hình 2.7 là Kit RF thu phát Wifi ESP8266 NodeMCU Lua CP2102:
Hình 2.7: Kit RF thu phát Wifi ESP8266 NodeMCU Lua CP2102 (Nguồn: Hshop)
IC chính: ESP8266 Wifi SoC.
Phiên bản firmware: NodeMCU Lua
Chip nạp và giao tiếp UART: CP2102.
GPIO tương thích hoàn toàn với firmware Node MCU.
Cấp nguồn: 5VDC MicroUSB hoặc Vin.
GIPO giao tiếp mức 3.3VDC.
Tích hợp Led báo trạng thái, nút Reset, Flash.
2.10 Các loại cảm biến được sử dụng
2.10.1 Module Cảm biến nhiệt độ - độ ẩm DHT11
Cảm biến nhiệt độ - độ ẩm DHT11 (Grove - Temperature & Humidity Sensor DHT11) là thiết bị lý tưởng để đo lường nhiệt độ và độ ẩm không khí, phù hợp cho các ứng dụng như trồng cây và theo dõi thời tiết Với bộ tiền xử lý tích hợp, DHT11 cung cấp giá trị nhiệt độ và độ ẩm chính xác mà không cần thực hiện các phép tính phức tạp.
Hình 2.8 là module cảm biến nhiệt độ đã ra chân, gồm các chân được định nghĩa chức năng.
Hình 2.8: Module Cảm biến nhiệt độ - độ ẩm DHT11 và
Thông số kỹ thuật: bảng chức năng (Nguồn: Hshop)
• Điện áp sử dụng: 3.3~5VDC
• Tín hiệu ngõ ra: Digital TTL chuẩn giao tiếp 1-Wire
• Khoảng nhiệt độ đo được: 0~50 độ C sai số 2 độ C
• Khoảng độ ẩm đo được: 20~70%RH sai số 5%RH
2.10.2 Cảm Biến Vật Cản Hồng Ngoại IR Infrared Obstacle Avoidance
Cảm biến vật cản hồng ngoại IR Infrared Obstacle Avoidance là thiết bị nhận diện vật cản thông qua ánh sáng hồng ngoại Với thiết kế đơn giản, cảm biến này cho phép điều chỉnh khoảng cách phát hiện nhờ biến trở và có ngõ ra dạng Digital, dễ dàng tích hợp và lập trình với Vi điều khiển Sản phẩm này rất phù hợp cho các ứng dụng như robot tránh vật cản, hệ thống báo trộm, và mô hình cửa tự động.
Hình 2.9 là cảm biến vật cản hồng ngoại IR Infrared Obstacle Avoidance, gồm các chân được định nghĩa chức năng.
Hình 2.9: Cảm biến vật cản hồng ngoại (Nguồn: Hshop)
• Điện áp sử dụng: 3.3~5VDC.
• Nhận biết vật cản bằng ánh sáng hồng ngoại.
• Tích hợp biến trở chỉnh khoảng cách nhận biết vật cản.
2.10.3 Cảm Biến Siêu Âm Ultrasonic US-015
Cảm biến siêu âm Ultrasonic US-015 là thiết bị lý tưởng để đo khoảng cách giữa vật thể và cảm biến thông qua sóng siêu âm Với thời gian phản hồi nhanh và độ chính xác cao, cảm biến này rất phù hợp cho các ứng dụng phát hiện vật cản và đo khoảng cách hiệu quả.
Hình 2.10 là Cảm biến siêu âm Ultrasonic US-015, gồm các chân được định nghĩa chức năng.
Hình 2.10: Cảm biến siêu âm Ultrasonic US-015 và bảng chức năng (Nguồn: Hshop)
•Điện áp hoạt động: 5VDC
•Tín hiệu giao tiếp: TTL
•Chân tín hiệu: Echo, Trigger.
•Tần số phát sóng: 40Khz
Khoảng cách đo được của cảm biến dao động từ 2 đến 700cm, với khoảng cách xa nhất đạt được trong điều kiện lý tưởng như không gian trống và bề mặt vật thể phẳng Trong điều kiện bình thường, cảm biến cung cấp kết quả chính xác nhất ở khoảng cách tối ưu.
• Sai số: 0.3cm (khoảng cách càng gần, bề mặt vật thể càng phẳng sai số càng nhỏ).
2.10.4 Cảm Biến Nhiệt Độ LM35
Cảm biến nhiệt độ LM35 là một thiết bị đo nhiệt độ với đầu ra điện áp analog tuyến tính, thường được sử dụng để theo dõi nhiệt độ môi trường hoặc nhiệt độ thiết bị Với thiết kế chỉ 3 chân, cảm biến này rất dễ dàng trong việc giao tiếp và sử dụng.
Hình 2.11 là Cảm nhiệt độ LM35, gồm các chân được định nghĩa chức năng.
Hình 2.11: Cảm biến nhiệt độ LM35 và bảng chức năng
• Điện áp hoạt động: 4~20VDC
• Công suất tiêu thụ: khoảng 60uA
• Điện áp tuyến tính theo nhiệt độ: 10mV/°C
2.10.5 Mạch RFID NFC 13.56Mhz RC522
Mạch RFID NFC 13.56MHz RC522, sử dụng IC MFRC522 của NXP, cho phép đọc và ghi dữ liệu cho thẻ RFID NFC tần số 13.56MHz Với thiết kế nhỏ gọn, mạch này rất phổ biến trong các ứng dụng với Arduino và các loại vi điều khiển khác, phục vụ nhu cầu ghi và đọc thẻ RFID NFC.
Hình 2.12 là mạch RFID NFC 13.56MHZ RC522, gồm các chân được định nghĩa chức năng
1 (SDA) SS Chân lựa chọn chip khi giao tiếp SPI
2 SCK Chân xung trong chế độ SPI
3 MOSI (SDI) Master Data Out-Slave In trong chế độ giao tiếp
Master Data In -Slave Out trong chế độ giao tiếp SPI
Hình 2.12: Mạch RFID NFC 13.56MHZ RC522 và bảng chức năng (Nguồn: Hshop)
• Tần số hoạt động: 13.56Mhz
• Khoảng cách hoạt động: 0~60mmmifare1 card
• Tốc độ truyền dữ liệu: tối đa 10Mbit/s
• Các loại card RFID hỗ trợ: mifare1 S50, mifare1 S70, mifare UltraLight, mifare Pro, mifare Desfire
2.10.6 Mạch Đọc Thẻ RFID 125Khz Giao Tiếp UART RDM6300
Mạch đọc thẻ RFID 125Khz RDM6300 giao tiếp qua UART cho phép đọc ID của thẻ RFID tần số 125Khz và truyền dữ liệu đến vi điều khiển hoặc máy tính Thiết bị này dễ sử dụng và lập trình, lý tưởng cho các ứng dụng liên quan đến đọc thẻ RFID Khi giao tiếp qua UART, mạch sẽ trả về mã ASCII gồm 10 chữ số.
Hình 2.13 là mạch đọc thẻ RFID 125Khz, gồm các chân được định nghĩa chức năng.
Hình 2.13: Mạch đọc thẻ RFID 125Khz và bảng chức năng (Nguồn: Hshop)
• Điện áp sử dụng: 5VDC
• Chuẩn giao tiếp: UART TTL
• Tần số giao tiếp: 125Khz
• Khoảng cách nhận thẻ: 20~50mm
• Supported cards: EM/TK 4100, EM/TK4102, EM4200 or compatible
2.10.7 Màn Hình Oled 0.96 Inch Giao Tiếp I2C
Màn hình OLED 0.96 inch sử dụng giao tiếp I2C mang đến khả năng hiển thị đẹp mắt, sang trọng và rõ nét ngay cả trong điều kiện ánh sáng ban ngày Bên cạnh đó, sản phẩm còn tiết kiệm năng lượng tối đa với mức chi phí hợp lý.
4 TX Chân TX UART màn hình sử dụng giao tiếp I2C cho chất lượng đường truyền ổn định và rất dễ giao tiếp chỉ với 2 chân GPIO.
Hình 2.15 là Màn hình Oled 0.96 inch, gồm các chân được định nghĩa chức năng.
Hình 2.14: Màn hình Oled 0.96 inch giao tiếp I2C và bảng chức năng (Nguồn: Hshop)
• Điện áp sử dụng: 2.2~5.5VDC.
• Góc hiển thị: lớn hơn 160 độ
• Số điểm hiển thị: 128x64 điểm.
• Độ rộng màn hình: 0.96 inch
• Màu hiển thị: Trắng/Xanh Dương.
loại cảm biến được Các sử dụng
IC chính: ESP8266 Wifi SoC.
Phiên bản firmware: NodeMCU Lua
Chip nạp và giao tiếp UART: CP2102.
GPIO tương thích hoàn toàn với firmware Node MCU.
Cấp nguồn: 5VDC MicroUSB hoặc Vin.
GIPO giao tiếp mức 3.3VDC.
Tích hợp Led báo trạng thái, nút Reset, Flash.
2.10 Các loại cảm biến được sử dụng
2.10.1 Module Cảm biến nhiệt độ - độ ẩm DHT11
Cảm biến nhiệt độ và độ ẩm DHT11 (Grove - Temperature & Humidity Sensor DHT11) là thiết bị lý tưởng để đo lường nhiệt độ và độ ẩm không khí, phù hợp cho các ứng dụng như trồng cây và theo dõi thời tiết Với bộ tiền xử lý tích hợp, cảm biến này cung cấp giá trị nhiệt độ và độ ẩm chính xác mà không cần qua các bước tính toán phức tạp.
Hình 2.8 là module cảm biến nhiệt độ đã ra chân, gồm các chân được định nghĩa chức năng.
Hình 2.8: Module Cảm biến nhiệt độ - độ ẩm DHT11 và
Thông số kỹ thuật: bảng chức năng (Nguồn: Hshop)
• Điện áp sử dụng: 3.3~5VDC
• Tín hiệu ngõ ra: Digital TTL chuẩn giao tiếp 1-Wire
• Khoảng nhiệt độ đo được: 0~50 độ C sai số 2 độ C
• Khoảng độ ẩm đo được: 20~70%RH sai số 5%RH
2.10.2 Cảm Biến Vật Cản Hồng Ngoại IR Infrared Obstacle Avoidance
Cảm biến vật cản hồng ngoại IR Infrared Obstacle Avoidance là thiết bị giúp nhận biết vật cản thông qua ánh sáng hồng ngoại Với thiết kế dễ sử dụng và biến trở điều chỉnh khoảng cách nhận diện, cảm biến này cung cấp ngõ ra dạng Digital, thuận tiện cho việc giao tiếp và lập trình với Vi điều khiển Sản phẩm rất phù hợp cho các ứng dụng như robot tránh vật cản, hệ thống báo trộm, và mô hình cửa tự động.
Hình 2.9 là cảm biến vật cản hồng ngoại IR Infrared Obstacle Avoidance, gồm các chân được định nghĩa chức năng.
Hình 2.9: Cảm biến vật cản hồng ngoại (Nguồn: Hshop)
• Điện áp sử dụng: 3.3~5VDC.
• Nhận biết vật cản bằng ánh sáng hồng ngoại.
• Tích hợp biến trở chỉnh khoảng cách nhận biết vật cản.
2.10.3 Cảm Biến Siêu Âm Ultrasonic US-015
Cảm biến siêu âm Ultrasonic US-015 là thiết bị lý tưởng để đo khoảng cách từ vật thể đến cảm biến thông qua sóng siêu âm Với thời gian phản hồi nhanh và độ chính xác cao, cảm biến này rất phù hợp cho các ứng dụng phát hiện vật cản và đo khoảng cách hiệu quả.
Hình 2.10 là Cảm biến siêu âm Ultrasonic US-015, gồm các chân được định nghĩa chức năng.
Hình 2.10: Cảm biến siêu âm Ultrasonic US-015 và bảng chức năng (Nguồn: Hshop)
•Điện áp hoạt động: 5VDC
•Tín hiệu giao tiếp: TTL
•Chân tín hiệu: Echo, Trigger.
•Tần số phát sóng: 40Khz
Khoảng cách đo được của cảm biến là từ 2 đến 700 cm, với khoảng cách tối đa đạt được trong điều kiện lý tưởng, bao gồm không gian trống và bề mặt vật thể bằng phẳng Trong điều kiện bình thường, cảm biến cung cấp kết quả chính xác nhất ở khoảng cách gần.
• Sai số: 0.3cm (khoảng cách càng gần, bề mặt vật thể càng phẳng sai số càng nhỏ).
2.10.4 Cảm Biến Nhiệt Độ LM35
Cảm biến nhiệt độ LM35 là một thiết bị đo nhiệt độ với đầu ra điện áp Analog tuyến tính, thường được sử dụng để theo dõi nhiệt độ môi trường hoặc thiết bị Với thiết kế chỉ 3 chân, cảm biến này rất dễ dàng để giao tiếp và sử dụng.
Hình 2.11 là Cảm nhiệt độ LM35, gồm các chân được định nghĩa chức năng.
Hình 2.11: Cảm biến nhiệt độ LM35 và bảng chức năng
• Điện áp hoạt động: 4~20VDC
• Công suất tiêu thụ: khoảng 60uA
• Điện áp tuyến tính theo nhiệt độ: 10mV/°C
2.10.5 Mạch RFID NFC 13.56Mhz RC522
Mạch RFID NFC 13.56MHZ RC522, sử dụng IC MFRC522 của NXP, cho phép đọc và ghi dữ liệu cho thẻ RFID NFC tần số 13.56MHz Với thiết kế nhỏ gọn, mạch này rất phổ biến trong các ứng dụng kết hợp với Arduino và các loại vi điều khiển khác, phục vụ cho nhu cầu ghi và đọc thẻ RFID NFC.
Hình 2.12 là mạch RFID NFC 13.56MHZ RC522, gồm các chân được định nghĩa chức năng
1 (SDA) SS Chân lựa chọn chip khi giao tiếp SPI
2 SCK Chân xung trong chế độ SPI
3 MOSI (SDI) Master Data Out-Slave In trong chế độ giao tiếp
Master Data In -Slave Out trong chế độ giao tiếp SPI
Hình 2.12: Mạch RFID NFC 13.56MHZ RC522 và bảng chức năng (Nguồn: Hshop)
• Tần số hoạt động: 13.56Mhz
• Khoảng cách hoạt động: 0~60mmmifare1 card
• Tốc độ truyền dữ liệu: tối đa 10Mbit/s
• Các loại card RFID hỗ trợ: mifare1 S50, mifare1 S70, mifare UltraLight, mifare Pro, mifare Desfire
2.10.6 Mạch Đọc Thẻ RFID 125Khz Giao Tiếp UART RDM6300
Mạch đọc thẻ RFID 125Khz RDM6300 sử dụng giao tiếp UART để đọc ID thẻ RFID tần số 125Khz, dễ dàng kết nối với vi điều khiển hoặc máy tính Thiết bị này rất thuận tiện cho các ứng dụng đọc thẻ RFID, cung cấp mã ASCII 10 chữ số qua giao tiếp UART.
Hình 2.13 là mạch đọc thẻ RFID 125Khz, gồm các chân được định nghĩa chức năng.
Hình 2.13: Mạch đọc thẻ RFID 125Khz và bảng chức năng (Nguồn: Hshop)
• Điện áp sử dụng: 5VDC
• Chuẩn giao tiếp: UART TTL
• Tần số giao tiếp: 125Khz
• Khoảng cách nhận thẻ: 20~50mm
• Supported cards: EM/TK 4100, EM/TK4102, EM4200 or compatible
2.10.7 Màn Hình Oled 0.96 Inch Giao Tiếp I2C
Màn hình OLED 0.96 inch sử dụng giao tiếp I2C mang đến khả năng hiển thị sắc nét và sang trọng, phù hợp cho việc sử dụng ban ngày Ngoài ra, sản phẩm còn tiết kiệm năng lượng tối đa với mức chi phí hợp lý.
4 TX Chân TX UART màn hình sử dụng giao tiếp I2C cho chất lượng đường truyền ổn định và rất dễ giao tiếp chỉ với 2 chân GPIO.
Hình 2.15 là Màn hình Oled 0.96 inch, gồm các chân được định nghĩa chức năng.
Hình 2.14: Màn hình Oled 0.96 inch giao tiếp I2C và bảng chức năng (Nguồn: Hshop)
• Điện áp sử dụng: 2.2~5.5VDC.
• Góc hiển thị: lớn hơn 160 độ
• Số điểm hiển thị: 128x64 điểm.
• Độ rộng màn hình: 0.96 inch
• Màu hiển thị: Trắng/Xanh Dương.
THIẾT KẾ PHẦN CỨNG
Tổng quan hệ thống
Dựa trên những công việc đã thực hiện từ luận văn trước, hệ thống được xây dựng hoàn toàn trên nền tảng Kit Arduino Hệ thống sử dụng các thư viện cảm biến có sẵn để đọc dữ liệu từ cảm biến, đồng thời áp dụng các thư viện giao tiếp chuẩn đã được thiết lập trên Kit Arduino Ngoài ra, dữ liệu thu thập được sẽ được cập nhật lên Google Sheets để dễ dàng quản lý và theo dõi.
Chúng em sẽ xây dựng lại hệ thống với cấu trúc gồm hai phần chính:
Khối xử lí trung tâm Master: sử dụng Kit Arduino Mega 2560 R3, trong đó có sự khác biệt là:
• Tinh giản cấu trúc của Master: tập trung quản lí, thu thập dữ liệu các Slave, bỏ qua việc điều khiển thiết bị ngoại vi.
Các thông số cảm biến sẽ được thống nhất và đồng bộ hóa giữa Master và Slave, cho phép các giá trị Byte dữ liệu được khớp với nhau mà không cần phải truyền thông tin về số Byte giữa hai bên như trước đây.
• Số hóa các lệnh cài đặt trên Google Sheets để việc điều khiển diễn ra nhanh chóng so với việc sử dụng các lệnh ở dạng chuỗi trước đó.
Các khối nút cảm biến Slave: sẽ được xây dựng mới hoàn toàn trên chip MSP430G2553, trong đó có sự khác biệt là:
• Tự xây dựng các thư viện mới để đọc các giá trị cảm biến khác nhau, hoàn toàn không sử dụng thư viện có sẵn.
• Xây dựng mới thư viện cho chuẩn giao tiếp UART trên chân GPIO của chip MSP430G2553.
Hệ thống bao gồm một Master điều khiển ba Slave, với mỗi Slave được thiết kế ba cổng tương thích với nhiều chuẩn cảm biến như Analog, Digital, UART và ADC, có thể được cài đặt từ giao diện người dùng tại Master Đặc biệt, Port 3 của mỗi Slave hỗ trợ giao tiếp SPI và I2C Master thực hiện các chức năng như tìm kiếm và cấp phát địa chỉ cho các Slave, điều khiển cài đặt cảm biến và thu thập dữ liệu Dữ liệu được cập nhật lên Google Sheets thông qua module kết nối internet ESP8266, cho phép người dùng tương tác qua Khối Menu điều khiển tại Master hoặc trực tiếp trên Google Sheets.
Hình 3.1 mô tả tổng quan hoạt động của hệ thống:
Hình 3.1: Sơ đồ tổng quan của hệ thống
Khối xử lí trung tâm – Master Node
3.2.1 Sơ đồ khối tổng quan
- Điều khiển và giám sát việc thu thập dữ liệu từng Slave.
- ESP8266 là cách thức liên lạc giữa Master và Google Sheets.
- Màn hình Oled cho phép người theo dõi toàn bộ hoạt động của hệ thống.
- Các công tắt ấn giúp người dùng thao tác trực tiếp để điều khiển và ra lệnh cho các Slave.
- Lưu trữ dữ liệu tạm thời trên bộ nhớ của bộ vi điều khiển và mọi tiến trình của hệ thống đều thông qua vi xử lý trung tâm.
- Dữ liệu được lưu trữ trên Google Sheets để người dùng dễ dàng theo dõi.
Hình 3.2: Sơ đồ khối của Master
Cấu trúc và chức năng các khối của bộ xử lý trung tâm gồm:
-Khối Vi điều khiển: sử dụng Kit Arduino Mega 2560 R3 đóng vai trò là bộ xử lí trung tâm cho toàn khối Master.
-Khối thu phát wifi ESP8266: thực hiện giao tiếp giữa Master với Google Sheets trong lưu trữ, theo dõi, cập nhật dữ liệu và điều khiển hệ thống.
-Khối truyền nhận dữ liệu LoRa SX1278: thực hiện giao tiếp không dây giữa Master và các nút Slave.
-Khối màn hình hiển thị Oled 0.96Inch: thực hiện việc theo dõi hoạt động của hệ thống.
- Khối Button: thực hiện việc điều khiển hệ thống từ các công tắc ấn.
3.2.2 Các thao tác trên Khối Button
Các thao tác tại Button gồm 3 phím với các chức năng:
- Menu: đến danh sách các tùy chọn chính, các tùy chọn được giải thích như bảng sau:
1 Cai Dat Vào cài đặt các cảm biến cho Slave
2 Xoa Xóa Slave hoặc xóa Port
3 Sheet Cài đặt trực tiếp trên Google Sheets
4 Thoat Thoát tiến trình làm việc
Bảng 3.1: Các thao tác trên Khối Button
Hình 3.4: Hình ảnh bên trong của Master hoàn chỉnh
Hình 3.3: Sơ đồ nguyên lí của Master
Hình 3.5: Hình ảnh bên ngoài của Master hoàn chỉnh
Hình 3.6: Hình ảnh cạnh bên của Master hoàn chỉnh
khối nút cảm biến Các – Slave
3.3.1 Sơ đồ khối tổng quan
Hệ thống bao gồm ba Slave Node, được quản lý và điều khiển bởi Khối xử lý trung tâm Khi kết nối, các Slave Node sẽ tự động nhận địa chỉ và được đặt tên lần lượt là Slave 1, Slave 2, và Slave 3, theo thứ tự phản hồi khi được Master tìm kiếm và cấp địa chỉ.
Mỗi Slave Node được trang bị 3 cổng giao tiếp, tương thích với nhiều loại cảm biến và chuẩn khác nhau, bao gồm UART, Analog và Digital Đặc biệt, Port 3 của mỗi Node còn hỗ trợ các chuẩn giao tiếp I2C và SPI.
- Các Slave Node sẽ phản hồi hay thực hiện các lệnh: đọc cảm biến, gởi dữ liệu, tùy thuộc vào lệnh nhận được từ Master Node.
Slave Node cho phép người dùng dễ dàng thay đổi cảm biến và chuẩn giao tiếp mới mà không cần nạp lại chương trình Chỉ cần cài đặt các thông số cảm biến qua Menu điều khiển ở Master hoặc giao diện Google Sheet, người dùng có thể thay đổi nhiều loại cảm biến khác nhau trên cùng một Port.
Khi thay thế cảm biến A bằng cảm biến B tại Port 1 của Slave 1, không cần phải nạp lại chương trình cho Slave 1 Chỉ cần thực hiện cài đặt qua giao diện người dùng trên Master, và Master sẽ tự động thiết lập cho Slave 1.
Hình 3.7: Sơ đồ khối của nút Slave
Cấu trúc và chức năng các khối của các Slave Node
Khối Vi điều khiển sử dụng chip MSP430G2553, đóng vai trò là bộ xử lý trung tâm cho Slave Node, quản lý và điều khiển tất cả hoạt động của Slave Node một cách hiệu quả.
- Khối LoRa là công cụ giúp Slave và Master truyền - nhận tín hiệu, dữ liệu.
- Khối Port đảm nhiệm việc kết nối giữa các cảm biến và khối vi điều khiển.
- Khối Cảm biến là các cảm biến được kết nối, thực hiện đọc cảm biến theo yêu cầu.
3.3.2 Vi xử lí trung tâm
Chip sử dụng tại Slave là MSP430G2553 có sơ đồ chân chi tiết như hình 3.8:
Hình 3.8: Sơ đồ chân của chip MSP430G2553
• Giao tiếp UART : 1 bộ UART với P1.1 và P1.2
• Giao tiếp SPI : 1 bộ SPI với P1.4, P1.5, P1.6 và P1.7
• Giao tiếp I2C : 1 bộ với P1.6 và P1.7
Chip cơ bản đã tích hợp sẵn các chuẩn giao tiếp cần thiết cho hệ thống, nhưng chỉ có một bộ chuẩn UART được sử dụng cho module LORA trong quá trình truyền nhận dữ liệu Vì vậy, cần phát triển thêm thư viện mới cho chuẩn LORA nhằm đáp ứng yêu cầu của hệ thống.
3.3.3 Thiết kế chi tiết các Port
Để đảm bảo tính tương thích với nhiều chuẩn giao tiếp khác nhau, việc thiết kế các Port cần phải đồng thời phù hợp với nhiều chuẩn giao tiếp để có thể tích hợp hiệu quả Trong nghiên cứu này, chúng tôi thiết kế mỗi Slave với 3 Port, mỗi Port được tối ưu hóa cho các chuẩn giao tiếp khác nhau.
4 chân bao gồm: Nguồn, Mass, Xung Clock, Data Chân Nguồn được thiết kế linh hoạt với hai loại là 3.3V và 5V để cấp nguồn cho cảm biến.
- Với thiết kế này thì các cảm biến sẽ tương thích với các chân dữ liệu sau:
• Analog, Digital: sử dụng chân Data đọc dữ liệu, nguồn cung cấp có thể là 3.3V hoặc 5V tùy loại cảm biến.
UART sử dụng chân TX làm xung clock và chân RX làm dữ liệu, tương ứng với chân P1.2 và P1.1 Nguồn cung cấp có thể là 3.3V hoặc 5V tùy thuộc vào loại cảm biến.
• SPI: sử dụng các chân SDA, SCL, MOSI, MISO kết nối với các chân P1.4, P1.5, P1.7, P1.6, nguồn cung cấp có thể là 3.3V hoặc 5V tùy loại cảm biến.
• I2C: sử dụng chân Data là SDA và xung clock là SCL, ứng với P1.7 và P1.6, nguồn cung cấp có thể là 3.3V hoặc 5V tùy loại cảm biến.
Chúng em sẽ phát triển một thư viện mới cho giao tiếp UART trên chân GPIO, vì chân P1.1 và P1.2 đã được sử dụng cho việc truyền nhận qua LORA, nhằm mục đích đọc các cảm biến chuẩn UART.
Từ các chuẩn giao tiếp tương ứng với các chân trên chip, chúng em đã thiết kế cụ thể như sau:
Port 1 và Port 2 hỗ trợ các chuẩn Analog, Digital và UART, trong khi Port 3 mở rộng khả năng tương thích với các chuẩn Analog, Digital, UART, I2C và SPI Thiết kế chi tiết của Port 1 cung cấp tính năng linh hoạt và đa dạng cho các ứng dụng khác nhau.
Port 1 được thiết kế tương thích với các chuẩn giao tiếp: Analog, Digital, UART với tổng cộng 5 chân: nguồn nguồn (tùy chỉnh 5V hoặc 3.3V), mass và 3 chân dữ liệu.
- Chuẩn giao tiếp Analog, Digital sử dụng chuẩn giao tiếp được xây dựng sẵn trên chip MSP430G2553 ứng với P1.0
- Chuẩn giao tiếp UART được xây dựng thư viện mới cho chuẩn giao tiếp trên chân GPIO, cụ thể chân TX ứng với P2.0 và RX ứng với chân P2.1
Luận văn tốt nghiệp CBHD: TS Trần Nhựt Khải Hoàn
Hình 3.9: Sơ đồ chi tiết thiết kế Port 1
3 5 b Thiết kế chi tiết Port 2
Tương tự Port 1, Port 2 cũng tương thích với các chuẩn giao tiếp: Analog,
Digital, UART với tổng cộng 5 chân: nguồn nguồn (tùy chỉnh 5V hoặc 3.3V), mass và 3 chân dữ liệu.
- Chuẩn giao tiếp Analog, Digital sử dụng chuẩn giao tiếp được xây dựng sẵn trên chip MSP430G2553 ứng với P1.3
- Chuẩn giao tiếp UART được xây dựng thư viện mới cho chuẩn giao tiếp trên chân GPIO, cụ thể chân TX ứng với P2.3 và RX ứng với chân P2.2
Hình 3.10: Sơ đồ chi tiết thiết kế Port 2 c Thiết kế chi tiết Port 3
Port 3 được thiết kế tương thích với các chuẩn I2C và SPI, bổ sung thêm vào các chuẩn giao tiếp Port 1 và 2, với tổng cộng 6 chân bao gồm nguồn (tùy chọn 5V hoặc 3.3V), mass, xung clock và chân dữ liệu.
- Chuẩn giao tiếp Analog, Digital: P1.4
Hình 3.12: Sơ đồ nguyên lí của nút Slave
Nguồn cấp cho cảm biến được thiết kế tùy chỉnh với hai mức điện áp là 5V và 3.3V, phù hợp với từng loại cảm biến khác nhau Người dùng chỉ cần bật công tắc để dễ dàng chuyển đổi giữa các giá trị nguồn.
Hình 3.13: Hình ảnh bên trong nút Slave
Luận văn tốt nghiệp CBHD: TS Trần Nhựt Khải Hoàn
Hình 3.14: Hình ảnh bên ngoài của nút Slave
Hình 3.15: Hình ảnh cạnh bên của nút Slave
Hình ảnh bố trí các Port
Hình 3.16: Hình ảnh bố trí các Port của nút Slave
Chi tiết hoạt động của các Port
Mỗi Slave có cấu trúc gồm có 3 Port, mỗi Port được thiết kế tương thích với các chuẩn giao tiếp khác nhau, cụ thể như sau:
- Port 1, 2 có thể tương thích với các chuẩn UART, Analog, Digital.
- Port 3 tương thích với các chuẩn Analog, Digital, I2C, UART, SPI.
Ngoài ra, còn có bộ nguồn tùy chỉnh cho người dùng lựa chọn nguồn 5V hay 3.3V tùy loại cảm biến khác nhau.
Mỗi cổng của Slave sẽ được kết nối với một loại cảm biến nhất định tại thời điểm cụ thể, tùy thuộc vào yêu cầu sử dụng Điều này cho phép linh hoạt trong việc thiết lập và quản lý các cảm biến khác nhau.
• Trường hợp 1: gắn cảm biến vào đầy đủ các Port, như vậy sẽ có 3 cảm biến
(cùng loại hoặc khác loại) được gắn tương ứng với 3 Port.
•Trường hợp 2: một hoặc một số Port không được cài đặt cảm biến
Mỗi Slave được thiết kế với 3 Port, nhưng người dùng có thể chỉ cần sử dụng 1 hoặc 2 Port để đọc giá trị từ cảm biến Để không sử dụng Port nào, chỉ cần để trống vị trí đó và vào Menu ở Master hoặc Giao diện người dùng trên Google Sheets để xóa Port tương ứng Khi cần sử dụng lại Port đã bỏ trống, người dùng chỉ cần thực hiện các bước tương tự và kết nối cảm biến vào Tất cả các thay đổi này diễn ra tự động mà không cần nạp lại chương trình phần mềm cho cả Master và Slave.
• Trường hợp 3: tất cả các Port đều không được cài đặt cảm biến
Trong trường hợp hệ thống chỉ cần một Slave hoạt động, người dùng có thể dễ dàng xóa các Slave không cần thiết thông qua Menu ở Master hoặc Giao diện người dùng trên Google Sheets Khi muốn kết nối lại, chỉ cần bật Slave lên và thiết bị sẽ tự động kết nối mà không cần nạp lại chương trình phần mềm cho cả Master và Slave Tất cả các thay đổi này được thực hiện hoàn toàn tự động.
Tất cả các thay đổi như gắn cảm biến mới, đổi cảm biến, xóa Port hay xóa Slave đều diễn ra tự động mà không cần nạp lại chương trình cho toàn bộ hệ thống.
THIẾT KẾ PHẦN MỀM
Giải thuật chạy trên bộ xử lí trung tâm
Gửi mã tìm kiếm (0xff) để tìm các Slave mới, khi nhận được phản hồi, hệ thống sẽ cấp địa chỉ cho các Slave (0x01, 0x02, 0x03,…) Những địa chỉ này sẽ được sử dụng khi Master cần yêu cầu Slave thực hiện nhiệm vụ.
- Thiết lập các Port của Slave kết nối với cảm biến (có thể thiết lập bằng bảng điều khiểu trên Google sheets hoặc bằng bảng điều khiển trên Master).
Thông tin về Slave, bao gồm tên, loại cảm biến và số byte dữ liệu của từng port, được Master lưu trữ trên EEPROM Master sẽ phân tích và tổng hợp gói dữ liệu, sau đó gửi cho ESP8266 thông tin gồm địa chỉ Slave, số byte tại từng port và cảm biến tương ứng Sau khi hoàn tất việc gửi thông tin, Master sẽ tiến hành gửi gói dữ liệu.
Dữ liệu được chia thành từng Byte riêng lẻ và được chèn thêm bit kiểm tra chẵn-lẻ trước khi gửi từ Slave đến Master Master sẽ kiểm tra tính chính xác của dữ liệu trước khi chuyển tiếp lên ESP8266 Tại ESP8266, dữ liệu sẽ được ghép lại thành dạng gốc để chuẩn bị gửi lên Google Sheets, trang web điều khiển của hệ thống.
- Dữ liệu được cập nhật trên Google Sheets dưới dạng bảng.
4.1.2 Bố trí vùng nhớ Địa chỉ tại
EEPROM Nội dung lưu trữ Địa chỉ tại
EEPROM Nội dung lưu trữ Địa chỉ slave
11 Số Byte Port1 41 Thông tin Port1
12 Số Byte Port2 42 Thông tin Port2
13 Số Byte Port3 43 Thông tin Port3
21 Số Byte Port1 51 Thông tin Port1
22 Số Byte Port2 52 Thông tin Port2
23 Số Byte Port3 53 Thông tin Port3
31 Số Byte Port1 61 Thông tin Port1
32 Số Byte Port2 62 Thông tin Port2
33 Số Byte Port3 63 Thông tin Port3
Bảng 4.1: Tổ chức dữ liệu EEPROM tại Master
4.1.3 Bảng mã lệnh và chú thích
Bảng 4.2: Bảng tập lệnh điều khiển
TT Tên lệnh Mã lệnh Ý nghĩa
1 timkiem 0xff Tìm kiếm Slave mới
2 Slave1 0x01 Đặt tên cho Slave1
3 Slave2 0x02 Đặt tên cho Slave2
4 Slave3 0x03 Đặt tên cho Slave3
5 batdau 0x00 Bắt đầu một tiến trình mới
6 Read_data 0xaa Yêu cầu Slave thu thập dữ liệu từ cảm biến
7 Receive_data 0xbb Yêu cầu Slave gửi dữ liệu
8 Del_P1 0xa1 Yêu cầu xóa Port giao tiếp cảm biến 1
9 Del_P2 0xa2 Yêu cầu xóa Port giao tiếp cảm biến 2
10 Del_P3 0xa3 Yêu cầu xóa Port giao tiếp cảm biến 3
11 Del_Slave 0xa5 Xóa Slave
Bảng 4.2: Các mã lệnh điều khiển Slave của Master
Bảng 4.3: Bảng tập lệnh cảm biến
TT Nhóm lệnh Tên lệnh Mã lệnh Ý nghĩa
Bảng 4.3: Tập lệnh cài đặt Slave của Master Master
Nhận đủ dữ liệu trong 6s S Đ
Nhận lệnh cài đặt từ ESP gửi về
Gửi dữ liệu đến ESP8266 Gửi khung lệnh
Gửi lệnh cập nhật đến Slave đã kết nối
Khởi tạo LoRa, khởi tạo OLED, khởi tạo khối nút ấn Menu
Cấp địa chỉ cho Slave mới
Gửi khung lệnh Read_data
Xóa địa chỉ Slave vừa cấp Gửi lệnh tìm kiếm Slave mới
4.1.4 Lưu đồ chương trình và chi tiết hoạt động
Lưu đồ giải thuật tại Master
Hình 4.1 Lưu đồ giải thuật cho Master
Khi hệ thống được cấp nguồn, MCU khởi động và khởi tạo giao tiếp LoRa (UART) để truyền nhận tín hiệu với các thiết bị Slave Đồng thời, màn hình OLED cũng được khởi tạo qua giao tiếp I2C, và các nút ấn điều khiển được thiết lập để quản lý các thiết bị Slave.
Khi có yêu cầu cập nhật dữ liệu từ Google Sheets (Gsheet), Master sẽ gửi yêu cầu đến ESP8266 và chờ nhận lệnh cập nhật Sau khi nhận lệnh, Master sẽ phân tích và gửi lệnh cài đặt từ Gsheet đến các Slave đã kết nối.
Master sẽ gửi mã tìm kiếm (0xff) để quét các Slave xung quanh trong 2 giây Nếu có phản hồi từ Slave mới, Master sẽ cấp địa chỉ cho Slave đó Sau đó, Master sẽ chờ tín hiệu phản hồi từ Slave để xác nhận việc cập nhật địa chỉ Nếu không nhận được phản hồi sau 1 giây, Master sẽ xóa địa chỉ vừa cấp và tiếp tục công việc khác Ngược lại, nếu nhận được phản hồi thành công, Master sẽ gửi lệnh bắt đầu (0x00) cho tất cả các Slave kết nối, khiến các Slave vào chế độ chờ và thực thi lệnh do Master yêu cầu.
Master sẽ cài đặt cảm biến cho từng port của các Slave bằng cách gửi lệnh bắt đầu, địa chỉ Slave chỉ định và lệnh cài đặt cảm biến Sau đó, Master chỉ định Slave cần đọc cảm biến thông qua khung lệnh Read_data, chờ 1,5 giây để Slave thực hiện việc đọc và yêu cầu Slave gửi dữ liệu về Master bằng khung lệnh Receive_data.
Thời gian chờ nhận dữ liệu tổng cộng là 6 giây, bao gồm 1 giây để nhận địa chỉ và 5 giây cho dữ liệu Sau khi nhận đủ số byte, Master sẽ kiểm tra lỗi bằng cách đếm số bit 1 trong dữ liệu Tiếp theo, Master thực hiện phép EX-OR toàn bộ dữ liệu từ Slave Nếu kết quả EX-OR bằng 0 và không có lỗi nào ở các byte, dữ liệu sẽ được gửi đến ESP8266.
Vậy khung truyền sẽ được tùy biến theo cách thức hoạt động của hệ thống
Mã lệnh Address Mã lệnh cài đặt
- Khung dữ liệu sẽ là 1 Byte chỉ có mã lệnh nếu tìm kiếm thiết bị mới (timkiem).
- Khung dữ liệu là 3 Byte nếu điều khiển các Slave.
Ví dụ: cài đặt cảm biến DHT11 cho Port1của Slave 1.
1 Byte 1 Byte 1 Byte batdau (0x00) 0x01 (Slave1) DHT1 (0x11)
Ví dụ: yêu cầu gửi dữ liệu Slave 1.
1 Byte 1 Byte 1 Byte batdau (0x00) 0x01 (Slave1) Receive_data (0xbb)
Gửi lệnh cập nhật Gsheet đến ESP8266
Nhận đủ dữ liệu trong 2.5s S Đ
Kết thúc Gửi lệnh xóa Slave và xóa EEPROM của Slave
Gửi lệnh xóa Port và xóa thông tin Port trong EEPROM
Cài đặt cảm biến theo yêu cầu Web và lưu thay đổi vào EEPROM
4.1.5 Chương trình con nhận lệnh cài đặt từ ESP gửi về
Khi người dùng thiết lập trạng thái các Slave trên Google Sheets, ESP8266 sẽ thu thập thông tin và gửi về cho Master Master sẽ xử lý dữ liệu này thông qua chương trình con được mô tả trong lưu đồ giải thuật tại Hình 4.2.
Lưu đồ giải thuật Hình 4.2 là chương trình con “Nhận lệnh cài đặt từ ESP gửi về” trong lưu đồ Hình 4.1.
Hình 4.2 Lưu đồ giải thuật cho chương trình con nhận lệnh cài đặt từ ESP gửi về
Lệnh nhận thông tin từ MasterĐ Đ
Nhận đủ thông tin 2s Nhận dữ liệu trong 6s Đ
Lệnh cập nhật dữ liệu Đ Địa chỉ Slave cập nhật Đ
Lấy thông tin cập nhật từ Web về bộ nhớ tạm
Gửi thông tin cập nhật về Master
Tách/ ghép dự liệu và gửi đến Gsheet Tách và phân tích thông tin
4.1.6 Website điều khiển – Google Sheets (Gsheet)
ESP8266 là thiết bị kết nối để hệ thống có thể truy cập Internet và tương tác với Google Sheets.
Khi Master gửi dữ liệu cảm biến cho ESP8266, nó sẽ thực hiện việc kiểm tra lỗi, nếu không có lỗi thì sẽ gửi dữ liệu lên Google Sheets.
Hình 4.3 là lưu đồ giải thuật chương trình xử lý/truy xuất dữ liệu Google Sheets:
Hình 4.3 Lưu đồ giải thuật cho ESP8266
Trước khi Master gửi dữ liệu đến ESP8266, Master sẽ cung cấp thông tin về cảm biến và số byte cần thiết Sau đó, ESP8266 sẽ xử lý thông tin này và lưu trữ để chờ nhận khung dữ liệu.
Sau khi nhận đủ khung dữ liệu, ESP8266 sẽ tiến hành ghép dữ liệu đã tách, được mô tả chi tiết trong phần 4.4 Cuối cùng, nó sẽ gửi dữ liệu lên Google Sheets và quay lại bước tìm kiếm Slave mới; nếu không đúng, sẽ tiếp tục tìm kiếm Slave.
Khi Master yêu cầu truy xuất dữ liệu từ Google Sheets, hệ thống sẽ kết nối với Website để lấy thông tin cập nhật Sau khi nhận tín hiệu từ Master, ESP8266 sẽ gửi toàn bộ dữ liệu đã đọc từ Website về cho từng Slave một cách riêng biệt.
Lệnh lấy dữ liệu từ Gsheet về S Đ
Nhận JSON, xử lý thông tin và lưu trữ trong bộ nhớ tạm Truy cập vào WEB hỗ trợ để lấy JSON của Gsheet
Khi cảm biến DHT11 cung cấp hai luồng dữ liệu riêng biệt về độ ẩm và nhiệt độ, ESP sẽ nhận thông tin từ Master và phân loại dữ liệu thành hai loại trước khi gửi tới Google Sheets Dữ liệu này sẽ được tải lên hai cột khác nhau trong Google Sheets Nếu không có dữ liệu, Google Sheets sẽ ghi giá trị 0 vào cột tương ứng với dữ liệu không có.
Lưu đồ giải thuật cho chương trình con lấy thông tin cập nhật từ Web về bộ nhớ tạm trên ESP8266
Hình 4.4 mô tả giải thuật lấy thông tin cập nhật từ Web về bộ nhớ tạm trên ESP8266
Hình 4.4 Lưu đồ giải thuật cho chương trình con lấy thông tin cập nhật từ Web về bộ nhớ tạm trên ESP8266
Khi Master yêu cầu cập nhật dữ liệu từ Google Sheets, ESP8266 sẽ truy cập vào WEB GSX2JSON để lấy dữ liệu JSON Sau khi thu thập, ESP8266 sẽ xử lý thông tin bằng cách tách chuỗi JSON để lấy trạng thái của Slave và thông tin cảm biến tại các cổng, sau đó lưu trữ vào bộ nhớ tạm Khi nhận lệnh gửi thông tin cập nhật từ Master, ESP8266 sẽ gửi dữ liệu cập nhật từ Google Sheets cho Master theo thông tin riêng biệt của từng Slave.
Thông tin cảm biến Port 1
Thông tin cảm biến Port 2
Thông tin cảm biến Port 3
1 (Slave1) 1 (ON) 1 (DHT11) 2 (US015) 3 (LM35)
Bắt đầu Khởi tạo các biến
Dữ liệu được gửi lên WEB Đ
Kết thúc Xuất dữ liệu ra vị trí tương ứng trên Gsheet
Lưu đồ giải thuật cho chương trình con xuất dữ liệu tại Google Sheets:
Google Script thiết lập các thông số để nhận giá trị từ ESP8266 Khi ESP8266 gửi dữ liệu, trang Web sẽ phân tích chuỗi URL và thu thập toàn bộ dữ liệu được gửi Chuỗi này sẽ được kiểm tra theo các biến đã được thiết lập trong Google Script của Google Sheets và gửi giá trị vào các ô đã chỉ định trên trang tính Hình 4.5 mô tả quy trình xuất dữ liệu tại Google Sheets của hệ thống.
Hình 4.5 Lưu đồ giải thuật cho chương trình con xuất dữ liệu tại Google Sheets
4.1.7 Lưu đồ giải thuật cho khối điều khiển các Slave trên MENU (Interrupt)
Khi hệ thống được cấp nguồn, sẽ khởi tạo LoRa, màn hình Oled và các nút ấn điều khiển sẽ được khởi tạo để điều khiển các Slave.
Giải thuật trên các nút cảm biến và điều khiển (Slave)
-Làm việc theo sự điều khiển của Master.
Các Slave sẽ tự động nhận địa chỉ từ Master và duy trì địa chỉ này ngay cả sau khi xảy ra sự cố mất điện hoặc mất kết nối, giúp chúng kết nối trở lại với hệ thống một cách dễ dàng.
Các cổng đa năng tương thích với nhiều chuẩn giao tiếp khác nhau, cho phép tùy chỉnh dễ dàng mà không cần phải nạp lại chương trình cho vi xử lý.
Slave sẽ xử lý dữ liệu trước khi gửi đến Master bằng cách tách thành từng Byte và thêm bit kiểm tra chẵn – lẻ Các dữ liệu này sau đó được thực hiện phép EX-OR để tạo ra một Byte kiểm tra BSC Khi quá trình gửi dữ liệu hoàn tất, Byte BSC sẽ được gửi đi để Master có thể kiểm tra độ chính xác của dữ liệu.
4.2.2 Bố trí vùng nhớ cho Slave
Vùng nhớ của Slave được bố trí để lưu trữ tên Slave, thông tin cảm biến và số Byte của cảm biến tại từng port.
Bố trí vùng nhớ trên EEPROM giúp đảm bảo rằng địa chỉ của các Slave không bị mất khi xảy ra sự cố như mất điện hoặc mất kết nối Khi nguồn điện trở lại, các Slave sẽ tự động kết nối vào hệ thống qua địa chỉ đã được thiết lập trước đó.
Bảng 4.4 và 4.5 mô tả cách thức tổ chức các Slave được lưu trữ trong EEPROM và lưu trữ trong RAM:
Bảng 4.5: Tổ chức dữ liệu Bảng 4.4: Tổ chức Slave Địa chỉ tại
EEPROM Nội dung lưu trữ
4.2.3 Bảng mã lệnh và chú thích
Bảng 4.6: Bảng tập lệnh điểu khiển tại Slave
STT Tên Lệnh Mã Lệnh Ý Nghĩa
1 RepNew 0xf0 Phản hồi khi Master tìm kiếm thiết bị
2 RepAdd 0xf1 Phản hồi khi được cấp địa chỉ
3 Slave1 0x01 Trả lời khi có lệnh cài đặt hoặc lệnh đọc cảm biến khi nó được đặt tên là Slave 1
4 Slave2 0x02 Trả lời khi có lệnh cài đặt hoặc lệnh đọc cảm biến khi nó được đặt tên là Slave 2
5 Slave3 0x03 Trả lời khi có lệnh cài đặt hoặc lệnh đọc cảm biến khi nó được đặt tên là Slave 3
Bảng 4.6: Tập lệnh điều khiển tại Slave
Các lệnh điều khiển đóng vai trò quan trọng trong việc phản hồi thông tin từ các Slave về Master cho từng công việc cụ thể Điều này giúp Master đánh giá và xác nhận xem thông tin đã được truyền đạt đến các Slave hay chưa.
Chờ lệnh cấp địa chỉ Đ
Gửi lệnh phản hồi RepAdd
Gửi lệnh phản hồi RepNew
Lệnh bắt đầu S Đ Địa chỉ Slave S Đ
Lệnh đọc cảm biến Lệnh gửi dữ liệu Đ Đ Đ
Cài đặt Slave Đọc cảm biến
4.2.4 Lưu đồ chương trình và chi tiết hoạt động
Lưu đồ giải thuật của Slave
Hình 4.7: Lưu đồ giải thuật cho Slave
Khi được cấp nguồn, Slave khởi tạo LoRa và chờ lệnh từ Master Khi nhận lệnh tìm kiếm (0xff), Slave sẽ gửi phản hồi RepNew (0xf0) Sau khi được gán địa chỉ, Slave xác nhận với Master bằng RepAdd (0xf1) và vào chế độ đăng nhập, không thoát ra dù có reset Khi Master gửi lệnh bắt đầu (0x00), Slave chờ được gọi tên; nếu đúng tên, Slave sẽ tiếp tục chờ lệnh từ Master để thực hiện nhiệm vụ tương ứng.
Khi Master yêu cầu đọc cảm biến, cảm biến sẽ gửi địa chỉ của mình cho Master, sau đó thực hiện quá trình đọc dữ liệu và quay lại trạng thái chờ mã bắt đầu.
Khi Master yêu cầu dữ liệu cảm biến, Slave sẽ gửi dữ liệu kèm theo 1 byte kiểm tra lỗi BSC Sau khi hoàn thành nhiệm vụ, Slave sẽ trở lại trạng thái chờ mã bắt đầu.
Trong dữ liệu đã kèm theo một bit kiểm tra chẳn-lẻ.
Khi Master yêu cầu cài đặt kết nối cảm biến, hệ thống sẽ thực hiện theo yêu cầu dựa trên loại cảm biến và dung lượng Byte được thiết lập, dẫn đến việc khung truyền sẽ thay đổi tương ứng với số Byte đã cài đặt.
4.2.5 Các chương trình con của Slave khi nhận lệnh
Các Slave hoạt động theo yêu cầu cụ thể từ Master; khi nhận lệnh, chúng sẽ thực hiện các chương trình con tương ứng.
Đọc cảm biến: tiến hành đọc các giá trị cảm biến được cài đặt và xử lí dữ liệu.
Gửi dữ liệu: các dữ liệu sau khi được thu thập sẽ được gửi về Master khi nhận được yêu cầu.
Cài đặt Slave: gồm có 2 chương trình con
• Cài đặt cảm biến: cài đặt các cảm biến theo như thiết lập ở Master.
• Xóa Slave/Port: thiết lập trạng thái xóa Slave/Port theo yêu cầu của Master.
Bảng 4.7 là lưu đồ giải thuật các chương trình con của Slave thực hiện khi nhận được lệnh cho từng công việc cụ thể từ Master
1 Byte Từ 3 đến 24 Byte 1 Byte
Address data BSC Đọc cảm biến Gửi dữ liệu
Bắt đầu Đọc cảm biến được cài đặt
Tách dữ liệu theo số Byte của từng
Chèn bit kiểm tra chẵn-lẻ và
EXOR tất cả Byte dự liệu
Gửi từng Byte dữ liệu đã được chèn bit kiểm tra
Bắt đầu Đ Cài đặt cảm
Hình 4.8: Lưu đồ giải thuật các chương trình con tại Slave
Xây dựng thư viện chuẩn giao tiếp UART trên MSP430G2553
4.2.6 Vì sao cần xây dựng thư viện chuẩn giao tiếp UART
Chip MSP430G2553 chỉ tích hợp một bộ chuẩn giao tiếp UART (RX, TX tại P1.1 và P1.2), nhưng bộ giao tiếp này đã được sử dụng cho module LoRa UART, phục vụ cho việc truyền và nhận dữ liệu không dây trong hệ thống.
Nhu cầu đọc cảm biến chuẩn UART của hệ thống không thể thực hiện được do thiếu chuẩn giao tiếp.
Từ những yêu cầu đó, vấn đề đặt ra cho đề tài là cần thiết kế thêm bộ chuẩn giao tiếp UART cho chip MSP430G2553.
4.2.7 Cơ sở lý thuyết chuẩn giao tiếp UART
UART – Uniseral Asynchronous Receiver/Transmitter – bộ truyền nhận dữ liệu nối tiếp bất đồng bộ, thường được dùng để truyền nhận dữ liệu giữa hai hay
Luận văn tốt nghiệp CBHD: TS Trần Nhựt Khải Hoàn
5 6 nhiều thiết bị khác nhau, được giao tiếp với nhau qua chuẩn UART Trong giao thức UART
Luận văn tốt nghiệp CBHD: TS Trần Nhựt Khải Hoàn
Để đảm bảo hiệu quả trong việc truyền dữ liệu, cần kết hợp với các thiết bị chuyển đổi mức điện áp, bao gồm các thông số khung truyền như baud rate (tốc độ truyền), độ dài khung, điểm dừng (stop), điểm bắt đầu (start), các bit dữ liệu (data bits) nhất định và bit kiểm tra chẵn lẻ (parity).
UART là giao tiếp không đồng bộ, do đó để hai thiết bị có thể trao đổi thông tin hiệu quả, cần thống nhất các đặc điểm như tốc độ truyền và cấu trúc khung truyền giữa chúng.
- Tốc độ truyền nhận dữ liệu của UART gọi là Baud Rate (tốc độ Baud) : Số bit truyền được trong 1s Ví dụ Baud rate là 9600 : tức là truyền 9600 bit/1s
- UART có 2 đường truyền và nhận dữ liệu riêng biệt do đó nó có thể đồng thời vừa truyền, vừa nhận dữ liệu một lúc (truyền song công)
Hình 4.9 là sơ đồ phần cứng của giao tiếp UART
Hình 4.9: sơ đồ phần cứng UART
Giao tiếp UART được thực hiện qua 2 chân TX và RX, trong đó:
- RX: Chân nhận dữ liệu
- TX: Chân truyền dữ liệu
Yếu tổ nhỏ nhất của quá trình truyền dữ liệu là UART frame – hay còn gọi là UART character UART frame có cấu trúc như sau:
Hình 4.10: Khung truyền của UART
Luận văn tốt nghiệp CBHD: TS Trần Nhựt Khải Hoàn
• Start bit : bit đầu tiên trong khung truyền, báo hiệu quá trình truyền dữ liệu
• Data Bits : dữ liệu cần giao tiếp , có thể gồm 5,6,7,8,9 bit, nhưng thông thường hay để định dạng dữ liệu 8 bits (1 byte).
• Parity bit : Bit kiểm tra chẵn lẻ , dùng khi muốn kiểm tra lỗi
• Stop bit : gồm 1 hoặc 2 bit dùng để kết thúc một khung truyền
• IDLE : trạng thái nghỉ , phải ở mức cao
Các thanh ghi trong UART của MSP430G2553
- UCA0CTL0: Thanh ghi 8 bits dùng để thiết lập chế độ truyền thông trong UART.
- UCA0CTL1: Thanh ghi 8 bits dùng để thiết lập nguồn xung clock cho
- UCA0MCTL: Thanh ghi 8 bits dùng để thiết lập tốc độ baud giữa thiết bị truyền và nhận.
- UCA0TXBUF: Thanh ghi đệm truyền dữ liệu 8 bits.
- UCA0RXBUF: Thanh ghi đệm nhận dữ liệu 8 bits.
Dữ liệu truyền vào thanh ghi đệm UCA0TXBUF sẽ được truyền ra chân TXD qua thanh ghi dịch Cờ TXIFG được kích hoạt khi bộ đệm và thanh ghi dịch trống, và sẽ được reset khi dữ liệu được đưa vào UCA0TXBUF và được truyền đi Khi cờ ngắt TXIFG được kích hoạt, một yêu cầu ngắt sẽ phát sinh nếu bit TXIE và GIE được thiết lập.
Khi dữ liệu được truyền đến chân RXD và đi qua thanh ghi dịch vào thanh ghi đệm RXBUF, cờ ngắt sẽ được kích hoạt Một yêu cầu ngắt sẽ phát sinh nếu bit RXIE và GIE được thiết lập Cờ RXIFG sẽ được đặt lại sau khi chương trình phục vụ ngắt hoàn tất hoặc khi dữ liệu đã được đọc từ thanh ghi RXBUF.
4.2.8 Xây dựng chân truyền TX
Theo như thiết kế phần cứng, chip MSP430G2553 cần thiết lập chân truyền
tiết tiến trình truyền dữ liệu - Chi cách thức xử lý khung dữ liệu
Bảng 5.1 thể hiện trạng thái các Port và thông số cảm biến được gắn vào mỗi
SLAVE PORT CẢM BIẾN NGUỒN
Bảng 5.1: Bảng trạng thái điều khiển của Port tại các Slave
Hình 5.1 là hình ảnh Master khi được bật nguồn và ở trạng thái hoạt động.
Hình 5.1: Khối Master khi hoạt động
Từ Bảng 5.1, việc thiết lập điều khiển tại Master có thể được thực hiện bằng
Thiết lập điều khiển bằng Menu ở Master
Thiết lập điều khiển bằng Google Sheets
5.1.1 Thiết lập điều khiển bằng Menu ở Master
Menu điều khiển gồm có 3 nút nhấn với chức năng như sau: