V preteklem nadaljevanju nas je zanimalo, kako priključiti in sprogramirati cenen črni-beli SHARPov LCD grafični prikazovalnik brez tiskanine. Lotili smo se tudi preizkušanja med graditelji Arduino projektov priljubljenega barvnega 1,25-inčnega Adafruitovega SSD1351 prikazovalnika, za priklop katerega ne potrebujemo kakih posebnih spretnosti spajkanja, saj je konektor z natičnimi kontakti priložen, na koncu pa še začeli izdelovati mini vremensko postajo z barvnim prikazovalnikom in merilniki temperature, zračnega tlaka in relativne zračne vlažnosti.
Avtor: dr. Simon Vavpotič
E-pošta: 15579247@users.siol.net
Avtor fotografij: Simon Vavpotič
2022-304-26
Tokrat moramo na vremensko postajo 3.0 priključiti še tipali za merjenje relativne zračne vlage in zračnega tlaka, poleg teh pa izdelati še zunanje merilne enote, ki jih bodo poganjali ESP32 moduli. Zdaj, ko imamo 262.143 barv, moramo na zaslon naložiti vsaj eno barvno fotografijo. Preverilo bomo tudi možnosti za priklop precej zmogljivejšega 4-inčnega Waveshareovega prikazovalnika z zaslonom na dotik, ki sem dočakal v prvih dneh januarja. Izdelan je kot Arduino ščit, a kljub temu ga lahko uporabljamo v drugih mikrokontrolerskih rešitvah in seveda z Raspberry Pi.
Ta vsebina je samo za naročnike
Z zaslonom na dotik odpade potreba po tipkovnici in enkoderju, zato je dizajn strojne opreme bistveno enostavnejši. Po drugi strani, lahko kot Arduini ščit zasnovan prikazovalnik z zaslonom na dotik povežemo tudi z Raspberry Pi. Dobro je tudi to, da njegova cena ni pretirana, saj sem zanj odštel okoli 35 EUR. Izdelali bomo tudi Ethernet prehod za ožičeno povezavo v Internet…
Komunikacija po vodilih SPI in I2C
Večina senzorjev za merjenje vremenskih parametrov komunicira preko vodil SPI in I2C. Slednje je v zadnjem času vse bolj popularno, saj lahko prek istega vodila z dvosmernim podatkovnim in taktnim signalom komunicira veliko naprav. Vremenska postaja 3.0 lahko zajema podatke iz ADT7410 (temperatura), BMP/BME 280 (zračni pritisk in temperatura) in HTU21DF modula (relativna vlažnost zraka). Vendar senzorjev ne moremo dodajati v nedogled, saj ima večina že vgrajena 10 k Ohmska upora za veliko naslovnih in podatkovnih linij navzgor, tako se upornost z vzporedno priključitvijo še enega senzorja na vodilo zmanjša na 5 k Ohm, s priključitvijo tretjega senzorja pa na 3,3 k Ohm.
Za preverjanje prisotnosti naprav na vodilu I2C lahko uporabimo naslednji Arduino C/C++ program, ki je še posebej uporaben, ko nismo prepričani o tem, na katerih naslovih so naprave, ki so priključene na vodilo:
nDevices = 0;
for(address = 1; address < 127; address++ ){
Wire.beginTransmission(address);
error = Wire.endTransmission();
if (error == 0){
Serial.print(“I2C device found at address 0x”);
if (address<16)Serial.print(“0”);
Serial.print(address,HEX);
nDevices++;
}
}
Tako ni potrebno ugibati, ali smo morebiti zgrešili naslov na I2C vodilo na novo povezane naprave, ampak se izpišejo naslovi vseh najdenih naprav. Podoben program lahko v programskem jeziku Python ali C++ lahko uporabimo tudi na Raspberry Pi.
Vremenska postaja ter BMP280 in BME280 senzorja
Merjenje zračnega tlaka in relativne zračne vlage je povezano z merjenjem temperature, saj moramo pri obeh za natančnost meritev upoštevati tudi temperaturo prostora, v kateri sta izmerjena. Prav zato imajo (skoraj) vsa tovrstna digitalna tipala vgrajen tudi termometer. Dodaten digitalni termometer potrebujemo le tam, kjer morebiti potrebujemo večno natančnost merjenja temperature. Kakorkoli, za izgradnjo enostavne vremenske postaje zadošča že BME280 senzor, ki meri tlak, vlažnost in temperaturo, medtem ko starejši BMP280 meri samo tlak in temperaturo. Zato potrebujemo še dodatni senzor za merjenje relativna vlažnosti zraka.
Na Internetu najdemo različne cenene miniaturne razvojne ploščice s BMP280 ali BME280 senzorjem, ki se medsebojno ne razlikujejo po tem. Nekateri proizvajalci na razvojnih ploščicah celo navajajo oznako BME/BMP280, s čemer povejo, da gre za enako razvojno vezje, vendar je nanj lahko nameščen BMP280 ali zmogljivejši BME280. Slednji je precej dražji, zato je upanje, da bomo za okoli 8 EUR plus poštnino dobili še merilnik vlažnosti zraka zaman.
K sreči je Adadfruit pripravil programske knjižnici (github.com/adafruit/Adafruit_BME280_Library in github.com/adafruit/Adafruit_BMP280_Library) za razvojno okolje Arduino za oba čipa. In kaj pa če ne vemo, kateri čip je vgrajen? V tem primeru v Adafruit BMP280 Library poiščemo primer bmp280_sensortest.ino ga prevedemo in naložimo v svojo z Arduinom združljivo razvojno ploščo. Če čip BMP280 ali združljiv, dobimo meritvi temperature in zračnega tlaka, v nasprotnem primeru, pa ID kodo čipa, po kateri lahko preverimo, kateri senzor uporabljamo. No, vsekakor je tu opcija tudi starejši BMP180.
Kakorkoli, moj čip nosi oznako 0x58, zato ne omogoča meritve vlažnosti zraka, sem pa zanj vseeno uporabil nekoliko prirejeno sodobnejšo programsko knjižnico, ki so jo pri Adafruitu razvili za BME280 senzor.
Merjenje zračnega tlaka
Miniaturni BMP in BME senzorji omogočajo vse vrste komunikacij SPI in I2C, odvisno od tega, kako vežemo njihove priključke. Sam sem nabavil cenejšo GYBMEP razvojno ploščico z le štirimi priključki, ki podpira samo I2C komunikacijo. Je pa pohvalno, da stebrasti kontakti niso prispajkani, saj je ploščico tiskanega vezja pri nekaterih aplikacijah smotrneje pritrditi neposredno na kabel in privarčevati prostor. Po drugi strani, imajo nekoliko dražje Adafruitove razvojne ploščice izvedene vse kontakte senzorja in tako omogočajo poljubno izbiro načina komunikacije.
GYBMEP razvojna ploščica ima za komunikacijo prek vodila I2C prednastavljen naslov 0x76, kar moramo upoštevati tudi pri uporabi Adafruitovih primerov, v katerih je predizbran naslov 0x77, razen če se potrudimo in na miniaturnem razvojnem vezju prespajkamo kontakt za izbiro naslova.
Kako neprijetno zna biti vzpostavljanje prvega stika z BMP280 senzorjev s pomočjo z Adafruitovih programskih knjižnic z ne-Adafruitovo razvojno ploščico sem izkusil tudi sam. S prvo od treh ploščic v kompletu, ki sem ga za okoli 8 EUR naročil prek nemškega Amazona, sem izgubil veliko časa, saj ni in ni hotela delovati, ker sem po nesreči zamenjal priključka SDA in SCL. Kot kaže, je bilo to tudi usodno, saj ni delovala niti, ko sem opravil vse težave, je pa nato takoj začela delovati druga ploščica iz kompleta.
Kako prirediti novejšo programsko knjižnico za BME280 tudi za starejši BMP280?
Če programske knjižnice v Arduino razvojno okolje nameščamo ročno, ali pa jih enostavno skopiramo v projekt, je njihovo popravljanje in dopolnjevanje sorazmerno enostavno. Adafruit BME280 programska knjižnica ne podpira drugih senzorjev, saj v inicializacijskem podprogramu preveri, ali je ID koda senzorja 0x60. Kljub temu se nabora registrov BMP280 in BME280 za programerja skoraj ne razlikujeta. Tudi izmerjeni in kompenzirani vrednosti temperature in zračnega tlaka se ne razlikujeta glede na uporabljeno programsko knjižnico, zato pa ima programska knjižnica za BME280 sodobnejšo zasnovo. Z BMP280 jo lahko uporabimo, če v funkciji Adafruit_BME280::init() spremenimo pogoj:
if (_sensorID != 0x60)return false;
v:
if ((_sensorID != 0x60)&&(_sensorID !=
0x58))return false;
Ker pa se BMP280 in BME280 razlikujeta le po enem registru, iz katerega programska knjižnica prebere vlažnost zraka, bomo pri BMP280 namesto dejanske relativne vlažnosti zraka vselej prebrali vrednost 0.
Kako umeriti merilnik tlaka glede na podatke ARSO?
Ostane še zadnja naloga, umerjanje glede podatke o zračnem tlaku, ki jih vsakodnevno sporoča Agencija Republike Slovenije za okolja (ARSO). ARSO zaradi lažje primerjave podatkov med različnimi kraji v Sloveniji vse meritve zračnega tlaka preračuna na nadmorsko višino 0 metrov, oziroma gladino morja. Za preračun vrednosti izmerjenega zračnega tlaka na ekvivalentno vrednost zračnega moramo poznati temperaturo prostora in nadmorsko višino, na kateri smo zračni tlak izmerili. Od zahtevanih podatkov s BMP280 ali BME280 senzorjem ne moremo izmeriti le nadmorske višine, vendar to navadno poznamo (ali preberemo iz GPS aplikacije na pametnem telefonu). Za Ljubljano je okoli 300 m. Potem je ekvivalentna vrednost zračnega tlaka na morski gladini (v skladu z ARSO meteorološkim priročnikom Uvod v meteorologijo, ki ga lahko prenesemo iz njihovih spletnih strani) naslednja:
P(0)=P(z)/e^(-g/(RT)*z)
Pri tem pomeni P(z) izmerjeni zračni na nadmorski višini z (metrov), P(0) pa tlak na gladini morja. Temperaturo T prav tako izmerimo, vendar jo moramo izraziti v Kelvinih, kar pa ni težko, če vemo, da je teoretično najnižja mogoča temperatura v vesolju -273,15 st. C oziroma 0 K. Torej moramo temperaturi v st. Celzija to vrednost prišteti, da dobimo vrednost v Kelvinih. Pri tem je vrednost konstante R enaka 287 K / (kg K), e je naravno število (2,718), g pa težnostni pospešek na Zemlji, ki znaša približno 9,81 m/s2. Če merimo zračni tlak v Ljubljani, ki je na nadmorski višini približno 300 m pri 25 st. C in izmerimo tlak 991 hPa, tako dobimo:
P(0)=P(z)/e^(-g/R/T*z)=P(z)*e^(g*z/R/T)
P(0)=P(300) *e^(9,81*300/287/298,15) =
991,00 hPa * e^(9,81*300/287/
(273,15+25)) = 1025,68 hPa.
Vse, kar moramo zdaj še narediti, ko merilnik tlaka namestimo v prostor, je vnesti pravo nadmorsko višino. Poglejmo še, kaj moramo dodati v funkcijo readPressure v programski knjižnici Adafruit_BME280.cpp pred zadnji stavek return P:
float P= Pz*exp(9.81*elevation/287/
(273.15+Adafruit_BME280::
readTemperature()));
Pri tem v spremenljivki elevation podamo nadmorsko višino kraja v metrih, kjer smo izmeriti zračni tlak. Vrednosti elevation lahko spremenimo tudi med delovanjem vgrajene programske opreme s pomočjo terminalskega dostopa z ukazom E(<nova nadmorska višina v metrih>). Če nastavimo nadmorsko višino 0 metrov, so izmerjene vrednosti zračnega tlaka nekompenzirane, saj je e^0 enako 1. Vsekakor pa je ta nastavitev čisto v redu, če vremensko postajo namestimo v obmorskem kraju.
Naj omenim še to, da lahko enako kompenzacijo vgradimo tudi v programsko kodo vremenske postaje V2.0, katere osnova je PIC32MX mikrokontroler. Za enkrat je pri tej uporabljen enostavnejši način kompenzacije z referenčno vrednostjo tlaka, kar ima za posledico nekoliko večja odstopanja.
Kako BMP280 dodati merilnik relativne vlage zraka?
Če ste pomotoma kupili GYBMEP razvojno ploščico z BMP280 merilnikom, nam ne preostane drugega kot nabava HTU21DF razvojne ploščice za merjenje relativne vlažnosti zraka. K sreči imata GYBMEP in HTU21DF razvojni ploščici enako razporejene kontakte, zato ju lahko z uporabo dolgih stebričastih kontaktov povežemo v en senzor, ki ga nato vtaknemo v isti priključek, kot če bi imeli BME280. Vseeno pa je potrebno za uporabo HTU21DF dodati tudi ustrezno programsko knjižnico (Adafruit_HTU21DF). HTU21DF ima na I2C vodilu fiksen naslov 0x40, zato lahko na istem vodilu uporabljamo le en merilnik, lahko pa kot vhodni parameter funkcije begin podamo tudi izbrano I2C vodilo, če uporabljamo več I2C vodil.
Shranjevanje vremenskih podatkov
Ker je del vremenske postaje tudi VS1503 modul z ležiščem za micro SD kartico, bi bilo škoda, da ne bi izmerjenih vremenskih parametrov tudi shranjevali. Shranjevanje v datoteko praviloma poteka intervalno, denimo enkrat na minuto ali enkrat na uro, saj pogosteje ni smiselno, ker se vremenski parametri spreminjajo sorazmerno počasi.
Ker o shranjevanje podatkov v datoteke na micro SD kartice v Arduino okolju ni ravno zapleteno, poglejmo le, kako podatke dodajamo na rep obstoječe datoteka, saj večina primerov s spleta datoteko preprosto prepiše z novimi podatki:
if((fscn=SD.open(“/log.txt”,FILE_APPEND))!=NULL){
fscn.write((uint8_t *)fprintout.c_str(),fprintout.length());fscn.close();}
else {Serial.println(“Cannot write to log.
txt error!”);result=-1;}
Kot vidimo, je potrebno v ukazu open kot drugi parameter dodati atribut FILE_APPEND. Če ga ne podamo, se ukaz izvede s prednastavljeno vrednostjo FILE_WRITE, kar pomeni, da se najprej obstoječa vsebina datoteke izbriše, nato pa se vanjo zapiše nova, zato bi imeli v tem primeru vselej shranjeno le zadnjo meritev.
Poceni vremenska postaja z Raspberry Pi
Vodili I2C in SPI imajo tudi Raspberry Pi tipa B. Najstarejše različice imajo dvovrstični razširitveni konektor s 26-kontakti, ostali pa konektor s 40 kontakti. Povezava senzorjev BMP280, BME280 in HTU21DF z Raspberry Pi je zato prav tako enostavna kot s katerimkoli Arduino modulom. Paziti moramo le, da pravilno povežemo kontakte. Pri Raspberry Pi s konektorjem s 40 priključki vežemo priključek 1 na Vin, priključek 3 na SDA, priključek 5 na SCL in priključek 9 na GND (glej sliko). Za merjenje temperature, relativne vlažnosti zraka in zračnega tlaka zdaj potrebujemo le še programsko opremo. Postopek nameščanja, če je v Raspberry Pi že nameščen programski jezik Python, je naslednji:
sudo apt-get install python-setuptools
wget https://files.pythonhosted.org/packages/6a/06/
80a6928e5cbfd40c77c08e06ae9975c2a
50109586ce66435bd8166ce6bb3
/smbus2-0.3.0.tar.gz
Zdaj arhiv razširimo v imenik smbus2-0.3.0, nato pa programsko knjižnico s podporo za I2C vodilo za Pyhon še namestimo.
chdir smbus2-0.3.0
sudo python setup.py install
Pred ponovnim zagonom računalnika v nastavitvah omogočimo I2C vodilo in v datoteko /boot/config.txt dodamo naslednji vrstici:
dtparam=i2c_arm=on
dtparam=i2c_arm_baudrate=10000
S tem povemo, da želimo uporabljati I2C gonilnik pri hitrosti prenosa podatkov 10 kHz. Če BME280 senzor povežemo s kratkim kablom, lahko izberemo tudi precej večje hitrosti od 100 kHz do največ 3,4 MHz.
Zdaj potrebujemo še program za merjenje vremenskih parametrov, ki ga prenesemo na spodnji način in nato zaženemo:
wget -O bme280.py http://bit.ly/bme280py
Opcijsko lahko pravilno delovanje povezave senzorja z računalnikom preverimo s programskim orodjem I2Cdetect, ki ga najprej namestimo z ukazom:
sudo apt-get install -y i2c-tools
Nato pa zaženemo:
sudo i2cdetect -y 1
S tem dobimo spisek vseh delujočih I2C naprav na vodilu. Poglejmo še, kako izgleda program za branej z BME280 izmerjenih vrednosti temperature, relativna vlažnosti in zračnega tlaka v Pythonu:
import bme280
temperature,pressure,humidity = bme280.readBME280All()
print “Temperature : “, temperature, “C”
print “Pressure : “, pressure, “hPa”
print “Humidity : “, humidity, “%”
Most med Wi-Fi in ožičenim Internetom
V petem nadaljevanju v SE302 smo omenili LILYGO TTGO T-Ethernet-POE modul z vgrajenim Ethernet LAN8720A vmesnikom za povezavo v ožičena omrežja. Obenem modul še vedno omogoča tudi brezžično Wi-Fi povezljivost. Če nanj namestimo programsko opremo, ki jo najdemo na spletni strani PC USB Projects (WIFI2ETH.ZIP), ga lahko spremenimo v most med ožičenim Ethernet dostopom do Interneta in brezžičnim Wi-Fi omrežjem. Za prevajanje programske kode potrebujemo IDF razvojno okolje, obenem je osnovni primer ETH2AP je na voljo tudi na spletnih straneh Espressif Systems v okviru tega razvojnega okolja. Ker pa je namestitev IDF za mnoge nekoliko zapletena, je IDF na voljo tudi v obliki navideznega računalnika z zastonjskim operacijskim sistemom Ubuntu (denimo: ubuntu1804.ova), ki ga lahko s pomočjo ustrezne programske opreme namestimo v poljuben osebni računalnik ali gostiteljski strežnik. Sam raje IDF uporabljam neposredno v operacijskem sistemu Windows, saj tako deluje hitreje, hkrati pa je prenos nove ugnezdene programske opreme enostavnejši, saj imajo navidezni računalniki pogosto zelo omejen dostop do sistemskih sredstev, kot so USB vrata, in je zato težje zagotoviti sinhronizacijo RS232 vmesnikov, ki je potrebna pred nalaganjem nove vgrajene programske opreme.
Če ima vremenska postaja dostop do Interneta, lahko točen čas prenese iz javnih časovnih spletnih strežnikov, zato nam ure in datuma ob zagonu ni potrebno prenašati iz osebnega računalnika ali pametnega telefona, ali celo ročno vnašati prek enkoderja.
Oddaljeni merilni moduli
Vremenska postaja ne meri vremenskih parametrov samo v prostoru, v katerem je nameščena, temveč zbira tudi podatke iz oddaljenih modulov, ki so nameščeni v drugih prostorih stanovanja pa tudi zunanjo temperaturo, če oddaljeni modul namestimo na zunanji del stavbe. Oddaljeni moduli ne potrebujejo grafičnega prikazovalnika, saj delujejo kot Wi-Fi dostopne točke, s katerimi se poveže osnovni modul vremenske postaje 3.0, nato pa iz njih periodično zajema podatke. Osnovni modul obenem zazna morebitno porušitev Wi-Fi povezave in jo poskuša samodejno vzpostaviti nazaj.
Osnova oddaljenega merilnega modula je ESP32 modul. Slučajno sem imel pri roki ESP32-ROVER modul s priključkom za zunanjo anteno, za uporabo PCB antene pa moramo prestaviti 0-Ohmski mostiček. Dodal sem mu še ADT7410 modul za merjenje temperatur, ki sem ga prav tako imel pri roki, seveda pa bi mu lahko dodal katerikoli drugi modul. Glede na to, da se vlažnost v večini prostorov stanovanja ne razlikuje dosti, zračni pritisk pa sploh ne, je taka odločitev razumna, je smiselno po en oddaljeni merilni modul namestiti v vsak prostor stanovanja, saj je tako najlažje zagotoviti zadostno ogrevanje ali poleti hlajenje vseh prostorov.
Za napajanje oddaljenega modula je mogoče uporabiti tudi do 12 V napajalnik iztrošenega mobilnega telefona, saj ima modul vgrajen LM317T napetostni regulator, ki je z uporoma nastavljen tako, da napetost zniža je 3,3 V. Oddaljeni modul se od osnovnega modula razlikuje predvsem po programski opremi in po tem, da ne potrebuje lastne mikro SD kartice za shranjevanje vrednosti vremenskih parametrov.
Sestavljanje oddaljenega modula
Za oddaljeni modul bi lahko uporabil katerokoli razvojno ploščico z dovolj stebrastimi kontakti in vgrajenim mostom iz USB na RS232, vendar sem namesto tega raje uporabil vezje za prototipiranje, ESP32-ROVER modul in žico za povezovanje kontaktov na protoboardih. Če ESP32-ROVER modul s kovinskim pokrovčkom prilepimo na tiskano vezje tako, da s tem ne preprečimo dostopa do antenskega priključka, je izpostavljena zadnja stran modula z oznakami posameznih priključkov. Zato je z uporabo običajnega spajkalnika, žico za povezovanje kontaktov na protoboardih in povečevalnega stekla mogoče sorazmerno enostavno neposredno povezati kontakte na ESP32 modul.
Zagotavljanje združljivosti senzorjev na strojnem nivoju
Vsa vremenska digitalna tipala lahko povežemo z vodilom I2C, pri čemer je smiselna enaka razporeditev priključkov na konektorjih vseh modulov vremenske postaje. Tako so vsi povezovalni kabli enaki, tipala pa lahko izmenjujemo. Tako je mogoče senzorje medsebojno izmenjevati, hkrati pa jih je mogoče na posamezen modul vremenske postaje vezati tudi po več. Smiselno je, da sta signala SCL in SDA čimbolj narazen, saj lahko tako podatke prenašamo pri višjih taktih. K sreči lahko mednju vstavimo signala za napajanje, maso in napajalno napetost. Za svoj projekt sem izbral 1-vrstični konektor s 6 priključki:
- Čeprav moramo modula BMP280 in BME280 napajati s 3,3 V, pa sta v razvojno ploščico GYBMEP vgrajena tudi napetostni regulator in ustrezna napetostna prilagoditev, kar omogoča delovanje pri razponu napajalne napetosti med 3,3 V in 5 V. Zato jih lahko uporabljamo tako s 3,3 V kot 5 V mikrokontrolerji.
4-inčni Waveshare TFT z zaslonom na dotik Arduino ščit
ILI9486L krmilnik prikazovalnika z Intelovo procesorsko arhitekturo 8080 ima 16-bitno podatkovno vodilo, vendar omogoča tudi 8, 9 in 18-bitna podatkovna vodila, prav tako pa tudi SPI vodili s tremi ali štirimi priključki. Vendar naj bi cenejši TFT z ILI9486 krmilnikom, uporabljen v Waveshare TFT z zaslonom na dotik Arduino ščitu omogočal zgolj paralelno komunikacijo. Zato so pri Waveshare iz štirih čipov sami izdelali pretvornik iz SPI vodila na vzporedno 16-bitno vodilo, ki ima: en 12-bitni števec (74HC4040), dva 8-bitna pomikalna registra s pomnilnikom (74HC4094) in en negator (74HC04D). Pretvornik SPI16-bitno vodilo obenem deluje tudi kot prilagodilnik napetostnih nivojev, vendar pa, podobno kot implementacija SPI v ILI9486, ne omogoča povratne komunikacije TFTglavni mikrokontroler. Sliko na prikazovalniku zato lahko urejamo le v medpomnilniškem RAMu glavnega mikrokontrolerja. S sreči imamo pri ESP32-ROVER modulih vgrajen tudi dodatni RAM čip s serijskim dostopom, v katerem lahko hranimo zaslonsko sliko, medtem ko ima Raspberry Pi pomnilnika v vsakem pogledu več kot dovolj, saj prek (mikro) HDMI vmesnika omogoča bistveno večje ločljivosti kot 320×480.
Po drugi strani, XPT2046 krmilnik zaslona na dotik že v osnovi komunicira prek 1-bitnega vodila SPI, prav tako pa tudi ležišče za kartico mikro SD. SCLK, MOSI in MISO priključki vseh čipov Arduino ščita so združeni in so dostopni prek dveh rumenih enovrstičnih konektorjev, na katerih so tudi chip select signali za ILI9486L krmilnik, XPT2046 krmilnik in SD kartico. Napajanje Arduino ščita (med 3,3 V in 5 V) je izvedeno prek rdečega konektorja, na katerem do dostopen tudi signal reset. Modri konektor ni povezan je omogoča samo boljšo pritrditev ščita na Adruino klasične Arduno ali STM32 razvojne plošče. Omenimo še AMS1 napetostni regulator z nizkim padcem napetosti, ki napajalno napetost zniža na 3,3 V. Zato lahko modul napajamo tudi s 5 V in krati z njim komuniciramo s 5 V mikrokontrolerjem.
Kako se lotiti programiranja?
Waveshare je na svojih spletnih straneh (waveshare.com/4inch-TFT-Touch-Shield.htm) objavil sorazmerno podrobno dokumentacijo pa tudi programske knjižnice za Arduino združljive mikrokontrolerske module, kakor tudi za module z STM32 mikrokontrolerji. Zato moramo v programski kodi nastaviti predvsem priključke, prek katerih je povezan ščit. Pri tem za dostop do prikazovalnika, zaslona in mikro SD kartice uporabljamo ločene gonilnike. Za mikro SD kartico lahko neposredno uporabimo tudi splošno podporo v Arduino razvojnem okolju.
Priloženi primeri zadoščajo za preizkus delovanja zaslona, na katerem lahko prikažemo tudi barvne fotografije. Slednje pojasni, zakaj so se snovalci zaslona odločili dodati še ležišče za mikro SD kartico.
Prihodnjič
Prihodnjič bomo vremenski postaji dodali še funkcionalnosti spletnega radija, predvajalnika glasbe in ure budilke.