Spisu treści:

JavaStation (samouzupełniający się, w pełni automatyczny ekspres do kawy IoT): 9 kroków (ze zdjęciami)
JavaStation (samouzupełniający się, w pełni automatyczny ekspres do kawy IoT): 9 kroków (ze zdjęciami)

Wideo: JavaStation (samouzupełniający się, w pełni automatyczny ekspres do kawy IoT): 9 kroków (ze zdjęciami)

Wideo: JavaStation (samouzupełniający się, w pełni automatyczny ekspres do kawy IoT): 9 kroków (ze zdjęciami)
Wideo: Wykład nr 7 - "Binarne liczby całkowite" 2024, Lipiec
Anonim
JavaStation (samouzupełniający się, w pełni automatyczny ekspres do kawy IoT)
JavaStation (samouzupełniający się, w pełni automatyczny ekspres do kawy IoT)
JavaStation (samouzupełniający się, w pełni automatyczny ekspres do kawy IoT)
JavaStation (samouzupełniający się, w pełni automatyczny ekspres do kawy IoT)
JavaStation (samouzupełniający się, w pełni automatyczny ekspres do kawy IoT)
JavaStation (samouzupełniający się, w pełni automatyczny ekspres do kawy IoT)

Celem tego projektu było stworzenie w pełni automatycznego, sterowanego głosem ekspresu do kawy, który samoczynnie napełnia się wodą i tak naprawdę wystarczy wymienić klientów i wypić kawę;)

Krok 1: Wprowadzenie

Wstęp
Wstęp

Ponieważ był to mój drugi mod kawowy, wiele się nauczyłem w trakcie tego procesu, szczególnie, że im bardziej złożona maszyna zmodyfikujesz, tym więcej problemów/błędów napotkasz podczas codziennej pracy. Poprzednia maszyna była po prostu prostym, starym ekspresem do kawy z 1 przełącznikiem i przekaźnikiem.

Circolo (w pełni automatyczna wersja) to najwyższej klasy maszyna premium Dolce Gusto. Musiałem spędzić godziny na poszukiwaniu odpowiedniej maszyny, ponieważ wszystkie inne maszyny z tej serii używają górnej mechanicznej dźwigni do przełączania między strumieniem zimnej i gorącej wody, jak pokazano na zdjęciu.

Krok 2: Wybierz odpowiednią maszynę

Wybierz odpowiednią maszynę
Wybierz odpowiednią maszynę

Mój podstawowy ekspres jest nie tylko w pełni automatyczny, ale ma niezwykłe funkcje, takie jak automatyczne wyłączanie się po 5 minutach i zapamiętywanie ostatniej ilości kawy (co znacznie ułatwi późniejszy modowanie). Podstawowa obsługa maszyny:

1, wciśnięty przycisk zasilania;

2, wciśnięty przycisk zimnej wody (natychmiast rozproszy wodę do kubka)

3, wciśnięty przycisk gorącej wody (ogrzewa bojler ~20-60 sekund i zaczyna wypuszczać gorącą wodę do kubka) Kontrolka zasilania będzie migać na czerwono w okresie gotowości, a następnie świeci na zielono, gdy bojler jest gotowy.

Ta maszyna ma również możliwość wykrywania następujących błędów:

Zbiornik na wodę jest pusty

Uchwyt na kubek nie jest na swoim miejscu

W obu przypadkach kontrolka zasilania będzie migać na czerwono/zielono.

Krok 3: Modyfikacje sprzętu

Modyfikacje sprzętu
Modyfikacje sprzętu

W tym piśmie nie będę szczegółowo omawiał demontażu i ponownego montażu obudowy, ponieważ na YouTube są o tym filmy. Główny mikroprocesor jest ukryty tuż pod panelem głównym, gdzie znajdują się 2 przełączniki. Kocioł znajduje się po prawej stronie obudowy odseparowanej od wszystkiego innego, pompa i panel zasilania po lewej stronie.

Ekspres do kawy to ciężkie środowisko dla elektroniki, żaden z boków nie nadaje się idealnie do zintegrowania obwodu. Prawy przy kotle ma więcej miejsca ale uporasz się z ciepłem, oczywiście obwód nie mógł dotykać płyty kotła ani nawet być blisko niej. Ja wybrałem stronę zasilania/pompy, ale tutaj mamy do czynienia z silnym rezonansem pochodzącym z pracy pompy membranowej, który z czasem może popsuć obwód sterujący / spowodować wysunięcie się przewodów ze złączy.

Panel zasilania nie zawiera niczego użytecznego, ale można go użyć do wypicia stabilnego +5 V (jeden kciuk w górę dla tej maszyny), który można bezpośrednio podłączyć do pinu VIN Arduino z pominięciem wbudowanego regulatora napięcia.

Skrócona lista sprzętu (niepełny BOM, bez podstaw):

  1. Dolce Gusto Circulo w pełni automatyczna wersja
  2. Moduł przekaźnika 5 V 4-kanałowy z transoptorem do PIC AVR DSP (sugeruję użycie 4x przekaźnika kontaktronowego SIP-1A05)
  3. Arduino Micro (sugeruję używanie SparkFun Pro Micro lub nowszego w przyszłości)
  4. 2 szt. 4n35 FSC transoptory fototranzystor
  5. Elektryczny zawór elektromagnetyczny 1/2 "do wody Powietrze N/C normalnie zamknięty DC 12 V
  6. Moduł ultradźwiękowy Czujnik przetwornika odległości HC-SR04 (kup kilka dodatków, później zobaczysz dlaczego)
  7. 2 szt. Moduł czujnika wykrywania wilgoci w deszczu Detekcja deszczu dla Arduino
  8. 1 Xbee
  9. Złączki rurowe do bloków wodnych (mogą się różnić w zależności od domu, najlepiej kupić w sklepie z narzędziami i złożyć je tam przed zakupem)

Krok 4: Połączenia główne i płyta kontrolera

Główne połączenia i płyta kontrolera
Główne połączenia i płyta kontrolera
Główne połączenia i płyta kontrolera
Główne połączenia i płyta kontrolera
Główne połączenia i płyta kontrolera
Główne połączenia i płyta kontrolera

Należy podłączyć następujące punkty obwodu:

1, gorący przycisk

2, zimny przycisk

3, czerwona dioda led

4, zielona dioda led

5, główny przycisk zasilania;

6, wspólny GND

Niestety zgubiłem notatki/zdjęcia, gdzie je lutować na płycie, ale wszystko można łatwo prześledzić za pomocą multimetru (wystarczy użyć trybu testu diody, aby prześledzić przewody). Lutowanie nie było zbyt trudne, wybierz punkty z nóżkami SMD i tam przylutuj przewody.

Obie czerwone/zielone diody LED znajdują się obok siebie przy włączniku zasilania. Są one potrzebne do określenia stanów ekspresu (zasilona, gotowa do parzenia kawy (kocioł rozgrzany), błąd). Zdjąłem je bezpośrednio z płyty głównej, ponieważ trudno jest bawić się małym obwodem wokół włącznika zasilania.

Używałem transoptorów 4N35, aby bezpiecznie łączyć się z Arduino i odczytywać stany diod LED. Pierwotnym pomysłem było użycie 5 z nich i wykonanie zarówno odczytów, jak i przełączników (zrobić całkowicie cichy obwód). Niestety ten układ nie był w stanie wygenerować wystarczająco niskiego oporu, aby emulować naciśnięcie przycisku, więc zmuszony byłem użyć przekaźników. Użyłem ogólnego 4-kanałowego modułu przekaźnikowego, który miałem pod ręką, ale gdybym musiał przerobić ten projekt, użyłbym po prostu małych przekaźników Reed (SIP-1A05 Reed Switch Relay z wewnętrznymi diodami flyback), które można bezpośrednio podłączyć do wyjścia Arduino piny (obciążenie ~7mA), aby wszystko można było umieścić na dwupoziomowej konstrukcji płytki.

5 małych kabli można łatwo sprowadzić obok przewodów zasilających pod płytą zasilającą.

Aby efektywniej wykorzystać przestrzeń w maszynie, postanowiłem podzielić elektronikę na 2 główne panele:

Lewa to główna tablica sterownicza, prawa (co nazywam tablicą komunikacyjną) trzyma Xbee i chociaż nie widać tego na zdjęciu to 2 czujniki wody (do wykrywania przepełnienia) wciśnięte za nią. Na górze zegar czasu rzeczywistego (opcja dla uptime:)) i 4-kanałowa płytka przekaźników zajmująca miejsce obok pompy na dole owinięta gąbką, również trochę naklejona dla ochrony przed rezonansem.

W przypadku płytki komunikacyjnej nie zawracałem sobie głowy robieniem PCB, po prostu użyłem zwykłej płytki stykowej, ponieważ niewiele się tam dzieje. Posiada 6 połączeń z płytą główną:

Vcc (5V), GND, Xbee (TX), Xbee (RX), czujnik wody1 (dane), czujnik wody2 (dane)

Krok 5: Kontrola przepływu wody i mechanizm uzupełniania

Kontrola przepływu wody i mechanizm uzupełniania
Kontrola przepływu wody i mechanizm uzupełniania
Kontrola przepływu wody i mechanizm uzupełniania
Kontrola przepływu wody i mechanizm uzupełniania
Kontrola przepływu wody i mechanizm uzupełniania
Kontrola przepływu wody i mechanizm uzupełniania

Zaprojektowałem tę maszynę z myślą o bezpieczeństwie, uniemożliwiając atakującym/awariom spowodowanie poważnych uszkodzeń domu przez wodę, ponieważ maszyna byłaby podłączona zarówno do kranu, jak i Internetu przez całą dobę. To właśnie robi następujący obwód zabezpieczający 555 na górze elektromagnesu.

Zwróć też uwagę, że elektrozawór działa z zasilacza 12V co udało mi się jeszcze wcisnąć w spód ekspresu obok pompy i płytki przekaźników. Aby nie marnować energii, 4-kanałowa płytka przekaźnikowa przełącza zasilanie 230V bezpośrednio na zasilacz, który następnie włączy elektrozawór. Jest oczywiście kilkumikrosekundowe opóźnienie wyłączenia co trzeba obliczyć na załamanie pola magnetycznego zarówno na elektromagnesie + na przejściówce przy wyciąganiu wtyczki.

Do podłączenia zewnętrznego bloku wodnego używam standardowego gniazda 3,5 mm z długim przewodem 3m i rurką PVC o małej średnicy wychodzącą z bloku do ekspresu.

Górna część zbiornika wody jest wydrążona, aby pomieścić tę rurę, która następnie jest sprowadzana do dna zbiornika. Chciałbym zauważyć, że bardzo ważne jest, aby rurę poprowadzić do dołu z boku, bez przechodzenia przez środek i ingerowania w czujniki ultradźwiękowe.

Po włączeniu elektrozaworu obwód automatycznie wyłączy się po ~ 4 sekundach (co powinno być więcej niż wystarczającym czasem na napełnienie zbiornika do pełna) i pozostanie w tym stanie do następnego cyklu włączenia zasilania. Obwód ten jest ostatnią linią obrony przed awarią i działa całkowicie niezależnie od ekspresu. Jeśli przekaźnik w maszynie ulegnie awarii i pozostanie zamknięty, woda może zalać dom, z tym zabezpieczeniem nigdy nie może się zdarzyć.

Jeśli to nadal nie jest dla Ciebie wystarczająco dobre lub nie możesz zamknąć wody lub nie chcesz bawić się blokami wodnymi, sprawdź mój projekt WasserStation, który został zbudowany dokładnie w tym celu, aby rozszerzyć mały zbiornik na wodę w ekspresie do kawy.

Krok 6: Wykrywanie zalania

Wykrywanie zalania
Wykrywanie zalania
Wykrywanie zalania
Wykrywanie zalania
Wykrywanie zalania
Wykrywanie zalania

Istnieją 2 dodatkowe czujniki wody do ochrony:

  • Sensor1: z tyłu zbiornika do wykrywania przepełnienia zbiornika
  • Sensor2: na dole ekspresu do kawy do wykrywania przepełnienia filiżanki

Oba te czujniki wywołają przerwanie, które natychmiast odcina dopływ wody, włącza lampkę błędu i przerywa wykonywanie programu, aby zapobiec atakowi, takiemu jak zrobienie miliona kaw i zalanie domu w ten sposób. Po zamknięciu programu maszyna nie będzie już na nic reagować i należy ją ręcznie włączyć.

W przypadku, gdy zastanawiasz się, co by się stało, gdyby czujnik ultradźwiękowy został zalany (zdarzyło się to raz:))

W ten sposób przez kilka dni oddawał poziom wody, ale nawet po wyschnięciu nigdy nie był dokładny i musiałem go wymienić. Maszyna została zaprojektowana do pracy z zimną wodą z kranu, więc brak pary z gorącej może uszkodzić czujnik. Ten czujnik jest dokładny tylko do momentu, gdy poziom wody znajdzie się w odległości 2-3 cm od niego.

Eliptyczny kształt zbiornika utrudniał obliczenia poziomu wody, więc zostały one zmierzone i zakodowane w programie tak, aby odpowiadały wartościom procentowym.

Krok 7: Testowanie i montaż końcowy

Testowanie i montaż końcowy
Testowanie i montaż końcowy
Testowanie i montaż końcowy
Testowanie i montaż końcowy
Testowanie i montaż końcowy
Testowanie i montaż końcowy

Maszyna jest w stanie końcowym, prawie całkowicie ukrywając ślady jakiegokolwiek włamania, a gdyby nie było tam 3 diod LED stanu i portu debugowania USB, nie można było powiedzieć, że coś innego dzieje się w środku, podczas gdy może nawet pomieścić połączenie Wi-Fi Serwer Quake'a:)

Kiedy modyfikuję urządzenia, zawsze priorytetem jest ręczne użycie. Po zhakowaniu maszyna jest całkowicie gotowa do użytku przez każdego, tak jak była, z wyjątkiem tego, że zbiornik na wodę nie może być łatwo usunięty. O ile nie ukończysz całej części projektu dotyczącej automatyki wodnej, urządzenie można napełnić w tym momencie tylko małą kombinacją rury i lejka.

Krok 8: Kod kontroli kawy

Kod kontroli kawy
Kod kontroli kawy

Znajdź pełny kod źródłowy Arduino załączony poniżej.

Krótkie wyjaśnienie kodu:

Pętla główna wywołuje funkcję xcomm(), odpowiedzialną za przetwarzanie poleceń, zaparzenie kawy, włączenie/wyłączenie ekspresu.

Poniższy kod jest dostępny tylko w przypadku sterowania ręcznego. Zwiększa licznik statystyk, aby śledzić liczbę zrobionych kaw i automatycznie napełnia zbiornik na wodę.

Polecenia mogą być wysyłane przez Xbee lub przez port USB (Debug musi być włączony na początku). Po nawiązaniu komunikacji z dowolnej pomarańczowej diody LED miga przez sekundę, aby pokazać aktywność sieciową. Zaimplementowane są następujące polecenia:

1, CMSTAT – statystyki zapytań z maszyny

Automat przechowuje statystyki dotyczące ilości zrobionych gorących/zimnych/ręcznych kaw, a także pobiera czas pracy z RTC, który nie przelewa się po 3x dniach, więc może trwać nawet lata:P

2, CMWSTART – rozpoczyna parzenie kawy i gorących napojów gorącą wodą

3, CMCSTART – zaczyna robić mrożoną herbatę i zimne napoje zimną wodą

Procesy gorące i zimne zaczynają się od wywołania funkcji standby(), która wykonuje dalsze sprawdzenia, a następnie wyzwala naciśnięcie przycisku zasilania. Następnie program czeka na zaświecenie się zielonego światła (gdy kocioł jest rozgrzany), a następnie emuluje naciśnięcie przycisku ciepło/zimno. Potem czeka 50 sekund (co wystarcza nawet na największą filiżankę kawy), po czym wyłącza zasilanie. Nie byłoby to nawet konieczne, ponieważ ten doskonały ekspres wyłączałby się automatycznie 5 minut po zaparzeniu kawy, ale po co marnować energię? Nawiasem mówiąc, pobór mocy w trybie czuwania maszyny nawet po modyfikacji wynosi mniej niż 2 waty.

Uzupełnianie wody i bezpieczeństwo

Maszyna ta została zaprojektowana z myślą o bezpieczeństwie, aby atakujący, który przejmie kontrolę, nie mógł zalać wodą całego domu. Awaria sprzętu również nie spowoduje poważnych uszkodzeń. Obok czujników sprzętowych w kod wkładu wbudowane są zabezpieczenia. Licznik, który uruchamia procedurę ISR, jeśli maszyna nie zostanie ponownie napełniona w ciągu x sekund (może się to na przykład zdarzyć, jeśli czujnik ultradźwiękowy ulegnie awarii i zwróci 20% po x sekundach po rozpoczęciu uzupełniania).

Nie ma uwierzytelnienia, każdy może korzystać z urządzenia w zasięgu radiowym, kto zna polecenia, więc zmieniłem domyślny identyfikator Xbee piconet na coś innego, również ERR_INVALIDCMD można zakomentować, a urządzenie zignoruje wszelkie nieznane polecenia.

Robaki

Błąd podwójnej kawy: najbardziej irytujące w tym błędzie jest to, że zaczął się on pojawiać kilka miesięcy po użyciu maszyny z tym samym kodem. Po wydaniu polecenia kawy zaparzył kawę, wyłączył się i włączył ponownie i kontynuuje robienie jeszcze 1 kawy z tym samym patronem.

Debugowanie duplikacji poleceń musiałem rozpocząć z poziomu Androida, ponieważ zaimplementowałem ponowne wysyłanie do kodu w przypadku utraty pakietów. Okazało się, że ani android, oprogramowanie sterujące C, ani jądro Linux na raspi2 nie są za to odpowiedzialne, a Xbee.

Po wydaniu echa „CMCSTART”>/dev/ttyACM0 na węźle kontrolnym, wychodzi dwukrotnie na drugi koniec. Doszedłem do wniosku, że moje widmo 2,4 Ghz w moim domu zaczęło się nasycać wieloma urządzeniami radiowymi w tym zakresie, co spowodowało, że Xbee wywołał jakiś rodzaj ponownego wysyłania w warstwie radiowej, a dane zostały wysłane dwukrotnie (nie zawsze). Gdy pierwsze polecenie pojawiło się w maszynie, funkcja xcomm() zaczęła je przetwarzać, jednak zaraz po tym pojawiła się druga, która czekała w buforze Xbees i gdy pętla się skończyła, zaczęła przetwarzać drugie polecenie. Aby obejść ten problem wprowadziłem w kodzie 3 progi uniemożliwiające zrobienie więcej niż 1 kawy w 2 minuty. Istnieje również limit CMSTAT, ale aby nie zakłócać kodu kontrolnego C/Android, po prostu blokuje odpowiedzi przez 2 sekundy.

Ostatni próg został ustawiony dla ręcznego licznika kawy, ponieważ po osiągnięciu stanu gotowości (kocioł rozgrzany, zielone światło) zarejestrowało to zielone zdarzenie setki razy podbijając licznik kawy.

Krok 9: Rozważania projektowe i końcowe przemyślenia

Po wielu kłopotach z komunikacją Xbee nie poleciłbym Xbee do tego projektu. Albo użyj standardowego taniego radia 433 MHz z VirtualWire i obniżonym Bps dla stabilności, albo wbuduj Raspberry PI Zero z połączeniem Wi-Fi bezpośrednio do ekspresu do kawy.

Jak pokazuje data, jest to stary projekt, więc przepraszam za brak drobnych szczegółów, takich jak połączenie obwodu sterującego z precyzyjnymi nóżkami na płycie głównej. Ten projekt wymaga pewnego poziomu wiedzy technicznej, aby wykonać go samodzielnie. Jeśli znajdziesz jakieś błędy/problemy lub chciałbyś przyczynić się do powstania tego samouczka, daj mi znać.

Oprogramowanie sterujące, metody sterowania głosowego to kolejna część, która umożliwi przygotowanie kawy za pomocą polecenia głosowego, zanim jeszcze wstaniesz z łóżka.

Właśnie ukończyłem dokumentację mojego systemu magazynowania wody (WasserStation) i zaktualizowałem kod CoffeeControlCode do najnowszej wersji, która obejmuje również automatyczne uzupełnianie. Jeśli użyjesz tej samej maszyny do budowy, wkład będzie działał bezbłędnie (bez żadnych modyfikacji kodu), ponieważ poziom wody został skalibrowany do zbiornika wody Circolo.

Zalecana: