Inhaltsverzeichnis:

STONE Display +STM32 +Kaffeemaschine - Gunook
STONE Display +STM32 +Kaffeemaschine - Gunook

Video: STONE Display +STM32 +Kaffeemaschine - Gunook

Video: STONE Display +STM32 +Kaffeemaschine - Gunook
Video: STONE screen of the medical ventilator application 2024, November
Anonim
STONE Display +STM32 +Kaffeemaschine
STONE Display +STM32 +Kaffeemaschine

Ich bin MCU-Software-Ingenieur, habe vor kurzem ein Projekt bekommen soll eine Kaffeemaschine sein, Haushaltsbedarf mit Touchscreen-Bedienung, die Funktion ist gut, oben ist die Bildschirmauswahl vielleicht nicht sehr gut, zum Glück kann ich bei diesem Projekt was entscheiden MCU, um mich selbst zu verwenden, kann auch verwendet werden, um zu entscheiden, was der Bildschirm ist, also habe ich den STM32 dieser Art von einfacher und leicht zu bedienender MCU gewählt STM32 MCU nur über UART-Kommunikation ist damit in Ordnung.

STONE serieller LCD-Bildschirm, der über den seriellen Port der MCU kommunizieren kann. Gleichzeitig kann das logische Design der Benutzeroberfläche dieses Bildschirms direkt mithilfe der STONE TOOL Box von der offiziellen STONE-Website gestaltet werden, was sehr praktisch ist. Also werde ich es für dieses Kaffeemaschinenprojekt verwenden. Gleichzeitig zeichne ich einfach die grundsätzliche Entwicklung auf. Da dies ein Projekt meiner Firma ist, werde ich nur eine einfache Demo aufnehmen und nicht den kompletten Code schreiben. Einige grundlegende Tutorials zum Stone-Display-Bildschirm finden Sie auf der Website: https://www.stoneitech.com/ Die Website bietet eine Vielzahl von Informationen über das Modell, die Verwendung und die Designdokumentation sowie Video-Tutorials. Ich werde hier nicht zu sehr ins Detail gehen.

Schritt 1: Einführung in die Bildschirmfunktion der Kaffeemaschine

Dieses Projekt hat folgende Funktionen: l

  • Zeigt die aktuelle Uhrzeit und das Datum an
  • Auf dem Display befinden sich vier Tasten für Americano, Latte, Cappuccino und Espresso.
  • Zeigt die aktuelle Menge an verbleibenden Kaffeebohnen, Milch und Kaffeezucker an
  • Ein Textanzeigefeld zeigt den aktuellen Status an

Unter Berücksichtigung dieser Konzepte können Sie eine Benutzeroberfläche entwerfen. STONE der Touchscreens im UI-Design ist relativ einfach, der Benutzer durch PhotoShop-Software-Design gute UI-Oberfläche und Schaltflächeneffekt, durch die STONE TOOL Box gute Bilder in den Bildschirm zu entwerfen und eigene Schaltflächen mit STONE TOOL Box-Logik hinzuzufügen und serielle Daten der Rückgabewert ist in Ordnung, sehr einfach für Sie zu entwickeln.

Schritt 2: Erstellen Sie UI-Bilder für STONE Display

Erstellen Sie UI-Bilder für STONE Display
Erstellen Sie UI-Bilder für STONE Display
Erstellen Sie UI-Bilder für STONE Display
Erstellen Sie UI-Bilder für STONE Display
Erstellen Sie UI-Bilder für STONE Display
Erstellen Sie UI-Bilder für STONE Display

Entsprechend den funktionalen Anforderungen habe ich die folgenden zwei UI-Anzeigeschnittstellen erstellt, eine ist die Hauptschnittstelle und die andere ist der Schaltflächeneffekt.

Nutzung der STONE TOOL BoxDerzeit stellt STONE TOOL zur Verfügung. Öffnen Sie dieses TOOL, um ein neues Projekt zu erstellen, importieren Sie dann die entworfene Benutzeroberfläche, um Bilder anzuzeigen, und fügen Sie Ihre eigenen Schaltflächen, Textanzeigefelder usw. hinzu. Die offizielle Website von STONE bietet ein sehr vollständiges Tutorial zur Verwendung dieser Software: https:/ /www.stoneitech.com/support/download/video

Das Hinzufügen von Schaltflächen und das Anzeigen von Komponenten in der STONE TOOL Box haben folgende Auswirkungen:

STONE TOOL Box hat die Funktion der Simulationsanzeige, durch die Sie die Betriebswirkung der Benutzeroberfläche sehen können:

An diesem Punkt ist meine UI-Anzeige fertig und ich muss nur noch den MCU-Code schreiben. Laden Sie die von der STONE TOOL Box generierten Dateien auf den Bildschirm herunter, um die tatsächlichen Ergebnisse zu sehen.

Schritt 3: STM32F103RCT6

STM32F103RCT6
STM32F103RCT6

STM32F103RCT6 MCU verfügt über leistungsstarke Funktionen. Hier sind die grundlegenden Parameter der MCU:

  • Serie: STM32F10X l Kerne
  • ARM - COTEX32
  • Geschwindigkeit: 72 MHz
  • Kommunikationsschnittstelle: CAN, I2C, IrDA, LIN, SPI, UART/USART, USB
  • Peripheriegeräte: DMA, Motorsteuerung PWM, PDR, POR, PVD, PWM, Temperatursensor, WDT
  • Programmspeicherkapazität: 256 KB
  • Programmspeichertyp: FLASH
  • RAM-Kapazität: 48K
  • Spannung - Stromversorgung (Vcc/Vdd): 2 V ~ 3,6 V
  • Oszillator: intern
  • Betriebstemperatur: -40°C ~ 85°C
  • Verpackung/Gehäuse: 64-Leben

In diesem Projekt werde ich UART, GPIO, Watch Dog und Timer von STM32F103RCT6 verwenden. Die Entwicklung dieser Peripheriegeräte ist im Folgenden dokumentiert. STM32 VERWENDET Keil MDK-Softwareentwicklung, die Ihnen nicht fremd ist, daher werde ich die Installationsmethode dieser Software nicht vorstellen. STM32 kann online durch j-link oder st-link und andere Simulationstools simuliert werden. Das folgende Bild ist die STM32-Platine, die ich verwendet habe:

Schritt 4: UART-Seriennummer

UART-Seriennummer
UART-Seriennummer
UART-Seriennummer
UART-Seriennummer
UART-Seriennummer
UART-Seriennummer

STM32F103RCT6 hat mehrere serielle Ports. In diesem Projekt habe ich den seriellen Port-Kanal PA9 / PA10 verwendet und die Baudrate des seriellen Ports wurde auf 115200 eingestellt.

GPIO

In der Benutzeroberfläche dieses Projekts gibt es insgesamt vier Tasten, die eigentlich die Zubereitung von vier Kaffeesorten darstellen. In der Kaffeemaschine wird die Steuerung der Anzahl der Kaffeebohnen, des Milchverbrauchs und des Wasserflusses verschiedener Kaffees tatsächlich durch die Steuerung von Sensoren und Relais realisiert, während ich einfach zuerst den GPIO-Pin steuere.

Schritt 5: Timer

Timer
Timer
Timer
Timer

Geben Sie beim Initialisieren des Timers den Frequenzteilungskoeffizienten PSC an, hier ist unser Systemtakt (72 MHz) für die Frequenzteilung

Geben Sie dann den Reload-Wert arr an, was bedeutet, dass der Timer andere Werte neu lädt, wenn unser Timer diesen arr erreicht.

Wenn wir beispielsweise den Timer so einstellen, dass er aufwärts zählt, ist der Wert des Timer-Zählers gleich arr und wird um 0 gelöscht und neu berechnet

Der Timerzähler wird neu geladen und einmal ist ein Update

Berechnen Sie die Aktualisierungszeitformel Tout = ((arr+1)*(PSC +1))/Tclk

Formelableitung: Talk ist die Taktquelle des Timers, hier sind 72Mhz

Wir teilen die zugewiesene Taktfrequenz, geben den Frequenzteilungswert als PSC an und teilen dann unser Gespräch in PSC +1, die endgültige Frequenz unseres Timers ist Tclk/(PSC +1) MHz

Mit der Häufigkeit meinen wir hier also, dass wir 1s von Talk over PSC +1 M Numbers (1M = 10 ^ 6) haben und die Zeit für jede Zahl PSC +1 /Talk ist, und es ist leicht zu verstehen, dass die Umkehrung der Frequenz ist die Periode, und die Periode für jede Zahl hier ist PSC +1 /Talk Sekunden und dann gehen wir von 0 zu arr ist (arr+1)*(PSC +1)/Tclk

Legen wir zum Beispiel arr=7199 und PSC =9999. fest

Wir haben 72MHz in 9999+1 geteilt, ist gleich 7200Hz

Dies sind 9.000 Zählungen pro Sekunde, und jede Zählung beträgt 1/7.200 einer Sekunde

Wir nehmen hier also 9.000 Zahlen auf, um zum Timer-Update (7199+1)*(1/7200)=1s zu gehen, also geht 1s für ein Update.

void TIM3_Int_Init(u16 arr, u16 psc){

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

//Uhr 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);

Bitte kontaktieren Sie uns, wenn Sie ein vollständiges Verfahren benötigen:

www.stoneitech.com/contact

Ich werde Ihnen innerhalb von 12 Stunden antworten.

Schritt 6: Wachhund

Wachhund
Wachhund
Wachhund
Wachhund

Um zu verhindern, dass das System während des Programmablaufs abstürzt, habe ich den Watchdog hinzugefügt. Tatsächlich verwenden alle Projekte, die die MCU verwenden, im Allgemeinen einen Watchdog.

STM32 verfügt über zwei integrierte Watchdogs, die mehr Sicherheit, Zeitgenauigkeit und Flexibilität bieten. Zwei Watchdog-Geräte (unabhängiger Watchdog und Window-Watchdog) können verwendet werden, um durch Softwarefehler verursachte Fehler zu erkennen und zu beheben. Wenn der Zähler einen bestimmten Timeout-Wert erreicht, wird ein Interrupt (nur Windows-Watchdog) oder ein Systemreset ausgelöst. Unabhängiger Watchdog (IWDG):

Angetrieben von einem dedizierten Low-Speed-Clock (LSI) funktioniert es auch bei Ausfall der Master-Clock.

Es eignet sich für den Einsatz in Situationen, in denen der Watchdog außerhalb des Hauptprogramms völlig unabhängig arbeiten soll und eine geringe Zeitgenauigkeit erfordert. Fensterwächter (WWDG):

Angetrieben durch den Takt vom APB1-Takt nach der Frequenzteilung. Erkennen Sie ungewöhnlich verspätete oder verfrühte Anwendungsoperationen durch ein konfigurierbares Zeitfenster. Geeignet für Programme, die Watchdogs benötigen, um in Windows mit präzisem Timing zu funktionieren.

int main(void) {

delay_init();

//Init verzögern NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

//NVIC-INIT uart_init(115200);

//UART-INIT PAD_INIT();

//Licht Init IWDG_Init (4, 625);

während(1) {

if(USART_RX_END)

{ Schalter (USART_RX_BUF[5])

{

Koffer Espresso:

CoffeeSelect(Espresso, USART_RX_BUF[8]);

brechen;

Fall Americano:

CoffeeSelect(Americano, USART_RX_BUF[8]);

Die Main-Logik in der Main-Funktion sieht wie folgt aus:

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();

Fügen Sie schließlich den Code im Timer-Interrupt hinzu: Im Timer-Interrupt ist mein Ziel, zu überprüfen, wie viel Kaffee und Milch noch übrig sind, und dann den erkannten Wert über eine serielle Schnittstelle an den Bildschirm zu senden. Die Messung, wie viel Milch und Kaffeebohnen noch übrig sind, wird in der Regel durch Sensoren gemessen. Einfache Methoden sind Drucksensoren, die das aktuelle Gewicht von Milch und Kaffeebohnen messen, um festzustellen, wie viel übrig bleibt.

Schreiben Sie in den letzten

Dieser Artikel zeichnet nur den einfachen Entwicklungsprozess meines Projekts auf. In Anbetracht der Vertraulichkeit des Unternehmensprojekts wurde die von mir verwendete UI-Anzeigeschnittstelle ebenfalls von mir selbst erstellt, nicht die eigentliche UI-Anzeigeschnittstelle dieses Projekts. Der Codeteil von STM32 fügt nur den Peripherietreiber der MCU und den zugehörigen Logikcode hinzu. Auch in Anbetracht der Vertraulichkeit des Unternehmensprojekts wird der spezifische Schlüsseltechnologieteil nicht angegeben, bitte haben Sie Verständnis. Arbeiten Sie jedoch gemäß dem von mir bereitgestellten Code mit dem STONE-Anzeigebildschirm zusammen. Meine Freunde, die auch Software-Ingenieure sind, brauchen nur ein paar Tage, um wichtige technische Teile zu meinem Code-Framework hinzuzufügen, um das Projekt abzuschließen.

Um mehr über das Projekt zu erfahren, klicken Sie hier