جدول المحتويات:

SmartBin: 4 خطوات
SmartBin: 4 خطوات

فيديو: SmartBin: 4 خطوات

فيديو: SmartBin: 4 خطوات
فيديو: 4 шага, чтобы свободно говорить по-английски | Цели 2020 ✅ 2024, شهر نوفمبر
Anonim
Image
Image

الغرض الرئيسي من هذا المشروع هو إنشاء جهاز إلكتروني يستخدم Raspberry Pi واحدًا على الأقل. يتكون الفريق من 5 مهندسين ميكانيكيين في المستقبل ومهندس أتمتة واحد. يتكون مشروعنا من صنع سلة مهملات تفتح وتغلق تلقائيًا بسبب حركة القدم تحت كاشف الحركة الموجود في المركز في الجزء الأمامي من سلة المهملات. يتم استخدام شريحة Wifi USB لإرسال البيانات إلى موقع ويب. يسمى هذا الصندوق "SmartBin". يقدم مقطع الفيديو المضحك أعلاه برنامج SmartBin المبتكر الخاص بنا.

من أجل تنفيذ هذا المشروع وهذا SmartBin الرائع ، كانت هناك عدة أدوات ضرورية:

  • متر
  • غراء قوي
  • شريط لاصق
  • منشار خشب
  • مفك البراغي
  • آلة حفر
  • المشبك
  • سكين

الخطوة 1: معدات SmartBin

معدات SmartBin
معدات SmartBin
معدات SmartBin
معدات SmartBin

يتكون SmartBin من مصابيح LED خضراء وبرتقالية وحمراء توضع على أداة تثبيت على الجانب الأيسر من الحاوية والتي ستشير إلى مدى ملئها. ستكون هذه الأضواء مرئية بوضوح وتنبه المستخدم عندما يكون من الضروري استبدال كيس القمامة. لغة البرمجة المستخدمة هي Python. يتم إرسال مستوى الملء المقاس للحاوية إلى موقع الويب التالي:

فيما يلي العناصر التي تم استخدامها ولكن يمكنك بسهولة العثور على حل بديل:

  • حاوية واحدة (حاوية "ذات غطاء متأرجح")
  • 1 محرك مؤازر لفتح الصندوق
  • 1 Raspberry Pi 2
  • مزودان للطاقة (شاحن للهاتف المحمول 5 فولت ومصدر طاقة 6 فولت) لتزويد Raspberry Pi والمحرك المؤازر
  • 1 جهاز استشعار بالموجات فوق الصوتية لقياس مستوى ملء الحاوية
  • تعرض بعض مصابيح LED مستوى التعبئة (4 أخضر و 2 برتقالي و 1 أحمر)
  • 1 كاشف الحركة بالموجات فوق الصوتية لاكتشاف الحركة
  • 1 بطاقة SD 16 جيجا بايت
  • المقاومات الكهربائية (10.000 أوم ، 2000 أوم ، 1000 أوم)
  • 1 عصا USB لشبكة WiFi لتمكين الإرسال اللاسلكي إلى موقع الويب.
  • 1 اللوح وبعض كابلات التوت

سعر التصنيع المقدر 80 يورو.

الخطوة 2: تصنيع صندوق Raspberry وشريط LED

تصنيع صندوق Raspberry و LED Bar
تصنيع صندوق Raspberry و LED Bar
تصنيع صندوق Raspberry و LED Bar
تصنيع صندوق Raspberry و LED Bar
تصنيع صندوق Raspberry و LED Bar
تصنيع صندوق Raspberry و LED Bar

لتصنيع صندوق التوت ، استخدم منشار الخشب. اربط كل جانب من جوانب الصندوق بالمسامير لجعله يبدو نظيفًا. كما يوحي اسمه ، لن يحتوي هذا الصندوق على Raspberry Pi فحسب ، بل سيشمل أيضًا مستشعر الحركة الذي ستضعه في الأسفل. بمجرد بناء الصندوق ، قم بطلائه بنفس لون الصندوق. يمكن استخدام تقنية الطباعة ثلاثية الأبعاد لإنشاء هذا الصندوق.

لتصنيع شريط LED ، استخدم مجرى كهربائي تقوم فيه بحفر ثقوب للسماح بتثبيت مصابيح LED. يجب أيضًا طلاء شريط LED. عندما يكون كل شيء جاهزًا ، قم بتثبيت مصابيح LED في القناة وقم بإجراء التوصيل الكهربائي. انتبه إلى ترقيم كل كبلات LED بشكل صحيح بشريط لاصق. سوف يساعدك على تحديد كل LED أثناء الأسلاك.

أخيرًا ، قم بتوصيل الصندوق وشريط LED في مقدمة السلة.

الخطوة 3: جزء الغطاء

الجزء الغطاء
الجزء الغطاء
الجزء الغطاء
الجزء الغطاء

فيما يتعلق بغطاء الصندوق ، فإن الخطوة الأولى هي لصق المحرك المؤازر بالغطاء. يجب أن يتم تمديد الرافعة المالية مسبقًا. ستصطدم الرافعة بوقفة كانت مصنوعة يدويًا مسبقًا. قم بتوصيل صندوق لولبي بالغطاء وقم بعمل ثقب فيه من أجل تثبيت المستشعر فوق الصوتي في الموضع الصحيح. تأكد من توصيل الكابلات بشكل صحيح على الغطاء بشريط لاصق.

الخطوة 4: جزء البرنامج واكتساب البيانات

جزء البرمجيات واكتساب البيانات
جزء البرمجيات واكتساب البيانات
جزء البرنامج واكتساب البيانات
جزء البرنامج واكتساب البيانات
جزء البرنامج واكتساب البيانات
جزء البرنامج واكتساب البيانات

فيما يتعلق بجزء البرنامج ، استخدمنا لغة برمجة Python. يتم حفظ البرنامج في بطاقة SD التي سيتم تشغيلها بواسطة Raspberry Pi عند تشغيله. مخطط الأسلاك متاح أعلاه. صورة دبابيس Gpio متاحة لجميع أنواع التوت على الرابط أدناه:

www.raspberrypi-spy.co.uk/2012/06/simple-g…

من الممكن استخدام مستشعر فوق صوتي ليحل محل كاشف الحركة ، ما عليك سوى إنشاء "حلقة if" في الكود.

كما هو مذكور أعلاه ، يتم نقل البيانات المتعلقة بالمستوى الذي يتم ملء الحاوية إليه إلى موقع ويب تم إنشاؤه على wix.com. في هذا الموقع ، يمكنك العثور على علامات تبويب مختلفة تجمع أعضاء الفريق ، وعرض الأجهزة والبرامج ، … علامة التبويب المثيرة للاهتمام هي في الواقع علامة التبويب "قاعدة البيانات" التي تجمع المعلومات المتعلقة بكمية المهملات مباشرة من SmartBin وتنشئ رسمًا بيانيًا بالبيانات. يعرض الرسم البياني تطور مستوى التعبئة. من الممكن مشاهدة أو تنزيل البيانات من موقع الويب. الرابط أدناه هو موقع الويب الذي استخدمناه وسنوضح لك كيفية القراءة والكتابة على أوراق google باستخدام Python:

www.makeuseof.com/tag/read-write-google-sh…

بخصوص "جزء التشغيل التلقائي" من الكود ، اكتب في المحطة الطرفية: sudo nano / etc / xdg / lxsession / LXDE-pi / autostart

بعد ذلك ، في نهاية النص الذي تم فتحه للتو ، اكتب سطري الكود هذين: python /home/pi/main.py & python /home/pi/csvcontrol.py &

لحفظ aurorun ، اضغط على: C trl + O ثم اضغط على: Enter ثم اضغط على: C trl + X

اكتب آخر سطر من التعليمات البرمجية: sudo reboot

يمكنك أيضًا تنزيل المرفق وهو رمز Python الكامل المستخدم في المشروع. يتم تشغيل كلا الرمزين في نفس الوقت!

ها هو main.py كود:

استيراد RPi. GPIO كـ GPIOimport استيراد ووقت استيراد ووقت استيراد csv

GPIO.setmode (GPIO. BCM)

تحذيرات GPIO (خطأ)

capteurP = 7

المؤازرة = 17

GPIO.setup (مؤازرة ، GPIO. OUT)

GPIO.setup (capteurP ، GPIO. IN)

pwm = GPIO. PWM (17 ، 50)

إعداد GPIO (5 ، GPIO. OUT)

GPIO.setup (6، GPIO. OUT) GPIO.setup (13، GPIO. OUT) GPIO.setup (19، GPIO. OUT) GPIO.setup (20، GPIO. OUT) GPIO.setup (21، GPIO. OUT) إعداد GPIO (26 ، GPIO. OUT)

المثلث = 23

صدى = 24

GPIO.setup (Trig ، GPIO. OUT)

GPIO.setup (صدى ، GPIO. IN)

تحذيرات GPIO (خطأ)

GPIO.output (5 ، خطأ)

GPIO.output (6، False) GPIO.output (13، False) GPIO.output (19، False) GPIO.output (20، False) GPIO.output (21، False) GPIO.output (26، False)

إخراج GPIO (مثلث ، خطأ)

المجموعة الزمنية = time.time ()

المسافة = 100 ذاكرة = 0 وقت.نوم (2) pwm.start (12.5)

احيانا صحيح:

timetac = time.time () إذا كان GPIO.input (capteurP) و timetac-timeet0.9: pwm. ChangeDutyCycle (2.5) time.sleep (0.2) memory = -0.5 pwm. ChangeDutyCycle (0) timetac = time.time () time.sleep (0.5) إذا كان timetac-timeet> 15 أو الذاكرة> 0.4: إذا كانت الذاكرة> 0.4: pwm. ChangeDutyCycle (2.5) time.sleep (1) لـ x في النطاق (0 ، 1): # GPIO.output (Trig ، صحيح) time.sleep (0.01) GPIO.output (مثلث ، خطأ)

بينما GPIO.input (Echo) == 0 و timetac-timeset <17: timetac = time.time () debutImpulsion = time.time ()

بينما GPIO.input (صدى) == 1:

finImpulsion = time.time () إذا كان timetac-timeet <17: Distance1 = round ((finImpulsion - debutImpulsion) * 340 * 100/2، 1) مسافة 2 = مسافة إذا (مسافة 1 - مسافة 2) <1 و (مسافة 2 - مسافة 1) 0.4: dis = round ((60-مسافة) * 5/6، 1) مع open ('capteur.csv'، 'w') مثل csvfile: capteurwriter = csv.writer (csvfile) time_str = datetime.datetime.strftime (datetime.datetime.now ()، '٪ Y-٪ m-٪ d٪ H:٪ M:٪ S') print ('Time: {0} Quantitee: {1}'. format (time_str، dis)) capteurwriter. ذاكرة الكاتب ([time_str، dis]) = -0.1 إذا كانت المسافة <52.5: إخراج GPIO (5 ، صحيح) وإلا: GPIO.output (5 ، خطأ) إذا كانت المسافة <45: GPIO.output (6 ، صحيح) وإلا: GPIO.output (6، False) إذا كانت المسافة <37.5: GPIO.output (13، True) else: GPIO.output (13، False) إذا كانت المسافة <30: GPIO.output (19، True) وإلا: GPIO.output (19، False) إذا كانت المسافة <22.5: GPIO.output (20، True) else: GPIO.output (20، False) إذا كانت المسافة <15: GPIO.output (21، True) وإلا: GPIO.output (21، False) إذا كانت المسافة <7.5: GPIO.output (26 ، صحيح) وإلا: GPIO.output (26 ، خطأ)

ها هو كود csvcontrol.py. لا تنس لصق ملف ".json" الذي تم إنشاؤه في نفس دليل main.py. يتم إنشاء ملف ".json" باستخدام google API. لقطة شاشة متوفرة في الصور.

استيراد البيانات والوقت ووقت الاستيراد استيراد csv استيراد gspread

من oauth2client.service_account import ServiceAccountCredentials

من وقت استيراد استيراد النوم traceback

timec2 = "لول"

while True: time.sleep (5) loc = ('capteur.csv') مع open (loc) كـ csvfile: readCSV = csv.reader (csvfile، delimiter = '،') للصف في readCSV: print (row [0]) timec = row [0] print (row [1]) مسافة = صف [1] مسافة = تعويم (str (مسافة)) إذا timec2! = timec: timec2 = timec print ('Time: {0} Quantitee: { 1} '. تنسيق (توقيت ، مسافة))

SCOPES = ['https://www.googleapis.com/auth/spreadsheets' ، "https://www.googleapis.com/auth/drive.file" ، "https://www.googleapis.com/auth/ قائد"]

بيانات الاعتماد = ServiceAccountCredentials.from_json_keyfile_name ('client_secret.json'، SCOPES) gc = gspread.authorize (بيانات الاعتماد) wks = gc.open ("الرسم البياني"). sheet1 wks = wks.append_row ((timec ، المسافة))

موصى به: