Sommario:

SmartBin: 4 passaggi
SmartBin: 4 passaggi

Video: SmartBin: 4 passaggi

Video: SmartBin: 4 passaggi
Video: KUKA.SmartBinPicking Webinar 2024, Dicembre
Anonim
Image
Image

Lo scopo principale di questo progetto è creare un dispositivo elettronico che utilizzi almeno un Raspberry Pi. Il team è composto da 5 futuri ingegneri meccanici e un ingegnere dell'automazione. Il nostro progetto consiste nel realizzare un cestino che si apre e si chiude automaticamente innescato da un movimento del piede sotto il rilevatore di movimento situato al centro sulla parte anteriore del cestino. Una chiavetta USB Wi-Fi viene utilizzata per inviare dati su un sito web. Questo cestino si chiama "The SmartBin". Il video divertente qui sopra presenta il nostro innovativo SmartBin.

Per realizzare questo progetto e questo straordinario SmartBin, erano necessari diversi strumenti:

  • un metro
  • Colla forte
  • Un nastro adesivo
  • Una sega per legno
  • Un cacciavite
  • Un trapano
  • un morsetto
  • Un coltello

Passaggio 1: attrezzatura SmartBin

Attrezzatura SmartBin
Attrezzatura SmartBin
Attrezzatura SmartBin
Attrezzatura SmartBin

Lo SmartBin è composto da luci LED verdi, arancioni e rosse che sono posizionate su un apparecchio sul lato sinistro del cestino che indicherà quanto è pieno. Queste luci saranno chiaramente visibili e avviseranno l'utente quando è necessario sostituire il sacco della spazzatura. Il linguaggio di programmazione utilizzato è Python. Il livello di riempimento misurato del bidone viene trasmesso al seguente sito web:

Ecco gli elementi che sono stati utilizzati ma puoi facilmente trovare una soluzione alternativa:

  • 1 cestino (cestino "coperchio basculante")
  • 1 Servomotore per aprire il cassonetto
  • 1 lampone pi 2
  • 2 Alimentatori (caricabatteria per cellulare 5V e alimentatore 6V) per alimentare il Raspberry Pi e il servomotore
  • 1 Sensore ad ultrasuoni per misurare il livello di riempimento del bidone
  • Alcuni LED per visualizzare il livello di riempimento (4 verdi, 2 arancioni e 1 rosso)
  • 1 rilevatore di movimento ad ultrasuoni per rilevare un movimento
  • 1 scheda SD da 16 Gb
  • Resistenze elettriche (10.000 Ohm, 2000 Ohm e 1000 Ohm)
  • 1 chiavetta USB WiFi per abilitare la trasmissione wireless al sito web.
  • 1 breadboard e alcuni cavi Raspberry

Il prezzo di produzione stimato è di 80€.

Passaggio 2: fabbricazione della Raspberry Box e della barra LED

Produzione della scatola Raspberry e della barra LED
Produzione della scatola Raspberry e della barra LED
Produzione della scatola Raspberry e della barra LED
Produzione della scatola Raspberry e della barra LED
Produzione della scatola Raspberry e della barra LED
Produzione della scatola Raspberry e della barra LED

Per fabbricare la scatola del lampone, usa una sega per legno. Fissare ogni lato della scatola con rivetti per farlo sembrare pulito. Come suggerisce il nome, questa scatola conterrà non solo il Raspberry Pi ma includerà anche il sensore di movimento che posizionerai in basso. Una volta che la scatola è stata costruita, dipingila dello stesso colore del cestino. La tecnologia di stampa 3D potrebbe essere utilizzata per creare questa scatola.

Per la realizzazione della barra LED, utilizzare un condotto elettrico in cui praticare dei fori per consentire l'installazione delle luci LED. Anche la barra LED deve essere verniciata. Quando tutto è pronto, installare i LED nel condotto ed effettuare il collegamento elettrico. Prestare attenzione a numerare correttamente ogni cavo LED con nastro adesivo. Ti aiuterà a identificare ogni LED durante il cablaggio.

Infine, attacca la scatola e la barra LED alla parte anteriore del cestino.

Passaggio 3: la parte del coperchio

La parte del coperchio
La parte del coperchio
La parte del coperchio
La parte del coperchio

Per quanto riguarda il coperchio del cassonetto, il primo passo è incollare il servomotore al coperchio. Un'estensione della leva finanziaria deve essere preventivamente effettuata. La leva colpirà un arresto che era stato precedentemente fatto a mano. Fissare una scatola a vite al coperchio e praticare un foro per mantenere il sensore a ultrasuoni nella posizione corretta. Assicurati di collegare correttamente i cavi sul coperchio con del nastro adesivo.

Passaggio 4: parte software e acquisizione dati

Parte software e acquisizione dati
Parte software e acquisizione dati
Parte software e acquisizione dati
Parte software e acquisizione dati
Parte software e acquisizione dati
Parte software e acquisizione dati

Per quanto riguarda la parte software, abbiamo utilizzato il linguaggio di programmazione Python. Il programma viene salvato nella scheda SD che verrà eseguita dal Raspberry Pi all'accensione. Lo schema di cablaggio è disponibile sopra. L'immagine dei pin Gpio è disponibile per tutti i tipi di lampone al link sottostante:

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

È possibile utilizzare un sensore ad ultrasuoni per sostituire il rilevatore di movimento, è sufficiente creare un "se loop" nel codice.

Come accennato in precedenza, i dati relativi al livello di riempimento del cestino vengono trasmessi a un sito web creato su wix.com. Su questo sito puoi trovare diverse schede che raccolgono membri del team, presentazione hardware e software, … La scheda interessante è in realtà la scheda "Database" che raccoglie le informazioni relative alla quantità di spazzatura direttamente dallo SmartBin e crea un grafico con i dati. Il grafico mostra l'evoluzione del livello del ripieno. E' possibile visualizzare o scaricare i dati dal sito. Il link qui sotto è il sito web che abbiamo utilizzato e ti mostrerà come leggere e scrivere su fogli di google con python:

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

Per quanto riguarda la "parte autorun" del codice, scrivi nel terminale: sudo nano /etc/xdg/lxsession/LXDE-pi/autostart

Quindi, alla fine dello script appena aperto, scrivi queste due righe di codice: python /home/pi/main.py & python /home/pi/csvcontrol.py &

Per salvare l'aurorun, premere: C trl + O Quindi, premere: Invio Quindi, premere: C trl + X

Scrivi come ultima riga di codice: sudo reboot

Puoi anche scaricare l'allegato che è il codice Python completo utilizzato per il progetto. Entrambi i codici vengono eseguiti contemporaneamente!

Ecco il codice main.py:

import RPi. GPIO as GPIOimport datetime import time import csv

GPIO.setmode(GPIO. BCM)

GPIO.setwarnings(Falso)

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

Trigger = 23

Eco = 24

GPIO.setup(Trig, GPIO. OUT)

GPIO.setup(Echo, GPIO. IN)

GPIO.setwarnings(Falso)

GPIO.output(5, Falso)

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

distanza=100 memoria=0 tempo.sleep(2) pwm.start(12.5)

mentre vero:

timetac = time.time() if GPIO.input(capteurP) e timetac-timeset0.9: pwm. ChangeDutyCycle(2.5) time.sleep(0.2) memory=-0.5 pwm. ChangeDutyCycle(0) timetac = time.time() time.sleep(0.5) se timetac-timeset>15 o memory>0.4: se 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 e timetac-timeset<17: timetac = time.time() debutImpulsion = time.time()

mentre GPIO.input(Echo)==1:

finImpulsion = time.time() if timetac-timeset<17: distanza1 = round((finImpulsion - debutImpulsion) * 340 * 100 / 2, 1) distanza2=distanza if (distanza1-distanza2)<1 e (distanza2-distanza1)0.4: dis=round((60-distance)*5/6, 1) with open('capteur.csv', 'w') come 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. 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) se distanza < 37.5: GPIO.output(13, True) else: GPIO.output(13, False) se distanza < 30: GPIO.output(19, True) else: GPIO.output(19, False) se distanza < 22.5: GPIO.output(20, True) else: GPIO.output(20, False) se distanza < 15: GPIO.output(21, True) else: GPIO.output(21, False) se distanza < 7.5: GPIO.output(26, True) else: GPIO.output(26, False)

Ecco il codice csvcontrol.py. Non dimenticare di incollare il file ".json" creato nella stessa directory di main.py. Il file ".json" viene creato con l'API di Google. Uno screenshot è disponibile nelle immagini.

import datetimeimport time import csv import gspread

da oauth2client.service_account import ServiceAccountCredentials

da time import sleep import 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=row[0] print(row[1]) distance=row[1] distance=float(str(distanza)) if timec2!=timec: timec2=timec print('Time:{0} Quantitee:{ 1}'.format(timec, distanza))

SCOPES = ['https://www.googleapis.com/auth/spreadsheets', "https://www.googleapis.com/auth/drive.file", "https://www.googleapis.com/auth/ unità"]

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

Consigliato: