Mục lục:
- Bước 1: Tất cả hoạt động như thế nào: Giải thích các lựa chọn thiết kế
- Bước 2: Các bộ phận - Bộ não: Vi điều khiển & Màn hình
- Bước 3: Các bộ phận - Quang học: Tìm kiếm sự thỏa hiệp
- Bước 4: Các bộ phận - một thùng chứa để chứa tất cả chúng
- Bước 5: Tạo giao thức cho mô-đun của chúng tôi
- Bước 6: Mã: ESP32 Side
- Bước 7: Mã: Android Side
- Bước 8: Tiếp theo là gì?
- Bước 9: Kết luận và cảm ơn đặc biệt
Video: Nguyên mẫu HUD dành cho xe máy thông minh (Điều hướng từng chặng và nhiều hơn thế nữa): 9 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:30
Chào !
Đây là câu chuyện về cách tôi thiết kế và xây dựng nền tảng HUD (Màn hình hiển thị cảnh báo) được thiết kế để gắn trên mũ bảo hiểm xe máy. Nó được viết trong bối cảnh của cuộc thi "bản đồ". Đáng buồn là tôi đã không thể hoàn thành dự án này hoàn toàn kịp thời hạn của cuộc thi, nhưng tôi vẫn muốn chia sẻ tiến trình của mình về nó, cũng như ghi lại tất cả những thử nghiệm và sai sót mà tôi đã gặp phải khi thực hiện nó.
Ý tưởng cho dự án này lần đầu tiên đến với tôi cách đây vài năm, khi tôi bắt đầu làm quen với xe máy, và tôi bắt đầu xem xét những thiết bị mà tôi sẽ cần mua để làm cho những chuyến đi của tôi thú vị hơn. Vào thời điểm đó, tôi cảm thấy bối rối rằng cách tốt nhất để có được một số định vị GPS cơ bản trong khi đi xe là về cơ bản gắn điện thoại thông minh của bạn vào tay lái của xe đạp. Tôi mặc dù với bản thân rằng chắc chắn, có thể có một cách tốt hơn để có được loại thông tin đó một cách nhanh chóng.
Đó là lúc tôi hiểu: màn hình hiển thị hướng lên trên có thể là cách để điều hướng trong khi lái xe, mà không làm cạn pin điện thoại của bạn và để điện thoại tiếp xúc với các yếu tố.
Theo thời gian, ý tưởng này đã trưởng thành trong tâm trí tôi và tôi mặc dù rằng việc có một HUD trước mặt tôi mọi lúc sẽ cho phép nhiều công dụng hơn là điều hướng đơn giản. Đây là lý do tại sao kế hoạch của tôi là đặt nền tảng ở chế độ công khai và theo mô-đun, vì vậy bất kỳ ai cũng có thể tạo mô-đun hiển thị thông tin họ cần trên HUD của riêng họ
Mặc dù có những sản phẩm có sẵn trên thị trường đáp ứng nhiệm vụ này, nhưng không có sản phẩm nào có tính mô-đun như nền tảng của tôi và chúng cũng có xu hướng đắt hơn một chút. Nhưng dù sao, chào mừng bạn đến với dự án này.
Những gì hoạt động như bây giờ
Như đã nói, dự án này vẫn đang trong tình trạng phát triển, và đây là những gì hiện đang hoạt động.
- Giao tiếp giữa điện thoại thông minh và bo mạch dựa trên ESP32 (điện thoại thức)
- Thiết kế quang học đã hoàn thành (có thể cần điều chỉnh nhỏ về lâu dài)
- Ứng dụng điều hướng Android sử dụng SDK điều hướng Mapbox:
- Có khả năng tính toán và hiển thị vị trí của người dùng trên bản đồ, cũng như tuyến đường từ đó đến đích
- Có khả năng kết nối với thiết bị Bluetooth (địa chỉ MAC của thiết bị hiện đã được mã hóa cứng)
- Có khả năng điều hướng thời gian thực, bao gồm trích xuất và gửi thông tin của thao tác sắp tới thông qua Bluetooth nối tiếp (hiện chỉ hỗ trợ lượt)
Những gì cần làm việc
Danh sách này bao gồm các hạng mục thực sự cần thiết cho mục đích sử dụng của HUD, nhưng vẫn chưa sẵn sàng để triển khai.
- Thiết kế tổng thể (Gắn mũ bảo hiểm, cơ chế điều chỉnh góc phản xạ,..)
- Ứng dụng Android:
- Thực hiện phát hiện và hiệu chỉnh lệch tuyến
- Khả năng cho người dùng nhập địa chỉ đích
- Các điểm tham chiếu?
- Công thái học / Thẩm mỹ
Quân nhu:
Những điều cần thiết
- Một bảng phát triển dựa trên esp32
- Bất kỳ điện thoại thông minh Android nào gần đây (hỗ trợ Bluetooth)
- SSD1306 hoặc màn hình OLED 96 "được kích hoạt khác (của tôi là 128x64 pixel, xem phần" Bộ não: Vi điều khiển & Màn hình ")
- Một tấm phản xạ (bất kỳ miếng acrylic / thủy tinh / plexiglass nào cũng được)
- Một ống kính Fresnel (của tôi có độ dài F. độ dài khoảng 13cm, xem phần "Lựa chọn ống kính")
Công cụ
- Sắt hàn
- Bảng bánh mì
- Một vài dây cáp jumper
- Máy in 3d / dịch vụ in 3d
Bước 1: Tất cả hoạt động như thế nào: Giải thích các lựa chọn thiết kế
Ý tưởng cơ bản của Màn hình cảnh báo là hiển thị hình ảnh trước tầm nhìn của ai đó, vì vậy họ không cần phải rời mắt khỏi bất cứ điều gì họ đang làm (có thể là lái máy bay hoặc lái xe mô tô, đó sẽ là trường hợp ví dụ).
Quang học
Về mặt kỹ thuật, điều này có thể đạt được bằng cách đặt thẳng màn hình trước mắt người dùng. Tuy nhiên, màn hình không trong suốt và do đó sẽ cản trở tầm nhìn của người dùng. Sau đó, bạn có thể đặt màn hình trước một bề mặt phản chiếu, bề mặt này sẽ phản chiếu nội dung của màn hình đồng thời đủ nhìn xuyên qua để người dùng có thể nhìn thấy những gì trước mặt.
Tuy nhiên, cách tiếp cận này có một lỗ hổng rất lớn: màn hình thực tế thường gần mắt người dùng hơn so với những gì người dùng thực sự phải lấy nét (ví dụ: con đường phía trước anh ta). Điều này có nghĩa là, để đọc những gì trên bề mặt phản chiếu, mắt của người dùng sẽ cần phải thích ứng với khoảng cách của màn hình so với mắt của họ (giả sử là 20 cm) và sau đó sẽ cần phải điều chỉnh lại để tập trung vào con đường phía trước (~ 2/5 mét). Thời gian thực hiện toàn bộ hoạt động này là thời gian quý báu nên dành để nhìn đường và việc thích nghi thường xuyên có thể gây khó chịu cho người dùng chỉ sau vài phút.
Đó là lý do tại sao tôi quyết định thêm một thấu kính giữa màn hình và gương phản xạ. Ống kính này, nếu được lựa chọn cẩn thận, sẽ cho phép tạo ra hình ảnh ảo của màn hình (xem sơ đồ ở trên), sau đó sẽ có vẻ xa mắt người dùng hơn so với thực tế, do đó ít cần phải điều chỉnh đột ngột hơn (hoặc không có gì cả, trong một kịch bản hoàn hảo). Thiết kế này cho phép người dùng nhanh chóng nhìn vào gương phản xạ, nhận được thông tin họ cần và ngay lập tức nhìn lại con đường.
Vai trò của điện thoại thông minh
Bởi vì việc thử và triển khai toàn bộ ứng dụng điều hướng chỉ trên ESP32 là không thực tế, tôi quyết định tạo một ứng dụng Android sẽ giải quyết vấn đề này. Sau đó, ứng dụng sẽ chỉ cần cho ESP32 biết người dùng phải làm gì để đến đích và ESP32 chuyển tiếp thông tin đó thông qua HUD (xem hình "Cách hoạt động của mô-đun").
Bước 2: Các bộ phận - Bộ não: Vi điều khiển & Màn hình
Như đã nêu ở trên, tôi đã lên kế hoạch để mô-đun của mình hiển thị thông tin điều hướng, trong khi không thực sự có nó để tính toán vị trí thực tế, theo dõi và điều hướng thời gian thực. thay vào đó, điện thoại của người dùng sẽ giao tiếp với mô-đun và gửi thông tin cho nó để sau đó được hiển thị trên HUD.
Để tạo điều kiện giao tiếp giữa điện thoại của người dùng và mô-đun, tôi đã chọn sử dụng bảng mạch dựa trên ESP32 cho dự án này. Sự lựa chọn này là do mô-đun cụ thể này có khả năng tích hợp Bluetooth, cũng như một số thông số kỹ thuật thú vị khác (dễ sử dụng Bộ lưu trữ không bay hơi, CPU lõi kép, đủ RAM để thực sự điều khiển màn hình OLED thông qua I2C,…). Nó tương đối đơn giản để thiết kế PCB dựa trên ESP32, điều mà tôi đã tính đến. Tôi cũng có kinh nghiệm sử dụng và thiết kế mạch chuyên nghiệp với ESP32, điều này chắc chắn ảnh hưởng đến sự lựa chọn của tôi.
Sự lựa chọn của màn hình về cơ bản dựa trên bất cứ điều gì tôi có thể thấy rằng mặc dù tôi sẽ đủ sáng cho nhu cầu sử dụng của bạn, trong khi cũng phải nhỏ nhất có thể. Tôi không lo lắng lắm về số lượng pixel của màn hình, vì mục tiêu của tôi là có một giao diện người dùng rất tối giản và đơn giản.
Cần lưu ý rằng trình điều khiển màn hình phải được hỗ trợ bởi một thư viện cho phép phản chiếu hình ảnh. Đó là bởi vì hình ảnh được hiển thị bị lật khi nó đi qua ống kính và xuất hiện trên gương phản xạ, và việc không phải đảo ngược thủ công những gì được hiển thị là một gánh nặng rất lớn đối với vai trò của chúng tôi với tư cách là những người xây dựng.
Bước 3: Các bộ phận - Quang học: Tìm kiếm sự thỏa hiệp
Quang học cho dự án này khá khó tiếp cận, vì tôi không biết mình đang tìm kiếm thứ gì khi lần đầu tiên bắt đầu dự án này. Sau một số nghiên cứu, tôi hiểu rằng những gì tôi muốn làm là tạo ra một "hình ảnh ảo" trên màn hình OLED của tôi, hình ảnh này sẽ có vẻ xa mắt hơn so với thực tế. Khoảng cách lý tưởng để hình ảnh ảo này được hình thành sẽ là khoảng 2-5 mét phía trước người lái xe, đây dường như là khoảng cách đến các đối tượng mà chúng ta tập trung vào khi lái xe (ô tô khác, va chạm trên đường, v.v.…).
Để đạt được mục tiêu đó, tôi đã chọn sử dụng ống kính Fresnel, vì chúng khá lớn, rẻ, chúng dường như cung cấp khoảng cách tiêu cự đủ tốt cho dự án của tôi và chúng có thể được cắt bằng kéo đơn giản (điều này không đúng với trường hợp của thấu kính thủy tinh hình tròn tinh tế hơn). Ống kính Fresnel có thể được tìm thấy với những cái tên như "kính lúp bỏ túi" hoặc "kính lúp thẻ đọc", vì chúng rất thích hợp để giúp những người có thị lực kém đọc được.
Về cơ bản, mẹo ở đây là tìm ra sự thỏa hiệp phù hợp giữa:
- Có khoảng cách hình ảnh ảo hợp lý (nghĩa là, HUD sẽ có vẻ cách người dùng bao xa hoặc người dùng sẽ phải điều chỉnh mắt của mình để xem những gì trên HUD)
- Để văn bản trên màn hình không bị ống kính phóng to quá mức (về cơ bản là kính lúp)
- Có khoảng cách hợp lý giữa màn hình OLED và ống kính, nếu không sẽ dẫn đến mô-đun rất cồng kềnh
Cá nhân tôi đã đặt mua một vài ống kính khác nhau trên amazon và xác định độ dài tiêu cự tương ứng của chúng, trước khi chọn một ống kính có độ dài F. khoảng 13 cm. Tôi tìm thấy chiếc F.length này, với khoảng cách Ống kính OLED là 9cm, đã cho tôi một hình ảnh ưng ý trên gương phản xạ của tôi (xem một vài hình ảnh cuối cùng ở trên).
Như bạn sẽ thấy trên các hình minh họa của tôi, để lấy nét chính xác văn bản được hiển thị, máy ảnh được sử dụng để chụp những bức ảnh này phải điều chỉnh như thể nó đang lấy nét vào một vật thể ở xa, điều này làm cho mọi thứ trên cùng một mặt phẳng với gương phản xạ có vẻ mờ.. Đây chính xác là những gì chúng tôi muốn cho HUD của mình.
Bạn có thể tìm thấy các tệp 3d cho giá đỡ ống kính tại đây.
Bước 4: Các bộ phận - một thùng chứa để chứa tất cả chúng
Khi tôi viết Bài hướng dẫn này, hộp chứa thực tế sẽ chứa mọi phần của màn hình hiển thị hướng lên không được thiết kế phù hợp. Tuy nhiên, tôi có một vài ý tưởng về hình dạng chung của nó và cách tiếp cận một số vấn đề nhất định (như cách giữ yên gương phản xạ và làm cho nó chịu được gió trên 100 km / h). Đây vẫn là một công việc đang được tiến hành.
Bước 5: Tạo giao thức cho mô-đun của chúng tôi
Để gửi các hướng dẫn điều hướng từ điện thoại đến bảng phát triển, tôi phải nghĩ ra một giao thức giao tiếp của riêng mình cho phép tôi dễ dàng gửi dữ liệu cần thiết từ điện thoại, đồng thời tạo điều kiện xử lý dữ liệu đó sau khi nhận được.
Tại thời điểm viết Tài liệu hướng dẫn này, thông tin cần được truyền từ điện thoại để điều hướng với mô-đun là:
- Loại cơ động sắp tới (rẽ đơn giản, bùng binh, nhập vào một con đường khác,…)
- Hướng dẫn chính xác của thao tác sắp tới (tùy thuộc vào loại điều động: rẽ phải / trái; lối ra nào để đi đường vòng,…)
- Khoảng cách còn lại trước khi diễn tập sắp tới (tính bằng mét)
Tôi quyết định tổ chức dữ liệu này bằng cách sử dụng cấu trúc khung sau:
: type.instructions, khoảng cách;
Mặc dù không phải là một giải pháp đẹp, nhưng giải pháp này cho phép chúng tôi dễ dàng tách và phân biệt từng trường trong giao thức của chúng tôi, điều này tạo điều kiện thuận lợi cho việc mã hóa ở phía ESP32.
Điều quan trọng cần lưu ý là đối với các tính năng trong tương lai, thông tin khác có thể cần được thêm vào giao thức này (như ngày và giờ chính xác hoặc nhạc đang được phát trên điện thoại của người dùng), điều này sẽ dễ dàng khả thi khi sử dụng cùng xây dựng logic như bây giờ.
Bước 6: Mã: ESP32 Side
Mã cho ESP32 hiện khá đơn giản. Nó sử dụng thư viện U8g2lib, cho phép dễ dàng điều khiển màn hình OLED (đồng thời cho phép phản chiếu hình ảnh hiển thị).
Về cơ bản, tất cả những gì ESP32 làm là nhận dữ liệu nối tiếp qua Bluetooth khi ứng dụng gửi nó, phân tích cú pháp và hiển thị dữ liệu này hoặc hình ảnh dựa trên dữ liệu này (tức là hiển thị một mũi tên thay vì câu "rẽ trái / phải"). Đây là mã:
/ * Chương trình điều khiển HUD từ ứng dụng Android qua bluetooth nối tiếp * / # include "BluetoothSerial.h" // Tệp tiêu đề cho Bluetooth nối tiếp, sẽ được thêm theo mặc định vào Arduino # include #include #ifdef U8X8_HAVE_HW_SPI # include # endif # ifdef U8X8_HAVE_HW_I2C # include # endif // Trình tạo thư viện OLED, cần được thay đổi cho phù hợp với màn hình của bạnU8G2_SSD1306_128X64_ALT0_F_HW_I2C u8g2 (U8G2_MIRROR, / * reset = * / U8X8_PIN_NONE); // Máy trạng thái đã phát hiện các giá trị trường + biến # xác định điều khiển Trường 1 # xác định hướng dẫn Trường 2 # xác định khoảng cách Trường 3 # xác định endOfFrame 4int found_field = endOfFrame; BluetoothSerial serialBT; // Đối tượng cho Bluetoothchar incoming_char; char manuver [10]; char hướng dẫn [10]; char distance [10]; char tempManeuver [10]; char tempInstructions [10]; char tempDistance [10]; int nbr_char_maneuver = 0; int nbr_char_instructions = 0; int nbr_char_distance = 0; boolean fullsentence = false; void setup () {Serial.begin (9600); // Khởi động Serial monitor trong 9600 bauds u8g2.begin (); // Init điều khiển OLED serialBT.begin ("ESP32_BT"); // Tên của độ trễ Tín hiệu Bluetooth (20); Serial.println ("Thiết bị Bluetooth đã sẵn sàng để ghép nối");} void loop () {if (serialBT.available () &&! Fullsentence) // Các ký tự được nhận qua nối tiếp Bluetooth {incoming_char = serialBT.read (); Serial.print ("Đã nhận:"); Serial.println (incoming_char); } switch (hidden_field) {case manuverField: Serial.println ("Trường đã phát hiện: Ma-gien"); if (incoming_char == '.') // Đã phát hiện trường tiếp theo {secure_field = tutorialField; } else {// Điền vào mảng thông tin kiểu điều động manuver [nbr_char_maneuver] = incoming_char; nbr_char_maneuver ++; } nghỉ; hướng dẫn trường hợpField: Serial.println ("Trường được phát hiện: hướng dẫn"); if (incoming_char == ',') // Trường tiếp theo được phát hiện {explore_field = distanceField; } else {// Điền hướng dẫn mảng thông tin hướng dẫn [nbr_char_instructions] = incoming_char; nbr_char_instructions ++; } nghỉ; case distanceField: Serial.println ("Trường được phát hiện: khoảng cách"); if (incoming_char == ';') // Đã phát hiện kết thúc khung {phát hiện thấy_field = endOfFrame; Serial.print ("mach:"); Serial.println (thao tác); Serial.print ("hướng dẫn:"); Serial.println (hướng dẫn); Serial.print ("khoảng cách:"); Serial.println (khoảng cách); fullsentence = true; update_Display (); // Đã nhận đầy đủ khung, phân tích cú pháp và hiển thị dữ liệu người thu} else {// Điền khoảng cách mảng thông tin khoảng cách [nbr_char_distance] = incoming_char; nbr_char_distance ++; } nghỉ; case endOfFrame: if (incoming_char == ':') explore_field = manuverField; // Khung mới được phát hiện break; default: // Không làm gì phá vỡ; } delay (20);} void update_Display () {// Lưu vào bộ nhớ đệm từng mảng char để tránh xung đột có thể xảy ra memcpy (tempManeuver, manuver, nbr_char_maneuver); memcpy (tempInstructions, hướng dẫn, nbr_char_instructions); memcpy (tempDistance, khoảng cách, nbr_char_distance); parseCache (); // Phân tích cú pháp và xử lý mảng char fullsentence = false; // Câu đã xử lý, sẵn sàng cho câu tiếp theo} void parseCache () {u8g2.clearBuffer (); // xóa bộ nhớ trong u8g2.setFont (u8g2_font_ncenB10_tr); // chọn một phông chữ phù hợp // các mảng char -> chuỗi bắt buộc phải sử dụng hàm substring () String manuverString = tempManeuver; Chuỗi hướng dẫnString = tempInstructions; // Thực hiện giao thức tại đây. Chỉ hỗ trợ lượt cho bây giờ. if (manuverString.substring (0, 4) == "turn") {// Kiểm tra loại điều động Serial.print ("TURN DETECTED"); if (tutorialString.substring (0, 5) == "right") {// Kiểm tra hướng dẫn cụ thể và hiển thị tương ứng u8g2.drawStr (5, 15, "-"); } else if (tutorialString.substring (0, 4) == "left") {// Kiểm tra hướng dẫn cụ thể và hiển thị tương ứng u8g2.drawStr (5, 15, "<---"); } else u8g2.drawStr (5, 15, "Lỗi"); // Trường hướng dẫn không hợp lệ} / * Triển khai các kiểu điều động khác (bùng binh, v.v.) * else if (tempManeuver == "rdbt") {* *] * / u8g2.drawStr (5, 30, tempDistance); // Hiển thị khoảng cách còn lại u8g2.sendBuffer (); // chuyển bộ nhớ trong ra màn hình // Đặt lại tất cả các mảng char trước khi đọc memset tiếp theo (thao tác, 0, 10); memset (hướng dẫn, 0, 10); memset (khoảng cách, 0, 10); memset (tempManeuver, 0, 10); memset (tempInstructions, 0, 10); memset (tempDistance, 0, 10); // Đặt lại số phần tử trong mảng nbr_char_distance = 0; nbr_char_instructions = 0; nbr_char_maneuver = 0;}
Bước 7: Mã: Android Side
Đối với ứng dụng dành cho điện thoại thông minh, tôi quyết định sử dụng SDK điều hướng của Mapbox vì nó cung cấp rất nhiều tính năng hữu ích khi nói đến việc xây dựng bản đồ điều hướng từ đầu. Nó cũng cho phép sử dụng nhiều trình nghe hữu ích, điều này chắc chắn giúp ích cho việc làm cho mô-đun này hoạt động. Tôi cũng đã sử dụng thư viện nối tiếp bluetooth-bluetooth của harry1453 cho android, vì nó giúp giao tiếp nối tiếp Bluetooth dễ dàng hơn rất nhiều.
Nếu bạn muốn xây dựng ứng dụng này tại nhà, bạn sẽ cần nhận được mã thông báo truy cập Mapbox, miễn phí tối đa một số lượng yêu cầu nhất định mỗi tháng. Bạn sẽ phải đặt mã thông báo này vào mã và xây dựng ứng dụng về phía mình. Bạn cũng sẽ cần mã trong địa chỉ MAC Bluetooth của ESP32 của riêng bạn.
Như hiện tại, ứng dụng có thể hướng dẫn bạn từ vị trí hiện tại của bạn đến bất kỳ vị trí nào bạn có thể nhấp vào trên bản đồ. Tuy nhiên, như đã đề cập trong phần giới thiệu, nó không hỗ trợ bất kỳ thao tác nào khác ngoài rẽ và chưa xử lý các tuyến đường lệch.
Bạn có thể tìm thấy toàn bộ mã nguồn trên github của tôi.
Bước 8: Tiếp theo là gì?
Bây giờ ứng dụng đã đủ chức năng để thực sự hướng dẫn người dùng của nó trên một lộ trình đã định (nếu không có sai lệch so với lộ trình đã định), trọng tâm chính của tôi sẽ là cải thiện ứng dụng dành cho điện thoại thông minh và triển khai một số khả năng giúp mô-đun trở thành một thiết bị định vị khả thi. Điều này bao gồm cho phép giao tiếp Bluetooth từ điện thoại ngay cả khi màn hình tắt, cũng như hỗ trợ các loại thao tác khác (bùng binh, hợp nhất,…). Tôi cũng sẽ triển khai tính năng định tuyến lại nếu người dùng đi chệch khỏi tuyến đường ban đầu.
Khi tất cả những điều này được thực hiện xong, tôi sẽ cải thiện vùng chứa và cơ chế đính kèm của nó, in 3d nó và thử chạy mô-đun lần đầu tiên.
Nếu mọi việc suôn sẻ, mục tiêu dài hạn của tôi là thiết kế một PCB tùy chỉnh cho thiết bị điện tử nhúng của dự án này, điều này sẽ tiết kiệm rất nhiều không gian cho sản phẩm cuối cùng.
Tôi cũng có thể thêm một số tính năng khác vào mô-đun này trong tương lai, bao gồm hiển thị thời gian, cũng như báo thức thông báo trên điện thoại, có thể làm cho biểu tượng xuất hiện khi người dùng nhận được tin nhắn văn bản hoặc cuộc gọi. Cuối cùng, tôi muốn thêm các tính năng của Spotify vào mô-đun này, với tư cách là một người hâm mộ âm nhạc lớn. Tuy nhiên, tại thời điểm này, điều này chỉ là một điều tốt đẹp để có được.
Bước 9: Kết luận và cảm ơn đặc biệt
Như đã nói trong phần giới thiệu, mặc dù dự án này còn lâu mới hoàn thành, nhưng tôi thực sự muốn chia sẻ nó với mọi người, với hy vọng nó có thể truyền cảm hứng cho ai đó khác. Tôi cũng muốn ghi lại nghiên cứu của mình về chủ đề này, vì thực sự không có nhiều người quan tâm đến AR và HUD, điều mà tôi nghĩ là đáng tiếc.
Tôi muốn gửi lời cảm ơn sâu sắc đến Awall99 và Danel Quintana, những người có dự án thực tế tăng cường tương ứng đã truyền cảm hứng cho tôi rất nhiều trong việc tạo ra mô-đun này.
Cảm ơn tất cả các bạn đã chú ý theo dõi, tôi chắc chắn sẽ đăng bản cập nhật khi dự án này được cải thiện trong tương lai gần. Trong thời gian chờ đợi, hẹn gặp lại tất cả các bạn ở những bài sau!
Đề xuất:
Nhà kính tuyệt vời với hệ thống tưới nước tự động, kết nối Internet và nhiều hơn thế nữa: 7 bước (có hình ảnh)
Nhà kính tuyệt vời với hệ thống tưới nước tự động, kết nối Internet và nhiều hơn thế nữa: Chào mừng bạn đến với Tài liệu hướng dẫn này. Khi bắt đầu cuộc hành quân, tôi đang ở trong một cửa hàng làm vườn và nhìn thấy một số nhà kính. Và vì tôi đã muốn thực hiện một dự án về thực vật và điện tử từ lâu rồi, nên tôi đã mua một dự án: https://www.instagram.com/p
Trồng nhiều rau diếp trong ít không gian hơn hoặc Trồng rau diếp trong không gian, (nhiều hơn hoặc ít hơn).: 10 bước
Trồng nhiều rau diếp hơn trong ít không gian hơn hoặc … Trồng rau diếp trong không gian, (Nhiều hơn hoặc ít hơn): Đây là bài dự thi chuyên nghiệp cho Cuộc thi trồng trọt ngoài Trái đất, được gửi thông qua Huấn luyện viên. Tôi không thể vui mừng hơn khi được thiết kế cho sản xuất cây trồng vũ trụ và đăng Tài liệu hướng dẫn đầu tiên của mình. Để bắt đầu, cuộc thi yêu cầu chúng tôi
Miếng đệm nhạy cảm với áp suất tinh nghịch (dành cho Sân chơi kỹ thuật số - và hơn thế nữa): 11 bước (có hình ảnh)
Miếng đệm nhạy cảm với áp lực Playful (dành cho Sân chơi kỹ thuật số - và hơn thế nữa): Đây là tài liệu có thể hướng dẫn để hướng dẫn bạn cách tạo miếng đệm nhạy cảm với áp lực - có thể được sử dụng để tạo đồ chơi hoặc trò chơi kỹ thuật số. Nó có thể được sử dụng như một điện trở nhạy cảm với lực quy mô lớn và mặc dù vui tươi nhưng nó có thể được sử dụng cho các dự án nghiêm trọng hơn
Máy bắn đá tự động để ném thức ăn cho vật nuôi (chó, mèo, gà, v.v.), ném bóng và hơn thế nữa !: 4 bước (có hình ảnh)
Máy bắn đá tự động để ném thức ăn cho vật nuôi (chó, mèo, gà, v.v.), ném bóng và hơn thế nữa !: Xin chào và chào mừng bạn đến với Tài liệu hướng dẫn đầu tiên của tôi! Con chó của chúng tôi YÊU thức ăn của mình, theo đúng nghĩa đen thì cô ấy sẽ ăn hết chúng trong vòng vài giây. Tôi đã nghĩ ra nhiều cách để làm chậm điều này, từ những quả bóng có thức ăn bên trong đến ném nó ra khắp sân sau. Thật ngạc nhiên, cô ấy
Xe điều khiển bằng điện thoại thông minh [Nguyên mẫu]: 7 bước
Ô tô điều khiển bằng điện thoại thông minh [Nguyên mẫu]: Trong phần hướng dẫn hôm nay, chúng tôi giúp bạn xây dựng một nguyên mẫu đơn giản và trang nhã cho ô tô điều khiển từ xa, có đế bằng gỗ, kết hợp Axit polylactic in 3D (PLA) cho thanh giằng động cơ và bộ chuyển đổi kết nối động cơ với th