- Gerekli Bileşenler
- Arduino ile arabirim TFT LCD Dokunmatik ekran
- Devre şeması
- Kod Açıklama
- Arduino kullanarak Akıllı Restoran Projesini Test Etme
Günümüzün otomasyon sistemleri, ister ev, ister ofis veya herhangi bir büyük endüstri olsun, her yerde, hepsi otomasyon sistemleri ile donatılmıştır. Restoranlar / Oteller de son otomasyon trendlerini benimsiyor ve sipariş almak için yiyecek ve tablet sağlamak için robotlar kuruyor. Müşteriler, tabletler gibi bu dijital menü kartlarını kullanarak öğeleri kolayca seçebilir. Bu bilgiler restoranın mutfağına gönderilecek ve ayrıca ekranda gösterilecektir.
Bu projede Arduino, TFT ekran ve 433MHz RF verici / alıcı modülünü kullanarak Akıllı Restoran Projesi inşa ediyoruz. Burada verici bölümü Arduino Uno, TFT ekran ve müşterilerin yiyecekleri seçip sipariş verebilecekleri bir RF vericiden oluşacaktır. Alıcı bölümü, sipariş öğelerini takip etmek için restoran mutfağına kurulacak Arduino Uno, LCD modülü, RF alıcı ve Buzzer'dan oluşur.
Gerekli Bileşenler
- Arduino Uno (2)
- 433MHz RF Verici ve Alıcı
- 2,4 "TFT LCD Dokunmatik ekran
- 16 * 2 LCD Modülü
- I 2 C Modülü
Arduino ile arabirim TFT LCD Dokunmatik ekran
2,4 "TFT LCD Dokunmatik ekran, dokunmatik ekran ve SD kart soketi ile birlikte gelen çok renkli bir Arduino UNO / Mega uyumlu TFT ekrandır. Bu TFT ekran modülünde parlak bir arka ışık ve renkli bir 240X320 piksel ekran vardır. Ayrıca ayrı RGB'den oluşur siyah beyaz ekranlardan çok daha iyi bir çözünürlük sağlayan piksel kontrolü.
TFT ekranın Arduino ile arayüzlenmesi çok basittir ve önceki eğitimde açıklanmıştır. Aşağıdaki resimde gösterildiği gibi, sadece TFT ekranını Arduino Uno kartının üzerine monte etmeniz gerekir.
TFT LCD, aşağıdaki gibi taşınabilir uygulamaların oluşturulmasında çok kullanışlıdır:
- Arduino Dokunmatik Ekran Hesaplayıcı
- Arduino ile Akıllı Telefon Kontrollü Dijital Kod Kilidi
- Arduino SMART Çalar Saat
- Arduino ve TFT LCD ile NeoPixel LED Şerit
Ayrıca, tüm TFT LCD tabanlı projeleri buradan kontrol edin.
Devre şeması
Akıllı Restoran Menü Sipariş Sistemi projesi RF Verici ve Alıcı bölümünden oluşmaktadır. Hem verici hem de alıcı tarafı veri işleme için Arduino Uno kullanıyor. Daha önce aynı 433 MHz RF modüllerini Arduino ile kablosuz kapı zili, el hareketi kontrollü robot vb. Yapı projeleri için kullandık. Verici ve alıcı bölümü için devre şeması aşağıda verilmiştir.
Verici Bölüm Devresi
Bu projenin verici bölümü bir Arduino Uno, RF Verici ve TFT ekran kalkanından oluşur. Bu bölüm, TFT ekranında gösterilen menüden sipariş vermek için kullanılır. Arduino Uno, tüm verileri işleyen verici tarafının beynidir ve RF verici modülü, seçilen verileri alıcıya iletmek için kullanılır. RF verici modülünün data pini Arduino'nun dijital pin 12'sine, V CC ve GND pinleri ise Arduino'nun 5V ve GND pinlerine bağlanır.
Alıcı Bölüm Devresi
Bu projenin alıcı bölümü bir Arduino Uno, RF Alıcı, 16 * 2 LCD modülü ve I2C modülünden oluşmaktadır. Verici bölümünden alınan verinin alınması için RF alıcı, alınan verinin görüntülenmesi için LCD modülü kullanılmaktadır. Yeni bir sipariş verildiğinde ses çıkarmak için bir zil kullanılır. RF alıcısının veri pini Arduino'nun 11 numaralı dijital pinine, V CC ve GND pini ise Arduino'nun 5V ve GND pinine bağlanır. Buzzer'ın pozitif pini Arduino'nun dijital pini 2'ye, negatif pini ise Arduino'nun GND pinine bağlanır. I2C modülünün SCL ve SDA pinleri A5 ve A4 Arduino analog pinlerine, VCC ve GND pinleri ise Arduino'nun 5V ve GND pinlerine bağlanır.
Kod Açıklama
Restorandaki bu Akıllı Sipariş Sistemi için RF Verici ve Alıcı taraflarının tam kodu belgenin sonunda verilmiştir. Bu projede kullanılan tüm kütüphaneler verilen bağlantılardan indirilebilir.
- RadioHead Kitaplığı
- SPFD5408 kitaplığı
RF verici / Alıcı modülü için RadioHead kitaplığı kullanılırken, SPFD5408 kitaplığı TFT ekranı için kullanılır.
Verici Bölüm Kodu:
Tüm gerekli kitaplıkları ekleyerek kodu başlatın. RH_ASK.h kitaplığı, verici ve alıcı modülleri arasındaki iletişim için kullanılır. SPFD5408_Adafruit_GFX.h , TFT ekran için bir Çekirdek grafik kitaplığıdır.
#Dahil etmek
Bundan sonra, RH_ASK için 'sürücü' adında bir nesne oluşturun.
RH_ASK sürücüsü;
Bundan sonra, TFT ekranınız için minimum ve maksimum kalibre edilmiş X ve Y ekseni değerlerini tanımlayın.
#define TS_MINX 125 #define TS_MINY 85 #define TS_MAXX 965 #define TS_MAXY 905
Şimdi drawHome işlevinin içinde TFT ekranınız için bir düzen çizin. Burada tft.fillScreen arka plan rengini ayarlamak için kullanılır.
tft.drawRoundRect işlevi, dolu bir Dikdörtgen oluşturmak için kullanılır. Tft.drawRoundRect işlevinin sözdizimi aşağıda verilmiştir:
tft.drawRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t yarıçapı, uint16_t rengi)
Nerede:
x0 = Dikdörtgenin başlangıç noktasının X koordinatı
y0 = Dikdörtgenin başlangıç noktasının Y koordinatı
w = Dikdörtgenin genişliği
h = Dikdörtgenin Yüksekliği
yarıçap = Yuvarlak köşenin yarıçapı
color = Rect'in Rengi.
tft.fillRoundRect işlevi, dolu bir Dikdörtgen çizmek için kullanılır. Tft.fillRoundRect işlevininsözdizimiaşağıda verilmiştir:
tft.fillRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t yarıçapı, uint16_t renk) tft.fillScreen (BEYAZ); tft.drawRoundRect (0, 0, 319, 240, 8, BEYAZ); // Sayfa sınırı tft.fillRoundRect (30, 40, 100, 40, 8, GOLD); tft.drawRoundRect (30, 40, 100, 40, 8, BEYAZ); // Dish1 tft.fillRoundRect (30, 90, 100, 40, 8, GOLD); tft.drawRoundRect (30, 90, 100, 40, 8, BEYAZ); // Dish2 tft.fillRoundRect (30, 140, 100, 40, 8, GOLD); // Dish3 tft.drawRoundRect (30, 140, 100, 40, 8, BEYAZ);
TFT ekranında düğmeleri oluşturduktan sonra, şimdi düğmelerdeki metni görüntüleyin. tft.setCursor , imleci metne başlamak istediğiniz yerden ayarlamak için kullanılır.
tft.setCursor (60, 0); tft.setTextSize (3); tft.setTextColor (LIME); tft.print ("Menü"); tft.setTextSize (2); tft.setTextColor (BEYAZ); tft.setCursor (37, 47); tft.print ("Dish1");
İçinde boşluk iletim fonksiyonu, alıcı tarafına her 1 saniye veri göndermek.
void transmit () {driver.send ((uint8_t *) msg, strlen (msg)); driver.waitPacketSent (); gecikme (1000); }
İçinde boşluk döngü fonksiyonu, ts.getPoint işlevini kullanarak Ham ADC değerini okuyun.
TSPoint p = ts.getPoint ();
Şimdi Raw ADC değerlerini Piksel Koordinatlarına dönüştürmek için harita işlevini kullanın.
px = harita (px, TS_MAXX, TS_MINX, 0, 320); py = harita (py, TS_MAXY, TS_MINY, 0, 240);
Raw ADC değerlerini piksel koordinatına dönüştürdükten sonra, Dish1 düğmesi için piksel koordinatlarını girin ve bu alan arasındaki ekrana birisi dokunursa mesajı alıcı tarafına gönderin.
eğer (px> 180 && px <280 && py> 190 && py <230 && pz> MINPRESSURE && pz <MAXPRESSURE) {Serial.println ("Dish1"); msg = "Yemek1"; gönderme (); tft.fillRoundRect (30, 40, 100, 40, 8, BEYAZ); gecikme (70); tft.fillRoundRect (30, 40, 100, 40, 8, GOLD); tft.drawRoundRect (30, 40, 100, 40, 8, BEYAZ); tft.setCursor (37, 47); tft.println ("Dish1"); gecikme (70); }
Diğer tüm düğmeler için aynı prosedürü izleyin.
Alıcı Bölüm Kodu
RF alıcı bölüm kodu için, RF alıcısı ve LCD modülü için kitaplıkları ekleyin. Ayrıca, Arduino ve RF alıcı arasında bir SPI iletişimi kurmak için SPI.h kitaplığını dahil edin.
#Dahil etmek
İçinde boşluk döngü fonksiyonu, sürekli iletilen iletileri kontrol edin. Alıcı modül bir mesaj alırsa, mesajı LCD modülünde görüntüleyin ve bir bip sesi çıkarın.
if (driver.recv (buf, & buflen)) // Engellemesiz {int i; digitalWrite (zil, YÜKSEK); gecikme (1000); digitalWrite (zil, DÜŞÜK);. lcd.print ("T1:"); lcd.print ((char *) buf);
Arduino kullanarak Akıllı Restoran Projesini Test Etme
Tüm donanımı bağladıktan ve hem verici hem de alıcı bölümü için kodu yükledikten sonra, şimdi projeyi test etme zamanı. Projeyi test etmek için TFT ekranda bir düğmeye basın, alıcı tarafına bağlı LCD modülünde T1 olan masa numarasıyla çanak adını göstermelidir. Alıcı tarafındaki LCD hiçbir şey göstermiyorsa, TFT ekranınızın çalışıp çalışmadığını kontrol edin.
Arduino ve TFT ekran kullanarak Akıllı Restoran Menü Sipariş Sistemi projesi bu şekilde oluşturabilirsiniz. Daha fazla düğme eklemek için ekranın yönünü de değiştirebilirsiniz.
Bir tam koduyla çalışma Video aşağıda verilmiştir.