Przystawka do scyzoryka Victorinox 58mm

Cel projektu

Moim zamierzeniem w ramach niniejszego projekciku jest opracowanie przystawki do miniaturowego scyzoryka Victorinox, która zawierać będzie pendrive i latarkę.

Początki

W okolicach 2016 kupiłem scyzoryk Victorinox Manager, czyli miniaturowy multitool-breloczek, zawierający między innymi śrubokręt płaski i krzyżakowy, nożyczki, wykałaczkę i długopis. Miała to być jedynie pamiątka z wycieczki, a w praktyce okazał się użytecznym narzędziem. Przydał mi się niejednokrotnie czy to podczas rozkręcania laptopa, czy też w celu podpisania dokumentów w urzędzie, jak również w wielu innych sytuacjach życiowych. Był przymocowany do kluczy, zatem miałem go zawsze przy sobie. Niestety, scyzoryk mi się zgubił i dopiero wówczas zauważyłem, jak użyteczny jest to przedmiot. Kiedy tylko zauważyłem stratę, postanowiłem kupić dokładnie taki sam model. Jakież było moje zdziwienie, kiedy okazało się, że ten model został wycofany z produkcji i nie ma bezpośredniego następcy. Inne podobne do niego scyzoryki wykazują jakieś niedoskonałości: albo brakuje wykałaczki, albo długopisu, albo któregoś ze śrubokrętów, albo posiadają gadżety, które są dla mnie zbędne, ale powodują, że scyzoryk jest grubszy i mniej poręczny.

Najbardziej zbliżony do Managera okazał się model Rambler, który jednakże nie posiada długopisu, bądź Midnite Manager, który co prawda ma długopis i latarkę, ale nie ma miejsca na wykałaczkę i jest grubszy. Istnieją jednak rozwiązania innego typu: można bądź kupić nakładkę uzupełniającą możliwości scyzoryka (na portalach zakupowych szukać należy Victorinox Scale), bądź też można coś zaprojektować i wydrukować na drukarce 3D. Ten problem można zatem uznać za rozwiązany. Kiedy, wiedząc już, że modyfikacje tego typu w ogóle istnieją i zacząłem szperać w poszukiwaniu przystawki spełniającej moje oczekiwania, oczom mym ukazało się całe uniwersum rozszerzeń i przeróbek do scyzoryków Victorinox. Pośród nich znalazł się fajny i schludny projekt na Kickstarterze:

https://www.kickstarter.com/projects/keyport/versa58-the-pocket-icon-you-know-unlocked-with-modularity

Kimże bym jednak był, gdybym nie próbował zrobić tego lepiej. Poniżej przedstawię, co wymyśliłem.

Pendrive

Miniaturowy pendrive o pojemności 128 GB ma swoje miejsce w moim portfelu. Jest to model z klasycznym złączem USB-A, jak i nowym USB-C, co czyni go kompatybilnym ze smartfonami. Zacząłem się zastanawiać, czy nie znalazłoby się dla niego miejsce w scyzoryku…

Latarka

Stwierdziłem, że fajnie by było, gdyby latarka posiadała akumulator i była ładowana z USB-C. A zarazem byłem ciekaw, czy pendrive z dwoma złączami USB może służyć jako adapter ułatwiający ładowanie ładowanie latarki z komputera, czyli pełnić rolę kabla USB-A <-> USB-C… otóż może 🙂

Schemat

Mechanika

