Mục lục:
- Bước 1: Nguồn cung cấp và kết nối
- Bước 2: Thiết lập PI
- Bước 3: Tải xuống và biên dịch mã
- Bước 4: Sử dụng nó
- Bước 5: Cách hoạt động của mã
- Bước 6: Tùy chỉnh và tên thân thiện
Video: Bộ điều khiển chuyển tiếp Alexa Raspberry Pi: 6 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:33
Tôi đã tạo có thể hướng dẫn này để chia sẻ kinh nghiệm của mình với việc tích hợp các thiết bị IOT với Alexa của Amazon.
Dự án này cho phép một bảng chuyển tiếp kết nối với pi raspberry được điều khiển từ bộ điều khiển smarthome.
Nó đã được thử nghiệm với Alexa nhưng cũng có vẻ hoạt động tốt với Samsung Smartthings và các giao diện điều khiển khác vì nó mô phỏng một loạt các ổ cắm Belkin Wemo.
Có RẤT NHIỀU ví dụ dựa trên mã FAUXMO tuyệt vời nhưng điều này có nghĩa là học python và không cung cấp cho tôi điều khiển chi tiết mà tôi cần cho thiết bị của mình và vì vậy tôi quyết định tạo lại một từ đầu bằng cách sử dụng C làm ngôn ngữ mã hóa cơ sở của mình.
Tôi cũng không muốn phải đi sâu vào mã lambda trên Amazon.com vì vậy tôi đã giữ nó thực sự đơn giản.
Tôi đã đăng nguồn và ghi chú trên Github:
github.com/Switchdoctorstu/StuPiMo
Hướng dẫn thực sự là để trình bày cách làm cho nó hoạt động và xuất bản các ghi chú của tôi trong trường hợp nó giúp ích cho người khác.
Bước 1: Nguồn cung cấp và kết nối
Những thứ bạn cần đều có sẵn trên Amazon / EBay:
- Raspberry PI *
- Nguồn cung cấp Pi
- Đầu nối Dupont
- Bảng tiếp sức
- Dây dẫn micro USB cũ (cắt một nửa để cấp nguồn cho thẻ tiếp điện)
Bất kỳ raspberry Pi nào cũng sẽ hoạt động, tôi đã thử nghiệm điều này trên Model B và Zero.
* Nếu sử dụng Pi Zero, bạn sẽ cần Bộ điều hợp mạng OTG (trừ khi bạn mua phiên bản 'W' với buit trong WiFi)
Bạn sẽ cần kết nối Pi với mạng.
Sử dụng các kết nối dupont để kết nối thẻ chuyển tiếp với Pi.
Lưu ý rằng thẻ tiếp điện nên sử dụng nguồn ngoài (tháo liên kết và kết nối với 5v bên ngoài). Nó sẽ hoạt động được cấp nguồn từ PI nhưng nó không được khuyên dùng để chạy sản xuất.
Đối với thiết lập của tôi, tôi đã sử dụng HUB USB được cấp nguồn bên ngoài. Điều này cung cấp năng lượng cho PI.
Tôi cũng cắt đầu cáp USB cũ và cấp nguồn cho các rơ le từ kết nối USB thứ hai đến trung tâm để giữ an toàn. Phiên bản 'sản xuất' của tôi sử dụng nguồn điện chuyển đổi chế độ 5V 5A nhỏ. Một lần nữa, tôi chỉ cần cắt một nửa dây dẫn USB để cấp nguồn cho Pi qua Micro-USB và cắt bớt hai trong số các đầu nối kém để cấp nguồn cho bảng tiếp điện. Có 4 dây trong dây dẫn USB, hầu hết sử dụng màu đỏ / đen để biểu thị nguồn cung cấp 5v nhưng nếu nghi ngờ, hãy sử dụng đồng hồ đo để đảm bảo bạn nhận đúng dây.
Các chân tiếp điện trên bo mạch được kết nối với các chân GPIO có liên quan trên tiêu đề PI.
Mã cho phép bạn chọn các chân GPIO nhưng mặc định tôi đã sử dụng là:
- Rơ le Pin 1 - Nối đất
- Chân tiếp sóng 2 - Rơ le 1 - GPIO 0
- Chân tiếp sóng 3 - Rơ le 2 - GPIO 1
- Chân tiếp điện 4 - Rơ le 3 - GPIO 2
- Chân tiếp điện 5 - Rơ le 4 - GPIO 3
- Chân tiếp điện 6 - Rơ le 5 - GPIO 4
- Chân tiếp điện 7 - Rơ le 6 - GPIO 5
- Chân tiếp điện 8 - Rơ le 7 - GPIO 6
- Chân tiếp điện 9 - Rơ le 8 - GPIO 7
- Rơ le Pin 10 - + 5v cho logic
Bước 2: Thiết lập PI
Tôi sẽ không tạo lại một hướng dẫn về cách thiết lập và chạy PI của bạn và kết nối với mạng.
Có rất nhiều hướng dẫn bao gồm một hướng dẫn tuyệt vời tại:
www.instructables.com/id/Ultim-Raspberr…
Bạn sẽ cần phải đưa mình đến điểm mà PI hiển thị trên mạng và bạn có thể kết nối với nó.
Nó không quan trọng cho dù điều này là qua Ethernet hay không dây.
Dự án này có thể được hoàn thành chỉ với Raspberry PI bằng Geany Programmers Editor nhưng cá nhân tôi thấy việc chuẩn bị mã của mình trên PC bằng Visual Studio hoặc Eclipse (hoặc thậm chí Notepad ++) dễ dàng hơn và sau đó tải nó lên PI để gỡ lỗi bằng cách sử dụng Kết nối VNC. Một lần nữa, tôi sẽ không trình bày điều đó ở đây vì có rất nhiều hướng dẫn tuyệt vời về cách thiết lập VNC trên RPi.
Tất cả những gì bạn cần là đến điểm mà bạn có thể tải lên và biên dịch mã.
Một lưu ý quan trọng là vì trình xử lý UPNP yêu cầu phát đa hướng UDP, các giao diện được sử dụng phải được đặt ở chế độ 'Promiscuous'.
Điều này có thể được thực hiện trên dòng lệnh:
pi @ raspberrypi: ~ $ ifconfig eth0 khuyến mãi
và / hoặc
pi @ raspberrypi: ~ $ ifconfig wlan0 khuyến mãi
Điều này cần được thực hiện vĩnh viễn vì vậy tôi đã chỉnh sửa /etc/rc.local
sudo nano / etc / rc.local
để bao gồm dòng:
sudo ifconfig eth0 promisc
sau tập hợp # dòng biểu ngữ đầu tiên để đảm bảo rằng các giao diện đã được thiết lập khi khởi động.
Bước 3: Tải xuống và biên dịch mã
Bản thân mã nằm trong kho lưu trữ Github của tôi;
github.com/Switchdoctorstu/StuPiMo/blob/ma…
trong khi có những cách 'chính xác' để sao chép kho lưu trữ. Tôi thấy dễ dàng hơn chỉ cần mở trình chỉnh sửa Geany trên máy tính để bàn Pi và dán mã vào.
Tương tự, nếu bạn đang sử dụng dòng lệnh;
Tạo một thư mục mới
mkdir Stu
Thay đổi nó
cd Stu
Tạo một tệp văn bản mới
nano StuPiMo.c
Sao chép mã từ Github thô và dán vào tệp mới
Lưu và thoát.
Khi bạn có tệp dưới dạng đối tượng mã nguồn C, bạn có thể biên dịch nó bằng cách sử dụng
gcc -o StuPiMo StuPiMo.c -l wiringPi
lưu ý rằng "-l wiringPi" là cần thiết để đảm bảo rằng trình khiếu nại liên kết trong thư viện wiringPi bắt buộc.
Sau đó, mã có thể được chạy bằng cách sử dụng
./StuPiMo
Một lần nữa, nếu bạn muốn điều này chạy khi khởi động, hãy sử dụng lệnh:
sudo nano /etc/rc.local
để thêm dòng sau
sudo / home / pi / Stu / StuPiMo &
vào tệp /etc/rc.local của bạn. Đừng quên lưu tệp của bạn khi thoát.
Lưu ý rằng '&' là điều cần thiết để đảm bảo rằng một quy trình phụ được tạo ra để đảm bảo rằng tập lệnh không bị chặn tại thời điểm này.
Bước 4: Sử dụng nó
Khi bạn đã chạy mã, hãy yêu cầu alexa 'Khám phá thiết bị' và cô ấy sẽ tìm thấy tất cả 8 thiết bị Wemo ảo.
Sau đó, nó chỉ là một trường hợp nói: "Alexa bật ổ cắm 1" hoặc "Alexa tắt ổ cắm 6", v.v. và rơle liên quan sẽ được thay đổi.
Bước 5: Cách hoạt động của mã
Mã hoạt động bằng cách mô phỏng một loạt thiết bị ổ cắm Belkin Wemo.
Để đạt được điều này, nó phải xử lý 2 chức năng chính
- trình xử lý chương trình phát sóng khám phá UPNP
- một 'trình xử lý thiết bị' (một trình xử lý trên mỗi thiết bị ảo) để quản lý các lệnh được gửi đến thiết bị và các phản hồi cần thiết.
Một tính năng 'tiền thưởng' là nó cũng xuất bản một trang web để cho phép thiết bị.
Trình xử lý UPNP
Trình xử lý UPNP mở một ổ cắm để giám sát các gói giao thức SSDP trên cổng 239.255.255.250 1900.
Nó phản hồi bất kỳ truy vấn 'M-SEARCH' nào đến với một gói phản hồi khám phá thông báo các trình giả lập wemo riêng lẻ cho bất kỳ ai hỏi.
Trình xử lý thiết bị
Các trình xử lý thiết bị (một trên mỗi thiết bị ảo) giám sát một loạt các cổng IP và phản hồi các yêu cầu.
Nó sẽ cung cấp phản hồi setup.xml khi được hỏi
Nó sẽ cung cấp tệp mô tả sự kiện khi được hỏi
Nó sẽ phản hồi yêu cầu GETBINARYSTATE
Nó sẽ xử lý và phản hồi yêu cầu SETBINARYSTATE
Máy chủ web
Máy chủ web là một quy trình đơn giản tạo một biểu mẫu HTML có chứa một nút cho mỗi lần chuyển tiếp.
Nó sẽ phản hồi các nút được nhấn và chuyển đổi trạng thái của rơle tương ứng.
Bước 6: Tùy chỉnh và tên thân thiện
Tôi đã không phát điên với mã để giữ cho nó đơn giản và có thể chỉnh sửa.
Những điều cơ bản có thể được tùy chỉnh bằng các định nghĩa ở đầu mã:
// định nghĩa chung # xác định WEBPORT 5353 // cổng để chạy máy chủ web trên
#define NUMDEVICES 8 // Số lượng thiết bị ảo cần tạo
#define PORTBASE 43450 // cổng IP cơ sở để tăng lên từ
WEBPORT là số cổng mà máy chủ web tích hợp sẵn chạy trên đó. Điều này có thể được thực hiện ở mức 80 để làm cho mọi thứ dễ dàng nhưng tôi thấy rằng nó xung đột với tomcat hoặc các dịch vụ khác đang chạy cục bộ.
NUMDEVICES xác định số lượng trình giả lập WEMO riêng lẻ sẽ khởi chạy. Nếu bạn có thẻ chuyển tiếp 2 cổng thì hãy đặt giá trị này thành 2, 4 cổng = 4, v.v.
Tên thân thiện cho các thiết bị được đặt theo quy trình gọi là setup_names:
int setup_names (char thân thiện [NUMDEVICES] [NAMELEN]) {int i = 0;
// sử dụng vòng lặp này
for (i = 0; i <NUMDEVICES; i ++) {
sprintf (thân thiện , "Socket% d", i + 1);
}
// hoặc bảng thủ công sau để điền tên thiết bị
/*
strcpy (thân thiện [0], "TV phòng ngủ");
strcpy (thân thiện [1], "Chăn điện");
strcpy (thân thiện [2], "Đèn ngủ");
strcpy (thân thiện [3], "Socket 4");
strcpy (thân thiện [4], "Socket 5");
strcpy (thân thiện [5], "Socket 6");
strcpy (thân thiện [6], "Socket 7");
strcpy (thân thiện [7], "Socket 8");
*/
trả lại tôi;
}
Tôi đã sử dụng một vòng lặp để gọi từng thiết bị là 'Socket n' nhưng bạn có thể xóa vòng lặp này và thêm tên thân thiện của riêng mình thay vào đó (chỉ cần đảm bảo rằng bạn thêm cùng một số với NUMDEVICES) nếu bạn xóa / * * /
Hãy nhớ biên dịch lại mã nếu bạn thực hiện bất kỳ thay đổi nào.
Đề xuất:
Công tắc chuyển tiếp IOT điều khiển bằng giọng nói dựa trên Arduino (Google Home & Alexa được hỗ trợ): 11 bước
Công tắc chuyển tiếp IOT điều khiển bằng giọng nói dựa trên Arduino (Được Google Home & Alexa hỗ trợ): Dự án này mô tả cách tạo công tắc chuyển tiếp IOT, điều khiển bằng giọng nói, dựa trên Arduino. Đây là một bộ chuyển tiếp mà bạn có thể bật và tắt từ xa bằng ứng dụng dành cho iOS và Android, cũng như kết nối nó với IFTTT và điều khiển nó bằng giọng nói của bạn bằng Goog
Ô tô được điều khiển từ xa - Được điều khiển bằng Bộ điều khiển Xbox 360 không dây: 5 bước
Ô tô được điều khiển từ xa - Được điều khiển bằng Bộ điều khiển Xbox 360 không dây: Đây là các hướng dẫn để tạo ô tô được điều khiển từ xa của riêng bạn, được điều khiển bằng bộ điều khiển Xbox 360 không dây
ESP8266 RGB LED STRIP Điều khiển WIFI - NODEMCU làm điều khiển từ xa hồng ngoại cho dải đèn Led được điều khiển qua Wi-Fi - Điều khiển điện thoại thông minh RGB LED STRIP: 4 bước
ESP8266 RGB LED STRIP Điều khiển WIFI | NODEMCU làm điều khiển từ xa hồng ngoại cho dải đèn Led được điều khiển qua Wi-Fi | Điều khiển bằng điện thoại thông minh RGB LED STRIP: Xin chào các bạn trong hướng dẫn này, chúng ta sẽ học cách sử dụng gật đầu hoặc esp8266 làm điều khiển từ xa IR để điều khiển dải LED RGB và Nodemcu sẽ được điều khiển bằng điện thoại thông minh qua wifi. Vì vậy, về cơ bản bạn có thể điều khiển DÂY CHUYỀN LED RGB bằng điện thoại thông minh của mình
Tự làm bộ điều khiển bay điều khiển đa hệ điều khiển Arduino: 7 bước (có hình ảnh)
Tự làm bộ điều khiển máy bay đa năng điều khiển Arduino: Dự án này là tạo ra một bảng logic máy bay không người lái đa năng linh hoạt nhưng tùy chỉnh dựa trên Arduino và Multiwii
Điều khiển các thiết bị điện của bạn bằng Điều khiển từ xa Tv (Điều khiển từ xa) với Màn hình nhiệt độ và độ ẩm: 9 bước
Điều khiển thiết bị điện của bạn bằng Điều khiển từ xa Tv (Điều khiển từ xa) Có Hiển thị nhiệt độ và độ ẩm: xin chào, tôi là Abhay và đây là blog đầu tiên của tôi về Các thiết bị điện và hôm nay tôi sẽ hướng dẫn bạn cách điều khiển các thiết bị điện bằng điều khiển từ xa bằng cách xây dựng cái này dự án đơn giản. cảm ơn atl lab đã hỗ trợ và cung cấp tài liệu