Obsah:

SmartBin: 4 kroky
SmartBin: 4 kroky

Video: SmartBin: 4 kroky

Video: SmartBin: 4 kroky
Video: 4 шага челлендж 2024, Listopad
Anonim
Image
Image

Hlavním účelem tohoto projektu je vytvořit elektronické zařízení, které používá alespoň jeden Raspberry Pi. Tým je složen z 5 budoucích strojních inženýrů a jednoho inženýra pro automatizaci. Náš projekt spočívá ve výrobě odpadkového koše, který se automaticky otevírá a zavírá pohybem nohou pod detektorem pohybu umístěným uprostřed na přední straně koše. Wifi USB klíč se používá k odesílání dat na web. Tento koš se nazývá „SmartBin“. Vtipné video výše představuje náš inovativní SmartBin.

K provedení tohoto projektu a tohoto pozoruhodného SmartBinu bylo zapotřebí několik nástrojů:

  • Metr
  • Silné lepidlo
  • Lepicí páska
  • Pila na dřevo
  • Šroubovák
  • Vrtačka
  • Svorka
  • Nůž

Krok 1: Zařízení SmartBin

Zařízení SmartBin
Zařízení SmartBin
Zařízení SmartBin
Zařízení SmartBin

SmartBin se skládá ze zelených, oranžových a červených LED diod, které jsou umístěny na svítidle na levé straně koše, což ukazuje, jak je naplněno. Tato světla budou jasně viditelná a upozorní uživatele, když je nutné vyměnit odpadkový pytel. Použitým programovacím jazykem je Python. Naměřená hladina naplnění koše je přenesena na následující web:

Zde jsou prvky, které byly použity, ale můžete snadno najít alternativní řešení:

  • 1 přihrádka (přihrádka "výkyvný kryt")
  • 1 Servomotor k otevření koše
  • 1 Raspberry Pi 2
  • 2 napájecí zdroje (5V nabíječka mobilního telefonu a 6V napájecí zdroj) pro napájení Raspberry Pi a servomotoru
  • 1 Ultrazvukový senzor pro měření úrovně naplnění koše
  • Některé LED diody zobrazují stav naplnění (4 zelené, 2 oranžové a 1 červená)
  • 1 Ultrazvukový detektor pohybu pro detekci pohybu
  • 1 16GB SD karta
  • Elektrické odpory (10 000 ohmů, 2 000 ohmů a 1 000 ohmů)
  • 1 WiFi usb stick umožňující bezdrátový přenos na web.
  • 1 Breadboard a několik kabelů Raspberry

Odhadovaná výrobní cena je 80 €.

Krok 2: Výroba malinového boxu a LED lišty

Výroba Raspberry Boxu a LED Baru
Výroba Raspberry Boxu a LED Baru
Výroba Raspberry Boxu a LED Baru
Výroba Raspberry Boxu a LED Baru
Výroba Raspberry Boxu a LED Baru
Výroba Raspberry Boxu a LED Baru

K výrobě boxu Raspberry použijte pilu na dřevo. Připevněte každou stranu krabice nýty, aby vypadala čistě. Jak naznačuje jeho název, tento box bude obsahovat nejen Raspberry Pi, ale bude obsahovat také pohybový senzor, který umístíte dole. Jakmile je krabice postavena, namalujte ji stejnou barvou jako přihrádka. K vytvoření tohoto boxu by mohla být použita technologie 3D tisku.

K výrobě LED lišty použijte elektrické potrubí, do kterého vyvrtejte otvory, které umožní instalaci LED světel. LED lišta musí být také natřena. Když je vše připraveno, nainstalujte LED diody do potrubí a proveďte elektrické připojení. Dávejte pozor na správné očíslování jednotlivých LED kabelů lepicí páskou. Pomůže vám to identifikovat každou LED během zapojení.

Nakonec krabici a lištu LED připevněte k přední části koše.

Krok 3: Část víka

Víko část
Víko část
Víko část
Víko část

Pokud jde o víko koše, prvním krokem je přilepit servomotor k víku. Dříve bylo nutné provést rozšíření pákového efektu. Páka narazí na doraz, který byl dříve ručně vyroben. Na víko připevněte šroubovací skříňku a vytvořte do ní otvor, aby držel ultrazvukový senzor ve správné poloze. Ujistěte se, že jste kabely správně připevnili na víko páskou.

Krok 4: Softwarová část a získávání dat

Získávání části softwaru a dat
Získávání části softwaru a dat
Získávání části softwaru a dat
Získávání části softwaru a dat
Získávání části softwaru a dat
Získávání části softwaru a dat

Pokud jde o softwarovou část, použili jsme programovací jazyk python. Program je uložen na SD kartu, kterou Raspberry Pi spustí, když je zapnutá. Schéma zapojení je k dispozici výše. Obrázek pinů Gpio je k dispozici pro všechny typy malin na níže uvedeném odkazu:

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

Na výměnu detektoru pohybu je možné použít ultrazvukový senzor, stačí v kódu vytvořit „if loop“.

Jak bylo uvedeno výše, údaje týkající se úrovně, do které je koš naplněn, jsou přenášeny na webové stránky vytvořené na wix.com. Na tomto webu najdete různé karty, které shromažďují členy týmu, prezentaci hardwaru a softwaru, … Zajímavá karta je vlastně záložka „Databáze“, která shromažďuje informace o množství odpadu přímo ze SmartBin a vytváří graf s daty. Graf zobrazuje vývoj úrovně náplně. Je možné zobrazit nebo stáhnout data z webových stránek. Níže uvedený odkaz je web, který jsme použili, a ukáže vám, jak číst a psát na listech Google pomocí pythonu:

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

Pokud jde o „část automatického spuštění“kódu, napište do terminálu: sudo nano/etc/xdg/lxsession/LXDE-pi/autostart

Poté na konec skriptu, který se právě otevřel, napište tyto dva řádky kódu: python /home/pi/main.py & python /home/pi/csvcontrol.py &

Pro uložení aurorunu stiskněte: C trl + O Then, press: Enter Then, press: C trl + X

Zapište jako poslední řádek kódu: sudo restart

Rovněž si můžete stáhnout přílohu, která je úplným kódem pythonu použitým pro projekt. Oba kódy jsou spuštěny současně!

Zde je kód main.py:

import RPi. GPIO jako GPIOimport datetime čas importu import csv

GPIO.setmode (GPIO. BCM)

GPIO.setwarnings (False)

kapitán P = 7

servo = 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)

Trig = 23

Echo = 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 ()

vzdálenost = 100 paměť = 0 čas. spánek (2) pwm. start (12,5)

zatímco pravda:

timetac = time.time () pokud GPIO.input (capteurP) a timetac-timeset0.9: pwm. ChangeDutyCycle (2.5) time.sleep (0.2) paměť = -0.5 pwm. ChangeDutyCycle (0) timetac = time.time () time.sleep (0,5) pokud timetac-timeset> 15 nebo paměť> 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)

zatímco GPIO.input (Echo) == 0 a timetac-timeset <17: timetac = time.time () debutImpuls = time.time ()

zatímco GPIO.input (Echo) == 1:

finImpulsion = time.time () pokud je časově časově nastaven <17: vzdálenost1 = kolo ((finImpulsion-debutImpulsion) * 340 * 100/2, 1) vzdálenost2 = vzdálenost if (vzdálenost1-vzdálenost2) <1 a (vzdálenost2-vzdálenost1) 0,4: dis = round ((vzdálenost 60)*5/6, 1) s otevřeným ('capteur.csv', 'w') jako csvfile: capteurwriter = csv.writer (csvfile) time_str = datetime.datetime.strftime (datetime.datetime.now (), '%Y-%m-%d%H:%M:%S') print ('Time: {0} Quantitee: {1}'. format (time_str, dis)) capteurwriter. writeow ([time_str, dis]) paměť = -0,1 pokud vzdálenost <52,5: GPIO.output (5, True) else: GPIO.output (5, False) pokud vzdálenost <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) if distance <22.5: GPIO.output (20, True) else: GPIO.output (20, False) if distance <15: GPIO.output (21, True) else: GPIO.output (21, False) pokud vzdálenost <7,5: GPIO.output (26, True) else: GPIO.output (26, False)

Zde je kód csvcontrol.py. Vytvořený soubor „.json“nezapomeňte vložit do stejného adresáře souboru main.py. Soubor „.json“je vytvořen pomocí rozhraní Google API. Na obrázcích je k dispozici snímek obrazovky.

import datetimeimport čas import csv import gspread

z oauth2client.service_account importovat ServiceAccountCredentials

od času importovat import importovat trasování zpět

timec2 = 'lol'

while True: time.sleep (5) loc = ('capteur.csv') with open (loc) as csvfile: readCSV = csv.reader (csvfile, delimiter = ',') for row in readCSV: print (row [0]) timec = řádek [0] tisk (řádek [1]) vzdálenost = řádek [1] vzdálenost = float (str (vzdálenost)) if timec2! = timec: timec2 = timec print ('Čas: {0} Quantitee: { 1} '. Formát (čas, vzdálenost))

ROZSAHY = ['https://www.googleapis.com/auth/spreadsheets', "https://www.googleapis.com/auth/drive.file", "https://www.googleapis.com/auth/ řídit"]

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

Doporučuje: