ዝርዝር ሁኔታ:

በ Raspberry Pi & HC-SR04 Ultrasonic Sensor እና Cloud4RPi ቁጥጥር የሚደረግበት ዘመናዊ የቡና ማሽን ፓምፕ
በ Raspberry Pi & HC-SR04 Ultrasonic Sensor እና Cloud4RPi ቁጥጥር የሚደረግበት ዘመናዊ የቡና ማሽን ፓምፕ

ቪዲዮ: በ Raspberry Pi & HC-SR04 Ultrasonic Sensor እና Cloud4RPi ቁጥጥር የሚደረግበት ዘመናዊ የቡና ማሽን ፓምፕ

ቪዲዮ: በ Raspberry Pi & HC-SR04 Ultrasonic Sensor እና Cloud4RPi ቁጥጥር የሚደረግበት ዘመናዊ የቡና ማሽን ፓምፕ
ቪዲዮ: HC-SR04 Ultrasonic Sensor Signals on Oscilloscope 2024, ሀምሌ
Anonim
በዘመናዊ የቡና ማሽን ፓምፕ በ Raspberry Pi & HC-SR04 Ultrasonic Sensor እና Cloud4RPi ቁጥጥር የሚደረግበት
በዘመናዊ የቡና ማሽን ፓምፕ በ Raspberry Pi & HC-SR04 Ultrasonic Sensor እና Cloud4RPi ቁጥጥር የሚደረግበት

በንድፈ ሀሳብ ፣ ለጠዋት ጽዋዎ ወደ ቡና ማሽን በሄዱ ቁጥር የውሃ ማጠራቀሚያውን ለመሙላት አንድ ሃያ-አንድ ዕድል ብቻ አለ። በተግባር ግን ፣ ማሽኑ በሆነ መንገድ ይህንን ሥራ ሁል ጊዜ ለእርስዎ የሚጭንበት መንገድ የሚያገኝ ይመስላል። ቡና በፈለጉ ቁጥር አስፈሪውን “የውሃ ማጠራቀሚያውን ይሙሉ” የሚል መልእክት የማግኘት ዕድሉ ሰፊ ነው። የሥራ ባልደረቦቼ ስለዚህ ጉዳይ ተመሳሳይ ስሜት አላቸው። እኛ የራሳችን ነርሶች በመሆናችን ይህንን የሚያቆምበትን ቴክኖሎጂ ለመተግበር ወሰንን።

አቅርቦቶች

የእኛ መሣሪያዎች

እኛ SAECO Aulika Focus የቡና ማሽን አለን። እስከዚህ ቀን ድረስ ከመደበኛ 5 ጋሎን (19 ሊ) የውሃ ጠርሙስ የማሽኑን የውሃ ማጠራቀሚያ ለመሙላት የእጅ ፓምፕ እንጠቀም ነበር።

ግቦቻችን

  1. በአንድ ዓይነት ተቆጣጣሪ ወይም በማይክሮ ኮምፒውተር የሚንቀሳቀስ የኤሌክትሪክ ፓምፕን በቅብብሎሽ ይጠቀሙ።
  2. ስርዓታችን መቼ እንደሚሞላው እንዲያውቅ በቡና ማሽኑ ታንክ ውስጥ ያለውን የውሃ መጠን የሚለካበት መንገድ ይኑርዎት።
  3. ከተንቀሳቃሽ መሣሪያ በእውነተኛ ሰዓት ውስጥ ስርዓቱን የሚቆጣጠርበት ዘዴ ይኑርዎት።
  4. በስርዓቱ ውስጥ የሆነ ነገር ከተበላሸ ማሳወቂያዎችን (በ Slack ወይም ተመሳሳይ አገልግሎት በኩል) ይቀበሉ።

ደረጃ 1 - መሣሪያውን መምረጥ

መሣሪያዎችን መምረጥ
መሣሪያዎችን መምረጥ
መሣሪያዎችን መምረጥ
መሣሪያዎችን መምረጥ
መሣሪያዎችን መምረጥ
መሣሪያዎችን መምረጥ
መሣሪያዎችን መምረጥ
መሣሪያዎችን መምረጥ

ፓም

ፈጣን የድር ፍለጋ ለእርስዎ የውሃ ጠርሙስ ምርጫ የተነደፉ በርካታ የኤሌክትሪክ ፓምፕ ሞዴሎችን ያሳያል። እንደነዚህ ያሉ ፓምፖች ብዙውን ጊዜ በ ON/OFF ማብሪያ/ቁጥጥር (ለምሳሌ ፣ ትኩስ ፍሮስት A12 ወይም SMixx ХL-D2) ይቆጣጠራሉ። ለፕሮጀክታችን የመረጥነው ፓምፕ እዚህ አለ።

የመቆጣጠሪያ መሣሪያ

በሚከተሉት ጥቅሞች ምክንያት ብዙ መሣሪያዎችን ሞክረናል ግን በ Raspberry Pi ላይ ተቀመጥን-

  • የአቅራቢያ ዳሳሽ ለማገናኘት የሚያስችለን GPIO አለው
  • እሱ Python ን ይደግፋል

አዲስ የ Raspbian Buster Lite እና Python 3 ን ለማስኬድ የሚያስፈልጉትን ሁሉ ጫን።

ፓምumpን እንዴት እንደቀየርን

ሀይሉን ለመቆጣጠር ፣ ለተለዋጭ የአሁኑ ተስማሚ የመካከለኛ ኃይል (12 ቮ/2 ኤ) ጠንካራ የስቴት ቅብብል መርጠናል። ማስተላለፊያው ፓም pumpን ወደ መውጫው ያገናኛል እና በ Raspberry Pi ዲጂታል ፒን ቁጥጥር ይደረግበታል።

የውሃ ደረጃን እንዴት እንደምንፈትሽ

የቡና ማሽኑን ግንባታ ላለመቀየር ለእኛ አስፈላጊ ነበር ፣ ስለሆነም የውሃውን ደረጃ ለመለካት HC-SR04 Ultrasonic proximity sensor ን ለመጠቀም ወሰንን።

ለአሳሽ አነፍናፊዎቹ ሁለት ቀዳዳዎች ያሉት ብጁ የውሃ ማጠራቀሚያ ሽፋን በ 3d ታትመናል። በቀላሉ ለአነፍናፊው የ GitHub ቤተ-መጽሐፍትን አገኘን። በዚህ ጊዜ ሁሉም ዝግጅቶች ተጠናቀዋል።

ደረጃ 2 - ስርዓቱን መንደፍ

ስርዓቱን ዲዛይን ማድረግ
ስርዓቱን ዲዛይን ማድረግ
ስርዓቱን ዲዛይን ማድረግ
ስርዓቱን ዲዛይን ማድረግ

የስርዓት አመክንዮ

ስርዓቱ የተነደፈው በሚከተለው ቀላል አመክንዮ ውስጥ ነው-

  • ስርዓቱ በአነፍናፊው እና በውሃው ወለል መካከል ያለውን ርቀት ያለማቋረጥ ይከታተላል።
  • የርቀት ለውጥ ከመነሻ እሴት በላይ በሄደ ቁጥር ስርዓቱ ስለ ሁኔታው መረጃ ወደ ደመና ይልካል።
  • ርቀቱ ከሚፈቀደው ከፍተኛ እሴት በላይ ከሄደ (ታንኩ ባዶ ነው) ፣ ስርዓቱ ፓም pumpን ያነቃቃል እና ርቀቱ ከሚፈቀደው ዝቅተኛው እሴት በታች ከሆነ በኋላ ያጠፋል።
  • የስርዓቱ ሁኔታ በተለወጠ ቁጥር (ለምሳሌ ፣ ፓም activ ይሠራል) ፣ ደመናውን ያሳውቃል።

ስህተት ከተከሰተ ማሳወቂያ ወደ Slack ሰርጥ ይላካል።

የቡና ማሽኑ ስራ ፈት በሚሆንበት ጊዜ ስርዓቱ በደቂቃ አንድ ጊዜ በመመርመሪያ መረጃ የደመና አገልግሎቱን ያወጋዋል። በተጨማሪም ፣ ሁኔታውን በየ 5 ደቂቃው ወደ ደመና ይልካል።

ፓም active በሚሠራበት ጊዜ ስርዓቱ ብዙ ጊዜ መረጃ ይልካል ነገር ግን በየግማሽ ሴኮንድ ከአንድ ጊዜ አይበልጥም።

def ላክ (ደመና ፣ ተለዋዋጮች ፣ ዲስት ፣ ስህተት_ኮድ = 0 ፣ ኃይል = ሐሰት): pump_on = is_pump_on () በመቶ = calc_water_level_percent (dist) ተለዋዋጮች ['ርቀት'] ['እሴት'] = የርቀት ተለዋዋጮች ['WaterLevel'] [' እሴት '] = መቶኛ ተለዋዋጮች [' PumpRelay '] [' value '] = pump_on ተለዋዋጮች [' ሁኔታ '] [' እሴት '] = calc_status (የስህተት ኮድ ፣ መቶኛ ፣ pump_on)

የአሁኑ = ጊዜ ()

ሁለንተናዊ last_sending_time ኃይል ከሆነ ወይም የአሁኑ - last_sending_time> MIN_SEND_INTERVAL: ንባቦች = cloud.read_data () cloud.publish_data (ንባቦች) last_sending_time = current

ከፓም with ጋር መስራት

ለፓምፕ አሠራር አመክንዮ መሠረት የሚከተሉትን ቋሚዎች እንገልፃለን።

# ጂፒኦ ፒን (BCM) GPIO_PUMP = 4 GPIO_TRIGGER = 17 GPIO_ECHO = 27

# ፓምፕ

START_PUMP = 1 STOP_PUMP = 0 PUMP_BOUNCE_TIME = 50 # ሚሊሰከንዶች PUMP_STOP_TIMEOUT = 5 # ሰከንዶች

አስፈላጊ: ፒን 4 ን የሚጠቀሙ ከሆነ ግጭቶችን ለማስወገድ የ 1-Wire raspi-config አማራጭን ማሰናከልዎን አይርሱ።

በፕሮግራሙ ጅምር ላይ የመልሶ መደወልን እናስመዘግባለን እና የመጀመሪያውን ሁኔታ አጥፍተናል።

ፓም pumpን ለሚቀይረው ተግባር ኮዱ እነሆ-

def toggle_pump (እሴት): pump_disabled ከሆነ is_pump_on () ከሆነ = = እሴት log_debug ("[x] % s" % ('START' ከሆነ ሌላ እሴት 'አቁም')) GPIO.setup (GPIO_PUMP ፣ GPIO. OUT) GPIO.output (GPIO_PUMP ፣ እሴት) # ማፍሰስ ጀምር/አቁም

ከላይ ባለው የማስነሻ ኮድ እንደተገለፀው ፣ ቅብብላው ሲበራ ፣ የሚከተለው መልሶ መደወያ ይባላል።

pump_on = የውሸት def pump_relay_handle (ፒን): ዓለም አቀፍ pump_on pump_on = GPIO.input (GPIO_PUMP) log_debug ("የፓምፕ ማስተላለፊያ ወደ % d" % pump_on ተቀይሯል)

በመደወያው ውስጥ ፣ የፓም’sን የአሁኑን ሁኔታ ወደ ተለዋዋጭ እናስቀምጠዋለን። በመተግበሪያው ዋና ዑደት ውስጥ ፣ ከዚህ በታች እንደሚታየው ፓም to ሲቀያየር አፍታውን መለየት እንችላለን-

def is_pump_on (): ዓለም አቀፍ pump_on መመለስ pump_on ላይ

GPIO.vent_detected (GPIO_PUMP) ከሆነ

is_pouring = is_pump_on () # … log_debug ('[!!

ርቀትን መለካት

የአልትራሳውንድ ቅርበት ዳሳሽ በመጠቀም ወደ ውሃው ወለል ያለውን ርቀት ለመለካት በጣም ቀላል ነው። በእኛ ማከማቻ ውስጥ ዳሳሽ እንዲሞክሩ የሚያስችሉዎትን ሁለት የፓይዘን ስክሪፕቶችን አካፍለናል።

በእውነተኛ አፕሊኬሽኖች ውስጥ ፣ የአነፍናፊ ንባቡ ውጤት እና የውሃ ማወዛወዝ ምክንያት ሊለዋወጥ ይችላል። በአንዳንድ ሁኔታዎች ንባቦች ሙሉ በሙሉ ሊጠፉ ይችላሉ። N የቅርብ ጊዜ እሴቶችን የሚያከማች ፣ ጫፎችን የሚጥል እና የቀሩትን መለኪያዎች አማካይ የሚያሰላ BounceFilter ክፍልን ተግባራዊ እናደርጋለን። የመለኪያ ሂደቱ በሚከተለው ባልተመሳሰለ ስልተ ቀመር ይተገበራል።

# የመጨረሻዎቹን የአነፍናፊ መለኪያዎች ንባቦች = BounceFilter (መጠን = 6 ፣ discard_count = 1) ይይዛል

reading_complete = threading. Event ()

def wait_for_distance ():

reading_complete.clear () thread = threading. Thread (target = read_distance) thread.start ()

ካልተነበበ_ሞላው። ይጠብቁ (MAX_READING_TIMEOUT)

log_info ('የንባብ ዳሳሽ ማብቂያ') መመለስ ምንም የተመለሱ ንባቦች.avg ()

def read_distance ():

ሞክር: እሴት = hcsr04.raw_distance (sample_size = 5) የተጠጋጋ = እሴት እሴት ካልሆነ በስተቀር ሌላ ምንም ክብ (እሴት ፣ 1) ንባቦች።: reading_complete.set ()

በማጣሪያዎቹ ውስጥ የማጣሪያውን ሙሉ ትግበራ ማግኘት ይችላሉ።

ደረጃ 3 የአደጋ ጊዜ ሁኔታዎችን ማስተናገድ

የአደጋ ጊዜ ሁኔታዎችን አያያዝ
የአደጋ ጊዜ ሁኔታዎችን አያያዝ
የአደጋ ጊዜ ሁኔታዎችን አያያዝ
የአደጋ ጊዜ ሁኔታዎችን አያያዝ
የአደጋ ጊዜ ሁኔታዎችን አያያዝ
የአደጋ ጊዜ ሁኔታዎችን አያያዝ

አነፍናፊው ቢቃጠል ፣ ቢወድቅ ወይም የተሳሳተ ቦታ ቢጠቁምስ? በእጅ እርምጃ መውሰድ እንድንችል እንደዚህ ያሉ ጉዳዮችን ሪፖርት የምናደርግበት መንገድ ያስፈልገን ነበር።

አነፍናፊው የርቀት ንባቦችን ማቅረብ ካልቻለ ፣ ስርዓቱ የተቀየረውን ሁኔታ ወደ ደመና ይልካል እና ተጓዳኝ ማሳወቂያ ይፈጥራል።

አመክንዮው ከዚህ በታች ባለው ኮድ ተገል isል።

ርቀት = ተጠባቂ_እርቀት () # ርቀቱ የሌለ ከሆነ የአሁኑን የውሃ ጥልቀት ያንብቡ - log_error ('የርቀት ስህተት!') ማሳወቂያ_በጀርባ (calc_alert (SENSOR_ERROR)) ይላኩ (ደመና ፣ ተለዋዋጮች ፣ ርቀት ፣ ስህተት_ኮድ = SENSOR_ERROR ፣ ኃይል = እውነት)

አነፍናፊው በቦታው ላይ በሚሆንበት ጊዜ ሊቆይ የሚገባው የአሠራር የውሃ ደረጃ አለን። የአሁኑ የውሃ ደረጃ በዚህ ክልል ውስጥ ቢወድቅ እንፈትሻለን-

# ከአነፍናፊው ወደ ውሃ ደረጃ ያለው ርቀት # በቡና ማሽን የውሃ ማጠራቀሚያ MIN_DISTANCE = 2 # ሴሜ MAX_DISTANCE = 8 # ሴሜ

# ርቀቱ ከተጠበቀው ክልል ውጭ ነው - ማፍሰስ አይጀምሩ

ርቀት> MAX_DISTANCE * 2: log_error ('ርቀቱ ከክልል ውጭ ነው። %.2f' % ርቀት) ከቀጠለ

ስህተት ሲከሰት ፓም pump ገባሪ ከሆነ እናጥፋለን።

ከሆነ is_pump_on () እና ቅድመ -ርቀት <STOP_PUMP_DISTANCE + DISTANCE_DELTA: log_error ('[!] የፓም Emergency ድንገተኛ ማቆሚያ። ከርቀት ዳሳሽ ምንም ምልክት የለም')

toggle_pump (STOP_PUMP)

እንዲሁም ጠርሙሱ ውሃ ሲያልቅ ጉዳዩን እናስተናግዳለን። ፓም runs በሚሠራበት ጊዜ የውሃው ደረጃ ካልተለወጠ እንፈትሻለን። እንደዚያ ከሆነ ስርዓቱ ለ 5 ሰከንዶች ይጠብቃል እና ከዚያ ፓም pump ጠፍቶ እንደሆነ ይፈትሻል። ከሌለው ታዲያ ስርዓቱ የድንገተኛ ፓምፕ መዘጋትን ተግባራዊ ያደርጋል እና የስህተት ማሳወቂያ ይልካል።

PUMP_STOP_TIMEOUT = 5 # secsemergency_stop_time = የለም

def set_emergency_stop_time (አሁን ፣ እያፈሰሰ ነው) ፦

ዓለምአቀፍ የድንገተኛ ጊዜ_አስቸኳይ_አስቸኳይ ጊዜ_አቋራጭ_አሁን = አሁን + PUMP_STOP_TIMEOUT ካልሆነ ሌላ

def check_water_source_empty (አሁን)

የአደጋ ጊዜ_አቁም_ጊዜን እና አሁን> የድንገተኛ ጊዜ_አቁም_ ጊዜን ይመልሱ

# --------- ዋና ዙር -----------

GPIO.

ዓለም አቀፍ pump_disabled

check_water_source_empty (አሁን): log_error ('[!] የፓም Emergency ድንገተኛ ማቆሚያ / የውሃ ምንጭ ባዶ ነው') toggle_pump (STOP_PUMP) pump_disabled = እውነት

ከላይ በአደጋ ጊዜ ማቆሚያ ወቅት የተፈጠረ የመልዕክት ምዝግብ ምሳሌ ነው።

ደረጃ 4 - ስርዓቱን 24/7 ማሄድ

ስርዓቱን 24/7 ያሂዱ
ስርዓቱን 24/7 ያሂዱ

በመሣሪያው ላይ ያለው ኮድ ተስተካክሎ ያለምንም ችግር ይሠራል። እኛ እንደ አገልግሎት አስጀምረነዋል ፣ ስለዚህ Raspberry Pi እንደገና ከተነሳ እንደገና ይጀምራል። ለምቾት ፣ አገልግሎቱን ለማስኬድ ፣ አገልግሎቱን ለማስኬድ እና ምዝግብ ማስታወሻዎችን ለማየት የሚረዳ Makefile ን ፈጥረናል።

. PHONY: ጫን አሂድ ጀምር የማቆም ሁኔታ ምዝግብ ማስታወሻ ማሰማራት MAIN_FILE: = ቡና-ፓምፕ/main.py SERVICE_INSTALL_SCRIPT: = service_install.sh SERVICE_NAME: = coffee-pump.service

ጫን

chmod +x $ (SERVICE_INSTALL_SCRIPT) sudo./$(SERVICE_INSTALL_SCRIPT) $ (MAIN_FILE)

አሂድ

sudo python3 $ (MAIN_FILE)

ጀምር ፦

sudo systemctl start $ (SERVICE_NAME)

ሁኔታ ፦

sudo systemctl ሁኔታ $ (SERVICE_NAME)

ተወ:

sudo systemctl stop $ (SERVICE_NAME)

መዝገብ

sudo journalctl -u ቡና -ፓምፕ -ከዛሬ ጀምሮ

ማሰማራት

rsync -av የቡና-ፓምፕ ዳሳሽ-ማዋቀር Makefile *.sh pi@XX. XX. XXX. XXX: ~/

ይህንን ፋይል እና ሁሉንም አስፈላጊ ስክሪፕቶች በእኛ ማከማቻ ውስጥ ማግኘት ይችላሉ።

ደረጃ 5 የደመና ክትትል

የደመና ክትትል
የደመና ክትትል
የደመና ክትትል
የደመና ክትትል
የደመና ክትትል
የደመና ክትትል
የደመና ክትትል
የደመና ክትትል

የቁጥጥር ፓነልን ለመተግበር Cloud4RPi ን እንጠቀም ነበር። የስርዓቱን አስፈላጊ መለኪያዎች ለማመልከት መጀመሪያ መግብሮችን አክለናል።

በነገራችን ላይ ለ STATUS ተለዋዋጭ መግብር በእሴቱ ላይ በመመርኮዝ የተለያዩ የቀለም መርሃግብሮችን መጠቀም ይችላል (ከላይ ያለውን ምስል ይመልከቱ)።

ተለዋዋጭ ውሂብን ለማሳየት የገበታ መግብር አክለናል። ከዚህ በታች ባለው ምስል ውስጥ ፓም pump እንደበራ እና እንደጠፋ እና የየራሳቸውን የውሃ ደረጃዎች ማየት ይችላሉ።

ረዘም ያለ ጊዜን ከተተነተኑ ጫፎችን ማየት ይችላሉ - ያ ፓም pump ሲሠራ ነበር።

Cloud4RPi እንዲሁ የተለያዩ የማለስለስ ደረጃዎችን እንዲያዘጋጁ ያስችልዎታል።

ደረጃ 6 - እሱ ይሠራል

Image
Image

ይሰራል! የቁጥጥር ፓነሉ ሙሉ በሙሉ ከዚህ በታች እንደሚታየው ይመስላል።

በአሁኑ ጊዜ አውቶማቲክ ፓምፕችን ለበርካታ ሳምንታት እየሠራ ሲሆን እኛ ማድረግ ያለብን የውሃ ጠርሙሶችን መተካት ነው። ለፕሮጀክታችን ሙሉ ኮድ በእኛ GitHub ማከማቻ ውስጥ ይገኛል።

የሚመከር: