Mục lục:
- Bước 1: Thiết kế giao diện người dùng
- Bước 2: Giao tiếp MCU
- Bước 3: Viết mã logic
- Bước 4: Mua lại cảm biến
- Bước 5: Hiệu quả hoạt động thực tế
Video: STONE LCD với Nhà thông minh: 5 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:30
Hôm nay, tôi nhận được màn hình ổ đĩa cổng nối tiếp của STONE, có thể giao tiếp thông qua cổng nối tiếp của MCU và thiết kế logic giao diện người dùng của màn hình này có thể được thiết kế trực tiếp bằng cách sử dụng phần mềm VGUS được cung cấp trên trang web chính thức của STONE, điều này rất thuận tiện cho chúng tôi. Vì vậy, tôi dự định sử dụng nó để làm một bộ điều khiển thiết bị đơn giản, bao gồm điều khiển các đèn khác nhau (phòng khách, nhà bếp, phòng trẻ em, phòng tắm). Đồng thời, có thể thu thập nhiệt độ, độ ẩm, chất lượng không khí trong nhà và ngoài trời. Đây chỉ là một bản demo đơn giản và bạn có thể tiến hành phát triển thứ cấp thông qua mã mà tôi đã cung cấp. Một số hướng dẫn cơ bản về màn hình ĐÁ có thể vào trang web:
Trang web có nhiều thông tin về mô hình, người dùng và tài liệu thiết kế, cũng như các video hướng dẫn. Tôi sẽ không đi vào quá nhiều chi tiết ở đây.
Bước 1: Thiết kế giao diện người dùng
Photoshop
Tôi đã thiết kế hai trang giao diện người dùng sau bằng photoshop:
Dự án này có tổng cộng hai trang trên. "Light" và "Sensor" ở góc trên bên phải là nút chuyển đổi của hai trang này.
Trong trang "Ánh sáng", bạn có thể điều khiển tất cả các loại đèn trong nhà của mình. Trong trang "Cảm biến", bạn có thể kiểm tra các giá trị được phát hiện bởi các cảm biến khác nhau.
Sau khi thiết kế xong 2 trang trên, chúng ta có thể tiến hành thiết kế logic nút thông qua phần mềm STONE TOOL được cung cấp trên trang web chính thức của STONE.
Điều đáng chú ý là nguồn xung nhịp được sử dụng để hiển thị thời gian ở đây là nguồn xung nhịp của màn hình hiển thị, không phải nguồn xung nhịp MCU.
Hiệu ứng chuyển đổi trang TAB
Không tìm thấy thành phần chuyển trang TAB nào trong phần mềm STONE TOOL, vì vậy tôi đã nghĩ ra một phương pháp khác để đạt được hiệu ứng chuyển trang TAB.
Qua quan sát tôi cung cấp hai hình ảnh UI có thể thấy rằng hai hình ảnh trên là chữ "Ánh sáng" và "Cảm biến", điểm khác biệt là kích thước điểm ảnh của chúng khác nhau, nên chúng ta chỉ cần đặt vị trí hai điểm ảnh là được cùng một văn bản, và sau đó thông qua góc trên bên trái của ngày và giờ để tham khảo, bạn có thể đạt được TAB để chuyển đổi hiệu ứng.
Logic nút
Lấy nút "Phòng khách" làm ví dụ. Khi người dùng nhấn nút này, màn hình hiển thị cổng nối tiếp STONE sẽ gửi các hướng dẫn giao thức tương ứng thông qua cổng nối tiếp. Sau khi nhận được chỉ dẫn này, MCU của người dùng sẽ phân tích cú pháp giao thức để điều khiển trạng thái chuyển mạch của đèn được kết nối với MCU.
Thu nhận cảm biến
Lấy ví dụ "chất lượng không khí": nếu bạn muốn có được chất lượng không khí trong nhà, chúng ta phải có MCU để thu thập chất lượng không khí, cảm biến chất lượng không khí khi số MCU được thu thập thông qua thuật toán so sánh ưu và nhược điểm của chất lượng không khí và sau đó MCU được gửi qua một cổng nối tiếp để hiển thị vùng lưu trữ "Tốt" hoặc "Xấu", để thay đổi nội dung hiển thị "Biến văn bản0" và sau đó người dùng có thể nhìn thấy trực quan giá trị của việc kiểm soát chất lượng. Những điều này được giải thích sau trong mã MCU.
Bước 2: Giao tiếp MCU
STM32 là MCU mà mọi người đều quen thuộc, và nó là một mô hình MCU phổ biến ở quốc tế. Do đó, mô hình cụ thể của MCU STM32 mà tôi sử dụng trong dự án này là STM32F103RCT6.
Có nhiều dòng STM32, có thể đáp ứng nhiều nhu cầu khác nhau của thị trường. Nhân có thể được chia thành cortex-m0, M3, M4 và M7, và mỗi nhân có thể được chia thành các loại chính, hiệu suất cao và tiêu thụ điện năng thấp.
Hoàn toàn từ góc độ học tập, bạn có thể chọn F1 và F4, F1 đại diện cho loại cơ bản, dựa trên nhân cortex-m3, tần số chính là 72MHZ, F4 đại diện cho hiệu suất cao, dựa trên nhân cortex-m4, chính tần số là 180M.
Còn đối với F1, F4 (429 series trở lên), ngoài kernel khác và cải tiến tần số chính, đặc điểm nổi bật của bản nâng cấp là bộ điều khiển LCD và giao diện camera, hỗ trợ SDRAM, sự khác biệt này sẽ được ưu tiên trong việc lựa chọn dự án. Tuy nhiên, ở góc độ giảng dạy đại học và bước đầu tìm hiểu của người dùng, dòng F1 vẫn là lựa chọn hàng đầu. Hiện tại, STM32 thuộc dòng F1 có số lượng nguyên liệu và sản phẩm lớn nhất trên thị trường.
Về phương pháp cài đặt và tải xuống chương trình trong môi trường phát triển STM32 SCM, tôi sẽ không giới thiệu.
Khởi tạo GPIO
Trong dự án này, chúng tôi đã sử dụng tổng cộng 4 GPIO, một trong số đó là chân đầu ra PWM. Đầu tiên chúng ta hãy xem xét việc khởi tạo ba cổng GPIO thông thường:
Chức năng này khởi tạo PB0 / PB1 / PB2 của STM32F103C8 làm chân đầu ra và gọi nó từ chức năng chính. Sau khi khởi tạo, chúng ta cần có một logic để điều khiển trạng thái đầu ra, mức cao và thấp của GPIO này, vì vậy tôi đã viết hàm như dưới đây:
Đây là một hàm mà bạn có thể hiểu trực quan bằng tên của biến.
Khởi tạo cổng nối tiếp
Phần khởi tạo của cổng nối tiếp nằm trong uart.c:
Sau đó gọi uart_init trong hàm main để khởi tạo tốc độ truyền của cổng nối tiếp là 115200. Các chân sử dụng PA9 / PA10
Khởi tạo PWM
Các bước cụ thể:
1. Đặt đồng hồ RCC;
2. Đặt đồng hồ GPIO; Chế độ GPIO phải được đặt thành GPIO_Model_AF_PP hoặc thành hàm GPIO_PinRemapConfig () nếu cần thiết lập lại pin.
3. Đặt các thanh ghi có liên quan của bộ định thời TIMx;
4. Đặt thanh ghi liên quan đến PWM của bộ định thời TIMx;
A. Đặt chế độ PWM
B. Đặt chu kỳ nhiệm vụ (tính toán theo công thức)
C. Đặt cực tính so sánh đầu ra (đã giới thiệu trước đây)
D. Quan trọng nhất, kích hoạt trạng thái đầu ra của TIMx và kích hoạt đầu ra PWM của TIMx; Sau khi hoàn tất các Cài đặt liên quan, bộ hẹn giờ TIMx được bật bởi TIMx_Cmd () để thu được đầu ra PWM. Gọi TIM3_PWM_Init này từ hàm chính.
Bước 3: Viết mã logic
Hiển thị định nghĩa địa chỉ thành phần
Các thành phần của màn hình có các địa chỉ riêng biệt và ở đây tôi đã viết tất cả chúng dưới dạng định nghĩa macro:
Nhìn vào thông tin về màn hình STONE, bạn có thể thấy rằng khi nhấn nút, cổng nối tiếp trên màn hình sẽ gửi các giao thức ở định dạng thích hợp mà MCU người dùng có thể nhận và phân tích cú pháp. Khi nhấn nút, cổng nối tiếp trên màn hình sẽ gửi chín byte dữ liệu, bao gồm cả dữ liệu người dùng. Nhận dữ liệu nối tiếp được ghi trong Trình xử lý: Dữ liệu nhận được được lưu trữ trong mảng "USART_RX_BUF". Trong dự án này, độ dài nhận được là cố định. Khi độ dài nhận lớn hơn 9 byte, kết thúc nhận được đánh giá.
Kiểm soát trạng thái chuyển đổi của đèn
Trong chức năng chính, tôi đã viết một số mã logic để điều khiển trạng thái chuyển đổi của đèn: Như chúng ta thấy, mã đầu tiên xác định xem dữ liệu cổng nối tiếp có được nhận hay không và khi nhận dữ liệu cổng nối tiếp, xác định nút nào người dùng. nhấn trên màn hình hiển thị. Các nút khác nhau trên màn hình có địa chỉ khác nhau, có thể thấy trong phần mềm CÔNG CỤ ĐÁ: Khi người dùng nhấn nút "Phòng khách", bit thứ tư và thứ năm của dữ liệu được gửi ra bởi cổng nối tiếp của màn hình hiển thị là địa chỉ của nút. Vì bit thứ tư của tất cả các nút được đặt ở đây là 0x00, chúng tôi có thể đánh giá người dùng nhấn nút nào bằng cách đánh giá trực tiếp dữ liệu của bit thứ năm. Sau khi nhận được nút do người dùng nhấn, chúng ta cần đánh giá dữ liệu người dùng nhận được khi nhấn nút, đó là chữ số thứ tám của dữ liệu được gửi từ màn hình hiển thị. Do đó, ta thực hiện điều khiển như sau: ghi thông số địa chỉ nút và dữ liệu người dùng vào hàm "Light_Contral" để điều khiển trạng thái bật-tắt của đèn. Thực thể chức năng Light_Contral như sau: Như bạn có thể thấy, nếu địa chỉ nút là "Phòng khách" và dữ liệu người dùng là "LightOn", thì chân PB0 của MCU được đặt thành đầu ra mức cao và đèn sáng. Ba nút còn lại cũng tương tự, nhưng tôi sẽ không tiếp tục ở đây.
Đầu ra PWM
Trong giao diện người dùng do tôi thiết kế, có một bộ điều chỉnh trượt, được sử dụng để kiểm soát độ sáng của ánh sáng của "Phòng trẻ em". MCU được thực hiện bởi PWM. PWM chân đầu ra là PB5. Mã như sau: Bộ điều chỉnh trượt được đặt thành giá trị nhỏ nhất là 0x00 và giá trị lớn nhất là 0x64. Khi trượt, cổng nối tiếp của màn hình hiển thị cũng sẽ gửi các địa chỉ và dữ liệu liên quan, sau đó đặt tỷ lệ nhiệm vụ của đầu ra PWM bằng cách gọi hàm sau:
Bước 4: Mua lại cảm biến
Trong trang "Cảm biến" của màn hình hiển thị, có bốn dữ liệu về Cảm biến.
Dữ liệu cũng có địa chỉ lưu trữ trong màn hình và chúng ta có thể thay đổi nội dung thực bằng cách ghi dữ liệu vào các địa chỉ này thông qua cổng nối tiếp của MCU.
Ở đây tôi đã thực hiện một mã đơn giản:
Dữ liệu hiển thị được cập nhật sau mỗi 5 giây và tôi chỉ viết một bản demo đơn giản về chức năng thu thập cảm biến có liên quan, vì tôi không có những cảm biến này trong tay.
Trong quá trình phát triển dự án thực, những cảm biến này có thể là dữ liệu được ADC thu thập hoặc dữ liệu được thu thập bởi các giao diện truyền thông IIC, UART và SPI. Tất cả những gì bạn cần làm là ghi những dữ liệu này vào hàm tương ứng làm giá trị trả về.
Bước 5: Hiệu quả hoạt động thực tế
Đề xuất:
Tạo hệ thống điều khiển nhà thông minh trên STONE HMI Disp: 23 bước
Tạo hệ thống điều khiển nhà thông minh trên STONE HMI Disp: Giới thiệu dự án Hướng dẫn sau đây chỉ cho bạn cách sử dụng mô-đun màn hình cảm ứng STONE STVC050WT-01 để tạo một hệ thống điều khiển thiết bị gia dụng đơn giản
Máy pha cà phê thông minh - Một phần của Hệ sinh thái Nhà thông minh: 4 bước
Máy pha cà phê thông minh - Một phần của Hệ sinh thái SmartHome: Máy pha cà phê bị tấn công, biến nó thành một phần của Hệ sinh thái nhà thông minh Tôi sở hữu một Máy pha cà phê Delonghi cũ tốt (DCM) (không phải là một chương trình khuyến mãi và muốn nó “thông minh”. Vì vậy, tôi đã hack nó bằng cách cài đặt ESP8266) mô-đun có giao diện với bộ não / bộ vi điều khiển của nó sử dụng
Làm thế nào để tự làm rèm cuốn thông minh với công tắc thông minh SONOFF ?: 14 bước
Làm thế nào để tự làm rèm cuốn thông minh với công tắc thông minh SONOFF ?: Sử dụng chế độ khóa liên động trong công tắc thông minh SONOFF để biến rèm cuốn / rèm cuốn thông thường của bạn thành thông minh và kéo nó xuống vào buổi tối? Dù sao, tôi
Bảo mật thông minh cho ngôi nhà thông minh của bạn: 14 bước
Bảo mật thông minh Ngôi nhà thông minh của bạn: Tôi đang tham gia cuộc thi an toàn và bảo mật. Nếu bạn thích tài liệu hướng dẫn của tôi, vui lòng bỏ phiếu cho nó! Tôi sẽ chỉ cho bạn cách dễ dàng và rẻ tiền để bảo vệ hoàn toàn ngôi nhà của bạn và môi trường của nó. Định cấu hình y
Quay số thông minh - Điện thoại truyền thống thông minh tự động sửa lỗi: 8 bước
Smart Dial - Điện thoại truyền thống thông minh tự động sửa lỗi: Smart Dial là điện thoại tự động sửa lỗi thông minh được tạo ra cho người cao tuổi có nhu cầu đặc biệt và nó cho phép người cao tuổi quay số trực tiếp từ điện thoại truyền thống mà họ quen dùng. Chỉ nhờ hoạt động tình nguyện tại một trung tâm chăm sóc người cao niên địa phương mà tôi