Orodha ya maudhui:
- Vifaa
- Hatua ya 1: Kuchagua Vifaa
- Hatua ya 2: Kubuni Mfumo
- Hatua ya 3: Kushughulikia Hali za Dharura
- Hatua ya 4: Kuendesha Mfumo 24/7
- Hatua ya 5: Ufuatiliaji wa Wingu
- Hatua ya 6: Ni Kazi
Video: Pampu ya mashine ya kahawa mahiri inayodhibitiwa na Raspberry Pi & HC-SR04 Sensor ya Ultrasonic na Cloud4RPi: Hatua 6
2024 Mwandishi: John Day | [email protected]. Mwisho uliobadilishwa: 2024-01-30 12:51
Kwa nadharia, kila wakati unapoenda kwa mashine ya kahawa kwa kikombe chako cha asubuhi, kuna nafasi moja tu kati ya ishirini itabidi ujaze tangi la maji. Katika mazoezi, hata hivyo, inaonekana kuwa mashine kwa namna fulani hupata njia ya kuweka kazi hii kila wakati kwako. Kadri unavyotaka kahawa, ndivyo unavyoweza kupata ujumbe wa kutisha wa "jaza tanki la maji". Wenzangu wanahisi vivyo hivyo juu ya hili. Kuwa wajinga kwamba sisi ni, tuliamua kutekeleza teknolojia ambayo ingekomesha hii.
Vifaa
Vifaa vyetu
Tuna mashine ya kahawa ya SAECO Aulika Focus. Hadi leo, tulitumia pampu ya mkono kujaza tangi la maji la mashine kutoka kwenye chupa ya maji ya kawaida ya 5 Gallon (19L).
Malengo yetu
- Tumia pampu ya umeme inayoendeshwa na aina fulani ya kidhibiti au kompyuta ndogo kupitia relay.
- Kuwa na njia ya kupima kiwango cha maji kwenye tangi la mashine ya kahawa ili mfumo wetu ujue wakati wa kuijaza tena.
- Kuwa na njia za kudhibiti mfumo, ikiwezekana kwa wakati halisi kutoka kwa kifaa cha rununu.
- Pokea arifa (kupitia Slack au huduma kama hiyo) ikiwa chochote kitatokea vibaya na mfumo.
Hatua ya 1: Kuchagua Vifaa
Pampu
Utafutaji wa haraka wa wavuti utaonyesha mifano kadhaa ya pampu ya umeme iliyoundwa kwa chupa yako ya maji ya chaguo. Pampu kama hizo kawaida hudhibitiwa na swichi ya ON / OFF (kwa mfano, Hot Frost A12 au SMixx ХL-D2). Hapa kuna pampu tuliyochagua kwa mradi wetu.
Kifaa cha Mdhibiti
Tulijaribu vifaa kadhaa lakini tukakaa kwenye Raspberry Pi kwa sababu ya faida zifuatazo:
- Ina GPIO ambayo inatuwezesha kuunganisha sensorer ya ukaribu
- Inasaidia Python
Tuliweka toleo jipya la Raspbian Buster Lite na kila kitu kinachohitajika kuendesha Python 3.
Jinsi Tunavyogeuza pampu
Ili kudhibiti nguvu, tulichagua nguvu ya kati (12V / 2A) hali ya nguvu inayobadilishwa inayofaa kwa kubadilisha mbadala. Relay inaunganisha pampu kwenye duka na inadhibitiwa na pini ya dijiti ya Raspberry Pi.
Jinsi Tunavyoangalia Kiwango cha Maji
Ilikuwa muhimu kwetu kutobadilisha ujenzi wa mashine ya kahawa, kwa hivyo tuliamua kutumia HC-SR04 sensor ya ukaribu wa Ultrasonic kupima kiwango cha maji.
Tulichapisha 3d kifuniko cha tanki la maji na mashimo mawili kwa watoaji wa sensa. Tulipata kwa urahisi maktaba ya GitHub kwa sensa. Wakati huu maandalizi yote yamekamilika.
Hatua ya 2: Kubuni Mfumo
Mantiki ya Mfumo
Mfumo umeundwa kwa kuzingatia mantiki rahisi ifuatayo:
- Mfumo hufuatilia kila wakati umbali kati ya sensorer na uso wa maji.
- Wakati wowote mabadiliko katika umbali yanapita juu ya kizingiti cha thamani, mfumo hutuma habari juu ya hali yake kwa wingu.
- Ikiwa umbali huenda juu ya kiwango cha juu kinachoruhusiwa (tanki haina kitu), mfumo huwasha pampu na kuizima mara moja umbali ni chini ya kiwango cha chini kinachoruhusiwa.
- Wakati wowote hali ya mfumo inabadilika (kwa mfano, pampu inapoamilisha), inaarifu wingu.
Ikiwa kuna kosa, arifa hutumwa kwa kituo cha Slack.
Wakati mashine ya kahawa iko wavivu, mfumo hupiga huduma ya wingu na data ya uchunguzi mara moja kila dakika. Kwa kuongeza, hutuma hali yake kwa wingu kila dakika 5.
Wakati pampu inafanya kazi, mfumo hutuma data mara kwa mara lakini si zaidi ya mara moja kila nusu sekunde.
def send (wingu, vigeuzi, dist, makosa_code = 0, nguvu = Uongo): pump_on = is_pump_on () asilimia = calc_water_level_percent (dist) vigeuzi ['Umbali'] ['thamani'] = vigeuzi vya mbali ['WaterLevel'] [' thamani '] = asilimia anuwai
sasa = wakati ()
saa ya mwisho ya kutuma_lakini ikiwa ya nguvu au ya sasa - wakati wa mwisho_kutuma> MIN_SEND_INTERVAL: masomo = cloud.read_data () cloud.publish_data (usomaji) last_sending_time = sasa
Kufanya kazi na Pump
Tunafafanua kanuni zifuatazo kama msingi wa mantiki ya utendaji wa pampu.
Pini # GPIO (BCM) GPIO_PUMP = 4 GPIO_TRIGGER = 17 GPIO_ECHO = 27
# Pump
START_PUMP = 1 STOP_PUMP = 0 PUMP_BOUNCE_TIME = 50 # milliseconds PUMP_STOP_TIMEOUT = sekunde #
MUHIMU: Ikiwa utatumia Pin 4, usisahau kulemaza chaguo la 1-Wire raspi-config kuzuia mizozo.
Wakati wa kuanza kwa programu, tunasajili kupigwa tena na kuweka hali ya kwanza KUZIMA.
Hapa kuna nambari ya kazi inayobadilisha pampu:
def toggle_pump (value): ikiwa pump_disabled: return if is_pump_on ()! = value: log_debug ("[x]% s"% ('START' ikiwa ni thamani nyingine 'STOP')) GPIO.setup (GPIO_PUMP, GPIO. OUT) Pato la GPIO (GPIO_PUMP, thamani) # Anza / Acha kumwagika
Kama inavyofafanuliwa katika nambari ya kuanza hapo juu, wakati relay inawasha, simu inayofuata inaitwa:
pump_on = Fal def def pump_relay_handle (pin): global pump_on pump_on = GPIO.input (GPIO_PUMP) log_debug ("Uwasilishaji wa pampu umebadilishwa kuwa% d"% pump_on)
Katika kupigiwa tena simu, tunaokoa hali ya sasa ya pampu kuwa ya kutofautisha. Katika kitanzi kikuu cha programu, tunaweza kugundua wakati pampu inapogeuza kama inavyoonyeshwa hapa chini:
def is_pump_on (): pump_on kimataifa kurudi pump_on
ikiwa GPIO.event_detected (GPIO_PUMP):
is_pouring = is_pump_on () #… log_debug ('[!] tukio la Pump limegunduliwa:% s'% ('On' if is_pouring other 'Off')) tuma (wingu, vigeuzi, umbali, nguvu = Kweli)
Kupima Umbali
Ni rahisi sana kupima umbali kuelekea uso wa maji kwa kutumia sensor ya ukaribu wa ultrasonic. Katika hazina yetu, tulishiriki hati kadhaa za chatu ambazo hukuruhusu kujaribu sensa.
Katika matumizi halisi, usomaji wa sensorer unaweza kubadilika kwa sababu ya athari ya kugundua ya sensorer na oscillations ya maji. Katika hali nyingine, usomaji unaweza kukosa kabisa. Tulitekeleza darasa la BounceFilter ambalo hukusanya N maadili ya hivi karibuni, hutupa kilele na kuhesabu wastani wa vipimo vilivyobaki. Mchakato wa kipimo unatekelezwa na algorithm ifuatayo ya asynchronous.
# Huweka vipimo vya sensa ya mwisho kusoma = BounceFilter (size = 6, discard_count = 1)
kusoma_kukamilika = kufunga.
def sub_for_distance ():
kusoma_kamilika.safisha () nyuzi = kukaza nyuzi. Thread (target = read_distance) thread.start ()
ikiwa sio kusoma_kamilisho.ngojea (MAX_READING_TIMEOUT):
log_info ('Muda wa sensa ya kusoma') rudisha Hakuna usomaji wa kurudi.avg ()
def kusoma_distance ():
jaribu: value = hcsr04.raw_distance (sample_size = 5) rounded = value if value is none else round (value, 1) readings.: kusoma_kamilisho.set ()
Unaweza kupata utekelezaji kamili wa vichungi kwenye vyanzo.
Hatua ya 3: Kushughulikia Hali za Dharura
Je! Ikiwa sensor imeungua, au imeanguka, au inaashiria eneo lisilo sahihi? Tulihitaji njia ya kuripoti kesi kama hizo ili tuweze kuchukua hatua za mikono.
Ikiwa sensor inashindwa kutoa usomaji wa umbali, mfumo hutuma hali iliyobadilishwa kwenye wingu na hutoa arifa inayofanana.
Mantiki inaonyeshwa na nambari hapa chini.
umbali = subiri_kwa_daraja () # Soma kina cha maji cha sasa ikiwa umbali sio: log_error ('Hitilafu ya umbali!') notify_in_background (calc_alert (SENSOR_ERROR)) tuma (wingu, vigeuzi, umbali, makosa_code = SENSOR_ERROR, nguvu = Kweli)
Tuna kiwango cha maji cha kufanya kazi ambacho kinapaswa kudumishwa wakati sensor iko mahali pake. Tunajaribu ikiwa kiwango cha maji cha sasa kiko katika safu hii:
# Umbali kutoka kwa sensorer hadi kiwango cha maji # kulingana na tanki la maji la mashine ya kahawa MIN_DISTANCE = 2 # cm MAX_DISTANCE = 8 # cm
Umbali uko nje ya anuwai inayotarajiwa: usianze kumwagika
ikiwa umbali> MAX_DISTANCE * 2: log_error ('Umbali haupo mbali:%.2f'% umbali) endelea
Tunazima pampu ikiwa inafanya kazi wakati hitilafu ilitokea.
ikiwa ni_pump_on () na prev_distance <STOP_PUMP_DISTANCE + DISTANCE_DELTA: log_error ('[!] Kituo cha dharura cha pampu. Hakuna ishara kutoka kwa sensor ya umbali')
geuza_bomba (STOP_PUMP)
Tunashughulikia kesi hiyo wakati chupa inaisha maji. Tunaangalia ikiwa kiwango cha maji hakibadilika wakati pampu inaendesha. Ikiwa ndivyo, mfumo unasubiri kwa sekunde 5 na kisha uangalie ikiwa pampu imezimwa. Ikiwa halijafanya hivyo, basi mfumo hutumia kuzima pampu ya dharura na kutuma arifa ya kosa.
PUMP_STOP_TIMEOUT = 5 # secsemergency_stop_time = Hamna
def set_emergency_stop_time (sasa, ni_kumwaga):
dharura ya kimataifa_wacha_wakati wa dharura_wacha_wakati = sasa + PUMP_STOP_TIMEOUT ikiwa / ni_mwagiliaji mwingine Hakuna
def check_water_source_empty (sasa):
rudisha wakati wa dharura_wacha_na sasa> muda wa dharura_wacha
# --------- kitanzi kuu -----------
ikiwa GPIO.event_detected (GPIO_PUMP): is_pouring = is_pump_on () set_emergency_stop_time (sasa, ni_mwagika) #…
pampu_yalemavu
ikiwa check_water_source_empty (sasa): log_error ('[!] Kituo cha dharura cha pampu. Chanzo cha maji ni tupu') toggle_pump (STOP_PUMP) pump_disabled = True
Hapo juu ni mfano wa kumbukumbu ya ujumbe uliozalishwa wakati wa kituo cha dharura.
Hatua ya 4: Kuendesha Mfumo 24/7
Nambari iliyo kwenye kifaa imetatuliwa na inaendesha bila shida. Tulizindua kama huduma, kwa hivyo inaanza tena ikiwa Raspberry Pi itafunguliwa upya. Kwa urahisi, tuliunda Makefile ambayo husaidia kwa kupelekwa, kuendesha huduma na magogo ya kutazama.
. PHONY: sakinisha run log status start deploy MAIN_FILE: = coffee-pump / main.py SERVICE_INSTALL_SCRIPT: = service_install.sh SERVICE_NAME: = coffee-pump.service
sakinisha:
chmod + x $ (SERVICE_INSTALL_SCRIPT) sudo./$ (SERVICE_INSTALL_SCRIPT) $ (MAIN_FILE)
kukimbia:
sudo python3 $ (MAIN_FILE)
Anza:
Sudo systemctl kuanza $ (SERVICE_NAME)
hali:
hali ya sudo systemctl $ (SERVICE_NAME)
simama:
Sudo systemctl acha $ (SERVICE_NAME)
logi:
sudo journalctl -u kahawa-pampu - tangu leo
kupeleka:
rsync -av kahawa-pampu sensor-kuanzisha Makefile *.sh pi@XX. XX. XXX. XXX: ~ /
Unaweza kupata faili hii na hati zote zinazohitajika katika hazina yetu.
Hatua ya 5: Ufuatiliaji wa Wingu
Tulitumia Cloud4RPi kutekeleza jopo la kudhibiti. Kwanza tuliongeza vilivyoandikwa kuonyesha mifumo muhimu ya mifumo.
Kwa njia, wijeti ya ubadilishaji wa STATUS inaweza kutumia miradi tofauti ya rangi kulingana na thamani yake (angalia picha hapo juu).
Tuliongeza wijeti ya chati kuonyesha data yenye nguvu. Katika picha hapa chini unaweza kuona wakati pampu ILIYOWASHWA na KUZIMA na viwango vya maji husika.
Ikiwa unachambua urefu wa muda mrefu, unaweza kuona kilele - ndio wakati pampu ilikuwa ikiendesha.
Cloud4RPi pia hukuruhusu kuweka viwango tofauti vya kulainisha.
Hatua ya 6: Ni Kazi
Inafanya kazi! Jopo la kudhibiti kwa jumla linaonekana kama inavyoonyeshwa hapa chini.
Hivi sasa, pampu yetu ya moja kwa moja imekuwa ikiendesha kwa wiki kadhaa na tunachohitaji kufanya ni kuchukua nafasi ya chupa za maji. Nambari kamili ya mradi wetu inapatikana katika hazina yetu ya GitHub.
Ilipendekeza:
$ 14 ya kisasa ya Kahawa ya kusaga Kahawa: Hatua 6
$ 14 ya kisasa ya Kahawa ya kusaga Kahawa: Mradi huu ni maendeleo ya $ 7 ya Kahawa ya kusaga Kahawa Iliyoagizwa nilichapisha miaka michache iliyopita. Kadiri wakati unavyoendelea, ndivyo pia haja ya grinder ya kahawa ya kisasa zaidi. Sawa na kile nilichosema katika Mwongozo wa mwisho, lengo la hii
Mashine ya Kahawa Mahiri - Sehemu ya Mazingira ya SmartHome: Hatua 4
Mashine ya Kahawa mahiri - Sehemu ya Mazingira ya SmartHome: Mashine ya kahawa iliyochakachuliwa, ikaifanya kuwa sehemu ya Mazingira ya SmartHome Nina Mashine nzuri ya zamani ya Delonghi (DCM) (sio kukuza na inataka iwe "smart". Kwa hivyo, niliidanganya kwa kufunga ESP8266 moduli iliyo na kiunga kwa ubongo wake / microcontroller kwa kutumia
Kahawa ya Mashine ya Kahawa na Raspberry Pi na Karatasi za Google: Hatua 5
Kahawa ya Mashine ya Kahawa iliyo na Raspberry Pi na Karatasi za Google: Hii inayoweza kufundishwa itakuonyesha jinsi ya kujenga tracker ya Raspberry Pi-based kwa mashine ya kahawa iliyoshirikiwa katika nafasi yako ya ofisi. Kutumia onyesho la OLED ya tracker na swichi za mitambo, watumiaji wanaweza kuingia kwenye matumizi ya kahawa, angalia usawa wao na
Jedwali la Kahawa mahiri: Hatua 14 (zilizo na Picha)
Jedwali la Kahawa ya Smart: Hi Makers, Tuko katika furaha ya kufanya mradi ambao umekuwa akilini mwetu kwa muda mrefu na kushiriki nawe. Jedwali la Kahawa mahiri. Kwa sababu meza hii ni nzuri sana. Huangazia mazingira yako kulingana na uzito wa kinywaji chako
Mashine ya Kahawa Iliyowezeshwa ya IoT: Hatua 9 (na Picha)
Mashine ya Kahawa Iliyowezeshwa ya IoT: Hii inaweza kufundishwa kwa mashindano ya IoT - Ikiwa unaipenda, tafadhali ipigie kura! UPDATED: Sasa inasaidia njia 2 za comms na sasisho za OTA Kwa muda sasa nimekuwa na mashine ya kahawa ya Jura na nimekuwa nikitaka kuiwezesha kwa njia fulani. Nimekuwa