Съдържание:

SmartBin: 4 стъпки
SmartBin: 4 стъпки

Видео: SmartBin: 4 стъпки

Видео: SmartBin: 4 стъпки
Видео: Концепция умной мусорной станции 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 захранвания (5V зарядно за мобилен телефон и 6V захранване) за захранване на Raspberry Pi и сервомотора
  • 1 Ултразвуков сензор за измерване нивото на пълнене на кофата
  • Някои светодиоди за показване на нивото на пълнене (4 зелени, 2 оранжеви и 1 червено)
  • 1 Ултразвуков детектор на движение за откриване на движение
  • 1 16Gb 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 лентата към предната част на кошчето.

Стъпка 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 &

За да запазите авроруната, натиснете: C trl + O След това натиснете: Enter Тогава, натиснете: C trl + X

Запишете като последен код: sudo reboot

Можете също така да изтеглите прикачения файл, който е пълният код на python, използван за проекта. И двата кода се изпълняват едновременно!

Ето кода main.py:

импортиране на RPi. GPIO като GPIOимпортиране на дата и час време за импортиране импортиране на 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 (Echo, GPIO. IN)

GPIO.setwarnings (False)

GPIO.output (5, False)

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)

докато е вярно:

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 или memory> 0.4: if memory> 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 (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 = разстояние if (distance1-distance2) <1 and (distance2-distance1) 0.4: dis = кръг ((60-разстояние)*5/6, 1) с отворен ('capteur.csv', 'w') като csv файл: capteurwriter = csv.writer (csvfile) time_str = datetime.datetime.strftime (datetime.datetime.now (), '%Y-%m-%d%H:%M:%S') print ('Време: {0} Количество: {1}'. формат (time_str, dis)) capteurwriter. writerow ([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, False), ако разстояние <37,5: GPIO.output (13, True) иначе: GPIO.output (13, False), ако разстояние <30: GPIO.output (19, True) иначе: GPIO.output (19, False), ако разстояние <22.5: GPIO.output (20, True) else: GPIO.output (20, False) if distance <15: GPIO.output (21, True) else: GPIO.output (21, False) ако разстояние <7.5: GPIO.output (26, True) иначе: GPIO.output (26, False)

Ето кода на csvcontrol.py. Не забравяйте да поставите създадения ".json" файл в същата директория на main.py. Файлът ".json" се създава с google API. На снимките има екранна снимка.

import datetimeimport time import csv import gspread

от oauth2client.service_account импортиране ServiceAccountCredentials

от време импортиране спящ импорт проследяване обратно

timec2 = 'хаха'

while True: time.sleep (5) loc = ('capteur.csv') с отворен (loc) като csvfile: readCSV = csv.reader (csvfile, delimiter = ',') за ред в readCSV: print (ред [0]) timec = ред [0] печат (ред [1]) разстояние = ред [1] разстояние = поплавък (str (разстояние)), ако timec2! = timec: timec2 = timec print ('Време: {0} Количество: { 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 ("графика"). sheet1 wks = wks.append_row ((timec, разстояние))

Препоръчано: