Оглавление:

STONE Display + STM32 + кофеварка: 6 шагов
STONE Display + STM32 + кофеварка: 6 шагов

Видео: STONE Display + STM32 + кофеварка: 6 шагов

Видео: STONE Display + STM32 + кофеварка: 6 шагов
Видео: Attack on the drones: security vulnerabilities of unmanned aerial vehicles 2024, Ноябрь
Anonim
STONE Display + STM32 + кофеварка
STONE Display + STM32 + кофеварка

Я инженер-программист MCU, недавно получил проект, который должен быть кофеваркой, бытовые требования с сенсорным экраном, функция хорошая, выбор над экраном может быть не очень хорошим, к счастью, этот проект я могу решить, что MCU, чтобы использовать себя, также может использоваться для решения, какой экран, поэтому я выбрал STM32 такого простого и легкого в использовании MCU, экран дисплея Я выбрал сенсорный экран STONE, экран простой и легкий в использовании, Мой MCU STM32 только через UART с ним все в порядке.

Последовательный ЖК-экран STONE, который может обмениваться данными через последовательный порт MCU. В то же время логический дизайн пользовательского интерфейса этого экрана дисплея может быть спроектирован непосредственно с помощью STONE TOOL Box, предоставленного официальным сайтом STONE, что очень удобно. Я собираюсь использовать его для этого проекта кофеварки. В то же время я просто запишу базовое развитие. Поскольку это проект моей компании, я буду записывать только простую демонстрацию, а не писать полный код. Некоторые базовые руководства по экрану для демонстрации камней можно найти на веб-сайте: https://www.stoneitech.com/. На веб-сайте есть разнообразная информация о модели, использовании и документации по дизайну, а также видео-уроки. Я не буду здесь вдаваться в подробности.

Шаг 1: Описание функции экрана дисплея кофемашины

Этот проект имеет следующие функции: l

  • Отображает текущее время и дату
  • На дисплее есть четыре кнопки для американо, латте, капучино и эспрессо.
  • Отображает текущее количество оставшихся кофейных зерен, молока и кофейного сахара.
  • В текстовом поле отображается текущее состояние.

Помня об этих концепциях, вы можете разработать интерфейс пользовательского интерфейса. STONE сенсорных экранов в дизайне пользовательского интерфейса относительно прост, пользователь с помощью программного обеспечения PhotoShop создает хороший интерфейс пользовательского интерфейса и эффект кнопок, с помощью STONE TOOL Box создает хорошие изображения на экране и добавляет свои собственные кнопки с помощью логики STONE TOOL Box и последовательные данные, возвращаемое значение в порядке, вам очень легко разработать.

Шаг 2: Сделайте изображения пользовательского интерфейса для КАМЕННОГО дисплея

Сделайте изображения пользовательского интерфейса для STONE Display
Сделайте изображения пользовательского интерфейса для STONE Display
Сделайте изображения пользовательского интерфейса для STONE Display
Сделайте изображения пользовательского интерфейса для STONE Display
Сделайте изображения пользовательского интерфейса для STONE Display
Сделайте изображения пользовательского интерфейса для STONE Display

В соответствии с функциональными требованиями я сделал следующие два интерфейса отображения пользовательского интерфейса, один из которых является основным интерфейсом, а другой - эффектом кнопки.

Использование STONE TOOL Box В настоящее время STONE предоставляет TOOL. Откройте этот ИНСТРУМЕНТ, чтобы создать новый проект, затем импортируйте разработанный пользовательский интерфейс для отображения изображений и добавьте свои собственные кнопки, текстовые поля и т. Д. На официальном веб-сайте STONE есть очень полное руководство по использованию этого программного обеспечения : https: / /www.stoneitech.com/support/download/video

Эффекты добавления кнопок и отображения компонентов в STONE TOOL Box следующие:

STONE TOOL Box имеет функцию отображения симуляции, с помощью которой вы можете увидеть эффект работы интерфейса UI:

На этом отображение моего пользовательского интерфейса завершено, и все, что мне нужно сделать, это написать код MCU. Загрузить файлы, созданные STONE TOOL Box, на экран дисплея, чтобы увидеть фактические результаты.

Шаг 3: STM32F103RCT6

STM32F103RCT6
STM32F103RCT6

MCU STM32F103RCT6 имеет мощные функции. Вот основные параметры MCU:

  • Серия: STM32F10X l Kerne
  • ARM - COTEX32
  • Скорость: 72 МГц
  • Интерфейс связи: CAN, I2C, IrDA, LIN, SPI, UART / USART, USB
  • Периферийное оборудование: DMA, управление двигателем PWM, PDR, POR, PVD, PWM, датчик температуры, WDT
  • Емкость памяти для программ: 256 КБ
  • Тип памяти программ: FLASH
  • Емкость RAM: 48 КБ
  • Напряжение - источник питания (Vcc / Vdd): 2 В ~ 3,6 В
  • Осциллятор: внутренний
  • Рабочая температура: -40 ° C ~ 85 ° C
  • Упаковка / корпус: 64-жизнь

В этом проекте я буду использовать UART, GPIO, Watch Dog и таймер STM32F103RCT6. Разработка этих периферийных устройств задокументирована ниже. STM32 ИСПОЛЬЗУЕТ разработку программного обеспечения Keil MDK, что вам не ново, поэтому я не буду описывать метод установки этого программного обеспечения. STM32 можно смоделировать онлайн с помощью j-link или st-link и других инструментов моделирования. На следующем рисунке показана печатная плата STM32, которую я использовал:

Шаг 4: последовательный порт UART

Последовательный порт UART
Последовательный порт UART
Последовательный порт UART
Последовательный порт UART
Последовательный порт UART
Последовательный порт UART

STM32F103RCT6 имеет несколько последовательных портов. В этом проекте я использовал канал последовательного порта PA9 / PA10, а скорость передачи последовательного порта была установлена на 115200.

GPIO

В пользовательском интерфейсе этого проекта всего четыре кнопки, которые фактически служат для приготовления четырех видов кофе. В кофемашине управление количеством кофейных зерен, потреблением молока и расходом воды для разных сортов кофе фактически осуществляется путем управления датчиками и реле, в то время как я сначала просто управляю контактом GPIO.

Шаг 5: Таймер

Таймер
Таймер
Таймер
Таймер

При инициализации таймера указываем коэффициент частотного деления PSC, вот наши системные часы (72МГц) для частотного деления

Затем укажите значение перезагрузки arr, что означает, что когда наш таймер достигнет этого значения arr, таймер перезагрузит другие значения.

Например, когда мы устанавливаем таймер на обратный отсчет, значение счетчика таймера равно arr и будет сброшено на 0 и пересчитано.

Счетчик таймера перезагружается, и один раз выполняется обновление.

Рассчитайте формулу времени обновления Tout = ((arr + 1) * (PSC +1)) / Tclk

Вывод формулы: Talk - это источник тактовой частоты таймера, здесь 72Mhz.

Мы делим выделенную тактовую частоту, указываем значение деления частоты как PSC, затем делим наш Talk на PSC +1, конечная частота нашего таймера равна Tclk / (PSC +1) МГц.

Под частотой здесь мы понимаем, что у нас есть 1 с разговоров по PSC +1 M номеров (1M = 10 ^ 6), а время для каждого номера равно PSC +1 / Talk, и легко понять, что обратное частоты - это период, а период для каждого числа здесь - PSC +1 / Talk секунды, а затем мы переходим от 0 к arr, это (arr + 1) * (PSC +1) / Tclk

Например, установим arr = 7199 и PSC = 9999.

Мы разделили 72 МГц на 9999 + 1 равно 7200 Гц.

Это 9 000 отсчетов в секунду, и каждый отсчет составляет 1/7 200 секунды.

Итак, мы записываем здесь 9000 номеров, чтобы перейти к обновлению таймера (7199 + 1) * (1/7200) = 1 с, поэтому 1 с идет на обновление.

void TIM3_Int_Init (u16 arr, u16 psc) {

TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB1PeriphClockCmd (RCC_APB1Periph_TIM3, ВКЛЮЧИТЬ);

// часы 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);

Свяжитесь с нами, если вам нужна полная процедура:

www.stoneitech.com/contact

Я отвечу вам в течение 12 часов.

Шаг 6: Watch Dog

Сторожевая собака
Сторожевая собака
Сторожевая собака
Сторожевая собака

Чтобы предотвратить сбой системы во время работы программы, я добавил сторожевой таймер. Фактически, все проекты, использующие MCU, обычно используют сторожевой таймер.

STM32 имеет два встроенных сторожевых таймера, обеспечивающих большую безопасность, точность времени и гибкость. Два сторожевых устройства (независимый сторожевой таймер и оконный сторожевой таймер) могут использоваться для обнаружения и устранения сбоев, вызванных ошибками программного обеспечения. Когда счетчик достигает заданного значения тайм-аута, запускается прерывание (только сторожевой таймер окна) или системный сброс. Независимый сторожевой пес (IWDG):

Управляемый выделенными низкоскоростными часами (LSI), он работает даже в случае отказа основных часов.

Он подходит для использования в ситуациях, когда сторожевой таймер должен работать полностью независимо вне основной программы и требует низкой точности времени. Оконный сторожевой таймер (WWDG):

Управляется часами от APB1 после деления частоты. Обнаружение аномально поздней или преждевременной работы приложения через настраиваемое временное окно. Подходит для программ, которым требуются сторожевые псы для работы с точным синхронизацией Windows.

int main (void) {

delay_init ();

// задержка инициализации NVIC_PriorityGroupConfig (NVIC_PriorityGroup_2);

// NVIC INIT uart_init (115200);

// UART INIT PAD_INIT ();

// Легкая инициализация IWDG_Init (4, 625);

в то время как (1) {

если (USART_RX_END)

{переключатель (USART_RX_BUF [5])

{

case Espresso:

CoffeeSelect (Эспрессо, USART_RX_BUF [8]);

перерыв;

case Americano:

CoffeeSelect (Американо, USART_RX_BUF [8]);

Основная логика в функции Main выглядит следующим образом:

u8 timer_cnt = 0;

void TIM3_IRQHandler (void) // TIM3

{

если (TIM_GetITStatus (TIM3, TIM_IT_Update)! = СБРОС)

{

TIM_ClearITPendingBit (TIM3, TIM_IT_Update);

timer_cnt ++;

если (timer_cnt> = 200)

{

milk_send [6] = молоко ();

Наконец, добавьте код в прерывание таймера: в прерывании таймера моя цель - проверить, сколько кофе и молока осталось, а затем отправить обнаруженное значение на экран дисплея через последовательный порт. Измерение количества оставшегося молока и кофейных зерен обычно осуществляется датчиками. Простые методы включают датчики давления, которые измеряют текущий вес молока и кофейных зерен, чтобы определить, сколько осталось.

Напишите в последний

В этой статье описывается только простой процесс разработки моего проекта. Учитывая конфиденциальность проекта компании, интерфейс отображения пользовательского интерфейса, который я использовал, также был создан мной, а не реальный интерфейс отображения пользовательского интерфейса этого проекта. Кодовая часть STM32 добавляет только периферийный драйвер MCU и связанный логический код. Также, учитывая конфиденциальность проекта компании, конкретная ключевая технологическая часть не приводится, пожалуйста, поймите. Однако, согласно предоставленному мной коду, работайте с экраном дисплея STONE. Моим друзьям, которые также являются разработчиками программного обеспечения, нужно всего несколько дней, чтобы добавить ключевые технические части в мою структуру кода для завершения проекта.

Чтобы узнать больше о проекте, нажмите здесь