» Elektronica » Arduino »Klok met thermometer op Attiny

Attiny Thermometer horloge

Attiny Thermometer horloge



Hallo allemaal en nog een fijne dag of avond. Deze keer zal ik de instructies delen voor het maken van een kamerklok met een thermometer. Het rekencentrum van het horloge wordt Attiny85, gemonteerd op een bord van Digispark. Om de klok weer te geven - Oled-display. Thermometer - de bekende DS18B20. Voor stroom nemen we de li-ion 18650 (ze kunnen worden verkregen uit een oude batterij van een laptop). En voeg een weergave van het batterijniveau toe. Zoals bij al mijn vorige horloges, zullen we het doen zonder de RTC-module (realtime klok).

We verzamelen alles wat nodig is:

- Digispark Attiny85 (micro USB-versie)
- ds18b20 (in plastic koffer)
- Oled-scherm met een resolutie van 128x64, I2C
- 2 stuks 18650 batterijen of een oude Li-ion laptop batterij
- Weerstanden (3,3 kΩ, 4,7 kΩ, 10 kΩ)
- Dun plastic (voor behuizing)
- Aansluitdraden van verschillende kleuren
- ISP-programmeur (of welke dan ook Arduino vergoeding)
- Knop
- Dupont connectoren 2,54 mm "moeder", "vader"
- Briefpapiermes, dubbelzijdige tape, elektrische tape, hotmelt
- Alles om te solderen (soldeerbout, hars, soldeer)

Stap 1 Case.
De toekomstige horlogekast wordt gemaakt van dun plastic. Je kunt een vel van dergelijk plastic kopen in een gespecialiseerde winkel of op AliExpress bestellen. Of u kunt (niet wachten en niet kijken) naar het kantoor gaan en een plastic papieren map kopen in uw favoriete kleur. Afmetingen van het toekomstige horloge: breedte - 40 mm, dikte - 30 mm, hoogte - 70 mm. Volgens het onderstaande diagram hebben we een scan uit plastic gesneden:


We snijden langs dikke lijnen, buigen zachtjes langs dunne lijnen. We snijden de rechthoek in het midden uit met een administratief mes, dit is een venster voor weergave. Als resultaat krijgen we een scan van plastic:


We gaan door naar Attiny.

Stap 2 Attiny + Oled.
Zoals ik al zei, in ons hart zelfgemaakt wordt Attiny 85. Het is het beste om deze chip aan te schaffen, direct gesoldeerd op het bord samen met een spanningsregelaar en harnas. Digispark Attiny85 is zeer geschikt. Kies de versie met micro-USB op het bord. Andere aanpassingen aan het bord passen niet in de maat. Het gebeurt dat dit bord wordt verkocht met reeds gesoldeerde Dupon "mannelijke" connectoren. Zo ja, soldeer dan alle connectoren. We verzamelen gekleurde draden. We hebben 10 centimeter in verschillende kleuren nodig. We solderen ze in Attiny en noteren welke draad, met welke conclusie. De draden P0 en P2 moeten in twee draden worden gesoldeerd. Het tweede paar is nodig om het Oled-scherm aan te sluiten. We krijgen het volgende:


Ik schreef het volgende diagram op de draad:


Het scherm is klein (passend bij de controller), maar het ziet er prachtig uit. OLED (organische lichtgevende diode) is een grafisch display. Er is geen achtergrondverlichting en in plaats daarvan is elke pixel een onafhankelijke LED. Schermformaten - 0,96 inch.Resolutie 128x64. Verbonden via I2C-bus. Gebruikt slechts twee draden om verbinding te maken met Attiny. Ze komen in verschillende kleuren, kies naar uw smaak. Ik vond het blauw leuk met een gele streep bovenaan. We handelen op dezelfde manier als Digispark. Als er gesoldeerde connectoren zijn, soldeer ze dan. Soldeer voorlopig alleen de stroomdraden:


Wees voorzichtig bij het solderen, beschadig de kabel niet met een soldeerbout op het display:


We verbinden de borden met dubbelzijdige tape:


We solderen het Digispark Attiny en Oled-scherm samen volgens het schema (de kleuren van de draden kunnen variëren, het belangrijkste is om niet te knoeien met de conclusies):


Voor het gemak en de bestelling verzamelen we alle draden bij elkaar. Je kunt ze verdraaien met isolatietape om niet in de war te raken:


Aan het einde van alle draden bevestigen we de Dupont "vrouwelijke" connector, steken deze in de isolatoren en wikkelen alles samen met isolatietape om de connector te maken. We registreren ook de pinout van de connector:


De pinout zou zo moeten zijn, omdat we in de toekomst een draad voor firmware of andere horloge-elementen op de connector zullen aansluiten.
We lijmen de resulterende structuur in de behuizing en vergeet niet de behuizing zelf te lijmen, waarbij één kreun niet wordt gelijmd, voor verdere manipulaties:


Let er bij het lijmen op dat het scherm gelijk is:


Stap 3 Power.
Voor stroom zullen we twee Li-ion-elementen gebruiken. Type 18650. U kunt ze afzonderlijk kopen. Soldeer ze in dit geval parallel, isoleer en voer de connector uit voor aansluiting en vervolgens opladen:


Velen hebben oudere laptops. Of ze nu niet meer werken of door de tijd heen werken. Zelfs als de batterij van de laptop al slecht is en niet geschikt voor het beoogde gebruik, kan hij worden gebruikt voor allerlei zelfgemaakte producten. In ons geval voor een horloge. We nemen de batterij van de laptop:


Het belangrijkste is dat hij Li-ion is. We demonteren het voorzichtig, je moet de plastic behuizing openen om het element binnenin niet te beschadigen. Meestal is de batterij verdeeld in twee parallel geschakelde elementen. We halen ze eruit en scheiden een paar van de rest:


Soldeer het beste op de contactvlakken:


Lijm dit paar aan de achterkant van het horloge:


Stap 4 Bepalen van de batterijlading.
Een handige functie van het horloge is om de batterijlading aan te geven. De mate van lading bepalen we door middel van spanning. De minimale spanning voor deze batterijen is 2,4 V. Deze kan niet verder worden ontladen. De maximale spanning is 4,2 V.

De spanningsmeting op de analoge poort is altijd relatief ten opzichte van een andere spanning. We kunnen de AREF-pin van de microcontroller niet gebruiken, die dient om de referentiespanning in te stellen. Het is ook onmogelijk om de spanning te meten ten opzichte van de voedingsspanning (de verhouding is altijd hetzelfde). Daarom zullen we de spanning bepalen in verhouding tot de interne referentiespanning of Vbg (Bandgap-referentiespanning). Het is 1,1 V. Nu moeten we de spanningsdeler voor onze batterij berekenen, zodat de verdeler bij maximale lading (4,2 V) (1,1 V) had. U kunt berekenen met de formule:



Of gebruik

R1 heeft een nominale waarde van 10 kOhm. Dan R2 krijgen we 3,55 KOhm, de meest geschikte uit de standaardwaarden van 3,3 KOhm, en nemen deze. Metingen worden gedaan tussen de interne spanning en GND, dus de 3,3 KΩ-weerstand is gesoldeerd aan de min en 10 KΩ aan de plus. We plaatsen de weerstanden op de batterij, we trekken de draad uit de verdeler.


We isoleren alle contacten om kortsluiting te voorkomen:


De draad van de verdeler wordt aangesloten op PB4.

Stap 5 Meet de temperatuur.
Een uitstekende aanvulling op het horloge is het meten van de kamertemperatuur. We zullen de geïntegreerde temperatuursensor DS18B20 gebruiken. Om ermee te werken is slechts één draad nodig (erg handig bij gebruik van Attiny 85). Alle metingen zijn door hemzelf gedaan, de centrale controller stoort niet (Attiny 85 heeft ook een uitstekend geheugen en zo weinig), we hoeven alleen maar commando's te geven en resultaten te krijgen. Er zijn verschillende schema's om deze sensor aan te sluiten, we zullen de optie gebruiken die in dit geval optimaal is, naar mijn mening.Met externe voeding en een weerstand van 4,7 kΩ:


Soldeer kleine draden en maak de connectoren vast


De draad van de DQ-sensor is aangesloten op PB 3.

Stap 6 Knop.
We hebben weinig conclusies, maar er zijn veel eisen aan horloges. We gebruiken één knop om de tijd in te stellen. Op meer kunnen we niet rekenen. Soldeer de draden aan de knop, één contact ervan met GND. Combineer met onze temperatuursensor:


Het tweede contact van de knop is verbonden met PB 1.

Stap 7 De ontwikkelomgeving voorbereiden
Voor verder werk met de schets, evenals het bewerken en vullen ervan, hebben we de Arduino IDE nodig. Download dit programma van:

Voeg nu woensdag ondersteuning voor Attiny 85 toe. Open de Arduion IDE en volg het pad:
Bestand - Instellingen - "Extra URL's van Boards Manager", voeg de link in:

https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json


Klik op OK.
Ga naar:
Tools - Board - Boards Manager voer Attiny in en klik op "attiny door David A. Mellis". Klik op "Installeren" en laat de koffie staan.
En nu over de bibliotheken. Ze hebben er twee nodig:

Om te werken met het Oled-display

Controle temperatuursensor

Na het downloaden van deze archieven, pakt u ze uit in de map "libraries", die gemakkelijk te vinden is door het installatiepad van de Arduino IDE te volgen.

Stap 8 Programmeur.
Digispark Attiny 85 is een geweldig bord. Ontworpen om verbinding te maken met een USB-computer. En het kan daardoor worden geprogrammeerd. Maar Attiny gebruikt een software-USB, die op zijn beurt 2 KB van 8 KB geheugen in beslag neemt. Dit past niet bij ons en daarom zullen we Attiny 85 flashen via de ISP-interface. En hier hebben we een ISP-programmeur nodig. Als het er niet is, maakt het niet uit. Neem de Arduino. In mijn geval, Arduino UNO:


Je kunt elk ander compatibel bord uit de Arduino-lijn nemen. We maken verbinding met de computer, openen de Arduino IDE, selecteren de com-poort waarop het Arduino-bord is aangesloten, openen de schets in de voorbeelden, Arduino ISP en vullen deze in het bord. We hebben ook een draad nodig om snel verbinding te maken met Attiny.


De verbinding is als volgt:

D11 - P0
D12 - P1
D13 - P2
D10 - P5

Vergeet Attiny-voeding niet.

Stap 9 Bewerk en vul de schets.

Schets downloaden

Voordat u gaat vullen, moet u de schets bewerken.
De ds18b20 geïntegreerde sensor, zoals eerder vermeld, werkt met het One Wire-protocol. Elke sensor heeft zijn eigen unieke 64-bits adres. U moet het adres van uw sensor vinden en dit in een schets schrijven. Open de Arduino IDE, volg het pad:
Bestand - Voorbeelden - Dallas-temperatuur - OneWireSearch.

Vul de schets in Arduino. Open de poortmonitor. U zou de adressen van alle aangesloten sensoren en hun temperatuurmetingen moeten zien. We noteren uw adres. Open mijn schets en verander het adres naar je eigen in de regel:

byte addr [8] = {0x28, 0xFF, 0x75, 0x4E, 0x87, 0x16, 0x5, 0x63};


Gebruik de volgende constante om de voortgang van de klok aan te passen:

if (micros () - prevmicros & gt; [b] 497000 [/ b]) 


Hoe groter deze waarde, hoe langzamer de klok.
Voor controle worden seconden op het scherm weergegeven:

OzOled.printNumber ((long) sek, 0, 7); // output seconden voor nauwkeurige afstemming 


Geef commentaar op deze regel om seconden te verwijderen.
Nu verbinden we de programmeur of Arduino als programmeur, selecteren de com-poort, selecteren ons bord in het menu Tools en stellen de volgende parameters in:
Bord: Attiny 25/45/85
Bewerker: Attiny 85
Klok: intern 16
Selecteer dan in hetzelfde menu:
Tools - Programmeur - "Arduino als ISP".
En tot slot:
Sketch - Download via de programmeur

Stap 10 Eindmontage en lancering.
Schakel de programmeur uit en sluit de sensor, voeding en knop aan:


Totdat het exacte verloop van de klok is geconfigureerd, kunt u de kast sluiten met bankrubber. Als je klaar bent, kun je het lijmen.


Bekijk beoordeling
Totaal aantal stemmen: 13
10
10
10

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
9 opmerkingen
De auteur
Het idee is geweldig. Daar heb ik iets aan gedaan. Alleen binnen handbereik was een 5 kΩ-variabele. Ik nam het op in de lagere schouder. En dan vervangen door de meest geschikte permanent. Maar volgens mij is schrijven in de fabricage-instructies niet nodig. Waarom deze metingen niet meerdere keren uitvoeren?
Ik zag de noodzaak niet om te schrijven over vervelende en lange beproevingen.
U hoeft niets langs en vervelends te doen. Schakel de weerstand (2,7 ... 3) kOhm in de onderarm in, achtereenvolgens een 1 kOhm trimmer. Van een instelbare stroombron voert u de extreme waarden van de geregelde spanning in op de ingang, past u het werkpunt aan en vervolgens kunt u, indien gewenst, de weerstand van de trimmer meten en deze vervangen door een constante weerstand.
De auteur
Bij een frequentie van 8 MHz heb ik niet geprobeerd de klok te starten en dienovereenkomstig de nauwkeurigheid van de koers te meten. Alle metingen zijn gedaan vanaf 16 uur van binnenuit. Ik kan ook niet zeggen over de maand. Tot dusver werkten ze zonder te stoppen maximaal een week. Experimenten en verbeteringen zijn nog in ontwikkeling.
De auteur
Wat betreft de spanningsdeler zijn er echt veel nuances en fouten. En de verstrooiing van de weerstand van de weerstanden en de verstrooiing van de referentiespanning. Ik heb alles in de praktijk geprobeerd. Bij gebruik van een 3,6 kΩ-weerstand, zelfs met een accuspanning van 3,9 V, toont de Attiny analoge poort 1023 (indien geconverteerd naar 100% procent). Bij gebruik van een 3,3 kΩ weerstand neemt de analoge poortwaarde zelfs bij 4,1 V op de accu af. Daarom schreef ik dat de getuigenis nauwkeuriger is verkregen, ik zag gewoon niet de noodzaak om te schrijven over saaie en lange beproevingen.
De auteur
Ik zette de klok voor een week, paste de voortgang elke dag of vaker aan. Als gevolg hiervan haasten ze zich met een waarde van 497343 ongeveer 10 seconden per week.
De frequentie kan worden verlaagd. Ik heb de parameter niet gewijzigd, dat was niet nodig
Welnu, en wat is de nauwkeurigheid van de 8 MHz RC-klok? Per maand?
en waarom Clock: internal 16?
Het is beter om minder te kiezen, dan zijn de metingen nauwkeuriger.
Niet preciezer, maar gewoon de ingangsspanning moet lager zijn dan de referentie. Bovendien houd je in je redenering absoluut geen rekening met de spreiding van parameters: weerstanden, hoogstwaarschijnlijk heb je vijf procent, Vbg = (1.0 ... 1.2) V. Dus 3.3 kOhm kan te groot blijken te zijn, en misschien is 3,6 kOhms voldoende.
De auteur
Als u 3,6 uitgangsspanning gebruikt, krijgen we 1,11. Hoewel niet veel, maar meer referentiespanning. Bij gebruik van 3.3 - 1.04. Het is beter om minder te kiezen, dan zijn de metingen nauwkeuriger.
En wat betreft Oh, je hebt gelijk, ik lette gewoon niet op dit kleine detail.
Na het lijmen van de behuizing, kan toegang tot de oplaadaansluiting en knoppen worden verkregen vanaf de onderkant van het horloge door de onderkant af te snijden of simpelweg niet te plakken.
Dan krijgen we 3,55 KOhm, de dichtstbijzijnde van de standaardwaarden van 3,3 KOhm,
Helemaal niet. De dichtstbijzijnde E24 in het standaardbereik is 3,6 kOhm. En trouwens niet "KOhm, maar" KOhm.
Totdat het exacte verloop van de klok is geconfigureerd, kunt u de kast sluiten met bankrubber. Als je klaar bent, kun je het lijmen.
Hoe gaan we de batterij opladen?
En hoe de knop te manipuleren?

We raden je aan om te lezen:

Geef het voor de smartphone ...