Mục lục:

Máy bay không người lái Raspberry Pi điều khiển bằng giọng nói Alexa với IoT và AWS: 6 bước (có hình ảnh)
Máy bay không người lái Raspberry Pi điều khiển bằng giọng nói Alexa với IoT và AWS: 6 bước (có hình ảnh)

Video: Máy bay không người lái Raspberry Pi điều khiển bằng giọng nói Alexa với IoT và AWS: 6 bước (có hình ảnh)

Video: Máy bay không người lái Raspberry Pi điều khiển bằng giọng nói Alexa với IoT và AWS: 6 bước (có hình ảnh)
Video: ESP32/ESP8266 AMAZON IOTS CORE 2024, Tháng bảy
Anonim
Image
Image
Máy bay không người lái Raspberry Pi điều khiển bằng giọng nói Alexa với IoT và AWS
Máy bay không người lái Raspberry Pi điều khiển bằng giọng nói Alexa với IoT và AWS
Máy bay không người lái Raspberry Pi điều khiển bằng giọng nói Alexa với IoT và AWS
Máy bay không người lái Raspberry Pi điều khiển bằng giọng nói Alexa với IoT và AWS

Chào! Tên tôi là Armaan. Tôi là một cậu bé 13 tuổi đến từ Massachusetts. Hướng dẫn này cho thấy, như bạn có thể suy ra từ tiêu đề, cách chế tạo Máy bay không người lái Raspberry Pi. Nguyên mẫu này cho thấy máy bay không người lái đang phát triển như thế nào và chúng có thể đóng một vai trò quan trọng như thế nào trong tương lai. Tôi chắc chắn có thể thấy mình thức dậy sau 10 năm và yêu cầu một máy bay không người lái mang bữa sáng cho tôi. Máy bay không người lái sử dụng Amazon Alexa, Amazon Web Services, IoT (Internet of Things) và quan trọng nhất là Raspberry Pi để chạy. Nó có nghĩa là để chứng minh và thông báo về máy bay không người lái và cách chúng đang cải thiện mỗi ngày. Hy vọng rằng bạn thành công và tìm hiểu về máy bay không người lái trong quá trình này. Chúc may mắn và cảm ơn vì đã đọc. -Armaan

Quân nhu

Để xây dựng nguyên mẫu, có nhiều nhu cầu phần cứng và phần mềm khác nhau. Tôi đã sử dụng một hướng dẫn trực tuyến của The Drone Dojo để chế tạo máy bay không người lái và tích hợp các công nghệ được liệt kê. Đối với máy bay không người lái, bạn có thể tìm thấy danh sách các bộ phận ngay tại đây:

Danh sách các bộ phận của máy bay không người lái

Yêu cầu phần mềm:

  • Dịch vụ web của Amazon
  • Máy tính xách tay
  • Phần mềm Mission Planer
  • Balena Etcher
  • Thẻ MicroSD với tệp Raspbian được tìm thấy tại đây
  • Amazon Alexa, vật lý hoặc ảo

Bước 1: Thu thập và Tìm hiểu các bộ phận

Thu thập và hiểu các bộ phận
Thu thập và hiểu các bộ phận

Mọi bộ phận được đề cập trong danh sách cung cấp đều cần thiết, và sự hiểu biết rõ ràng về mọi bộ phận cũng vậy. Bạn có thể tìm thấy các phần trực tuyến và sau khi thu thập được, hãy tiếp tục đọc. Danh sách phát của The Drone Dojo để hiểu đầy đủ về các phần có thể được tìm thấy tại đây. Có thể tìm thấy lời giải thích dài 4 phút trên kênh youtube của tôi tại đây. Khi nói đến máy bay không người lái, các bộ phận duy nhất, bất chấp những gì hầu hết mọi người nghĩ, không chỉ là động cơ và cánh quạt. Dưới đây là các mục đích cơ bản của từng phần.

Raspberry Pi với Emlid Navio2

Phần này là một bộ xử lý trung tâm và là điểm chính của máy bay không người lái. Raspberry Pi hoạt động giống như CPU của máy tính gửi lệnh đến Navio2 để thực thi thông qua PWM (Tín hiệu điều chế độ rộng xung) đến các bộ phận khác của máy bay không người lái

2. ESC (Bộ điều khiển tốc độ điện tử)

Những phần màu vàng này được tìm thấy bên dưới khung. Chúng được cắm 4 vào Navio, một cho mỗi động cơ. Khi nhận được tín hiệu PWM, chúng sẽ quay động cơ và bắt đầu bay.

3. Động cơ

Động cơ không cần giải thích quá nhiều vì có lẽ bạn đã quá quen thuộc với chúng. Chúng quay và làm quay các cánh quạt để tạo ra lực đẩy.

4. Cánh quạt

Cánh quạt tạo ra lực đẩy cho máy bay không người lái bay. Chúng quay cùng chiều với các động cơ để nâng xe.

5. Mô-đun Pin và Nguồn

Pin LiPo cung cấp năng lượng cho toàn bộ máy bay không người lái thông qua khung bằng mô-đun nguồn. Nó cho thời gian bay khoảng 15-20 phút và hoạt động như một nguồn năng lượng.

6. GPS

GPS liên lạc với các vệ tinh để xác định vị trí của máy bay không người lái. Nó xác định độ cao, vĩ độ và kinh độ. Nó có thể được sử dụng để xác định địa lý, điểm tham chiếu và cũng có thể di chuyển đến các vị trí hoặc hướng nhất định.

7. Mô-đun đo từ xa

Mô-đun đo từ xa kết nối máy bay không người lái của chúng tôi với một trạm điều khiển mặt đất, trong trường hợp của chúng tôi là Mission Planner, để được giám sát.

8. Bộ điều khiển RC và Mô-đun cùng với Bộ mã hóa PPM

Bộ điều khiển RC sử dụng radio để truyền tín hiệu và lệnh tới Mô-đun RC để điều khiển máy bay không người lái theo cách thủ công. Bộ mã hóa PPM dịch các tín hiệu này cho Navio + RPI để xử lý và thực thi.

9. Khung

Khung màu đỏ và trắng này hoạt động như một cơ sở hoặc nền tảng cho các bộ phận khác được đặt vào. Khung có tính khí động học và trọng lượng nhẹ, do đó hoàn hảo cho việc chế tạo máy bay không người lái của chúng tôi.

Giờ đây, với kiến thức về mọi bộ phận, cuối cùng chúng ta cũng có thể chế tạo máy bay không người lái! Chuyển sang bước tiếp theo!

Bước 2: Lắp ráp Drone

Lắp ráp Drone
Lắp ráp Drone

Bước này có lẽ là khó nhất về mặt thể lực. Tôi khuyên bạn nên nhờ người khác giúp đỡ hoặc cố gắng sử dụng bàn tay trợ giúp trong danh sách các bộ phận. Quá trình này quá dài để chứng minh ở đây, vì vậy tôi sẽ cung cấp một liên kết khác mà tôi đã sử dụng bởi The Drone Dojo.

Xây dựng Máy bay không người lái Raspberry Pi

Một lần nữa, vì tôi sẽ không đi vào quá nhiều chi tiết, tôi sẽ chỉ làm nổi bật những điều cơ bản của từng bước.

1. Sắp xếp nguồn cung cấp của bạn - Thu thập tài liệu của chúng tôi và đảm bảo chúng có thể dễ dàng truy cập

2. Lập kế hoạch xây dựng của bạn - Tổ chức các bộ phận của bạn trên khung để tạo bản thiết kế chi tiết về những gì bạn sẽ xây dựng

3. Công việc hàn - Đây là công việc hơi khó làm một mình. Bạn phải hàn các đầu nối viên đạn vàng đi kèm với động cơ với ESC. Tiếp theo, bạn phải lấy phần dưới cùng của khung và hàn ESC với khung dưới cùng hoặc Bảng phân phối điện. Mô-đun pin cũng sẽ được hàn vào Bảng phân phối điện

4. Thiết lập Khung - Sau đó, bạn phải vặn phần trên cùng của khung cùng với các cánh tay. Sau đó, bạn có thể gắn Raspberry Pi lên trên theo bất kỳ cách nào bạn muốn. (Tôi đã sử dụng băng keo). Sau đó, bạn có thể cố định ESC vào cánh tay bằng dây buộc. Bây giờ chúng ta gần như đã hoàn thành.

5. Liên kết Bộ điều khiển RC với Bộ thu - Hãy thử làm theo hướng dẫn trong danh sách phát ở trên để liên kết Bộ điều khiển RC bằng ESC.

6. Hoàn thiện các bộ phận trên khung - Dải băng dính hoặc dây đeo trên mô-đun đo từ xa trên khung. Cuộn băng Bộ mã hóa PPM vào một cánh tay. Bây giờ bạn có thể kết nối Bộ mã hóa ESC và PPM với Navio.

7. Giá gắn GPS + Pin - Lắp ráp Giá đỡ GPS bằng các vít và miếng khác nhau. Sử dụng dây buộc, gắn GPS vào Khung. Tôi không nhất thiết phải sử dụng GPS Mount vì tính mỏng manh của nó, nhưng nó tùy thuộc vào bạn. Tiếp theo, bạn có thể lắp pin vào giữa Power Dist. Bảng. Tôi cũng buộc và dán mô-đun nguồn vào khung. Bây giờ phần cứng của bạn đã được thiết lập khá nhiều. Bây giờ cho phần chúng tôi đang chờ đợi!

8. Cài đặt Cánh quạt !!! - Bạn có thể thắt chặt các cánh quạt bằng cách sử dụng biểu đồ được đề cập trong danh sách phát. Sau đó, bạn có thể cắm ESC vào động cơ và cuối cùng chúng tôi đã hoàn thành việc chế tạo máy bay không người lái.

Phần mềm là tiếp theo, như vậy trở đi!

Bước 3: Định cấu hình Raspberry Pi và GCS (Mission Planner)

Định cấu hình Raspberry Pi và GCS (Mission Planner)
Định cấu hình Raspberry Pi và GCS (Mission Planner)

Một lần nữa, bạn có thể tìm thấy hướng dẫn chi tiết hơn trong danh sách phát từ bước cuối cùng. Tuy nhiên, bạn có thể biết cách thiết lập RasPi. Nhưng lần này, chúng tôi đang làm điều đó không đầu. Sử dụng Balena Etcher để ghi HĐH từ trang web Navio OS vào thẻ MicroSD. Trong khi nó được cắm vào máy tính của bạn, hãy truy cập trình hỗ trợ wpa bằng notepad ++. Sau đó, nhập ssid và mật khẩu để Raspberry Pi kết nối với WiFi của bạn. Sau đó, bạn phải thêm một tệp có tên là SSH. Điều này có thể thông qua Dòng lệnh hoặc một phương pháp khác. Bây giờ chúng ta có thể SSH. Bạn có thể sử dụng dấu nhắc lệnh hoặc Putty. Tôi đã sử dụng dấu nhắc lệnh và nhập "ssh pi @ Navio" để kết nối trong trường hợp của mình hoặc bạn có thể tìm địa chỉ IP và ssh theo cách đó. Sau khi kết nối, hãy sử dụng video này để thiết lập và định cấu hình Navio. Để thiết lập máy đo từ xa, trước tiên bạn phải thực hiện chỉnh sửa trên Raspberry Pi. Làm theo điều này để thực hiện chỉnh sửa và cố gắng kết nối với Mission Planner. Nếu đo từ xa không hoạt động, bạn có thể hoàn tác chỉnh sửa và kết nối bằng kết nối UDB bằng cách nhập IP GCS (Trạm điều khiển mặt đất chẳng hạn như máy tính xách tay) của bạn. Sau khi kết nối với Mission Planner, bạn có thể sử dụng trình hướng dẫn thiết lập để hiệu chỉnh tất cả các bộ phận của máy bay không người lái. Nếu bạn cần trợ giúp, hãy tham khảo lại danh sách phát. Thông thường, bất cứ khi nào bạn thiết lập, hầu như luôn có lỗi. Khắc phục sự cố là một trong những phần lớn nhất của dự án này. Tôi thực sự không thể giúp bạn ở đó vì tôi không biết lỗi của bạn, nhưng hầu hết các lỗi có thể được sửa với sự trợ giúp từ internet. Sau khi mọi thứ đã sẵn sàng, thì máy bay không người lái đã sẵn sàng bay! Bạn có thể thiết lập bộ điều khiển RC và chế độ bay của mình trên Mission Planner. Cố gắng giữ thanh bên trái ở phía dưới cùng bên phải trong năm giây để trang bị cho máy bay không người lái. Tôi không khuyên bạn nên bay mà không xem hướng dẫn vì máy bay không người lái rất mỏng manh và dễ gãy. Đối với tôi, lần đầu tiên tôi thử nghiệm nó, tôi đã làm hỏng GPS Mount và một số cánh quạt. Nếu bạn không yêu cầu điều khiển bằng giọng nói, thì bạn có thể dừng ở đây. Để tìm hiểu về AWS và lập trình máy bay không người lái hãy tiếp tục!

Bước 4: Lập trình Drone để bay với Python

Lập trình Drone để bay với Python
Lập trình Drone để bay với Python

Trước khi tham gia AWS, trước tiên chúng ta nên hiểu cách lập trình cho máy bay không người lái bay. Sau khi thiết lập ban đầu, việc tích hợp điều khiển bằng giọng nói sẽ không quá khó khăn. Điều đầu tiên chúng ta có thể thử hiểu nó là thực hiện một chương trình cất cánh và hạ cánh đơn giản. Sau khi thiết lập Raspberry Pi, chúng ta có thể SSH vào nó một lần nữa. Bạn có thể xem lại danh sách bài hát hoặc làm theo hướng dẫn của tôi.

1. Đầu tiên, hãy tải xuống Mã nguồn ArduPilot trong một thư mục trên Raspberry Pi

mkdir src

Sau đó, lấy các tệp từ GitHub bằng git clone

git clone -b Copter-3.6.11

Bây giờ, hãy điều hướng đến / src / ardupilot

cd src

cd ardupilot

Bây giờ, hãy khởi tạo các tệp nguồn

git submodule update --init --recursive

2. Tiếp theo, chúng ta phải biên dịch phần sụn trên Raspberry Pi

Đảm bảo điều hướng đến / src / ardupilot / with cd trước khi thực hiện các bước tiếp theo

Sau đó, để cấu hình cụ thể cho Navio bằng cách sử dụng

./waf config --board = Navio2

Sau đó, bạn có thể biên dịch với

./waf --targets bin / arducopter

3. Bây giờ chúng ta có thể cài đặt mã nguồn vào Navio

Đầu tiên, hãy điều hướng đến đúng thư mục.

cd / etc / systemd / system

Sau đó chỉnh sửa tệp

sudo vi arducopter.service

Nơi nó cho biết ExecStart, hãy chèn phần sau thay vì những gì đã có ở đó

ExecStart = / bin / sh -c "/ home / pi / src / arducopter / build / Navio2 / bin / arducopter $ {ARDUPILOT_OPTS}"

Bây giờ, để đưa mã nguồn ardupilot vào hoạt động, chúng ta có thể sử dụng

sudo systemctl daemon-tải lại

Sau đó, chúng tôi có thể khởi động lại với

sudo systemctl khởi động lại arducopter

Với bước cuối cùng, chúng tôi cuối cùng đã hoàn thành việc thiết lập ArduPilot trên máy bay không người lái của mình

4. Cài đặt DroneKit

DroneKit là phần mềm mà chúng tôi sẽ sử dụng để lập trình máy bay không người lái bay. Để hiểu một số mã, bạn có thể tìm tài liệu tại đây. Đầu tiên, chúng ta phải cài đặt gói trên máy bay không người lái của mình trước khi viết kịch bản.

Chúng tôi có thể cài đặt gói python với

pip cài đặt dronekit == 2.9.1

Đây có thể hoặc có thể không phải là phiên bản mới nhất, nhưng nó là phiên bản tôi đã sử dụng để tôi có thể giúp khắc phục sự cố.

Để kiểm tra xem đã cài đặt chưa, chúng ta có thể thực hiện

đóng băng pip | bộ máy bay không người lái grep

Bây giờ chúng tôi cuối cùng đã sẵn sàng để tạo tập lệnh python đầu tiên của mình

5. takeoff_and_land.py

CẢNH BÁO! Tôi khuyên bạn nên thiết lập một hiểu biết cơ bản về python, vì vậy bạn có thể học và hiểu mã. Nếu bạn muốn tự viết chương trình hãy theo dõi video này.

## Đầu tiên, đừng tạo một thư mục để lưu trữ mã này

cd dk ## Nếu bạn muốn tự làm thì hãy sử dụng vi takeoff_and_land.py ## để tạo chương trình

Nếu không, bạn có thể xem hoặc sử dụng tệp đính kèm và sử dụng giao thức truyền tệp. Chúng ta có thể thử chương trình này sau đó. Đầu tiên để làm rõ rằng đó là một tệp python, chúng tôi phải sử dụng

chmod + x takeoff_and_land.py

Sau đó, hãy thử sử dụng mã sau để chạy

python takeoff_and_land.py --connect 127.0.0.1:14550

Lần đầu tiên nó cũng không hiệu quả với tôi. Nếu có thời gian chờ liên kết, thì đừng lo lắng, bạn có thể làm gì đó. Mở một lời nhắc khác và ssh. Bạn có thể thử cài đặt một thứ gọi là mavproxy và thử chạy nó. Sau đó, bạn có thể chạy đồng thời cả hai. Điều này sẽ giúp kết nối máy bay không người lái. Một khi điều đó được thực hiện, tôi có một thách thức cho bạn. Cố gắng tìm hiểu chương trình kia (set_velocity_body.py) làm gì và làm thế nào để làm cho nó hoạt động. Nếu bạn làm, công việc tốt.

6. Tiến lên!

Giờ đây, chúng ta có thể sử dụng kiến thức này để điều khiển máy bay không người lái của mình bằng giọng nói. Điều khiển máy bay không người lái Alexa sử dụng rất nhiều tính năng này và hơn thế nữa. Chúc may mắn và trở đi!

Bước 5: Sử dụng Amazon Alexa và Amazon Web Services để tích hợp Điều khiển bằng giọng nói

Sử dụng Amazon Alexa và Amazon Web Services để tích hợp điều khiển bằng giọng nói
Sử dụng Amazon Alexa và Amazon Web Services để tích hợp điều khiển bằng giọng nói
Sử dụng Amazon Alexa và Amazon Web Services để tích hợp điều khiển bằng giọng nói
Sử dụng Amazon Alexa và Amazon Web Services để tích hợp điều khiển bằng giọng nói

Bước này là một trong những bước ít được ghi lại. Điều này có nghĩa là nó sẽ là khó khăn nhất để khắc phục sự cố. Tôi chỉ mất khoảng một tháng, có thể hơn. Điều quan trọng nhất ở đây là phải kiên nhẫn. Tính năng này, nếu được triển khai trong cuộc sống thực, có thể thay đổi cuộc sống. Bạn chỉ có thể yêu cầu Alexa nhận hàng tạp hóa cho bạn thay vì tự mình đi. Tưởng tượng rằng! Vì vậy, không cần thêm ado, chúng ta hãy đi vào nó!

1. Đăng ký Raspberry Pi làm Điều trên AWS IoT

Để sử dụng IoT (Internet of Things), chúng ta cần một thứ. Vì vậy, chúng tôi phải đăng nhập vào Bảng điều khiển AWS để sử dụng AWS IoT trước. Sau đó, chuyển đến IoT Core. Khi đó, bạn nên nhấp vào Quản lý và sau đó tạo một thứ. Sau khi thêm tên, để kết nối, chúng ta cần một chứng chỉ. Tôi khuyên bạn nên nhấp vào chứng nhận Một cú nhấp chuột. Sau đó, sau khi nhìn thấy màn hình chứng chỉ, hãy đảm bảo tải xuống từng khóa bao gồm cả CA gốc. Sau đó, bạn có thể hoàn thành việc tạo ra thứ đó. Tiếp theo chúng ta phải tạo một chính sách. Quay trở lại IoT Core. Sau đó nhấp vào chính sách an toàn và nhấp chuột. Sau đó nhấn tạo chính sách. Sau đó, bạn có thể tạo tên và thêm tài nguyên. Trong hành động, gõ iot * và gõ * dưới tài nguyên và nhấn cho phép có hiệu lực. Sau đó quay lại thứ của bạn và đi tới chứng chỉ của bạn. Khi ở đây, hãy nhấp vào chính sách. Sau đó, bạn có thể đính kèm chính sách của mình cho điều đó và tất cả đã được thiết lập!

2. Thiết lập mã trên Raspberry Pi và tương tác với IoT

Đối với phần này, bạn sẽ cần một SFTP Client (tôi đã sử dụng WinSCP) để truyền tệp. Khi kết nối với Raspberry Pi của chúng tôi, chúng tôi sẽ cần có các khóa chứng chỉ trong tay. Bạn phải chuyển các tệp khóa sang Raspberry Pi. Bạn cũng nên cài đặt AWSIoTPythonSDK trên Raspberry Pi. Sau đó, truy cập vào thư mục dk trên Raspberry Pi. Bạn sử dụng tệp Alexa Drone Control mà tôi đã cung cấp để giao tiếp với IoT. Để sử dụng tệp này, tôi đã sử dụng Tập lệnh Shell để khởi động. Tôi sẽ hiển thị mã bên dưới vì tôi không thể tải tệp lên vì một số lý do. Nếu chương trình không nhận thông báo từ AWS IoT trong khi thử nghiệm, đừng lo lắng! Đây có thể là lỗi của tôi vì Tệp điều khiển máy bay không người lái Alexa có thể không phù hợp với Thứ của bạn. Vì vậy, để khắc phục, hãy quay lại AWS IoT và nhấn tìm hiểu trên bảng điều khiển bên trái. Làm theo hướng dẫn và bạn có thể phải khởi động lại. Xin lỗi vì điều đó. Khi IoT của bạn bắt đầu hoạt động với chương trình trên RasPi, bạn có thể tích hợp mã dronekit từ tệp Alexa Drone Control mà tôi đã cung cấp. Sau đó, sử dụng Shell Script mà tôi đã cung cấp cùng với các chứng chỉ của bạn và Điểm cuối API Rest từ IoT.

# dừng tập lệnh trên tập lệnh lỗi -e # Kiểm tra xem tệp CA gốc có tồn tại hay không, tải xuống nếu không nếu [! -f./root-CA.crt]; then printf "\ nTải xuống chứng chỉ AWS IoT Root CA từ AWS… / n" curl https://www.amazontrust.com/repository/AmazonRoot…>> root-CA.crt fi # cài đặt AWS Device SDK cho Python nếu chưa được cài đặt nếu như [! -d./aws-iot-device-sdk-python]; sau đó printf "\ nCài đặt AWS SDK… / n" git clone https://www.amazontrust.com/repository/AmazonRoot…> pushd aws-iot-device-sdk-python python setup.py install popd fi

# chạy ứng dụng mẫu pub / sub sử dụng các chứng chỉ được tải xuống trong gói

printf "\ nRunning pub / sub sample application… / n" python dk / AlexaDroneControl.py --connect 127.0.0.1:14550 -e "Your IoT ARN" -r root-CA.crt -c PiGroundStation01.cert.pem -k PiGroundStation01.private.key

Điều này sẽ không hiệu quả với tất cả các bạn vì tên khác nhau. Thay vì các khóa mà tôi đã sử dụng, hãy thay thế bằng tên khóa của bạn khi bạn chuyển tệp. Đảm bảo thoát dk trước khi chuyển tệp! Đó là tất cả những gì bạn phải làm bây giờ.

3. Xây dựng Kỹ năng Alexa của bạn

Bước này có vẻ khó hơn rất nhiều so với thực tế. Đầu tiên, chúng ta phải đăng nhập vào Bảng điều khiển dành cho nhà phát triển Alexa. Sau đó, chỉ cần nhấn tạo kỹ năng. Khi nó yêu cầu chọn một mô hình cho kỹ năng của bạn, chỉ cần nhấn tùy chỉnh. Khi nó yêu cầu chọn một phương pháp, hãy nhấn cung cấp của riêng bạn. Bạn có thể đặt tên cho nó bất cứ điều gì bạn muốn. Không cần mẫu, vì vậy hãy chọn bắt đầu từ đầu. Tiếp theo, sau khi tạo kỹ năng, bạn sẽ đến màn hình Trình tạo kỹ năng với danh sách kiểm tra ở bên phải. Từ đây, chúng ta có thể bắt đầu xây dựng kỹ năng của mình. Đầu tiên trong danh sách kiểm tra là tên gọi. Đây là những gì bạn sẽ nói với Alexa để sử dụng kỹ năng của bạn. Đối với tôi, tôi chỉ đặt tên gọi của mình là máy bay không người lái. Bây giờ chúng ta có thể đi đến ý định, lời nói và vị trí của mình. Tại đây, bạn có thể thực hiện các lệnh cho máy bay không người lái như đi lên 1 mét hoặc đi sang phải hoặc đi xuống. Của tôi chỉ thực sự hoạt động với một mét cho bây giờ. Bạn có thể nhấp vào Trình chỉnh sửa JSON ở cuối bảng điều khiển bên trái. Sau đó, bạn có thể dán mã sau vào đó.

Sau khi dán mã vào Trình chỉnh sửa JSON, bạn có thể nhấp vào bước thứ ba của danh sách kiểm tra và nó sẽ xây dựng mô hình tương tác cho bạn. Với bước này, bạn sẽ hoàn thành ngay bây giờ. Bạn có thể để trống vị trí điểm cuối ngay bây giờ!

Bước 4: Xây dựng hàm Lambda của bạn

Bây giờ, bước này là bước mà bạn sẽ phải tự tìm ra. Tôi sẽ cho bạn biết cách kết nối nó với Kỹ năng Alexa, nhưng bạn sẽ phải tự mình viết mã. Vì vậy, trước tiên, hãy truy cập bảng điều khiển quản lý AWS. Sau đó, đến Lambda. Sau đó, bạn có thể tạo một hàm đặt tên cho nó bất cứ thứ gì bạn muốn. Đảm bảo tạo nó từ đầu và tạo thời gian chạy bằng bất kỳ ngôn ngữ lập trình nào bạn muốn. Tôi đã sử dụng Node.js. Để thêm Kỹ năng Alexa, hãy thêm trình kích hoạt và chọn Bộ kỹ năng Alexa (HỎI). Sao chép Lambda ARN của bạn và quay lại Kỹ năng Alexa. Bây giờ, hãy chuyển đến điểm cuối. Bạn có thể dán ARN của mình, lưu và tạo một mô hình mới. Sau đó, lấy ID kỹ năng Alexa và dán nó vào phần kích hoạt nơi nó yêu cầu bạn trên Lambda. Tiếp theo, cuộn xuống trên Lambda và tìm các cài đặt cơ bản và đặt thời gian chờ là 10 giây. Bây giờ, tùy thuộc vào bạn để tìm ra mã. Để biết gợi ý, bạn có thể vào các trang web bên dưới.

github.com/aws/aws-iot-device-sdk-js

www.hackster.io/veggiebenz/voice-controlle…

và bạn có thể sử dụng tệp tôi đính kèm, nhưng nó không đầy đủ và sẽ không hoạt động.

/ ** * Điều khiển quadcopter APM / Pixhawk bằng giọng nói của bạn, sử dụng Amazon Alexa, Lambda, MQTT 2lemetry.* / var awsIot = request ('aws-iot-device-sdk'); var config = request ("./ config"); var deviceName = "EchoDroneControl"; // thiết bị này thực sự là bộ điều khiển var mqtt_config = {"keyPath": config.privateKey, "certPath": config.certificate, "caPath": config.rootCA, "host": config.host, "port": 8883, "clientId": "Lambda-" + deviceName, // + "-Lambda-" + (new Date (). getTime ()), "region": "us-west-1", "debug": true}; var ctx = null; var client = null; // Định tuyến yêu cầu đến dựa trên kiểu (LaunchRequest, IntentRequest, v.v.) Phần thân JSON của yêu cầu được cung cấp trong tham số sự kiện. export.handler = function (event, context) {try {console.log ("event.session.application.applicationId =" + event.session.application.applicationId); ctx = bối cảnh; if (event.session.application.applicationId! == app_id) {ctx.fail ("ID Ứng dụng Không hợp lệ"); } client = awsIot.device (mqtt_config); client.on ("kết nối", function () {console.log ("Đã kết nối với AWS IoT"); // callback ();});

if (event.session.new) {

onSessionStarted ({requestId: event.request.requestId}, event.session); } if (event.request.type === "LaunchRequest") {onLaunch (event.request, event.session); } else if (event.request.type === "IntentRequest") {onIntent (event.request, event.session); } else if (event.request.type === "SessionEndedRequest") {onSessionEnded (event.request, event.session); ctx.succeed (); }} catch (e) {console.log ("NGOẠI LỆ trong trình xử lý:" + e); ctx.fail ("Ngoại lệ:" + e); }}; / ** * Được gọi khi phiên bắt đầu. * / function onSessionStarted (sessionStartedRequest, session) {console.log ("onSessionStarted requestId =" + sessionStartedRequest.requestId + ", sessionId =" + session.sessionId); }

/**

* Được gọi khi người dùng khởi chạy kỹ năng mà không xác định rõ họ muốn gì. * / function onLaunch (khởi chạyRequest, session, callback) {console.log ("onLaunch requestId =" + launcRequest.requestId + ", sessionId =" + session.sessionId); // Gửi đến buổi ra mắt kỹ năng của bạn. getWelcomeResponse (gọi lại); } / ** * Được gọi khi người dùng chỉ định ý định cho kỹ năng này. * / function onIntent (aimRequest, session) {//, callback) {console.log ("onIntent requestId =" + ÝRequest.requestId + ", sessionId =" + session.sessionId); var Ý định = IntentRequest.intent, Ý địnhName = Ý địnhRequest.intent.name; console.log ("YÊU CẦU thành string =" + JSON.stringify (Ý địnhRequest)); var callback = null; // Gửi tới các trình xử lý ý định của kỹ năng của bạn if ("GoIntent" === Ý địnhName) {doGoIntent (ý định, phiên); } else if ("CommandIntent" === PurposeName) {doCommandIntent (ý định, phiên); } else if ("TurnIntent" === PurposeName) {doTurnIntent (ý định, phiên); } else if ("HelpIntent" === Ý địnhName) {getWelcomeResponse (); } else {ném "Ý định không hợp lệ"; }} / ** * Được gọi khi người dùng kết thúc phiên. * Không được gọi khi kỹ năng trả về shouldEndSession = true. * / function onSessionEnded (sessionEndedRequest, session) {console.log ("onSessionEnded requestId =" + sessionEndedRequest.requestId + ", sessionId =" + session.sessionId); // Thêm logic dọn dẹp tại đây} // --------------- Các hàm điều khiển hành vi của kỹ năng -------------------- --- function getWelcomeResponse () {// Nếu chúng ta muốn khởi tạo phiên để có một số thuộc tính, chúng ta có thể thêm chúng vào đây. var sessionAttributes = {}; var cardTitle = "Chào mừng"; var speechOutput = "Chào mừng bạn đến với DRONE CONTROL."; // VIỆC CẦN LÀM: máy bay không người lái đang trực tuyến hay ngoại tuyến? Nếu trực tuyến, nó có được ARMED không? var repromptText = "Drone đã sẵn sàng cho lệnh."; var nênEndSession = false; ctx.succeed (buildResponse (sessionAttributes, buildSpeechletResponse (cardTitle, speechOutput, repromptText, shouldEndSession))); } / ** * xử lý ý định GO. * / function doGoIntent (ý định, phiên, gọi lại) {// var cardTitle = "Drone GO…"; var repromptText = ""; var sessionAttributes = {}; var nênEndSession = false; var speechOutput = ""; var hướng = ý định.slots. Direction.value; var khoảng cách = ý định.slots. Distance.value; var unit = Ý định.slots. Unit.value; var validDirections = ["forward", "forwards", "back", "back", "right", "left", "up", "down", "thẳng", "phía trước", "thẳng về phía trước"]; var validUnits = ["foot", "feet", "mét", "mét", "yard", "yard"]; repromptText = "Cho tôi biết phải đi bao xa và theo hướng nào."; var fail = false; // xác thực đầu vào if (! (parseInt (distance)> = 1)) {speechOutput = "Tôi không hiểu được quãng đường bạn muốn tôi đi."; fail = đúng; ctx.succeed (buildResponse (sessionAttributes, buildSpeechletResponse (cardTitle, speechOutput, repromptText, shouldEndSession))); } if (validDirections.indexOf (direction) == -1) {speechOutput = "Tôi không hiểu hướng bạn muốn tôi đi."; fail = đúng; ctx.succeed (buildResponse (sessionAttributes, buildSpeechletResponse (cardTitle, speechOutput, repromptText, shouldEndSession))); } if (validUnits.indexOf (unit) == -1) {speechOutput = "Tôi không hiểu đơn vị bạn muốn tôi đi."; fail = đúng; ctx.succeed (buildResponse (sessionAttributes, buildSpeechletResponse (cardTitle, speechOutput, repromptText, shouldEndSession))); } if (! fail) {var cardTitle = "Drone going" + hướng + "" + khoảng cách + "" + đơn vị; speechOutput = "Đi" + hướng + "" + khoảng cách + "" + đơn vị; mqttPublish (ý định, sessionAttributes, cardTitle, speechOutput, repromptText, shouldEndSession); }}

hàm doCommandIntent (ý định, phiên, gọi lại) {

// var cardTitle = "Drone COMMAND…"; var repromptText = null; var sessionAttributes = {}; var nênEndSession = false; var speechOutput = ""; repromptText = "Cho tôi biết lệnh cho máy bay không người lái là gì."; var task = Ý định.slots. Task.value; var validTasks = ["khởi chạy", "đất", "r. t. l.", "giữ", "ở lại", "dừng", "quay lại để khởi chạy", "hủy bỏ"]; if (validTasks.indexOf (task) == -1) {speechOutput = "Tôi không hiểu lệnh."; ctx.succeed (buildResponse (sessionAttributes, buildSpeechletResponse (cardTitle, speechOutput, repromptText, shouldEndSession))); } else {var cardTitle = "Đang thực hiện lệnh Drone" + tác vụ; speechOutput = "Đang thực thi lệnh" + tác vụ; mqttPublish (ý định, sessionAttributes, cardTitle, speechOutput, repromptText, shouldEndSession); }}

function doTurnIntent (ý định, phiên, gọi lại) {

// var cardTitle = "Quay máy bay …"; var repromptText = null; var sessionAttributes = {}; var nênEndSession = false; var speechOutput = ""; repromptText = "Cho tôi biết bạn muốn điều khiển máy bay không người lái như thế nào."; var hướng = ý định.slots. Direction.value; var validDirections = ["right", "left", "around"]; if (validDirections.indexOf (direction) == -1) {speechOutput = "Tôi không hiểu hướng rẽ."; ctx.succeed (buildResponse (sessionAttributes, buildSpeechletResponse (cardTitle, speechOutput, repromptText, shouldEndSession))); } else {var cardTitle = "Quay đầu máy bay" + hướng; speechOutput = "Quay" + hướng; mqttPublish (ý định, sessionAttributes, cardTitle, speechOutput, repromptText, shouldEndSession); }}

hàm mqttPublish (ý định, sessionAttributes, cardTitle, speechOutput, repromptText, shouldEndSession)

{var strIntent = JSON.stringify (ý định); console.log ("mqttPublish: INTENT text =" + strIntent); // client.publish ("ikw1zr46p50f81z / drone / echo", strIntent, false); client.publish (config.topic, strIntent, false); client.end (); client.on ("close", (function () {console.log ("MQTT CLIENT CLOSE - nghĩ rằng nó đã xong, thành công."); ctx.succeed (buildResponse (sessionAttributes, buildSpeechletResponse (cardTitle, speechOutput, repromptText, shouldEndSession)));})); client.on ("error", (function (lỗi, được cấp) {console.log ("MQTT CLIENT ERROR !!" + err);})); }

// --------------- Những người trợ giúp xây dựng tất cả các câu trả lời -----------------------

function buildSpeechletResponse (title, output, repromptText, shouldEndSession) {return {outputSpeech: {type: "PlainText", text: output}, card: {type: "Simple", title: title, content: output}, reprompt: {outputSpeech: {type: "PlainText", text: repromptText}}, shouldEndSession: shouldEndSession}} function buildResponse (sessionAttributes, speechletResponse) {return {version: "1.0", sessionAttributes: sessionAttributes, response: speechletResponse}}

Đề xuất: