Turinys:

„SmartBin“: 4 žingsniai
„SmartBin“: 4 žingsniai

Video: „SmartBin“: 4 žingsniai

Video: „SmartBin“: 4 žingsniai
Video: Bossard SmartBin IT - Smart Factory Logistics 2024, Lapkritis
Anonim
Image
Image

Pagrindinis šio projekto tikslas yra sukurti elektroninį įrenginį, kuriame būtų naudojamas bent vienas „Raspberry Pi“. Komandą sudaro 5 būsimi mechanikos inžinieriai ir vienas automatikos inžinierius. Mūsų projektą sudaro šiukšliadėžės atidarymas ir uždarymas, kurį automatiškai sukelia kojos judesys po judesio jutikliu, esančiu centre, šiukšliadėžės priekyje. „Wifi“USB atmintinė naudojama duomenims siųsti į svetainę. Ši šiukšliadėžė vadinama „SmartBin“. Aukščiau pateiktame humoristiniame vaizdo įraše pristatomas mūsų novatoriškas „SmartBin“.

Norint įgyvendinti šį projektą ir šį nuostabų „SmartBin“, reikėjo kelių įrankių:

  • Metras
  • Stiprus klijai
  • Lipni juosta
  • Medžio pjūklas
  • Atsuktuvas
  • Gręžimo mašina
  • Spaustukas
  • Peilis

1 žingsnis: „SmartBin“įranga

„SmartBin“įranga
„SmartBin“įranga
„SmartBin“įranga
„SmartBin“įranga

„SmartBin“sudaro žalios, oranžinės ir raudonos spalvos šviesos diodai, kurie dedami ant armatūros kairėje dėžės pusėje, kuri parodys, kaip ji užpildyta. Šios lemputės bus aiškiai matomos ir įspės vartotoją, kai reikia pakeisti šiukšlių maišą. Naudojama programavimo kalba yra „Python“. Išmatuotas dėžės užpildymo lygis perduodamas į šią svetainę:

Štai elementai, kurie buvo naudojami, tačiau galite lengvai rasti alternatyvų sprendimą:

  • 1 šiukšliadėžė („sūpynės dangčio“dėžė)
  • 1 Servomotoriui atidaryti šiukšliadėžę
  • 1 Raspberry Pi 2
  • 2 maitinimo šaltiniai (5 V mobiliojo telefono įkroviklis ir 6 V maitinimo šaltinis) „Raspberry Pi“ir servomotoriui tiekti
  • 1 Ultragarsinis jutiklis, skirtas matuoti dėžės pripildymo lygį
  • Kai kurie šviesos diodai rodo užpildymo lygį (4 žali, 2 oranžiniai ir 1 raudoni)
  • 1 Ultragarsinis judesio detektorius judesiui aptikti
  • 1 16 GB SD kortelė
  • Elektros rezistoriai (10 000 omų, 2000 omų ir 1000 omų)
  • 1 „WiFi“USB atmintinė, leidžianti belaidį perdavimą į svetainę.
  • 1 Duonos lenta ir kai kurie aviečių kabeliai

Numatoma gamybos kaina yra 80 eurų.

2 žingsnis: Raspberry Box ir LED juostos gamyba

Aviečių dėžės ir LED juostos gamyba
Aviečių dėžės ir LED juostos gamyba
Aviečių dėžės ir LED juostos gamyba
Aviečių dėžės ir LED juostos gamyba
Aviečių dėžės ir LED juostos gamyba
Aviečių dėžės ir LED juostos gamyba

Norėdami pagaminti aviečių dėžutę, naudokite medinį pjūklą. Kiekvieną dėžutės pusę pritvirtinkite kniedėmis, kad ji atrodytų švari. Kaip rodo jo pavadinimas, šioje dėžutėje bus ne tik „Raspberry Pi“, bet ir judesio jutiklis, kurį įdėsite apačioje. Kai dėžutė bus pastatyta, dažykite ją ta pačia spalva kaip ir šiukšliadėžė. Šiai dėžutei sukurti gali būti naudojama 3D spausdinimo technologija.

LED juostos gamybai naudokite elektrinį ortakį, kuriame gręžiate skyles, kad būtų galima sumontuoti LED žibintus. LED juosta taip pat turi būti nudažyta. Kai viskas bus paruošta, įdėkite šviesos diodus į kanalą ir prijunkite elektros jungtį. Atkreipkite dėmesį, kad kiekvienas LED kabelis būtų tinkamai sunumeruotas lipnia juostele. Tai padės jums nustatyti kiekvieną šviesos diodą laidų metu.

Galiausiai pritvirtinkite dėžutę ir LED juostą prie šiukšliadėžės priekio.

3 žingsnis: dangčio dalis

Dangtelio dalis
Dangtelio dalis
Dangtelio dalis
Dangtelio dalis

Kalbant apie šiukšliadėžės dangtį, pirmiausia reikia priklijuoti variklį prie dangčio. Anksčiau turi būti pratęstas svertas. Svirtis atsitrenks į sustojimą, kuris anksčiau buvo rankų darbo. Pritvirtinkite varžtą prie dangtelio ir padarykite skylę, kad ultragarso jutiklis būtų tinkamoje padėtyje. Įsitikinkite, kad tinkamai pritvirtinote kabelius prie dangtelio juostele.

4 žingsnis: programinės įrangos dalis ir duomenų gavimas

Programinės įrangos dalis ir duomenų gavimas
Programinės įrangos dalis ir duomenų gavimas
Programinės įrangos dalis ir duomenų gavimas
Programinės įrangos dalis ir duomenų gavimas
Programinės įrangos dalis ir duomenų gavimas
Programinės įrangos dalis ir duomenų gavimas

Kalbant apie programinę įrangą, mes naudojome „python“programavimo kalbą. Programa išsaugoma SD kortelėje, kurią paleis „Raspberry Pi“, kai ji bus įjungta. Elektros instaliacijos schema pateikiama aukščiau. „Gpio“kaiščių vaizdą galima rasti visų tipų avietėms, esančioje žemiau esančioje nuorodoje:

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

Galima pakeisti judesio jutiklį ultragarso jutikliu, tereikia kodu sukurti „if loop“.

Kaip minėta aukščiau, duomenys apie lygį, iki kurio šiukšliadėžė užpildyta, yra perduodami į svetainę, sukurtą svetainėje wix.com. Šioje svetainėje galite rasti įvairių skirtukų, kuriuose renkami komandos nariai, techninės ir programinės įrangos pristatymas… Įdomus skirtukas iš tikrųjų yra skirtukas „Duomenų bazė“, kuriame tiesiogiai iš „SmartBin“surenkama informacija apie šiukšlių kiekį ir sudaromas grafikas su duomenimis. Diagrama rodo užpildymo lygio raidą. Galima pamatyti ar atsisiųsti duomenis iš svetainės. Žemiau esanti nuoroda yra mūsų naudojama svetainė ir parodys, kaip skaityti ir rašyti „Google“lapuose naudojant „python“:

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

Dėl kodo „autorun“dalies įrašykite terminale: sudo nano/etc/xdg/lxsession/LXDE-pi/autostart

Tada ką tik atidaryto scenarijaus pabaigoje parašykite šias dvi kodo eilutes: python /home/pi/main.py & python /home/pi/csvcontrol.py &

Norėdami išsaugoti „aurorun“, paspauskite: C trl + O Tada paspauskite: Enter, tada paspauskite: C trl + X

Rašykite kaip paskutinę kodo eilutę: sudo reboot

Taip pat galite atsisiųsti priedą, kuris yra visas projektui naudojamas python kodas. Abu kodai vykdomi vienu metu!

Čia yra pagrindinis.py kodas:

importuoti RPi. GPIO kaip GPIOimportuoti laiko ir laiko importavimo laiką importuoti csv

GPIO.setmode (GPIO. BCM)

GPIO.setwarnings (klaidinga)

kapitonas P = 7

servo = 17

GPIO nustatymas (servo, GPIO. OUT)

GPIO.setup (capteurP, GPIO. IN)

pwm = GPIO. PWM (17, 50)

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

Trig = 23

Aidas = 24

GPIO.setup (Trig, GPIO. OUT)

GPIO nustatymas (Echo, GPIO. IN)

GPIO.setwarnings (klaidinga)

GPIO. output (5, klaidinga)

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

atstumas = 100 atminties = 0 laiko. miegas (2) pwm. pradžia (12.5)

nors tiesa:

timetac = time.time () jei GPIO.input (capteurP) ir timetac-timeset0.9: pwm. ChangeDutyCycle (2.5) time.sleep (0.2) atmintis = -0.5 pwm. ChangeDutyCycle (0) timetac = time.time () time.sleep (0,5), jei timetac-timeset> 15 arba atmintis> 0,4: jei atmintis> 0,4: pwm. ChangeDutyCycle (2.5) time.sleep (1) x diapazone (0, 1): # GPIO.output (Trig, Tiesa) time.sleep (0.01) GPIO.putput (Trig, False)

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

o GPIO.input (aidas) == 1:

finImpulsion = laikas. laikas (), jei laiko nustatymo laikas <17: atstumas1 = apvalus ((finImpulsion-debiutinis impulsas) * 340 * 100/2, 1) atstumas2 = atstumas, jei (atstumas1 atstumas2) <1 ir (atstumas2 atstumas1) 0,4: dis = apvalus ((60 atstumų)*5/6, 1) su atidarytu ('capteur.csv', 'w') kaip 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. writeow ([laiko_str, disas]) atmintis = -0,1, jei atstumas <52,5: GPIO. išvestis (5, tiesa) else: GPIO. išvestis (5, klaidinga), jei atstumas <45: GPIO. išvestis (6, tiesa) dar: GPIO. output (6, False), jei atstumas <37,5: GPIO. output (13, True) else: GPIO. output (13, False), jei atstumas <30: GPIO. output (19, True) else: GPIO. output (19, klaidinga), jei atstumas <22,5: GPIO. išvestis (20, tiesa) kita: GPIO. Išvestis (20, klaidinga), jei atstumas <15: GPIO. Išvestis (21, tiesa) dar: GPIO. Išvestis (21, klaidinga) jei atstumas <7.5: GPIO.putput (26, True) else: GPIO.putput (26, False)

Čia yra csvcontrol.py kodas. Nepamirškite įklijuoti sukurto „.json“failo į tą patį main.py katalogą. Failas „.json“sukurtas naudojant „Google“API. Nuotraukose galima rasti ekrano kopiją.

importas datetimeimport laikas importuoti csv import gspread

iš oauth2client.service_account importuoti ServiceAccountCredentials

nuo laiko importavimo miego importo atsekamumo

timec2 = 'lol'

o tiesa: time.sleep (5) loc = ('capteur.csv') su open (loc) kaip csvfile: readCSV = csv.reader (csvfile, delimiter = ',') eilutei readCSV: print (eilute [0]) timec = eilutė [0] spauda (eilutė [1]) atstumas = eilutė [1] atstumas = plūdė (str (atstumas)), jei laikasc2! = timec: timec2 = timec print ('Laikas: {0} Kvantitas: { 1} '. Formatas (timec, atstumas))

TAIKYMO SRITIS = ['https://www.googleapis.com/auth/spreadsheets', "https://www.googleapis.com/auth/drive.file", "https://www.googleapis.com/auth/ vairuoti "]

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

Rekomenduojamas: