Sisällysluettelo:

SmartBin: 4 vaihetta
SmartBin: 4 vaihetta

Video: SmartBin: 4 vaihetta

Video: SmartBin: 4 vaihetta
Video: ⚠️ 4 ТОЧКИ ОТ ИНСУЛЬТА 2024, Marraskuu
Anonim
Image
Image

Tämän projektin päätarkoitus on luoda elektroninen laite, joka käyttää vähintään yhtä Raspberry Pi -laitetta. Tiimiin kuuluu viisi tulevaa koneinsinööriä ja yksi automaatioinsinööri. Projektimme koostuu roskakorin valmistamisesta, joka avautuu ja sulkeutuu automaattisesti jalan liikkeen vuoksi liiketunnistimen alla, joka sijaitsee roskakorin etuosassa. Wifi -USB -tikkua käytetään datan lähettämiseen verkkosivustolle. Tämän roskakorin nimi on "SmartBin". Yllä oleva humoristinen video esittelee innovatiivisen SmartBinimme.

Tämän projektin ja tämän merkittävän SmartBinin toteuttamiseksi tarvittiin useita työkaluja:

  • Metri
  • Vahva liima
  • Teippi
  • Puinen saha
  • Ruuvimeisseli
  • Porakone
  • Kiinnike
  • Veitsi

Vaihe 1: SmartBin -laitteet

SmartBin -laitteet
SmartBin -laitteet
SmartBin -laitteet
SmartBin -laitteet

SmartBin koostuu vihreistä, oransseista ja punaisista LED -valoista, jotka on sijoitettu roskakorin vasemmalla puolella olevaan kiinnikkeeseen, joka osoittaa, kuinka täynnä se on. Nämä valot näkyvät selvästi ja varoittavat käyttäjää, kun roskapussi on vaihdettava. Ohjelmointikieli on Python. Säiliön mitattu täyttöaste lähetetään seuraavalle verkkosivustolle:

Tässä on käytetty elementtejä, mutta voit helposti löytää vaihtoehtoisen ratkaisun:

  • 1 roskakori ("kääntösuojus")
  • 1 Servomoottori avaa säiliö
  • 1 Vadelma Pi 2
  • 2 virtalähdettä (5 V: n matkapuhelinlaturi ja 6 V: n virtalähde) Raspberry Pi: n ja servomoottorin toimittamiseen
  • 1 Ultraääni -anturi säiliön täyttötason mittaamiseen
  • Jotkut LEDit osoittavat täyttötason (4 vihreää, 2 oranssia ja 1 punaista)
  • 1 Ultraääni -liiketunnistin liikkeen havaitsemiseksi
  • 1 16 Gt SD-kortti
  • Sähkövastukset (10.000 ohmia, 2000 ohmia ja 1000 ohmia)
  • 1 WiFi -usb -tikku, joka mahdollistaa langattoman siirron verkkosivustolle.
  • 1 Leipälevy ja muut Vadelmakaapelit

Arvioitu valmistushinta on 80 €.

Vaihe 2: Vadelmarasian ja LED -palkin valmistus

Vadelmarasian ja LED -palkin valmistus
Vadelmarasian ja LED -palkin valmistus
Vadelmarasian ja LED -palkin valmistus
Vadelmarasian ja LED -palkin valmistus
Vadelmarasian ja LED -palkin valmistus
Vadelmarasian ja LED -palkin valmistus

Raspberry -laatikon valmistukseen käytä puusahaa. Kiinnitä laatikon jokainen sivu niiteillä, jotta se näyttää puhtaalta. Kuten nimestä voi päätellä, tämä laatikko sisältää Raspberry Pi: n lisäksi myös liiketunnistimen, jonka sijoitat alareunaan. Kun laatikko on rakennettu, maalaa se samaan väriin kuin astia. Tämän laatikon luomiseen voidaan käyttää 3D -tulostustekniikkaa.

Käytä LED -palkin valmistukseen sähköputkea, johon poraat reikiä LED -valojen asentamiseksi. LED -palkki on myös maalattava. Kun kaikki on valmista, asenna LED -valot kanavaan ja kytke sähköliitäntä. Kiinnitä huomiota jokaisen LED -kaapelin oikeaan numerointiin teipillä. Se auttaa sinua tunnistamaan jokaisen LEDin johdotuksen aikana.

Kiinnitä lopuksi laatikko ja LED -palkki roskakorin etuosaan.

Vaihe 3: Kansiosa

Kansiosa
Kansiosa
Kansiosa
Kansiosa

Säiliön kannen osalta ensimmäinen askel on liimata servomoottori kanteen. Vipuvaikutusta on pidennettävä aiemmin. Vipu osuu pysäytykseen, joka oli aiemmin käsintehty. Kiinnitä ruuvikotelo kanteen ja tee siihen reikä, jotta ultraäänianturi pysyy oikeassa asennossa. Varmista, että kiinnität kaapelit kanteen oikein teipillä.

Vaihe 4: Ohjelmiston osien ja tietojen hankinta

Ohjelmisto -osa ja tiedonhankinta
Ohjelmisto -osa ja tiedonhankinta
Ohjelmisto -osa ja tiedonhankinta
Ohjelmisto -osa ja tiedonhankinta
Ohjelmisto -osa ja tiedonhankinta
Ohjelmisto -osa ja tiedonhankinta

Ohjelmisto -osassa käytimme python -ohjelmointikieltä. Ohjelma tallennetaan SD-kortille, jota Raspberry Pi käyttää, kun se käynnistetään. Johdotuskaavio löytyy yllä. Gpio -nastat -kuva on saatavana kaikille vadelmatyypeille alla olevasta linkistä:

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

On mahdollista käyttää ultraäänianturia liiketunnistimen korvaamiseen, sinun tarvitsee vain luoda "if loop" koodiin.

Kuten edellä mainittiin, astian täyttämistä koskevat tiedot välitetään wix.com -sivustolle luodulle verkkosivustolle. Tältä verkkosivustolta löydät erilaisia välilehtiä, jotka keräävät tiimin jäseniä, laitteisto- ja ohjelmistoesityksen,… Mielenkiintoinen välilehti on itse asiassa "Tietokanta" -välilehti, joka kerää roskatietoja suoraan SmartBinistä ja luo kaavion tiedoista. Kaavio näyttää täytteen tason kehityksen. Sivustolta on mahdollista nähdä tai ladata tietoja. Alla oleva linkki on käyttämämme verkkosivusto ja näyttää, kuinka voit lukea ja kirjoittaa Google -arkeilla pythonilla:

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

Kirjoita päätelaitteeseen koodin "automaattinen käynnistysosa": sudo nano/etc/xdg/lxsession/LXDE-pi/autostart

Kirjoita sitten juuri avatun komentosarjan loppuun nämä kaksi koodiriviä: python /home/pi/main.py & python /home/pi/csvcontrol.py &

Tallenna aurorun painamalla: C trl + O Paina sitten: Enter Sitten paina: C trl + X

Kirjoita viimeiseksi koodiriviksi: sudo reboot

Voit myös ladata liitteen, joka on koko projektissa käytetty python -koodi. Molemmat koodit ajetaan samanaikaisesti!

Tässä on main.py -koodi:

tuoda RPi. GPIO GPIOna tuoda päivämäärän tuonti aika tuonti csv

GPIO.setmode (GPIO. BCM)

GPIO.setwarnings (Väärä)

kapteeniP = 7

servo = 17

GPIO.setup (servo, GPIO. OUT)

GPIO.asetukset (capteurP, GPIO. IN)

pwm = GPIO. PWM (17, 50)

GPIO.asetukset (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.asetukset (26, GPIO. OUT)

Laukaus = 23

Kaiku = 24

GPIO.setup (Trig, GPIO. OUT)

GPIO.setup (Echo, GPIO. IN)

GPIO.setwarnings (Väärä)

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

etäisyys = 100 muistia = 0 aikaa. nukkumassa (2) pwm.start (12.5)

vaikka totta:

timetac = time.time () jos GPIO.input (capteurP) ja timetac-timeset0.9: pwm. ChangeDutyCycle (2.5) time.sleep (0.2) muisti = -0,5 pwm. ChangeDutyCycle (0) timetac = time.time () time.sleep (0,5), jos timetac-timeet> 15 tai muisti> 0,4: jos muisti> 0,4: pwm. ChangeDutyCycle (2.5) time.sleep (1) x: lle alueella (0, 1): # GPIO.output (Trig, True) time.sleep (0.01) GPIO. output (Trig, False)

kun GPIO.input (Echo) == 0 ja timetac-timeset <17: timetac = time.time () debutImpulsion = time.time ()

kun GPIO.input (Echo) == 1:

finImpulsion = aika.aika () jos timetac-timeset <17: etäisyys1 = pyöreä ((finImpulsion-debyyttiimpulsio) * 340 * 100/2, 1) etäisyys2 = etäisyys, jos (etäisyys1-etäisyys2) <1 ja (etäisyys2-etäisyys1) 0,4: dis = pyöreä ((60-etäisyys)*5/6, 1) auki ('capteur.csv', 'w') csv-tiedostona: 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]) muisti = -0,1 jos etäisyys <52.5: GPIO. output (5, True) else: GPIO. output (5, False) jos etäisyys <45: GPIO. output (6, True) else: GPIO. output (6, False) jos etäisyys <37,5: GPIO. output (13, True) else: GPIO. output (13, False) if distance <30: GPIO. output (19, True) else: GPIO. output (19, epätosi) jos etäisyys <22,5: GPIO.lähtö (20, tosi) muu: GPIO.lähtö (20, epätosi), jos etäisyys <15: GPIO.lähtö (21, tosi) muu: GPIO.lähtö (21, epätosi) jos etäisyys <7.5: GPIO. output (26, True) else: GPIO. output (26, False)

Tässä on csvcontrol.py -koodi. Älä unohda liittää luotua.json -tiedostoa samaan hakemistoon main.py.. Json -tiedosto luodaan google -sovellusliittymällä. Kuvakaappaus löytyy kuvista.

tuontipäivä ja aika tuonti aika tuonti csv tuonti gspread

osoitteesta oauth2client.service_account tuonti ServiceAccountCredentials

ajan tuonnin lepotilan tuonnin jäljitys

timec2 = 'lol'

kun taas True: time.sleep (5) loc = ('capteur.csv') ja open (loc) nimellä csvfile: readCSV = csv.reader (csvfile, delimiter = ',') riville readCSV: print (rivi [0]) timec = rivi [0] print (rivi [1]) distance = rivi [1] distance = float (str (distance)) if timec2! = timec: timec2 = timec print ('Aika: {0} Quantitee: { 1} '. Muoto (timec, etäisyys))

SOVELTAMISALA = ['https://www.googleapis.com/auth/spreadsheets', "https://www.googleapis.com/auth/drive.file", "https://www.googleapis.com/auth/ ajaa"]

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

Suositeltava: