সুচিপত্র:
- সরবরাহ
- ধাপ 1: তারের
- পদক্ষেপ 2: আপনার লোড সেল ব্যবহারযোগ্য করুন
- ধাপ 3: সাধারণ ডেটাবেস
- ধাপ 4: লোড সেল কোডিং
- ধাপ 5: ওয়াটার সেন্সর কোডিং
- ধাপ 6: প্রক্সিমিটি সেন্সর কোডিং
- ধাপ 7: স্টেপার মোটর কোডিং
- ধাপ 8: এলসিডি কোডিং
- ধাপ 9: শেষ
ভিডিও: স্বয়ংক্রিয় পোষা খাদ্য সরবরাহকারী: 9 টি ধাপ
2024 লেখক: John Day | [email protected]. সর্বশেষ পরিবর্তিত: 2024-01-30 07:56
কখনও কি আপনার পোষা প্রাণীকে খাওয়ানোর জন্য খুব বেশি সময় নষ্ট করার মতো মনে হয়েছে? আপনি যখন ছুটিতে ছিলেন তখন কখনও আপনার পোষা প্রাণীকে খাওয়ানোর জন্য কাউকে ফোন করতে হয়েছিল? আমি আমার বর্তমান স্কুল প্রকল্পের সাথে এই দুটি সমস্যা সমাধানের চেষ্টা করেছি: পেটফিড!
সরবরাহ
রাস্পবেরি পাই 3 বি
বার লোড সেল (10 কেজি)
HX711 লোড সেল পরিবর্ধক
জলস্তর সেন্সর (https://www.dfrobot.com/product-1493.html)
অতিস্বনক প্রক্সিমিটি সেন্সর
এলসিডি 16-পিন
2x স্টেপার মোটর 28byj-48
2x স্টেপার মোটর ড্রাইভার ULN2003
ধাপ 1: তারের
এখানে প্রচুর ক্যাবলিং। আপনার জাম্পার তারগুলি বের করুন এবং পিন করা শুরু করুন!
পদক্ষেপ 2: আপনার লোড সেল ব্যবহারযোগ্য করুন
লোড সেল ব্যবহার করার জন্য, আমাদের প্রথমে এটি দুটি প্লেটের সাথে সংযুক্ত করতে হবে: একটি নিচের প্লেট, এবং একটি প্লেট যার উপর আমরা আমাদের খাবারের ওজন করব।
আপনার যে স্ক্রুগুলির প্রয়োজন তা হ'ল মিলে যাওয়া বোল্টগুলির সাথে এক জোড়া এম 4 স্ক্রু এবং মিলে যাওয়া বোল্টগুলির সাথে এক জোড়া এম 5 স্ক্রু। আমি গর্ত তৈরি করতে একটি ছোট ড্রিল ব্যবহার করেছি।
(ছবি:
ধাপ 3: সাধারণ ডেটাবেস
আমাদের সেন্সর থেকে ডেটা একটি ডাটাবেসে সংরক্ষণ করতে হবে। পাইথন ফাইলগুলি ডাটাবেসের সাথে সংযুক্ত হওয়ার জন্য: নীচে দেখুন।
তারপর আপনি একটি কনফিগ ফাইল প্রয়োজন:
[connector_python] user = * yourusername * host = 127.0.0.1 #if local port = 3306 password = * yourpassword * database = * yourdb * [application_config] driver = 'SQL Server'
ধাপ 4: লোড সেল কোডিং
RPi. GPIO GPIO হিসাবে আমদানি করুন hx711 থেকে আমদানি থ্রেডিং সময় আমদানি করুন HX711 থেকে helpers.stepper থেকে খাদ্য আমদানি করুন StepperFood সাহায্যকারীদের থেকে। LCDWrite আমদানি LCDWrite সংগ্রহস্থল থেকে।
আমাদের সমস্ত লাইব্রেরি আমদানি করার পর (দ্রষ্টব্য, আমরা লোড সেল চালানোর জন্য HX711 লাইব্রেরি ব্যবহার করছি) আমরা আমাদের প্রকৃত কোড লেখা শুরু করতে পারি
TARRA_CONSTANT = 80600
GRAM_CONSTANT = 101
আমাদের ধ্রুবক খুঁজে বের করার জন্য প্রথমে TARRA_CONSTANT = 0 এবং GRAM_CONSTANT = 1 সেট করুন।
পরবর্তীতে আমাদের লোড সেল যে মানটি পড়ে তা খুঁজে বের করতে হবে যখন কিছুই ওজন করা হয় না। এই মান হবে TARRA_CONSTANT।
GRAM_CONSTANT এর জন্য, কেবল একটি বস্তু নিন যা আপনি জানেন (আমি স্প্যাগেটির একটি প্যাক ব্যবহার করেছি), এটি ওজন করুন এবং বস্তুর প্রকৃত ওজনের সাথে লোড সেল রিডআউট ভাগ করুন। আমার জন্য এটি ছিল 101।
ক্লাস লোডসেল (থ্রেডিং। থ্রেড):
def _init _ (self, socket, lcd): threading. Thread._ init _ (self) self.hx711 = HX711 (dout_pin = 5, pd_sck_pin = 6, channel = 'A', gain = 64) self.socket = socket self.lcd = এলসিডি
এখানে আমরা লোডসেল ক্লাস শুরু করি এবং পিনগুলি ম্যাপ করি।
ডিফ রান (স্ব):
try: while True: self.hx711.reset () # আমরা শুরু করার আগে, HX711 (বাধ্য নয়) রিসেট করুন 0) মুদ্রণ ("ওজন: {0}"। বিন্যাস (ওজন)) DataRepository.insert_weight (ওজন) data_weight = DataRepository.get_data_sensor (3) historyId = data_weight ["SensorsHistory"] db_weight = data_weight ["value"] actionTime = data_weight ["actionTime"] self.socket.emit ('data_weight', {"id": historyId, "Weight": db_weight, "Time": DataRepository.serializeDateTime (actionTime)}) print ("zou moeten emitten") writeWeight = "ওজন:" + str (db_weight) msg = "PETFEED" LCDWrite.message () যদি int (db_weight [:-2]) <= 100: StepperFood.run () time.sleep (20) ছাড়া e: print ("ওজনে ত্রুটি" + str (e))
ধাপ 5: ওয়াটার সেন্সর কোডিং
সংগ্রহস্থল থেকে সময় আমদানি থ্রেডিং আমদানি। self, socket): threading.tread._ init _ (self) self.socket = socket self.vorige_status = 0 def run (self): try: while True: water = self.is_water () print (water) status = water [" status "] action = water [" action "] DataRepository.insert_water (str (status), action) data_water = DataRepository.get_data_sensor (2) historyId = data_water [" SensorsHistory "] value = data_water [" value "] যদি মান == "0": value = "te weinig water" else: value = "genoeg water" actionTime = data_water ["actionTime"] self.socket.emit ('data_water', {"id": historyId, "value": value, সময়.input (GPIO_Wate r) যদি self.vorige_status == 0 এবং status == 1: print ('water gedetecteerd') sensorData = {"status": status, "action": "water gedetecteerd"} self.vorige_status = status status = GPIO.input (GPIO_Water) যদি self.vorige_status == 1 এবং status == 1: print ('water aanwezig') sensorData = {"status": status, "action": "water aanwezig"} status = GPIO.input (GPIO_Water) যদি self.vorige_status == 1 এবং status == 0: print ('water weg') sensorData = {"status": status, "action": "water weg"} self.vorige_status = status status = GPIO.input (GPIO_Water) যদি self.vorige_status == 0 এবং status == 0: print ('startpositie') status = GPIO.input (GPIO_Water) sensorData = {"status": status, "action": "startpositie"} return sensorData
ধাপ 6: প্রক্সিমিটি সেন্সর কোডিং
সংগ্রহস্থল থেকে সময় আমদানী থ্রেডিং আমদানি করুন।. IN) def current_milli_time (): return int (round (time.time () * 1000)) class UltrasonicSensor (threading. Thread): def _init _ (self, socket): threading. Thread._ init _ (self) self.socket = socket def run (self): try: last_reading = 0 interval = 5000 while True: if current_milli_time ()> last_reading + interval: dist = self.distance () print ("পরিমাপ দূরত্ব = %.1f সেমি" % dist) DataRepository insert_proximity (dist) data_prox = DataRepository.get_data_sensor (1) historyId = data_prox ["SensorsHistory"] prox = data_prox ["value"] actionTime = data_prox ["actionTime"] self.socket.emit ('data_proximity', {"id_proximity ', {" id ": historyId, "প্রক্সিমিটি": প্রক্স, "সময়": DataRepository.serializeDateTime (actionTime)}) last_reading = current_milli_time () ব্যতিক্রম ব্যতীত ex: print (ex) de f দূরত্ব (স্বয়ং): # সেট করুন উচ্চ GPIO.output (GPIO_Trig, সত্য) এ সেট করুন # 0.01ms পরে কম সময়ে ঘুমান (0.00001) GPIO.output (GPIO_Trig, মিথ্যা) StartTime = time.time () StopTime = time.time () # StartTime সেভ করুন যখন GPIO.input (GPIO_Echo) == 0: StartTime = time.time () # আসার সময় বাঁচান যখন GPIO.input (GPIO_Echo) == 1: StopTime = time.time () # শুরু এবং আগমনের মধ্যে সময়ের পার্থক্য TimeElapsed = StopTime - StartTime # সোনিক গতি (34300 cm / s) # দিয়ে গুণ করুন এবং 2 দ্বারা ভাগ করুন, কারণ সেখানে এবং পিছনের দূরত্ব = (TimeElapsed * 34300) / 2 ফেরার দূরত্ব
ধাপ 7: স্টেপার মোটর কোডিং
GPIO হিসাবে আমদানি করুন RPi. GPIO.output (pin, 0) halfstep_seq =
এই কোডটি অন্য স্টেপার মোটরের জন্য পুনusব্যবহারযোগ্য, শুধু তাদের প্রতিরক্ষামূলক পিনগুলিতে কন্ট্রোল পিন নম্বর সেট করুন এবং ক্লাসের নাম পরিবর্তন করে StepperWater করুন:
ধাপ 8: এলসিডি কোডিং
প্রচুর কোড, কিন্তু আমরা প্রায় সম্পন্ন করেছি।
LCD ক্লাস ফাইল LCD.py হিসাবে অন্তর্ভুক্ত করা হয়
এলসিডি আমদানি এলসিডি
E = 26 RS = 25 D0 = 19 D1 = 13 D2 = 24 D3 = 22 D4 = 23 D5 = 8 D6 = 7 D7 = 10 lcd = LCD (E, RS, [D0, D1, D2, D3, D4, D5, D6, D7]) ক্লাস LCDWrite: def বার্তা (msg): try: print ("try") lcd.init_LCD () lcd.send_instruction (12) lcd.clear_display () lcd.write_message (msg, '1') ছাড়া: মুদ্রণ ("ত্রুটি LCDWrite")
ধাপ 9: শেষ
চূড়ান্ত ফলাফল: আমরা কীভাবে এটিকে আঁকলাম বনাম কীভাবে এটি শেষ হয়েছিল।
প্রস্তাবিত:
স্বয়ংক্রিয় পোষা-খাদ্য বাটি প্রকল্প: 13 ধাপ
স্বয়ংক্রিয় পেট-ফুড বাউল প্রজেক্ট: এই নির্দেশাবলী কিভাবে সংযুক্ত একটি স্বয়ংক্রিয়, প্রোগ্রামেবল পোষা খাবার তৈরি করতে হবে তা বর্ণনা করবে এবং ব্যাখ্যা করবে। আমি এখানে ভিডিও সংযুক্ত করেছি যাতে পণ্যগুলি কীভাবে কাজ করে এবং এটি কেমন দেখায়
পোষা খাদ্য সরবরাহকারী: 3 ধাপ
পোষা খাদ্য সরবরাহকারী: Para los amantes de mascotas, este es un proyecto que les puede ser muy iltil! Un alimentador automático que te permite observar cual es el pesaje de la comida, y solo es necesario que oprimas un botón.Un mecanismo sencillo que podrás armar desde tu
আরডুইনো প্রকল্প: বিড়াল খাদ্য সরবরাহকারী: 6 টি ধাপ
আরডুইনো প্রজেক্ট: ক্যাট ফুড ডিসপেনসার: এই নির্দেশনাটি সাউথ ফ্লোরিডা বিশ্ববিদ্যালয়ে মেককোর্সের প্রকল্পের প্রয়োজনীয়তা পূরণের জন্য তৈরি করা হয়েছিল (www.makecourse.com)
পোষা খাদ্য (কুকুর, বিড়াল, মুরগি, ইত্যাদি), বল নিক্ষেপ এবং আরও অনেক কিছু করার জন্য স্বয়ংক্রিয় ক্যাটাপল্ট
পোষা খাদ্য (কুকুর, বিড়াল, মুরগি, ইত্যাদি), বল নিক্ষেপ এবং আরো অনেক কিছু করার জন্য স্বয়ংক্রিয় ক্যাটপাল্ট! আমি এটিকে ধীর করার উপায়গুলি তৈরি করছি, ভেতরের খাবারের সাথে বল থেকে পুরো বাড়ির উঠোনে ফেলে দেওয়া। আশ্চর্যজনকভাবে, সে
Arduino চালিত কুকুর খাদ্য সরবরাহকারী: 10 ধাপ (ছবি সহ)
আরডুইনো চালিত কুকুর খাদ্য সরবরাহকারী: আপনার বাড়ি যদি আমার মতো কিছু হয়, তাড়াহুড়ো করার সময় কিছু কাজ ভুলে যেতে পারে। এটি আপনার পোষা প্রাণী হতে দেবেন না যেটি ভুলে যায়! এই স্বয়ংক্রিয় কুকুর খাদ্য সরবরাহকারী একটি Arduino ব্যবহার করে সঠিক সময়ে সঠিক পরিমাণে কিবল সরবরাহ করে। সব প