Πίνακας περιεχομένων:

SmartBin: 4 βήματα
SmartBin: 4 βήματα

Βίντεο: SmartBin: 4 βήματα

Βίντεο: SmartBin: 4 βήματα
Βίντεο: Smart Bin Binology for Smart Cities (smart waste collection). Умный мусорный контейнер Бинолоджи 2024, Νοέμβριος
Anonim
Image
Image

Ο κύριος σκοπός αυτού του έργου είναι η δημιουργία μιας ηλεκτρονικής συσκευής που χρησιμοποιεί τουλάχιστον ένα Raspberry Pi. Η ομάδα αποτελείται από 5 μελλοντικούς μηχανολόγους μηχανικούς και έναν μηχανικό αυτοματισμού. Το πρότζεκτ μας αποτελείται από την κατασκευή ενός κάδου απορριμμάτων που ανοίγει και κλείνει αυτόματα ενεργοποιούμενος από μια κίνηση ποδιών κάτω από τον ανιχνευτή κίνησης που βρίσκεται στο κέντρο στο μπροστινό μέρος του κάδου απορριμμάτων. Ένα USB stick Wifi χρησιμοποιείται για την αποστολή δεδομένων σε έναν ιστότοπο. Αυτός ο κάδος ονομάζεται "The SmartBin". Το παραπάνω χιουμοριστικό βίντεο παρουσιάζει το πρωτοποριακό μας SmartBin.

Για να πραγματοποιηθεί αυτό το έργο και αυτό το αξιόλογο SmartBin, χρειάστηκαν πολλά εργαλεία:

  • Ένα μέτρο
  • Ισχυρή κόλλα
  • Μια κολλητική ταινία
  • Πριόνι ξύλου
  • Ενα ΚΑΤΣΑΒΙΔΙ
  • Τρυπάνι
  • Ένας σφιγκτήρας
  • Ενα μαχαίρι

Βήμα 1: Εξοπλισμός SmartBin

Εξοπλισμός SmartBin
Εξοπλισμός SmartBin
Εξοπλισμός SmartBin
Εξοπλισμός SmartBin

Το SmartBin αποτελείται από πράσινα, πορτοκαλί και κόκκινα φώτα LED που τοποθετούνται σε ένα εξάρτημα στην αριστερή πλευρά του κάδου, το οποίο θα υποδεικνύει πόσο γεμάτο. Αυτά τα φώτα θα είναι σαφώς ορατά και θα ειδοποιούν τον χρήστη όταν είναι απαραίτητο να αντικαταστήσει τη σακούλα απορριμμάτων. Η γλώσσα προγραμματισμού που χρησιμοποιείται είναι η Python. Το μετρημένο επίπεδο πλήρωσης του κάδου μεταδίδεται στον ακόλουθο ιστότοπο:

Εδώ είναι τα στοιχεία που έχουν χρησιμοποιηθεί, αλλά μπορείτε εύκολα να βρείτε μια εναλλακτική λύση:

  • 1 Κάδος (κάδος "κάλυμμα περιστροφής")
  • 1 Σερβοκινητήρας για να ανοίξετε τον κάδο
  • 1 Raspberry Pi 2
  • 2 τροφοδοτικά (φορτιστής κινητού τηλεφώνου 5V και τροφοδοτικό 6V) για τροφοδοσία του Raspberry Pi και του σερβοκινητήρα
  • 1 Αισθητήρας υπερήχων για τη μέτρηση του επιπέδου πλήρωσης του κάδου
  • Ορισμένες λυχνίες LED για εμφάνιση του επιπέδου πλήρωσης (4 πράσινες, 2 πορτοκαλί και 1 κόκκινες)
  • 1 Ανιχνευτής υπερήχων κίνησης για ανίχνευση κίνησης
  • 1 κάρτα SD 16Gb
  • Ηλεκτρικές αντιστάσεις (10.000 Ohms, 2000 Ohms και 1000 Ohms)
  • 1 USB usb stick για να ενεργοποιήσετε την ασύρματη μετάδοση στον ιστότοπο.
  • 1 Breadboard και μερικά καλώδια Raspberry

Η εκτιμώμενη τιμή κατασκευής είναι 80 €.

Βήμα 2: Κατασκευή του Raspberry Box και του LED Bar

Κατασκευή του Raspberry Box και του LED Bar
Κατασκευή του Raspberry Box και του LED Bar
Κατασκευή του Raspberry Box και του LED Bar
Κατασκευή του Raspberry Box και του LED Bar
Κατασκευή του Raspberry Box και του LED Bar
Κατασκευή του Raspberry Box και του LED Bar

Για την κατασκευή του κουτιού Raspberry, χρησιμοποιήστε ξύλινο πριόνι. Στερεώστε κάθε πλευρά του κουτιού με πριτσίνια για να φαίνεται καθαρό. Όπως υποδηλώνει το όνομά του, αυτό το κουτί θα περιέχει όχι μόνο το Raspberry Pi αλλά θα περιλαμβάνει επίσης τον αισθητήρα κίνησης τον οποίο θα τοποθετήσετε στο κάτω μέρος. Μόλις κατασκευαστεί το κουτί, βάψτε το στο ίδιο χρώμα με τον κάδο. Η τεχνολογία τρισδιάστατης εκτύπωσης θα μπορούσε να χρησιμοποιηθεί για τη δημιουργία αυτού του κουτιού.

Για την κατασκευή της ράβδου LED, χρησιμοποιήστε έναν ηλεκτρικό αγωγό στον οποίο ανοίγετε τρύπες για να επιτρέψετε την εγκατάσταση των φώτων LED. Η μπάρα LED πρέπει επίσης να βαφτεί. Όταν όλα είναι έτοιμα, εγκαταστήστε τις λυχνίες LED στον αγωγό και πραγματοποιήστε την ηλεκτρική σύνδεση. Προσέξτε να αριθμήσετε σωστά κάθε καλώδιο LED με κολλητική ταινία. Θα σας βοηθήσει να προσδιορίσετε κάθε LED κατά τη διάρκεια της καλωδίωσης.

Τέλος, συνδέστε το κουτί και τη γραμμή LED στο μπροστινό μέρος του κάδου σας.

Βήμα 3: Το μέρος του καπακιού

Το μέρος του καπακιού
Το μέρος του καπακιού
Το μέρος του καπακιού
Το μέρος του καπακιού

Όσον αφορά το καπάκι του κάδου, το πρώτο βήμα είναι να κολλήσετε τον σερβοκινητήρα στο καπάκι. Μια επέκταση της μόχλευσης πρέπει να γίνει προηγουμένως. Ο μοχλός θα χτυπήσει μια στάση που ήταν προηγουμένως χειροποίητη. Συνδέστε ένα βιδωτό κουτί στο καπάκι και κάντε μια τρύπα σε αυτό για να κρατήσετε τον αισθητήρα υπερήχων στη σωστή θέση. Βεβαιωθείτε ότι έχετε συνδέσει σωστά καλώδια στο καπάκι με ταινία.

Βήμα 4: Μέρος λογισμικού και απόκτηση δεδομένων

Μέρος λογισμικού και απόκτηση δεδομένων
Μέρος λογισμικού και απόκτηση δεδομένων
Μέρος λογισμικού και απόκτηση δεδομένων
Μέρος λογισμικού και απόκτηση δεδομένων
Μέρος λογισμικού και απόκτηση δεδομένων
Μέρος λογισμικού και απόκτηση δεδομένων

Όσον αφορά το λογισμικό, χρησιμοποιήσαμε τη γλώσσα προγραμματισμού python. Το πρόγραμμα αποθηκεύεται στην κάρτα SD που θα τρέξει από το Raspberry Pi όταν είναι ενεργοποιημένο. Το σχήμα καλωδίωσης είναι διαθέσιμο παραπάνω. Η εικόνα καρφίτσες Gpio είναι διαθέσιμη για όλους τους τύπους βατόμουρου στον παρακάτω σύνδεσμο:

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

Μπορείτε να χρησιμοποιήσετε έναν υπερηχητικό αισθητήρα για να αντικαταστήσετε τον ανιχνευτή κίνησης, απλά πρέπει να δημιουργήσετε έναν "εάν βρόχο" στον κώδικα.

Όπως αναφέρθηκε παραπάνω, τα δεδομένα που αφορούν το επίπεδο στο οποίο γεμίζει ο κάδος διαβιβάζονται σε έναν ιστότοπο που δημιουργήθηκε στο wix.com. Σε αυτόν τον ιστότοπο, μπορείτε να βρείτε διαφορετικές καρτέλες που συγκεντρώνουν τα μέλη της ομάδας, παρουσίαση υλικού και λογισμικού,… Η ενδιαφέρουσα καρτέλα είναι στην πραγματικότητα η καρτέλα "Βάση δεδομένων" που συλλέγει πληροφορίες σχετικά με την ποσότητα απορριμμάτων απευθείας από το SmartBin και δημιουργεί ένα γράφημα με τα δεδομένα Το Το γράφημα εμφανίζει την εξέλιξη του επιπέδου της πλήρωσης. Μπορείτε να δείτε ή να κατεβάσετε δεδομένα από τον ιστότοπο. Ο παρακάτω σύνδεσμος είναι ο ιστότοπος που χρησιμοποιήσαμε και θα σας δείξει πώς να διαβάζετε και να γράφετε σε φύλλα Google με python:

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

Όσον αφορά το "μέρος αυτόματης εκτέλεσης" του κώδικα, γράψτε στο τερματικό: sudo nano/etc/xdg/lxsession/LXDE-pi/autostart

Στη συνέχεια, στο τέλος του σεναρίου που μόλις άνοιξε, γράψτε αυτές τις δύο γραμμές κώδικα: python /home/pi/main.py & python /home/pi/csvcontrol.py &

Για να αποθηκεύσετε το aurorun, πατήστε: C trl + O Στη συνέχεια, πατήστε: Enter Στη συνέχεια, πατήστε: C trl + X

Γράψτε ως τελευταία γραμμή κώδικα: sudo reboot

Μπορείτε επίσης να κατεβάσετε το συνημμένο που είναι ο πλήρης κώδικας python που χρησιμοποιείται για το έργο. Και οι δύο κωδικοί εκτελούνται ταυτόχρονα!

Εδώ είναι ο κώδικας main.py:

εισαγωγή RPi. GPIO ως GPIOimport ημερομηνία ώρας εισαγωγής χρόνου εισαγωγής csv

GPIO.setmode (GPIO. BCM)

GPIO.setwarnings (False)

capteurP = 7

σερβο = 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

Ηχώ = 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 ()

απόσταση = 100 μνήμη = 0 χρόνος. ύπνος (2) pwm.start (12.5)

ενώ True:

timetac = time.time () εάν GPIO.input (capteurP) και timetac-timeset0.9: pwm. ChangeDutyCycle (2.5) time.sleep (0.2) memory = -0.5 pwm. ChangeDutyCycle (0) timetac = time.time () time.sleep (0.5) εάν timetac-timeset> 15 ή μνήμη> 0.4: εάν μνήμη> 0.4: pwm. ChangeDutyCycle (2.5) time.sleep (1) για x σε εύρος (0, 1): # GPIO.output (Trig, True) time.sleep (0.01) GPIO.output (Trig, False)

ενώ GPIO.input (Echo) == 0 και timetac-timeset <17: timetac = time.time () debutImpulsion = time.time ()

ενώ GPIO.input (Echo) == 1:

finImpulsion = time.time () if timetac-timeset <17: distance1 = round ((finImpulsion-debutImpulsion) * 340 * 100 /2, 1) distance2 = distance if (distance1-distance2) <1 και (distance2-distance1) 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. writerow ([time_str, dis]) memory = -0,1 εάν απόσταση <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) αλλιώς: GPIO.output (13, False) if distance <30: GPIO.output (19, True) else: GPIO.output (19, Λάθος) εάν απόσταση <22.5: GPIO.output (20, True) αλλιώς: GPIO.output (20, False) εάν απόσταση <15: GPIO.output (21, True) αλλιώς: GPIO.output (21, False) εάν απόσταση <7,5: GPIO.output (26, True) αλλιώς: GPIO.output (26, False)

Εδώ είναι ο κώδικας csvcontrol.py. Μην ξεχάσετε να επικολλήσετε το δημιουργημένο αρχείο ".json" στον ίδιο κατάλογο του main.py. Το αρχείο ".json" δημιουργείται με google API. Ένα στιγμιότυπο οθόνης είναι διαθέσιμο στις εικόνες.

εισαγωγή datetimeimport χρόνο εισαγωγή csv εισαγωγή gspread

από oauth2client.service_account import ServiceAccountCredentials

από το χρόνο εισαγωγής ύπνου ιχνηλάτηση εισαγωγής

timec2 = 'lol'

while True: time.sleep (5) loc = ('capteur.csv') με ανοιχτό (loc) ως csvfile: readCSV = csv.reader (csvfile, delimiter = ',') για τη σειρά στο readCSV: εκτύπωση (σειρά [0]) timec = row [0] print (row [1]) distance = row [1] distance = float (str (distance)) if timec2! = timec: timec2 = timec print ('Time: {0} Quantitee: { Μορφή 1} '. (Timec, απόσταση))

SCOPES = ['https://www.googleapis.com/auth/spreadsheets', "https://www.googleapis.com/auth/drive.file", "https://www.googleapis.com/auth/ οδηγώ"]

διαπιστευτήρια = ServiceAccountCredentials.from_json_keyfile_name ('client_secret.json', SCOPES) gc = gspread.authorize (credentials) wks = gc.open ("graph"). sheet1 wks = wks.append_row ((timec, απόσταση))

Συνιστάται: