Spisu treści:

SmartBin: 4 kroki
SmartBin: 4 kroki

Wideo: SmartBin: 4 kroki

Wideo: SmartBin: 4 kroki
Wideo: Amazing arduino project 2024, Listopad
Anonim
Image
Image

Głównym celem tego projektu jest stworzenie urządzenia elektronicznego wykorzystującego co najmniej jedno Raspberry Pi. Zespół składa się z 5 przyszłych inżynierów mechaników i jednego automatyka. Nasz projekt polega na wykonaniu kosza na śmieci, który otwiera się i zamyka automatycznie wyzwolony ruchem stopy pod czujnikiem ruchu umieszczonym pośrodku z przodu kosza. Pamięć USB Wi-Fi służy do przesyłania danych na stronę internetową. Ten pojemnik nazywa się „SmartBin”. Powyższy humorystyczny film przedstawia nasz innowacyjny SmartBin.

Aby zrealizować ten projekt i ten niezwykły SmartBin, potrzebnych było kilka narzędzi:

  • Metr
  • Mocny klej
  • Taśma klejąca
  • Piła do drewna
  • Śrubokręt
  • Wiertarka
  • Zacisk
  • Nóż

Krok 1: Sprzęt SmartBin

Wyposażenie SmartBin
Wyposażenie SmartBin
Wyposażenie SmartBin
Wyposażenie SmartBin

SmartBin składa się z zielonych, pomarańczowych i czerwonych diod LED, które są umieszczone na uchwycie po lewej stronie pojemnika, które wskazują, jak jest napełniony. Światła te będą wyraźnie widoczne i zaalarmują użytkownika o konieczności wymiany worka na śmieci. Używanym językiem programowania jest Python. Zmierzony poziom napełnienia kosza jest przesyłany na następującą stronę internetową:

Oto elementy, które zostały wykorzystane, ale możesz łatwo znaleźć alternatywne rozwiązanie:

  • 1 pojemnik (pojemnik z pokrywą uchylną)
  • 1 serwomotor do otwierania pojemnika
  • 1 Raspberry Pi 2
  • 2 zasilacze (ładowarka do telefonu komórkowego 5 V i zasilacz 6 V) do zasilania Raspberry Pi i serwomotoru;
  • 1 czujnik ultradźwiękowy do pomiaru poziomu napełnienia pojemnika
  • Niektóre diody LED do wyświetlania poziomu napełnienia (4 zielone, 2 pomarańczowe i 1 czerwona)
  • 1 ultradźwiękowy czujnik ruchu do wykrywania ruchu
  • 1 karta SD 16 Gb
  • Rezystory elektryczne (10.000 omów, 2000 omów i 1000 omów)
  • 1 pamięć USB WiFi umożliwiająca bezprzewodową transmisję na stronę internetową.
  • 1 płytka do krojenia chleba i kilka kabli Raspberry

Szacunkowa cena produkcji to 80 €.

Krok 2: Produkcja Raspberry Box i listwy LED

Produkcja Raspberry Boxa i listwy LED
Produkcja Raspberry Boxa i listwy LED
Produkcja Raspberry Boxa i listwy LED
Produkcja Raspberry Boxa i listwy LED
Produkcja Raspberry Boxa i listwy LED
Produkcja Raspberry Boxa i listwy LED

Do produkcji skrzynki Raspberry użyj piły do drewna. Przymocuj każdą stronę pudełka nitami, aby wyglądało na czyste. Jak sama nazwa wskazuje, to pudełko będzie zawierało nie tylko Raspberry Pi, ale także czujnik ruchu, który umieścisz na dole. Po zbudowaniu pudełka pomaluj je na ten sam kolor co kosz. Do stworzenia tego pudełka można wykorzystać technologię druku 3D.

Do produkcji listwy LED użyj przewodu elektrycznego, w którym wywiercisz otwory umożliwiające instalację lamp LED. Listwa LED również musi zostać pomalowana. Gdy wszystko będzie gotowe, zainstaluj diody LED w kanale i wykonaj połączenie elektryczne. Zwróć uwagę, aby odpowiednio ponumerować każdy kabel LED za pomocą taśmy samoprzylepnej. Pomoże Ci zidentyfikować każdą diodę LED podczas okablowania.

Na koniec przymocuj pudełko i pasek LED z przodu kosza.

Krok 3: Część z pokrywką

Część z pokrywką
Część z pokrywką
Część z pokrywką
Część z pokrywką

Jeśli chodzi o pokrywę pojemnika, pierwszym krokiem jest przyklejenie siłownika do pokrywy. Rozszerzenie dźwigni musi być wykonane wcześniej. Dźwignia uderzy w ogranicznik, który wcześniej był wykonywany ręcznie. Przymocuj puszkę na śruby do pokrywy i wykonaj w niej otwór, aby utrzymać czujnik ultradźwiękowy we właściwej pozycji. Upewnij się, że kable na pokrywie są prawidłowo przymocowane taśmą.

Krok 4: Część oprogramowania i akwizycja danych

Część oprogramowania i akwizycja danych
Część oprogramowania i akwizycja danych
Część oprogramowania i akwizycja danych
Część oprogramowania i akwizycja danych
Część oprogramowania i akwizycja danych
Część oprogramowania i akwizycja danych

Jeśli chodzi o część oprogramowania, użyliśmy języka programowania Python. Program jest zapisywany na karcie SD, która po włączeniu będzie uruchamiana przez Raspberry Pi. Schemat okablowania dostępny jest powyżej. Obraz pinów Gpio jest dostępny dla wszystkich rodzajów malin pod poniższym linkiem:

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

Możliwe jest użycie czujnika ultradźwiękowego do zastąpienia czujnika ruchu, wystarczy utworzyć „pętlę if” w kodzie.

Jak wspomniano powyżej, dane dotyczące poziomu zapełnienia kosza przekazywane są do strony internetowej utworzonej na wix.com. Na tej stronie można znaleźć różne zakładki, które gromadzą członków zespołu, prezentację sprzętu i oprogramowania, … Ciekawą zakładką jest tak naprawdę zakładka „Baza danych”, która zbiera informacje o ilości śmieci bezpośrednio ze SmartBin i tworzy wykres z danymi. Wykres przedstawia ewolucję poziomu wypełnienia. Możliwe jest przeglądanie lub pobieranie danych ze strony internetowej. Poniższy link to strona, z której korzystaliśmy i pokaże Ci, jak czytać i pisać w arkuszach Google za pomocą Pythona:

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

Jeśli chodzi o "część autorun" kodu, napisz w terminalu: sudo nano /etc/xdg/lxsession/LXDE-pi/autostart

Następnie na końcu skryptu, który właśnie się otworzył, napisz te dwie linie kodu: python /home/pi/main.py & python /home/pi/csvcontrol.py &

Aby zapisać aurorun, naciśnij: C trl + O Następnie naciśnij: Enter Następnie naciśnij: C trl + X

Napisz jako ostatnią linię kodu: sudo reboot

Możesz również pobrać załącznik, który jest pełnym kodem Pythona używanym w projekcie. Oba kody są uruchamiane w tym samym czasie!

Oto kod main.py:

importuj RPi. GPIO jako GPIOimport datetime import time import csv

GPIO.setmode(GPIO. BCM)

GPIO.setwarnings (Fałsz)

porywaczP = 7

serwo = 17

GPIO.setup(serwo, 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)

Trygon = 23

Echo = 24

GPIO.setup(Trig, GPIO. OUT)

GPIO.setup(Echo, GPIO. IN)

GPIO.setwarnings (Fałsz)

GPIO.output(5, Fałsz)

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 (wyzwalanie, fałsz)

czas = czas.czas()

odległość=100 pamięć=0 czas.sen(2) pwm.start(12,5)

podczas gdy prawda:

timetac = time.time() if GPIO.input(capteurP) i timetac-timeset0.9: pwm. ChangeDutyCycle(2.5) time.sleep(0.2) memory=-0.5 pwm. ChangeDutyCycle(0) timetac = time.time() time.sleep(0.5) if timetac-timeset>15 lub memory>0.4: if memory>0.4: pwm. ChangeDutyCycle(2.5) time.sleep(1) for x in range(0, 1): # GPIO.output(Trig, True) time.sleep(0.01) GPIO.output(Trig, False)

while GPIO.input(Echo)==0 i timetac-timeset<17: timetac = time.time() debiutImpulsion = time.time()

podczas gdy GPIO.input(Echo)==1:

finImpulsion = time.time() if timetac-timeset<17: dystans1 = okrągły((finImpulsion - impulsja debiutu) * 340 * 100 / 2, 1) dystans2=dystans jeżeli (odległość1 odległość2)<1 i (odległość2 odległość1)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') print('Czas:{0} Ilość:{1}'.format(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) if distance <37.5: GPIO.output(13, True) else: GPIO.output(13, False) if distance <30: GPIO.output(19, True) else: GPIO.output(19, False) jeśli odległość < 22,5: GPIO.output(20, True) else: GPIO.output(20, False) jeśli odległość < 15: GPIO.output(21, True) else: GPIO.output(21, False) jeśli odległość <7,5: GPIO.output(26, True) else: GPIO.output(26, False)

Oto kod csvcontrol.py. Nie zapomnij wkleić utworzonego pliku ".json" w tym samym katalogu co main.py. Plik „.json” jest tworzony za pomocą Google API. Na zdjęciach dostępny jest zrzut ekranu.

import datetimeimport time import csv import gspread

z oauth2client.service_account importuj poświadczenia konta usługi

od czasu import uśpienia import traceback

timec2='lol'

while True: time.sleep(5) loc=('capteur.csv') with open(loc) as csvfile: readCSV = csv.reader(csvfile, delimiter=', ') dla wiersza w readCSV: print(row[0]) timec=row[0] print(row[1]) distance=row[1] distance=float(str(distance)) if timec2!=timec: timec2=timec print('Czas:{0} Ilość:{ 1}'.format(czas, odległość))

ZAKRESY = ['https://www.googleapis.com/auth/spreadsheets', "https://www.googleapis.com/auth/drive.file", "https://www.googleapis.com/auth/ prowadzić samochód"]

poświadczenia = ServiceAccountCredentials.from_json_keyfile_name('client_secret.json', SCOPES) gc = gspread.authorize(credentials) wks= gc.open("graph").sheet1 wks= wks.append_row((timec, dystans))

Zalecana: