Mục lục:

Màn hình STONE + STM32 + Máy pha cà phê: 6 bước
Màn hình STONE + STM32 + Máy pha cà phê: 6 bước

Video: Màn hình STONE + STM32 + Máy pha cà phê: 6 bước

Video: Màn hình STONE + STM32 + Máy pha cà phê: 6 bước
Video: GLCD ST7920 mode SPI trên STM32 2024, Tháng mười một
Anonim
Màn hình STONE + STM32 + Máy pha cà phê
Màn hình STONE + STM32 + Máy pha cà phê

Tôi là một kỹ sư phần mềm MCU, gần đây đã nhận được một dự án là máy pha cà phê, yêu cầu gia dụng với màn hình cảm ứng hoạt động, chức năng tốt, ở trên màn hình lựa chọn có thể không tốt lắm, may mắn thay, dự án này tôi có thể quyết định điều gì. MCU để sử dụng bản thân tôi, cũng có thể được sử dụng để quyết định màn hình nào, vì vậy tôi đã chọn STM32 của loại MCU đơn giản và dễ sử dụng này, màn hình hiển thị Tôi đã chọn màn hình cảm ứng của STONE, màn hình đơn giản và dễ sử dụng, của tôi MCU STM32 chỉ thông qua giao tiếp UART là ok với nó.

Màn hình hiển thị LCD nối tiếp STONE, có thể giao tiếp thông qua cổng nối tiếp của MCU. Đồng thời, thiết kế logic của giao diện UI của màn hình hiển thị này có thể được thiết kế trực tiếp bằng cách sử dụng Hộp CÔNG CỤ ĐÁ do trang web chính thức của STONE cung cấp, rất tiện lợi. Vì vậy, tôi sẽ sử dụng nó cho dự án máy pha cà phê này. Đồng thời, tôi sẽ đơn giản ghi lại sự phát triển cơ bản. Vì đây là một dự án của công ty tôi, tôi sẽ chỉ quay một bản demo đơn giản và không viết mã hoàn chỉnh. Một số hướng dẫn cơ bản về màn hình đá có thể vào trang web: https://www.stoneitech.com/ Trang web có nhiều thông tin về mô hình, sử dụng và tài liệu thiết kế, cũng như video hướng dẫn. Tôi sẽ không đi vào quá nhiều chi tiết ở đây.

Bước 1: Giới thiệu chức năng màn hình hiển thị của máy pha cà phê

Dự án này có các chức năng sau: l

  • Hiển thị ngày và giờ hiện tại
  • Có bốn nút trên màn hình cho americano, latte, cappuccino và espresso.
  • Hiển thị lượng hạt cà phê, sữa và đường cà phê còn lại hiện tại
  • Một hộp hiển thị văn bản hiển thị trạng thái hiện tại

Với những khái niệm này, bạn có thể thiết kế giao diện UI. ĐÁ của màn hình cảm ứng trong thiết kế giao diện người dùng tương đối đơn giản, người dùng thông qua phần mềm PhotoShop thiết kế giao diện giao diện người dùng tốt và hiệu ứng nút, thông qua Hộp CÔNG CỤ ĐÁ để thiết kế hình ảnh đẹp vào màn hình, và thêm các nút của riêng bạn với Hộp công cụ ĐÁ và dữ liệu nối tiếp giá trị trả về là ok, rất dễ dàng để bạn phát triển.

Bước 2: Tạo hình ảnh giao diện người dùng cho màn hình ĐÁ

Tạo hình ảnh giao diện người dùng cho màn hình STONE
Tạo hình ảnh giao diện người dùng cho màn hình STONE
Tạo hình ảnh giao diện người dùng cho màn hình STONE
Tạo hình ảnh giao diện người dùng cho màn hình STONE
Tạo hình ảnh giao diện người dùng cho màn hình STONE
Tạo hình ảnh giao diện người dùng cho màn hình STONE

Theo yêu cầu chức năng, tôi làm hai giao diện hiển thị UI sau, một là giao diện chính và một là hiệu ứng nút.

Sử dụng Hộp CÔNG CỤ ĐÁ Hiện tại, STONE cung cấp CÔNG CỤ. Mở CÔNG CỤ này để tạo một dự án mới, sau đó nhập giao diện người dùng đã thiết kế để hiển thị hình ảnh và thêm các nút, hộp hiển thị văn bản của riêng bạn, v.v. Trang web chính thức của STONE có hướng dẫn rất đầy đủ về cách sử dụng phần mềm này : https: / /www.stoneitech.com/support/download/video

Hiệu ứng của việc thêm nút và hiển thị các thành phần trong Hộp CÔNG CỤ ĐÁ như sau:

Hộp CÔNG CỤ ĐÁ có chức năng hiển thị mô phỏng, qua đó bạn có thể thấy hiệu quả hoạt động của giao diện UI:

Tại thời điểm này, màn hình hiển thị giao diện người dùng của tôi đã hoàn tất và tất cả những gì tôi phải làm là viết mã MCU. Tải xuống các tệp được tạo bởi Hộp CÔNG CỤ ĐÁ lên màn hình hiển thị để xem kết quả thực tế.

Bước 3: STM32F103RCT6

STM32F103RCT6
STM32F103RCT6

MCU STM32F103RCT6 có các chức năng mạnh mẽ. Dưới đây là các thông số cơ bản của MCU:

  • Dòng: STM32F10X l Kerne
  • ARM - COTEX32
  • Tốc độ: 72 MHZ
  • Giao diện giao tiếp: CAN, I2C, IrDA, LIN, SPI, UART / USART, USB
  • Thiết bị ngoại vi: DMA, điều khiển động cơ PWM, PDR, POR, PVD, PWM, cảm biến nhiệt độ, WDT
  • Dung lượng lưu trữ chương trình: 256KB
  • Loại bộ nhớ chương trình: FLASH
  • Dung lượng RAM: 48K
  • Điện áp - nguồn cung cấp (Vcc / Vdd): 2 V ~ 3,6 V
  • Bộ tạo dao động: nội bộ
  • Nhiệt độ hoạt động: -40 ° C ~ 85 ° C
  • Gói / nhà ở: 64 tuổi thọ

Trong dự án này, tôi sẽ sử dụng UART, GPIO, Watch Dog và Timer của STM32F103RCT6. Sự phát triển của các thiết bị ngoại vi này được ghi lại dưới đây. STM32 SỬ DỤNG Phần mềm Keil MDK phát triển không còn xa lạ với các bạn nên mình sẽ không giới thiệu cách cài đặt của phần mềm này. STM32 có thể được mô phỏng trực tuyến bằng j-link hoặc st-link và các công cụ mô phỏng khác. Hình sau là bảng mạch STM32 mà tôi đã sử dụng:

Bước 4: Nối tiếp UART

UART Serial
UART Serial
UART Serial
UART Serial
UART Serial
UART Serial

STM32F103RCT6 có một số cổng nối tiếp. Trong dự án này, tôi đã sử dụng kênh cổng nối tiếp PA9 / PA10 và tốc độ truyền của cổng nối tiếp được đặt ở 115200.

GPIO

Trong giao diện người dùng của dự án này, có tổng cộng bốn nút, thực sự là tạo ra bốn loại cà phê. Trong máy pha cà phê, việc kiểm soát số lượng hạt cà phê, lượng sữa tiêu thụ và lưu lượng nước của các loại cà phê khác nhau thực sự được thực hiện bằng cách điều khiển cảm biến và rơ le, trong khi tôi chỉ cần điều khiển chân GPIO trước.

Bước 5: Hẹn giờ

Hẹn giờ
Hẹn giờ
Hẹn giờ
Hẹn giờ

Khi khởi tạo bộ hẹn giờ, hãy chỉ định hệ số phân chia tần số PSC, đây là đồng hồ hệ thống của chúng tôi (72MHz) để phân chia tần số

Sau đó chỉ định giá trị tải lại arr, có nghĩa là khi bộ đếm thời gian của chúng ta đạt đến giá trị này, bộ định thời sẽ tải lại các giá trị khác.

Ví dụ: khi chúng ta đặt bộ đếm thời gian đếm lên, giá trị của bộ đếm thời gian bằng arr và sẽ bị xóa bằng 0 và được tính toán lại

Bộ đếm thời gian được tải lại và một lần là Cập nhật

Tính công thức Thời gian cập nhật Tout = ((arr + 1) * (PSC +1)) / Tclk

Suy ra công thức: Talk là nguồn xung nhịp của bộ đếm thời gian, ở đây là 72Mhz

Chúng tôi chia tần số đồng hồ được phân bổ, chỉ định giá trị phân chia tần số là PSC, sau đó chia Talk của chúng tôi thành PSC +1, tần số cuối cùng của bộ hẹn giờ của chúng tôi là Tclk / (PSC +1) MHz

Vì vậy, ý chúng ta nói về tần suất ở đây là chúng ta có 1s Nói qua PSC +1 M Số (1 triệu = 10 ^ 6) và thời gian cho mỗi số là PSC +1 / Nói và dễ hiểu rằng nghịch đảo của tần số là khoảng thời gian và khoảng thời gian cho mỗi số ở đây là PSC +1 / Nói chuyện giây và sau đó chúng tôi đi từ 0 đến arr là (arr + 1) * (PSC +1) / Tclk

Ví dụ: hãy đặt arr = 7199 và PSC = 9999

Chúng tôi chia 72MHz thành 9999 + 1 bằng 7200Hz

Đây là 9, 000 số đếm mỗi giây và mỗi số đếm là 1/7, 200 của một giây

Vì vậy, chúng tôi đang ghi lại 9.000 Số ở đây để chuyển đến bản cập nhật bộ đếm thời gian (7199 + 1) * (1/7200) = 1 giây, vì vậy 1 giây sẽ chuyển đến bản cập nhật.

void TIM3_Int_Init (u16 arr, u16 psc) {

TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB1PeriphClockCmd (RCC_APB1Periph_TIM3, ENABLE);

// đồng hồ TIM_TimeBaseStructure. TIM_Period = arr;

TIM_TimeBaseStructure. TIM_Prescaler = psc; TIM_TimeBaseStructure. TIM_ClockDivision = 0;

// TDTS = Tck_tim TIM_TimeBaseStructure. TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit (TIM3, & TIM_TimeBaseStructure);

Hãy liên hệ với chúng tôi nếu bạn cần đầy đủ thủ tục:

www.stoneitech.com/contact

Tôi sẽ trả lời bạn trong vòng 12 giờ.

Bước 6: Theo dõi chó

Xem chó
Xem chó
Xem chó
Xem chó

Để ngăn hệ thống gặp sự cố trong khi chương trình đang chạy, tôi đã thêm cơ quan giám sát. Trên thực tế, tất cả các dự án sử dụng MCU thường sử dụng một cơ quan giám sát.

STM32 có hai cơ quan giám sát tích hợp, mang lại khả năng bảo mật, độ chính xác về thời gian và tính linh hoạt cao hơn. Hai thiết bị watchdog (cơ quan giám sát độc lập và cơ quan giám sát cửa sổ) có thể được sử dụng để phát hiện và giải quyết các lỗi do lỗi phần mềm. Khi bộ đếm đạt đến một giá trị thời gian chờ nhất định, một ngắt (chỉ cơ quan giám sát cửa sổ) hoặc thiết lập lại hệ thống được kích hoạt. Cơ quan giám sát độc lập (IWDG):

Được điều khiển bởi đồng hồ tốc độ thấp (LSI) chuyên dụng, nó hoạt động ngay cả khi đồng hồ chính bị lỗi.

Nó phù hợp để sử dụng trong các tình huống mà cơ quan giám sát được yêu cầu làm việc hoàn toàn độc lập bên ngoài chương trình chính và yêu cầu độ chính xác về thời gian thấp. Cơ quan giám sát cửa sổ (WWDG):

Được thúc đẩy bởi đồng hồ từ đồng hồ APB1 sau khi phân chia tần số. Phát hiện hoạt động ứng dụng trễ hoặc sớm bất thường thông qua cửa sổ thời gian có thể định cấu hình. Thích hợp cho các chương trình yêu cầu cơ quan giám sát hoạt động trong Windows thời gian chính xác.

int main (void) {

delay_init ();

// trì hoãn init NVIC_PosystemGroupConfig (NVIC_PosystemGroup_2);

// NVIC INIT uart_init (115200);

// UART INIT PAD_INIT ();

// Đèn Init IWDG_Init (4, 625);

trong khi (1) {

nếu (USART_RX_END)

{công tắc (USART_RX_BUF [5])

{

trường hợp Espresso:

CoffeeSelect (Espresso, USART_RX_BUF [8]);

nghỉ;

trường hợp Americano:

CoffeeSelect (Americano, USART_RX_BUF [8]);

Logic Chính trong hàm Chính như sau:

u8 timer_cnt = 0;

void TIM3_IRQHandler (void) // TIM3

{

if (TIM_GetITStatus (TIM3, TIM_IT_Update)! = RESET)

{

TIM_ClearITPendingBit (TIM3, TIM_IT_Update);

timer_cnt ++;

if (timer_cnt> = 200)

{

milk_send [6] = milk ();

Cuối cùng, thêm mã vào ngắt hẹn giờ: Trong ngắt hẹn giờ, mục tiêu của tôi là kiểm tra lượng cà phê và sữa còn lại, sau đó gửi giá trị đã phát hiện đến màn hình hiển thị thông qua một cổng nối tiếp. Việc đo lượng sữa và hạt cà phê còn sót lại thường được thực hiện bởi các cảm biến. Các phương pháp đơn giản bao gồm cảm biến áp suất, đo trọng lượng hiện tại của sữa và hạt cà phê để xác định lượng còn lại.

Viết cuối cùng

Bài viết này chỉ ghi lại quá trình phát triển đơn giản của dự án của tôi. Xem xét tính bảo mật của dự án của công ty, giao diện hiển thị UI mà tôi sử dụng cũng do chính tôi làm ra, không phải giao diện hiển thị UI thực của dự án này. Phần mã của STM32 chỉ thêm trình điều khiển ngoại vi của MCU và mã logic liên quan. Cũng xem xét tính bảo mật của dự án của công ty, phần công nghệ quan trọng cụ thể không được đưa ra, xin vui lòng hiểu. Tuy nhiên, theo mã tôi cung cấp, hãy hợp tác với màn hình hiển thị ĐÁ. những người bạn của tôi, những người cũng là kỹ sư phần mềm chỉ cần dành vài ngày để thêm các phần kỹ thuật quan trọng vào khung mã của tôi để hoàn thành dự án.

Để tìm hiểu thêm về dự án bấm vào đây