Mục lục:

Color-pi: 9 bước
Color-pi: 9 bước

Video: Color-pi: 9 bước

Video: Color-pi: 9 bước
Video: draw and color - 9 bước vẽ - 3 bước tô màu cho 'Chú Báo Màu Hồng' 2024, Tháng Mười
Anonim
Màu-pi
Màu-pi

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ị

  1. 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
  2. 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
  3. Đầ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
  4. Đầ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
  5. Breadboard Hàn nguyên mẫu Ban PCB - một cái gì đó như thế này
  6. Điện trở 3 x 10kΩ
  7. 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
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

Đấu dây mạch
Đấu dây mạch
Đấu dây mạch
Đấu dây mạch
Đấu dây mạch
Đấu dây mạch
Đấu dây mạch
Đấu dây 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

  1. Chèn một trong các bóng bán dẫn vào breadboard như trong sơ đồ
  2. 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
  3. 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
  4. 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

  1. 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
  2. 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 đỏ
  3. 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
  4. 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

  1. Nối dây màu trắng vào + cuối giắc cắm thùng
  2. Kết nối dây đen vào - cuối của giắc cắm thùng
  3. 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
  4. 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.

  1. 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
  2. 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

  3. 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

  4. 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ủ

Mã phía máy chủ
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

Mã trang web
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

Image
Image

Đâ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: