- Būtini komponentai
- TFT LCD jutiklinis ekranas su „Arduino“
- Grandinės schema
- Kodo paaiškinimas
- Išmaniojo restorano projekto testavimas naudojant „Arduino“
Šios dienos automatikos sistemos yra visur, tiek namuose, tiek biure, tiek bet kurioje didelėje pramonėje, visos yra aprūpintos automatikos sistemomis. Restoranai / viešbučiai taip pat perima naujausias automatizavimo tendencijas ir diegia robotus, kurie pristatys maistą ir planšetinius kompiuterius užsakymams priimti. Naudodami šias skaitmenines meniu korteles, pvz., Planšetinius kompiuterius, klientai gali lengvai pasirinkti elementus. Ši informacija bus nusiųsta į restorano virtuvę ir taip pat bus rodoma ekrane.
Šiame projekte mes kuriame „ Smart Restaurant“ projektą, naudodami „Arduino“, TFT ekraną ir 433MHz RF siųstuvo / imtuvo modulį. Čia siųstuvo skyrių sudarys „Arduino Uno“, TFT ekranas ir RF siųstuvas, kuriuo naudodamiesi klientai gali pasirinkti maisto produktus ir pateikti užsakymą. Nors imtuvo skyrių sudaro „Arduino Uno“, LCD modulis, RF imtuvas ir „Buzzer“, kurie bus įrengti restorano virtuvėje, kad būtų galima stebėti užsakymo elementus.
Būtini komponentai
- „Arduino Uno“ (2)
- 433MHz radijo siųstuvas ir imtuvas
- 2,4 "TFT LCD jutiklinis ekranas
- 16 * 2 skystųjų kristalų modulis
- I 2 C modulis
TFT LCD jutiklinis ekranas su „Arduino“
2,4 "TFT LCD jutiklinis ekranas yra daugiaspalvis„ Arduino UNO / Mega “suderinamas TFT ekranas, kuris taip pat yra su jutikliniu ekranu ir SD kortelės lizdu. Šis TFT ekranas turi ryškų foninį apšvietimą ir spalvingą 240X320 pikselių ekraną. Jį taip pat sudaro atskiras RGB pikselių valdymas, kuris suteikia daug geresnę skiriamąją gebą nei nespalvoti ekranai.
TFT ekrano sąsaja su „Arduino“ yra labai paprasta ir paaiškinta ankstesnėje pamokoje. TFT ekraną reikia montuoti tik virš „Arduino Uno“ plokštės, kaip parodyta žemiau esančiame paveikslėlyje.
TFT LCD yra labai naudingas kuriant tokias nešiojamas programas kaip:
- „Arduino“ jutiklinio ekrano skaičiuoklė
- Išmaniojo telefono valdomas skaitmeninis kodinis užraktas naudojant „Arduino“
- „Arduino SMART“ žadintuvas
- „NeoPixel“ LED juosta su „Arduino“ ir TFT LCD
Be to, patikrinkite visus TFT LCD pagrįstus projektus čia.
Grandinės schema
Išmaniosios restorano meniu užsakymo sistemos projektą sudaro RF siųstuvas ir imtuvas. Tiek siųstuvas, tiek imtuvas duomenų apdorojimui naudoja „Arduino Uno“. Anksčiau tuos pačius 433 MHz radijo dažnio modulius su „Arduino“ naudojome kurdami tokius projektus kaip belaidis durų skambutis, rankomis valdomas robotas ir kt. Žemiau pateikiama siųstuvo ir imtuvo sekcijos schema.
Siųstuvo sekcijos grandinė
Šio projekto siųstuvo skyrių sudaro „Arduino Uno“, RF siųstuvas ir TFT ekrano ekranas. Šis skyrius naudojamas užsakant iš meniu, kuris rodomas TFT ekrane. „Arduino Uno“ yra siųstuvo pusės smegenys, apdorojančios visus duomenis, o RF siųstuvo modulis naudojamas perduodant pasirinktus duomenis imtuvui. RF siųstuvo modulio duomenų kaištis yra prijungtas prie „Arduino“ skaitmeninio kaiščio 12, o V CC ir GND kaiščiai yra prijungti prie „ Arduino“ 5 V ir GND kaiščių.
Imtuvo sekcijos grandinė
Šio projekto imtuvo skyrių sudaro „Arduino Uno“, RF imtuvas, 16 * 2 skystųjų kristalų modulis ir „I2C“ modulis. RF imtuvas naudojamas duomenims priimti iš siųstuvo sekcijos, o LCD modulis naudojamas gautiems duomenims rodyti. Kiekvieną kartą pateikiant naują užsakymą, garsas naudojamas garsiniu signalu. RF imtuvo duomenų kaištis yra prijungtas prie „Arduino“ skaitmeninio kaiščio 11, o V CC ir GND kaištis yra prijungtas prie „Arduino“ 5 V ir GND kaiščių. Teigiamas „Buzzer“ kaištis yra prijungtas prie „Arduino“ skaitmeninio 2 kaiščio, o neigiamas - „Arduino“ GND kaištis. „I2C“ modulio SCL ir SDA kaiščiai yra prijungti prie analoginių A5 ir A4 „Arduino“ kaiščių, o „VCC“ ir „GND“ kaiščiai yra prijungti prie „Arduino“ 5 V ir GND kaiščių.
Kodo paaiškinimas
Pilnas šios išmaniosios užsakymo sistemos restorane radijo siųstuvo ir imtuvo pusių kodas pateikiamas dokumento pabaigoje. Visas šiame projekte naudojamas bibliotekas galima atsisiųsti iš nurodytų nuorodų.
- „RadioHead“ biblioteka
- SPFD5408 biblioteka
„RadioHead“ biblioteka naudojama RF siųstuvo / imtuvo moduliui, o SPFD5408 biblioteka naudojama TFT rodymui.
Siųstuvo sekcijos kodas:
Paleiskite kodą įtraukdami visas reikalingas bibliotekas. RH_ASK.h biblioteka naudojama ryšiui tarp siųstuvo ir imtuvo modulių. SPFD5408_Adafruit_GFX.h yra pagrindinė grafikos biblioteka, skirta TFT ekranui rodyti.
# įtraukti
Po to sukurkite objektą, vadinamą „tvarkyklė“, skirtai RH_ASK .
RH_ASK vairuotojas;
Po to nustatykite mažiausią ir didžiausią sukalibruotas X ir Y ašių vertes savo TFT ekrane.
#define TS_MINX 125 #define TS_MINY 85 #define TS_MAXX 965 #define TS_MAXY 905
Dabar „drawHome“ funkcijos viduje nupieškite TFT ekrano išdėstymą. Čia nustatoma fono spalva tft.fillScreen .
Funkcija tft.drawRoundRect naudojama užpildytam stačiakampiui sukurti. Funkcijos tft.drawRoundRect sintaksė pateikiama žemiau:
tft.drawRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t spindulys, uint16_t spalva)
Kur:
x0 = stačiakampio pradžios taško X koordinatė
y0 = stačiakampio pradžios taško Y koordinatė
w = stačiakampio plotis
h = stačiakampio aukštis
spindulys = apvalaus kampo spindulys
spalva = tiesiosios spalvos spalva.
Funkcija tft.fillRoundRect naudojama nupiešti užpildytą stačiakampį. Funkcijos tft.fillRoundRect sintaksėpateikiama žemiau:
tft.fillRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t spindulys, uint16_t spalva) tft.fillScreen (BALTAS); tft.drawRoundRect (0, 0, 319, 240, 8, BALTAS); // Puslapio kraštas tft.fillRoundRect (30, 40, 100, 40, 8, GOLD); tft.drawRoundRect (30, 40, 100, 40, 8, BALTAS); // Dish1 tft.fillRoundRect (30, 90, 100, 40, 8, GOLD); tft.drawRoundRect (30, 90, 100, 40, 8, BALTAS); // Dish2 tft.fillRoundRect (30, 140, 100, 40, 8, GOLD); // „Dish3 tft.drawRoundRect“ (30, 140, 100, 40, 8, BALTAS);
Sukūrę mygtukus TFT ekrane, dabar rodykite tekstą mygtukuose. tft.setCursor naudojamas nustatyti žymeklį nuo tos vietos, kur norite pradėti tekstą.
tft.setCursor (60, 0); tft.setTextSize (3); tft.setTextColor (LIME); tft.print („Meniu“); tft.setTextSize (2); tft.setTextColor (BALTAS); tft.setCursor (37, 47); tft.print („Indas1“);
Tuščio siuntimo funkcijos viduje siųskite duomenis į imtuvo pusę kas 1 sekundę.
negaliojantis perdavimas () {tvarkyklė.siųsti ((uint8_t *) msg, strlen (msg)); driver.waitPacketSent (); vėlavimas (1000); }
Funkcijos „ void loop“ viduje skaitykite „Raw ADC“ vertę naudodami funkciją ts.getPoint.
TSPoint p = ts.getPoint ();
Dabar naudokite žemėlapio funkciją, kad pakeistumėte neapdorotų ADC reikšmes į „Pixel Coordinates“.
px = žemėlapis (px, TS_MAXX, TS_MINX, 0, 320); py = žemėlapis (py, TS_MAXY, TS_MINY, 0, 240);
Konvertuodami neapdorotų ADC reikšmes į taškų koordinates, įveskite „ Dish1“ mygtuko taškų koordinates ir, jei kas nors palies ekraną tarp šios srities, nusiųskite pranešimą į imtuvo pusę.
if (px> 180 && px <280 && py> 190 && py <230 && pz> MINPRESAS && pz <MAXPRESSURE) {Serial.println ("Indas1"); msg = "Indas1"; perduoti(); tft.fillRoundRect (30, 40, 100, 40, 8, BALTAS); vėlavimas (70); tft.fillRoundRect (30, 40, 100, 40, 8, GOLD); tft.drawRoundRect (30, 40, 100, 40, 8, BALTAS); tft.setCursor (37, 47); tft.println („Indas1“); vėlavimas (70); }
Atlikite tą pačią procedūrą su visais kitais mygtukais.
Imtuvo sekcijos kodas
Norėdami gauti RF imtuvo sekcijos kodą, įtraukite RF imtuvo bibliotekas ir LCD modulį. Taip pat įtraukite SPI.h biblioteką, skirtą užmegzti SPI ryšį tarp „Arduino“ ir RF imtuvo.
# įtraukti
„ Void loop loop“ funkcijoje nuolat tikrinkite, ar nėra perduotų pranešimų. Jei imtuvo modulis gauna pranešimą, tada parodykite pranešimą LCD modulyje ir atlikite pyptelėjimą.
if (tvarkyklė.recv (buf, & buflen)) // Neužblokuojantis {int i; „digitalWrite“ (garsinis signalas, AUKŠTAS); vėlavimas (1000); digitalWrite (zumeris, LOW);. lcd.print ("T1:"); lcd.print ((char *) buf);
Išmaniojo restorano projekto testavimas naudojant „Arduino“
Prijungę visą aparatūrą ir įkėlę kodą tiek siųstuvui, tiek imtuvui, dabar atėjo laikas išbandyti projektą. Norėdami išbandyti projektą, paspauskite mygtuką TFT ekrane. Jame LCD ekrane, prijungtame prie imtuvo pusės, turėtų būti rodomas patiekalo pavadinimas su stalo numeriu, kuris yra T1. Jei imtuvo pusėje esantis skystųjų kristalų ekranas nieko nerodo, patikrinkite, ar veikia jūsų TFT ekranas.
Taip galite sukurti „Smart Restaurant Menu Ordering System“ projektą naudodami „Arduino“ ir TFT ekraną. Taip pat galite pakeisti ekrano orientaciją, kad pridėtumėte daugiau mygtukų.
Dirba vaizdo su visu kodas yra pateikiamas toliau.