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.