Բովանդակություն:

SmartBin: 4 քայլ
SmartBin: 4 քայլ

Video: SmartBin: 4 քայլ

Video: SmartBin: 4 քայլ
Video: Концепция умной мусорной станции Smart Bin 2024, Նոյեմբեր
Anonim
Image
Image

Այս նախագծի հիմնական նպատակն է ստեղծել էլեկտրոնային սարք, որն օգտագործում է առնվազն մեկ Raspberry Pi: Թիմը բաղկացած է 5 ապագա մեխանիկական ինժեներներից և մեկ ավտոմատացման ինժեներից: Մեր նախագիծը բաղկացած է աղբարկղ պատրաստելուց, որը ինքնաբերաբար բացվում և փակվում է ՝ ոտքի շարժումով շարժվող դետեկտորի տակ, որը գտնվում է աղբարկղի առջևի կենտրոնում: Wifi USB սկավառակն օգտագործվում է տվյալներ վեբ կայք ուղարկելու համար: Այս աղբարկղը կոչվում է «The SmartBin»: Վերը նշված հումորային տեսանյութը ներկայացնում է մեր նորարարական SmartBin- ը:

Այս նախագիծը և այս ուշագրավ SmartBin- ը իրականացնելու համար անհրաժեշտ էին մի քանի գործիքներ.

  • Մի մետր
  • Ուժեղ սոսինձ
  • Կպչուն ժապավեն
  • Փայտե սղոց
  • Պտուտակահան
  • Հորատման մեքենա
  • Սեղմիչ
  • Դանակ

Քայլ 1: SmartBin սարքավորում

SmartBin սարքավորում
SmartBin սարքավորում
SmartBin սարքավորում
SmartBin սարքավորում

SmartBin- ը բաղկացած է կանաչ, նարնջագույն և կարմիր LED լույսերից, որոնք տեղադրված են աղբարկղի ձախ կողմում գտնվող ամրացման վրա, ինչը ցույց կտա, թե որքանով է այն լցված: Այս լույսերը հստակ տեսանելի կլինեն և կզգուշացնեն օգտվողին, երբ անհրաժեշտ է փոխարինել աղբարկղը: Օգտագործվող ծրագրավորման լեզուն Python- ն է: Աղբարկղի լցված մակարդակը փոխանցվում է հետևյալ կայքէջին ՝

Ահա այն տարրերը, որոնք օգտագործվել են, բայց դուք կարող եք հեշտությամբ գտնել այլընտրանքային լուծում.

  • 1 աղբարկղ («պտտվող ծածկ»)
  • 1 սերվոմոտոր `աղբարկղը բացելու համար
  • 1 ազնվամորի պի 2
  • 2 Էներգամատակարարում (5 Վ բջջային հեռախոսի լիցքավորիչ և 6 Վ էլեկտրամատակարարում) `Raspberry Pi- ին և սերվոմոտորին մատակարարելու համար
  • 1 Ուլտրաձայնային տվիչ `աղբարկղի լցոնման մակարդակը չափելու համար
  • Որոշ լուսադիոդներ ՝ լրացման մակարդակը ցուցադրելու համար (4 կանաչ, 2 նարնջագույն և 1 կարմիր)
  • 1 Ուլտրաձայնային շարժման դետեկտոր `շարժում հայտնաբերելու համար
  • 1 16 Գբ SD քարտ
  • Էլեկտրական ռեզիստորներ (10.000 Օմ, 2000 Օմ և 1000 Օմ)
  • 1 WiFi USB ձողիկ ՝ անլար փոխանցումը դեպի կայք միացնելու համար:
  • 1 տախտակ և որոշ ազնվամորու մալուխներ

Արտադրության գինը 80 € է:

Քայլ 2. Ազնվամորու տուփի և LED բարերի արտադրություն

Ազնվամորու տուփի և LED բարերի արտադրություն
Ազնվամորու տուփի և LED բարերի արտադրություն
Ազնվամորու տուփի և LED բարերի արտադրություն
Ազնվամորու տուփի և LED բարերի արտադրություն
Ազնվամորու տուփի և LED բարերի արտադրություն
Ազնվամորու տուփի և LED բարերի արտադրություն

Ազնվամորու տուփը պատրաստելու համար օգտագործեք փայտի սղոց: Ամրացրեք տուփի յուրաքանչյուր կողմը պտուտակներով, որպեսզի այն մաքուր տեսք ունենա: Ինչպես նշվում է իր անունից, այս տուփը պարունակում է ոչ միայն Raspberry Pi, այլև կներառի շարժման տվիչ, որը դուք կտեղադրեք ներքևում: Տուփը կառուցվելուց հետո ներկեք այն նույն գույնով, ինչ աղբարկղը: Այս տուփը ստեղծելու համար կարող է օգտագործվել 3D տպագրության տեխնոլոգիան:

LED բարը պատրաստելու համար օգտագործեք էլեկտրական խողովակ, որի մեջ անցքեր եք հորատում `թույլ տալով լուսադիոդային լույսերը տեղադրվել: LED բարը նույնպես պետք է ներկված լինի: Երբ ամեն ինչ պատրաստ է, տեղադրեք LED- ները խողովակում և կատարեք էլեկտրական միացում: Ուշադրություն դարձրեք յուրաքանչյուր LED մալուխի սոսինձ ժապավենով ճիշտ համարակալմանը: Դա կօգնի ձեզ բացահայտել յուրաքանչյուր LED- ը էլեկտրագծերի տեղադրման ընթացքում:

Վերջապես, տուփը և LED բարը ամրացրեք ձեր աղբարկղի առջևի մասում:

Քայլ 3: Կափարիչի մաս

Կափարիչի մասը
Կափարիչի մասը
Կափարիչի մասը
Կափարիչի մասը

Ինչ վերաբերում է աղբամանի կափարիչին, ապա առաջին քայլը սերվոմոտորին սոսնձելն է կափարիչին: Լծակի երկարաձգումը պետք է նախապես կատարվի: Լծակը կհարվածի մի կանգառի, որը նախկինում ձեռքի աշխատանք էր: Կափարիչին ամրացրեք պտուտակային տուփ և դրա մեջ անցք կատարեք, որպեսզի ուլտրաձայնային տվիչը ճիշտ դիրքում պահվի: Համոզվեք, որ կափարիչի վրա մալուխները ճիշտ կցել եք ժապավենով:

Քայլ 4. Softwareրագրաշարի մաս և տվյալների ձեռքբերում

Softwareրագրային ապահովման մաս և տվյալների ձեռքբերում
Softwareրագրային ապահովման մաս և տվյալների ձեռքբերում
Softwareրագրային ապահովման մաս և տվյալների ձեռքբերում
Softwareրագրային ապահովման մաս և տվյալների ձեռքբերում
Softwareրագրային ապահովման մաս և տվյալների ձեռքբերում
Softwareրագրային ապահովման մաս և տվյալների ձեռքբերում

Ինչ վերաբերում է ծրագրային ապահովման հատվածին, մենք օգտագործեցինք python ծրագրավորման լեզուն: Programրագիրը պահվում է SD քարտում, որը միացնելու դեպքում գործարկվելու է Raspberry Pi- ի կողմից: Էլեկտրագծերի սխեման հասանելի է վերևում: Gpio կապում պատկերը հասանելի է ազնվամորու բոլոր տեսակների համար ՝ ստորև բերված հղումով.

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

Շարժման դետեկտորին փոխարինելու համար հնարավոր է օգտագործել ուլտրաձայնային տվիչ, պարզապես անհրաժեշտ է կոդի մեջ ստեղծել «եթե օղակ»:

Ինչպես վերը նշվեց, աղբարկղը լցված մակարդակին վերաբերող տվյալները փոխանցվում են wix.com կայքում ստեղծված կայքին: Այս կայքում կարող եք գտնել տարբեր ներդիրներ, որոնք հավաքում են թիմի անդամներին, ապարատային և ծրագրային ապահովման ներկայացում…. Գրաֆիկը ցուցադրում է լցոնման մակարդակի էվոլյուցիան: Հնարավոր է տեսնել կամ ներբեռնել տվյալները կայքից: Ստորև բերված հղումը այն կայքն է, որը մենք օգտագործել ենք և ձեզ ցույց կտա, թե ինչպես կարդալ և գրել google թերթերում python- ով.

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 Հետո, սեղմեք ՝ Մտնել Հետո, սեղմեք ՝ C trl + X

Գրեք որպես վերջին կոդի տող `sudo reboot

Կարող եք նաև ներբեռնել հավելվածը, որը նախագծի համար օգտագործվող պիթոնի ամբողջական ծածկագիրն է: Երկու կոդերն էլ գործարկվում են միաժամանակ:

Ահա main.py կոդը ՝

ներմուծել RPi. GPIO- ն որպես GPIOimport ամսաթվերի ներմուծման ժամանակը ներմուծման csv

GPIO.setmode (GPIO. BCM)

GPIO.setwarnings (Կեղծ)

capteurP = 7

սերվո = 17

GPIO.setup (servo, 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 (Կեղծ)

GPIO.output (5, կեղծ)

GPIO.output (6, կեղծ) GPIO.output (13, կեղծ) GPIO.output (19, կեղծ) GPIO.output (20, կեղծ) GPIO.output (21, կեղծ) GPIO.output (26, կեղծ)

GPIO.output (Trig, False)

timeset = time.time ()

հեռավորություն = 100 հիշողություն = 0 անգամ: քուն (2) pwm. սկիզբ (12.5)

իսկական True:

timetac = time.time () եթե GPIO.input (capteurP) և timetac-timeset0.9: pwm. ChangeDutyCycle (2.5) time.sleep (0.2) memory = -0.5 pwm. ChangeDutyCycle (0) timetac = time.time () time.sleep (0.5) եթե timetac-timeset> 15 կամ հիշողություն> 0.4: եթե memory> 0.4: pwm. ChangeDutyCycle (2.5) time.sleep (1) x միջակայքում (0, 1):, Trueշմարիտ) time.sleep (0.01) GPIO.putput (Trig, False)

մինչ GPIO.input (Echo) == 0 և timetac-timeset <17: timetac = time.time () debutImpulsion = time.time ()

իսկ GPIO.input (Echo) == 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 = կլոր ((60 հեռավորություն)*5/6, 1) բաց ('capteur.csv', 'w') csvfile- ով: capteurwriter = csv.writer (csvfile) time_str = datetime.datetime.strftime (datetime.datetime.now (), '%Y-%m-%d%H:%M:%S') տպել (':ամանակը ՝ {0} Քանակը ՝ {1}'. ֆորմատ (time_str, dis)) capteurwriter: գրող ([time_str, dis]) հիշողություն = -0.1, եթե հեռավորությունը <52.5: GPIO.output (5, True) այլ ՝ GPIO.output (5, False) եթե հեռավորությունը <45: GPIO.output (6, True) այլ: GPIO.output (6, False) if distance <37.5: GPIO.output (13, True) else: GPIO.output (13, False) if distance <30: GPIO.output (19, True) else: 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.putput (26, True) այլ ՝ GPIO.output (26, False)

Ահա csvcontrol.py ծածկագիրը: Մի մոռացեք, որ ստեղծված «.json» ֆայլը տեղադրեք main.py- ի նույն գրացուցակում: «. Json» ֆայլը ստեղծվում է google API- ով: Նկարներում առկա է սքրինշոթ:

ներմուծել datetimeimport ժամանակ ներմուծել csv ներմուծել gspread

oauth2client.service_account ներմուծումից ServiceAccountCredentials

ժամանակից ներմուծել քնի ներմուծման հետագծում

timec2 = 'լոլ'

while True: time.sleep (5) loc = ('capteur.csv') բաց (loc) որպես csvfile: readCSV = csv.reader (csvfile, delimiter = ',') ընթերցման տողի համար]) timec = տող [0] տպագիր (տող [1]) հեռավորություն = տող [1] հեռավորություն = բոց (հեռավորություն)) եթե timec2! = timec: timec2 = timec տպագիր (':ամանակը ՝ {0} Քանակական: { 1} '. Ֆորմատ (timec, հեռավորություն))

SCOPES = ['https://www.googleapis.com/auth/spreadsheets', "https://www.googleapis.com/auth/drive.file", "https://www.googleapis.com/auth/ քշել »]

հավատարմագրեր = ServiceAccountCredentials.fr_json_keyfile_name ('client_secret.json', SCOPES) gc = gspread.authorize (credentials) wks = gc.open ("graph"). sheet1 wks = wks.append_row ((timec, distance))

Խորհուրդ ենք տալիս: