Բովանդակություն:
- Քայլ 1: Ստացեք 3D քարտեզ
- Քայլ 2. Քարտեզի պատրաստում LED ներդիրների համար
- Քայլ 3: Տեղադրեք LED- ները
- Քայլ 4. LED- ները միացրեք Raspberry Pi- ին
- Քայլ 5: Փորձարկեք LED- ները
- Քայլ 6. Կոդ `պահանջվող դեպքում LED- ը միացնելու համար
- Քայլ 7: Ինչպես ստանալ գտնվելու վայրը
- Քայլ 8: Ինչպես է աշխատում այս ամենը
- Քայլ 9. Կառուցեք ձեր սեփականը իմ նախագծից ներշնչումից
Video: GPS հետևող 3D քարտեզ ՝ 9 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:46
Այս նախագիծը եռաչափ տպագրված 3D քարտեզ է ՝ ճանապարհներով, գետերով և քաղաքներով, LED փարոսներով ՝ ընտանիքի անդամների գտնվելու վայրը ցույց տալու համար: Այն կարող է ցույց տալ, թե երեխան դպրոցում է, թե ոչ, կամ պարզապես երկու ծնողների գտնվելու վայրը: Մենք կարող ենք օգտագործել այն նաև կանխատեսելու համար, թե որ ժամին են ծնողները տուն գալիս, որպեսզի ընթրիքը պատրաստվի ճիշտ ժամանակին: Դա նաև պարզապես ընդհանրապես հիանալի նախագիծ է ՝ ցուցադրելու և ցուցադրելու ընտանիքին և ընկերներին:
Հուսով եմ, որ ձեզ դուր կգա այս հրահանգը դարձնելը, կամ իմ կայացրած նախագծի մասին տեղեկանալը
Քայլ 1: Ստացեք 3D քարտեզ
Ձեր տարածքի 3D քարտեզ ստանալու համար ես գրել եմ առանձին հրահանգ, որը կօգնի ձեզ ուղղորդել այն պատրաստելու գործընթացում: Ուսուցողականի հղումն այստեղ է.
www.instructables.com/id/Making-a-3D-Print…
Քայլ 2. Քարտեզի պատրաստում LED ներդիրների համար
Այժմ, երբ դուք ունեք 3D քարտեզ ՝ ճանապարհներով, քաղաքներով և գետերով, մեզ պետք է մի միջոց ՝ նշելու, թե որտեղ է գտնվում մարդը քարտեզի վրա: Ես օգտագործեցի երկգույն 3 մմ RG LED- ներ, քանի որ քարտեզի հիմնական նպատակն է ցույց տալ, թե որտեղ են երկու ծնողները: Որոշ տեղերում ես օգտագործել եմ RGB LED, որպեսզի թույլ տամ ցույց տալ, թե որտեղ է եղել ամենամեծ երեխան: Raspberry Pi- ի թողարկման համար կա 28 կապի սահմանափակում, այնպես որ խելամտորեն ընտրեք LED- ների գտնվելու վայրը: Ես վերջացրեցի դրանցից շուրջ 24 -ի օգտագործումը, այնպես որ դուք պետք է լավ լինեք:
PLA հորատելու համար ես գտա, որ սովորական փայտյա հորատիչը լավ է աշխատել, և ես վերաբերվեցի այնպես, ինչպես փայտին:
Այն վայրերում, որտեղ քարտեզը չափազանց հաստ էր, ես խորը հորատում էի հիմնական շերտով, այնուհետև վերևի տեսանելի շերտը `ճիշտ 3 մմ տրամագծով:
Քայլ 3: Տեղադրեք LED- ները
Այժմ, երբ մենք ունենք LED- ների նստելու անցքեր, կարող ենք դրանք սոսնձել: PVA- ն կամ Superglue- ը լավ են աշխատում դրա համար, ես գտա, որ PVA- ն դրա շուրջը պտտվում է ՝ այն փակելով տեղում, և գերծաղիկը նույնպես շատ լավ է աշխատում: Համոզվեք, որ յուրաքանչյուր LED- ով դրանք մի քանի մմ -ով մնում են միայն տեսանելի կողմում, որովհետև LED- ների առկայությունը մինչև վերջ մի փոքր խառնաշփոթ է թվում: Մի անհանգստացեք հետևի ոտքերի համար, դրանք կարող ենք ծալել, երբ դրանք կպչեն:
Քայլ 4. LED- ները միացրեք Raspberry Pi- ին
Ես ուղղակիորեն LED- ները կպցրեցի Raspberry Pi- ին, այնուամենայնիվ, եթե ունեք նախապես զոդված վերնագրով մեկը, կամ ցանկանում եք կարողանալ օգտագործել pi- ն այլ բանի համար, ապա ես կառաջարկեի օգտագործել յուրաքանչյուր LED- ի համար jumper լարերը, այսինքն ` Pi- ն հեռացվող է: Դուք կարող եք տեսնել, որ LED- ը միացնելուց հետո ես ոտքերը ծալեցի ներքև, որպեսզի դրանք չկպչեն մեջքին:
Քայլ 5: Փորձարկեք LED- ները
Համոզված լինելու համար, որ բոլոր LED- ները աշխատում են, ես գործարկեցի մի սցենար, որը անցնում է յուրաքանչյուր հնարավոր քորոցով և դրանք լուսավորում է մեկ առ մեկ, որը մյուսին անցնում է, երբ սեղմում եմ Enter: Սա ինձ թույլ տվեց նշելու, թե որ քորոցն է որ վայրը կատարել, որը շատ օգտակար է:
ներմուծեք RPi. GPIO- ն որպես GPIO
ներմուծման ժամանակ time.sleep (0.3) GPIO.output (i, GPIO. LOW) տպագիր («Դա էր.» + str (i)) z = raw_input («Հաջորդ»)
Մինչ դա տեղի էր ունենում, ես նշում էի տեքստային ֆայլի վրա, թե որ փինն է որ վայրը և որ գույնը: Դուք պետք է դա անեք, քանի որ դա շատ օգտակար է հաջորդ քայլին:
Քայլ 6. Կոդ `պահանջվող դեպքում LED- ը միացնելու համար
Այս նախագիծը կատարելու ձևը ներառում է մեկ Raspberry Pi Zero W- ը ՝ հիմնական կայքով, որը թույլ է տալիս միացնել քորոց: Սա նշանակում էր, որ հիմնական Pi 4 -ը, որը սովորաբար միացված է և աշխատում է, կարող է կատարել վերամշակում, այնուհետև փոքրիկ Pi 0 -ն մնում է միայն միացնել քորոցը ՝ ամեն ինչ մի փոքր ավելի բարդացնելով: Ես դա արեցի, քանի որ այն համապատասխանում է իմ կարգավորմանը և նաև զգացի, որ Pi 0 -ը կարող է մի փոքր դանդաղ լինել այն բանի համար, ինչ մենք հետագայում կանենք:
ներմուծեք RPi. GPIO- ն որպես GPIO
ներմուծման ժամանակը տափաշիշից ներմուծում Ֆլասկ, render_template, request, jsonify import os app = Flask (_ name_) p = GPIO.setmode (GPIO. BCM) i in range (0, 28): GPIO.setup (i, GPIO): OUT) @app.route ('/') def index (): return request.remote_addr @app.route ("/off/") def turn_off (pin): GPIO.output (int (pin), GPIO. LOW) վերադարձնել «Անջատված» @app.route ("/off/all") def alloff (): միջակայքում i- ի համար (0, 28). GPIO.output (i, GPIO. LOW) վերադարձնել "off" @app.route ("/on/") def turn_on (pin): GPIO.output (int (pin), GPIO. HIGH) վերադարձնել «On», եթե _name_ == '_main_': app.run (debug = True, host = '0.0. 0.0 ')
Ինչպես է դա աշխատում, այն սպասում է pi- ի IP հասցեի url- ին, այնուհետև `միացված կամ անջատված, այնուհետև ՝ PIN համարին:
պահպանեք այս ծածկագիրը Raspberry Pi- ի տնային գրացուցակում և անվանեք այն «pin_website.py»
Դուք պետք է սահմանեք, որ այն ինքնաբերաբար գործի, այնպես որ դա անեք, տերմինալի տեսակով ՝ sudo nano /etc /profile
Այս ֆայլի ներքևում ավելացրեք "python3 pin_website.py &"
«&» -Ն էական է, քանի որ այն ստիպում է աշխատել հետին պլանում և, հետևաբար, թույլ է տալիս շարունակել բեռնախցիկը
Քայլ 7: Ինչպես ստանալ գտնվելու վայրը
IFTTT- ի միջոցով կարող եք կարգավորել ծառայությունը, որպեսզի երբ հեռախոսը մտնի որոշակի վայր, կարողանա ձեզ էլ.
Քայլ 8: Ինչպես է աշխատում այս ամենը
Կարգավորումը, որը ես ունեմ, Server Pi- ն է, որը տեղադրում է իմ կայքը ՝ նավահանգստի փոխանցմամբ և ստատիկ DNS- ով ՝ օգտագործելով https://freedns.afraid.org/ ծառայությունը: Դրանցից շատերը բավականին բարդ են, և դուք պետք է պատկերացում ունենաք նավահանգստի փոխանցման մասին, ես գուցե ուսանելի դարձնեմ, թե ինչպես դա անել մեկ այլ անգամ:
Մեկ այլ եղանակ, որի միջոցով կարող եք դա անել, այն է, որ օգտագործեք հեռագիրը pi- ին հաղորդագրություններ ստանալու համար, կամ, հավանաբար, ամենահեշտը, դա էլ. Ընթերցող ստեղծելն է, որը կկարդա նամակները և դրա միջոցով կստանա տեղադրության թարմացումները:
Ես չեմ փորձել Telegram բոտը կամ էլփոստի ընթերցողը, բայց այնտեղ կան բազմաթիվ ձեռնարկներ, որոնք ցույց կտան ձեզ, թե ինչպես դա անել:
Ահա իմ Flask / Python ծածկագիրը, որն այնուհետև պահանջվում է վեբհուքերի կողմից ՝ օգտագործելով IFTTT ՝
տափաշիշից ներմուծում Ֆլասկ, render_template, request, jsonify
ներմուծել տվյալներ ժամանակից ներմուծել տվյալներ քարտեզից /') def mu (գտնվելու վայրը). mum.current_loc (գտնվելու վայրը) վերադարձնել «Շնորհակալություն թարմացման համար, մայրիկ»: @app.route ("/dad/enter/") def da (l): dad.current_loc (l) return "Շնորհակալություն թարմացման համար, հայրիկ": @app.route ("/child/enter/") def child_enter (l): me.current_loc (l) վերադարձնել «Hey, Me» @app.route ('/mum/exit/') def mume (location): mum.offline (գտնվելու վայրը) վերադարձ «Շնորհակալություն թարմացման համար, մայրիկ»: @app.route ("/հայր/ելք/") def dade (l): dad.offline (l) վերադարձ "Շնորհակալություն թարմացման համար, հայրիկ": @app.route ("/child/exit/") def child_exit (l): me.offline (l) վերադարձնել "Hey, Me" @app.route ("/reset") def redo (): setup () return «Վերակայե՞լ»: եթե _name_ == '_main_': app.run (debug = True, host = '0.0.0.0')
և map.py:
ներմուծել http.client, urllib.request, urllib.parse, urllib.error, base64
import ast, json import time import import threading import os params = urllib.parse.urlencode ({}) last_loc = 0 dlast_loc = 0 mlast_loc = 0 def setup (): conn = http.client. HTTPSConnection ('freedns.afraid.org') կոն. "GET", str ("/off/all")) response = conn.getresponse () f = open ("pin", "w") f.write (str (-1)) f.close () f = բաց («pind», «w») f. գրել (str (-1)) f.close () f = open («pinm», «w») f.write (str (-1)) f.close () դասի մայրիկ ՝ def current_loc (l): global last_loc locs = {"llansantffraid": 4, "oswestry": 5, "lynclys": 8, "home": 9, "shrewsbury": 11, "llanymynech": 13, «չորս խաչ» ՝ 18, «llandrinio» ՝ 25, «welshpool» ՝ 27} f = բաց («pin», «w») f.write (str (-1)) f.close () time: քուն (1) conn = http.client. HTTPConnection ('192.168.1.251:5000') conn.request ("GET", str ("/off/") + str (last_loc)) respond = conn.getrespons e () conn = http.client. HTTPConnection ('192.168.1.251:5000') conn.request ("GET", str ("/on/") + str (locs [l])) respond = conn.getresponse () last_loc = locs [l] def offline (l): global last_loc locs = {"llansantffraid": 4, "oswestry": 5, "lynclys": 8, "home": 9, "shrewsbury": 11, "llanymynech ": 13," չորս խաչ "` 18, "llandrinio": 25, "welshpool": 27} conn = http.client. HTTPConnection ('192.168.1.251:5000') conn.quest ("GET", str (" /անջատված/") + փող (last_loc)) պատասխան = conn.getresponse () f = բաց (" pin "," w ") f.write (str (locs [l])) f.close () os.system («python3 flash.py &") դասի հայր `locs = {" welshpool ": 3," lynclys ": 1," home ": 23," shrewsbury ": 0," llanymynech ": 6," four crosses ": 15, "llandrinio": 10, "welshpool": 24} def current_loc (l): global dlast_loc locs = {"welshpool": 3, "lynclys": 1, "home": 23, "shrewsbury": 0, " llanymynech ": 6," չորս խաչ ". 15} f = բաց (" փին "," w ") f.write (str (-1)) f.close () time.sleep (1) conn = http.client. HTTPConnection ('192.168.1.251:5000') կոնն. Պահանջներ t ("GET", str ("/off/") + str (dlast_loc)) respond = conn.getresponse () conn = http.client. HTTPConnection ('192.168.1.251:5000') conn.quest ("GET", str ("/on/") + str (locs [l])) respond = conn.getresponse () dlast_loc = locs [l] def offline (l): global dlast_loc locs = {"welshpool": 3, "lynclys ": 1," տուն "` 23, "shrewsbury": 0, "llanymynech": 6, "չորս խաչ" `15," llandrinio ": 10} conn = http.client. HTTPConnection ('192.168.1.251:5000') conn.request ("GET", str ("/off/") + str (dlast_loc)) respond = conn.getresponse () f = open ("pind", "w") f.write (str (locs [l])) f.close () os.system ("python3 flashd.py &") դաս me: def current_loc (l): global mlast_loc locs = {"home": 22, "school": 2, "oswestry": 14} f = բաց («pinm», «w») f.write (str (-1)) f.close () time.sleep (1) conn = http.client. HTTPConnection ('192.168.1.251:5000 ') conn.request ("GET", str ("/off/") + str (mlast_loc)) respond = conn.getresponse () conn = http.client. HTTPConnection (' 192.168.1.251:5000 ') կոնտ. ("GET", str ("/on/") + str (lo cs [l])) respond = conn.getresponse () mlast_loc = locs [l] անջատել անցանց (l). գլոբալ dlast_loc locs = {"տուն" ՝ 22, «դպրոց» ՝ 2, «oswestry» ՝ 14} conn = http.client. HTTPConnection ('192.168.1.251:5000') conn.request ("GET", str ("/off/") + str (mlast_loc)) respond = conn.getresponse () f = open ("pinm", "w") f.write (str (locs [l])) f.close () os.system ("python3 flashm.py &")
Քայլ 9. Կառուցեք ձեր սեփականը իմ նախագծից ներշնչումից
Այսպիսով, ես գիտեմ, որ նախորդ քայլը շատ դժվար կլինի հասկանալ, ուստի ես դա կթողնեմ ՝ ցույց տալով ձեզ, թե ինչպես պատրաստել քարտեզը և կկարողանամ ունենալ ազնվամորի պի, որը միացնում և անջատում է LED- ները: Այժմ դուք պետք է ստեղծեք պիթոնի սցենար, որը IFTTT- ի միջոցով ձեզ էլ. Այնուհետև պետք է գտնել էլ.փոստի ծածկագիր կարդալու կտոր, որը բավականին հեշտ է (google it): Այնուհետև նամակ կարդալուց և ծնողի գտնվելու վայրը գտնելուց, օգտագործեք «եթե» արտահայտությունները ՝ գտնելու համար, թե որ կապը միացնել:
Քարտեզի վրա առկայծող լույսը նշանակում է, որ նրանք նոր են հեռացել տարածքից
Պիթոնից մեկ այլ pi- ի վրա LED- ները միացնելու եղանակը հետևյալն է.
ներմուծել http.client, urllib.request, urllib.parse, urllib.error, base64
params = urllib.parse.urlencode ({}) conn = http.client. HTTPConnection ('192.168.1.251:5000') #փոխեք սա ազնվամորի պիի քարտեզի IP հասցեի հետ conn.request ("GET", str ("/off /2 ")) # սա անջատում է 2 համարի պատասխանը պատասխան = conn.getresponse () # սա պահանջում է URL- ը, այնուհետև քարտեզը pi- ն կարդում է սա և անջատում 2 -րդ քորոցը
Հիմնականում, ես հույս ունեմ, որ դուք կարող եք օգտագործել այն, ինչ ես արել եմ իմ 3D քարտեզի հետ որպես ոգեշնչում `ձեր սեփական GPS հետևման քարտեզը կազմելու համար:
Խորհուրդ ենք տալիս:
Ներածություն - Ազնվամորի Պիին վերածեք GPS հետևող սերվերի ՝ 12 քայլ
Ներածություն - Ազնվամորու Pi- ն վերածեք GPS հետևող սերվերի: Այս ուղեցույցում ես ձեզ ցույց կտամ, թե ինչպես տեղադրել Traccar GPS հետևող ծրագրակազմը Raspberry Pi- ի վրա, որն ինտերնետից կստանա տվյալներ համատեղելի սարքերից ՝ իրական ժամանակում տեղադրելով դրանց դիրքերը քարտեզի վրա: հետևել, ինչպես նաև հետևել նվագարկմանը:
4րագիր 4 - Էլեկտրոնային քարտեզ ՝ 9 քայլ
Նախագիծ 4 - Քարտեզ էլեկտրոնային. Այս նախագիծը կենտրոնացած է Raptor New Bright F -150 RC խաղալիքի վրա, որը ես գտել եմ Goodwill- ում: Այս նախագծում ես նայելու եմ, թե ինչ է կատարվում խաղալիքի ներսում և ցույց կտամ, թե ինչպես եմ ես ապամոնտաժել խաղալիքի յուրաքանչյուր մասը: Պետք է նաև նշել, որ այս խաղալիքը սխալ էր
Խելացի ուսապարկ ՝ GPS հետևող և ավտոմատ լույսերով ՝ 15 քայլ
Խելացի ուսապարկ `GPS- ի հետևման և ավտոմատ լույսերով. Ես օգտագործում եմ 2 տվիչ ՝ հայտնաբերելու, թե արդյոք դա ձեր ուսերին է ՝ համոզվելու համար, որ այն չի անջատվում, երբ դա անհրաժեշտ չէ
Կանանց անվտանգության սարք ՝ GPS հետևող և Arduino- ի միջոցով ահազանգերով. 6 քայլ
Կանանց անվտանգության սարք ՝ GPS- ով հետևող և Arduino- ի միջոցով ահազանգերով. Վերջին ժամանակներում մեզ հասանելի բոլոր տեխնոլոգիաներով կանանց համար դժվար չէ կառուցել անվտանգության սարք, որը ոչ միայն արտակարգ իրավիճակների ահազանգ կստեղծի, այլև հաղորդագրություն կուղարկի ձեր ընկերներին, ընտանիքին: , կամ շահագրգիռ անձը: Այստեղ մենք կկառուցենք խումբ
GPS- ից և երկկողմանի ռադիոկայաններից կոպիտ հետևող սարք. 7 քայլ
GPS- ից և երկկողմանի ռադիոկայաններից հետևող անմշակ սարք. Այսպիսով, ես ուզում էի ձեռք բերել հետևող սարք: Հենց որ նայեցի շուկան, հասկացա, որ այդ իրերից մեկի գները սկսվում են ձեռքից և բարձրանում են մինչև մեկ ոտք կամ ավելի: Խելագարությունը պետք է դադարեցվի: Իհարկե, սկզբունքները ՝ իմանալու, թե որտեղ ինչ -որ բան ես