Witam!
Chciałbym dziś pokazać urządzenie, które powoli i z bólami tworzyłem ostatnimi czasy.
Inspiracją do ruszenia z pracami były zbliżające się urodziny narzeczonej, której chciałem podarować coś nietypowego, a jednocześnie praktycznego. A że nie może być chyba nic bardziej praktycznego i przydatnego każdego dnia niż zegarek z budzikiem to wybór padł właśnie na takie urządzenie Dodatkowo temat wszelakich zegarków jakoś tak ciągle się przewija w życiu elektronika
Stage 1: założenia
Od samego początku miałem w głowie pewną wizję całości i pomimo stopniowego dodawania nowych rzeczy trzymałem się wyraźnego szlaku. Początkowo chciałem zastosować wyświetlacze siedmiosegmentowe, ale znalazłem na pewnym portalu aukcyjnym wyświetlacze alfanumeryczne 4 x 20 zgodne z HD44780 w atrakcyjnej cenie, więc… nastąpiła pierwsza zmiana założeń. Sterowanie miało odbywać się za pomocą przycisków, ale to też ostatecznie zostało zastąpione pilotem. Oprócz zegara postanowiłem wyświetlać jeszcze pełną datę i temperaturę. Dodałem również budzik na 7 dni tygodnia. Chciałem by podświetlanie ekranu adaptowało się do jasności otoczenia, tak by w nocy nie raziło, a w dzień gwarantowało czytelność. Na podobnej zasadzie miało działać podświetlanie obudowy. Właśnie, obudowa – koniecznie estetyczna i schludna – kobiety jakoś niezbyt doceniają wyeksponowanie starannie polutowanej PCB Jedyną funkcją której nie udało mi się zrealizować to (nazwa wymyślona przeze mnie) „Przypominacz TV” – coś działające na zasadzie podobnej do budzika, tyle ze nie wzywa do wstawania, a przypomina o zbliżającym się filmie lub programie – najpierw piknięciem i wyświetleniem stosownego komunikatu, a potem włączeniem telewizora na odpowiedni kanał. Brakło jednak umiejętności programistycznych do implementacji własnej metody nadawania komend IR w standardzie Sony, a nasz odbiornik nie reagował na komendy nadawane za pomocą bascomowego ‘sonysend’. Ale może kiedyś…
Stage 2: program
Całość programu powstawała sobie powolutku w chwilach wolnych od innych zajęć i obowiązków. Do tego celu powstawał na bieżąco prototyp na płytce stykowej, wyglądało to mniej więcej tak:
Program pisany był w Bascomie (proszę nie zaczynać dyskusji o tym jak tragiczny jest to język, a inne jakie dobre). Jako że zegarek, a już budzik w szczególności musi być czytelny nawet z daleka i z oczyma zamglonymi z powodu pobudki trzeba było zrobić coś, by główne wskazanie urządzenia, czyli godzina, była odpowiednio widoczna. Podpatrzyłem kilka różnych projektów i opracowałem własny sposób wyświetlania „dużych znaków” na wyświetlaczu alfanumerycznym. W tym miejscu podziękowania dla kolegi kuniarz za słowo porady – choć nie wykorzystałem jego pomysłu to zdecydowanie nakierował mnie na właściwe tory. Dzięki! Najpierw powstały czcionki:
A następnie implementacja tego do programu. Do odmierzania czasu wykorzystałem popularny RTC PCF8583 – układ już dosyć wiekowy, ale mimo to dobry. Myślałem że wiek i popularność tego układu pomogą mi w poszukiwaniu sprawdzonej metody jego programowej obsługi – niestety zawiodłem się. Również prośby o pomoc trafiły w pustkę. Zmuszony byłem więc sam rozgryźć problem, który okazał się nie taki straszny. Ostatecznie udało mi się stworzyć pełnowartościowy zegar z pełną obsługą daty (dni tygodnia, lata przestępne). Kalendarz może odliczać dowolną ilość lat (no dobrze, jego koniec nastąpi w roku 65535 – ograniczenie wynikające z „pojemności” zmiennej typu word ). Dalej poszło już z górki: dwa PWM’y na timerze1 sterują buforami na darlingtonach BC516, które z kolei zasilają diody wyświetlacza i obudowy. Sprawdzanie jasności otoczenia zrealizowane jest za pomocą dzielnika z fotorezystora i rezystora i przetwornika A/C mikrokontrolera. Aby uniknąć wahań i nieprzyjemnego migotania odczyt zapisuję bez żadnej konwersji i przeliczania do zmiennej word a następnie dzielę przez 10. Dzięki temu otrzymuję liczby całkowite w zakresie 0-10. To nie woltomierz i taka dokładność w zupełności wystarcza. Odbiór sygnałów RC5 zrealizowany na typowym odbiorniku IR 36kHz – SFH5110. Jego zasilanie zrealizowane jest zgodnie z notą katalogową, ponieważ miałem problemy z zakłóceniami i przypadkowymi, bezsensownymi przerwaniami.
Stage 3: wykonanie
Tutaj zaczęło się przysłowiowe zoo nie obliczyłem sobie czasu potrzebnego na wykonanie całej mechanicznej i elektronicznej części przez co musiałem bardzo się uwijać Dodatkowo los rzucał mi co chwile kłody pod nogi. Płytkę zaprojektowałem w oparciu o schemat narysowany „na kolanie” (dlatego taki zagmatwany i mało czytelny):
Zostawiłem płytkę dwustronną, choć pewnie udało by się upchnąć wszystko na jednostronnej z tego powodu, że nie miałem czasu nad tym myśleć, a wykonanie płytki dwu czy jednostronnej zajmuje podobną ilość czasu. I tu pierwszy zonk: drukarka odmówiła posłuszeństwa. Sobota wieczór, nie ma gdzie wydrukować mozaiki ścieżek – przymusowy przestój do poniedziałku. Po wydrukowaniu „na mieście” okazało się, że albo jakiś lipny toner mieli, albo włączony tak ekstremalny tryb jego oszczędzania że pomimo stosowania tego samego papieru, laminatu i metody termotransferu po odmoczeniu papieru spora część ścieżek na warstwie dolnej (bottom layer) się odblepiła… Cóż, na poprawki nie było czasu, więc poprawiłem co mogłem na szybko pisakiem. Lutowanie na szczęście przebiegło bez większych problemów – jedynie nie mogłem nigdzie dostać podstawki precyzyjnej DIP40 i mikrokontroler ostatecznie zamontowany został na kawałkach listwy żeńskiej. Ale to mała wada.
Obudowa to grawerowane i wyginane na gorąco plexi. Grawer robiony ręcznie – jak wyszło oceńcie sami. Wyginana za pomocą gorącego powietrza, podświetlona dwoma diodami białymi (z rezystorami 180omów) i jedną czerwoną (z rezystorem 100omów) co w efekcie daje ładny różowy kolor – niestety na zdjęciach kiepsko widać.
Nie mam zbyt wielu zdjęć z budowy – nie dość zę zarezerwowałem na nią za mało czasu, to jeszcze całość musiałem jakoś konspirować (tyle, na ile to możliwe w kawalerce zajmowanej razem z kobietą ). Ostatecznie zdążyłem, prezent się udał.
A co Wy powiecie?