Spisu treści:
- Krok 1: Sprzęt SmartBin
- Krok 2: Produkcja Raspberry Box i listwy LED
- Krok 3: Część z pokrywką
- Krok 4: Część oprogramowania i akwizycja danych
Wideo: SmartBin: 4 kroki
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:30
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
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
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ą
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
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:
Pierwsze kroki z IDE STM32f767zi Cube i prześlij własny szkic: 3 kroki
Rozpoczęcie pracy z IDE STM32f767zi i przesłanie własnego szkicu: KUP (kliknij test, aby kupić/odwiedzić stronę internetową) OPROGRAMOWANIE STM32F767Z WSPIERANE· IDE STM32CUBE· KEIL MDK ARM µVISION· EWARM IAR EMBEDDED WORKBENCH· Dostępne różne oprogramowanie ARDUINO służy do programowania mikrokontrolerów STM
Jak zrobić podwójną antenę 4G LTE BiQuade Proste kroki: 3 kroki
Jak zrobić podwójną antenę 4G LTE BiQuade Proste kroki: W większości przypadków nie mam dobrej siły sygnału w mojej codziennej pracy. Więc. Szukam i próbuję różnych typów anten, ale nie działa. Po zmarnowanym czasie znalazłem antenę, którą mam nadzieję zrobić i przetestować, bo to zasada budowy nie
Strumieniowanie wideo na żywo 4G/5G HD z drona DJI z małym opóźnieniem [3 kroki]: 3 kroki
Strumieniowanie wideo na żywo 4G/5G HD z drona DJI z małym opóźnieniem [3 kroki]: Poniższy przewodnik pomoże Ci uzyskać strumienie wideo na żywo w jakości HD z prawie każdego drona DJI. Za pomocą aplikacji mobilnej FlytOS i aplikacji internetowej FlytNow możesz rozpocząć przesyłanie strumieniowe wideo z drona
Pierwsze kroki z automatyką domową: Instalacja Home Assistant: 3 kroki
Rozpoczęcie pracy z automatyką domową: instalacja asystenta domowego: teraz rozpoczniemy serię automatyki domowej, w której stworzymy inteligentny dom, który pozwoli nam kontrolować takie rzeczy, jak światła, głośniki, czujniki itp., Za pomocą centralnego koncentratora wraz z asystent głosowy. W tym poście dowiemy się, jak ins
SmartBin: 8 kroków
SmartBin: Este é um projeto para um inteligentnego systemu coletas, nie ma żadnej jakości życia dla lixo recebem dados das lixeiras, identyfikuje ilość prezentowanych lixo w cada uma delas, i bazową rotację coleta tra &comil;