God eftermiddag, jeg gør fortsat Arduino på fritiden, og denne gang skrev han instruktioner til fremstilling af en lille vejrstation. Det fungerer som et ur med en dato og viser temperaturer i og uden for rummet. Som hovedkontroller vil vi bruge Arduino UNO, men et andet bord med Atmega328p ombord gør det. Til visning bruger vi den grafiske skærm WG12864B. Vi tilslutter også to ds18b20 temperatursensorer. En indendørs, vi tager den anden ud. Lad os komme i gang.
I fremstillingsprocessen hjemmelavet vi har brug for:
- Arduino UNO (Eller ethvert andet Arduino-kompatibelt bord)
- WG12864B grafisk skærm
- ds18b20 temperatursensor, 2 stk
- Strømforsyning 6 - 12 V
- Modstande 4.7 Kom 0,25 W, 2 stk.
- Modstande 100 ohm 0,25 W
- Batterirum til 4 AAA “pinky” batterier
- Boks fra patronen på SEGA-konsollen
- elektrisk bånd
- tilslutning af ledninger
- kredsløbskort
- Knapper
- brevpapirkniv
- loddejern
- Lodde, kolofonium
- Dobbeltsidet bånd
Trin 1 Forberedelse af WG12864B3.
De, der ikke har arbejdet med skærme før, kan blive bange for et stort antal ændringer, som synes at være de samme, af skærme. Jeg vil forklare lidt. De fleste skærme af denne type fungerer på ks0107 / ks0108-chips. Alle skærme kan opdeles i 4 typer:
Valgmulighed A: HDM64GS12L-4, Crystalfontz CFAG12864B, Sparkfun LCD-00710CM, NKC Electronics LCD-0022, WinStar WG12864B-TML-T
Option B: HDM64GS12L-5, Lumex LCM-S12864GSF, Futurlec BLUE128X64LCD, AZ-skærme AGM1264F, Displaytech 64128A BC, Adafruit GLCD, DataVision DG12864-88, Topway LM12864LDW, Digitron SG1286464J86, Q, Q
Valgmulighed C: Shenzhen Jinghua Displays Co Ltd. JM12864
Valg D: Wintek-Cascades WD-G1906G, Wintek-GEN / WD-G1906G / KS0108B, Wintek / WD-G1906G / S6B0108A, TECDIS / Y19061 / HD61202, Varitronix / MGLS19264 / HD61202
De ser næsten ens ud. Men de har forskellige forbindelsesstifter. Jeg valgte, og jeg anbefaler dig, WG12864B3 V2.0, men hvis skærmen kom anderledes op, eller du bare ikke har det ved hånden, kan du nemt finde ud af det ved hjælp af tabellen:
Kort karakteristika:
Der er mange forskellige forbindelsesordninger på Internettet, og alt ser ud til at fungere. Sagen er, at der ikke kun er forskellige skærme, men også to måder at forbinde dem på: seriel og parallel. Når vi bruger en seriel portforbindelse, har vi kun brug for 3 udgange fra mikrokontrolleren. Med et parallelt minimum på 13. Valget i dette tilfælde er indlysende, Arduino har få konklusioner. For parallel forbindelse er forbindelsesdiagrammet som følger:
For en seriel forbindelse, som vi vil bruge, er skemaet som følger:
WG12864B - Arduino UNO
1 (GND) - GND
2 (VCC) - + 5V
4 (RS) - 10
5 (R / W) - 11
6 (E) - 13
15 (PSB) - GND
19 (BLA) - via en 100 Ohm modstand - + 5V
20 (BLK) - GND
For at justere kontrasten skal et potentiometer være på skærmen. Der er skærme uden det, men nu er det en sjældenhed:
En 100 ohm modstand er nødvendig, så en spænding på 5 volt ikke ved et uheld brænder baggrundsbelysningsdioder.
Trin 2 Læg sagen.
I tilfældet skal du tage kassen fra patronpræfikset Sega. Hvis du ikke finder denne boks ved hånden, kan du bruge en anden sag. Det vigtigste er, at skærmen og Arduino passer ind i den.
Klip den gennemsigtige film oven på kassen, så der ikke er nogen stykker tilbage:
Skær derefter et vindue 37x69 i størrelse til skærmen ved hjælp af en klerisk kniv.
På bagsiden langs kanten af klippet limer vi et dobbeltsidet bånd, helst sort:
Fjern beskyttelsespapiret fra klæbebåndet, og lim vores skærm på:
Udefra skal det se sådan ud:
Under skærmen, også på dobbeltsidet bånd, fastgør vi Arduino, hvilket gør foreløbige udskæringer til USB-porten og stikkontakten:
Udskæringer til Arduino-stik skal udføres på begge sider af boksen, så det frit kan lukkes:
Trin 3 Temperatursensorer.
Vi bruger digitale temperatursensorer DS18B20. Ved hjælp af dem får vi stor målenøjagtighed, fejlen er ikke mere end 0,5 ° C, i et bredt temperaturområde -55 ... + 125 ° C. Derudover udfører den digitale sensor alle beregningerne selv, og Arduino modtager simpelthen færdiglavede aflæsninger. Når du tilslutter denne sensor, skal du ikke glemme trækmodstanden, 4,7 kΩ, mellem DQ- og VDD-kontakterne. Flere tilslutningsmuligheder er også mulige. Med ekstern strøm, efter min mening den bedste mulighed, vil vi bruge den:
Hvis du vil, kan du bruge den parasitiske strømtilstand:
Eller en forbedret parasitisk madindstilling:
Ved enhver strømforsyning er sensorerne forbundet parallelt:
Vi vil placere temperaturmålesensoren på det lille bord sammen med to knapper, som vi vil bruge til at indstille tidspunktet og datoen for uret:
Den fælles ledning fra begge knapper er forbundet til GND, ledningen fra den første knap er forbundet til A0, fra den anden til A1.
Fastgør til et dobbeltsidet bånd ved siden af Arduino:
Sensoren, som antages at være placeret uden for rummet, er bedre at vælge i et metal-, støv- og fugtbestandigt hus:
Beregn ledningen med den krævede længde, så sensoren kan hænges uden for vinduet, det vigtigste er, at det ikke skal være mere end 5 meter, hvis du har brug for mere længde, bliver du nødt til at reducere værdien af trækmodstanden.
Ledningen fra DQ-databussen for begge sensorer er forbundet til stift 5 på Arduino.
Vdd - +5 Arduino.
GND - GND Arduino.
Trin 4 Strøm.
Til strøm kan du bruge en strømforsyning med en spænding på 6 til 12 volt. Ved slutningen af strømfladetråden skal du lodde det stik, der passer til Arduino-stikkontakten:
Eller du kan lægge et batterirum til fire "AAA", "pinky" batterier i etuiet. Og tilslut den positive ledning fra rummet til Vin Arduino og minus til GND.
Trin 5 Forberedelse af programmeringsmiljøet.
Først skal du downloade og installere Arduino IDE med officielt sted
Og tilføj også de to biblioteker, der er nødvendige til skitsen. OneWire - kræves til kommunikation med ds18b20 sensorer:
U8glib - bruges til at vise oplysninger på skærmen:
Download biblioteket. Derefter pakker vi ud arkiverne og flytter indholdet af arkiverne i mappen "biblioteker", der findes i mappen med Arduino IDE installeret. Du kan også tilføje biblioteker gennem Arduino IDE. For at gøre dette, uden at pakke ud arkiverne, skal du starte Arduino IDE, vælge Sketch - Connect Library fra menuen Sketch. Øverst på rullelisten skal du vælge emnet "Tilføj .Zip-bibliotek". Vi angiver placeringen af de downloadede arkiver. Efter alle trinene skal du genstarte Arduino IDE.
Trin 6 Redigering af skitsen.
Temperatursensorer fungerer ved hjælp af One Wire-protokollen og har en unik adresse til hver enhed - en 64-bit-kode. Det anbefales ikke at tilføje sensorsøgekommandoer til skitsen. Det er ikke nødvendigt at indlæse Arduino-hikke sensorer hver gang.Først skal du først sammensætte alt, udfyld skitsen i Arduino, der findes i menuen Filer - Eksempler - Dallas-temperatur - OneWireSearch. Kør derefter Tools - Port Monitor. Arduino skulle finde vores sensorer, skrive adresser og temperaturlæsninger. Disse adresser skal skrives ned eller bare kopieres et eller andet sted. Åbn nu skitsen Ard_Tic_Tak_WG12864B_2_x_Term_Serial, og kig efter linjerne:
byte addr1 [8] = {0x28, 0xFF, 0x75, 0x4E, 0x87, 0x16, 0x5, 0x63}; // intern adresse
byte addr2 [8] = {0x28, 0xFF, 0xDD, 0x14, 0xB4, 0x16, 0x5, 0x97}; // adresse til den eksterne sensor
Vi erstatter adresserne, der svarer til placeringen af sensorer med vores adresser.
Vores ure bruger ikke RTC (realtidsur) -modulet, så du skal justere uret. For nemheds skyld skal du fjerne linjen fra linjen (sekunder vises på skærmen):
//u8g.setPrintPos (44, 50); u8g.print (sek); // Udskriv sekunder for at kontrollere kursets korrekthed
Indstil det rigtige tidspunkt gennem portmonitoren. For at gøre dette skal du åbne portmonitoren, vente, indtil de indledende temperaturmålinger er afsluttet, og indtast den aktuelle dato og tid i formatet "dag, måned, år, timer, minutter, sekunder." Uden mellemrum skal du dele numrene med kommaer eller perioder.
Hvis uret har travlt, skal du ændre værdien til en større, jeg anbefaler at eksperimentere med trin på 100 enheder. Hvis der hænger, skal du mindske værdien på linjen:
hvis (mikros () - prevmicros & gt; 494000) {// ændring til en anden til justering var 500.000
Empirisk bestemme det antal, hvor uret går ganske præcist. At bestemme kursens nøjagtighed og har brug for en konklusion sekunder. Efter nøjagtigt kalibrering af antallet kan sekunder kommenteres og dermed fjernes fra skærmen.
Udfyld skitsen.