» elektronik » Arduino »Klocka med termometer på Attiny

Attiny termometerklocka

Attiny termometerklocka



Hej alla och ha en trevlig dag eller kväll. Den här gången kommer jag att dela instruktionerna för att göra en rumsklocka med en termometer. Klockans datorcenter kommer att vara Attiny85, monterat på ett bräde från Digispark. För att visa klockan - Oled display. Termometer - den välkända ds18b20. För ström tar vi li-ion 18650 (de kan erhållas från ett gammalt batteri från en bärbar dator). Och lägg till en visning av batterinivån. Som i alla mina tidigare klockor kommer vi att klara oss utan RTC-modulen (realtidsklocka).

Vi samlar in allt som är nödvändigt:

- Digispark Attiny85 (mikro USB-version)
- ds18b20 (i plastfodral)
- Oledskärm med en upplösning på 128x64, I2C
- 2st 18650-batterier eller ett gammalt Li-ion laptop-batteri
- Motstånd (3,3 kΩ, 4,7 kΩ, 10 kΩ)
- tunn plast (för hus)
- Anslut kablar i olika färger
- ISP-programmerare (eller någon annan Arduino avgift)
- Knapp
- Dupont-kontakter 2,54 mm "mamma", "far"
- Papperskniv, dubbelsidig tejp, elektrisk tejp, smält
- Allt för lödning (lödkolv, kolofonium, lödning)

Steg 1 Ärende.
Det framtida klockfodralet kommer att vara tillverkat av tunn plast. Du kan köpa ett ark av sådan plast i en specialaffär eller beställa på aliexpress. Eller så kan du (inte vänta och inte titta) gå till kontorist och köpa en plastpappmapp av din favoritfärg. Mått på den framtida klockan: bredd - 40 mm, tjocklek - 30 mm, höjd - 70 mm. Enligt diagrammet nedan klippte vi ut en skanning från plast:


Vi skär längs tjocka linjer, böjer försiktigt längs tunna linjer. Vi klippte ut rektangeln i mitten med en kontoristkniv, detta är ett fönster för visning. Som ett resultat får vi en genomsökning av plast:


Vi passerar till Attiny.

Steg 2 Attiny + Oled.
Som jag sa, i vårt hjärta hemlagad kommer att vara Attiny 85. Det är bäst att köpa detta chip, omedelbart lödat på brädet tillsammans med en spänningsregulator och sele. Digispark Attiny85 är väl lämpad. Välj version med mikro-USB på kortet. Andra ändringar av kortet passar inte i storlek. Det händer att detta kort säljs med Dupon ”manliga” kontakter som redan är lödda. I så fall löd alla kontakterna. Vi samlar färgade ledningar. Vi behöver 10 centimeter i olika färger. Vi löd dem i Attiny och skriver ner vilken tråd, vilken slutsats motsvarar. Ledningarna P0 och P2 måste lödas i två ledningar. Det andra paret behövs för att ansluta Oled-skärmen. Vi får följande:


Jag skrev följande diagram på tråden:


Skärmen är liten (för att matcha styrenheten), men den ser vacker ut. OLED (organisk ljusemitterande diod) är en grafisk display. Det finns ingen bakgrundsbelysning, och i stället är varje pixel en oberoende LED. Skärmstorlekar - 0,96 tum.Upplösning 128x64. Ansluten via I2C-buss. Använder bara två kablar för att ansluta till Attiny. De finns i olika färger, välj efter din smak. Jag gillade det blå med en gul rand i toppen. Vi agerar på samma sätt som Digispark. Om det finns lödade kontakter - löd dem. Lödare, för tillfället, bara nätkablarna:


Var försiktig när du löd, skada inte kabeln med en lödkolv på displayen:


Vi ansluter brädorna med dubbelsidig tejp:


Vi lodde Digispark Attiny och Oled-skärmen tillsammans enligt schemat (trådarna kan variera, det viktigaste är att inte röra sig med slutsatserna):


För bekvämlighet och beställning samlar vi in ​​alla ledningar. Du kan vrida dem med elektrisk tejp för att inte bli förvirrad:


I slutet av alla ledningar fäster vi Dupont-”kvinnliga” -kontakten, sätter in den i isolatorerna och lindar det hela med elektrisk tejp för att göra kontakten. Vi registrerar också uttaget på kontakten:


Pinout bör vara så här, eftersom vi i framtiden kommer att ansluta en tråd för firmware eller andra klockelement till kontakten.
Vi limmar den resulterande strukturen i fodralet och glöm inte att limma själva fodralet och lämna ett stön inte limmat för ytterligare manipulationer:


När du limmar, var uppmärksam på att skärmen är jämn:


Steg 3 Ström.
För kraft kommer vi att använda två Li-ion-element. Skriv 18650. Du kan köpa dem separat. I detta fall, löd dem parallellt, isolera och mata ut kontakten för anslutning och efterföljande laddning:


Många har äldre bärbara datorer. Oavsett om de inte längre arbetar eller arbetar genom tiden. Även om den bärbara datorns batteri redan är dåligt och inte lämpar sig för den avsedda användningen, kan den användas för alla typer av hemlagade produkter. I vårt fall för en klocka. Vi tar batteriet från den bärbara datorn:


Det viktigaste är att han är Li-ion. Vi demonterar det försiktigt, du måste öppna plasthöljet för att inte skada elementet inuti. Oftast är batteriet uppdelat i två parallellt anslutna element. Vi tar ut dem och skiljer ett par från resten:


Det är bäst att lödas mot kontaktdynorna:


Limma detta par på baksidan av klockan:


Steg 4 Bestämma batteriladdningen.
En bekväm funktion för klockan är att indikera batteriladdningen. Vi bestämmer laddningsgraden efter spänning. Minsta spänning för dessa batterier är 2,4 V. Den kan inte laddas vidare. Maximal spänning är 4,2 V.

Spänningsmätningen vid den analoga porten är alltid relativt någon annan spänning. Vi kan inte använda AREF-stiftet på mikrokontrollern, som tjänar till att ställa in referensspänningen. Det är också omöjligt att mäta spänningen i förhållande till matningsspänningen (förhållandet är alltid detsamma). Därför kommer vi att bestämma spänningen i förhållande till den interna referensspänningen eller Vbg (Bandgap-referensspänning). Det är 1,1 V. Nu måste vi beräkna spänningsdelaren för vårt batteri, så att vid maximal laddning (4,2 V) hade delaren (1,1 V). Du kan beräkna med formeln:



Eller använd

R1 tar ett nominellt värde på 10 kOhm. Sedan får vi 3,55 KOhm, det närmaste lämpliga från standardvärdena 3,3 KOhm, och tar det. Mätningar görs mellan den inre spänningen och GND, så att 3,3 KΩ-motståndet är lödat till minus och 10 KΩ till plus. Vi placerar motståndet på batteriet, vi drar ut tråden från avdelaren.


Vi isolerar alla kontakter för att undvika kortslutning:


Tråden från delaren kommer att anslutas till PB4.

Steg 5 Mät temperaturen.
Ett utmärkt komplement till klockan är mätningen av rumstemperatur. Vi kommer att använda den integrerade temperatursensorn DS18B20. För att arbeta med den krävs bara en tråd (mycket användbart när du använder Attiny 85). Alla mätningar görs av honom själv, den centrala styrenheten bryr sig inte (Attiny 85 har också utmärkt minne och så lite), vi behöver bara ge kommandon och få resultat. Det finns flera olika scheman för att ansluta denna sensor, vi kommer att använda det alternativ som är optimalt för det här fallet, enligt min mening.Använd extern kraft och ett 4,7 kΩ-motstånd:


Löd små ledningar och fäst kontakterna


Tråden från DQ-sensorn är ansluten till PB 3.

Steg 6-knapp.
Vi har få slutsatser, men det finns många krav på klockor. Vi använder en knapp för att ställa in tiden. Vi kan inte räkna med mer. Löd trådarna till knappen, en kontakt från den till GND. Kombinera med vår temperatursensor:


Den andra kontakten från knappen är ansluten till PB 1.

Steg 7 Förbereda utvecklingsmiljön
För ytterligare arbete med skissen, såväl som dess redigering och fyllning, behöver vi Arduino IDE. Ladda ner detta program från:

Lägg nu till stöd för Attiny 85 på onsdag. Öppna Arduion IDE och gå längs vägen:
Fil - Inställningar - "Ytterligare webbadresser för styrelserhanterare" infog länken:

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


Klicka på OK.
Gå till:
Verktyg - Board - Boards Manager går in i Attiny och klickar på “attiny by David A. Mellis”. Klicka på "Installera" och lämna kaffet.
Och nu om biblioteken. De behöver två:

Att arbeta med Oled-skärmen

Reglering av temperatursensorn

När du har laddat ner dessa arkiv packar du upp dem i mappen "bibliotek", vilket är lätt att hitta genom att gå längs installationsvägen för Arduino IDE.

Steg 8 Programmerare.
Digispark Attiny 85 är ett bra bräde. Utformad för att ansluta till en USB-dator. Och det kan programmeras genom det. Men Attiny använder en mjukvaru-USB, som i sin tur tar upp 2 kB med 8 kB minne. Detta passar inte oss, och därför kommer vi att blinka Attiny 85 via ISP-gränssnittet. Och här behöver vi en ISP-programmerare. Om den inte är där - spelar det ingen roll. Ta Arduino. I mitt fall, Arduino UNO:


Du kan ta alla andra kompatibla kort från Arduino-linjen. Vi ansluter till datorn, öppnar Arduino IDE, väljer den com-port som Arduino-kortet är anslutet till, öppnar skissen i exemplen, Arduino ISP och fyller den i kortet. Vi behöver också en tråd för att snabbt ansluta till Attiny.


Anslutningen är som följer:

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

Glöm inte Attiny näring.

Steg 9 Redigera och fylla skissen.

Ladda ner skiss

Innan du fyller måste du redigera skissen.
Den ds18b20 integrerade sensorn fungerar som tidigare nämnts med One Wire-protokollet. Varje sensor har sin unika 64-bitars adress. Du måste hitta adressen till din sensor och skriva den i en skiss. Öppna Arduino IDE, följ vägen:
Fil - Exempel - Dallas temperatur - OneWireSearch.

Fyll skissen i Arduino. Öppna portmonitorn. Du bör se adresserna för alla anslutna sensorer och deras temperaturavläsningar. Vi skriver ner din adress. Öppna min skiss och ändra adressen till din egen i raden:

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


För att justera klockans framsteg använder du följande konstant:

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


Ju större detta värde, desto långsammare klocka.
För kontroll visas sekunder på skärmen:

OzOled.printNumber ((lång) sek, 0, 7); // utgående sekunder för korrekt inställning 


Kommentera den här raden för att ta bort sekunder.
Nu ansluter vi programmeraren eller Arduino som programmeraren, väljer com-porten, väljer vårt kort i Verktyg-menyn och ställer in följande parametrar:
Styrelse: Attiny 25/45/85
Processor: Attiny 85
Klocka: intern 16
Välj sedan i samma meny:
Verktyg - Programmerare - "Arduino som ISP".
Och slutligen:
Skiss - Ladda ner via programmeraren

Steg 10 Slutmontering och lansering.
Stäng av programmeraren och anslut sensorn, strömmen och knappen:


Tills klockans exakta gång är konfigurerad kan du stänga ärendet med bankgummi. När du är klar kan du limma den.


Titta på betyg
Antal röster: 13
10
10
10

Lägg till en kommentar

    • lelerxaxaOKdontknowyahoonea
      bossscratchluraJaja-jaaggressivhemlighet
      ledsendansdance2dance3benådningHjälpdrycker
      stoppvännerbragoodgoodvisselpipasvimningsanfalltunga
      rökklapparcraydeclarehånfulldon-t_mentionnedladdning
      hettaRASANDElaugh1mdamötemoskingnegativ
      not_ipopcornstraffalässkrämmalarmrapportersök
      hånthank_youdettato_clueumnikakutöverens
      illabeeeblack_eyeblum3rougeskrytaledan
      censureradepleasantrysecret2hotasegeryusun_bespectacled
      shokrespektlolprevedvälkommenkrutoyya_za
      ya_dobryihjälparene_huliganne_othodiFLUDförbudstänga
9 kommentar
Författaren
Idén är fantastisk. Jag gjorde något åt ​​det. Bara till hands var en variabel på 5 kΩ. Jag inkluderade den i nedre axeln. Och sedan ersatt av den mest lämpliga permanenten. Men i tillverkningsinstruktionerna tror jag att det är onödigt att skriva. Varför inte göra dessa mätningar flera gånger.
Jag såg inte behovet av att skriva om tråkiga och långa försök.
Inget behov av att göra någonting långt och tråkigt. Slå på motståndet (2,7 ... 3) kOhm i underarmen, i följd med det en 1 kOhm trimmer. Från en justerbar kraftkälla matar du in de extrema värdena på den kontrollerade spänningen till ingången, justerar driftspunkten, sedan kan du, om så önskas, mäta motståndet för trimmern och ersätta den med ett konstant motstånd.
Författaren
Vid en frekvens på 8 MHz försökte jag inte starta klockan och följaktligen mäta kursens noggrannhet. Alla mätningar gjordes klockan 16 från insidan. Jag kan inte säga om månaden heller. Hittills, utan att stänga av, arbetade de högst en vecka. Experiment och förbättringar pågår fortfarande.
Författaren
När det gäller spänningsdelaren finns det verkligen många nyanser och fel. Och spridningen av motståndets motstånd och referensspänningens spridning. Jag försökte allt i praktiken. När du använder ett 3,6 kΩ-motstånd, även med en batterispänning på 3,9 V, visar Attiny-analoga porten 1023 (när den konverteras till 100% procent). När du använder ett 3,3 kΩ-motstånd sjunker det analoga portvärdet även vid 4,1 V på batteriet. Därför skrev jag att vittnesbörden erhålls mer exakt, jag såg bara inte behovet av att skriva om tråkiga och långa prövningar.
Författaren
Jag ställde klockan i en vecka, justerade dess framsteg varje dag eller oftare. Som ett resultat, till ett värde av 497343, rusar de i cirka 10 sekunder i veckan.
Frekvensen kan minskas. Jag ändrade inte parametern, det fanns inget behov
Tja, och vad är noggrannheten hos 8-MHz RC-klockan? Per månad?
och varför Clock: intern 16?
Det är bättre att välja mindre, då är avläsningarna mer exakta.
Inte mer exakt, men helt enkelt bör ingångsspänningen vara mindre än referensen. Dessutom tar du absolut inte hänsyn till spridningen av parametrar i din resonemang: motstånd, troligen kommer du att ha fem procent, Vbg = (1.0 ... 1.2) V. Så 3.3 kOhm kan visa sig vara för stort, och kanske 3,6 kOhms kommer att göra.
Författaren
Om du använder 3,6 utspänning får vi 1,11. Även om inte mycket, men mer referensspänning. När du använder 3.3 - 1.04. Det är bättre att välja mindre, då är avläsningarna mer exakta.
Och när det gäller Åh, du har rätt, jag uppmärksammade bara inte denna mindre detalj.
Efter limning av höljet kan du få åtkomst till laddningsuttaget och knapparna från klockans botten genom att klippa av bottenlocket eller helt enkelt inte klicka fast det.
Sedan får vi 3,55 KOhm, den närmaste från standardvärdena 3,3 KOhm,
Inte alls. Den närmaste E24 i standardområdet är 3,6 kOhm. Och förresten, inte "KOhm, utan" KOhm.
Tills klockans exakta gång är konfigurerad kan du stänga ärendet med bankgummi. När du är klar kan du limma den.
Hur laddar vi batteriet?
Och hur man manipulerar knappen?

Vi rekommenderar att du läser:

Räcka den till smarttelefonen ...