Mundarija:

SmartBin: 4 qadam
SmartBin: 4 qadam

Video: SmartBin: 4 qadam

Video: SmartBin: 4 qadam
Video: 'Chaar Kadam' FULL VIDEO Song | PK | Sushant Singh Rajput | Anushka Sharma | T-series 2024, Noyabr
Anonim
Image
Image

Loyihaning asosiy maqsadi - hech bo'lmaganda bitta Raspberry Pi ishlatadigan elektron qurilma yaratish. Jamoa 5 ta bo'lajak mexanik muhandis va bitta avtomatika muhandisidan iborat. Bizning loyihamiz axlat qutisi oldidagi markazda joylashgan harakat detektori ostida oyoq harakati bilan avtomatik ravishda ochiladigan va yopiladigan axlat qutisini yasashdan iborat. Ma'lumotni veb -saytga yuborish uchun Wi -Fi USB -tayog'i ishlatiladi. Bu axlat qutisi "SmartBin" deb nomlangan. Yuqoridagi kulgili video bizning innovatsion SmartBin -ni taqdim etadi.

Ushbu ajoyib SmartBin loyihasini amalga oshirish uchun bir nechta vositalar kerak edi:

  • Bir metr
  • Kuchli elim
  • Yopishqoq lenta
  • Yog'och arra
  • Tornavida
  • Burg'ulash mashinasi
  • Qisqich
  • Pichoq

1 -qadam: SmartBin uskunalari

SmartBin uskunalari
SmartBin uskunalari
SmartBin uskunalari
SmartBin uskunalari

SmartBin yashil, to'q sariq va qizil LED chiroqlardan iborat bo'lib, ular axlat qutisining chap tomonidagi armatura ustiga qo'yilgan bo'lib, u qanchalik to'ldirilganligini ko'rsatadi. Bu chiroqlar aniq ko'rinadi va axlat qutisini almashtirish zarur bo'lganda foydalanuvchini ogohlantiradi. Amaldagi dasturlash tili - Python. Idishning to'ldirish darajasi quyidagi veb -saytga yuboriladi:

Bu erda ishlatilgan elementlar, lekin siz muqobil echimni osongina topishingiz mumkin:

  • 1 quti ("burilish qopqog'i" qutisi)
  • 1 Axlat qutisini ochish uchun servomotor
  • 1 Raspberry Pi 2
  • Raspberry Pi va servomotorni ta'minlash uchun 2 ta quvvat manbalari (5V mobil telefon zaryadlovchi va 6V quvvat manbai)
  • 1 Axlat qutisini to'ldirish darajasini o'lchash uchun ultratovushli sensor
  • To'ldirish darajasini ko'rsatish uchun ba'zi LEDlar (4 yashil, 2 to'q sariq va 1 qizil)
  • 1 Harakatni aniqlash uchun ultratovushli harakat detektori
  • 1 16 Gb SD-karta
  • Elektr rezistorlar (10.000 Ohm, 2000 Ohm va 1000 Ohm)
  • Veb -saytga simsiz uzatishni yoqish uchun 1 ta Wi -Fi usb tayog'i.
  • 1 Non paneli va ba'zi malina kabellari

Ishlab chiqarishning taxminiy narxi - 80 evro.

2 -qadam: Malinali quti va LED paneli ishlab chiqarish

Raspberry Box va LED -bar ishlab chiqarish
Raspberry Box va LED -bar ishlab chiqarish
Raspberry Box va LED -bar ishlab chiqarish
Raspberry Box va LED -bar ishlab chiqarish
Raspberry Box va LED -bar ishlab chiqarish
Raspberry Box va LED -bar ishlab chiqarish

Malina qutisini ishlab chiqarish uchun yog'och arra ishlating. Toza ko'rinishi uchun qutining har tomonini perchinlar bilan mahkamlang. Nomidan ko'rinib turibdiki, bu quti nafaqat Raspberry Pi ni o'z ichiga oladi, balki uni pastki qismiga qo'yadigan harakat sensori ham o'z ichiga oladi. Quti qurilgach, uni axlat qutisi bilan bir xil rangda bo'yab qo'ying. Ushbu qutini yaratish uchun 3D bosib chiqarish texnologiyasidan foydalanish mumkin.

LED barini ishlab chiqarish uchun, LED chiroqlarini o'rnatishga ruxsat berish uchun teshiklarni burg'ilaydigan elektr kanalidan foydalaning. LED paneli ham bo'yalgan bo'lishi kerak. Hamma narsa tayyor bo'lganda, LEDlarni kanalga o'rnating va elektr aloqasini ulang. Har bir LED kabelini yopishqoq lenta bilan to'g'ri raqamlashga e'tibor bering. Bu simlarni ulash paytida har bir LEDni aniqlashga yordam beradi.

Nihoyat, qutini va LED panelini axlat qutisining old qismiga ulang.

3 -qadam: Qopqoq qismi

Qopqoq qismi
Qopqoq qismi
Qopqoq qismi
Qopqoq qismi

Qutining qopqog'iga kelsak, birinchi navbatda servomotorni qopqoqqa yopishtirish kerak. Leverajni kengaytirish oldindan amalga oshirilishi kerak. Qo'l ilgari qo'lda ishlangan to'xtash joyiga tegadi. Ultrasonik sensorni to'g'ri holatda ushlab turish uchun vintli qutini qopqog'iga mahkamlang va teshik qiling. Qopqoqdagi kabellarni lenta bilan to'g'ri biriktirganingizga ishonch hosil qiling.

4 -qadam: dasturiy ta'minot qismi va ma'lumotlarni yig'ish

Dasturiy ta'minot qismi va ma'lumotlarni yig'ish
Dasturiy ta'minot qismi va ma'lumotlarni yig'ish
Dasturiy qism va ma'lumotlarni yig'ish
Dasturiy qism va ma'lumotlarni yig'ish
Dasturiy qism va ma'lumotlarni yig'ish
Dasturiy qism va ma'lumotlarni yig'ish

Dasturiy qismga kelsak, biz python dasturlash tilidan foydalanganmiz. Dastur Raspberry Pi yoqilgan SD-kartada saqlanadi. Ulanish sxemasi yuqorida keltirilgan. Gpio pinlari tasviri barcha malina turlari uchun quyidagi havolada mavjud:

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

Harakat detektorini almashtirish uchun ultratovushli datchikdan foydalanish mumkin, faqat kodda "if loop" ni yaratish kerak.

Yuqorida aytib o'tilganidek, axlat qutisi to'ldirilganligi haqidagi ma'lumotlar wix.com saytida yaratilgan veb -saytga uzatiladi. Bu veb -saytda siz guruh a'zolari, apparat va dasturiy ta'minot taqdimotlarini to'playdigan turli xil yorliqlarni topishingiz mumkin … Qiziqarli tab - bu axlat miqdori haqidagi ma'lumotlarni to'g'ridan -to'g'ri SmartBin -dan to'playdigan va ma'lumotlar bilan grafik tuzadigan "Ma'lumotlar bazasi" yorlig'i.. Grafikda to'ldirish darajasining evolyutsiyasi ko'rsatilgan. Saytdan ma'lumotlarni ko'rish yoki yuklab olish mumkin. Quyidagi havola biz ishlatgan veb -sayt bo'lib, sizga google varaqlarida python bilan qanday o'qish va yozishni ko'rsatib beradi:

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

Kodning "ishga tushirish qismi" haqida terminalga yozing: sudo nano/etc/xdg/lxsession/LXDE-pi/autostart

Keyin ochilgan skript oxirida quyidagi ikkita kod qatorini yozing: python /home/pi/main.py & python /home/pi/csvcontrol.py &

Aurorunni saqlash uchun: C trl + O ni bosing, keyin: Enter ni bosing, C trl + X ni bosing.

Oxirgi kod qatori sifatida yozing: sudo reboot

Bundan tashqari, loyiha uchun ishlatiladigan to'liq python kodli qo'shimchani yuklab olishingiz mumkin. Ikkala kod ham bir vaqtning o'zida ishlaydi!

Bu erda main.py kodi:

RPi. GPIO -ni GPIOimport sifatida import qilish vaqtini import qilish csv -ni import qilish

GPIO.setmode (GPIO. BCM)

GPIO.setwarnings (noto'g'ri)

kapturP = 7

servo = 17

GPIO. sozlash (servo, GPIO. OUT)

GPIO. sozlash (capteurP, GPIO. IN)

pwm = GPIO. PWM (17, 50)

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

Trig = 23

Eko = 24

GPIO. sozlash (Trig, GPIO. OUT)

GPIO. sozlash (Echo, GPIO. IN)

GPIO.setwarnings (noto'g'ri)

GPIO.output (5, noto'g'ri)

GPIO.output (6, False) GPIO.utput (13, False) GPIO.output (19, False) GPIO.output (20, False) GPIO.output (21, False)

GPIO.output (Trig, False)

vaqt sozlamalari = time.time ()

masofa = 100 xotira = 0 vaqt. uyqu (2) pwm.boshlanish (12,5)

rost bo'lsa:

timetac = time.time () if GPIO.input (capteurP) and timetac-timeset0.9: pwm. ChangeDutyCycle (2.5) time.sleep (0.2) xotira = -0.5 pwm. ChangeDutyCycle (0) timetac = time.time () time.sleep (0.5), agar timetac-timeset> 15 yoki xotira> 0.4: if memory> 0.4: pwm. ChangeDutyCycle (2.5) time.sleep (1) for x for range (0, 1): # GPIO.output (Trig), Haqiqiy) vaqt.sleep (0.01) GPIO.output (Trig, False)

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

GPIO.input (Echo) == 1 bo'lsa:

finImpulsion = time.time () if timetac-timeset <17: distance1 = round ((finImpulsion-debutImpulsion) * 340 * 100/2, 1) masofa2 = agar (masofa1-masofa2) <1 va (masofa2-masofa1) 0,4: dis = dumaloq ((60 masofali)*5/6, 1) csvfile sifatida ochiq ('capteur.csv', 'w') bilan: capteurwriter = csv.writer (csvfile) time_str = datetime.datetime.strftime (datetime.datetime.now (), '%Y-%m-%d%H:%M:%S') chop etish ('Vaqt: {0} Sonlar soni: {1}'. format (time_str, dis)) yozuvchi. yozuvchi ([time_str, dis]) xotira = -0.1, agar masofa <52.5: GPIO.output (5, True) boshqa: GPIO.output (5, False) agar masofa <45: GPIO. chiqish (6, To'g'ri) bo'lsa: GPIO.output (6, False) agar masofa <37.5: GPIO.output (13, True) boshqa: GPIO.output (13, False) agar masofa <30: GPIO. chiqish (19, To'g'ri) boshqa: GPIO. chiqish (19, False) agar masofa <22.5: GPIO.output (20, True) boshqa: GPIO.output (20, False) <15: GPIO.output (21, True) boshqa: GPIO.output (21, False) agar masofa <7.5: GPIO.output (26, True) boshqa: GPIO.output (26, False)

Bu erda csvcontrol.py kodi. Yaratilgan ".json" faylini main.py katalogiga joylashtirishni unutmang. ". Json" fayli Google API yordamida yaratilgan. Rasmlarda skrinshot mavjud.

import datetimeimport vaqt import csv import gspread

dan oauth2client.service_account import ServiceAccountCredentials

vaqtdan boshlab uyqu importini kuzatib borish

timec2 = 'lol'

while True: time.sleep (5) loc = ('capteur.csv') with open (loc) with csvfile: readCSV = csv.reader (csvfile, delimiter = ',') readCSV: satr uchun satr [0]) timec = qator [0] bosib chiqarish (qator [1]) masofa = satr [1] masofa = suzish (str (masofa)) agar timec2! = timec: timec2 = timec chop etish ('Vaqt: {0} Soni: { 1} 'formati (vaqt, masofa))

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

hisobga olish ma'lumotlari = ServiceAccountCredentials.from_json_keyfile_name ('client_secret.json', SCOPES) gc = gspread.authorize (hisobga olish ma'lumotlari) wks = gc.open ("grafik"). varaq1 wks = wks.append_row ((vaqt, masofa))

Tavsiya: