Cuprins:

JavaStation (filtru de cafea IoT complet automat cu auto-reumplere): 9 pași (cu imagini)
JavaStation (filtru de cafea IoT complet automat cu auto-reumplere): 9 pași (cu imagini)

Video: JavaStation (filtru de cafea IoT complet automat cu auto-reumplere): 9 pași (cu imagini)

Video: JavaStation (filtru de cafea IoT complet automat cu auto-reumplere): 9 pași (cu imagini)
Video: Sun javastation "krups" booting Debian GNU/Linux 2024, Iulie
Anonim
JavaStation (filtru de cafea IoT complet automat cu auto-reumplere)
JavaStation (filtru de cafea IoT complet automat cu auto-reumplere)
JavaStation (filtru de cafea IoT complet automat cu auto-reumplere)
JavaStation (filtru de cafea IoT complet automat cu auto-reumplere)
JavaStation (filtru de cafea IoT complet automat cu auto-reumplere)
JavaStation (filtru de cafea IoT complet automat cu auto-reumplere)

Scopul acestui proiect a fost de a realiza o filtru de cafea controlat complet, automat, care să se reumplă automat cu apă și tot ce trebuie să faceți este să înlocuiți clienții și să vă beți cafeaua;)

Pasul 1: Introducere

Introducere
Introducere

Deoarece acesta a fost cel de-al doilea mod de cafea, am învățat multe în acest proces, mai ales că cu cât mașina este mai complexă, cu atât mai multe probleme / bug-uri veți întâlni în timpul funcționării de zi cu zi. Mașina anterioară a fost doar un simplu aparat de cafea vechi cu 1 comutator, cu un mod de releu.

Circolo (versiunea complet automată) este partea superioară a mașinii premium a liniei Dolce Gusto. A trebuit să petrec ore în șir căutând mașina potrivită, deoarece toate celelalte mașini din această serie folosind maneta mecanică superioară pentru a comuta între fluxurile de apă rece și caldă, așa cum se arată în imagine.

Pasul 2: Alegeți mașina potrivită

Alegeți mașina potrivită
Alegeți mașina potrivită

Mașina de bază nu este doar complet automată, dar are caracteristici remarcabile, cum ar fi oprirea automată după 5 minute și amintirea până la ultima cantitate de cafea (ceea ce va face lucrurile mult mai ușoare mai târziu în modding). Funcționarea de bază a mașinii:

1, butonul de alimentare apăsat

2, butonul de apă rece apăsat (va dispersa imediat apa în ceașcă)

3, butonul de apă fierbinte apăsat (va încălzi cazanul ~ 20-60 sec și începe să elibereze apă fierbinte în ceașcă) Lumina de alimentare va clipi roșu în timpul perioadei de așteptare, apoi va deveni permanent verde când cazanul este gata.

Această mașină are, de asemenea, capacitatea de a detecta următoarele erori:

Rezervorul de apă este gol

Suportul paharului nu este în poziție

În ambele cazuri, lumina de alimentare va pâlpâi între roșu / verde.

Pasul 3: Modificări hardware

Modificări hardware
Modificări hardware

În această scriere nu voi detalia detaliile demontării și reasamblării carcasei, deoarece există videoclipuri despre aceasta pe YouTube. Microprocesorul principal este ascuns chiar sub panoul principal unde sunt cele 2 comutatoare. Cazanul este în partea dreaptă a carcasei separat de orice altceva, pompa și panoul de alimentare sunt în partea stângă.

Mașina de cafea este un mediu greu pentru electronice, niciuna dintre părțile laterale nu este perfect potrivită pentru a integra un circuit. Dreapta de la cazan are mai mult spațiu, dar vă veți ocupa de căldură, evident, circuitul nu ar putea atinge placa cazanului sau nici măcar să fie aproape de acesta. Am ales partea de alimentare / pompă, dar aici trebuie să vă confruntați cu o rezonanță puternică provenită din funcționarea pompei cu membrană, care poate distruge circuitul de comandă / face ca firele să se scurgă din conectorii lor în timp.

Panoul de alimentare nu conține nimic util, dar poate fi utilizat pentru a lipi un + 5V stabil (încă un deget mare pentru această mașină) care poate fi conectat direct la pinul VIN al Arduino ocolind regulatorul de tensiune de la bord.

Lista rapidă de hardware (nu este lista completă, nu include elementele de bază):

  1. Dolce Gusto Circulo versiune completă automată
  2. Modul de releu 5 canale 4 canale cu optocuplator pentru PIC AVR DSP
  3. Arduino Micro (vă sugerez să utilizați SparkFun Pro Micro sau mai nou în viitor)
  4. Fototranzistor optocuplatoare 2PCS 4n35 FSC
  5. Solenoid electric de 1/2 "pentru apă aer N / C DC închis în mod normal 12V
  6. Modul cu ultrasunete HC-SR04 Senzor de măsurare a traductorului de distanță (cumpărați câteva extras, veți vedea mai târziu de ce)
  7. 2 buc Modul senzor de detectare a umidității picăturilor de ploaie Detecție a ploii pentru Arduino
  8. 1 Xbee
  9. Fitinguri pentru țevi pentru blocuri de apă (pot varia în funcție de casă, cel mai bine este să-l cumpărați în magazinul de feronerie și să-l puneți împreună împreună înainte de a cumpăra)

Pasul 4: Conexiuni principale și placa controlerului

Conexiuni principale și placa controlerului
Conexiuni principale și placa controlerului
Conexiuni principale și placa controlerului
Conexiuni principale și placa controlerului
Conexiuni principale și placa controlerului
Conexiuni principale și placa controlerului

Următoarele puncte de circuit trebuie conectate:

1, buton fierbinte

2, Buton rece

3, led roșu

4, led verde

5, butonul de pornire principal

6, GND partajat

Din păcate, mi-am pierdut notele / imaginile despre unde să le lipesc pe tablă, dar toate pot fi urmărite cu ușurință cu un multimetru (folosiți doar modul de testare a diodei pentru a urmări firele înapoi). Lipirea nu a fost prea grea, alegeți puncte cu picioare SMD și lipiți firele acolo.

LED-urile roșu / verde sunt situate ambele unul lângă celălalt la comutatorul de alimentare. Acestea sunt necesare pentru a determina stările mașinii (pornite, gata pentru prepararea cafelei (cazan încălzit), eroare). Le-am scos direct de pe placa principală, pentru că este dificil să te joci cu micul circuit din jurul comutatorului de alimentare.

Foloseam optocuploarele 4N35 pentru a interacționa în siguranță cu Arduino și pentru a citi stările LED-urilor. Ideea inițială a fost de a folosi 5 dintre ele și de a face atât citirile, cât și comenzile comutatorului (faceți un circuit complet silențios). Din păcate, acest cip nu a putut genera o rezistență suficient de mică pentru a emula o apăsare de buton, așa că am fost forțat să folosesc relee. Am folosit modulul generic de releu cu 4 canale ce aveam în mână, dar dacă ar trebui să refac acest proiect, aș folosi doar relee mici Reed (SIP-1A05 Reed Switch Relay cu diode interne flyback) care pot fi conectate direct la ieșirea Arduino pini (~ 7mA sarcină), astfel încât totul să poată fi pus pe o structură de placă cu 2 niveluri.

Cele 5 cabluri mici pot fi coborate cu ușurință lângă cablurile de alimentare de sub placa de alimentare.

Pentru a utiliza spațiul mai eficient în mașină, am decis să împart dispozitivele electronice în 2 panouri majore:

Stânga este placa principală de control, dreapta (ceea ce eu numesc placa de comunicare) ține Xbee și, deși nu este afișat pe imagine, cei 2 senzori de apă (pentru detectarea revărsării) strânși în spatele ei. În partea de sus, ceasul în timp real (opțional pentru timp de funcționare:)) și placa de releu cu 4 canale, care se află lângă pompa din partea de jos, înfășurată în burete, au fost, de asemenea, lipite puțin pentru a fi protejate de rezonanță.

Pentru placa de comunicare, nu m-am deranjat să fac PCB doar să folosească o placă obișnuită, deoarece nu se întâmplă prea multe acolo. Are 6 conexiuni la placa principală:

Vcc (5V), GND, Xbee (TX), Xbee (RX), senzor de apă1 (date), senzor de apă2 (date)

Pasul 5: Controlul debitului de apă și mecanismul de reumplere

Controlul debitului de apă și mecanismul de reumplere
Controlul debitului de apă și mecanismul de reumplere
Controlul debitului de apă și mecanismul de reumplere
Controlul debitului de apă și mecanismul de reumplere
Controlul debitului de apă și mecanismul de reumplere
Controlul debitului de apă și mecanismul de reumplere

Am proiectat această mașină cu siguranță în minte, făcând imposibil ca atacatorii / defecțiunile să provoace daune grave cauzate de apă în casă, deoarece mașina ar fi conectată atât la robinet, cât și la Internet 24/7. Aceasta este ceea ce face următorul circuit de protecție 555 deasupra solenoidului.

De asemenea, rețineți că solenoidul funcționează de la o sursă de alimentare de 12V ceea ce am reușit să strâng în continuare în partea de jos a aparatului de cafea de lângă placa de pompare și releu. Pentru a nu risipi energia, placa de releu cu 4 canale comută alimentarea principală de 230V direct la adaptor, care va porni apoi solenoidul. Există, desigur, o întârziere de oprire a microsecundelor, ceea ce trebuie calculat pentru prăbușirea câmpului magnetic, atât pe solenoid + pe adaptor, la tragerea fișei.

Folosesc o mufă standard de 3,5 mm pentru a conecta blocul de apă extern cu un fir lung de 3 m și o țeavă din PVC cu diametru mic care iese din blocul care merge la filtru de cafea.

Partea superioară a rezervorului de apă este forată pentru a găzdui această conductă care apoi a fost coborâtă în partea inferioară a rezervorului. Aș observa că este foarte important să alimentați conducta până în partea inferioară, fără a trece prin mijloc și să interferați cu senzorii cu ultrasunete.

După ce solenoidul alimentat de pe circuit îl va opri automat după ~ 4 secunde (care ar trebui să fie mai mult decât suficient timp pentru a umple rezervorul până la plin) și rămâne în această stare până la următorul ciclu de pornire. Acest circuit este ultima linie de apărare împotriva defecțiunilor și funcționează complet independent de aparatul de cafea. Dacă releul din mașină ar eșua și ar rămâne închis, apa ar putea inunda casa, cu această protecție nu se poate întâmpla niciodată.

Dacă acest lucru nu este încă suficient de bun pentru dvs. sau este imposibil să închideți apa sau nu doriți să vă lăudați cu blocuri de apă, verificați proiectul meu WasserStation, care a fost construit exact pentru a extinde micul rezervor de apă al aparatului de cafea.

Pasul 6: detectarea inundațiilor

Detectarea inundațiilor
Detectarea inundațiilor
Detectarea inundațiilor
Detectarea inundațiilor
Detectarea inundațiilor
Detectarea inundațiilor

Există 2 senzori suplimentari de apă pentru protecție:

  • Senzor 1: în partea din spate a rezervorului pentru detectarea revărsării din rezervor
  • Senzor2: în partea de jos a aparatului de cafea pentru detectarea revărsării cupei

Ambii senzori vor declanșa o întrerupere care oprește imediat apa, aprinde lumina de eroare și va întrerupe execuția programului pentru a preveni un atac, cum ar fi producerea unui milion de cafele și inundarea casei în acest fel. După renunțarea la program, mașina nu va mai răspunde la nimic și trebuie să fie motorizată manual.

În cazul în care vă întrebați ce s-ar întâmpla dacă senzorul cu ultrasunete ar fi inundat (s-a întâmplat o dată:))

A redat nivelul apei ca acesta timp de câteva zile, dar chiar și după ce s-a uscat, nu va mai fi niciodată corect și a trebuit să-l înlocuiesc. Mașina a fost proiectată să funcționeze din apa rece de la robinet, astfel încât aburul din fierbinte să nu deterioreze senzorul. Acest senzor este precis doar până când nivelul apei este la 2-3 cm de el.

Forma eliptică a rezervorului a făcut dificile calculele nivelului apei, astfel încât acestea au fost măsurate și codificate în program pentru a corespunde procentelor.

Pasul 7: Testare și asamblare finală

Testare și asamblare finală
Testare și asamblare finală
Testare și asamblare finală
Testare și asamblare finală
Testare și asamblare finală
Testare și asamblare finală

Mașina se află în starea finală, ascunzând aproape complet urmele oricărui hacking și dacă cele 3 LED-uri ale indicatorului de stare și portul de depanare USB nu ar fi acolo nu ai putea spune că se întâmplă altceva în interior, în timp ce ar putea adăposti chiar și o conexiune Wifi Server cutremur:)

Când modific dispozitivele, păstrez întotdeauna utilizarea manuală ca prioritate. După piraterie, mașina este complet utilizabilă de oricine așa cum a fost, cu excepția rezervorului de apă care nu poate fi îndepărtat cu ușurință. Dacă nu terminați partea completă de automatizare a apei din proiectare, mașina poate fi umplută doar în acest moment cu o combinație mică de țeavă + pâlnie.

Pasul 8: Cod de control al cafelei

Codul de control al cafelei
Codul de control al cafelei

Găsiți codul sursă Arduino complet atașat mai jos.

Scurtă explicație a codului:

Bucla principală apelează funcția xcomm (), responsabilă cu procesarea comenzilor, prepararea cafelei, pornirea / oprirea aparatului.

Codul de dedesubt este atins numai în cazul controlului manual. Mărește un contor statistic pentru a urmări câte cafele au fost făcute și umple rezervorul de apă automat.

Comenzile pot fi trimise prin Xbee sau prin portul USB (Debugul trebuie activat la început). Când comunicarea vine de la oricare dintre ledurile portocalii clipește o secundă pentru a arăta activitatea în rețea. Sunt implementate următoarele comenzi:

1, CMSTAT - statistici de interogare de pe aparat

Aparatul stochează statistici despre câte cafele fierbinți / reci / manuale au fost făcute și obține, de asemenea, timpul de funcționare de la RTC, care nu se revarsă după 3x zile, deci ar putea crește până la ani: P

2, CMWSTART - începe să facă cafea și băuturi calde cu apă fierbinte

3, CMCSTART - începe să facă ceai cu gheață și băuturi reci cu apă rece

Procesele la cald și la rece încep cu apelarea funcției standby () care efectuează verificări suplimentare, apoi declanșează o apăsare a butonului de alimentare. După aceasta, programul așteaptă lumina verde (când cazanul este încălzit), apoi emulează apăsarea butonului cald / rece. După aceasta, așteaptă 50 de secunde (ceea ce este mai mult decât suficient chiar și pentru cea mai mare ceașcă de cafea), apoi oprește alimentarea. Acest lucru nu ar fi nici măcar necesar, deoarece această mașină excelentă se va opri automat la 5 minute după prepararea cafelei, dar de ce să risipim energia? Apropo, consumul de energie de așteptare al mașinii chiar și după modificare este mai mic de 2 wați.

Umplere și securitate a apei

Această mașină a fost proiectată având în vedere securitatea, așa că ar fi imposibil ca un atacator care câștigă controlul să inunde toată casa cu apă. Nici o defecțiune hardware nu ar duce la daune grave. Lângă senzorii hardware există protecții încorporate în cod pentru reumplere. Un contor care declanșează rutina ISR dacă mașina nu este reumplută în x secunde (acest lucru se poate întâmpla, de exemplu, dacă senzorul cu ultrasunete ar funcționa defectuos și ar da 20% după x secunde odată ce reîncărcarea este inițiată).

Nu există autentificare, oricine poate folosi aparatul în raza radio care știe comenzile, așa că am schimbat ID-ul piconet Xbee implicit în altceva, de asemenea, ERR_INVALIDCMD poate fi comentat și aparatul va ignora orice comandă necunoscută.

Gandaci

Dublu bug de cafea: cel mai enervant lucru despre acest bug este că a început să se întâmple câteva luni după ce ați folosit aparatul cu același cod. După ce a fost emisă comanda pentru cafea, a făcut cafeaua, s-a oprit și a pornit din nou și continuă să facă încă o cafea cu același patroon.

A trebuit să încep depanarea duplicării comenzilor de la nivelul Android, deoarece am implementat re-trimiterea la cod în caz de pierdere de pachete. S-a dovedit că nici androidul, software-ul de control C sau kernel-ul Linux de pe raspi2 nu au fost responsabile pentru acest lucru, ci mai degrabă Xbee.

După emiterea ecoului „CMCSTART”> / dev / ttyACM0 pe nodul de control, acesta iese de două ori la celălalt capăt. Am ajuns la concluzia că spectrul meu de 2,4 Ghz din casa mea a început să se satureze din numeroasele dispozitive radio din această gamă, ceea ce a determinat un Xbee să invoce un fel de reîntoarcere în stratul radio și datele au fost trimise de două ori (nu întotdeauna). Odată ce prima comandă a intrat în mașinile funcția xcomm () a început să o proceseze, totuși a doua a intrat imediat după care aștepta în bufferul Xbees și când bucla s-a terminat a început să proceseze a doua comandă. Pentru a rezolva această problemă, am introdus 3 praguri în cod pentru a face imposibilă prepararea a mai mult de 1 cafea în 2 minute. De asemenea, există o limită pentru CMSTAT, dar pentru a nu interfera cu codul de control C / Android, acesta va șterge pur și simplu răspunsurile timp de 2 secunde.

Ultimul prag a fost introdus pentru ghișeul manual de cafea, deoarece odată ce mașina a ajuns la starea gata (cazan încălzit, lumină verde) a înregistrat evenimentul verde de sute de ori ridicând numărul de cafea.

Pasul 9: Considerații de proiectare și gânduri finale

După multe probleme din comunicarea Xbee, nu aș recomanda Xbee pentru acest proiect. Fie utilizați radioul standard ieftin de 433Mhz cu VirtualWire și Bps redus pentru stabilitate, fie încorporați un Raspberry PI Zero cu conexiune Wifi direct în aparatul de cafea.

După cum arată data, este un proiect vechi, așa că îmi cer scuze pentru lipsa unor mici detalii, cum ar fi conexiunea de la circuitul de control la picioarele precise ale pinului de pe placa de bază. Acest proiect necesită un anumit nivel de cunoștințe tehnice pentru a-l face singur. Dacă găsiți erori / probleme sau doriți să contribuiți la acest tutorial, vă rugăm să ne anunțați.

Software-ul de control, metodele de control vocal este pentru o altă parte, care va face posibilă pregătirea cafelei dvs. doar printr-o comandă vocală, înainte chiar să ieșiți din pat.

Acum am completat documentația sistemului meu de stocare a apei (WasserStation) și am actualizat CoffeeControlCode la cea mai recentă versiune, care include și reumplerea automată. Dacă utilizați aceeași mașină pentru construcție, reumplerea va funcționa perfect (fără nicio modificare a codului), deoarece nivelurile de apă au fost calibrate la rezervorul de apă al Circolo.

Recomandat: