Mục lục:
- Bước 1: Phác thảo giấy
- Bước 2: Danh sách phần cứng
- Bước 3: Thiết kế mạch
- Bước 4: Kết nối phần cứng
- Bước 5: Thiết kế phần mềm
- Bước 6: Gỡ lỗi trên Breadboard
- Bước 7: Lắp ráp phần cứng
- Bước 8: Thiết kế nhà ở điện tử trong Adobe Illustrator
- Bước 9: Nguyên mẫu bìa cứng
- Bước 10: Nguyên mẫu ván ép bạch dương
- Bước 11: Nguyên mẫu lắp ráp cuối cùng
Video: FinduCar: Chìa khóa ô tô thông minh Hướng dẫn mọi người đến vị trí đỗ xe: 11 bước (có hình ảnh)
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:34
Để giải quyết các vấn đề trên, dự án này đề xuất phát triển một chiếc chìa khóa xe thông minh có thể hướng mọi người đến nơi họ đỗ xe. Và kế hoạch của tôi là tích hợp GPS vào chìa khóa ô tô. Không cần sử dụng ứng dụng điện thoại thông minh để theo dõi xe, tất cả các hướng dẫn sẽ chỉ hiển thị trên chìa khóa xe.
Bước 1: Phác thảo giấy
Khi mọi người nhấn nút để khóa xe, thông tin vị trí có thể được tự động ghi lại trong bộ vi điều khiển. Sau đó, khi mọi người bắt đầu điều hướng đến ô tô, đèn LED khác nhau sẽ sáng lên để hướng đến vị trí của ô tô và tần số nhấp nháy hiển thị khoảng cách đến ô tô. Họ có thể dễ dàng theo dõi đèn LED nhấp nháy và nhanh chóng tìm thấy xe.
Bước 2: Danh sách phần cứng
Đây là những thành phần được sử dụng trong dự án này. Một số là từ bộ dụng cụ hạt (breadboard, nút, tiêu đề), một số khác được mua từ trang web chính thức của Adafruit (Adafruit Feather M0, mô-đun Adafruit Ultimate GPS, Lpoly Battery và Coin Cell Battery) và Amazon (NeoPixel Ring - 12 LED RGB).
Bước 3: Thiết kế mạch
Neopixel_LED được kết nối với mã PIN 6 của Feather M0
Button_Unlock được kết nối với mã PIN 12 của Feather M0
Button_Lock được kết nối với mã PIN 13 của Feather M0
Bước 4: Kết nối phần cứng
Hàn các tiêu đề với Adafruit M0 Feather, Adafruit Ultimate GPS Featherwing. Chồng hai tấm ván lại với nhau. GPS FeatherWing cắm ngay vào bảng Feather M0 của bạn mà không cần thêm dây.
Bước 5: Thiết kế phần mềm
Các thành phần kiểm tra
Đọc KHẮC PHỤC
void setup () {
Serial.println ("Kiểm tra tiếng vọng GPS"); Serial.begin (9600); Serial1.begin (9600); // baud GPS NMEA mặc định}
void loop () {
if (Serial.available ()) {char c = Serial.read (); Serial1.write (c); } if (Serial1.available ()) {char c = Serial1.read (); Serial.write (c); }}
Vòng LED nhấp nháy
Xem Ví dụ về Adafruit NeoPixel.
Chức năng tính toán GPS
Tính phương vị
// Tính phương vị
góc phương vị kép (vĩ độ kép, vĩ độ kép, vĩ độ kép, vĩ độ kép) {
đôi d = 0; lat_a = lat_a * PI / 180; lon_a = lon_a * PI / 180; lat_b = lat_b * PI / 180; lon_b = lon_b * PI / 180; d = sin (lat_a) * sin (lat_b) + cos (lat_a) * cos (lat_b) * cos (lon_b-lon_a); d = sqrt (1-d * d); d = cos (lat_b) * sin (lon_b-lon_a) / d; d = asin (d) * 180 / PI; trả lại d; }
Tính thời gian trên đồng hồ LED, cũng là hướng của xe
// Tính thời gian trên đồng hồ LED
int led_time (góc kép) {
cờ int = 0; if (angle = 15) {angle_time = angle_time + 1; } if (flag == 1) {angle_time = 12 - angle_time; } trả về angle_time; }
Tính khoảng cách giữa người đó và xe của anh ta
// Tính khoảng cách
khoảng cách gấp đôi (vĩ độ gấp đôi, vĩ độ gấp đôi, vĩ độ gấp đôi, vĩ độ gấp đôi) {
gấp đôi EARTH_RADIUS = 6378137.0; đôi radLat1 = (lat_a * PI / 180.0); đôi radLat2 = (lat_b * PI / 180.0); nhân đôi a = radLat1 - radLat2; double b = (lon_a - lon_b) * PI / 180.0; double s = 2 * asin (sqrt (pow (sin (a / 2), 2) + cos (radLat1) * cos (radLat2) * pow (sin (b / 2), 2))); s = s * EARTH_RADIUS / 10000000; trả lại s; }
Chức năng màn hình LED
Làm sáng đèn LED trong một vòng tròn cho thấy rằng nó bắt đầu điều hướng
// Đèn LED chiếu sáng từng vòng một cho thấy điều hướng bắt đầu
void colorWipe (uint32_t c, uint8_t wait) {
for (uint16_t i = 0; i strip.setPixelColor (i, c); strip.show (); delay (đợi);}}
Nhận tần số LED trên cơ sở khoảng cách
// Nhận tần số LED
int tần số (khoảng cách gấp đôi) {
int f = (int) khoảng cách * 20; trả về f; }
Nhấp nháy đèn LED nhất định cho biết hướng của ô tô
// Hiển thị trên đèn LED
dải.clear ();
dải.show (); delay (tần số (xe_người_dùng)); // delay (500); dải.setPixelColor (angle_time, dải. Color (0, 0, 255)); dải.show (); delay (tần số (xe_người_dùng)); // delay (500);
// Tắt đèn LED
if (button_flag == 1 && car_woman_distance <5.0) {button_flag = 0; led_flag = 1; dải.clear (); dải.show (); }
Chủ chốt
#include Adafruit_GPS.h # include Adafruit_NeoPixel.h #include HardwareSerial.h #include Button.h #include math.h
#define Neopixel_LED_PIN 6
#define Neopixel_LED_NUM 12 #define Button_Lock_PIN 13 #define Button_Unlock_PIN 12 #define GPSSerial Serial1
#define GPSECHO false
Adafruit_GPS GPS (& GPSSerial); Adafruit_NeoPixel dải = Adafruit_NeoPixel (Neopixel_LED_NUM, Neopixel_LED_PIN, NEO_GRB + NEO_KHZ800); Nút button_lock (Button_Lock_PIN); Nút button_unlock (Button_Unlock_PIN); int button_flag = 0; int led_flag = 1; uint32_t timer = millis (); đôi xe_lấp, xe_lông; xe đôi chuyển_đổi kép; xe đôi; xe đôi int angle_time;
void setup () {
Serial.begin (115200); // Serial1.begin (9600); GPS.begin (9600); // mặc định NMEA GPS baud strip.begin (); // bỏ ghi chú dòng này để bật RMC (khuyến nghị tối thiểu) và GGA (sửa dữ liệu) bao gồm cả độ cao GPS.sendCommand (PMTK_SET_NMEA_OUTPUT_RMCGGA); // Đặt tốc độ cập nhật GPS.sendCommand (PMTK_SET_NMEA_UPDATE_1HZ); // Tốc độ cập nhật 1 Hz // Yêu cầu cập nhật trạng thái ăng-ten, bình luận để giữ im lặng // GPS.sendCommand (PGCMD_ANTENNA); trì hoãn (1000);}
void loop () {// if (Serial.available ()) {
// char c = Serial.read (); // Serial1.write (c); //} // if (Serial1.available ()) {char c = GPS.read (); if (GPSECHO) if (c) Serial.print (c); // nếu một câu được nhận, chúng ta có thể kiểm tra tổng kiểm tra, phân tích cú pháp nó… if (GPS.newNMEAreceive ()) {// một điều khó khăn ở đây là nếu chúng ta in câu NMEA, hoặc dữ liệu // cuối cùng chúng ta không nghe và bắt câu khác! // vì vậy hãy hết sức cảnh giác nếu sử dụng OUTPUT_ALLDATA và trytng để in ra dữ liệu Serial.println (GPS.lastNMEA ()); // điều này cũng đặt cờ newNMEAreceive () thành false if (! GPS.parse (GPS.lastNMEA ())) // điều này cũng đặt cờ newNMEArenition () thành false return; // chúng ta không thể phân tích cú pháp một câu trong trường hợp đó chúng ta chỉ nên đợi câu khác} // nếu millis () hoặc bộ đếm thời gian kết thúc, chúng ta sẽ chỉ đặt lại nó if (timer> millis ()) timer = millis (); if (millis () - timer> 2000) {timer = millis (); // đặt lại bộ đếm thời gian Serial.print ("\ nTime:"); Serial.print (GPS.hour, DEC); Serial.print (':'); Serial.print (GPS.minute, DEC); Serial.print (':'); Serial.print (GPS.seconds, DEC); Serial.print ('.'); Serial.println (GPS.milliseconds); Serial.print ("Ngày:"); Serial.print (GPS.day, DEC); Serial.print ('/'); Serial.print (GPS.month, DEC); Serial.print ("/ 20"); Serial.println (GPS.year, DEC); Serial.print ("Sửa:"); Serial.print ((int) GPS.fix); Serial.print ("quality:"); Serial.println ((int) GPS.fixquality); if (GPS.fix) {Serial.print ("Vị trí:"); Serial.print (GPS.latitude, 4); Serial.print (GPS.lat); Serial.print (","); Serial.print (GPS.longitude, 4); Serial.println (GPS.lon); Serial.print ("Vị trí (tính bằng độ, hoạt động với Google Maps):"); Serial.print (GPS.latitudeDegrees, 4); Serial.print (","); Serial.println (GPS.longitudeDegrees, 4); Serial.print ("Tốc độ (hải lý):"); Serial.println (GPS.speed); Serial.print ("Góc:"); Serial.println (GPS.angle); Serial.print ("Cao độ:"); Serial.println (GPS.altitude); Serial.print ("Vệ tinh:"); Serial.println ((int) GPS.satellites); // Lưu GPS của xe if (button_lock.read ()) {car_lat = GPS.latitudeDegrees; car_lon = GPS.longitudeDegrees; // để gỡ lỗi Serial.print ("carLatitude:"); Serial.println (xe_lat); Serial.print ("carLongitude:"); Serial.println (car_lon); } // Bắt đầu tìm xe if (button_flag == 0) {button_flag = button_unlock.read (); } if (button_flag == 1 && led_flag == 1) {colorWipe (dải. Color (0, 255, 0), 500); led_flag = 0; } if (button_flag == 1) {car_woman_distance = distance (GPS.latitudeDegrees, GPS.longitudeDegrees, car_lat, car_lon); // Tính khoảng cách // car_ person_distance = distance (100.0005, 100.0005, 100.0, 100.0); // để gỡ lỗi Serial.println (car_woman_distance); move_direction = GPS.angle; // Ghi lại hướng di chuyển (góc) // move_direction = 100.0; // Ghi lại phương vị (angle) car_azimuth = azimuth (GPS.latitudeDegrees, GPS.longitudeDegrees, car_lat, car_lon); // car_azimuth = azimuth (100.0005, 100.0005, 100.0, 100.0); // Tính thời gian trên đồng hồ LED car_woman_angle = car_azimuth - move_direction; angle_time = led_time (xe_mặt_mặt); // Hiển thị trên LED dải.clear (); dải.show (); // delay (tần số (xe_người_dùng)); chậm trễ (500); dải.setPixelColor (angle_time, dải. Color (0, 0, 255)); dải.show (); // delay (tần số (xe_người_dùng)); chậm trễ (500); // Tắt đèn LED if (button_flag == 1 && car_woman_distance <5.0) {button_flag = 0; led_flag = 1; dải.clear (); dải.show (); }}} //}}}
Bước 6: Gỡ lỗi trên Breadboard
Bước 7: Lắp ráp phần cứng
Bước 8: Thiết kế nhà ở điện tử trong Adobe Illustrator
Bước 9: Nguyên mẫu bìa cứng
Bước này được sử dụng để xác nhận kích thước của vỏ và mọi phần của mô hình, đảm bảo kích thước hộp, vị trí nút và vị trí đèn LED vừa với các linh kiện điện tử đã lắp ráp.
Bước 10: Nguyên mẫu ván ép bạch dương
Đây là nguyên mẫu ban đầu. Cuối cùng, một lỗ vuông để cắm bộ sạc đã được thêm vào một trong các phần.
Bước 11: Nguyên mẫu lắp ráp cuối cùng
Đề xuất:
Đèn LED để bàn thông minh - Chiếu sáng thông minh W / Arduino - Neopixels Workspace: 10 bước (có hình ảnh)
Đèn LED để bàn thông minh | Chiếu sáng thông minh W / Arduino | Neopixels Workspace: Ngày nay chúng ta dành nhiều thời gian ở nhà, học tập và làm việc ảo, vậy tại sao không biến không gian làm việc của chúng ta trở nên tuyệt vời hơn với hệ thống chiếu sáng tùy chỉnh và thông minh dựa trên Arduino và Ws2812b LED. Sau đây tôi chỉ cho bạn cách xây dựng Smart của bạn Đèn LED để bàn
Biến điện thoại thông minh không sử dụng thành màn hình thông minh: 6 bước (có hình ảnh)
Biến điện thoại thông minh không sử dụng thành màn hình thông minh: Hướng dẫn Deze có trong het Engels, voor de Nederlandse versie klik hier Bạn có điện thoại thông minh (cũ) chưa sử dụng? Biến nó thành một màn hình thông minh bằng Google Trang tính và một số bút và giấy, bằng cách làm theo hướng dẫn từng bước dễ dàng này. Khi bạn hoàn thành
Làm thế nào để sử dụng đồng hồ vạn năng trong tiếng Tamil. Hướng dẫn cho người mới bắt đầu - Đồng hồ vạn năng cho người mới bắt đầu: 8 bước
Làm thế nào để sử dụng đồng hồ vạn năng trong tiếng Tamil. Hướng dẫn cho người mới bắt đầu | Đồng hồ vạn năng dành cho người mới bắt đầu: Xin chào các bạn, Trong hướng dẫn này, tôi đã giải thích cách sử dụng đồng hồ vạn năng trong tất cả các loại mạch điện tử theo 7 bước khác nhau, chẳng hạn như 1) kiểm tra tính liên tục khi phần cứng gặp sự cố 2) Đo dòng điện một chiều 3) kiểm tra Diode và đèn LED 4) Đo Resi
Trình đọc / ghi và ghi âm thanh ScanUp NFC cho người mù, người khiếm thị và mọi người khác: 4 bước (có hình ảnh)
Máy đọc / ghi âm thanh ScanUp NFC và Máy ghi âm cho Người mù, Khiếm thị và Mọi người Khác: Tôi học thiết kế công nghiệp và dự án là công việc trong học kỳ của tôi. Mục đích là để hỗ trợ người khiếm thị và người mù bằng một thiết bị cho phép ghi lại âm thanh ở định dạng WAV trên thẻ SD và gọi thông tin đó bằng thẻ NFC. Vì vậy, trong
Giá đỡ chìa khóa thông minh điều khiển bằng giọng nói: 3 bước (có hình ảnh)
Người giữ chìa khóa thông minh điều khiển bằng giọng nói: Bạn có phải là loại người không giỏi quản lý chìa khóa và luôn phải thử từng chìa cho mọi ổ khóa khác không? Đừng lo lắng, chỉ cần lấy một chút động lực và công cụ tạo ra của bạn để đổi mới chủ chìa khóa thông minh điều khiển bằng giọng nói rất riêng