Najlepsze pomysły na projekty DIY pochodzą z życia. Mieliśmy w firmie drobny problem: nasze SCRUMowe daily meetings potrafiły trochę się przeciągać. Zamiast kilku minut trwały i kwadrans. Stoper? Jakoś tak nie pasuje do idei. Zamiast tego „na szybko” zbudowałem prosty timer pozwalający każdemu członkowi zespołu na powiedzenie co ma do powiedzenia w 40 sekund. Po tym czasie rozlega się sygnał dźwiękowy. Kolejny uczestnik wciska przycisk i jego czas jest liczony od początku.

Licznik ATTiny85

W pierwszej chwili chciałem użyć Arduino, ale to jak strzelanie z armaty do wróbla. Po co komu „potęga” ATmega 328 kiedy będę potrzebował góra dwóch wyjść cyfrowych. Z tego powodu wybór padł na rodzinę AVR ATtiny dużo lepiej dostosowaną do tak prostych zastosowań. Mój układ działa na ATtiny85, ale równie dobrze można użyć ATtiny45 lub ATtiny25. Różnią się tylko ilością pamięci EEPROM, a cały kod zajmuje około 1kB.

ATtiny 85 licznik czasu

Jak widać, schemat jest banalnie prosty a złożenie na płytce prototypowej zajmuje kilka minut. Lista elementów też krótka:

  • ATtiny85/45/25
  • przycisk
  • bateria (3V-5V)
  • opornik 220Om
  • opornik 1kOm
  • dioda LED
  • tranzystor BC547 lub podobny
  • brzęczyk

Gorzej wygląda sprawa z programowaniem. Rozwiązania są dwa: albo używamy specjalizowanego programatora, albo używamy Arduino. Tak tak popularne Arduino można użyć jako programatora dla innym mikrokontrolerów. Co więcej, można użyć oprogramowania Arduino i wykorzystać większość dostępnych bibliotek. Potrzeba będą tylko nowe core-files i trochę przewodów. Dość dobry tutorial znajduje się tutaj, ja tylko polecam użycie tych core-files. Jest z nimi mniej problemów i wygląda na to, że są po prostu lepsze (działa na nich VirtualWire, ale o tym może kiedy indziej).

Program jest na tyle prosty, że nie będę go dokładnie opisywał. Głównym założeniem jest niski pobór energii. Z tego powodu mikrokontroler jest głównie w stanie uśpienia, a którym cały układ pobiera zaledwie około 4 mikro Ampery.

Wbudowany watchdog wybudza układ co 2 sekundy i zapala na chwilę LED. Przy 20 wybudzenia (40 sekund) rozlega się seria dźwięków z buzzera, watchdog jest wyłączany i układ przechodzi w stan permanentnego uśpienia.

Przycisk w który wyposażony jest układ nie robi nic innego, jak reset mikrokontrolera i cała procedura rozpoczyna się od początku.

Pełny kod źródłowy dostępny jest na GitHubie.