Orodha ya maudhui:

Ufuatiliaji wa GPS Ramani ya 3D: Hatua 9
Ufuatiliaji wa GPS Ramani ya 3D: Hatua 9

Video: Ufuatiliaji wa GPS Ramani ya 3D: Hatua 9

Video: Ufuatiliaji wa GPS Ramani ya 3D: Hatua 9
Video: Я ОДЕРЖИМЫЙ ДЕМОНАМИ 2024, Novemba
Anonim
Ufuatiliaji wa 3D Ramani ya 3D
Ufuatiliaji wa 3D Ramani ya 3D
Ufuatiliaji wa Ramani ya 3D ya GPS
Ufuatiliaji wa Ramani ya 3D ya GPS

Mradi huu ni ramani ya 3D iliyochapishwa ya 3D, na barabara, mito na miji, na taa za LED kuonyesha eneo la washiriki wa familia. Inaweza kuonyesha ikiwa mtoto yuko shuleni au la, au tu eneo la wazazi wote wawili. Tunaweza pia kuitumia kutabiri ni wakati gani wazazi hufika nyumbani, ili chakula cha jioni kiweze kufanywa kwa wakati unaofaa. Pia ni mradi tu mzuri kwa jumla kuonyesha na kuonyesha kwa familia na marafiki.

Natumahi unafurahiya kuifanya hii iwe yenye Agizo, au kufurahiya kujua juu ya mradi ambao nimefanya

Hatua ya 1: Kupata Ramani ya 3D

Ili kupata ramani ya 3D ya eneo lako, nimeandika tofauti inayoweza kufundishwa kukusaidia kupitia mchakato wa kutengeneza moja. Kiungo cha anayefundishwa ni hapa:

www.instructables.com/id/Making-a-3D-Print ……

Hatua ya 2: Kuandaa Ramani ya Kuingiza LED

Sasa kwa kuwa una ramani ya 3D, na barabara, miji na mito, tunahitaji njia ya kuonyesha mahali mtu yuko kwenye ramani. Nilitumia LED zenye rangi mbili-3mm RG, kwa sababu kusudi kuu la ramani ni kuonyesha mahali wazazi wawili walipo. Katika maeneo fulani nilitumia RGB LED, kuniruhusu kuonyesha ambapo mtoto mkubwa alikuwa. Kuna kikomo cha pini 28 kwa pato kwenye Raspberry Pi, kwa hivyo chagua maeneo ya LED kwa busara. Niliishia kutumia karibu 24 kati yao, kwa hivyo unapaswa kuwa sawa.

Ili kuchimba PLA, nilipata kuchimba visima vya kawaida vya kuni vilifanya kazi vizuri, na nilitibu ni kama vile ningeweza kutibu kuni.

Katika maeneo, ambapo ramani ilikuwa nene sana, ningechimba safu ya msingi na biti kubwa ya kuchimba visima, na kisha safu inayoonekana hapo juu na kipenyo sahihi cha 3mm.

Hatua ya 3: Ingiza LED

Ingiza LEDs
Ingiza LEDs

Sasa kwa kuwa tuna mashimo ya taa za LED kukaa, Tunaweza kuziunganisha. PVA au Superglue inafanya kazi vizuri kwa hili, niligundua kuwa PVA iliizunguka kuiziba mahali, na superglue pia ilifanya kazi vizuri sana. Hakikisha kwamba kwa kila LED, zinashikilia tu upande unaoonekana na mm chache, Kwa sababu kuwa na taa za LED zinaonekana kuwa mbaya. Usijali juu ya miguu nyuma, tunaweza kuikunja mara tu itakapouzwa.

Hatua ya 4: Unganisha LED kwenye Raspberry Pi

Niliuza LED moja kwa moja kwa Raspberry Pi, hata hivyo, ikiwa unayo na kichwa kilichouzwa kabla, au unataka kutumia pi kwa kitu kingine, basi ningependekeza kutumia waya za kuruka kwa kila LED, ikimaanisha kuwa Pi inaondolewa. Unaweza kuona kwamba mara tu nilipokuwa nimeuza LED, nilikunja miguu chini ili wasishike nyuma.

