Mục lục:

Semaphore mẫu kiểu chữ nổi, được điều khiển bằng giọng nói: 4 bước (có hình ảnh)
Semaphore mẫu kiểu chữ nổi, được điều khiển bằng giọng nói: 4 bước (có hình ảnh)

Video: Semaphore mẫu kiểu chữ nổi, được điều khiển bằng giọng nói: 4 bước (có hình ảnh)

Video: Semaphore mẫu kiểu chữ nổi, được điều khiển bằng giọng nói: 4 bước (có hình ảnh)
Video: ĐI HỌC quên mang khăn quàng đỏ, nữ sinh có cách ĐỐI PHÓ khiến dân mạng PHỤC SÁT ĐẤT |Tin Nhanh 3Phút 2024, Tháng bảy
Anonim
Semaphore Mẫu kiểu chữ nổi, được điều khiển bằng giọng nói
Semaphore Mẫu kiểu chữ nổi, được điều khiển bằng giọng nói
Semaphore Mẫu kiểu chữ nổi, được điều khiển bằng giọng nói
Semaphore Mẫu kiểu chữ nổi, được điều khiển bằng giọng nói
Semaphore Mẫu kiểu chữ nổi, được điều khiển bằng giọng nói
Semaphore Mẫu kiểu chữ nổi, được điều khiển bằng giọng nói
Semaphore Mẫu kiểu chữ nổi, được điều khiển bằng giọng nói
Semaphore Mẫu kiểu chữ nổi, được điều khiển bằng giọng nói

Lord Vetinari đứng bên cửa sổ nhìn tòa tháp semaphore ở phía bên kia sông. Tất cả tám cửa chớp lớn đối diện với ngài đều đang nhấp nháy tức giận - đen, trắng, đen, trắng, đen, trắng … Thông tin đang bay lên không trung. Phía sau anh ta hai mươi dặm, trên một tòa tháp khác trên Sto Lat, một người nào đó đang nhìn qua kính viễn vọng và hét lên những con số. Tương lai đến với chúng ta nhanh như thế nào, anh ta nghĩ. T. Pratchett, Con voi thứ năm

Sau khi xây dựng giắc nhảy điều khiển bằng giọng nói dựa trên bộ giọng nói AIY, tôi đã có ý tưởng xây dựng một semaphore được điều khiển bằng giọng nói, tập hợp những gì mới nhất trong công nghệ CNTT với sự khởi đầu của viễn thông và truyền dữ liệu.

Lúc đầu, tôi có ý tưởng sao chép hệ thống semaphore của Pháp bởi Chappe, đây là hệ thống đầu tiên được biết đến cho viễn thông toàn quốc sử dụng hệ thống semaphore. Nhưng hóa ra nó hơi quá phức tạp để có thể thực hiện được bằng cách sử dụng các Servos tiêu chuẩn trong vòng một ngày. Mục tiêu tiếp theo của tôi là một cái gì đó tương tự như hệ thống clacks được Terry Pratchett mô tả, ví dụ: trong "Going Bưu điện", dưới dạng hệ thống bán kính màn trập 2x4 (không phải như ma trận 4x4 được mô tả trong phim). Rất tiếc, tôi không thể tìm thấy quá nhiều chi tiết kỹ thuật có sẵn trên hệ thống này. Vì vậy, tôi đã kết thúc với hệ thống semaphore ma trận 2x3 do Lord Murray phát triển, đã được Hải quân Anh sử dụng trong một thời gian. Ngoài ra, hệ thống sáu màn trập / bit cũng phù hợp với sáu đầu nối servo có sẵn trên AIY voice HAT. Tuy nhiên, vì tôi không có sáu servo trong tay trong suốt nhiều năm, nên cuối cùng tôi đã quyết định xây dựng một bộ mô phỏng làm bằng đèn LED trước tiên.

Liên quan đến mã được hiển thị, người ta có thể sử dụng hệ thống Murray, nhưng một lần nữa thông tin tôi có trên nó khá hạn chế, không cho phép hiển thị bất kỳ số và ký hiệu nào. Vì vậy, tôi đã đi đến điểm để sử dụng hệ thống chữ nổi thay thế, hệ thống này cũng sử dụng ma trận 2x3 để hiển thị các chữ cái, số và các dấu hiệu khác. Hệ thống chữ nổi Braille là tiêu chuẩn quốc tế để in các văn bản có thể đọc được cho người mù. Nó cũng là một ngôn ngữ đánh dấu, sử dụng một chỉ số để xác định rằng các số sẽ được hiển thị tiếp theo và các chỉ báo để xác định một hoặc nhiều chữ cái sau đây được viết hoa. Do đó, tôi quyết định thiết lập một hệ thống đơn giản hơn một chút, với các con số và một số dấu hiệu được xác định bằng phần mở rộng Nemeth của hệ thống chữ nổi Braille, và chỉ sử dụng các chữ cái viết hoa, ít nhất là ở phần đầu. Điều này cho phép có các mẫu duy nhất cho mọi chữ cái, số hoặc dấu hiệu được hiển thị trong ứng dụng đặc biệt của tôi và bỏ qua phân tích văn bản cần thiết cho chữ nổi Braille thực.

Thiết bị cuối cùng cho phép nói một từ hoặc câu vào hệ thống nhận dạng giọng nói AIY, sau đó dữ liệu mẫu giọng nói được gửi qua mạng WLAN và internet tới một số máy chủ của Google ở Hoa Kỳ, được giải mã ở đó, và ít nhất trong trường hợp của tôi, dữ liệu này đã được thông dịch dữ liệu được gửi trở lại châu Âu, nơi cuối cùng tôi nhận được câu được công nhận hiển thị dưới dạng chuỗi văn bản. Chuỗi văn bản này sau đó được tập lệnh Python chia thành các chữ cái riêng lẻ và bây giờ, bằng cách so sánh với từ điển xác định các mẫu tương ứng, thông tin về mẫu được rút ra và các mẫu được hiển thị trên ma trận LED 2x3. Mời các bạn xem qua video đi kèm.

Tôi đã đặt tốc độ hiển thị thành một ký tự trên giây, đủ lâu để một người được đào tạo xác định và dịch mẫu. Bước tiếp theo có thể thực hiện là sử dụng một thiết bị nhận dạng mẫu như AIY vision HAT (cho đến nay vẫn chưa có ở Châu Âu) để đọc và diễn giải các mẫu một cách tự động, do đó, để đóng vòng tròn.

Các khái niệm khác về cải tiến, một số có liên quan đến thế giới thực hơn, được thảo luận trong phần 'triển vọng' của tài liệu hướng dẫn này.

Bước 1: Vật liệu được sử dụng

Vật liệu được sử dụng
Vật liệu được sử dụng
Vật liệu được sử dụng
Vật liệu được sử dụng

Raspberry Pi 3

AIY voice HAT

Tám đèn LED trắng, đường kính 5 mm. Chúng chạy trên 3V, do đó, một điện trở là cần thiết.

Điện trở 100kOhm. Có thể không phải là giải pháp hoàn hảo, nhưng đã nằm trong tầm tay.

Cáp nhảy

Một đoạn dây ngắn

Breadboard, tùy chọn để kiểm tra thiết lập.

Một hộp nhựa cho danh thiếp.

Hai miếng xốp nhựa 4 mm, một số còn lại là rác.

Một số mảnh màng nhựa, như bộ khuếch tán, như trên.

Sắt hàn và thuốc hàn, một con dao.

Bước 2: Thiết lập và sử dụng

Thiết lập và sử dụng
Thiết lập và sử dụng
Thiết lập và sử dụng
Thiết lập và sử dụng
Thiết lập và sử dụng
Thiết lập và sử dụng

Thiết lập Raspberry Pi và AIY HAT như được chỉ ra trong hướng dẫn sử dụng AIY voice HAT. Tôi khuyên bạn nên hàn các tiêu đề ít nhất vào các cổng servo trước khi bạn lắp ráp Pi và HAT, vì điều này cho phép bạn dễ dàng kết nối servo, breadboard hoặc đèn LED.

Hộp trưng bày được xây dựng từ nắp hộp nhựa đựng danh thiếp, hai miếng xốp lắp vào hộp và một miếng màng bao bì có kích thước tương tự làm bộ khuếch tán. Trong một trong những bộ phận bọt, sáu lỗ được đẩy và các đèn LED được đặt vào chúng. Các chân ngắn hơn (mặt đất) của đèn LED được kết nối với nhau bằng một đoạn cáp, sau đó một điện trở được thêm vào và cáp jumper được hàn vào chân sau. Các chân còn lại (bên cạnh) của cáp jumper của đèn LED đã được hàn.

Sau đó, chúng được kết nối với các cổng servo trên AIY voice HAT thông qua cáp kéo dài, mặt dương với chân "P in" (bên ngoài), đầu nối âm với một trong các chân nối đất / trừ (bên trong). Vui lòng xem sơ đồ đính kèm.

Tôi thực sự khuyên bạn nên kiểm tra thiết lập trên breadboard trước khi hàn.

Bây giờ màng, tấm LED và lớp niêm phong đã được đặt trong hộp nhựa.

Đặt tập lệnh Braille_LED_1.py vào thư mục src. Trong trường hợp, bạn có thể phải thực thi tập lệnh trước.

Bây giờ bằng cách sử dụng thiết bị đầu cuối Dev (!), Chương trình Braille_LED_1.py được bắt đầu. Nhập 'src / Braille_LED_1.py' và nhấn 'Enter'.

Bây giờ bạn sẽ được yêu cầu nhấn nút của hộp AIY và nói từ hoặc câu của bạn. Với một số độ trễ, hệ thống sẽ lặp lại những gì đã hiểu và hiển thị nó trên màn hình cũng như từng chữ cái, trên màn hình sáu LED.

Nếu bạn đưa từ khóa "Tạm biệt" thay cho một câu, hệ thống sẽ cho bạn biết Tạm biệt và chương trình sẽ đóng lại.

Bước 3: Mã

Mật mã
Mật mã

Dưới đây, bạn tìm thấy mã cho phép bạn nói chuyện với thiết bị thoại AIY và hiển thị câu được nhận dạng từng chữ cái trên một ma trận nhỏ 2x3 LED 'semaphore' hoặc chữ nổi Braille.

Mã là một dẫn xuất của tập lệnh mà tôi đã sử dụng cho dự án trước đây bằng AIY voice HAT, là một dẫn xuất của ví dụ servo_demo.py được mô tả trong sổ tay AIY voice HAT.

Bạn cũng có thể tìm thấy một từ điển có phần mã Murray mà tôi đã tìm thấy trên internet, dưới dạng tệp văn bản. Nó không chứa số và bỏ qua một số chữ cái, điều này sẽ gây ra vấn đề ở đây.

Một hạn chế của chương trình ở trạng thái hiện tại là nếu một dấu hiệu không có trong từ điển, nó sẽ làm hỏng chương trình. Ngoài ra, nó không phải là đại diện của Mã chữ nổi hoàn chỉnh dưới dạng ngôn ngữ Đánh dấu. Như bạn có thể thấy trong tập lệnh bên dưới, mã Nemeth cho các số là thừa với một số dấu hiệu trong chữ nổi Braille tiêu chuẩn, nhưng điều đó sẽ không gây ra vấn đề cho ứng dụng cụ thể của chúng tôi.

#! / usr / bin / env python3

# Tập lệnh này là sự điều chỉnh của tập lệnh servo_demo.py cho HAT giọng nói AIY, # được tối ưu hóa cho hiển thị biểu tượng loại Baille dựa trên AIY import aiy.audio import aiy.cloudspeech import aiy.voicehat from gpiozero import LED #from gpiozero import Nút từ time import sleep # Dictionary: bảng chữ cái Braille được sửa đổi nhân tạo, # số và một số ký hiệu được lấy từ phần mở rộng Nemeth của Braille Braille_6A = {"": "123456", # dấu cách "A": "1", "B": "12 "," C ":" 14 "," D ":" 145 "," E ":" 15 "," F ":" 124 "," G ":" 1245 "," H ":" 125 ", "I": "24", "J": "245", "K": "13", "L": "123", "M": "134", "N": "1345", "O ":" 135 "," P ":" 1234 "," Q ":" 12345 "," R ":" 1235 "," S ":" 234 "," T ":" 2345 "," U ": "136", "V": "1236", "X": "1346", "Y": "13456", "Z": "1356", "W": "2456", "#": "3456 Tiền tố ", # Number, tức là các dấu hiệu tiếp theo là các số", ":" 2 ",". ": "256", # Dấu dừng đầy đủ, cuối câu (GB) "?": "236", "!": "235", "'": "3", "-": "24", ";": "23", "Cap": "6", # Chữ cái tiếp theo là Viết hoa; Số-Dừng? "": "", # Mã Nemeth Braille là một mở rộng toán học cho 6-Point Braille # xem: https://en.wikipedia.org/wiki/Nemeth_Braille "1": "2", # Nemeth Code '1', Chữ nổi Braille 'dấu phẩy' "2": "23", "3": "25", "4": "256", "5": "26", "6": "235", # Nemeth '6', Chữ nổi '!' "7": "2356", "8": "236", # Nemeth '8', chữ nổi Braille '?' "9": "35", "0": "356", "+": "346", "-": "36", "/": "34", "(": "12356", ") ":" 23456 "," * ":" 1346 "# '*' là một biểu tượng hai mẫu trong Nemeth, ở đây được thay thế bằng 'x' để bỏ qua lỗi}" "" vì lý do đơn giản, các mẫu số chữ nổi Braille tiêu chuẩn được đưa ra bên dưới được thay thế bằng Mã thứ tự tương ứng "1": "1", "2": "12", "3": "14", "4": "145", "5": "15", " 6 ":" 124 "," 8 ":" 1245 "," 9 ":" 24 "," 0 ":" 245 "," "" #Text = "rbhTZkl 9t64 + 34 #!" # Sampletext, cho mục đích gỡ lỗi def main (): Recogzer = aiy.cloudspeech.get_recognizer () Recogzer.expect_phrase ('tạm biệt') # từ khóa, kết thúc nút chương trình = aiy.voicehat.get_button () # AIY Trạng thái nút led = aiy.voicehat.get_led () # AIY Trạng thái nút-LED aiy.audio.get_recorder (). start () led_1 = LED (26) # đầu nối thứ nhất, servo0, GPIO 26 # LED phía trên bên trái_2 = LED (6) # đầu nối thứ hai, servo1, GPIO 06 # led giữa bên trái_3 = LED (13) # đầu nối thứ 3, servo2, GPIO 13 # led dưới bên trái_4 = LED (5) # đầu nối thứ 4, servo3, GPIO 05 # led trên bên phải_5 = LED (12) # đầu nối thứ 5, servo4, GPIO 12 # led giữa bên phải_6 = LED (24) # đầu nối thứ 4, servo3, GPIO 13 # phía dưới bên phải # khoảng cách = Nút (5) # cảm biến khoảng cách được kết nối với servo3 / GPIO 05, không được sử dụng ở đây aiy.audio.say ("Xin chào!",) Aiy.audio.say ("Để bắt đầu, vui lòng nhấn nút",) aiy.audio.say ("Nếu bạn nói với tôi Tạm biệt, tôi sẽ kết thúc chương trình",) trong khi True: # bắt đầu loop led.set_state (aiy.voicehat. LED. BLINK) print ("Để kích hoạt nhận dạng giọng nói n, nhấn nút màu xanh lam, sau đó nói ") print () button.wait_for_press () print ('Đang nghe…') aiy.audio.say (" Tôi đang nghe ",) led.set_state (aiy.voicehat. LED. BLINK_3) text = Recogzer.recognize () # chuỗi văn bản của câu được đăng ký lại led.set_state (aiy.voicehat. LED. OFF) nếu văn bản là Không: aiy.audio.say ('Xin lỗi, tôi không nghe thấy bạn.',) elif 'tạm biệt' trong văn bản: aiy.audio.say ("Tạm biệt",) aiy.audio.say ('Arrivederci',) aiy.audio.say ('Auf Wiedersehen',) sleep (3) print ('bye! ') break # dừng vòng lặp và kết thúc chương trình khác: print (' Bạn đã nói "', văn bản,'" ') # Cho phép bạn kiểm tra phần diễn giải hệ thống, bao gồm cả captialization aiy.audio.say (' Tôi đoán bạn đã nói ',) aiy.audio.say (text,) # acustic verify Text_up = text.upper () # chuyển tất cả sang chữ in hoa (Text_up) Text_Len = len (Text_up) print (Text_Len) for i in range (Text_Len): Lett = Text_up # Chọn một chữ cái, bắt đầu bằng chữ cái đầu tiên, tức là [0] print ("Letter =", Lett) Lett_B = Braille_6A [Lett] # Chọn mã tương ứng từ từ điển. Một dấu hiệu bị thiếu sẽ phá vỡ mã! print (Lett_B) if ("1" in Lett_B): print ("LED 1") led_1.on () # kích hoạt LED tại servo0 "nếu" 2 "trong Lett_B: print (" LED 2 ") led_2.on () if "3" trong Lett_B: print ("LED 3") led_3.on () if "4" in Lett_B: print ("LED 4") led_4.on () if "5" in Lett_B: print ("LED 5 ") led_5.on () if" 6 "trong Lett_B: print (" LED 6 ") led_6.on () sleep (1) # mẫu hiển thị cho lần in thứ hai () led_1.off () # hủy kích hoạt tất cả các đèn LED trên servos0 -5n led_2.off () led_3.off () led_4.off () led_5.off () led_6.off () sleep (0.3) # một dấu ngắt ngắn tối, để biểu thị phần cuối của chữ cái nếu _name_ == '_main_ ': chủ chốt()

Bước 4: Outlook và nhận xét

Vậy điều gì có thể xảy ra tiếp theo?

Bên cạnh trò đùa siêu đẳng về CNTT đó với bộ video AIY hoặc một hệ thống nhận dạng hình ảnh tự động khác được đề cập trong phần giới thiệu, có thể có các tùy chọn khác để mở rộng khái niệm được mô tả trong hướng dẫn này. Một số trong số chúng thậm chí có thể được sử dụng trong thế giới thực. Đây có thể là:

- cải tiến lập trình, để văn bản được chuyển thành mã chữ nổi Braille tiêu chuẩn, với tất cả các đánh dấu và nén. Đó không phải là nỗ lực quá nhiều đối với một lập trình viên python lành nghề.

- mở rộng hệ thống thành ma trận 2x4. Cũng nên có, và sẽ hữu ích khi sử dụng mã chữ nổi 8 chấm tương ứng, như được sử dụng bởi màn hình chữ nổi điện tử. Ở trên này, nó sẽ gần hơn một chút với hệ thống clacks của Dearheart.

- xây dựng màn hình chữ nổi 2x3 hoặc 2x4 thực. Có thể sử dụng một loạt các Servos hoặc một loạt các solenoit nhỏ 5V. Thách thức chính là khoảng cách tiêu chuẩn giữa các điểm xúc giác là 2,45 mm, hoặc 1/10 inch, trên màn hình điện tử, vì vậy có thể cần một số bánh răng và cơ khí. Thách thức khác có thể là điều chỉnh chính xác độ dài đẩy.

Một giải pháp đơn giản và rẻ tiền như vậy có thể được đông đảo công chúng quan tâm, vì màn hình chữ nổi thương mại khá đắt. Có thể có lợi ích cho người học chữ nổi Braille khi sử dụng hệ thống điều khiển bằng giọng nói như vậy. Vì họ có thể nhập bằng lời một câu (tiếng Anh) mà họ chọn, và nhận được văn bản, chữ cái và dấu hiệu, hiển thị trên (các) đầu ngón tay của họ.

- cấu tạo một hệ thống màn trập cơ học giống như hệ thống Murray hoặc Dearheart. Sử dụng servos, điều đó không quá phức tạp và có thể được mô tả trong một hướng dẫn khác. Hoặc có thể là một dự án trường học tốt đẹp. Bất cứ ai quan tâm?

–――――

Một số nhận xét và liên kết quan tâm:

- Có một hướng dẫn mô tả một "đèn lồng semaphore tự làm", một ma trận LED 2x4, dựa trên một số bảng demo Propeller. Tôi thích bố cục, nhưng lập trình có vẻ hơi phức tạp đối với tôi. Xin hãy nhìn lại chính mình.

- Bây giờ tôi đã tìm thấy một chương trình python để tạo chữ nổi Braille được ký hợp đồng hoàn toàn (Lớp 2). Thật không may, nó bị giới hạn ở python 2 và phiên bản tiếng Anh Mỹ năm 2002:

- một chương trình hoàn chỉnh hơn có vẻ là liblouis, https://github.com/liblouis/liblouis, nhưng tôi không biết làm thế nào để tích hợp nó vào giải pháp này.

- một giải pháp python thú vị dường như đến từ Hy Lạp, https://github.com/ant0nisk/pybrl có thể tích hợp một số ngôn ngữ và tạo chữ nổi cấp 2.

- Tôi không phải là lập trình viên, cũng không phải dân điện tử, tôi cũng không có nhiều kiến thức về chữ nổi Braille cách đây vài ngày.

Vì vậy, nếu bạn thấy bất kỳ sai sót, thiếu sót, hoặc bạn có một số ý tưởng cho dự án, xin vui lòng cho tôi biết.

- Nếu bạn thích hướng dẫn này, hãy bình chọn cho nó!

Đề xuất: