İçindekiler:

SmartBin: 4 Adım
SmartBin: 4 Adım

Video: SmartBin: 4 Adım

Video: SmartBin: 4 Adım
Video: Smartbin Remote Monitoring 2024, Kasım
Anonim
Image
Image

Bu projenin temel amacı, en az bir adet Raspberry Pi kullanan elektronik bir cihaz oluşturmaktır. Ekip, geleceğin 5 makine mühendisi ve bir otomasyon mühendisinden oluşuyor. Projemiz, çöp kutusunun ön tarafında ortada bulunan hareket dedektörü altında ayak hareketi ile otomatik olarak açılıp kapanan bir çöp kovası yapmaktan ibarettir. Bir web sitesine veri göndermek için bir Wifi USB çubuğu kullanılır. Bu kutuya "SmartBin" denir. Yukarıdaki komik video, yenilikçi SmartBin'imizi tanıtıyor.

Bu projeyi ve bu olağanüstü SmartBin'i gerçekleştirmek için birkaç araç gerekliydi:

  • Bir metre
  • Güçlü yapıştırıcı
  • bir yapışkan bant
  • Bir ağaç testeresi
  • Bir tornavida
  • Bir matkap makinesi
  • bir kelepçe
  • Bir bıçak

Adım 1: SmartBin Ekipmanı

SmartBin Ekipmanları
SmartBin Ekipmanları
SmartBin Ekipmanları
SmartBin Ekipmanları

SmartBin, kutunun ne kadar dolu olduğunu gösteren, kutunun sol tarafındaki bir armatür üzerine yerleştirilmiş yeşil, turuncu ve kırmızı LED ışıklardan oluşur. Bu ışıklar net bir şekilde görünecek ve çöp poşetinin değiştirilmesi gerektiğinde kullanıcıyı uyaracaktır. Kullanılan programlama dili Python'dur. Deponun ölçülen doluluk seviyesi aşağıdaki web sitesine iletilir:

İşte kullanılmış olan ancak kolayca alternatif bir çözüm bulabileceğiniz unsurlar:

  • 1 Kutu ("döner kapaklı" kutu)
  • Hazneyi açmak için 1 servo motor
  • 1 Ahududu Pi 2
  • Raspberry Pi ve servo motoru beslemek için 2 güç kaynağı (5V cep telefonu şarj cihazı ve 6V güç kaynağı)
  • 1 Kutunun dolum seviyesini ölçmek için ultrasonik sensör
  • Bazı LED'ler dolum seviyesini gösterir (4 yeşil, 2 turuncu ve 1 kırmızı)
  • Bir hareketi algılamak için 1 Ultrasonik hareket dedektörü
  • 1 16Gb SD kart
  • Elektrik dirençleri (10.000 Ohm, 2000 Ohm ve 1000 Ohm)
  • Web sitesine kablosuz iletimi sağlamak için 1 WiFi usb çubuğu.
  • 1 Breadboard ve bazı Raspberry kabloları

Tahmini üretim fiyatı 80€'dur.

Adım 2: Ahududu Kutusu ve LED Barın İmalatı

Ahududu Kutusu ve LED Bar İmalatı
Ahududu Kutusu ve LED Bar İmalatı
Ahududu Kutusu ve LED Bar İmalatı
Ahududu Kutusu ve LED Bar İmalatı
Ahududu Kutusu ve LED Bar İmalatı
Ahududu Kutusu ve LED Bar İmalatı

Ahududu kutusunu üretmek için ağaç testeresi kullanın. Temiz görünmesi için kutunun her tarafını perçinlerle sabitleyin. Adından da anlaşılacağı gibi bu kutu içerisinde sadece Raspberry Pi değil, alt kısmına yerleştireceğiniz hareket sensörü de yer alacak. Kutu oluşturulduktan sonra, kutu ile aynı renge boyayın. Bu kutuyu oluşturmak için 3D baskı teknolojisi kullanılabilir.

LED çubuğun üretimi için, LED ışıkların takılmasına izin vermek için delikler açacağınız bir elektrik kanalı kullanın. LED çubuğun da boyanması gerekiyor. Her şey hazır olduğunda kanala ledleri takınız ve elektrik bağlantısını yapınız. Her LED kablosunu yapışkan bantla doğru şekilde numaralandırmaya dikkat edin. Kablolama sırasında her bir LED'i tanımlamanıza yardımcı olacaktır.

Son olarak kutuyu ve LED çubuğu çöp kutunuzun önüne takın.

Adım 3: Kapak Parçası

Kapak Parçası
Kapak Parçası
Kapak Parçası
Kapak Parçası

Hazne kapağı ile ilgili olarak, ilk adım servo motoru kapağa yapıştırmaktır. Kaldıracın bir uzantısı daha önce yapılmış olmalıdır. Kol, daha önce el yapımı olan bir durağa çarpacaktır. Ultrasonik sensörü doğru konumda tutmak için kapağa bir vida kutusu takın ve içine bir delik açın. Kabloları bantla kapağa doğru şekilde taktığınızdan emin olun.

4. Adım: Yazılım Bölümü ve Veri Toplama

Yazılım Parçası ve Veri Toplama
Yazılım Parçası ve Veri Toplama
Yazılım Parçası ve Veri Toplama
Yazılım Parçası ve Veri Toplama
Yazılım Parçası ve Veri Toplama
Yazılım Parçası ve Veri Toplama

Yazılım kısmında ise python programlama dilini kullandık. Program, açıldığında Raspberry Pi tarafından çalıştırılacak olan SD karta kaydedilir. Kablolama şeması yukarıda mevcuttur. Tüm ahududu türleri için Gpio pin görüntüsü aşağıdaki bağlantıda mevcuttur:

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

Hareket dedektörünü değiştirmek için ultrasonik bir sensör kullanmak mümkündür, kodda bir "if döngüsü" oluşturmanız yeterlidir.

Yukarıda bahsedildiği gibi, çöp kutusunun doldurulma seviyesine ilişkin veriler, wix.com'da oluşturulan bir web sitesine iletilir. Bu web sitesinde, ekip üyelerini, donanım ve yazılım sunumlarını bir araya getiren farklı sekmeler bulabilirsiniz, … İlginç sekme aslında çöp miktarı ile ilgili bilgileri doğrudan SmartBin'den toplayan ve verilerle bir grafik oluşturan "Veritabanı" sekmesidir.. Grafik, doldurma seviyesinin gelişimini gösterir. Web sitesinden verileri görmek veya indirmek mümkündür. Aşağıdaki bağlantı kullandığımız web sitesidir ve python ile google sayfalarında nasıl okunacağını ve yazılacağını size gösterecektir:

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

Kodun "otomatik çalıştırma kısmı" ile ilgili olarak, terminale şunu yazın: sudo nano /etc/xdg/lxsession/LXDE-pi/autostart

Ardından, yeni açılan betiğin sonuna şu iki kod satırını yazın: python /home/pi/main.py & python /home/pi/csvcontrol.py &

Aurorun'u kaydetmek için, şu tuşlara basın: C trl + O Ardından, şuna basın: Enter Ardından, şu tuşlara basın: C trl + X

Son kod satırı olarak yaz: sudo yeniden başlatma

Proje için kullanılan tam python kodu olan eki de indirebilirsiniz. Her iki kod da aynı anda çalıştırılır!

İşte main.py kodu:

RPi. GPIO'yu GPIOimport datetime olarak içe aktarın saati içe aktar csv

GPIO.setmode(GPIO. BCM)

GPIO.setwarnings(Yanlış)

yakalayıcı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)

Tetik = 23

yankı = 24

GPIO.setup(Trig, GPIO. OUT)

GPIO.setup(Yankı, GPIO. IN)

GPIO.setwarnings(Yanlış)

GPIO.output(5, Yanlış)

GPIO.output(6, Yanlış) GPIO.output(13, Yanlış) GPIO.output(19, Yanlış) GPIO.output(20, Yanlış) GPIO.output(21, Yanlış) GPIO.output(26, Yanlış)

GPIO.output(Trig, False)

zaman seti = zaman.zaman()

mesafe=100 hafıza=0 zaman.uyku(2) pwm.start(12.5)

Doğru iken:

timetac = time.time() eğer GPIO.input(capteurP) ve 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 ise veya memory>0.4: ise memory>0.4: pwm. ChangeDutyCycle(2.5) time.sleep(1) x aralığında (0, 1): # GPIO.output(Trig), True) time.sleep(0.01) GPIO.output(Trig, False)

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

GPIO.input(Echo)==1 iken:

finImpulsion = time.time() ise timetac-timeset<17: Distance1 = round((finImpulsion - ilkImpulsion) * 340 * 100 / 2, 1) uzaklık2=mesafe if (mesafe1-mesafe2)<1 ve (mesafe2-mesafe1)0.4: dis=yuvarlak((60-mesafe)*5/6, 1) open('capteur.csv', 'w') ile csvfile olarak: 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 ise uzaklık < 52.5: GPIO.output(5, True) başka: GPIO.output(5, False) uzaklık < 45 ise: GPIO.output(6, True) başka: GPIO.output(6, False) uzaklık < 37.5 ise: GPIO.output(13, True) başka: GPIO.output(13, False) uzaklık < 30 ise: GPIO.output(19, True) başka: GPIO.output(19, Yanlış) uzaklık < 22,5 ise: GPIO.output(20, Doğru) başka: GPIO.output(20, Yanlış) uzaklık < 15 ise: GPIO.output(21, Doğru) başka: GPIO.output(21, Yanlış) uzaklık < 7.5 ise: GPIO.output(26, True) diğer: GPIO.output(26, False)

İşte csvcontrol.py kodu. Oluşturulan ".json" dosyasını main.py ile aynı dizine yapıştırmayı unutmayın. ".json" dosyası google API ile oluşturulur. Resimlerde ekran görüntüsü mevcuttur.

import datetimeimport time import csv import gspread

oauth2client.service_account'tan ServiceAccountCredentials'ı içe aktarın

zamandan içe uyku içe aktarma geri izleme

timec2='lol'

while True: time.sleep(5) loc=('capteur.csv') open(loc) ile csvfile olarak: readCSV = csv.reader(csvfile, delimiter=', ') readCSV'deki satır için: print(row[0]) timec=satır[0] print(satır[1]) mesafe=satır[1] mesafe=float(str(mesafe)) if timec2!=timec: timec2=timec print('Zaman:{0} Miktar:{ 1}'.format(timec, mesafe))

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

kimlik bilgileri = ServiceAccountCredentials.from_json_keyfile_name('client_secret.json', KAPSAMLAR) gc = gspread.authorize(credentials) wks= gc.open("graph").sheet1 wks= wks.append_row((zaman, mesafe))

Önerilen: