Mündəricat:

SmartBin: 4 addım
SmartBin: 4 addım

Video: SmartBin: 4 addım

Video: SmartBin: 4 addım
Video: Amsa brochure on separate waste collection Opuscolo Amsa sulla raccolta differenziata! amsa #8 2024, Noyabr
Anonim
Image
Image

Bu layihənin əsas məqsədi ən azı bir Raspberry Pi istifadə edən bir elektron cihaz yaratmaqdır. Komanda 5 gələcək mexanika mühəndisi və bir avtomatika mühəndisindən ibarətdir. Layihəmiz, zibil qabının ön hissəsindəki mərkəzdə yerləşən hərəkət detektoru altında ayaq hərəkəti ilə avtomatik olaraq açılan və bağlanan bir zibil qutusu hazırlamaqdan ibarətdir. Veb saytına məlumat göndərmək üçün Wifi USB çubuğu istifadə olunur. Bu qutuya "SmartBin" deyilir. Yuxarıdakı yumoristik video, yenilikçi SmartBinimizi təqdim edir.

Bu layihəni və bu əlamətdar SmartBini həyata keçirmək üçün bir neçə vasitəyə ehtiyac vardı:

  • Bir metr
  • Güclü yapışqan
  • Yapışqan bant
  • Taxta mişar
  • Bir tornavida
  • Bir qazma maşını
  • Bir sıxac
  • Bıçaq

Addım 1: SmartBin Avadanlığı

SmartBin avadanlığı
SmartBin avadanlığı
SmartBin avadanlığı
SmartBin avadanlığı

SmartBin, qutunun sol tərəfindəki bir armatura yerləşdirilən yaşıl, narıncı və qırmızı LED işıqlardan ibarətdir ki, bu da doldurulma dərəcəsini göstərir. Bu işıqlar aydın şəkildə görünəcək və çöp torbasının dəyişdirilməsi lazım olduqda istifadəçini xəbərdar edəcək. İstifadə olunan proqramlaşdırma dili Pythondur. Çöp qutusunun ölçülmüş doldurma səviyyəsi aşağıdakı veb saytına ötürülür:

Burada istifadə olunan elementlər var, ancaq alternativ bir həll tapa bilərsiniz:

  • 1 Zibil qutusu ("yellənən qapaq" çöpü)
  • 1 Qutunu açmaq üçün servomotor
  • 1 Moruq Pi 2
  • Raspberry Pi və servomotoru təchiz etmək üçün 2 enerji təchizatı (5V mobil telefon şarj cihazı və 6V enerji təchizatı)
  • 1 Qutunun doldurulma səviyyəsini ölçmək üçün ultrasəs sensoru
  • Doldurma səviyyəsini göstərmək üçün bəzi LEDlər (4 yaşıl, 2 narıncı və 1 qırmızı)
  • 1 Hərəkəti aşkar etmək üçün ultrasəs hərəkət detektoru
  • 1 16Gb SD kart
  • Elektrik rezistorları (10.000 Ohm, 2000 Ohm və 1000 Ohm)
  • Veb saytına simsiz ötürülməni təmin etmək üçün 1 WiFi usb çubuğu.
  • 1 Çörək taxtası və bəzi Moruq kabelləri

Təxmini istehsal qiyməti 80 avrodur.

Addım 2: Moruq qutusu və LED çubuğunun istehsalı

Raspberry Box və LED Bar istehsalı
Raspberry Box və LED Bar istehsalı
Raspberry Box və LED Bar istehsalı
Raspberry Box və LED Bar istehsalı
Raspberry Box və LED Bar istehsalı
Raspberry Box və LED Bar istehsalı

Moruq qutusu istehsal etmək üçün taxta mişardan istifadə edin. Təmiz görünməsi üçün qutunun hər tərəfini pərçimlərlə bərkidin. Adından da göründüyü kimi, bu qutuda təkcə Raspberry Pi deyil, həm də altına yerləşdirəcəyiniz hərəkət sensoru da olacaq. Kutu hazırlandıqdan sonra onu çöp qutusu ilə eyni rəngə boyayın. Bu qutu yaratmaq üçün 3D çap texnologiyasından istifadə edilə bilər.

LED çubuğunun istehsalı üçün, LED işıqlarının quraşdırılmasına icazə vermək üçün deliklər qazdığınız bir elektrik kanalı istifadə edin. LED çubuğu da boyanmalıdır. Hər şey hazır olduqda, LED -ləri kanala quraşdırın və elektrik bağlantısını qurun. Hər LED kabelini yapışan bantla düzgün saymağa diqqət yetirin. Kablolama zamanı hər bir LED -i müəyyən etməyə kömək edəcək.

Nəhayət, qutunu və LED çubuğunu zibil qutusunun önünə bağlayın.

Addım 3: Qapaq hissəsi

Qapaq hissəsi
Qapaq hissəsi
Qapaq hissəsi
Qapaq hissəsi

Qutunun qapağına gəldikdə, ilk addım servomotoru qapağa yapışdırmaqdır. Leverin genişləndirilməsi əvvəlcədən edilməlidir. Kol, əvvəllər əl istehsalı olan bir dayanacağa dəyəcək. Ultrasonik sensoru düzgün vəziyyətdə tutmaq üçün qapağa vida qutusu bağlayın və içərisində bir delik açın. Kabelləri bantla qapağa düzgün bağladığınızdan əmin olun.

Addım 4: Proqram təminatı hissəsi və məlumatların alınması

Proqram təminatı hissəsi və məlumatların əldə edilməsi
Proqram təminatı hissəsi və məlumatların əldə edilməsi
Proqram təminatı hissəsi və məlumatların əldə edilməsi
Proqram təminatı hissəsi və məlumatların əldə edilməsi
Proqram Bölməsi və Məlumat Alınması
Proqram Bölməsi və Məlumat Alınması

Proqram hissəsi ilə əlaqədar olaraq python proqramlaşdırma dilindən istifadə etdik. Proqram açıldıqda Raspberry Pi tərəfindən işlədiləcək SD kartda saxlanılır. Kablolama sxemi yuxarıda mövcuddur. Gpio sancaqlar görüntüsü bütün moruq növləri üçün aşağıdakı linkdə mövcuddur:

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

Hərəkət detektorunu əvəz etmək üçün ultrasəs sensoru istifadə etmək mümkündür, sadəcə kodda "if loop" yaratmaq lazımdır.

Yuxarıda qeyd edildiyi kimi, zibil qutusunun doldurulma səviyyəsinə aid məlumatlar wix.com saytında yaradılmış bir veb sayta ötürülür. Bu veb saytında, komanda üzvlərini, aparat və proqram təqdimatını toplayan müxtəlif nişanlar tapa bilərsiniz … Maraqlı nişan, zibil miqdarı ilə bağlı məlumatları birbaşa SmartBin -dən toplayan və məlumatları olan bir qrafik yaradan "Verilənlər Bazası" sekmesidir.. Qrafik doldurma səviyyəsinin təkamülünü göstərir. Veb saytdan məlumatları görmək və ya yükləmək mümkündür. Aşağıdakı link istifadə etdiyimiz veb saytdır və python ilə google vərəqlərində oxumağı və yazmağı sizə göstərəcək:

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

Kodun "autorun hissəsi" ilə əlaqədar olaraq terminala yazın: sudo nano/etc/xdg/lxsession/LXDE-pi/autostart

Sonra açılan skriptin sonunda bu iki kod sətirini yazın: python /home/pi/main.py & python /home/pi/csvcontrol.py &

Aurorunu saxlamaq üçün basın: C trl + O Sonra basın: Daxil edin Sonra basın: C trl + X

Son kod sətri olaraq yazın: sudo reboot

Layihə üçün istifadə olunan tam python kodu olan əlavəni də yükləyə bilərsiniz. Hər iki kod eyni vaxtda işləyir!

Main.py kodu budur:

RPi. GPIO -nu GPIOimport olaraq datetime idxal vaxtı idxal csv

GPIO.setmode (GPIO. BCM)

GPIO.setwarnings (Yanlış)

kapteurP = 7

servo = 17

GPIO. quraşdırma (servo, GPIO. OUT)

GPIO. quraşdırma (capteurP, GPIO. IN)

pwm = GPIO. PWM (17, 50)

GPIO. quraşdırma (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. quraşdırma (26, GPIO. OUT)

Trig = 23

Eko = 24

GPIO.setup (Trig, GPIO. OUT)

GPIO. quraşdırma (Echo, GPIO. IN)

GPIO.setwarnings (Yanlış)

GPIO.output (5, Yanlış)

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)

dəfə qalığı = vaxt.vaxt ()

məsafə = 100 yaddaş = 0 vaxt. yuxu (2) pwm.başla (12.5)

Doğru halda:

timetac = time.time () if GPIO.input (capteurP) and timetac-timeset0.9: pwm. ChangeDutyCycle (2.5) time.sleep (0.2) memory = -0.5 pwm. ChangeDutyCycle (0) timetac = time.time () zaman.yuxu (0.5), timetac-timeset> 15 və ya memory> 0.4: memory> 0.4: pwm. ChangeDutyCycle (2.5) time.sleep (1) x for range (0, 1): # GPIO.output (Trig), Doğru) vaxt.yuxu (0.01) GPIO.çıxış (Trig, False)

GPIO.input (Exo) == 0 və timetac-timeset <17: timetac = time.time () debutImpulsion = time.time ()

GPIO.input (Echo) == 1 olarkən:

finImpulsion = time.time () əgər timetac-timeset <17: məsafə1 = dəyirmi ((finImpulsion-debutİmpulsion) * 340 * 100/2, 1) məsafə2 = əgər (məsafə1-məsafə2) <1 və (məsafə2-məsafə1) 0,4: dis = yuvarlaq ((60-məsafə)*5/6, 1) csvfile olaraq açıq ('capteur.csv', 'w') ilə: capteurwriter = csv.writer (csvfile) time_str = datetime.datetime.strftime (datetime.datetime.now (), '%Y-%m-%d%H:%M:%S') çap ('Vaxt: {0} Miqdarı: {1}'. format (vaxt_str, dis)) baş yazar. yazıcı ([time_str, dis]) yaddaş = -0.1 məsafə <52.5 olduqda: GPIO. çıxışı (5, Doğru) başqa: məsafə <45 olduqda GPIO. çıxışı (5, Yanlış): GPIO. çıxışı (6, Doğru) başqa: GPIO.output (6, False) məsafə <37.5: GPIO.output (13, True) başqa: GPIO.output (13, False) <30: GPIO.output (19, True) başqa: GPIO.output (19, False) əgər məsafə <22.5: GPIO.output (20, True) başqa: GPIO.output (20, False) <15: GPIO.output (21, True) başqa: GPIO.output (21, False) əgər məsafə <7.5: GPIO.output (26, True) başqa: GPIO.output (26, False)

İşdə csvcontrol.py kodu. Yaradılmış ".json" faylını main.py -nin eyni qovluğuna yapışdırmağı unutmayın. ". Json" faylı Google API ilə yaradılmışdır. Şəkillərdə ekran görüntüsü mövcuddur.

idxal datetimeimport vaxt idxal csv idxal gspread

oauth2client.service_account idxalından ServiceAccountCredentials

vaxt idxal yuxu idxal izi

timec2 = 'lol'

isə True: time.sleep (5) csvfile olaraq open (loc) ilə loc = ('capteur.csv'): readCSV = csv.reader (csvfile, ayırıcı = ',') readCSV: print (satır [0]) timec = satır [0] çap (sıra [1]) məsafə = satır [1] məsafə = üzmək (str (məsafə)) əgər timec2! = timec: timec2 = timec çapı ('Zaman: {0} Miqdarı: { 1} 'formatı (timec, məsafə))

KAPSAMLAR = ['https://www.googleapis.com/auth/spreadsheets', "https://www.googleapis.com/auth/drive.file", "https://www.googleapis.com/auth/ sür "]

etimadnamələri = ServiceAccountCredentials.from_json_keyfile_name ('client_secret.json', KAPSAMLAR) gc = gspread.authorize (etimadnamələri) wks = gc.open ("qrafik"). hesabat 1 wks = wks.append_row ((timec, məsafə))

Tövsiyə: