» Elektronica » Arduino »Arduino horloge met temperatuursensor en zonder RTS

Arduino horloge met temperatuursensor en zonder RTS

Arduino horloge met temperatuursensor en zonder RTS

Goedemiddag, vandaag zal ik instructies delen over het maken van een horloge met een kamerthermometer. Het horloge loopt door Arduino UNO, WG12864B grafisch scherm wordt gebruikt om tijd en temperatuur weer te geven. Als temperatuursensor - DS18B20. In tegenstelling tot de meeste andere horloges zal ik geen RTS (Real Time Clock) gebruiken, maar probeer het zonder deze extra module te doen.

Hiervoor zelfgemaakt De volgende componenten zijn vereist:
- Arduino UNO (of een ander Arduino-compatibel bord)
- Grafisch scherm WG12864B
- ds18b20 temperatuursensor
- Weerstand 4.7 Kom 0.25 W
- Weerstand 100 ohm 0,25 W.
- Batterijvak voor 4 AA-batterijen "vinger-type"
- Geschikte doos
- Klein bestand
- Nagellak (zwart of carrosseriekleur)
- Een beetje dun plastic of karton
- elektrische tape
- aansluitdraden
- printplaat
- Knopen
- soldeerbout
- Soldeer, hars
- Dubbelzijdige tape

Stap 1 De behuizing voorbereiden.
Onze horloges moeten dus ergens staan. Je moet een geschikte doos vinden. Het belangrijkste is dat het WG12864B-scherm, Arduino en een kleine printplaat voor knoppen erin passen. De minimale doosgrootte is 7 x 7 x 10 cm Als je een klein Arduino-bord gebruikt, kun je het in een doos en kleiner schuiven, maar ik zal het proces beschrijven aan de hand van het voorbeeld van Arduino UNO. Het materiaal waarvan de doos is gemaakt is bij voorkeur van plastic, als het, zoals het mijne, van ijzer is, is het de moeite waard om voor de isolatie te zorgen, zodat er niets binnenin kan "rondgaan". Plastic heeft de voorkeur omdat het gemakkelijker te snijden is. Met een doos is hij het geval van onze horloges, besloot hij. Nu is het nodig om een ​​raam onder het scherm van 6,5x4 cm door te snijden.Als de doos van ijzer is, is het buitengewoon moeilijk om het voorzichtig te doen. Het maakt niet uit hoe je het probeert, er zal afgebladderde verf en ruwheid bij de snede zijn. Daarom snijden we het eerst uit, hiervoor kun je de “grinder”, een boor met een mondstuk om te snijden of een frees, in het algemeen, naar keuze gebruiken, met wat er voorhanden is. Daarna maken we de randen schoon met een bestand. We schilderen alle afgestoken verf met nagellak, geschikte kleur. Het resultaat zou het volgende moeten zijn:


Stap 2 Bereid het grafische scherm voor.
Met de aansluiting van het scherm ontstaan ​​op het eerste gezicht veel problemen en moeilijkheden. Maar als u eerst met hun typen omgaat, wordt het veel gemakkelijker en begrijpelijker. Er zijn veel variaties en soorten schermen op de ks0107 / ks0108-controller.Alle schermen zijn meestal onderverdeeld in 4 typen:
Optie A: HDM64GS12L-4, Crystalfontz CFAG12864B, Sparkfun LCD-00710CM, NKC Electronics LCD-0022, WinStar WG12864B-TML-T
Optie B: HDM64GS12L-5, Lumex LCM-S12864GSF, Futurlec BLUE128X64LCD, AZ Displays AGM1264F, Displaytech 64128A BC, Adafruit GLCD, DataVision DG12864-88, Topway LM12864LDW, Digitron SG1286464J-1, QY
Optie C: Shenzhen Jinghua Displays Co Ltd. Jm12864
Optie D: Wintek-Cascades WD-G1906G, Wintek-GEN / WD-G1906G / KS0108B, Wintek / WD-G1906G / S6B0108A, TECDIS / Y19061 / HD61202, Varitronix / MGLS19264 / HD61202

De lijst is niet compleet, er zijn er veel. De meest voorkomende en naar mijn mening handige WG12864B3 V2.0. Het scherm kan via een seriële of parallelle poort op de Arduino worden aangesloten. Bij gebruik met Arduino UNO is het beter om een ​​seriële poortverbinding te kiezen - dan hebben we slechts 3 uitgangen van de microcontroller nodig, in plaats van minimaal 13 lijnen bij aansluiting via een parallelle poort. Alles is vrij eenvoudig met elkaar verbonden. Er is nog een nuance, er zijn twee soorten displays te koop, met een ingebouwde potentiometer (voor het aanpassen van het contrast) en zonder. Ik heb gekozen, en ik raad je aan hetzelfde te doen met de ingebouwde.


Dit vermindert het aantal onderdelen en de soldeertijd. Het is ook de moeite waard om een ​​stroombeperkende weerstand van 100 Ohm voor de achtergrondverlichting te plaatsen. Door 5 volt direct aan te sluiten bestaat het risico dat de achtergrondverlichting verbrandt.
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 de weerstand - + 5V
20 (BLK) - GND

Het handigste is om alles achter het scherm te verzamelen en er 5 draden uit te voeren om verbinding te maken met de Arduino UNO. Het resultaat zou er ongeveer zo uit moeten zien:


Voor degenen die nog steeds kiezen voor een parallelle verbinding, zal ik een verbindingstabel geven.


En de lay-out voor schermen van optie B:


Stap 3 Sluit de temperatuursensor aan.
Zoals ik al zei, zullen we de DS18B20 geïntegreerde sensor gebruiken om de temperatuur te meten. Ik koos het vanwege de hoge meetnauwkeurigheid, de fout is niet meer dan 0,5 ° C. De sensor is tijdens de fabricage gekalibreerd; er zijn geen aanvullende instellingen vereist. Meetbereik temperatuur -55 ... + 125 ° C. Er zijn twee werkingsmodi: met een externe stroombron en "onechte stroom". Bij gebruik in externe voedingsmodus is de verbinding als volgt:


Bij gebruik van "onechte stroom" krijgt de sensor stroom van de communicatielijn. In deze modus zijn twee draden voldoende om de ds18b20 op de microcontroller aan te sluiten. De interne condensator van de sensor wordt opgeladen vanwege energie op de communicatielijn op een laag niveau op de bus. De modus "parasitaire voeding" heeft veel functies en daarom raad ik het niet aan deze te gebruiken. Maar als u nog steeds besluit om het te gebruiken, volgt hier het diagram:


Of u kunt een verbeterd bedradingsschema gebruiken bij gebruik van "onechte kracht":


Op één communicatielijn kunnen meerdere sensoren worden opgenomen. Voor onze horloges is één voldoende. We verbinden de draad van de "DQ" ds18b20 pin met de "pin 5" Arduino UNO.

Stap 4 Een bord met knoppen voorbereiden.
Om de tijd en datum op het horloge in te stellen, gebruiken we drie knoppen. Soldeer voor het gemak de drie knoppen op de printplaat en sluit ze aan.


We verbinden als volgt: de draad die alle drie de knoppen gemeen hebben, is verbonden met de "GND" Arduino. De eerste knop, dient om de tijdinstellingsmodus te openen en om te schakelen tussen tijd en datum, verbinding maken met "Pin 2". De tweede, de knop om de waarde te verhogen, is "Pin 3", en de derde, de knop om de waarde te verlagen, is "Pin 4".

Stap 5 Alles samenvoegen.
Isoleer het scherm om kortsluiting te voorkomen. In een cirkel wikkelen we ons met elektrische tape en op de achterkant bevestigen we aan een dubbelzijdige tape, op maat gesneden, een strook isolatiemateriaal. Geschikt is dik karton of dun plastic. Ik gebruikte plastic van een papieren tablet. Het bleek het volgende:


Aan de voorkant van het scherm langs de rand lijmen we een dubbelzijdige tape op schuimbasis, bij voorkeur zwart.


We verbinden het scherm met Arduino:


Bovendien verbinden we van het batterijcompartiment met de "VIN" Arduino, minus met de "GND". We plaatsen het achter de Arduino. Vergeet voor het installeren in de koffer niet om de temperatuursensor en het bord met knoppen aan te sluiten.


Stap 6 Bereid de schets voor en vul deze in.
Een temperatuursensor heeft de OneWire-bibliotheek nodig.
onewire.rar [16.75 Kb] (downloads: 154)


De uitvoer naar het scherm is via de U8glib-bibliotheek:
u8glib.rar [906.95 Kb] (downloads: 156)


Installeer deze twee bibliotheken om de schets te bewerken en te vullen. Dit kan op twee manieren. Pak deze archieven gewoon uit en plaats de uitgepakte bestanden in de map "libraries" in de map met de Arduino IDE geïnstalleerd.Of de tweede optie is om de bibliotheek rechtstreeks in de programmeeromgeving te installeren. Selecteer, zonder de gedownloade archieven uit te pakken, in de Arduino IDE het menu Sketch - Connect Library. Selecteer helemaal bovenaan de vervolgkeuzelijst het item ".Zip-bibliotheek toevoegen". Selecteer in het dialoogvenster dat verschijnt de bibliotheek die u wilt toevoegen. Open het menu Sketch - Connect Library opnieuw. Helemaal onderaan de vervolgkeuzelijst zou u een nieuwe bibliotheek moeten zien. Nu kan de bibliotheek worden gebruikt in programma's. Vergeet na dit alles niet om de Arduino IDE opnieuw op te starten.

De temperatuursensor werkt volgens het One Wire protocol en heeft voor elk apparaat een uniek adres - een 64-bit code. Elke keer is het zoeken naar deze code onpraktisch. Daarom moet u eerst de sensor op de Arduino aansluiten, vul de schets in het menu Bestand - Voorbeelden - Dallas-temperatuur - OneWireSearch in. Voer vervolgens Tools - Port Monitor uit. Arduino zou onze sensor moeten vinden, het adres en de huidige temperatuurmetingen moeten schrijven. We kopiëren of noteren gewoon het adres van onze sensor. Open de schets Arduino_WG12864B_Term, zoek de regel:

byte addr [8] = {0x28, 0xFF, 0xDD, 0x14, 0xB4, 0x16, 0x5, 0x97}; // adres van mijn sensor 


We schrijven het adres van uw sensor tussen accolades en vervangen het adres van mijn sensor.

Voorraad:

//u8g.setPrintPos (44, 64); u8g.print (sek); // Druk seconden af ​​om de juistheid van de cursus te controleren


Geeft seconden weer naast "Data". Dit is nodig om de tijd nauwkeurig in te stellen.
Als de klok haast heeft of achterblijft, verander dan de waarde in de regel:

if (micros () - prevmicros> 494000) {// verandering naar een andere voor aanpassing was 500000


Ik heb experimenteel bepaald op welk nummer de klok precies gaat. Als uw horloge haast heeft, moet u dit aantal verhogen; als ik achterloop, verlaag het dan. Om de nauwkeurigheid van de cursus te bepalen en een conclusie nodig seconden. Nadat het nummer nauwkeurig is gekalibreerd, kunnen seconden van commentaar worden voorzien en dus van het scherm worden verwijderd.

Vul de schets in.
arduino_wg12864b_term.rar [3.64 Kb] (downloads: 314)

7
9
5.3

Voeg een opmerking toe

    • lachglimlachtxaxaokweet het nietyahoonea
      baaskrabbendwaasjaja-jaagressiefgeheim
      sorrydansdance2dance3pardonhulpdrankjes
      stopvriendengoedgoedfluitjebezwijmdtong
      rookklappencrayverklarenbeledigenddon-t_mentiondownloaden
      hittebooslach1mdavergaderingmoskingnegatief
      not_ipopcornstraffenlezenschrikschriktzoeken
      bespottendankjewelditto_clueUmnikacuutmee eens
      slechtbeeeblack_eyeblum3: oopscheppenverveling
      gecensureerdbeleefdheidgeheim2bedreigenoverwinningyusun_bespectacled
      shokrespektlolvoorgekomenwelkomkrutoyya_za
      ya_dobryihelperne_huliganne_othodifludverbodsluiten

We raden je aan om te lezen:

Geef het voor de smartphone ...