God eftermiddag, jag fortsätter att göra Arduino på fritiden, och den här gången skrev han instruktioner för tillverkning av en liten väderstation. Den fungerar som en klocka med ett datum och visar temperaturer i och utanför rummet. Som huvudkontroll kommer vi att använda Arduino UNO, men ett annat kort med Atmega328p ombord kommer att göra. För visning använder vi den grafiska skärmen WG12864B. Vi ansluter också två ds18b20 temperatursensorer. En inomhus, vi tar ut den andra utanför. Låt oss komma igång.
I tillverkningsprocessen hemlagad vi kommer att behöva:
- Arduino UNO (Eller något annat Arduino-kompatibelt bräde)
- WG12864B grafisk skärm
- ds18b20 temperatursensor, 2st
- Strömförsörjning 6 - 12 V
- Motstånd 4.7 Kom 0,25 W, 2 st.
- Motstånd 100 ohm 0,25 W
- Batterifack för 4 AAA ”pinky” -batterier
- Låda från patronen på SEGA-konsolen
- elektrisk tejp
- anslutande ledningar
- kretskort
- Knappar
- brevpapperkniv
- lödkolv
- Löd, kolofonium
- Dubbelsidig tejp
Steg 1 Beredning av WG12864B3.
De som inte har arbetat med skärmar tidigare kan bli rädda av ett stort antal ändringar, som verkar vara samma, av skärmar. Jag förklarar lite. De flesta skärmar av denna typ fungerar på ks0107 / ks0108 chips. Alla skärmar kan delas in i fyra typer:
Alternativ A: HDM64GS12L-4, Crystalfontz CFAG12864B, Sparkfun LCD-00710CM, NKC Electronics LCD-0022, WinStar WG12864B-TML-T
Alternativ B: HDM64GS12L-5, Lumex LCM-S12864GSF, Futurlec BLUE128X64LCD, AZ-displayer AGM1264F, Displaytech 64128A BC, Adafruit GLCD, DataVision DG12864-88, Topway LM12864LDW, Digitron SG1286464J86, Q, Q, 1
Alternativ C: Shenzhen Jinghua Displays Co Ltd. JM12864
Alternativ D: Wintek-Cascades WD-G1906G, Wintek-GEN / WD-G1906G / KS0108B, Wintek / WD-G1906G / S6B0108A, TECDIS / Y19061 / HD61202, Varitronix / MGLS19264 / HD61202
De ser nästan lika ut. Men de har olika anslutningsstift. Jag valde, och jag rekommenderar dig, WG12864B3 V2.0, men om skärmen var annorlunda, eller om du bara inte har den till hands, kan du enkelt ta reda på det med tabellen:
Korta egenskaper:
Det finns många olika anslutningsscheman på Internet, och allt verkar fungera. Saken är att det inte bara finns olika skärmar, utan också två sätt att ansluta dem: seriell och parallell. När vi använder en seriell portanslutning behöver vi bara tre utgångar från mikrokontrollern. Med ett parallellt minimum av 13. Valet i detta fall är uppenbart, Arduino har få slutsatser. För parallellanslutning är anslutningsdiagrammet enligt följande:
För en seriell anslutning, som vi kommer att använda, är schemat enligt följande:
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 ett 100 Ohm-motstånd - + 5V
20 (BLK) - GND
För att justera kontrasten bör en potentiometer finnas på skärmen. Det finns skärmar utan det, men det är nu en sällsynthet:
Ett motstånd på 100 ohm behövs så att en spänning på 5 volt inte avbrännar bakgrundsbelysningsdioder.
Steg 2 Att göra saken.
För fallet, ta lådan från kassettprefixet Sega. Om du inte hittar den här rutan till hands kan du använda ett annat fall. Det viktigaste är att skärmen och Arduino passar in.
Klipp den transparenta filmen ovanpå lådan så att det inte finns några bitar kvar:
Skär sedan ut ett fönster 37x69 i storlek för skärmen med hjälp av en kontoristkniv.
På baksidan, längs klippkanten, limmar vi ett dubbelsidigt tejp, helst svart:
Ta bort skyddspapperet från tejpen och limm vår skärm på det:
Från utsidan ska det se ut så här:
Under skärmen, även på dubbelsidig tejp, fäster vi Arduino, vilket gör preliminära utskärningar för USB-porten och eluttaget:
Urklipp för Arduino-uttag måste göras på båda sidor om lådan så att den kan stängas fritt:
Steg 3 temperatursensorer.
Vi kommer att använda digitala temperatursensorer DS18B20. Genom att använda dem får vi stor mätnoggrannhet, felet är inte mer än 0,5 ° C, i ett brett temperaturområde -55 ... + 125 ° C. Dessutom utför den digitala sensorn alla beräkningar själv, och Arduino får helt enkelt färdiga avläsningar. När du ansluter denna sensor, glöm inte bortdragningsmotståndet, 4,7 kΩ, mellan DQ- och VDD-kontakterna. Flera anslutningsalternativ är också möjliga. Med extern kraft, enligt min mening det bästa alternativet, kommer vi att använda det:
Om du vill kan du använda det parasitiska effektläget:
Eller ett förbättrat alternativ för parasitmat:
Vid vilken strömförsörjning som helst är sensorerna anslutna parallellt:
Vi kommer att placera temperaturmätningssensorn på det lilla brädet tillsammans med två knappar, som vi kommer att använda för att ställa in tid och datum för klockan:
Den gemensamma tråden från båda knapparna är ansluten till GND, tråden från den första knappen är ansluten till A0, från den andra till A1.
Fäst på ett dubbelsidigt tejp bredvid Arduino:
Sensorn, som ska placeras utanför rummet, är bättre att välja i ett hölje av metall, damm och fukt:
Beräkna ledningen med önskad längd så att sensorn kan hängas utanför fönstret, det viktigaste är att den inte ska vara högst 5 meter, om du behöver mer längd måste du minska värdet på uppdragsmotståndet.
Tråden från DQ-databussen för båda sensorerna är ansluten till stift 5 på Arduino.
Vdd - +5 Arduino.
GND - GND Arduino.
Steg 4 Power.
För ström kan du använda spänningen från 6 till 12 volt. I slutet av strömkabeln, löd den plugg som är lämplig för Arduino-uttaget:
Eller så kan du sätta ett batterifack för fyra "AAA", "pinky" -batterier i fodralet. Och anslut den positiva kabeln från facket till Vin Arduino och minus till GND.
Steg 5 Förbereda programmeringsmiljön.
Först måste du ladda ner och installera Arduino IDE med officiell webbplats
Och lägg till de två biblioteken som behövs för skissen. OneWire - krävs för kommunikation med ds18b20-sensorer:
U8glib - används för att visa information på skärmen:
Ladda ner biblioteket. Sedan packar vi upp arkiven och flyttar innehållet i arkiven till mappen ”bibliotek” som finns i mappen med Arduino IDE installerat. Du kan också lägga till bibliotek genom Arduino IDE. För att göra detta, utan att packa upp arkiven, kör Arduino IDE, välj Sketch - Connect Library från menyn Sketch. Högst upp i rullgardinslistan väljer du objektet "Lägg till. Zip-bibliotek". Vi anger platsen för de nedladdade arkiven. Efter alla stegen måste du starta om Arduino IDE.
Steg 6 Redigera skissen.
Temperaturgivare fungerar med One Wire-protokollet och har en unik adress för varje enhet - en 64-bitars kod. Det är inte tillrådligt att lägga till sensorsökningskommandon till skissen. Det finns inget behov att ladda Arduino-sensorsensorer varje gång.Därför måste du först sätta ihop allt, fylla i skissen i Arduino, som finns i Arkiv-menyn - Exempel - Dallas-temperatur - OneWireSearch. Kör sedan Tools - Port Monitor. Arduino ska hitta våra sensorer, skriva adresser och temperaturavläsningar. Dessa adresser måste skrivas ner eller bara kopieras någonstans. Öppna nu skissen Ard_Tic_Tak_WG12864B_2_x_Term_Serial och leta efter raderna:
byte addr1 [8] = {0x28, 0xFF, 0x75, 0x4E, 0x87, 0x16, 0x5, 0x63}; // intern adress
byte addr2 [8] = {0x28, 0xFF, 0xDD, 0x14, 0xB4, 0x16, 0x5, 0x97}; // adress för den externa sensorn
Vi ersätter adresserna som motsvarar platsen för sensorerna med våra adresser.
Våra klockor använder inte RTC-modulen (realtidsklocka), så du måste justera klockan. För enkelhets skull avmarkera linjen (sekunder visas på skärmen):
//u8g.setPrintPos (44, 50); u8g.print (sek); // Skriv ut sekunder för att kontrollera rätt kurs
Ställ in rätt tid genom portmonitorn. För att göra detta, öppna portmonitorn, vänta tills de initiala temperaturmätningarna är klar och ange aktuellt datum och tid i formatet "dag, månad, år, timmar, minuter, sekunder." Utdela siffrorna med komma eller perioder utan mellanslag.
Om klockan har bråttom, ändra värdet till ett större, jag rekommenderar att du experimenterar med steg om 100 enheter. Om du släpar, minskar du värdet på raden:
om (mikros () - prevmicros & gt; 494000) {// ändring till en annan för justering var 500 000
Empiriskt bestämma antalet klockan går ganska exakt på. För att bestämma kursens noggrannhet och behöver en slutsekund. Efter noggrant kalibrering av numret kan sekunder kommenteras och därmed tas bort från skärmen.
Fyll skissen.