Мазмуну:
- 1 -кадам: 3D картасын алуу
- 2 -кадам: Картаны LED киргизүү үчүн даярдоо
- 3 -кадам: Светодиоддорду салыңыз
- 4 -кадам: LEDди Raspberry Pi менен туташтырыңыз
- 5 -кадам: Светодиоддорду текшериңиз
- 6 -кадам: Сураныч, LEDди күйгүзүү үчүн код
- 7 -кадам: Жайгашууну кантип алуу керек
- 8 -кадам: Мунун баары кантип иштейт
- 9 -кадам: Менин Долбоорумдан Илхамдан Өзүңүздү Куруңуз
Video: GPS Tracking 3D картасы: 9 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:39
Бул долбоор 3D басылган 3D карта, жолдор, дарыялар жана шаарлар, үй -бүлө мүчөлөрүнүн жайгашкан жерин көрсөтүү үчүн LED маяктары бар. Бул бала мектепте же жокпу, же жөн эле ата -энесинин жайгашкан жерин көрсөтө алат. Биз муну ата -энелерибиздин үйгө кайсы убакта келерин алдын ала билүү үчүн да колдонсок болот, ошондо кечки тамакты керектүү убакытта жасаса болот. Бул ошондой эле үй -бүлөңүзгө жана досторуңузга көрсөтүү жана көрсөтүү үчүн эң сонун долбоор.
Бул Нускамалыкты жасоо сизге жагат деп үмүттөнөм, же мен жасаган долбоор жөнүндө билүүдөн ырахат аласыз
1 -кадам: 3D картасын алуу
Сиздин аймактын 3D картасын алуу үчүн, мен аны түзүү процессинде сизге жардам берүү үчүн өзүнчө көрсөтмө жаздым. Окутууга шилтеме бул жерде:
www.instructables.com/id/Making-a-3D-Print…
2 -кадам: Картаны LED киргизүү үчүн даярдоо
Эми сизде 3D картасы бар, жолдору, шаарлары жана дарыялары бар, бизге картада адамдын кайда экенин көрсөтүүнүн жолу керек. Мен эки түстүү 3мм RG светодиоддорун колдондум, анткени картанын негизги максаты эки ата-эненин кайда экенин көрсөтүү. Кээ бир жерлерде улуу баланын кайда экенин көрсөтүүгө уруксат берүү үчүн RGB светодиодун колдондум. Raspberry Piде 28 казыктын чеги бар, андыктан диоддордун жайгашкан жерлерин акылдуулук менен тандаңыз. Мен алардын 24кө жакынын колдонуп бүттүм, андыктан сиз жакшы болушуңуз керек.
PLA бургулоо үчүн, мен кадимки жыгач бургучу жакшы иштегенин көрдүм жана жыгачка кандай мамиле кылсам, ошондой мамиле кылдым.
Карта өтө калың болгон жерлерде мен чоң катмары менен базалык катмарын, анан туура 3мм бургу менен көрүнүп турган үстүңкү катмарды тешип чыкмакмын.
3 -кадам: Светодиоддорду салыңыз
Эми бизде светодиоддордун отура турган тешиктери бар, биз аларды жабыштыра алабыз. PVA же Superglue бул үчүн жакшы иштейт, мен PVA анын тегерегине чуркап чыгып, аны мөөрлөп, супер клей да абдан жакшы иштегенин байкадым. Ар бир светодиод менен алар бир нече мм гана көрүнүп турган жагына жабышып турганын текшериңиз, анткени LEDлердин жабышып калышы бир аз иретсиз көрүнөт. Арткы жактагы буттар жөнүндө кабатыр болбоңуз, биз аларды ширетилгенден кийин бүктөй алабыз.
4 -кадам: LEDди Raspberry Pi менен туташтырыңыз
Мен LEDди Raspberry Pi менен түздөн-түз коштум, бирок эгерде сизде алдын ала ширетилген баш бар болсо же сиз пиди башка нерсеге колдонууну кааласаңыз, анда мен ар бир LED үчүн секиргич зымдарды колдонууну сунуштайт элем, башкача айтканда Пи алынып салынат. Байкасаңыз болот, мен светодиодду ширеткенден кийин, буттарымды бүктөп койдум, алар аркасына жабышпай калды.
5 -кадам: Светодиоддорду текшериңиз
Бардык светодиоддор иштеп жатканына ынануу үчүн, мен ар бир мүмкүн болгон тешикчеден өтүүчү сценарийди иштетип, аларды бирден жарык кылдым, ал мен кирүү басканда экинчисине өтөт. Бул мага кайсы пин номери кайсы жерде кылганын белгилөөгө мүмкүндүк берди, бул абдан пайдалуу болду.
GPO катары RPi. GPIO импорттоо
импорттоо убактысы GPIO.setmode (GPIO. BCM) i үчүн диапазондо (0, 28): GPIO.setup (i, GPIO. OUT) i үчүн диапазондо (0, 28): GPIO.output (i, GPIO. HIGH) 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 кийинчерээк жасай турган иштерибиз үчүн бир аз жайыраак болушу мүмкүн экенин сездим.
GPO катары RPi. GPIO импорттоо
колбадан импорттоо убактысы Flask, render_template, request, jsonify import os app = Flask (_ name_) p = GPIO.setmode (GPIO. BCM) i үчүн диапазондо (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) "Off" @app.route ("/off/all") def alloff (): i үчүн диапазондо (0, 28): GPIO.output (i, GPIO. LOW) "өчүрүү" @app.route ("/on/") def turn_on (pin): GPIO.output (int (pin), GPIO. HIGH) return "On" if _name_ == '_main_': app.run (debug = True, host = '0.0. 0.0 ')
Бул иштөө жолу - бул пи анын IP дарегинин URL'ин күтөт, андан кийин күйгүзүү же өчүрүү, анан пин номерин.
бул кодду Raspberry Pi үй каталогуна сактап, "pin_website.py" деп атоо
Сиз муну автоматтык түрдө иштетүү үчүн орнотушуңуз керек, андыктан терминалдын түрүндө: sudo nano /etc /profile
Бул файлдын ылдый жагына "python3 pin_website.py &" кошуңуз
"&" Маанилүү, анткени аны фондо иштетет, ошондуктан жүктөөнү улантууга мүмкүндүк берет
7 -кадам: Жайгашууну кантип алуу керек
IFTTTти колдонуп, сиз телефонду белгилүү бир жерге киргенде, сизге электрондук почта аркылуу жөнөтө алышы үчүн, же веб -дарегин жөнөтүшү же телеграмма аркылуу билдирүү жөнөтүшү үчүн кызматты орното аласыз.
8 -кадам: Мунун баары кантип иштейт
Менде орнотуу - бул Server Pi, менин веб -сайтымды жайгаштырат, https://freedns.afraid.org/ тарабынан берилген кызматты колдонуу менен порт жөнөтүү жана статикалык DNS. Мунун көбү абдан татаал, жана порт жөнөтүү жөнүндө түшүнүккө ээ болушуңуз керек, мен бул бөлүктү башка жолу кантип жасоо керектигин үйрөтө алам.
Муну кыла турган дагы бир ыкма - пи -ге билдирүүлөрдү алуу үчүн телеграмманы колдонуу, же, балким, эң оңой - бул электрондук каттарды окуган жана ошол аркылуу жайгашкан жер жаңыртууларын алган электрондук почта окурманы орнотуу.
Мен Telegram ботун же электрондук почтанын окурманын сынап көргөн эмесмин, бирок ал жерде сизге кантип көрсөтө турган көптөгөн окуу куралдары бар.
Мына, менин Flask / Python кодум, андан кийин webhooks тарабынан IFTTT аркылуу суралат:
колбадан импорттоодон Flask, 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) return "Hey, Me" @app.route ('/mum/exit/') def mume (жайгашуу): mum.offline (жайгашкан жери) "Кайтарууңуз үчүн рахмат, апа!" @app.route ("/dad/exit/") def dade (l): dad.offline (l) return "The Update for Thanks, Dad!" @app.route ("/child/exit/") def child_exit (l): me.offline (l) return "Hey, Me" @app.route ("/reset") def redo (): setup () return "Кайра коюу!" if _name_ == '_main_': app.run (debug = True, host = '0.0.0.0')
жана map.py:
импорттоо http.client, urllib.request, urllib.parse, urllib.error, base64
импорт ast, json импорт убактысы импорт сайты импорт os params = urllib.parse.urlencode ({}) last_loc = 0 dlast_loc = 0 mlast_loc = 0 def setup (): conn = http.client. HTTPSConnection ('ozodns.afraid.org')) conn.request ("GET", str ("/dynamic/update.php? ZmFpOWlJQ29QczhiOW1iYWJoNVdVcG9HOjE5MTM2ODU2")) answer = conn.getresponse () conn = http.client. HTTPConnection ('192.1000'.251) "Get", str ("/off/all")) жооп = conn.getresponse () f = open ("pin", "w") f.write (str (-1)) f.close () f = ачык ("pind", "w") f.write (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 = open ("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)) жооп = conn.getrespons e () conn = http.client. HTTPConnection ('192.168.1.251:5000') conn.request ("Get", str ("/on/") + str (locs [l])) жооп = 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.request (" GET ", str (" /өчүрүү/") + str (last_loc)) жооп = conn.getresponse () f = ачык (" пин "," 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 = ачык (" pind "," w ") f.write (str (-1)) f.close () time.sleep (1) conn = http.client. HTTPConnection ('192.168.1.251:5000') conn.reques t ("Get", str ("/off/") + str (dlast_loc)) answer = conn.getresponse () conn = http.client. HTTPConnection ('192.168.1.251:5000') conn.request ("Get"), str ("/on/") + str (locs [l])) жооп = conn.getresponse () dlast_loc = locs [l] def off (l): global dlast_loc locs = {"welshpool": 3, "lynclys ": 1," home ": 23," shrewsbury ": 0," llanymynech ": 6," four crosses ": 15," llandrinio ": 10} conn = http.client. HTTPConnection ('192.168.1.251:5000') conn.request ("Get", str ("/off/") + str (dlast_loc)) жооп = conn.getresponse () f = open ("pind", "w") f.write (str (locs [l])) f.close () os.system ("python3 flashd.py &") классым: def current_loc (l): global mlast_loc locs = {"үй": 22, "мектеп": 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)) жооп = conn.getresponse () conn = http.client. HTTPConnection (' 192.168.1.251:5000 ') conn.request ("Get", str ("/on/") + str (мына cs [l])) жооп = conn.getresponse () mlast_loc = locs [l] def offline (l): глобалдык dlast_loc locs = {"үй": 22, "мектеп": 2, "oswestry": 14} байланыш = http.client. HTTPConnection ('192.168.1.251:5000') conn.request ("Get", str ("/off/") + str (mlast_loc)) жооп = conn.getresponse () f = open ("pinm"), "w") f.write (str (locs [l])) f.close () os.system ("python3 flashm.py &")
9 -кадам: Менин Долбоорумдан Илхамдан Өзүңүздү Куруңуз
Ошентип, мен мурунку кадамды түшүнүү өтө кыйын болорун билем, андыктан мен аны картаны кантип жасоону көрсөтүп, LED ди күйгүзүп жана өчүрө турган малина пи болушу үчүн калтырам. Эми сиз IFTTTди колдонуп, сизге электрондук кат жөнөтүүчү python скриптин түзүшүңүз керек. Андан кийин, электрондук почтанын кодун окуу керек, бул абдан оңой (google it). Андан кийин, сиз электрондук катты окуп, ата -энеңиздин жайгашкан жерин тапканыңызда, кайсы пинти күйгүзүү керек экенин билүү үчүн 'if' сөздөрүн колдонуңуз.
Картада жаркыраган жарык бул аймактан жаңы эле чыгып кеткенин билдирет
Питондон башка пиоддо 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 Tracking жана Автоматтык Жарыктар менен Smart Рюкзак: 15 кадам
Gps Tracking жана Автоматтык Жарыктар менен Smart Рюкзак: Бул көрсөтмөдө биз позициябызды, ылдамдыгыбызды көзөмөлдөй турган жана түнкүсүн коопсуздугубузду камсыз кыла турган автоматташтырылган жарыктары бар акылдуу рюкзак жасайбыз. Мен керек эмес болгондо өчпөшү үчүн далыңызда экенин аныктоо үчүн 2 сенсорду колдоном
GPS Route Tracking V2: 4 Кадам (Сүрөттөр менен)
GPS Route Tracking V2: Долбоор: GPS Route Tracking V2Күнү: Май - Июнь 2020UPDATEБул долбоордун биринчи версиясы, негизи иштеп турганда, оңдоло турган бир катар кемчиликтерге ээ болгон. Биринчиден мага куту жаккан жок, ошондуктан аны башкага алмаштырдым. Экинчиден
DIY Smart Robot Tracking Car Kitts Tracking Car Photosensitivity: 7 кадам
DIY Smart Robot Tracking Car Kitts Tracking Car Photosensitivity: Дизайн SINONING ROBOTтун көзөмөлүнөн робот автомобилин сатып алсаңыз болот TheMeLM393 чипи эки фоторезисторду салыштырып көрүңүз, бир жагында фоторезистор бар болсо, мотордун капталы дароо токтойт, мотордун экинчи тарабы айлануу, ошентип
Бут сенсорлору менен роботту башкарыңыз, GPS, W/o картасы: 13 кадам (сүрөттөр менен)
Роботту бут кийим сенсорлору менен, GPS/W/o картасы менен башкарыңыз: робот алдын ала программаланган жолдо жылат жана реалдуу убакытта байкоо жүргүзүү үчүн телефонго өзүнүн кыймылынын маалыматын (bluetooth аркылуу) өткөрүп берет. Arduino жол менен алдын ала программаланган жана oblu роботтун кыймылын сезүү үчүн колдонулат. oblu кыймыл жөнүндө маалымат берет
DeLorme Earthmate GPS LT-20ны Google Жерине улуу GPS көзөмөл картасы үчүн кантип туташтыруу керек: 5 кадам
Кантип DeLorme Earthmate GPS LT-20ны Google Жериңизге улуу GPS көзөмөл картасы үчүн туташтыруу керек .: Мен Google Earth Plus колдонбостон, GPS түзмөгүн популярдуу Google Earth программасына кантип туташтырууну көрсөтөм. Менде чоң бюджет жок, андыктан бул мүмкүн болушунча арзан болот деп кепилдик бере алам