Postanowiłem zmierzyć się z umieszczeniem w obrysie scyzoryka, po jednej stronie (pojedyncza przystawka), zarówno pendrive, jak i latarki. Obrys scyzoryka ma wymiar 58 x 13.9 mm (odpowiada to wysokości oraz maksymalnej szerokości ewentualnej płytki drukowanej z układem elektronicznym. Wysokość scyzoryka (czyli 13.9 mm) jest mniejsza niż szerokość złącza USB-A (jest to zarazem szerokość pendrive), która wynosi około 12.5 mm. Wstępny wniosek jest zatem taki: pendrive zmieści się w rękojeści scyzoryka.

Akumulator i ładowanie

W roli źródła zasilania postanowiłem wykorzystać akumulator o rozmiarze 10 x 9 x 4 mm, który ma pojemność rzędu 25…30 mAh. Dysponując takim ogniwem nie ma co się spodziewać długotrwałej pracy latarki. Moc LED będzie osiągać co najwyżej około 100 mW.

Za ładowanie odpowiada układ TP4057, który zdaje się być bratem bliźniakiem niezwykle popularnego TP4056, acz zamkniętym w obudowie SOT-23. Mały, funkcjonalny i tani – w sam raz do mojego projektu.

Procesor

Postanowiłem wykorzystać procesor o możliwie małych gabarytach oraz o jak najprostszym interfejsie programowania. Padło na ATTiny10 w obudowie SOT-23, w przypadku którego programowanie odbywa się za pomocą dwóch przewodów: żyła sygnałowa oraz masa. Nie da się prościej.

Źródła światła

Uznałem, że przydatne byłoby źródło światła białego wąskokątnego w postaci diody LED o kącie świecenia około 15 stopni, źródło światła czerwonego (ciągłego i migającego) oraz biała LED o szerokim kącie świecenia. Dioda czerwona powinna również informować o stanie akumulatora podczas ładowania.

Kontrola prądu LED

Diody zasilane są wprost z baterii bez pośrednictwa sprzętowego stabilizatora prądu. Oznacza to, że jasność świecenia diody będzie zależeć od poziomu naładowania akumulatora, czyli aktualnego napięcia zasilania. Rozważałem następujący sposób kontroli prądu:

  • brak kontroli (prąd LED ograniczony za pomocą rezystora szeregowego): wystąpi wówczas zmiana jasności w miarę rozładowywania akumulatora,
  • rezystor w szereg z LED+PWM o współczynniku wypełnienia zależnym od napięcia akumulatora: powinno działać, ale wystąpią duże piki prądowe przy naładowanym akumulatorze, a zatem przy wyższym napięciu i małym współczynniku wypełnienia.
  • źródło prądowe
    • wariant 1: źródło prądowe sterowane wygładzonym PWM z procesora. Rozwiązanie lepsze od powyższych, ale niezbędna jest komplikacja algorytmu: próbkowanie prądu za pomocą ADC i kontrola prądu wyjściowego na bieżąco z użyciem algorytmu PID,
    • wariant 2: sterowanie z PWM procesora, przy czym klucz wyjściowy sterowany jest impulsowo, a ADC mierzy wygładzony i uśredniony przebieg prądu – tu również potrzebny jest odpowiedni algorytm.

Postanowiłem zrealizować układ umożliwiający przetestowanie strategii sterowania LED z kontrolą prądu.

Z racji na ograniczoną liczbę pinów procesora, diodę czerwoną postanowiłem zasilać w sposób uproszczony, wprost z procesora, z ograniczeniem prądu za pomocą rezystora szeregowego i ewentualną korektą jasności, zależnie od stanu baterii. W przypadku LED koloru czerwonego jest to mniej kłopotliwe niż dla białych LED z racji na jej mniejszy spadek napięcia i a zatem mniejszą zależność jasność świecenia od napięcia zasilania. Dioda czerwona sterowana jest za pomocą tego samego pinu, który służy do pomiaru prądu białych LED (dioda czerwona nie ma zatem możliwości kontroli prądu).

Sterowanie

Sterowanie latarką będzie odbywać się z użyciem pinu RESET, a zatem za każdym razem, kiedy naciśnięty zostanie przycisk sterujący, nastąpi zresetowanie procesora. Taki sposób sterowania ma następujące zalety:

  • łatwość wybudzania ze stanu głębokiego uśpienia – będzie się to po prostu dziać automatycznie po naciśnięciu przycisku bez żadnych dodatkowych zabiegów,
  • wykorzystanie pinu, który normalnie byłby bezużyteczny.

Są też wady:

  • niemożność stwierdzenia, jaki był stan urządzenia przed naciśnięciem przycisku, czyli przed wystąpieniem resetu: czy latarka była wyłączona, czy też może świeciła, a jeżeli tak, to w jakim trybie? – reset wymazuje zmienne stanu programu,
  • nie da się w prosty sposób wykrywać, czy naciśnięcie przycisku był chwilowe, czy też przycisk był wcześniej przytrzymany, ponieważ w trakcie naciskania przycisku wykonywanie programu jest zawieszone.

Rozwiązanie problemu zapominania stanu programu po resecie można rozwiązać na dwa sposoby:

  • zmienną stanu można opisać w programie tak, by nie była kasowana podczas resetu (nie robiłem tego do tej pory, ponoć jest to możliwe),
  • ewentualnie zmienną stanu można zapisywać w pamięci EEPROM za każdym razem, kiedy przycisk został naciśnięty a latarka uruchomiona – pamięć będzie ona zużywać przy każdym naciśnięciu przycisku, mimo to sądzę, że to zużycie będzie i tak mniej znaczące od fizycznego zużycia przycisku.

Z kolei wykrywanie długiego naciśnięcia można zrealizować w sposób następujący: dzięki równoległemu połączeniu C8 i R10, naciśnięcie przycisku powoduje reset (C8 jest pusty, napięcie na wejściu reset spada na chwilkę do zera, po czym po czym kondensator C8 się ładuje), ale podczas przytrzymania go, na pinie procesora napięcie rośnie i ustala się napięcie powyżej progu reset, a zatem czas jego przytrzymania można wykrywać użyciem ADC. Referencja przetwornika A/C musi być być ustawiona na napięcie zasilania – wówczas ADC dokonuje pomiaru radiometrycznego: absolutna wartość napięcia REF oraz mierzonego poziomu na wejściu reset (przycisk) nie ma wówczas znaczenia, liczy się wartość względna.

Pomiar stanu baterii

Poziom napięcia baterii mierzony będzie za pomocą wewnętrznej konfiguracji procesora, bez zewnętrznych połączeń. Attiny umożliwia ustawienie ADC tak, by jego referencją było napięcie zasilania, a mierzone było napięcie wewnętrznego źródła V-REF – czyli tak jakby odwrócony pomiar. Nie dopuszczam wówczas do nasycenia ADC.

Status ładowania mierzony będzie również za pomocą wejścia RESET. Lekkie ściągnięcie napięcia na wejściu RESET przez wyjście CHRG układu TP4057 i rezystor R9 wykrywane jest jako stan ładowania, zaś ściągnięcie mocniejsze dzięki R8 o mniejszej wartości oznacza aktywność wyjścia STDBY. Pomiar odbywa się oczywiście za pomocą ADC analogicznie jak rejestracja przytrzymania przycisku.

Pozostaje jeszcze jeden problem: w jaki sposób wykrywać, że ładowarka została podłączona podczas gdy procesor jest w uśpieniu, kiedy to rezystory R8 i R9 są za słabe, by wywołać reset procesora? Według mojej intencji odpowiadają za to C2 i C9, które, analogicznie jak ma to miejsce w przypadku C8 (i wsparcia detekcji naciśnięcia przycisku), powinny wywołać taki kick-off reset MCU tuż po podłączeniu ładowarki.

Odporność na warunki środowiskowe

Kiedy układ będzie gotowy, planuję zalać go żywicą UV-utwardzalną, by nadać płytce kształt dopasowany do obudowy. Niestety, to nie zapewni wodoodporności, ponieważ niezależnie od moich starań, złącze USB, pendrive oraz przycisk nie będą wodoszczelne. Być może wodoodporność to wymaganie niezbędne w przypadku tego typu gadżetów i z tego powodu niniejszy gadżet pozostanie na zawsze w Limbo zwanym proof-of-concept. A może podziała chociaż trochę? Czas pokaże 🙂

Leave a Comment