Мазмұны:

SmartBin: 4 қадам
SmartBin: 4 қадам

Бейне: SmartBin: 4 қадам

Бейне: SmartBin: 4 қадам
Бейне: Концепция умной мусорной станции Smart Bin 2024, Қараша
Anonim
Image
Image

Бұл жобаның негізгі мақсаты - кем дегенде бір Raspberry Pi қолданатын электронды құрылғыны құру. Команда 5 болашақ инженер -механиктен және бір автоматика инженерінен тұрады. Біздің жоба қоқыс жәшігінің алдыңғы жағында орналасқан қозғалыс детекторының астындағы аяқ қозғалысы автоматты түрде ашылатын және жабылатын қоқыс жәшігін жасаудан тұрады. Wifi USB таяқшасы веб -сайтқа деректерді жіберу үшін қолданылады. Бұл қоқыс жәшігі «SmartBin» деп аталады. Жоғарыдағы әзіл бейне біздің инновациялық SmartBin -мен таныстырады.

Бұл керемет SmartBin жобасын жүзеге асыру үшін бірнеше құралдар қажет болды:

  • Бір метр
  • Күшті желім
  • Жабысқақ таспа
  • Ағаш ара
  • Бұрауыш
  • Бұрғылау машинасы
  • Қысқыш
  • Пышақ

1 -қадам: SmartBin жабдықтары

SmartBin жабдықтары
SmartBin жабдықтары
SmartBin жабдықтары
SmartBin жабдықтары

SmartBin жасыл, қызғылт сары және қызыл жарықдиодты шамдардан тұрады, олар қоқыс жәшігінің сол жағындағы қондырғыға қойылған, ол оның қаншалықты толтырылғанын көрсетеді. Бұл шамдар анық көрінеді және қоқыс жәшігін ауыстыру қажет болған кезде пайдаланушыны ескертеді. Қолданылатын программалау тілі - Python. Қоқыс жәшігінің толтыру деңгейі келесі веб -сайтқа жіберіледі:

Міне, қолданылған элементтер, бірақ сіз балама шешімді оңай таба аласыз:

  • 1 қоқыс жәшігі
  • 1 Қалтаны ашу үшін сервомотор
  • 1 таңқурай Pi 2
  • Raspberry Pi мен сервомоторды қамтамасыз ету үшін 2 қуат көздері (5В ұялы телефон зарядтағыш және 6В қуат көзі)
  • 1 Қоқыс толтыру деңгейін өлшеуге арналған ультрадыбыстық сенсор
  • Кейбір жарық диодтары толтыру деңгейін көрсетеді (4 жасыл, 2 қызғылт сары және 1 қызыл)
  • 1 Қозғалысты анықтау үшін ультрадыбыстық қозғалыс детекторы
  • 1 16 Гб SD картасы
  • Электрлік резисторлар (10.000 Ом, 2000 Ом және 1000 Ом)
  • Веб -сайтқа сымсыз жіберуді қосу үшін 1 WiFi USB таяқшасы.
  • 1 Нан тақтасы мен бірнеше таңқурай кабельдері

Өндірістің болжамды бағасы - 80 евро.

2 -қадам: Таңқурай қорапшасы мен жарықдиодты жолақты өндіру

Таңқурай қорапшасы мен жарықдиодты жолақтың өндірісі
Таңқурай қорапшасы мен жарықдиодты жолақтың өндірісі
Таңқурай қорапшасы мен жарықдиодты жолақ өндірісі
Таңқурай қорапшасы мен жарықдиодты жолақ өндірісі
Таңқурай қорапшасы мен жарықдиодты жолақтың өндірісі
Таңқурай қорапшасы мен жарықдиодты жолақтың өндірісі

Таңқурай қорабын жасау үшін ағаш араны қолданыңыз. Таза көрінуі үшін қораптың әр жағын тойтармалармен бекітіңіз. Атауынан көрініп тұрғандай, бұл қорапта Raspberry Pi ғана емес, сонымен қатар төменгі жағында орналастырылатын қозғалыс сенсоры болады. Қорап салынғаннан кейін оны қоқыс жәшігі сияқты түске бояңыз. Бұл қорапты жасау үшін 3D басып шығару технологиясын қолдануға болады.

Жарық диодты штанганы жасау үшін жарықдиодты шамдарды орнатуға мүмкіндік беретін тесіктерді бұрғылайтын электр каналын пайдаланыңыз. Жарық диодты жолақты да бояу керек. Барлығы дайын болған кезде, жарықдиодты каналға орнатып, электрлік қосылуды жасаңыз. Жарықдиодты кабельдердің әрқайсысын жабысқақ таспамен дұрыс нөмірлеуге назар аударыңыз. Бұл сымдар кезінде әр жарық диодты анықтауға көмектеседі.

Соңында қорапты және жарықдиодты жолақты қоқыс жәшігінің алдыңғы жағына бекітіңіз.

3 -қадам: қақпақ бөлігі

Қақпақ бөлігі
Қақпақ бөлігі
Қақпақ бөлігі
Қақпақ бөлігі

Қоқыс жәшігінің қақпағына келетін болсақ, бірінші кезекте сервомоторды қақпаққа жабыстыру қажет. Левереджді кеңейту бұрын жасалуы керек. Тұтқа бұрын қолдан жасалған тоқтауға түседі. Қақпаққа бұрандалы қорапты бекітіңіз және ультрадыбыстық сенсорды дұрыс күйде ұстау үшін тесік жасаңыз. Сымдарды қақпақшаға таспамен дұрыс бекіткеніңізге көз жеткізіңіз.

4 -қадам: Бағдарламалық қамтамасыз ету бөлігі және деректерді алу

Бағдарламалық қамтамасыз ету бөлігі және мәліметтерді алу
Бағдарламалық қамтамасыз ету бөлігі және мәліметтерді алу
Бағдарламалық қамтамасыз ету бөлігі және мәліметтерді алу
Бағдарламалық қамтамасыз ету бөлігі және мәліметтерді алу
Бағдарламалық қамтамасыз ету бөлігі және мәліметтерді алу
Бағдарламалық қамтамасыз ету бөлігі және мәліметтерді алу

Бағдарламалық қамтамасыз ету бөлігіне қатысты біз питон программалау тілін қолдандық. Бағдарлама Raspberry Pi қосылған кезде SD-картасында сақталады. Қосылу схемасы жоғарыда көрсетілген. Gpio түйреуіштерінің суреті таңқурайдың барлық түрлері үшін төмендегі сілтемеде қол жетімді:

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

Қозғалыс детекторын ауыстыру үшін ультрадыбыстық сенсорды қолдануға болады, тек кодта «егер цикл» құру қажет.

Жоғарыда айтылғандай, қоқыс жәшігінің толтырылу деңгейіне қатысты мәліметтер 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

Сіз сонымен қатар жоба үшін пайдаланылатын толық питон коды болып табылатын қосымшаны жүктей аласыз. Екі код бір уақытта іске қосылады!

Міне main.py коды:

импорт RPi. GPIO ретінде GPIOimport datetime импорттау уақыты импорт csv

GPIO.setmode (GPIO. BCM)

GPIO.setwarnings (жалған)

капитан Р = 7

servo = 17

GPIO. орнату (серво, 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. шығысы (5, жалған)

GPIO.output (6, False) GPIO.output (13, False) GPIO.output (19, False) GPIO.output (20, False)

GPIO.output (Trig, False)

timeset = time.time ()

қашықтық = 100 жады = 0 уақыт.ұйқы (2) pwm.бастау (12.5)

шындық кезінде:

timetac = time.time () егер GPIO.input (capteurP) және timetac-timeset0.9: pwm. ChangeDutyCycle (2.5) time.sleep (0.2) жады = -0.5 pwm.hangeDutyCycle (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. шығысы (Trig, True) time.sleep (0.01) GPIO.output (Trig, False)

GPIO.input (Echo) == 0 және timetac-timeset <17: timetac = time.time () debutImpulsion = time.time ()

GPIO.input (жаңғырық) == 1:

finImpulsion = time.time () егер timetac-timeset <17: қашықтық1 = дөңгелек ((финИмпульсия-дебютИмпульсия) * 340 * 100/2, 1) қашықтық2 = егер (қашықтық1-қашықтық2) <1 және (қашықтық2-қашықтық1) 0,4: dis = дөңгелек ((60-қашықтық)*5/6, 1) csvfile ретінде ашық ('capteur.csv', 'w'): capteurwriter = csv.writer (csvfile) time_str = datetime.datetime.strftime (datetime).datetime.now (), '%Y-%m-%d%H:%M:%S') басып шығару ('Уақыт: {0} Quantitee: {1}'. формат (time_str, dis)) капитан. жазушы ([time_str, dis]) жады = -0.1 егер қашықтық <52.5: GPIO. шығысы (5, True) басқа: GPIO. шығысы (5, False) егер қашықтық <45: GPIO. шығысы (6, True) басқа: GPIO.output (6, False) егер қашықтық <37.5: GPIO.output (13, True) басқа: GPIO.output (13, False) егер қашықтық <30: GPIO. шығысы (19, True) басқа: GPIO. шығысы (19, False) егер қашықтық <22.5: GPIO. шығысы (20, True) басқа: GPIO. шығысы (20, False) егер қашықтық <15: GPIO. шығысы (21, True) басқа: GPIO. шығысы (21, False) егер қашықтық <7.5: GPIO.output (26, True) басқа: GPIO.output (26, False)

Міне csvcontrol.py коды. Жасалған «.json» файлын main.py каталогына қоюды ұмытпаңыз. «. Json» файлы google API көмегімен жасалады. Скриншот суреттерде бар.

datetime импорт уақыты импорт csv импорт gspread

oauth2client.service_account импорттау ServiceAccountCredentials

уақыттан импорттық ұйқыны импорттау

timec2 = 'lol'

while True: time.sleep (5) loc = ('capteur.csv') with open (loc) with csvfile: readCSV = csv.reader (csvfile, delimiter = ',') readCSV ішіндегі жол үшін: басып шығару (жол [0)]) timec = жол [0] басып шығару (жол [1]) қашықтық = жол [1] қашықтық = қалқып шығу (str (қашықтық)) егер timec2! = timec: timec2 = timec басып шығару ('Уақыт: {0} Сан саны: { 1} 'форматы (уақыт, қашықтық))

ҚОЛДАНУ ҚАЛДАРЫ = ['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 («график»). парақ1 wks = wks.append_row ((уақыт, қашықтық))

Ұсынылған: