- Необходими компоненти
- Взаимодействие на TFT LCD сензорен щит с Arduino
- Електрическа схема
- Обяснение на кода
- Тестване на проекта за интелигентен ресторант с помощта на Arduino
Сега системите за автоматизация на деня са навсякъде, независимо дали домът, офисът или друга голяма индустрия, всички са оборудвани със системи за автоматизация. Ресторантите / хотелите също възприемат последните тенденции за автоматизация и инсталират роботи за доставка на храна и таблети за приемане на поръчки. Използвайки тези цифрови карти с меню като таблети, клиентите могат лесно да изберат елементите. Тази информация ще бъде изпратена до кухнята на ресторанта и също ще бъде показана на дисплея.
В този проект ние изграждаме проект за интелигентен ресторант, използвайки Arduino, TFT дисплей и 433MHz RF трансмитер / приемник модул. Тук предавателната секция ще се състои от Arduino Uno, TFT дисплей и RF предавател, с помощта на който клиентите могат да избират хранителните продукти и да направят поръчката. Докато приемната секция се състои от Arduino Uno, LCD модул, RF приемник и зумер, които ще бъдат инсталирани в кухнята на ресторанта за проследяване на артикулите на поръчката.
Необходими компоненти
- Arduino Uno (2)
- 433MHz RF предавател и приемник
- 2,4 "TFT LCD сензорен екран
- 16 * 2 LCD модул
- I 2 C Модул
Взаимодействие на TFT LCD сензорен щит с Arduino
2,4 "TFT LCD сензорен щит е многоцветен Arduino UNO / Mega съвместим TFT дисплей, който се доставя със сензорен екран и гнездо за SD карта. Този TFT дисплеен модул има ярка подсветка и цветен дисплей 240X320 пиксела. Състои се и от отделни RGB управление на пикселите, което му дава много по-добра резолюция от черно-белите дисплеи.
Връзката между TFT дисплея и Arduino е много проста и обяснена в предишния урок. Трябва само да монтирате TFT дисплея върху платката Arduino Uno, както е показано на изображението по-долу.
TFT LCD е много полезен при изграждането на преносими приложения като:
- Arduino Touch Screen Calculator
- Заключване на цифров код с контролиран от смарт телефон с помощта на Arduino
- Будилник Arduino SMART
- LED лента NeoPixel с Arduino и TFT LCD
Също така проверете всички проекти, базирани на TFT LCD тук.
Електрическа схема
Проектът за система за поръчка на менюто Smart Restaurant се състои от секция RF Transmitter and Receiver. И двете страни на предавателя и приемника използват Arduino Uno за обработка на данни. Преди това използвахме същите 433 MHz RF модули с Arduino за изграждане на проекти като безжичен звънец, робот, контролиран с ръчен жест и др. Схемата на схемата за секцията на предавателя и приемника е дадена по-долу.
Верига на секцията на предавателя
Предавателната секция на този проект се състои от Arduino Uno, RF предавател и TFT дисплей. Този раздел се използва за поръчка от менюто, което се показва на TFT дисплея. Arduino Uno е мозъкът на страната на предавателя, който обработва всички данни, а модулът на RF предавателя се използва за предаване на избраните данни на приемника. Пинът за данни на модула на RF предавателя е свързан към цифров щифт 12 на Arduino, докато V CC и GND щифтовете са свързани към 5V и GND щифт на Arduino.
Верига на приемната секция
Приемната секция на този проект се състои от Arduino Uno, RF приемник, 16 * 2 LCD модул и I2C модул. RF приемникът се използва за получаване на данните от секцията на предавателя, а LCD модулът се използва за показване на получените данни. Звуков сигнал се използва за издаване на звук при всяка нова поръчка. Пинът за данни на RF приемника е свързан с цифров щифт 11 на Arduino, докато V CC и GND щифтът е свързан към 5V и GND щифт на Arduino. Положителният щифт на Buzzer е свързан с цифровия щифт 2 на Arduino, а отрицателният щифт е свързан към GND щифта на Arduino. SCL и SDA щифтовете на модула I2C са свързани към аналогови щифтове A5 и A4 Arduino, докато VCC и GND щифтовете са свързани към 5V и GND щифтове на Arduino.
Обяснение на кода
Пълният код за страните на радиопредавателя и приемника за тази система за интелигентно поръчване в ресторанта е даден в края на документа. Всички библиотеки, използвани в този проект, могат да бъдат изтеглени от дадените връзки.
- Библиотека RadioHead
- SPFD5408 библиотека
Библиотеката RadioHead се използва за RF предавателя / приемника, докато библиотеката SPFD5408 се използва за TFT дисплей.
Код на секцията на предавателя:
Стартирайте кода, като включите всички необходими библиотеки. Библиотеката RH_ASK.h се използва за комуникация между предавателни и приемни модули. SPFD5408_Adafruit_GFX.h е основна графична библиотека за TFT дисплей.
#include
След това създайте обект, наречен „драйвер“ за RH_ASK .
RH_ASK драйвер;
След това дефинирайте минималните и максималните калибрирани стойности на оста X и Y за вашия TFT дисплей.
#define TS_MINX 125 #define TS_MINY 85 #define TS_MAXX 965 #define TS_MAXY 905
Сега във функцията drawHome нарисувайте оформление за вашия TFT екран. Тук tft.fillScreen се използва за задаване на цвета на фона.
Функцията tft.drawRoundRect се използва за създаване на запълнен правоъгълник. Синтаксисът на функцията tft.drawRoundRect е даден по-долу:
tft.drawRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t радиус, uint16_t цвят)
Където:
x0 = X координата на началната точка на правоъгълна
y0 = Y координата на началната точка на правоъгълна
w = ширина на правоъгълника
h = височина на правоъгълника
радиус = Радиус на кръглия ъгъл
color = Цвят на Rect.
Функцията tft.fillRoundRect се използва за изчертаване на запълнен правоъгълник. Синтаксисът нафункцията tft.fillRoundRect е даден по-долу:
tft.fillRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t радиус, uint16_t цвят) tft.fillScreen (БЯЛ); tft.drawRoundRect (0, 0, 319, 240, 8, БЯЛ); // Граница на страницата tft.fillRoundRect (30, 40, 100, 40, 8, GOLD); tft.drawRoundRect (30, 40, 100, 40, 8, БЯЛ); // Dish1 tft.fillRoundRect (30, 90, 100, 40, 8, GOLD); tft.drawRoundRect (30, 90, 100, 40, 8, БЯЛ); // Dish2 tft.fillRoundRect (30, 140, 100, 40, 8, GOLD); // Dish3 tft.drawRoundRect (30, 140, 100, 40, 8, БЯЛ);
След като създадете бутоните на TFT екрана, сега покажете текста върху бутоните. tft.setCursor се използва за задаване на курсора от мястото, където искате да стартирате текста.
tft.setCursor (60, 0); tft.setTextSize (3); tft.setTextColor (LIME); tft.print ("Меню"); tft.setTextSize (2); tft.setTextColor (БЯЛ); tft.setCursor (37, 47); tft.print ("Dish1");
Вътре във функцията за предаване на празнота изпращайте данните към страната на приемника на всеки 1 секунда.
void transmit () {driver.send ((uint8_t *) msg, strlen (msg)); driver.waitPacketSent (); забавяне (1000); }
Вътре във функцията void loop прочетете стойността на RAW ADC, използвайки функцията ts.getPoint.
TSPoint p = ts.getPoint ();
Сега използвайте функцията map, за да конвертирате Raw ADC стойностите в Pixel координати.
px = карта (px, TS_MAXX, TS_MINX, 0, 320); py = карта (py, TS_MAXY, TS_MINY, 0, 240);
След преобразуване на суровите ADC стойности в пикселна координата, въведете пикселните координати за бутона Dish1 и ако някой докосне екрана между тази област, изпратете съобщението до страната на приемника.
ако (px> 180 && px <280 && py> 190 && py <230 && pz> MINPRESSURE && pz <MAXPRESSURE) {Serial.println ("Dish1"); msg = "Ястие1"; предаване (); tft.fillRoundRect (30, 40, 100, 40, 8, БЯЛ); забавяне (70); tft.fillRoundRect (30, 40, 100, 40, 8, GOLD); tft.drawRoundRect (30, 40, 100, 40, 8, БЯЛ); tft.setCursor (37, 47); tft.println ("Dish1"); забавяне (70); }
Следвайте същата процедура за всички останали бутони.
Код на секцията на приемника
За кода на раздела на RF приемника включете библиотеките за RF приемник и LCD модул. Включете също библиотеката SPI.h за установяване на SPI комуникация между Arduino и RF приемник.
#include
Вътре във функцията void loop непрекъснато проверявайте за предадени съобщения. И ако модулът на приемника получи съобщение, покажете съобщението на LCD модула и издайте звуков сигнал.
if (driver.recv (buf, & buflen)) // Неблокиращ {int i; digitalWrite (зумер, HIGH); забавяне (1000); digitalWrite (зумер, LOW);. lcd.print ("T1:"); lcd.print ((char *) buf);
Тестване на проекта за интелигентен ресторант с помощта на Arduino
След като свържете целия хардуер и качите кода както за предавателната, така и за приемната секция, сега е време да тествате проекта. За да тествате проекта, натиснете бутон на TFT дисплея, той трябва да показва името на ястието с номер на таблица, който е T1 на LCD модула, свързан към страната на приемника. Ако LCD на приемника не показва нищо, проверете дали вашият TFT екран работи или не.
Това е начинът, по който можете да изградите проект за система за поръчка на меню за интелигентен ресторант, използвайки Arduino и TFT дисплей. Можете също да промените ориентацията на екрана, за да добавите още бутони.
А работа на видео с пълния код е даден по-долу.