Labdien, šodien es dalīšos ar norādījumiem, kā padarīt pulksteni ar istabas termometru. Pulkstenis darbojas Arduino Laika un temperatūras parādīšanai tiek izmantots UNO, WG12864B grafiskais ekrāns. Kā temperatūras sensors - ds18b20. Atšķirībā no vairuma citu pulksteņu, es neizmantošu RTS (Real Time Clock), bet mēģinu iztikt bez šī papildu moduļa.
Par šo mājās gatavots Nepieciešamas šādas sastāvdaļas:
- Arduino UNO (vai jebkura cita Arduino saderīga tāfele)
- Grafiskais ekrāns WG12864B
- temperatūras sensors ds18b20
- Rezistors 4,7 Kom 0,25 W
- rezistors 100 omi 0,25 W
- Bateriju nodalījums četrām AA baterijām, kas ir “pirksta tipa”
- piemērota kaste
- mazs fails
- nagu laka (melna vai ķermeņa krāsa)
- Nedaudz plānas plastmasas vai kartona
- elektriskā lente
- savienojošie vadi
- shēmas plate
- pogas
- lodāmurs
- Lodēt, kolofonija
- abpusēja lente
1. solis Korpusa sagatavošana.
Tātad mūsu pulksteņiem vajadzētu atrasties kaut kur. Jums jāatrod piemērota kaste. Galvenais, lai tajā ietilptu WG12864B ekrāns, Arduino un neliela pogu shēma. Minimālais kastes izmērs ir 7 x 7 x 10 cm .Ja jūs izmantojat nelielu Arduino dēli, varat to ievietot kastē un mazāku, bet es aprakstīšu procesu, izmantojot Arduino UNO piemēru. Materiāls, no kura tiek izgatavota kaste, vēlams, ir plastmasa, ja, tāpat kā mans, tas ir dzelzs, ir vērts parūpēties par izolāciju, lai iekšpusē nebūtu ko “apkārt”. Vēlama ir plastmasa, jo to ir vieglāk sagriezt. Ar kastīti viņš ir mūsu pulksteņu lieta, nolēma. Zem ekrāna ir jāizgriež logs, kura izmērs ir 6,5x4 cm. Ja kaste ir dzelzs, to ir ārkārtīgi grūti izdarīt uzmanīgi. Neatkarīgi no tā, kā jūs mēģināt, griezuma tuvumā būs šķembu krāsa un raupjums. Tāpēc vispirms mēs to izgriezām, šim nolūkam jūs varat izmantot “dzirnaviņas”, urbjmašīnu ar griešanas sprauslu vai frēzi, ko parasti izvēlaties pēc izvēles. Pēc tam mēs notīra malas ar failu. Visu šķeldošo krāsu nokrāsojam ar piemērotu krāsu ar nagu laku. Rezultātam jābūt šādam:
2. solis Sagatavojiet grafisko ekrānu.
Ar ekrāna savienojumu, no pirmā acu uzmetiena, rodas daudz problēmu un grūtību. Bet, ja jūs vispirms tiksit galā ar viņu veidiem, tas kļūs daudz vieglāk un saprotamāk. Kontrolierīcē ks0107 / ks0108 ir daudz dažādu ekrānu variantu un veidu.Visi ekrāni parasti tiek sadalīti 4 veidos:
A variants: HDM64GS12L-4, Crystalfontz CFAG12864B, Sparkfun LCD-00710CM, NKC Electronics LCD-0022, WinStar WG12864B-TML-T
B variants: HDM64GS12L-5, Lumex LCM-S12864GSF, Futurlec BLUE128X64LCD, AZ Displeji AGM1264F, Displaytech 64128A BC, Adafruit GLCD, DataVision DG12864-88, Topway LM12864LDW, Digitron SG1286464J-1,
C variants: Shenzhen Jinghua Displays Co Ltd. Jm12864
D variants: Wintek-Cascades WD-G1906G, Wintek-GEN / WD-G1906G / KS0108B, Wintek / WD-G1906G / S6B0108A, TECDIS / Y19061 / HD61202, Varitronix / MGLS19264 / HD61202
Saraksts nav pilnīgs, to ir daudz. Visizplatītākais un, manuprāt, ērtākais WG12864B3 V2.0. Displeju var savienot ar Arduino, izmantojot seriālo vai paralēlo portu. Lietojot kopā ar Arduino UNO, labāk izvēlēties seriālā porta savienojumu - tad mums ir nepieciešami tikai 3 mikrokontrollera izejas, nevis vismaz 13 līnijas, ja tās ir savienotas caur paralēlu portu. Viss ir saistīts diezgan vienkārši. Ir vēl viena nianse, pārdošanā ir atrodami divu veidu displeji ar iebūvētu potenciometru (kontrasta pielāgošanai) un bez tā. Esmu izvēlējies, un iesaku jums darīt to pašu ar iebūvēto.
Tas samazina detaļu skaitu un lodēšanas laiku. Fona apgaismojumam ir vērts ievietot arī pašreizējo ierobežojošo pretestību 100 omi. Tieši savienojot 5 voltus, pastāv risks sadedzināt fona apgaismojumu.
WG12864B - Arduino UNO
1 (GND) - GND
2 (VCC) - + 5 V
4 (RS) - 10
5 (R / W) - 11
6 (E) - 13
15 (PSB) - GND
19 (BLA) - caur rezistoru - + 5V
20 (BLK) - GND
Visērtākais ir savākt visu aiz ekrāna un izvadīt no tā 5 vadus, lai izveidotu savienojumu ar Arduino UNO. Rezultātam vajadzētu būt kaut kam līdzīgam:
Tiem, kas joprojām izvēlas paralēlu savienojumu, es sniegšu savienojuma tabulu.
Un B varianta ekrānu izkārtojums:
3. solis Pievienojiet temperatūras sensoru.
Kā jau teicu, temperatūras mērīšanai izmantosim DS18B20 integrēto sensoru. Es to izvēlējos pēc augstās mērījumu precizitātes, kļūda nepārsniedz 0,5 ° C. Sensors ražošanas laikā ir kalibrēts; nav nepieciešami papildu iestatījumi. Temperatūras mērīšanas diapazons -55 ... + 125 ° C. Ir divi darbības režīmi: ar ārēju enerģijas avotu un “neīstu jaudu”. Darbojoties ārējā enerģijas režīmā, savienojums ir šāds:
Izmantojot “neīsto jaudu”, sensors saņem enerģiju no sakaru līnijas. Šajā režīmā pietiek ar diviem vadiem, lai savienotu ds18b20 ar mikrokontrolleri. Sensora iekšējais kondensators tiek uzlādēts enerģijas dēļ sakaru līnijā zemā līmenī autobusā. Režīmam "parazītu uzturs" ir daudz funkciju, un tāpēc es to neiesaku lietot. Bet, ja jūs joprojām nolemjat to izmantot, šeit ir diagramma:
Vai arī, izmantojot “neīsto jaudu”, varat izmantot uzlabotu vadu shēmu:
Vienā sakaru līnijā var iekļaut vairākus sensorus. Mūsu pulksteņiem pietiek ar vienu. Mēs savienojam vadu no “DQ” ds18b20 kontakta ar “5. kontaktu” Arduino UNO.
4. solis Tāfeles sagatavošana ar pogām.
Lai pulksteņa laikā iestatītu laiku un datumu, mēs izmantosim trīs pogas. Ērtības labad pielodējiet trīs pogas uz plates un atvienojiet to.
Mēs savienojam šādi: visām trim pogām kopīgais vads ir savienots ar Arduino “GND”. Pirmā poga ir paredzēta laika iestatīšanas režīma pārslēgšanai un laika un datuma pārslēgšanai, savienojumam ar “2. piespraudi”. Otrā, poga vērtības palielināšanai, ir uz "Pin 3", un trešā, poga vērtības samazināšanai, ir uz "Pin 4".
5. solis to visu saliekot kopā.
Lai izvairītos no īssavienojuma, izolējiet ekrānu. Apli mēs iesaiņojam ar elektrisko lenti, un aizmugurē mēs piestiprinām pie divpusējas lentes, sagrieztas pēc izmēra, ar izolācijas materiāla sloksni. Piemērots ir biezs kartons vai plāna plastmasa. No papīra planšetes izmantoju plastmasu. Izrādījās šādi:
Ekrāna priekšpusē gar malu mēs līmējam divpusēju lenti uz putu pamata, vēlams melnu.
Mēs savienojam ekrānu ar Arduino:
Turklāt mēs savienojam no akumulatora nodalījuma ar “VIN” Arduino, atskaitot ar “GND”. Mēs to novietojam aiz Arduino. Pirms uzstādīšanas korpusā, neaizmirstiet savienot temperatūras sensoru un dēli ar pogām.
6. solis Sagatavojiet un aizpildiet skici.
Temperatūras sensoram nepieciešama OneWire bibliotēka.
Izeja uz ekrānu notiek caur U8glib bibliotēku:
Lai rediģētu un aizpildītu skici, instalējiet šīs divas bibliotēkas. To var izdarīt divos veidos. Vienkārši izsaiņojiet šos arhīvus un ievietojiet neizpakotos failus mapē “bibliotēkas”, kas atrodas mapē ar instalētu Arduino IDE.Vai arī otrā iespēja instalēt bibliotēkas tieši programmēšanas vidē. Neizsaiņojot lejupielādētos arhīvus, Arduino IDE atlasiet izvēlni Sketch - Connect Library. Nolaižamā saraksta pašā augšdaļā atlasiet vienumu “Pievienot. Zip bibliotēka”. Parādītajā dialoglodziņā atlasiet bibliotēku, kuru vēlaties pievienot. Atkal atveriet izvēlni Sketch - Connect Library. Nolaižamā saraksta pašā apakšā jums vajadzētu redzēt jaunu bibliotēku. Tagad bibliotēku var izmantot programmās. Pēc visa tā neaizmirstiet atsāknēt Arduino IDE.
Temperatūras sensors darbojas saskaņā ar vienas stieples protokolu, un katrai ierīcei ir unikāla adrese - 64 bitu kods. Katru reizi šī koda meklēšana ir nepraktiska. Tāpēc vispirms jums sensors jāpieslēdz Arduino, jāaizpilda skice, kas atrodas izvēlnē Fails - Piemēri - Dalasas temperatūra - OneWireSearch. Pēc tam palaidiet Rīki - Port Monitor. Arduino vajadzētu atrast mūsu sensoru, uzrakstīt tā adresi un pašreizējos temperatūras rādījumus. Mēs kopējam vai vienkārši pierakstām sava sensora adresi. Atveriet skici Arduino_WG12864B_Term, meklējiet līniju:
baitu pievienotājs [8] = {0x28, 0xFF, 0xDD, 0x14, 0xB4, 0x16, 0x5, 0x97}; // mana sensora adrese
Mēs pierakstām jūsu sensora adresi starp lencēm, aizstājot mana sensora adresi.
Krājums:
//u8g.setPrintPos (44, 64); u8g.print (sek); // Drukājiet sekundes, lai pārbaudītu kursa pareizību
Parāda sekundes blakus “Data”. Tas ir nepieciešams, lai precīzi iestatītu laika gaitu.
Ja pulkstenis steidzas vai kavējas, jums jāmaina līnijas vērtība:
if (micros () - prevmicros> 494000) {// mainīšana uz citu pielāgošanai bija 500000
Es eksperimentāli diezgan precīzi noteicu numuru, pie kura pulkstenis iet. Ja pulkstenis steidzas, jums šis skaitlis jāpalielina; ja es atpalieku, to vajadzētu samazināt. Lai noteiktu kursa precizitāti un būtu nepieciešamas secinājuma sekundes. Pēc precīza skaitļa kalibrēšanas sekundes var komentēt un tādējādi noņemt no ekrāna.
Aizpildiet skici.