Hatua ya 5: Jaribu LEDs

Mtihani LEDs
Mtihani LEDs

Ili kuhakikisha kuwa LED zote zinafanya kazi, nilitumia maandishi ambayo hupitia kila pini inayowezekana, na kuwasha, moja kwa wakati, ambayo, inapita kwenye inayofuata wakati ninabofya ingiza. Hii iliniruhusu kutambua ni nambari gani ya pini iliyofanya eneo lipi, ambalo lilikuja muhimu sana.

kuagiza RPi. GPIO kama GPIO

wakati wa kuagiza GPIO.setmode (GPIO. BCM) kwa i katika anuwai (0, 28): GPIO.setup (i, GPIO. OUT) kwa i katika anuwai (0, 28): GPIO.output (i, GPIO. HIGH) muda. lala (0.3) GPIO.pato (i, GPIO. LOW) chapa ("Hiyo Ilikuwa:" + str (i)) z = mbichi_kuingiza ("Ifuatayo?")

Wakati hii ilikuwa ikitokea, ningeandika chini kwenye faili ya maandishi ambayo pini ilifanya mahali na rangi gani. Unahitaji kufanya hivyo, kwani ni muhimu sana katika hatua inayofuata.

Hatua ya 6: Nambari ya Kuwasha LED Inapoombwa

Njia ambayo nimefanya mradi huu inahusisha Raspberry Pi Zero W moja, na wavuti ya msingi ambayo hukuruhusu kuwasha pini. Hii ilimaanisha kuwa Pi 4 kuu, ambayo kawaida huwashwa, na inaendesha, inaweza kufanya usindikaji, halafu Pi 0 kidogo inabidi tu kuwasha pini, na kufanya mambo kuwa ngumu zaidi. Nilifanya hivi kwa sababu inafaa usanidi wangu, na pia nilihisi Pi 0 inaweza kuwa polepole kwa kile tutakachokuwa tukifanya baadaye.

kuagiza RPi. GPIO kama GPIO

ingiza wakati kutoka kwa chupa ya kuingiza chupa, render_template, ombi, jsonify import os app = Flask (_ name_) p = GPIO.setmode (GPIO. BCM) kwa i katika masafa (0, 28): GPIO.setup (i, GPIO. OUT) @ app.route ('/') def index (): ombi la kurudi.remote_addr @ app.route ("/ off /") def turn_off (pin): GPIO.output (int (pin), GPIO. LOW) rudisha "Zima" @ app.route ("/ off / all") def alloff (): kwa i katika anuwai (0, 28): GPIO.output (i, GPIO. LOW) rudisha "off" @ app.route ("/ on /") def turn_on (pin): GPIO.output (int (pin), GPIO. HIGH) kurudi "On" ikiwa _name_ == '_main_': app.run (debug = True, host = '0.0. 0.0 ')

Njia ambayo hii inafanya kazi ni kusubiri url ya anwani ya IP ya pi na kisha kuwasha au kuzima na kisha nambari ya pini.

hifadhi nambari hii kwenye saraka ya nyumbani ya Raspberry Pi, na uipe jina "pin_website.py"

Utahitaji kuweka hii kuendesha kiatomati, kwa hivyo kufanya hivyo, katika aina ya wastaafu: Sudo nano / etc / profile

Chini ya faili hii, ongeza "python3 pin_website.py &"

"&" Ni muhimu, kwani inafanya kukimbia nyuma, na kwa hivyo inaruhusu buti kuendelea

Hatua ya 7: Jinsi ya Kupokea Mahali

Jinsi ya Kupokea Mahali
Jinsi ya Kupokea Mahali

Kutumia IFTTT, unaweza kuanzisha huduma ili wakati simu itaingia mahali fulani, inaweza kukutumia barua pepe, au kuweka anwani ya wavuti, au kukutumia ujumbe kwenye telegram.

Hatua ya 8: Jinsi Hii Inavyofanya Kazi

Usanidi ninao Server Pi, mwenyeji wa wavuti yangu, na usambazaji wa bandari na DNS tuli kutumia huduma iliyotolewa na https://freedns.afraid.org/. Mengi ya haya ni ngumu sana, na unahitaji kuwa na uelewa wa usambazaji wa bandari, naweza kufundisha jinsi ya kufanya sehemu hii wakati mwingine.

Njia nyingine unayoweza kufanya ni kutumia telegram kupata ujumbe kwa pi, au labda rahisi zaidi, ni kuweka msomaji wa barua pepe anayesoma barua pepe na kupokea sasisho za eneo kupitia hiyo.

Sijajaribu bot ya Telegram au msomaji wa barua pepe, lakini kuna mafunzo mengi huko nje ambayo yatakuonyesha jinsi ya.

Hapa kuna nambari yangu ya Flask / Python ambayo inaombwa na webhooks kutumia IFTTT:

kutoka Flask kuagiza Flask, render_template, ombi, jsonify

kuagiza os kutoka wakati wa kuingiza wakati wa wakati kutoka kwa kuagiza ramani * app = Flask (_ name_) l = 0 setup () @ app.route ('/') def index (): return request.remote_addr @ app.route ('/ mum / enter / ') def mu (eneo): mum.current_loc (eneo) kurudi "Asante kwa Sasisho, Mama!" @ app.route ("/ dad / enter /") def da (l): dad.current_loc (l) kurudi "Asante Kwa Sasisho, Baba!" @ app.route ("/ mtoto / ingia /") def child_enter (l): me.current_loc (l) kurudi "Hey, Me" @ app.route ('/ mum / exit /') def mume (eneo): mum.offline (eneo) kurudi "Asante kwa Sasisho, Mama!" @ app.route ("/ baba / toka /") def dade (l): dad.offline (l) kurudi "Asante Kwa Sasisho, Baba!" @ app.route ("/ mtoto / toka /") def child_exit (l): me.offline (l) kurudi "Hey, Me" @ app.route ("/ reset") def redo (): setup () kurudi "Weka upya!" ikiwa _name_ == '_main_': app.run (debug = True, host = '0.0.0.0')

na map.py:

kuagiza http.client, urllib.request, urllib.parse, urllib.error, base64

kuagiza ast, json kuagiza muda kuagiza kuagiza thread os os params = urllib.parse.urlencode ({}) last_loc = 0 dlast_loc = 0 mlast_loc = 0 def setup (): conn = http.client. HTTPSConnection ('freedns.afraid.org' ombi. "GET", str ("/ off / all")) response = conn.getresponse () f = open ("pin", "w") f.andika (str (-1)) f.close () f = fungua ("pind", "w") f.andika (str (-1)) f.close () f = open ("pinm", "w") f.write (str (-1)) f. karibu () mama mum: def current_loc (l): global last_loc locs = {"llansantffraid": 4, "oswestry": 5, "lynclys": 8, "home": 9, "shrewsbury": 11, "llanymynech": 13, "misalaba minne": 18, "llandrinio": 25, "welshpool": 27} f = fungua ("pini", "w") f.andika (str (-1)) f. karibu () wakati. lala (1) conn = http.client. HTTPConnection ('192.168.1.251:5000') e () conn = http.client.) last_loc = locs [l] def offline (l): global last_loc locs = {"llansantffraid": 4, "oswestry": 5, "lynclys": 8, "home": 9, "shrewsbury": 11, "llanymynech ": 13," misalaba minne ": 18," llandrinio ": 25," welshpool ": 27} conn = http.client. HTTPConnection ('192.168.1.251:5000') conn.request (" GET ", str (" / off / ") + str (last_loc)) response = conn.getresponse () f = open (" pin "," w ") f. andika (str (locs [l])) f. ("python3 flash.py &") baba wa darasa: locs = {"welshpool": 3, "lynclys": 1, "home": 23, "shrewsbury": 0, "llanymynech": 6, "misalaba minne": 15, "llandrinio": 10, "welshpool": 24} def current_loc (l): global dlast_loc locs = {"welshpool": 3, "lynclys": 1, "home": 23, "shrewsbury": 0, " llanymynech ": 6," misalaba minne ": 15} f = fungua (" pind "," w ") f. andika (str (-1)) f. karibu () time.sleep (1) conn = http. Uunganisho wa HTTP ('192.168.1.251:5000') maoni t ("GET", str ("/ off /") + str (dlast_loc)) response = conn.getresponse () conn = http.client. HTTPConnection ('192.168.1.251:5000') ombi la "conn.", str ("/ on /") + str (locs [l])) response = conn.getresponse () dlast_loc = locs [l] def offline (l): global dlast_loc locs = {"welshpool": 3, "lynclys ": 1," nyumbani ": 23," shrewsbury ": 0," llanymynech ": 6," misalaba minne ": 15," llandrinio ": 10} conn = http.client. HTTPConnection ('192.168.1.251:5000' ombi la ombi ("GET", str ("/ off /") + str (dlast_loc)) response = conn.getresponse () f = open ("pind", "w") f. l])) f.close () os.system ("python3 flashd.py &") darasa mimi: def current_loc (l): global mlast_loc locs = {"home": 22, "school": 2, "oswestry": 14} f = fungua ("pinm", "w") f. Andika (str (-1)) f.close () time.sleep (1) conn = http.client. HTTPConnection ('192.168.1.251:5000 ombi la conn.request ("GET", str ("/ off /") + str (mlast_loc)) response = conn.getresponse () conn = http.client. HTTPConnection ('192.168.1.251:5000') ("GET", str ("/ on /") + str (tazama cs [l])) response = http.client. HTTPConnection ('192.168.1.251:5000') conn.request ("GET", str ("/ off /") + str (mlast_loc)) response = conn., "w") f. andika (str (locs [l])) f.close () os.system ("python3 flashm.py &")

Hatua ya 9: Jenga Yako mwenyewe Kutoka kwa Uvuvio Kwenye Mradi Wangu

Kwa hivyo najua kuwa hatua ya awali itakuwa ngumu sana kuelewa, kwa hivyo nitaiacha kama kukuonyesha jinsi ya kutengeneza ramani, na kuweza kuwa na pi ya rasipiberi ambayo inawasha na kuzima taa za taa. Sasa unahitaji kuunda hati ya chatu ambayo, kwa kutumia IFTTT, hukutumia barua pepe. Kisha unahitaji kupata kipande cha nambari ya kusoma ya barua pepe, ambayo ni rahisi sana (google it). Halafu ukishasoma barua pepe na kupata eneo la mzazi, tumia taarifa za 'ikiwa' kupata kipini cha kuwasha.

Kwenye ramani, taa inayowaka inamaanisha kuwa wameondoka tu eneo hilo

Njia ya kuwasha LED kwenye pi nyingine kutoka kwa chatu ni kama ilivyo hapo chini:

kuagiza http.client, urllib.request, urllib.parse, urllib.error, base64

params = urllib.parse.urlencode ({}) conn = http.client. HTTPConnection ('192.168.1.251:5000') #badilisha hii na ramani ya rasipberry pi anwani ya IP conn.request ("GET", str ("/ off) / 2 ")) # hii inazima pini nambari 2 majibu = conn.getresponse () # hii inauliza URL, halafu ramani pi inasoma hii na kuzima namba ya siri 2

Kimsingi, natumahi unaweza kutumia kile nilichofanya na ramani yangu ya 3D kama msukumo wa kutengeneza ramani yako ya ufuatiliaji wa GPS.

Ilipendekeza: