Lijst van wat we nodig hebben:
- Digispark Attiny85
- Oled-display 128x64 I2C
- ds18b20 temperatuursensor
- Weerstand 4.7 Kom 0.25 W
- ISP programmeur of Arduino Digispark Attiny85 firmwarekaart
- Plastic tablet met paperclip of vel dun plastic
- draden
- Dupont 2,54 mm “vrouwelijke” connectoren
- Knopen 2 stuks.
- Kleine printplaat of kleine bekleding
- soldeerbout
- Soldeer, hars
- schaar
- administratief mes
- Heet lijmpistool
- Hete lijm
Stap 1 Componenten selecteren.
Als hoofdcontroller zullen we Digispark Attiny85 gebruiken. Er zijn verschillende soorten. We hebben een bord nodig met een micro-USB-connector. De rest past niet in de horlogekast.
Om weer te geven hebben we een Oled 128x64 I2C-beeldscherm nodig. Ze zijn er in verschillende kleuren: wit, blauw, blauw met geel. Ik trek je aandacht! Het concept van "tweekleurig" in de beschrijving of titel van dit scherm betekent een strook van één kleur bovenaan het scherm en de tweede kleur het hele resterende scherm, en niet de mogelijkheid om met dit scherm twee kleuren weer te geven! Alle schermen van dit type geven slechts één kleur weer, of bovenaan een strook van één kleur onderaan - een andere. Zoals bijvoorbeeld degene die ik ga gebruiken. De balk hierboven is geel; de rest van het scherm is blauw. U kunt elke gewenste kleur kiezen.
We hebben ook de geïntegreerde temperatuursensor DS18B20 nodig. Het is niet toevallig gekozen. Ten eerste communiceert de DS18B20 met de microcontroller via een enkeldraads communicatielijn met behulp van het 1-draads interfaceprotocol. In ons geval is dit belangrijk, omdat de conclusies van Attiny85 zonder sensor weinig zijn. Ten tweede is deze sensor een cijfer, dat wil zeggen dat hij alle metingen zelf uitvoert en eenvoudig temperatuurgegevens verzendt zonder de computerbronnen van Attiny85 te besteden.
Wat de rest betreft, ik denk dat er geen vragen zullen zijn, dus laten we doorgaan met het vervaardigen van de zaak.
Stap 2 Montage van de behuizing.
De horlogekast wordt gemaakt van dun plastic. Ik had een plastic tablet met een paperclip op mijn handen. Het is sterk genoeg om zijn vorm te behouden en tegelijkertijd kan het worden gesneden met een gewone schaar en een kantoormes. Hij kwam perfect naar voren.Als het niet voorhanden is, kunt u een tablet kopen in een kantoorwinkel of het juiste plastic vinden om de tablet te vervangen. We maken markeringen op plastic volgens het schema:
Knip alle ononderbroken lijnen uit. Gestippeld - lichtjes gesneden met een administratief mes. Stippellijnen zijn vouwlijnen. Zoals je al begreep, is dit de gebruikelijke kubuslay-out. Vervolgens moet u de draden aan het scherm solderen, het is het beste om veelkleurig te nemen en op te schrijven wat tot wat leidt. Lijm het scherm op de hotmelt lijm in het midden, zodat de voorkant er vanaf de achterkant uit komt. Zoals u kunt zien, hebben we de aanduidingen voor de schermpen gesloten. Daarom was het nodig om ze op te schrijven. Ik gaf het mes een beetje over en sneed daarbij het onderste deel van het lichaam af. Daar is niets mis mee, alles kan gelijmd worden. Maar het is beter om mijn fouten niet te herhalen.
Het resultaat zou als volgt moeten zijn:
Op deze zaak is klaar. U kunt de achterklep nog steeds uit hetzelfde plastic snijden, maar dit is optioneel.
Stap 3 We solderen.
Onze koffer is klein en we moeten daar veel proppen. Daarom nemen we een stuk van de printplaat niet groter dan 2,8 x 2,8 mm en solderen in twee knoppen, een ds18b20 sensor, een weerstand en meerdere contacten. Volgens het volgende schema:
Het is niet nodig om draden rechtstreeks aan Attiny te solderen, omdat het voor firmware nodig is om alles los te koppelen. Het resultaat zou er ongeveer zo uit moeten zien:
Knoppen zijn nodig om de tijd in te stellen. De stroom kan worden afgenomen via de USB-poort van de computer. De plus en min combineren, respectievelijk:
Als u het zonder kabels wilt doen, moet u een kleine lithium-ionbatterij vinden. Hier is er een, bijvoorbeeld:
Deze batterij past in de koffer. Het is alleen nodig conclusies te trekken over de batterijlading.
Stap 4 De programmeur voorbereiden.
Digispark Attiny85 kan worden geprogrammeerd via de micro-USB-connector op het bord, met de Arduino IDE als programmeeromgeving. Maar tegelijkertijd moet je 2 KB geheugen opofferen voor de bootloader. Attiny 85 heeft in totaal 8 KB Flash. Mijn sketch past niet bij de bootloader, dus ik moet programmeren via de ISP-programmeur. Ik heb zo'n programmeur niet, maar er is een Arduino Uno-bord, dat ik als programmeur zal gebruiken. Als je een ISB-programmeur hebt, kun je dit item overslaan. Open de Arduino IDE en vul onze schets genaamd ArduinoISP in onze Arduino Uno in. Je kunt het zo vinden Bestand - Voorbeelden - Arduino ISP. De schets begint met een hint over hoe je de Arduino op de programmeerbare controller kunt aansluiten. In plaats van Arduino Uno, kan er een ander Arduino-bord zijn.
// 10: slave reset
// 11: MOSI
// 12: MISO
// 13: SCK
Verbindingsschema met Digispark Attiny85:
Arduino UNO - Digispark Attiny85
D11 - P0
D12 - P1
D13 - P2
D10 - P5
Stap 5 De programmeeromgeving voorbereiden.
Om de firmware te bewerken en de schets in Attiny 85 te vullen, moet je niet alleen de programmeur voorbereiden, maar ook de programmeeromgeving zelf. Installeer hiervoor de Arduino IDE vanaf de officiële Arduino.cc-website en installeer ook de Attiny-add-on voor microcontrollers via de Boards Manager.
Start de Arduino IDE en vervolgens Bestand - Instellingen - plak in het veld Extra Boards Manager URL's de link:
https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json
klik op OK (u kunt in dit veld verschillende links invoeren, gescheiden door een komma). Volgende Tools - Board - Boards Manager in het filterveld, voer Attiny in en klik op "attiny door David A. Mellis". Klik op Installeren en wacht tot de download is voltooid. Selecteer nu in het menu Extra:
Bestuur - Attiny 25/45/85
Processor - Attiny 85
Klok - intern 16
en selecteer de seriële poort waarop de ISP-programmeur of Arduino is aangesloten als de programmeur.
Ik heb veel verschillende bibliotheken geprobeerd om met het scherm te werken. Naar mijn mening het handigst en het werken aan Attiny85: TinyOzOLED.
Een temperatuursensor heeft de OneWire-bibliotheek nodig.
Installeer deze twee bibliotheken. U kunt bibliotheken van derden rechtstreeks in de programmeeromgeving 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.Als dat niet helpt, pak dan de archieven uit in de map "libraries" in de map met de Arduino IDE geïnstalleerd.
Stap 6 Bewerk en vul de schets.
De temperatuursensor werkt volgens het One Wire protocol en heeft voor elk apparaat een uniek adres - een 64-bit code. Attiny-bronnen zijn niet genoeg om elke keer naar deze code te zoeken. Daarom moet u eerst de sensor op een Arduino-bord 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 Attiny85_Oled_SPI_Term_2, zoek de regel:
byte addr [8] = {0x28, 0xFF, 0x75, 0x4E, 0x87, 0x16, 0x5, 0x63};
We schrijven het adres van uw sensor tussen accolades en vervangen het adres van mijn sensor. Verbind daarna Attiny met de programmeur of Arduino als programmeur (dit wordt beschreven in stap 4) en vul de schets in. Rest het nog om de programmeur los te koppelen en alles volgens het schema in 3 stappen aan te sluiten. De montage blijkt zoiets als dit:
Het scherm is klein, het is onmogelijk om zowel tijd als temperatuur in te stellen zodat het zichtbaar is. Daarom verandert de klok de tijd met elke 10 seconden een temperatuurmeting.