Mục lục:
- Bước 1: Lấy bản đồ 3D
- Bước 2: Chuẩn bị Bản đồ cho Chèn LED
- Bước 3: Chèn đèn LED
- Bước 4: Kết nối đèn LED với Raspberry Pi
- Bước 5: Kiểm tra đèn LED
- Bước 6: Mã để bật đèn LED khi được yêu cầu
- Bước 7: Cách Nhận Vị trí
- Bước 8: Tất cả điều này hoạt động như thế nào
- Bước 9: Xây dựng của riêng bạn từ nguồn cảm hứng từ dự án của tôi
Video: Bản đồ 3D theo dõi GPS: 9 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:31
Dự án này là một bản đồ 3D được in 3D, có đường xá, sông ngòi và thị trấn, với đèn hiệu LED để hiển thị vị trí của các thành viên trong gia đình. Nó có thể cho biết trẻ có đang ở trường hay không, hay chỉ vị trí của cả cha và mẹ. Chúng ta cũng có thể sử dụng nó để dự đoán thời gian bố mẹ về nhà, để có thể chuẩn bị bữa tối cho đúng giờ. Nó cũng chỉ là một dự án thú vị để khoe và hiển thị với gia đình và bạn bè.
Tôi hy vọng bạn thích làm cuốn sách này có thể hướng dẫn hoặc thích tìm hiểu về một dự án mà tôi đã thực hiện
Bước 1: Lấy bản đồ 3D
Để có được bản đồ 3D cho khu vực của bạn, tôi đã viết một hướng dẫn riêng để giúp hướng dẫn bạn trong quá trình tạo một bản đồ. Liên kết đến hướng dẫn ở đây:
www.instructables.com/id/Making-a-3D-Print…
Bước 2: Chuẩn bị Bản đồ cho Chèn LED
Bây giờ bạn đã có bản đồ 3D, với đường xá, thị trấn và sông ngòi, chúng tôi cần một cách để chỉ ra vị trí của một người trên bản đồ. Tôi đã sử dụng đèn LED RG 3mm hai màu, vì mục đích chính của bản đồ là hiển thị vị trí của hai bố mẹ. Ở một số nơi nhất định, tôi đã sử dụng đèn LED RGB để cho phép tôi hiển thị vị trí của đứa trẻ lớn nhất. Có giới hạn 28 chân để xuất trên Raspberry Pi, Vì vậy, hãy chọn vị trí của các đèn LED một cách khôn ngoan. Tôi đã kết thúc sử dụng khoảng 24 người trong số họ, vì vậy bạn sẽ ổn.
Để khoan PLA, tôi thấy một mũi khoan gỗ bình thường hoạt động tốt, và tôi xử lý như tôi sẽ xử lý gỗ.
Ở những nơi bản đồ quá dày, tôi sẽ khoan lớp cơ sở bằng một mũi khoan lớn, và sau đó là lớp trên có thể nhìn thấy bằng mũi khoan 3mm chính xác.
Bước 3: Chèn đèn LED
Bây giờ chúng ta đã có các lỗ cho đèn LED để lắp vào, Chúng ta có thể dán chúng vào. PVA hoặc Superglue hoạt động tốt cho điều này, tôi thấy rằng PVA chạy xung quanh nó để niêm phong nó tại chỗ và superglue cũng hoạt động rất tốt. Đảm bảo rằng với mỗi đèn LED, chúng chỉ nhô ra ở phía có thể nhìn thấy được vài mm, Bởi vì để các đèn LED nhô ra ngoài trông hơi lộn xộn. Đừng lo lắng về phần chân ở mặt sau, chúng tôi có thể gấp chúng lại sau khi chúng được hàn.
Bước 4: Kết nối đèn LED với Raspberry Pi
Tôi đã hàn trực tiếp các đèn LED vào Raspberry Pi, tuy nhiên, nếu bạn có một cái có đầu cắm được hàn sẵn hoặc bạn muốn có thể sử dụng số pi cho một thứ khác, thì tôi khuyên bạn nên sử dụng dây nhảy cho mỗi đèn LED, nghĩa là Pi có thể loại bỏ được. Bạn có thể thấy rằng sau khi tôi hàn đèn LED, tôi đã gấp các chân xuống để chúng không bị dính ở mặt sau.
Bước 5: Kiểm tra đèn LED
Để đảm bảo rằng tất cả các đèn LED đang hoạt động, tôi đã chạy một tập lệnh đi qua từng chân có thể và sáng chúng lên, từng chân một, sẽ xuất hiện ở chân tiếp theo khi tôi nhấp vào. Điều này cho phép tôi ghi lại số pin đã thực hiện ở vị trí nào, rất hữu ích.
nhập RPi. GPIO dưới dạng GPIO
thời gian nhập GPIO.setmode (GPIO. BCM) cho tôi trong phạm vi (0, 28): GPIO.setup (i, GPIO. OUT) cho tôi trong phạm vi (0, 28): GPIO.output (i, GPIO. HIGH) time.sleep (0,3) GPIO.output (i, GPIO. LOW) print ("Đó là:" + str (i)) z = raw_input ("Tiếp theo?")
Trong khi điều này đang xảy ra, tôi sẽ ghi lại trên một tệp văn bản ghim ghim ở vị trí nào và màu sắc nào. Bạn cần phải làm điều này, vì nó rất hữu ích trong bước tiếp theo.
Bước 6: Mã để bật đèn LED khi được yêu cầu
Cách mà tôi đã thực hiện dự án này liên quan đến một Raspberry Pi Zero W, với một trang web cơ bản cho phép bạn bật mã pin. Điều này có nghĩa là Pi 4 chính, thường được bật và đang chạy, có thể thực hiện quá trình xử lý, và sau đó Pi 0 nhỏ chỉ phải bật một pin, khiến mọi thứ phức tạp hơn một chút. Tôi đã làm điều này vì nó phù hợp với thiết lập của tôi và tôi cũng cảm thấy Pi 0 có thể hơi chậm so với những gì chúng tôi sẽ làm sau này.
nhập RPi. GPIO dưới dạng GPIO
thời gian nhập từ bình nhập Flask, render_template, request, jsonify import os app = Flask (_ name_) p = GPIO.setmode (GPIO. BCM) cho tôi trong phạm vi (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) return "Off" @ app.route ("/ off / all") def alloff (): cho tôi trong phạm vi (0, 28): GPIO.output (i, GPIO. LOW) return "off" @ 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 ')
Cách thức hoạt động là nó đợi url của địa chỉ IP của pi, sau đó bật hoặc tắt và sau đó là số pin.
lưu mã này trong thư mục chính của Raspberry Pi và đặt tên là "pin_website.py"
Bạn sẽ cần thiết lập cài đặt này chạy tự động, do đó, để thực hiện việc này, trong loại thiết bị đầu cuối: sudo nano / etc / profile
Ở cuối tệp này, thêm "python3 pin_website.py &"
Dấu "&" rất cần thiết, vì nó làm cho nó chạy ở chế độ nền và do đó cho phép khởi động tiếp tục
Bước 7: Cách Nhận Vị trí
Sử dụng IFTTT, bạn có thể thiết lập một dịch vụ để khi điện thoại vào một vị trí nhất định, nó có thể gửi email cho bạn hoặc ping một địa chỉ web hoặc nhắn tin cho bạn trên điện tín.
Bước 8: Tất cả điều này hoạt động như thế nào
Thiết lập mà tôi có là Máy chủ Pi, lưu trữ trang web của tôi, có chuyển tiếp cổng và DNS tĩnh bằng cách sử dụng dịch vụ do https://freedns.a afraid.org/ cung cấp. Rất nhiều điều này khá phức tạp và bạn cần phải hiểu về chuyển tiếp cổng, tôi có thể sẽ hướng dẫn cách thực hiện phần này vào lúc khác.
Một cách khác mà bạn có thể làm là sử dụng telegram để gửi tin nhắn đến pi, hoặc có thể dễ dàng nhất, là thiết lập một trình đọc email để đọc email và nhận cập nhật vị trí thông qua đó.
Tôi chưa thử bot Telegram hoặc trình đọc email, nhưng có rất nhiều hướng dẫn trên mạng sẽ chỉ cho bạn cách thực hiện.
Đây là mã Flask / Python của tôi, sau đó được webhooks yêu cầu sử dụng IFTTT:
from flask import Flask, render_template, request, jsonify
nhập hệ điều hành từ datetime nhập datetime từ map import * app = Flask (_ name_) l = 0 setup () @ app.route ('/') def index (): return request.remote_addr @ app.route ('/ mum / enter / ') def mu (location): mum.current_loc (location) return "Thanks For The Update, Mẹ!" @ app.route ("/ dad / enter /") def da (l): dad.current_loc (l) return "Thanks For The Update, Dad!" @ app.route ("/ child / enter /") def child_enter (l): me.current_loc (l) return "Hey, Me" @ app.route ('/ mum / exit /') def mume (location): mum.offline (location) return "Thanks For The Update, Mum!" @ app.route ("/ dad / exit /") def dade (l): dad.offline (l) return "Thanks For The Update, Dad!" @ app.route ("/ child / exit /") def child_exit (l): me.offline (l) return "Hey, Me" @ app.route ("/ reset") def redo (): setup () return "Cài lại!" if _name_ == '_main_': app.run (debug = True, host = '0.0.0.0')
và map.py:
nhập http.client, urllib.request, urllib.parse, urllib.error, base64
import ast, json import time import threading import os params = urllib.parse.urlencode ({}) last_loc = 0 dlast_loc = 0 mlast_loc = 0 def setup (): conn = http.client. HTTPSConnection ('Liberationns.a afraid.org') conn.request ("GET", str ("/ dynamic / update.php? zmFpOWlJQ29QczhiOW1iYWJoNVdVcG9HOjE5MTM2ODU2")) response = conn.getresponse () conn = http.client. HTTPConnection ('192.168.1.251:5000') conn "GET", str ("/ off / all")) response = conn.getresponse () f = open ("pin", "w") f.write (str (-1)) f.close () f = open ("pind", "w") f.write (str (-1)) f.close () f = open ("pinm", "w") f.write (str (-1)) f.close () class mum: def current_loc (l): global last_loc locs = {"llansantffraid": 4, "oswestry": 5, "lynclys": 8, "home": 9, "shrewsbury": 11, "llanymynech": 13, "bốn chữ thập": 18, "llandrinio": 25, "welshpool": 27} f = open ("pin", "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 (last_loc)) response = conn.getrespons e () conn = http.client. HTTPConnection ('192.168.1.251:5000') conn.request ("GET", str ("/ on /") + str (locs [l])) response = 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," bốn chữ thập ": 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.write (str (locs [l])) f.close () os.system ("python3 flash.py &") class dad: 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," bốn chữ thập ": 15} f = open (" 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)) response = conn.getresponse () conn = http.client. HTTPConnection ('192.168.1.251:5000') conn.request ("GET", str ("/ on /") + str (locs [l])) response = conn.getresponse () dlast_loc = locs [l] def offline (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)) response = conn.getresponse () f = open ("pind", "w") f.write (str (locs [l])) f.close () os.system ("python3 flashd.py &") phân loại tôi: def current_loc (l): global mlast_loc locs = {"home": 22, "school": 2, "oswestry": 14} f = open ("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)) response = conn.getresponse () conn = http.client. HTTPConnection (' 192.168.1.251:5000 ') conn.request ("GET", str ("/ on /") + str (lo cs [l])) response = conn.getresponse () mlast_loc = locs [l] def offline (l): global dlast_loc locs = {"home": 22, "school": 2, "oswestry": 14} conn = http.client. HTTPConnection ('192.168.1.251:5000') conn.request ("GET", str ("/ off /") + str (mlast_loc)) response = conn.getresponse () f = open ("pinm", "w") f.write (str (locs [l])) f.close () os.system ("python3 flashm.py &")
Bước 9: Xây dựng của riêng bạn từ nguồn cảm hứng từ dự án của tôi
Vì vậy, tôi biết rằng bước trước sẽ rất khó hiểu, vì vậy tôi sẽ để nó là chỉ cho bạn cách tạo bản đồ, và có thể có một quả mâm xôi pi bật và tắt đèn LED. Bây giờ bạn cần tạo một tập lệnh python, sử dụng IFTTT, gửi email cho bạn. Sau đó, bạn cần tìm một đoạn mã đọc email, khá dễ dàng (google nó). Sau đó, khi bạn đọc email và tìm thấy vị trí của phụ huynh, hãy sử dụng câu lệnh 'if' để tìm mã pin nào cần bật.
Trên bản đồ, Đèn nhấp nháy có nghĩa là họ vừa rời khỏi khu vực
Cách bật đèn LED trên pi khác từ python như dưới đây:
nhập http.client, urllib.request, urllib.parse, urllib.error, base64
params = urllib.parse.urlencode ({}) conn = http.client. HTTPConnection ('192.168.1.251:5000') # thay đổi địa chỉ IP bản đồ của mâm xôi pi conn.request ("GET", str ("/ tắt / 2 ")) # cái này tắt pin số 2 response = conn.getresponse () # cái này yêu cầu URL, sau đó bản đồ pi đọc cái này và tắt pin số 2
Về cơ bản, tôi hy vọng bạn có thể sử dụng những gì tôi đã làm với bản đồ 3D của mình làm nguồn cảm hứng để tạo bản đồ theo dõi GPS của riêng bạn.
Đề xuất:
Theo dõi & theo dõi các cửa hàng nhỏ: 9 bước (có hình ảnh)
Theo dõi & theo dõi cho các cửa hàng nhỏ: Đây là một hệ thống dành cho các cửa hàng nhỏ được cho là gắn vào xe đạp điện hoặc xe tay ga điện tử để giao hàng trong phạm vi ngắn, ví dụ như một tiệm bánh muốn giao bánh ngọt. Theo dõi và theo dõi nghĩa là gì? Theo dõi và theo dõi là một hệ thống được sử dụng bởi ca
Bộ dụng cụ theo dõi xe ô tô tự làm bằng rô bốt thông minh Theo dõi ô tô cảm quang: 7 bước
Tự làm bộ dụng cụ theo dõi rô bốt thông minh theo dõi ô tô Theo dõi ô tô cảm quang: Thiết kế bởi SINONING ROBOT Bạn có thể mua từ rô bốt theo dõi ô tô ChipLM393 so sánh hai điện trở quang, khi có một đèn LED cảm quang một bên TRẮNG thì bên của động cơ sẽ dừng ngay lập tức, bên kia của động cơ quay lên, để
Theo dõi mực nước hoặc khoảng cách bể chứa trên máy tính để bàn của bạn: 3 bước
Theo dõi mực nước hoặc khoảng cách bể chứa trên máy tính để bàn của bạn: Sử dụng Wemos D1, một cảm biến siêu âm và nền tảng Thingio.AI IoT
Theo dõi thời tiết M5Stack M5stick C dựa trên ESP32 với DHT11 - Theo dõi nhiệt độ độ ẩm & chỉ số nhiệt trên M5stick-C với DHT11: 6 bước
Theo dõi thời tiết M5Stack M5stick C dựa trên ESP32 với DHT11 | Theo dõi nhiệt độ độ ẩm và chỉ số nhiệt trên M5stick-C Với DHT11: Xin chào các bạn, trong phần hướng dẫn này, chúng ta sẽ học cách giao tiếp cảm biến nhiệt độ DHT11 với m5stick-C (một bảng phát triển của m5stack) và hiển thị nó trên màn hình của m5stick-C. Vì vậy, trong hướng dẫn này, chúng ta sẽ đọc nhiệt độ, độ ẩm & nhiệt tôi
Cách kết nối DeLorme Earthmate GPS LT-20 với Google Earth của bạn để có bản đồ theo dõi GPS tuyệt vời.: 5 bước
Cách kết nối DeLorme Earthmate GPS LT-20 với Google Earth của bạn để có Bản đồ theo dõi GPS tuyệt vời: Tôi sẽ chỉ cho bạn cách kết nối thiết bị GPS với chương trình Google Earth phổ biến mà không cần sử dụng Google Earth Plus. Tôi không có ngân sách lớn nên tôi có thể đảm bảo rằng điều này sẽ rẻ nhất có thể