فهرست مطالب:

SmartBin: 4 مرحله
SmartBin: 4 مرحله

تصویری: SmartBin: 4 مرحله

تصویری: SmartBin: 4 مرحله
تصویری: Smartbin Stage II Layering - Compost in 23 days 2024, نوامبر
Anonim
Image
Image

هدف اصلی این پروژه ایجاد یک دستگاه الکترونیکی است که حداقل از یک Raspberry Pi استفاده می کند. این تیم از 5 مهندس مکانیک آینده و یک مهندس اتوماسیون تشکیل شده است. پروژه ما شامل ساخت سطل زباله است که به طور خودکار توسط حرکت پا در زیر آشکارساز حرکت واقع در مرکز جلوی سطل زباله باز و بسته می شود. یک USB Wifi برای ارسال داده به وب سایت استفاده می شود. این سطل "The SmartBin" نام دارد. ویدئوی طنز بالا SmartBin ابتکاری ما را معرفی می کند.

برای انجام این پروژه و این SmartBin قابل توجه ، چندین ابزار لازم بود:

  • یک متر
  • چسب قوی
  • یک نوار چسب
  • اره چوبی
  • یک پیچ گوشتی
  • یک دستگاه مته
  • یک گیره
  • چاقو

مرحله 1: تجهیزات SmartBin

تجهیزات SmartBin
تجهیزات SmartBin
تجهیزات SmartBin
تجهیزات SmartBin

SmartBin از چراغ های سبز ، نارنجی و قرمز LED تشکیل شده است که بر روی یک وسیله در سمت چپ سطل زباله قرار گرفته اند که نشان می دهد میزان پر شدن آن چقدر است. این چراغ ها به وضوح قابل مشاهده خواهند بود و در صورت لزوم تعویض کیسه زباله به کاربر هشدار می دهند. زبان برنامه نویسی مورد استفاده پایتون است. سطح پر شده سطل زباله به وب سایت زیر منتقل می شود:

در اینجا عناصری که مورد استفاده قرار گرفته اند وجود دارد ، اما به راحتی می توانید یک راه حل جایگزین پیدا کنید:

  • 1 سطل (سطل "روکش روکش")
  • 1 سرو موتور برای باز کردن سطل زباله
  • 1 تمشک پای 2
  • 2 منبع تغذیه (شارژر تلفن همراه 5 ولت و منبع تغذیه 6 ولت) برای تامین رزبری پای و سرو موتور
  • 1 سنسور اولتراسونیک برای اندازه گیری سطح پر شدن سطل
  • برخی از LED ها برای نشان دادن سطح پر شدن (4 سبز ، 2 نارنجی و 1 قرمز)
  • 1 آشکارساز حرکت اولتراسونیک برای تشخیص حرکت
  • 1 کارت SD 16 گیگابایت
  • مقاومت های الکتریکی (10.000 اهم ، 2000 اهم و 1000 اهم)
  • 1 USB USB stick برای فعال کردن انتقال بی سیم به وب سایت.
  • 1 تخته نان و چند کابل تمشک

قیمت برآورد شده 80 یورو است.

مرحله 2: ساخت جعبه تمشک و نوار LED

تولید جعبه تمشک و نوار LED
تولید جعبه تمشک و نوار LED
تولید جعبه تمشک و نوار LED
تولید جعبه تمشک و نوار LED
تولید جعبه تمشک و نوار LED
تولید جعبه تمشک و نوار LED

برای ساخت جعبه تمشک از اره چوبی استفاده کنید. هر طرف جعبه را با پرچ محکم کنید تا تمیز به نظر برسد. همانطور که از نامش مشخص است ، این جعبه نه تنها شامل رزبری پای است ، بلکه شامل سنسور حرکت است که شما در پایین آن قرار می دهید. پس از ساخت جعبه ، آن را به همان رنگ سطل رنگ کنید. برای ایجاد این جعبه می توان از فناوری چاپ سه بعدی استفاده کرد.

برای ساخت نوار LED ، از یک کانال الکتریکی استفاده کنید که در آن سوراخ هایی را ایجاد می کنید تا چراغ های LED نصب شوند. نوار LED نیز باید رنگ آمیزی شود. هنگامی که همه چیز آماده است ، LED ها را در کانال نصب کرده و اتصال برق را برقرار کنید. به شماره گذاری صحیح هر کابل LED با نوار چسب توجه کنید. این به شما کمک می کند تا هر LED را در طول سیم کشی شناسایی کنید.

در نهایت ، جعبه و نوار LED را به جلوی سطل زباله خود وصل کنید.

مرحله 3: قسمت درپوش

قسمت درپوش
قسمت درپوش
قسمت درپوش
قسمت درپوش

در مورد درب سطل زباله ، اولین قدم چسباندن سرو موتور به درپوش است. تمدید اهرم باید قبلاً انجام شود. اهرم به توقفی برخورد می کند که قبلاً دست ساز بود. یک جعبه پیچ را به درب متصل کرده و سوراخی در آن ایجاد کنید تا سنسور اولتراسونیک در موقعیت مناسب نگه داشته شود. اطمینان حاصل کنید که کابل ها را به درستی با نوار چسب روی درب وصل کرده اید.

مرحله 4: بخش نرم افزاری و کسب داده

بخش نرم افزاری و کسب اطلاعات
بخش نرم افزاری و کسب اطلاعات
بخش نرم افزاری و کسب اطلاعات
بخش نرم افزاری و کسب اطلاعات
بخش نرم افزاری و کسب اطلاعات
بخش نرم افزاری و کسب اطلاعات

در مورد بخش نرم افزار ، ما از زبان برنامه نویسی پایتون استفاده کردیم. این برنامه در کارت SD ذخیره می شود که پس از روشن شدن توسط Raspberry Pi اجرا می شود. طرح سیم کشی در بالا موجود است. تصویر پین های Gpio برای همه انواع تمشک در لینک زیر موجود است:

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

ممکن است از یک سنسور اولتراسونیک برای جایگزینی آشکارساز حرکت استفاده کنید ، فقط باید یک "اگر حلقه" در کد ایجاد کنید.

همانطور که در بالا ذکر شد ، داده های مربوط به سطحی که سطل آشغال پر می شود به وب سایت ایجاد شده در wix.com منتقل می شود. در این وب سایت می توانید برگه های مختلفی را مشاهده کنید که اعضای تیم ، سخت افزار و نرم افزار را جمع آوری می کند ، … برگه جالب در واقع برگه "Database" است که اطلاعات مربوط به میزان زباله را مستقیماً از SmartBin جمع آوری کرده و با داده ها نمودار ایجاد می کند. به نمودار تکامل سطح پر کردن را نشان می دهد. مشاهده یا بارگیری داده ها از وب سایت امکان پذیر است. پیوند زیر وب سایتی است که از آن استفاده کردیم و نحوه خواندن و نوشتن در برگه های گوگل با پایتون را به شما نشان می دهد:

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

در مورد "قسمت autorun" کد ، در ترمینال بنویسید: 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

همچنین می توانید پیوست را که کد پایتون کامل مورد استفاده برای پروژه است ، بارگیری کنید. هر دو کد به طور همزمان اجرا می شوند!

در اینجا کد main.py آمده است:

وارد کردن RPi. GPIO به عنوان GPIOimport زمان وارد کردن زمان وارد کردن csv

GPIO.setmode (GPIO. BCM)

GPIO.setwarnings (False)

capteurP = 7

سروو = 17

GPIO.setup (سروو ، GPIO. OUT)

GPIO.setup (capteurP، GPIO. IN)

pwm = GPIO. PWM (17 ، 50)

GPIO.setup (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.setup (26 ، GPIO. OUT)

تریگ = 23

اکو = 24

GPIO.setup (Trig، GPIO. OUT)

GPIO.setup (اکو ، GPIO. IN)

GPIO.setwarnings (False)

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.output (Trig، False)

timeset = time.time ()

فاصله = 100 حافظه = 0 زمان. خواب (2) pwm.start (12.5)

در حالی که True:

timetac = time.time () اگر GPIO.input (capteurP) و timetac-timeset0.9: pwm. ChangeDutyCycle (2.5) time.sleep (0.2) حافظه = -0.5 pwm. ChangeDutyCycle (0) timetac = time.time () time.sleep (0.5) اگر timetac-timeset> 15 یا حافظه> 0.4: اگر حافظه> 0.4: pwm. ChangeDutyCycle (2.5) time.sleep (1) برای x در محدوده (0 ، 1): # GPIO.output (Trig ، درست) time.sleep (0.01) GPIO.output (Trig، False)

در حالی که GPIO.input (اکو) == 0 و timetac-timeset <17: timetac = time.time () debutImpulsion = time.time ()

در حالی که GPIO.input (اکو) == 1:

finImpulsion = time.time () if timetac-timeset <17: distance1 = round ((finImpulsion-debutImpulsion) * 340 * 100 /2، 1) distance2 = distance if (distance1-distance2) <1 و (distance2-distance1) 0.4: dis = round ((60-distance)*5/6، 1) with open ('capteur.csv'، 'w') as csvfile: capteurwriter = csv.writer (csvfile) time_str = datetime.datetime.strftime (datetime.datetime.now () ، '٪ Y-٪ m-٪ d٪ H:٪ M:٪ S') چاپ ('Time: {0} Quantitee: {1}'. format (time_str، dis)) capteurwriter. authorow ([time_str، dis]) memory = -0.1 if distance <52.5: GPIO.output (5، True) else: GPIO.output (5، False) if distance <45: GPIO.output (6، True) else: GPIO.output (6 ، نادرست) اگر فاصله <37.5: GPIO.output (13 ، True) دیگر: GPIO.output (13 ، False) اگر فاصله <30: GPIO.output (19 ، True) در غیر این صورت: GPIO.output (19 ، نادرست) اگر فاصله <22.5: GPIO.output (20 ، True) در غیر این صورت: GPIO.output (20 ، False) اگر فاصله <15: GPIO.output (21 ، True) دیگر: GPIO.output (21 ، False) اگر فاصله <7.5: GPIO.output (26 ، True) دیگر: GPIO.output (26 ، False)

در اینجا کد csvcontrol.py است. فراموش نکنید که فایل ایجاد شده ".json" را در همان دایرکتوری main.py قرار دهید. فایل ".json" با google API ایجاد شده است. اسکرین شات در تصاویر موجود است.

واردات datetimeimport زمان وارد کردن csv واردات gspread

از oauth2client.service_account وارد کنید ServiceAccountCredentials

از زمان وارد کردن ردیابی واردات خواب

timec2 = 'lol'

while True: time.sleep (5) loc = ('capteur.csv') with open (loc) as csvfile: readCSV = csv.reader (csvfile، delimiter = '،') برای سطر در readCSV: چاپ (ردیف [0]) timec = row [0] print (row [1]) distance = row [1] distance = float (str (distance)) if timec2! = timec: timec2 = timec print ('Time: {0} Quantitee: { قالب 1} '. (timec ، فاصله))

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 ("graph"). sheet1 wks = wks.append_row ((timec ، distance))

توصیه شده: