- Потрібні компоненти
- Взаємозв'язок сенсорного екрану TFT LCD з Arduino
- Кругова діаграма
- Пояснення коду
- Тестування проекту Smart Restaurant за допомогою Arduino
Зараз системи автоматизації дня є скрізь, будь то їх будинок, офіс чи будь-яка велика галузь, усі вони оснащені системами автоматизації. Ресторани / готелі також застосовують останні тенденції автоматизації та встановлюють роботів для доставки продуктів харчування та планшетів для прийому замовлень. Використовуючи ці цифрові картки меню, такі як планшети, клієнти можуть легко вибрати елементи. Ця інформація буде надіслана на кухню ресторану, а також відображена на дисплеї.
У цьому проекті ми будуємо проект « Розумний ресторан» з використанням Arduino, TFT-дисплея та модуля передавача / приймача РЧ 433 МГц. Тут секція передавача буде складатися з Arduino Uno, TFT-дисплея та радіочастотного передавача, за допомогою якого клієнти можуть вибрати продукти харчування та оформити замовлення. Поки секція приймача складається з Arduino Uno, РК-модуля, радіочастотного приймача та зумера, який буде встановлений на кухні ресторану для відстеження елементів замовлення.
Потрібні компоненти
- Arduino Uno (2)
- РЧ-передавач та приймач 433 МГц
- 2,4-дюймовий TFT LCD сенсорний екран
- 16 * 2 РК-модуль
- Модуль I 2 C
Взаємозв'язок сенсорного екрану TFT LCD з Arduino
2,4-дюймовий TFT LCD сенсорний екран - це різнокольоровий TFT-дисплей, сумісний з Arduino UNO / Mega, який також постачається з сенсорним екраном та гніздом для SD-карти. Цей TFT-дисплейний модуль має яскраве підсвічування та кольоровий дисплей 240X320 пікселів. Він також складається з окремих RGB управління пікселями, що забезпечує набагато кращу роздільну здатність, ніж чорно-білі дисплеї.
Взаємодія TFT-дисплея з Arduino дуже проста і пояснена в попередньому підручнику. Вам потрібно лише встановити TFT-дисплей на платі Arduino Uno, як показано на малюнку нижче.
TFT-дисплей дуже корисний для створення таких портативних програм, як:
- Калькулятор сенсорного екрану Arduino
- Блокування цифрового коду за допомогою смарт-телефону за допомогою Arduino
- Будильник Arduino SMART
- Світлодіодна стрічка NeoPixel з Arduino та TFT LCD
Також перевірте всі проекти, засновані на TFT LCD, тут.
Кругова діаграма
Проект «Система замовлення меню розумного ресторану» складається з розділу радіочастотного передавача та приймача. І сторона передавача, і приймача використовує Arduino Uno для обробки даних. Раніше ми використовували ті самі 433 МГц РЧ-модулі з Arduino для побудови таких проектів, як бездротовий дзвінок, робот, керований жестами рукою тощо. Схема схеми для передавача та приймача наведена нижче.
Схема секції передавача
Секція передавача цього проекту складається з Arduino Uno, радіочастотного передавача та екранного екрану TFT. Цей розділ використовується для замовлення в меню, яке відображається на TFT-дисплеї. Arduino Uno - це мозок сторони передавача, який обробляє всі дані, а модуль радіочастотного передавача використовується для передачі вибраних даних на приймач. Вивід даних модуля радіочастотного передавача підключений до цифрового виводу 12 Arduino, тоді як виводи V CC та GND підключені до виводу 5V та GND Arduino.
Схема розділу приймача
Приймальна секція цього проекту складається з Arduino Uno, РЧ-приймача, РК-модуля 16 * 2 та модуля I2C. РЧ-приймач використовується для отримання даних із секції передавача, а РК-модуль - для відображення отриманих даних. Звуковий сигнал використовується, щоб видавати звук щоразу, коли розміщується нове замовлення. Штифт для передачі даних радіочастотного приймача підключений до цифрового виводу 11 Arduino, тоді як штир V CC та GND підключений до виводу 5V та GND Arduino. Позитивний штифт зуммера підключений до цифрового виводу 2 Arduino, а негативний штифт підключений до штифта GND Arduino. Виводи SCL та SDA модуля I2C підключені до аналогових виводів A5 і A4 Arduino, а висновки VCC та GND - до висновків 5V та GND Arduino.
Пояснення коду
Повний код для радіочастотних передавачів та приймачів цієї інтелектуальної системи замовлення в ресторані наведено в кінці документа. Усі бібліотеки, використані в цьому проекті, можна завантажити за вказаними посиланнями.
- Бібліотека RadioHead
- SPFD5408 бібліотека
Бібліотека RadioHead використовується для радіочастотного модуля / приймача, тоді як бібліотека SPFD5408 використовується для TFT-дисплея.
Код розділу передавача:
Запустіть код, включивши всі необхідні бібліотеки. Бібліотека RH_ASK.h використовується для зв'язку між модулями передавача та приймача. SPFD5408_Adafruit_GFX.h - це основна графічна бібліотека для TFT-дисплея.
#включати
Після цього створіть об'єкт під назвою 'драйвер' для 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 = колір прямої.
Функція 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, БІЛИЙ); // Блюдо1 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 ("Блюдо1");
Усередині функції передачі порожніх даних надсилайте дані на сторону приймача кожні 1 секунду.
void transmit () {driver.send ((uint8_t *) msg, strlen (msg)); driver.waitPacketSent (); затримка (1000); }
Усередині функції циклу void прочитайте значення RAW ADC за допомогою функції ts.getPoint.
TSPoint p = ts.getPoint ();
Тепер використовуйте функцію map для перетворення необроблених значень ADC у піксельні координати.
px = карта (px, TS_MAXX, TS_MINX, 0, 320); py = карта (py, TS_MAXY, TS_MINY, 0, 240);
Після перетворення необроблених значень АЦП у координати пікселів введіть координати пікселів для кнопки Dish1, і якщо хтось торкнеться екрана між цією областю, надішліть повідомлення стороні приймача.
якщо (px> 180 && px <280 && py> 190 && py <230 && pz> MINPRESSURE && pz <MAXPRESSURE) {Serial.println ("Блюдо1"); 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 ("Блюдо1"); затримка (70); }
Виконайте однакову процедуру для всіх інших кнопок.
Код розділу приймача
Для коду розділу РЧ-приймача включіть бібліотеки РЧ-приймача та РК-модуля. Також включіть бібліотеку SPI.h для встановлення SPI-зв'язку між Arduino та радіочастотним приймачем.
#включати
Усередині функції циклу void постійно перевіряйте передані повідомлення. І якщо модуль приймача отримує повідомлення, відобразіть повідомлення на РК-модулі та видайте звуковий сигнал.
if (driver.recv (buf, & buflen)) // Неблокуючий {int i; digitalWrite (зумер, HIGH); затримка (1000); digitalWrite (зумер, LOW);. lcd.print ("T1:"); lcd.print ((char *) buf);
Тестування проекту Smart Restaurant за допомогою Arduino
Після підключення всього обладнання та завантаження коду як для передавача, так і для приймача, настав час протестувати проект. Щоб протестувати проект, натисніть кнопку на TFT-дисплеї, на ньому має відображатися назва страви з номером таблиці, що є T1, на РК-модулі, підключеному до сторони приймача. Якщо РК-дисплей на стороні приймача нічого не відображає, перевірте, чи працює ваш TFT-екран.
Ось як ви можете створити проект системи замовлення меню розумного ресторану за допомогою Arduino та TFT-дисплея. Ви також можете змінити орієнтацію екрана, щоб додати більше кнопок.
Працює відео з повним кодом наводяться нижче.