- Необходимые компоненты
- Сопряжение сенсорного экрана TFT LCD с Arduino
- Принципиальная электрическая схема
- Код Пояснение
- Тестирование проекта умного ресторана с использованием Arduino
Сегодняшние системы автоматизации повсюду, будь то дом, офис или любая крупная промышленность, все они оснащены системами автоматизации. Рестораны и гостиницы также берут на вооружение последние тенденции автоматизации и устанавливают роботов для доставки еды и планшеты для приема заказов. Используя эти цифровые карточки меню, например планшеты, покупатели могут легко выбирать элементы. Эта информация будет отправлена на кухню ресторана, а также отображаться на дисплее.
В этом проекте мы создаем проект « Умный ресторан» с использованием Arduino, TFT-дисплея и радиочастотного передатчика / приемного модуля 433 МГц. Здесь секция передатчика будет состоять из Arduino Uno, TFT-дисплея и радиочастотного передатчика, с помощью которого покупатели смогут выбирать продукты и размещать заказ. В то время как секция приемника состоит из Arduino Uno, ЖК-модуля, радиочастотного приемника и зуммера, который будет установлен на кухне ресторана для отслеживания позиций заказа.
Необходимые компоненты
- Ардуино Уно (2)
- Радиочастотный передатчик и приемник 433 МГц
- Сенсорный экран TFT LCD 2,4 дюйма
- 16 * 2 ЖК-модуль
- Модуль I 2 C
Сопряжение сенсорного экрана TFT LCD с Arduino
Сенсорный экран TFT LCD с диагональю 2,4 дюйма - это разноцветный TFT-дисплей, совместимый с Arduino UNO / Mega, который также оснащен сенсорным экраном и разъемом для SD-карты. Этот модуль TFT-дисплея имеет яркую подсветку и красочный дисплей 240x320 пикселей. Он также состоит из отдельных RGB пиксельный контроль, который дает ему гораздо лучшее разрешение, чем у черно-белых дисплеев.
Взаимодействие TFT-дисплея с Arduino очень просто и объяснялось в предыдущем руководстве. Вам нужно только установить TFT-дисплей на плату Arduino Uno, как показано на рисунке ниже.
TFT LCD очень полезен при создании портативных приложений, таких как:
- Калькулятор сенсорного экрана Arduino
- Цифровой кодовый замок, управляемый смартфоном, с использованием Arduino
- Будильник Arduino SMART
- Светодиодная лента NeoPixel с Arduino и TFT LCD
Также проверьте здесь все проекты на основе TFT LCD.
Принципиальная электрическая схема
Проект Smart Restaurant Menu Ordering System состоит из раздела RF Transmitter и Receiver. И передатчик, и приемник используют Arduino Uno для обработки данных. Ранее мы использовали те же радиомодули 433 МГц с Arduino для создания таких проектов, как беспроводной дверной звонок, робот, управляемый жестами рук, и т. Д. Принципиальная схема для секции передатчика и приемника приведена ниже.
Цепь секции передатчика
Раздел передатчика в этом проекте состоит из Arduino Uno, RF-передатчика и экрана TFT-дисплея. Этот раздел используется для заказа из меню, отображаемого на TFT-дисплее. Arduino Uno - это мозг стороны передатчика, который обрабатывает все данные, а модуль RF-передатчика используется для передачи выбранных данных в приемник. Вывод данных модуля RF-передатчика подключен к цифровому выводу 12 Arduino, а выводы V CC и GND подключены к выводу 5V и GND Arduino.
Цепь секции приемника
Раздел приемника в этом проекте состоит из Arduino Uno, RF-приемника, ЖК-модуля 16 * 2 и модуля I2C. Радиочастотный приемник используется для приема данных от секции передатчика, а ЖК-модуль используется для отображения полученных данных. Зуммер подает звуковой сигнал при размещении нового заказа. Вывод данных РЧ-приемника подключен к цифровому выводу 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-дисплея.
#включают
После этого создайте объект под названием «драйвер» для 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 radius, uint16_t color)
Где:
x0 = координата X начальной точки прямоугольного
y0 = координата Y начальной точки прямоугольного
w = Ширина прямоугольного
h = Высота прямоугольника
radius = Радиус скругленного угла
color = Цвет прямоугольника.
Функция tft.fillRoundRect используется для рисования заполненного прямоугольника. Синтаксисфункции tft.fillRoundRect приведен ниже:
tft.fillRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t radius, uint16_t color) 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, ЗОЛОТО); tft.drawRoundRect (30, 90, 100, 40, 8, БЕЛЫЙ); // Блюдо2 tft.fillRoundRect (30, 140, 100, 40, 8, ЗОЛОТО); // Блюдо3 tft.drawRoundRect (30, 140, 100, 40, 8, БЕЛЫЙ);
После создания кнопок на экране TFT теперь отображайте текст на кнопках. tft.setCursor используется для установки курсора, с которого вы хотите начать текст.
tft.setCursor (60, 0); tft.setTextSize (3); tft.setTextColor (ЛАЙМ); tft.print («Меню»); tft.setTextSize (2); tft.setTextColor (БЕЛЫЙ); tft.setCursor (37, 47); tft.print («Блюдо1»);
Внутри функции передачи void отправляйте данные на сторону получателя каждую 1 секунду.
пустая передача () {driver.send ((uint8_t *) msg, strlen (msg)); driver.waitPacketSent (); задержка (1000); }
Внутри функции цикла void прочтите значение Raw ADC с помощью функции ts.getPoint.
TSPoint p = ts.getPoint ();
Теперь используйте функцию карты для преобразования необработанных значений АЦП в пиксельные координаты.
px = map (px, TS_MAXX, TS_MINX, 0, 320); py = map (py, TS_MAXY, TS_MINY, 0, 240);
После преобразования необработанных значений АЦП в координаты пикселей введите координаты пикселей для кнопки Dish1 , и, если кто-то коснется экрана между этой областью, отправьте сообщение на сторону получателя.
if (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, ЗОЛОТО); tft.drawRoundRect (30, 40, 100, 40, 8, БЕЛЫЙ); tft.setCursor (37, 47); tft.println ("Блюдо1"); задержка (70); }
Выполните ту же процедуру для всех остальных кнопок.
Код секции приемника
Для кода секции РЧ-приемника включите библиотеки для РЧ-приемника и ЖК-модуля. Также включите библиотеку SPI.h для установления связи SPI между Arduino и RF-приемником.
#включают
Внутри функции void loop непрерывно проверяйте переданные сообщения. И если модуль-приемник получает сообщение, отобразите сообщение на ЖК-модуле и издайте звуковой сигнал.
if (driver.recv (buf, & buflen)) // Неблокирующий {int i; digitalWrite (зуммер, ВЫСОКИЙ); задержка (1000); digitalWrite (зуммер, НИЗКИЙ);. lcd.print ("T1:"); lcd.print ((char *) buf);
Тестирование проекта умного ресторана с использованием Arduino
После подключения всего оборудования и загрузки кода для секции передатчика и приемника теперь пора протестировать проект. Чтобы протестировать проект, нажмите кнопку на TFT-дисплее, на ЖК-модуле, подключенном к приемнику, должно отображаться название антенны с номером таблицы, равным T1. Если ЖК-дисплей на стороне приемника ничего не отображает, проверьте, работает ли ваш TFT-экран.
Вот как вы можете создать проект Smart Restaurant Menu Ordering System, используя Arduino и TFT-дисплей. Вы также можете изменить ориентацию экрана, чтобы добавить больше кнопок.
Ниже приведено рабочее видео с полным кодом.