Mục lục:
- Bước 1: Thiết bị
- Bước 2: Thiết lập Raspberry Pi
- Bước 3: Pi-blaster
- Bước 4: Thiết lập mã mẫu
- Bước 5: Tạo chứng chỉ SSL tự ký
- Bước 6: Nối mạch
- Bước 7: Mã phía máy chủ
- Bước 8: Mã trang web
- Bước 9: Cuối cùng
Video: Color-pi: 9 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:35
Tài liệu hướng dẫn này cho biết cách sử dụng Raspberry Pi để điều khiển bằng giọng nói dải LED RGB, thông qua một trang web, sử dụng Giao diện API giọng nói web cho SpeechRecognition và SpeechSynthesis.
Ví dụ này cho thấy cách
- Tạo một trang web cơ bản bằng Node.js qua
- Sử dụng Giao diện API giọng nói web cho SpeechRecognition và SpeechSynthesis.
- Sử dụng khung Cylon.js để điều khiển dải LED RGB trên Raspberry Pi
- Giao tiếp qua WSS (Ổ cắm web an toàn) từ trang web tới Cylon.js để kiểm soát màu sắc cho đèn LED
Ghi chú
- Bạn sẽ cần loa hoặc tai nghe để nghe bộ tổng hợp giọng nói
- Bạn sẽ cần cấp quyền truy cập vào micrô của mình để nhận dạng giọng nói hoạt động
- Vì quyền truy cập này vào micrô của bạn nên trang web cần được chạy dưới
- Thư viện cylon-api-socketio không hỗ trợ https tại thời điểm này. Tôi có một yêu cầu kéo đang chờ được hợp nhất, nhưng cho đến lúc đó bạn cần thay thế /node_modules/cylon-api-socketio/lib/api.js bằng tệp trong kho lưu trữ này
- pi-blaster là cần thiết để thực hiện công việc này.
Bước 1: Thiết bị
- Raspberry Pi - Tôi đã sử dụng Raspberry Pi 2B mà tôi đã đặt xung quanh, nhưng bạn có thể nhận được Bộ khởi động Raspberry Pi 3 với giá khoảng 100 CAD
- RGB LED Strip Light - Tôi đã chơi với Minger LED Strip Light 32,8ft / 10M 600leds RGB SMD 5050. Điều này đi kèm với một bộ điều khiển và bộ nguồn với giá khoảng CAD 40
- Đầu nối Jack thùng - Tôi đã mua một cái từ cửa hàng điện tử gần nhà, một cái như thế này. Chỉ cần đảm bảo nếu phù hợp với nguồn điện của bạn
- Đầu nối Jumper / Dây - Tôi đã có một số cáp kết nối Nữ đến Nam và một số dây 22 Gauge Solid hook up nằm xung quanh
- Breadboard Hàn nguyên mẫu Ban PCB - một cái gì đó như thế này
- Điện trở 3 x 10kΩ
- 3 x MOSFET kênh N để điều khiển đèn LED - Tôi đã mua một số IRL3303 từ cửa hàng điện tử địa phương. Điều quan trọng là điện áp ngưỡng của cổng phải là tối đa. 3.3V để nó có thể được điều khiển bởi các chân RPi; thường được ký hiệu bằng chữ 'L' (Logic-Level) trong tên.
Bước 2: Thiết lập Raspberry Pi
Hệ điều hành
Tôi thường sử dụng bản dựng Raspbian mới nhất. Tải xuống hình ảnh và ghi nó vào thẻ SD. Nếu bạn đang sử dụng máy tính Windows, bạn có thể sử dụng Win32 Disk Imager để ghi hình ảnh vào thẻ SD.
Node.js
Cài đặt phiên bản mới nhất của Node.js. Tại thời điểm viết bài, tôi đang sử dụng 8.9.1
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install nodejs
Cài đặt Git
sudo apt-get install git
Bước 3: Pi-blaster
pi-blaster bật PWM trên các chân GPIO mà bạn yêu cầu của Raspberry Pi. Kỹ thuật được sử dụng cực kỳ hiệu quả: không sử dụng CPU và cho xung rất ổn định.
Điều chế độ rộng xung này cho phép Raspberry Pi kiểm soát độ sáng của từng kênh Đỏ, Xanh lục và Xanh lam cho dải đèn LED.
Đầu tiên, sao chép kho lưu trữ
cd / opt /
sudo git clone https://github.com/sarfata/pi-blaster.git sudo chown -R pi: pi pi-blaster
Sau đó, xây dựng và cài đặt
cd / opt / pi-blaster./autogen.sh &&./configure && make && sudo thực hiện cài đặt
Cuối cùng, định cấu hình chân nào bạn muốn sử dụng
Trong tài khoản gốc hoặc sử dụng sudo, hãy tạo và chỉnh sửa tệp
/ etc / default / pi-blaster
Thêm các dòng sau
DAEMON_OPTS = - gpio 23, 24, 25
Các chân gpio này cần khớp với các chân mà bạn đang kết nối với dải đèn LED của mình.
LƯU Ý: Có sự khác biệt giữa GPIO và số pin. Ví dụ này sử dụng như sau
LED - Xanh lam, GPIO-23, Pin - 16
LED - Đỏ, GPIO-24, Pin - 18 LED - Xanh, GPIO-25, Pin - 22
Chỉnh sửa bổ sung
Khởi động pi-blaster
dịch vụ sudo bắt đầu pi-blaster
Khởi động lại pi-blaster
khởi động lại dịch vụ sudo pi-blaster
Dừng pi-blaster
dịch vụ sudo dừng pi-blaster
Khởi động pi-blaster tự động tại thời điểm khởi động
sudo systemctl cho phép pi-blaster
Cảnh báo và các cảnh báo khác
Các ghim đang được pi-blaster sử dụng sẽ được định cấu hình làm đầu ra. Không cắm thứ gì đó trên đầu vào nếu không bạn có thể phá hủy nó! Daemon này sử dụng trình tạo PWM phần cứng của raspberry pi để có được thời gian chính xác. Điều này có thể ảnh hưởng đến đầu ra card âm thanh của bạn.
Bước 4: Thiết lập mã mẫu
Sao chép mã ví dụ
1. Thiết lập một thư mục cơ sở để cài đặt vào
cd / opt
sudo mkdir com.jonhaydock sudo chown pi: pi com.jonhaydockcd com.jonhaydock
2. Sao chép kho lưu trữ git ví dụ
git clone
hoặc
git clone [email protected]: haydockjp / color-pi.git
3. Cài đặt các phụ thuộc
cd color-pi
cài đặt npm
Quá trình này có thể mất 2-3 phút
4. Dự án này cần giao tiếp qua HTTPS và WSS. Tại thời điểm này, cylon-api-socketio không hỗ trợ kết nối SSL. Có một yêu cầu kéo mở để thêm hỗ trợ này, nhưng cho đến khi điều đó được hợp nhất, sẽ có một tệp bản vá trong kho lưu trữ này. Chạy lệnh sau sau khi cài đặt npm
git checkout node_modules / cylon-api-socketio / lib / api.js
Bước 5: Tạo chứng chỉ SSL tự ký
1. Tạo tệp khóa riêng tư
cd /opt/com.jonhaydock/colour-pi/certs
openssl genrsa -out color-pi-key.pem 2048
2. Tạo CSR (Yêu cầu ký chứng chỉ)
openssl req -new -key color-pi-key.pem -out color-pi-csr.pem
Tại thời điểm này, bạn sẽ được nhắc cung cấp một số thông tin cho yêu cầu chứng chỉ. Vì đây là chứng chỉ tự ký nên bạn điền thông tin chi tiết chính xác đến mức nào. Đây là một ví dụ
Tên quốc gia (mã 2 chữ cái) [AU]: CA
Tên tiểu bang hoặc tỉnh (tên đầy đủ) [Một số tiểu bang]: Tên địa phương British Columbia (ví dụ: thành phố) : Tên tổ chức Vancouver (ví dụ: công ty) [Internet Widgits Pty Ltd]: Tên đơn vị tổ chức Color Pi (ví dụ: phần) : Tên chung (ví dụ: máy chủ FQDN hoặc tên BẠN) : color-pi Địa chỉ Email : [email protected]
Mật khẩu thử thách :
Tên công ty tùy chọn :
Trong ví dụ này, chỉ cần nhấn quay lại để trống mật khẩu thử thách
3. Tạo chứng chỉ
openssl x509 -req -days 1095 -in color-pi-csr.pem -signkey color-pi-key.pem -out color-pi-cert.pem
4. Để tăng cường bảo mật, chúng tôi cũng sẽ tạo tệp Diffie Hellman Parameters
openssl dhparam -out dh_2048.pem 2048
Quá trình này có thể mất 15-20 phút
Bước 6: Nối mạch
Cấp nguồn cho dải đèn LED
Dải đèn LED được cung cấp năng lượng bởi 12 volt. Raspberry Pi chỉ có khả năng xuất ra 3,3v hoặc 5v và không có khả năng xuất ở bất kỳ đâu gần các ampe cần thiết để điều khiển nhiều đèn LED như vậy.
Điều quan trọng là không kết nối nguồn điện 12 volt với Raspberry Pi. Các bóng bán dẫn MOSFET kênh N được sử dụng để tách 3.3v trên các chân RPi và 12v của bộ nguồn LED.
MOSFET có ba chân Gate, Drain và Source. Nếu bạn không chắc chắn về cái nào thì google cho bảng dữ liệu của bóng bán dẫn bạn đang sử dụng, ví dụ: IRL3303
Chúng ta sẽ kết nối Chân Raspberry Pi với Cổng, dây LED với Cống và một điểm chung với Nguồn. Khi Pin lên cao, điện áp giữa Xả và Nguồn sẽ kích hoạt Cổng và sẽ nối cổng với Nguồn.
Chúng tôi cũng sẽ đặt các Điện trở 10kΩ qua Cổng và Nguồn, để khi chân RPi ở mức cao, chúng tôi có thể bảo vệ chân bằng cách giảm dòng điện đi qua nó.
Thực hiện các bước tiếp theo tự chịu rủi ro. Tôi không chịu trách nhiệm về bất cứ điều gì có thể xảy ra sai sót
Có một hình ảnh fritzing và một hình ảnh của mạch điện thực tế ở trên.
Tôi khuyên bạn nên làm điều này trong khi tắt nguồn cho RPi và dải đèn LED
Thiết lập các mạch bóng bán dẫn, một mạch cho mỗi kênh màu
- Chèn một trong các bóng bán dẫn vào breadboard như trong sơ đồ
- Chèn một trong các Điện trở 10kΩ qua Chân xả và Chân nguồn của bóng bán dẫn. Đây là ghim đầu tiên và cuối cùng
- Sử dụng một số dây để kết nối chân Nguồn (chân cuối cùng) với mặt đất trên bảng mạch
- Lặp lại các bước 1 - 3 thêm hai lần nữa, để bạn có ba bộ - mỗi bộ một màu (Đỏ, Xanh lục và Xanh lam)
Kết nối các chân RPi với bảng
- Kết nối Chân 16 với Chân Cổng (chân đầu tiên) của bóng bán dẫn đầu tiên - Đây sẽ là kênh LED Xanh
- Kết nối Chân 18 với Chân cổng (chân đầu tiên) của bóng bán dẫn đầu tiên - Đây sẽ là kênh LED đỏ
- Kết nối Pin 20 với một trong các đường Nối đất ở bên cạnh bảng mạch
- Kết nối Chân 22 với Chân cổng (chân đầu tiên) của bóng bán dẫn đầu tiên - Đây sẽ là kênh LED màu xanh lá cây
Tôi đã sử dụng các màu dây phù hợp với đèn LED: Xanh lam, Đỏ và Xanh lục. Tôi đã sử dụng màu đen cho mặt đất
Kết nối Jack thùng
- Nối dây màu trắng vào + cuối giắc cắm thùng
- Kết nối dây đen vào - cuối của giắc cắm thùng
- Kết nối dây màu đen với cùng một đường dây nối đất trên bảng mạch như Pin RPi 20 đã được kết nối với
- Kết nối dây màu trắng với đường + trên breadboard
Kết nối dải đèn LED
Dải đèn LED của tôi đi kèm với một đầu nối có kích thước đủ tốt để có thể cắm tạm thời vào breadboard. Tôi đã đẩy đầu nối trong breadboard và đấu dây nó vào phần kiểm tra của mạch.
- Bóng bán dẫn đầu tiên được kết nối với Pin 16. Tôi đã chạy một dây màu xanh lam từ chân Drain (chân giữa) đến dây màu xanh lam trên đầu nối dải LED
-
Bóng bán dẫn thứ hai kết nối với Pin 18. Tôi chạy một dây màu đỏ từ
Làm khô hạn
ghim (chân giữa) vào dây màu đỏ trên đầu nối dải LED
-
Bóng bán dẫn thứ ba được kết nối với Pin 22. Tôi đã chạy một dây màu xanh lá cây từ
Làm khô hạn
ghim (chân giữa) vào dây màu xanh lá cây trên đầu nối dải LED
- Cuối cùng, tôi chạy một dây màu trắng từ đường + trên breadboard được kết nối với giắc cắm thùng, đến dây màu trắng trên đầu nối dải LED.
Quyền lực
Sau khi kiểm tra mạch, bạn nên tốt nguồn Raspberry Pi và cắm nguồn 12v vào jack thùng.
Bước 7: Mã phía máy chủ
Chạy mã phía máy chủ
cd /opt/com.jonhaydock/colour-pi
sudo npm bắt đầu
Thao tác này sẽ khởi động máy chủ web và bắt đầu lắng nghe các yêu cầu HTTPS và WSS.
LƯU Ý: Hãy nhớ để pi-blaster chạy trước
Các biến môi trường
Cổng trang web mặc định là 443, nhưng bạn có thể ghi đè điều này bằng cách đặt một biến môi trường trước khi bắt đầu mã. Ví dụ
xuất COLOUR_PI_PORT = 2443
Cổng ổ cắm web mặc định là 1443, nhưng bạn có thể ghi đè điều này bằng cách đặt một biến môi trường trước khi bắt đầu mã. Ví dụ
xuất COLOUR_PI_WSS_PORT = 3443
Lưu ý: Vì ổ cắm web được xử lý bởi cylon.js chứ không phải trang web chính, các ổ cắm này cần phải nằm trên các cổng khác nhau
Các chân được sử dụng cho Xanh lam (chân 16), Xanh lục (chân 18) và Đỏ (chân 22) cũng có thể được ghi đè. Ví dụ
xuất COLOUR_PI_PIN_BLUE = 36
xuất COLOUR_PI_PIN_RED = 38 xuất COLOUR_PI_PIN_GREEN = 40
Lưu ý: Chúng cần phải khớp với các chân vật lý mà bạn đã sử dụng. Nếu bạn thay đổi những điều này, bạn cũng sẽ cần cập nhật các GPIO được xác định trong tệp / etc / default / pi-blaster. Ví dụ
DAEMON_OPTS = - gpio 16, 20, 21
Mã máy chủ chính có thể được tìm thấy trong tệp app.js. Tệp này khởi động máy chủ web HTTPS và cũng thông qua khuôn khổ Cylon.js, sử dụng socket.io để lắng nghe các yêu cầu về ổ cắm web trên một cổng riêng biệt.
Để truy cập trang web, bạn nên mở trình duyệt web trên máy tính chính của mình (tôi chỉ thử nghiệm điều này trong Chrome) và sử dụng địa chỉ IP của Raspberry Pi, ví dụ:
10.0.1.2/
Bạn có thể tìm ra địa chỉ IP của mình từ dòng lệnh Raspberry Pi.
ifconfig
Máy chủ web sẽ cung cấp bất kỳ nội dung nào trong thư mục chung. Nó mặc định hiển thị trang index.html.
Cylon.js tạo một điểm cuối mà bạn có thể kết nối Socket.io.
10.0.1.2:1443/api/robots/colour-pi
Bạn có thể gửi tin nhắn set_colour tới thông qua socket để đặt các giá trị Đỏ, Xanh lục và Xanh lam
device.emit ('set_colour', r, g, b)
Lệnh này gọi lệnh set_colour, lệnh này gọi hàm setColour trong app.js. Chức năng này đặt các mức độ sáng, cho mỗi giá trị R, G và B, trong khoảng từ 0 đến 255. Trong đó 0 tắt và 255 bật hoàn toàn.
ví dụ.
Màu đỏ r = 255, g = 0, b = 0
Xanh lục r = 0, g = 255, b = 0 Xanh lam r = 0, g = 0, b = 255 Trắng r = 255, g = 255, b = 255 Đen / Tắt r = 0, g = 0, b = 0
Bước 8: Mã trang web
Tổng quan
Trang web sử dụng nhận dạng giọng nói để chọn màu từ danh sách được xác định trước. Để thêm màu vào danh sách, hãy chỉnh sửa tệp trên máy chủ: public / data / colours.json
ví dụ.
"đỏ": "# FF0000",
Khi một màu được tìm thấy hoặc được chọn từ menu thả xuống, hộp Đầu ra sẽ được đặt thành màu đó và một thông báo sẽ được gửi qua socket.io tới Raspnerry Pi, điều này sẽ đặt các đèn LED thành cùng một màu.
LƯU Ý: tùy thuộc vào mức độ tốt của đèn LED mà bạn có thể thấy hoặc không thấy màu tương tự. Một số dễ nhân bản hơn những cái khác
Khi bạn tải trang web lần đầu, vì bạn đang sử dụng chứng chỉ SSL tự ký, bạn sẽ cần xác nhận điều này trong trình duyệt. Bạn sẽ thấy một cảnh báo bảo mật về chứng chỉ.
Nhận diện giọng nói
Hộp này có biểu tượng micrô. Nếu bạn nhấp vào biểu tượng khi nó có màu xanh lục, nó sẽ bắt đầu lắng nghe màu sắc. Trong khi nó đang nghe, nó sẽ chuyển sang màu đỏ. Nó sẽ lắng nghe trong một khoảng thời gian ngắn và sau đó dừng lại. Nhấp vào biểu tượng micrô khi nó có màu đỏ cũng sẽ ngăn nó nghe.
Vì trang web này cần truy cập vào micrô của bạn, bạn sẽ cần cấp quyền cho nó khi được nhắc
LƯU Ý: Bạn cần có micrô cho phần này. Tôi sử dụng một cái trên máy ảnh web của tôi.
Bảng điểm tạm thời
Hộp này theo dõi các phỏng đoán của các từ bạn đang nói, khi bạn đang nói chúng.
Bảng điểm cuối cùng
Hộp này theo dõi dự đoán cuối cùng là những gì bạn đã nói.
Màu sắc đã biết
Đây là danh sách tất cả các màu mà trang biết. Nó được tạo từ tệp colours.json. Nếu bạn chọn một trong những màu này, trang sẽ nói màu và đặt màu đầu ra.
LƯU Ý: Bạn cần có loa hoặc tai nghe để nghe bài phát biểu
Màu tìm thấy
Trang web này hiện chỉ hỗ trợ kết hợp màu sắc. Nếu từ hoặc các từ bạn đã nói trong micrô khớp với tên của một màu đã biết hoặc bạn chọn một màu từ danh sách Màu đã biết, nó sẽ được thêm vào đây dưới dạng nhật ký.
Đầu ra
Màu tìm thấy cuối cùng sẽ được hiển thị ở đây. Giá trị Hệ lục phân màu (ví dụ: # 7cb9e8) và giá trị RGB (ví dụ: 124, 185, 232) sẽ được hiển thị dưới dạng văn bản và nền của hộp ở giữa sẽ được đặt thành màu thực.
Màu này cũng được gửi đến Raspberry Pi và bạn sẽ thấy màu của dải đèn LED thay đổi.
LƯU Ý: nếu bạn không thấy đèn LED thay đổi màu sắc, hãy thử khởi động lại pi-blaster và / hoặc ứng dụng node.js
khởi động lại dịch vụ sudo pi-blaster
sudo npm bắt đầu
Giọng nói đã biết
Hộp này hiển thị danh sách "Giọng nói đã biết" từ Tổng hợp giọng nói được hỗ trợ. Chọn một trong những giọng nói này sẽ thay đổi giọng nói và ngôn ngữ bạn sẽ nghe, đồng thời nó sẽ nói tên của giọng nói đó.
Nó cũng sẽ thay đổi ngôn ngữ của SpeechRecognition giống với ngôn ngữ được chọn trong danh sách.
Bước 9: Cuối cùng
Đây là một ví dụ về những gì bạn nên xem.
Vui lòng cho tôi biết nếu bạn gặp bất kỳ vấn đề nào và tôi có thể cập nhật khi cần.
Đề xuất:
DIY Arduino LED Color Organ 2.0: 5 bước
DIY Arduino LED Color Organ 2.0: Trong dự án này, tôi sẽ hướng dẫn bạn cách xây dựng Arduino LED Color Organ phản ứng với các dải tần số khác nhau trong âm nhạc của bạn với các màn trình diễn ánh sáng. Trong trường hợp của tôi, ánh sáng màu đỏ thể hiện âm trầm, ánh sáng xanh lục biểu thị tần số trung bình và màu xanh lam là nốt cao
Macintosh Classic II Color Hackintosh: 7 bước (có hình ảnh)
Macintosh Classic II Color Hackintosh: Mac Classic II (M4150 được sản xuất vào năm 1992), câu chuyện về một chiếc Hackintosh Classic II. Sau một thời gian dài tìm kiếm màn hình LCD có kích thước phù hợp để lắp lại
Động cơ bước Điều khiển động cơ bước Động cơ bước - Động cơ bước như một bộ mã hóa quay: 11 bước (có hình ảnh)
Động cơ bước Điều khiển động cơ bước Động cơ bước | Động cơ bước như một bộ mã hóa quay: Có một vài động cơ bước nằm xung quanh và muốn làm điều gì đó? Trong Có thể hướng dẫn này, hãy sử dụng động cơ bước làm bộ mã hóa quay để điều khiển vị trí của động cơ bước khác bằng vi điều khiển Arduino. Vì vậy, không cần phải quảng cáo thêm, chúng ta hãy
Đèn giao thông / Feu Tri-Color !: 11 bước
Đèn giao thông / Feu Tri-Colour !: Aujourd'hui nous allons construire un Feu de week Lập trình viên vi Arduino! Pour ce faire nous aurons besoin de: -Plaques de bois de 3 mm d'épaisseur-Papiers Calques épais-Colle-Perceuse- Arduino-Fiche Male -Câble électrique-Kit soudure-Un ordina
Neopixel RGB LED 5-Color Cycler (Arduino): 3 bước
Neopixel RGB LED 5-Color Cycler (Arduino): Dự án này là một vòng gồm 12 đèn LED RGB được điều khiển để hiển thị các màu đặt khác nhau (theo kiểu nụ cười), dựa trên điện trở của chiết áp trượt. Nếu ai có bất kỳ đề xuất nào, tôi ' hãy vui khi đọc chúng vì luôn có thể cải tiến.