Списък на това, от което се нуждаем:
- Digispark Attiny85
- Дисплей с олед 128x64 I2C
- сензор за температура ds18b20
- Резистор 4.7 Kom 0.25 W
- ISP програмист или Arduino Digispark Attiny85 съвет на фърмуера
- Пластмасов таблет с щипка или лист от тънка пластмаса
- проводници
- конектори Dupont 2,54 мм „женски“
- Бутони 2 бр.
- Малка платка или малка тапицерия
- поялник
- спойка, колофон
- ножица
- чиновнически нож
- Пистолет за горещо лепило
- горещо лепило
Стъпка 1 Избор на компоненти.
Като основен контролер ще използваме Digispark Attiny85. Има няколко вида от тях. Нуждаем се от платка с микро USB конектор. Останалото няма да се побере в кутията на часовника.
За показване се нуждаем от Oled 128x64 I2C дисплей. Те се предлагат в различни цветове: бяло, синьо, синьо с жълто. Обръщам вашето внимание! Понятието "двуцветен" в описанието или заглавието на този екран означава лента от един цвят в горната част на екрана, а вторият цвят целият останал екран, а не възможност за показване на два цвята с този екран! Всички екрани от този тип показват само един цвят, или в горната част лента от един цвят в долната част - друг. Като например този, който ще използвам. Лентата отгоре е жълта, а останалата част от екрана е синя. Можете да изберете всеки цвят, който харесвате.
Нуждаем се и от вградения сензор за температура DS18B20. Не е избран случайно. Първо, DS18B20 комуникира с микроконтролера чрез едножична комуникационна линия, използвайки протокола за интерфейс 1-Wire. В нашия случай това е важно, тъй като изводите на Attiny85 без сензор са малко. На второ място, този сензор е цифра, тоест той сам извършва всички измервания и просто предава данни за температурата, без да изразходва изчислителните ресурси на Attiny85.
Що се отнася до останалите, мисля, че няма да има въпроси, така че нека да преминем към производството на случая.
Стъпка 2 Монтаж на корпуса.
Калъфът за часовник ще бъде направен от тънка пластмаса. Имах пластмасов таблет с хартиена щипка на ръцете си. Той е достатъчно здрав, за да държи формата си, а в същото време може да бъде изрязан с обикновени ножици и офис нож. Той излезе идеално.Ако не е под ръка, можете да си купите таблет в магазин за офис консумативи или да намерите подходящата пластмаса, която да замени таблета. Ние правим маркировки върху пластмаса по схемата:
Изрежете всички плътни линии. Точково - леко нарязано с чиновнически нож. Пунктирани линии са сгъваеми линии. Както вече разбрахте, това е обичайното оформление на куба. На следващо място, трябва да спойкате проводниците към екрана, най-добре е да вземете многоцветни и да запишете, което води до какво. Залепете екрана върху горещото лепило в средата, така че предната му страна да излиза от задната страна. Както можете да видите, затворихме обозначенията на щифтовете на екрана. Затова беше необходимо да ги запишем. Леко подадох на ножа и по този начин отрязах долната част на тялото. В това няма нищо лошо, всичко може да бъде залепено. Но е по-добре да не повтарям грешките си.
Резултатът трябва да бъде такъв:
В този случай е готов. Все още можете да изрежете задния капак от същата пластмаса, но това не е задължително.
Стъпка 3 Ние спойка.
Нашият случай е малък и там трябва да се набием много. Затова вземаме парче от платката не по-голямо от 2,8 х 2,8 мм и спойка с два бутона, датчик ds18b20, резистор и няколко контакта. Съгласно следната схема:
Не е необходимо да спойкате проводници директно към Attiny, тъй като е необходимо да изключите всичко за фърмуера. Резултатът трябва да е нещо подобно:
Бутоните са необходими за определяне на времето. Захранването може да се вземе от USB порта на компютъра. Комбиниране съответно на плюс и минус:
Ако искате да направите без проводници, трябва да намерите малка литиево-йонна батерия. Ето едно, например:
Тази батерия се побира в кутията. Необходимо е само да предоставите заключения за зареждането на батерията.
Стъпка 4 Подготовка на програмиста.
Digispark Attiny85 може да се програмира чрез микро USB конектор на платката, като се използва Arduino IDE като среда за програмиране. Но в същото време трябва да пожертвате 2 KB памет за зареждащото устройство. Attiny 85 има общо 8 KB Flash. Скицата ми не пасва на зареждащия инструмент, така че трябва да програмирам чрез ISP програмиста. Нямам такъв програмист, но има борд на Arduino Uno, който ще използвам като програмист. Ако имате ISB програмист, можете да пропуснете този елемент. Отворете Arduino IDE и попълнете нашата скица, наречена ArduinoISP, в нашето Arduino Uno. Можете да го намерите като този файл - Примери - Arduino ISP. Скицата започва с намек за това как да свържете Arduino към програмируемия контролер. Вместо Arduino Uno може да има всяка друга дъска на Arduino.
// 10: нулиране на роб
// 11: MOSI
// 12: МИСО
// 13: SCK
Схема на връзка с Digispark Attiny85:
Arduino UNO - Digispark Attiny85
D11 - P0
D12 - P1
D13 - P2
D10 - P5
Стъпка 5 Подготовка на програмната среда.
За да редактирате фърмуера и да попълните скицата в Attiny 85, трябва да подготвите не само програмиста, но и самата среда за програмиране. За да направите това, инсталирайте Arduino IDE от официалния уебсайт на Arduino.cc, а също така инсталирайте добавката за микроконтролери Attiny чрез диспечера на дъските.
Стартирайте Arduino IDE, след това File - Settings - в полето URL адреси на Additional Board Manager, залепете връзката:
https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json
щракнете върху OK (можете да въведете няколко връзки, разделени със запетая в това поле). Следващи инструменти - Board - Boards Manager в полето за филтри, въведете Attiny и кликнете върху „attiny by David A. Mellis“. Щракнете върху Инсталиране и изчакайте изтеглянето да приключи. Сега в менюто Инструменти изберете:
Борд - Attiny 25/45/85
Процесор - Attiny 85
Часовник - вътрешен 16
и изберете серийния порт, към който е свързан ISP програмистът или Arduino като програмист.
Опитах много различни библиотеки за работа с екрана. Според мен най-удобният и работещ на Attiny85: TinyOzOLED.
Датчик за температура се нуждае от библиотеката на OneWire.
Инсталирайте тези две библиотеки. Можете да инсталирате библиотеки на трети страни директно в среда за програмиране. Без да разопаковате изтеглените архиви, в Arduino IDE изберете менюто Sketch - Connect Library. В самия връх на падащия списък изберете елемента Добавяне. Zip библиотека. В диалоговия прозорец, който се показва, изберете библиотеката, която искате да добавите. Отворете отново менюто Sketch - Connect Library. В самото дъно на падащия списък трябва да видите нова библиотека. Сега библиотеката може да се използва в програми. Не забравяйте да рестартирате Arduino IDE след всичко това.Ако това не помогне, просто разархивирайте архивите в папката „библиотеки“, разположена в папката с инсталирания Arduino IDE.
Стъпка 6 Редактирайте и попълнете скицата.
Температурният сензор работи съгласно протокола One Wire и има уникален адрес за всяко устройство - 64-битов код. Ресурсите на Attiny не са достатъчни, за да търсите този код всеки път. Затова първо трябва да свържете сензора към която и да е платка на Arduino, да попълните скицата, разположена в менюто Файл - Примери - Температура на Далас - OneWireSearch. След това стартирайте Tools - Port Monitor. Arduino трябва да намери нашия сензор, да напише неговия адрес и текущите показания на температурата. Копираме или просто записваме адреса на нашия сензор. Отворете скицата Attiny85_Oled_SPI_Term_2, потърсете реда:
байт addr [8] = {0x28, 0xFF, 0x75, 0x4E, 0x87, 0x16, 0x5, 0x63};
Записваме адреса на вашия сензор между скоби, замествайки адреса на моя сензор. След това свържете Attiny с програмиста или Arduino като програмист (това е описано в стъпка 4) и попълнете скицата. Остава да изключите програмиста и да свържете всичко по схемата в 3 стъпки. Сглобката се оказва нещо подобно:
Екранът е малък, невъзможно е да се постави както времето, така и температурата, така че да се вижда. Следователно часовникът променя времето с отчитане на температурата на всеки 10 секунди.