Lodówka podłączona do Internetu była na początku XXI wieku symbolem absurdu, do jakiego można doprowadzić, gdy próbuje się skomputeryzować wszystko, co się da. Od tamtego czasu internetowe lodówki raczej nie zdobyły zbyt dużej popularności i dopiero w ostatnich latach na rynku zaczęły się pojawiać sprzęty tego typu, których użytkowanie zaczyna mieć sens. Ciekawymi przykładami są zaprezentowane na tegorocznych targach CES lodówki Samsunga i LG. Dzięki powstaniu internetowych sklepów spożywczych można już faktycznie rozważać zakup lub samodzielną budowę lodówki, która będzie automatycznie zamawiała produkty przez Internet i bazując na ich średnich okresach ważności, informowała o kończących się terminach przydatności pożywienia. Model Samsunga ma też wbudowane kamery, które pozwalają w trakcie zakupów w sklepie podejrzeć, jakie produkty się jeszcze nie skończyły.
Lodówka w opisywanym przypadku jest urządzeniem znacznie prostszym, a jej dodatkowe funkcje wynikają tylko i wyłącznie z ograniczenia rodzaju przechowywanych w niej produktów. Lodówka z Raspberry Pi ma pozwalać przede wszystkim monitorować temperaturę, zliczać ile razy otwarto i zamknięto jej drzwiczki oraz informować o liczbie butelek znajdujących się wewnątrz w danej chwili. Co więcej, dzięki zastosowaniu serwisu do gromadzenia danych z urządzeń typu IoT, dostęp do tych informacji możliwy jest z każdego miejsca na ziemi, z telefonu, komputera czy tabletu. Dodatkowo, poprzez wbudowane w serwis internetowy funkcje analizy danych, użytkownik może przeglądać informacje historyczne i w łatwy sposób dowiedzieć się, ile piwa spożył w poszczególnych miesiącach.
Ogólna koncepcja
Urządzenie działa w następujący sposób. Niewielką lodówkę należy postawić na wadze z interfejsem Bluetooth. We wnętrzu lodówki należy umieścić czujnik temperatury, a na jej obudowie kontaktron z magnesem. Wyprowadzenia z czujników należy dołączyć przewodami do komputera – w tym wypadku Raspberry Pi. Ponadto, ten komputer należy wyposażyć w interfejs Bluetooth – najwygodniej poprzez zakup modemu Bluetooth na USB, dzięki czemu będzie on mógł się komunikować z wagą.
Komputer należy też podłączyć do Internetu oraz skonfigurować by przesyłał dane do serwisu, w którego ramach byłyby one non-stop dostępne dla użytkownika. Ponieważ twórca projektu jest także założycielem firmy Initial State, która zajmuje się świadczeniem usług internetowych na rzecz osób z urządzeniami IoT, to właśnie serwis InitialState.com został wybrany do tego celu.
O ile pomiar temperatury oraz liczba otwarć drzwiczek zlicza się w oczywisty sposób, na podstawie wejść z czujników przewodowych, o tyle pomiar liczby butelek w lodówce nie jest już tak elegancko zrealizowany. Waga, na której umieszczana jest lodówka musi zostać wytarowana oraz należy policzyć średni ciężar jednej butelki lub puszki piwa. Następnie mierzony ciężar netto można podzielić przez średni ciężar butelki i całkiem precyzyjnie (w wypadku lodówek mieszczących do kilkudziesięciu butelek) wskazać ile piw znajduje się w danej chwili w lodówce.
Pomiar ciężaru
Największym problemem przy realizacji omawianego projektu był dobór urządzenia mierzącego ciężar lodówki. Tak jak w przypadku innych projektów, opisywanych przez nas w dziale „Projekty Soft”, samodzielna budowa takiej wagi była raczej wykluczona – autor szukał gotowego rozwiązania, które za pomocą jakiegoś uniwersalnego sposobu komunikacji mógłby podłączyć do Raspberry Pi. Wybór padł na akcesorium do gier, jakim jest Nintendo Wii Balance Board. Jest to kontroler do gier, mający kształt wagi łazienkowej i pozwalający na mierzenie nacisku wywieranego na powierzchnię Balance Board. W rzeczywistości kontroler pozwala również na pomiar rozkładu nacisku, ale na potrzeby wagi wystarczające będzie monitorowanie jedynie ciężaru sumarycznego. Wii Balance Board ma wbudowany interfejs Bluetooth. Koszt Wii Balance Board to około 50-60 dolarów w przypadku nowego urządzenia, ale znaleźć można też używane egzemplarze (produkt jest na rynku od 2008 roku), w cenie niemal dwukrotnie niższej.
Wii Balance Board trudno jednak nazwać wyborem optymalnym do omawianej aplikacji. Podstawowym problemem jest konieczność każdorazowego parowania interfejsu Bluetooth wagi z Raspberry Pi, po wyłączeniu zasilania. Być może nie byłoby to tak niewygodne, gdyby nie fakt, że przycisk parowania znajduje się na spodzie urządzenia, a to oznacza, że bez jakichkolwiek modyfikacji, jeśli tylko na chwilę zabraknie prądu, konieczne byłoby zdejmowanie masywnej lodówki z wagi, by odwrócić urządzenie i dokonać parowania. Dlatego autor dokonał drobnej przeróbki, w której ramach wykonał niewielką dźwignię wykonaną z ołówka, taśmy klejącej i kilku podkładek, która została tak usytuowana, by bez poruszania wagą można było nacisnąć od spodu przycisk parowania.
Z użyciem Wii Balance Board wiąże się jeszcze jeden problem – jest to urządzenie zasilane bateryjnie i producent nie przewidział możliwości podłączenia wagi na stałe do prądu. Na szczęście problem ten dostrzegło wiele firm tworzących alternatywne rozwiązania dla graczy i powstały pakiety akumulatorów z wejściem do podłączenia ładowarki. Pakiety te mają kształt umożliwiający podczepienie ich w miejsce zatoki na baterie oraz sprawiają, że urządzenie pracuje tak, jakby korzystało bezpośrednio z prądu z sieci elektrycznej.
Ostatnim problemem z pomiarem wagi lodówki na rzeczonym urządzeniu jest fakt, że służy ono przede wszystkim do dynamicznego monitorowania nacisku, co jest ważne w grach. Tymczasem w przypadku pomiaru masy lodówki z zawartością, korzystne byłoby odfiltrowanie wszelkich drgań, powodowanych np. przez agregat chłodniczy lodówki. Autor projektu miał z tym problem, dlatego stworzony przez niego skrypt wykonuje każdorazowo po (domyślnie) 500 pomiarów, po czym podaje uśredniony wynik. Mimo to wskazania dla pustej lodówki różniły się od siebie w zakresie nawet do około 200 g.
Monitorowanie otwarcia drzwi i temperatury
Kontaktron został podłączony do wejścia GPIO17 Raspberry PI i do masy. Wejście GPIO17 zostało też podłączone przez rezystor podciągający do napięcia 3,3 V. Zastosowany kontaktron został tak zaprojektowany, bo można go było łatwo przymocować właśnie np. do drzwi lub okien.
Użyty czujnik temperatury ma cyfrowy interfejs Dallas 1-wire. Został podłączony do zasilania 3,3 V oraz masy, a wyprowadzenie sygnałowe do portu GPIO4 Raspberry Pi. Wejście to zostało również podciągnięte rezystorem do 3,3 V. Użyty model DS18B20 jest wodoodporny, dzięki czemu nie grozi mu skroplona w lodówce wilgoć z powietrza, a do tego może pracować w temperaturze od -55 do +125°C.
Całość została zmontowana z użyciem pomocniczej płytki drukowanej, ułatwiającej wyprowadzanie sygnałów z Raspberry Pi. Autor skorzystał z kompletnego zestawu CanaKit Raspberry Pi 2 Ultimate Starter Kit, w którym oprócz komputera Raspberry Pi 2 Model B z 1 GB pamięci RAM, znajdowała się też karta MicroSD o pojemności 8 GB, obudowa, zasilacz z wyjściem microUSB, płytki z wyprowadzeniami i taśma do nich oraz dwa 10-kiloomowe rezystory. Zestaw ten kosztuje około 110 USD + koszty transportu i podatki.