Obsah:

SmartBin: 4 kroky
SmartBin: 4 kroky

Video: SmartBin: 4 kroky

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

Hlavným účelom tohto projektu je vytvoriť elektronické zariadenie, ktoré používa najmenej jeden Raspberry Pi. Tím je zložený z 5 budúcich strojných inžinierov a jedného automatizačného inžiniera. Náš projekt spočíva v vyrobení odpadkového koša, ktorý sa automaticky otvára a zatvára pohybom nohy pod detektorom pohybu umiestneným v strede na prednej strane koša. Na odosielanie údajov na webovú stránku sa používa USB kľúč Wifi. Tento kôš sa nazýva „SmartBin“. Humorné video vyššie predstavuje náš inovatívny SmartBin.

Na realizáciu tohto projektu a tohto pozoruhodného SmartBinu bolo potrebných niekoľko nástrojov:

  • Meter
  • Silné lepidlo
  • Lepiaca páska
  • Píla na drevo
  • Skrutkovač
  • Vŕtačka
  • Svorka
  • Nôž

Krok 1: Zariadenie SmartBin

Zariadenie SmartBin
Zariadenie SmartBin
Zariadenie SmartBin
Zariadenie SmartBin

SmartBin sa skladá zo zelených, oranžových a červených LED svetiel, ktoré sú umiestnené na svietidle na ľavej strane zásobníka, ktoré bude indikovať, ako je naplnené. Tieto svetlá budú jasne viditeľné a upozornia užívateľa, keď je potrebné vymeniť odpadkový vak. Použitý programovací jazyk je Python. Nameraná hladina naplnenia koša je odoslaná na nasledujúcu webovú stránku:

Tu sú prvky, ktoré boli použité, ale môžete ľahko nájsť alternatívne riešenie:

  • 1 kôš (kôš „výkyvný kryt“)
  • 1 Servomotor na otvorenie koša
  • 1 Raspberry Pi 2
  • 2 napájacie zdroje (5 V nabíjačka mobilného telefónu a 6 V napájanie) na napájanie Raspberry Pi a servomotora
  • 1 Ultrazvukový senzor na meranie úrovne naplnenia zásobníka
  • Niektoré diódy LED zobrazujú úroveň naplnenia (4 zelené, 2 oranžové a 1 červená)
  • 1 Ultrazvukový detektor pohybu na detekciu pohybu
  • 1 16 GB SD karta
  • Elektrické odpory (10 000 ohmov, 2 000 ohmov a 1 000 ohmov)
  • 1 USB kľúč USB umožňujúci bezdrôtový prenos na web.
  • 1 Breadboard a niekoľko malinových káblov

Odhadovaná výrobná cena je 80 €.

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

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

Na výrobu škatule na maliny použite pílu na drevo. Každú stranu škatule upevnite nitmi, aby vyzerala čisto. Ako naznačuje jeho názov, tento box bude obsahovať nielen Raspberry Pi, ale bude obsahovať aj snímač pohybu, ktorý umiestnite dole. Akonáhle je krabica postavená, namaľujte ju rovnakou farbou ako kôš. Na vytvorenie tohto boxu by mohla byť použitá technológia 3D tlače.

Na výrobu LED lišty použite elektrické potrubie, do ktorého vyvŕtate otvory, ktoré umožnia inštaláciu LED svetiel. LED lišta musí byť tiež natretá. Keď je všetko pripravené, nainštalujte LED diódy do potrubia a vykonajte elektrické pripojenie. Dávajte pozor na správne očíslovanie každého LED kábla pomocou lepiacej pásky. Pomôže vám to identifikovať každú LED diódu počas zapojenia.

Nakoniec pripevnite škatuľu a lištu LED k prednej časti koša.

Krok 3: Časť veka

Veko časť
Veko časť
Časť veka
Časť veka

Pokiaľ ide o veko koša, prvým krokom je prilepenie servomotora k veku. V minulosti bolo potrebné vykonať rozšírenie pákového efektu. Páka narazí na doraz, ktorý bol predtým vyrobený ručne. Na veko pripevnite skrinku so skrutkami a urobte do nej otvor, aby držal ultrazvukový snímač v správnej polohe. Dbajte na to, aby ste káble na veku správne pripevnili páskou.

Krok 4: Získanie časti softvéru a údajov

Akvizícia softvérovej časti a údajov
Akvizícia softvérovej časti a údajov
Softvérová časť a získavanie údajov
Softvérová časť a získavanie údajov
Softvérová časť a získavanie údajov
Softvérová časť a získavanie údajov

Pokiaľ ide o softvérovú časť, použili sme programovací jazyk python. Program je uložený na SD kartu, ktorú Raspberry Pi spustí, keď je zapnutá. Schéma zapojenia je k dispozícii vyššie. Obrázok pinov Gpio je k dispozícii pre všetky druhy malín na nasledujúcom odkaze:

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

Na výmenu detektora pohybu je možné použiť ultrazvukový senzor, v kóde stačí vytvoriť „if loop“.

Ako je uvedené vyššie, údaje týkajúce sa úrovne naplnenia koša sa prenášajú na webovú stránku vytvorenú na wix.com. Na tomto webe nájdete rôzne karty, ktoré zhromažďujú členov tímu, hardvérovú a softvérovú prezentáciu, … Zaujímavá je vlastne záložka „Databáza“, ktorá zhromažďuje informácie o množstve odpadu priamo zo zariadenia SmartBin a vytvára graf s údajmi.. Graf zobrazuje vývoj úrovne náplne. Na webovej stránke je možné zobraziť alebo stiahnuť údaje. Nasledujúci odkaz je webová stránka, ktorú sme použili, a ukáže vám, ako čítať a písať na hárkoch Google pomocou pythonu:

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

Pokiaľ ide o „časť automatického spustenia“kódu, napíšte do terminálu: sudo nano/etc/xdg/lxsession/LXDE-pi/autostart

Potom na konci skriptu, ktorý sa práve otvoril, napíšte tieto dva riadky kódu: python /home/pi/main.py & python /home/pi/csvcontrol.py &

Ak chcete aurorun uložiť, stlačte: C trl + O Potom, stlačte: Enter Potom stlačte: C trl + X

Napíšte ako posledný riadok kódu: sudo reboot

Môžete si tiež stiahnuť prílohu, ktorá je úplným kódom pythonu použitým pre projekt. Oba kódy sú spustené súčasne!

Tu je kód main.py:

import RPi. GPIO ako GPIOimport dátum a č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)

Spúšť = 23

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

vzdialenosť = 100 pamäť = 0 čas. spánok (2) pwm. štart (12,5)

kým je pravda:

timetac = time.time () ak GPIO.input (capteurP) a 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 or 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)

zatiaľ čo GPIO.input (Echo) == 0 a timetac-timeset <17: timetac = time.time () debutImpuls = time.time ()

zatiaľ čo GPIO.input (Echo) == 1:

finImpulsion = time.time () ak je časovo-časovo nastavený <17: vzdialenosť1 = kolo ((finImpulsion-debutImpulsion) * 340 * 100 /2, 1) vzdialenosť2 = vzdialenosť, ak (vzdialenosť1-vzdialenosť2) <1 a (vzdialenosť2-vzdialenosť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 ('Time: {0} Quantitee: {1}'. format (time_str, dis)) capteurwriter. writeow ([time_str, dis]) pamäť = -0,1 ak vzdialenosť <52,5: GPIO.output (5, True) else: GPIO.output (5, False) ak vzdialenosť <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) ak je vzdialenosť <7,5: GPIO.output (26, True) else: GPIO.output (26, False)

Tu je kód csvcontrol.py. Vytvorený súbor „.json“nezabudnite vložiť do rovnakého adresára ako súbor main.py. Súbor „.json“je vytvorený pomocou rozhrania Google API. Na obrázkoch je k dispozícii snímka obrazovky.

import datetimeimport čas import csv import gspread

z oauth2client.service_account importovať ServiceAccountCredentials

od času import spánku spánok traceback

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 = riadok [0] tlač (riadok [1]) vzdialenosť = riadok [1] vzdialenosť = float (str (vzdialenosť)) if timec2! = timec: timec2 = timec print ('Čas: {0} Quantitee: { 1} '. Formát (časový údaj, vzdialenosť))

ROZSAHY = ['https://www.googleapis.com/auth/spreadsheets', "https://www.googleapis.com/auth/drive.file", "https://www.googleapis.com/auth/ riadiť "]

poverenia = ServiceAccountCredentials.from_json_keyfile_name ('client_secret.json', ROZSAHY) gc = gspread.authorize (poverenia) wks = gc.open ("graf"). sheet1 wks = wks.append_row ((timec, vzdialenosť))

Odporúča: