Mục lục:
- Bước 1: Nguồn cung cấp
- Bước 2: Sơ đồ và đấu dây
- Bước 3: Thiết kế cơ sở dữ liệu
- Bước 4: Chuẩn bị Raspberry Pi
- Bước 5: Chuyển tiếp Cơ sở dữ liệu của chúng tôi sang RPi
- Bước 6: Định cấu hình Bluetooth trên RPi của chúng tôi
- Bước 7: Viết chương trình phụ trợ hoàn chỉnh
- Bước 8: Viết giao diện người dùng (HTML, CSS & JavaScript)
- Bước 9: Xây dựng trường hợp của tôi và kết hợp tất cả lại với nhau
- Bước 10: Một số vấn đề tôi gặp phải trên con đường tạo loa Slimbox của mình…
Video: Slimbox - Loa Bluetooth thông minh !: 10 bước (kèm hình ảnh)
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:33
Này đó!
Đối với dự án trường học của tôi tại MCT Howest Kortrijk, tôi đã tạo một thiết bị loa Bluetooth thông minh với các cảm biến khác nhau, bao gồm một màn hình LCD và vòng NeoPixel RGB. Mọi thứ chạy trên Raspberry Pi (Cơ sở dữ liệu, Máy chủ web, Phần phụ trợ).
Vì vậy, trong hướng dẫn này, tôi sẽ chỉ cho các bạn cách tôi thực hiện dự án này trong 3 tuần, từng bước một, vì vậy nếu có bạn nào muốn tạo lại dự án của tôi, bạn có thể dễ dàng thực hiện!
Đây cũng là hướng dẫn đầu tiên của tôi, nếu bạn có bất kỳ câu hỏi nào, tôi sẽ cố gắng trả lời chúng nhanh nhất có thể!
GitHub của tôi:
Bước 1: Nguồn cung cấp
Cảm biến nhiệt độ DS18B20
DS18B20 là cảm biến một dây đo nhiệt độ, được sản xuất bởi Maxim Integrated. Có 2 loại cảm biến DS18B20, chỉ dành cho thành phần (Tôi đã sử dụng) và phiên bản chống thấm nước, lớn hơn nhiều, nhưng đó không phải là thứ tôi cần cho dự án của mình, vì vậy tôi chỉ sử dụng thành phần đó. Cảm biến có thể đo nhiệt độ trong phạm vi từ -55 ° C đến + 125 ° C (-67 ° F đến + 257 ° F) và nó có độ chính xác 0,5 ° C từ -10 ° C đến + 85 ° C. Nó cũng có độ phân giải có thể lập trình được từ 9 bit đến 12 bit.
Datasheet:
Cảm biến chiết áp
Chiết áp là một điện trở có ba đầu nối có thể điều chỉnh bằng tay bằng cách chỉ xoay phần trên của cảm biến. Vị trí của phần trên xác định điện áp đầu ra của chiết áp.
LSM303 Accelerometer + La bàn Breakout
Bảng đột phá LSM303 là sự kết hợp của cảm biến gia tốc ba trục và từ kế / la bàn, do Adafruit sản xuất. Nó được sử dụng với giao diện I2C của Raspberry Pi.
Tổng quan:
Datasheet:
MCP3008
Để đọc dữ liệu từ chiết áp của tôi, tôi đã sử dụng MCP3008, đây là một bộ chuyển đổi 8 kênh 10 bit tương tự sang kỹ thuật số với giao diện SPI và khá dễ dàng để lập trình.
Datasheet:
Loa - Đường kính 3”- 8 Ohm 1 Watt
Đây là hình nón loa tôi đã chọn sau khi tính toán Điện áp và Ampe nó sẽ cần và đây là một sự phù hợp hoàn hảo cho dự án Raspberry Pi của tôi, do Adafruit sản xuất.
Tổng quan:
Bộ khuếch đại Mono Mono MAX98357 I2S Class-D
Đây là bộ khuếch đại đi kèm với loa, không chỉ là bộ khuếch đại, nó còn là bộ chuyển đổi tín hiệu kỹ thuật số sang tương tự I2S, vì vậy nó còn là sự phù hợp hoàn hảo cho loa và hệ thống âm thanh của tôi.
Tổng quan:
Datasheet:
Arduino Uno
Arduino Uno là một bo mạch vi điều khiển mã nguồn mở dựa trên vi điều khiển Microchip ATmega328P, được sản xuất bởi Arduino.cc. Bo mạch Uno có 14 chân Digital, 6 chân analog và hoàn toàn có thể lập trình được với phần mềm Arduino IDE
Tổng quan:
Levelshifter
Đây là một bo mạch nhỏ đảm nhiệm việc giao tiếp giữa Arduino Uno và Raspberry Pi và các điện áp khác nhau, Arduino: 5V & Raspberry Pi: 3.3V. Điều này là cần thiết vì vòng NeoPixel được kết nối với Arduino và chạy trên đó, trong khi tất cả những thứ khác chạy trên Raspberry Pi.
Vòng NeoPixel RGB
Đây là một vòng nhỏ chứa đầy 12 đèn LED RGB (bạn có thể mua các vòng lớn hơn với nhiều đèn LED RGB hơn, nếu bạn muốn). Đó là trong trường hợp của tôi được kết nối với Arduino Uno, nhưng cũng có thể được kết nối với nhiều thiết bị khác và thực sự đơn giản để sử dụng.
Tổng quan:
Màn hình LCD 16x2
Tôi đã sử dụng Màn hình LCD cơ bản để in nhiệt độ, âm lượng và địa chỉ IP của mình.
Datasheet:
Thẻ SD Raspberry Pi 3B + & 16GB
Toàn bộ dự án của tôi chạy trên Raspberry Pi 3B + với một hình ảnh được định cấu hình, tôi sẽ giúp bạn định cấu hình sau trong phần hướng dẫn của tôi.
GPIO T-Part, 2 Breadboards và rất nhiều jumperwires
Để kết nối mọi thứ tôi cần breadboards và jumperwires, tôi đã sử dụng GPIO T-part để tôi có nhiều không gian hơn và rõ ràng là chân nào.
Bước 2: Sơ đồ và đấu dây
Đối với sơ đồ của tôi, tôi đã sử dụng Fritzing, đó là một chương trình bạn có thể cài đặt, cho phép bạn tạo một giản đồ thực sự dễ dàng trong các loại chế độ xem khác nhau.
Tải xuống Fritzing:
Vì vậy, hãy đảm bảo rằng bạn kết nối mọi thứ theo đúng cách! Trong trường hợp của tôi, màu sắc của dây không giống như trên sơ đồ.
Bước 3: Thiết kế cơ sở dữ liệu
Chúng tôi đang thu thập rất nhiều dữ liệu từ 3 cảm biến được kết nối, vì vậy chúng tôi cần cơ sở dữ liệu để lưu trữ dữ liệu và cảm biến. Sau đó, chúng ta sẽ xem cách định cấu hình cơ sở dữ liệu trên Raspberry Pi và cách thêm dữ liệu vào đó. Nhưng trước tiên, thiết kế cơ sở dữ liệu hoặc ERD (Sơ đồ mối quan hệ thực thể) phải được thực hiện và của tôi cũng đã được chuẩn hóa với 3NF. Đó là lý do tại sao chúng tôi chia các cảm biến thành một bảng khác và làm việc với ID.
Nhìn chung, đây là một thiết kế cơ sở dữ liệu thực sự cơ bản và dễ dàng để làm việc thêm.
Bước 4: Chuẩn bị Raspberry Pi
Vì vậy, bây giờ chúng ta đã hoàn thành một số khái niệm cơ bản về dự án. Hãy bắt đầu với Raspberry Pi!
Cấu hình thẻ SD
Đầu tiên, bạn cần một Thẻ SD 16GB để bạn có thể đặt hình ảnh của mình và một chương trình để tải hình ảnh bắt đầu lên thẻ SD.
Phần mềm:
Hình ảnh bắt đầu:
Vì vậy, khi chúng được tải xuống:
- Đặt thẻ SD của bạn vào máy tính của bạn.
- Mở Win32 mà bạn vừa tải xuống.
- Chọn tệp hình ảnh Raspbian mà bạn cũng vừa tải xuống.
- Nhấp vào 'ghi' vào vị trí của thẻ SD của bạn.
Quá trình này có thể mất một chút thời gian, tùy thuộc vào phần cứng của bạn. Khi điều này được thực hiện, chúng tôi đã sẵn sàng thực hiện một số điều chỉnh cuối cùng trước khi đưa hình ảnh vào RPi của chúng tôi.
- Đi tới thư mục thẻ SD của bạn, tìm kiếm tệp có tên 'cmdline.txt' và mở nó.
- Bây giờ thêm 'ip = 169.254.10.1' trên cùng một dòng.
- Lưu các tập tin.
- Tạo một tệp có tên 'ssh' không có phần mở rộng hoặc nội dung.
Giờ đây, bạn có thể AN TOÀN rút thẻ SD ra khỏi máy tính của mình và đặt nó vào Raspberry Pi mà KHÔNG cần nguồn điện. Sau khi thẻ SD vào RPI, hãy kết nối cáp LAN từ máy tính của bạn với cổng LAN RPi, sau khi kết nối này, bạn có thể kết nối nguồn với RPi.
Bây giờ chúng ta muốn điều khiển Raspberry Pi của mình, điều này được thực hiện thông qua Putty.
Phần mềm Putty:
Sau khi tải xuống, hãy mở Putty và chèn IP '169.254.10.1' và Cổng '22' và loại kết nối: SSH. Bây giờ cuối cùng chúng ta có thể mở giao diện dòng lệnh của mình và đăng nhập bằng thông tin đăng nhập dành cho người mới bắt đầu -> Người dùng: pi & Mật khẩu: raspberry.
Raspi-config
sudo raspi-config
Điều thực sự quan trọng đối với dự án này là phần giao diện, chúng ta phải kích hoạt rất nhiều giao diện khác nhau, kích hoạt tất cả các giao diện sau:
- Một dây
- SPI
- I2C
- Nối tiếp
Bây giờ chúng ta đã hoàn tất với raspi-config, hãy thử và tạo kết nối với internet.
Kết nối wifi
Đầu tiên, bạn phải root cho các lệnh sau
sudo -i
Khi bạn đã root, hãy sử dụng lệnh sau. SSID là tên mạng của bạn và mật khẩu rõ ràng là mật khẩu.
wpa_passphrase "ssid" "mật khẩu" >> /etc/wpa_supplicant/wpa_supplicant.conf
Trong trường hợp bạn mắc lỗi, bạn có thể kiểm tra, cập nhật hoặc xóa mạng này bằng cách chỉ cần nhập tệp đó:
nano /etc/wpa_supplicant/wpa_supplicant.conf
Vì vậy, sau khi chúng tôi vào mạng của mình, hãy nhập giao diện ứng dụng khách WPA
wpa_cli
Chọn giao diện của bạn
giao diện wlan0
Tải lại tệp
cấu hình lại
Và cuối cùng, bạn có thể xem liệu bạn có được kết nối tốt hay không:
ip a
Cập nhật & nâng cấp
Bây giờ chúng tôi đã kết nối với internet, cập nhật các gói đã được cài đặt sẽ là một bước đi thông minh, vì vậy hãy làm điều đó trước khi cài đặt các gói khác.
sudo apt-get cập nhật
sudo apt-get nâng cấp
Cơ sở dữ liệu MariaDB
Cài đặt máy chủ cơ sở dữ liệu MariaDB:
sudo apt-get install mariadb-server
Máy chủ web Apache2
Cài đặt máy chủ web Apache2:
sudo apt install apache2
Python
Cài đặt Python:
update-Alternatives --install / usr / bin / python python /usr/bin/python2.7 1
update-Alternatives --install / usr / bin / python python / usr / bin / python3 2
Gói Python
Bạn sẽ phải cài đặt tất cả các gói này để làm cho chương trình phụ trợ hoạt động hoàn hảo:
- Bình giữ nhiệt
- Bình-Cors
- Flask-MySql
- Flask-SocketIO
- PyMySQL
- Yêu cầu
- Python-socketio
- RPi. GPIO
- Gevent
- Gevent-websocket
- Ujson
- Wsaccel
Thư viện loa
Cài đặt thư viện loa từ Adafruit:
curl -sS https://raw.githubusercontent.com/adafruit/Raspbe… | bấu víu
Đã đến lúc khởi động lại
khởi động lại sudo
Bước 5: Chuyển tiếp Cơ sở dữ liệu của chúng tôi sang RPi
Bây giờ chúng tôi đã cài đặt mọi thứ chúng tôi cần, hãy đặt Cơ sở dữ liệu mà chúng tôi thiết kế trên Raspberry Pi của chúng tôi!
Vì vậy, trước tiên, chúng ta cần chuyển tiếp cơ sở dữ liệu của mình trong bàn làm việc MySql, trong khi làm việc đó, hãy sao chép mã cơ sở dữ liệu đầy đủ của bạn và xóa tất cả các từ 'hiển thị' trong đó. Vì vậy, khi nó được sao chép, hãy mở lại putty, đăng nhập và nhập:
sudo mysql
và bây giờ bạn đang ở trong giao diện mysql, hãy sao chép mã cơ sở dữ liệu của bạn vào đó và nhấn enter.
Bây giờ chúng ta chỉ cần tạo một người dùng
TẠO NGƯỜI DÙNG "người dùng" ĐƯỢC "người dùng" xác định;
CẤP TẤT CẢ CÁC QUYỀN RIÊNG TƯ BẬT *. * CHO 'người dùng';
Bây giờ khởi động lại.
Vì vậy, mọi thứ sẽ được thiết lập ngay bây giờ, bạn cũng có thể tạo kết nối với Pi và MySql Workbench của mình, vì vậy việc kiểm tra tất cả dữ liệu trong bảng của bạn sẽ dễ dàng hơn.
Bước 6: Định cấu hình Bluetooth trên RPi của chúng tôi
Chúng tôi đang tạo một loa Bluetooth, vì vậy điều này có nghĩa là phương tiện đang được gửi từ nguồn của chúng tôi đến Raspberry Pi và điều này có thể được thực hiện khá dễ dàng, hãy bắt tay ngay vào nó!
Nguồn của tôi cho kết nối bluetooth: https://scribeles.net/streaming-bl Bluetooth-audio-fro…
Đang xóa bluealsa đã chạy
sudo rm / var / run / bluealsa / *
Thêm hồ sơ A2DP Vai trò bồn rửa
sudo bluealsa -p a2dp-chìm &
Mở giao diện bluetooth và bật bluetooth của bạn
bluetoothctl
bật nguồn
Thiết lập tác nhân ghép nối
đại lý trên
tác nhân mặc định
Làm cho RPi của bạn có thể khám phá được
có thể khám phá trên
- Bây giờ từ thiết bị bluetooth của bạn, hãy tìm kiếm RPi và kết nối với nó.
- Xác nhận việc ghép nối trên cả hai thiết bị, nhập 'có' vào miếng dán của bạn.
- Cho phép dịch vụ A2DP, gõ lại 'yes'.
- Sau khi hoàn thành việc này, chúng tôi có thể tin tưởng vào thiết bị của mình, vì vậy chúng tôi không cần phải thực hiện tất cả việc này mỗi khi chúng tôi muốn kết nối
tin cậy XX: XX: XX: XX: XX: XX (Địa chỉ mac bluetooth của bạn từ thiết bị nguồn của chúng tôi)
Nếu bạn muốn RPi của mình tiếp tục có thể phát hiện được, đó là lựa chọn của riêng bạn, nhưng tôi muốn tắt lại tính năng này để mọi người không thể cố gắng kết nối với hộp của bạn
có thể khám phá tắt
Sau đó, chúng ta có thể thoát khỏi giao diện bluetooth của mình
lối ra
Và cuối cùng là định tuyến âm thanh của chúng tôi: thiết bị nguồn của chúng tôi chuyển tiếp tới RPi của chúng tôi
bluealsa-aplay 00: 00: 00: 00: 00: 00
Bây giờ thiết bị của chúng tôi đã được kết nối hoàn toàn với Raspberry của chúng tôi và bạn sẽ có thể phát phương tiện từ thiết bị nguồn của mình trên loa Pi.
Bước 7: Viết chương trình phụ trợ hoàn chỉnh
Vì vậy, bây giờ thiết lập đã xong, cuối cùng chúng ta có thể bắt đầu viết chương trình phụ trợ của mình!
Tôi đã sử dụng PyCharm cho toàn bộ chương trình phụ trợ của mình, bạn chỉ cần đảm bảo rằng dự án PyCharm của bạn được kết nối với Raspberry Pi của bạn, điều này có nghĩa là đường dẫn Triển khai của bạn được thiết lập trong cài đặt của bạn và bạn đã cài đặt tất cả các gói chúng tôi cần, sẽ được thực hiện ở bước 4.
Tôi đã sử dụng các lớp học của riêng mình và những lớp này cũng được đưa vào GitHub của tôi. Liên kết nằm trong phần giới thiệu trong trường hợp bạn bỏ lỡ nó;)
Trong tệp phụ trợ của mình, tôi đã sử dụng các lớp phân luồng, vì vậy mọi thứ có thể chạy cùng một lúc và nó sẽ không làm gián đoạn lẫn nhau. Và ở phía dưới, bạn đã có tất cả các tuyến đường để chúng tôi có thể dễ dàng lấy dữ liệu trong giao diện người dùng của mình.
Bước 8: Viết giao diện người dùng (HTML, CSS & JavaScript)
Bây giờ phần phụ trợ đã hoàn thành, chúng ta có thể bắt đầu viết giao diện người dùng đầy đủ.
HTML & CSS được thực hiện khá dễ dàng, hãy thử làm việc trên thiết bị di động trước hết mức có thể, vì hầu hết chúng ta đều kết nối với Bluetooth từ thiết bị di động, sẽ dễ dàng kiểm soát hơn từ trang tổng quan trên thiết bị di động.
Bạn có thể thiết kế bảng điều khiển của mình theo bất kỳ cách nào bạn muốn, tôi sẽ chỉ để lại mã và thiết kế của tôi ở đây, bạn có thể làm bất cứ điều gì bạn thích!
Và Javascript không khó như vậy, đã làm việc với một số GET từ các tuyến phụ trợ của tôi, hàng tấn trình nghe sự kiện và một số cấu trúc socketio.
Bước 9: Xây dựng trường hợp của tôi và kết hợp tất cả lại với nhau
Đầu tiên tôi bắt đầu với một số bản phác thảo về cách tôi muốn vỏ máy trông như thế nào, điều quan trọng là nó phải đủ lớn để mọi thứ có thể vừa vặn, vì chúng tôi có một mạch lớn để đặt trong trường hợp.
Tôi làm vỏ máy bằng gỗ, tôi nghĩ đây là cách làm dễ dàng nhất khi bạn không có nhiều kinh nghiệm về xây dựng vỏ máy và bạn cũng có rất nhiều thứ có thể làm với nó.
Tôi bắt đầu từ một chiếc hộp đựng chai rượu và mới bắt đầu cưa gỗ. Khi tôi đã có chiếc vỏ cơ bản của mình, tôi chỉ cần khoan lỗ trên nó (rất nhiều ở mặt trước của chiếc vỏ, như bạn có thể thấy trên hình ảnh: P) và đặt một số đinh vào đó, đó là một chiếc hộp thực sự cơ bản, nhưng nó trông khá tuyệt và phù hợp hoàn hảo.
Và một khi trường hợp đã được hoàn thành, đã đến lúc kết hợp tất cả lại với nhau, như bạn có thể thấy trên hình cuối cùng! Nó hơi lộn xộn bên trong hộp, nhưng mọi thứ đều hoạt động và tôi không có nhiều không gian hơn, vì vậy tôi khuyên bạn có thể tạo một trường hợp lớn hơn nếu bạn đang tạo lại dự án của tôi.
Bước 10: Một số vấn đề tôi gặp phải trên con đường tạo loa Slimbox của mình…
Lỗi Bluetooth và bluealsa
Mỗi khi tôi muốn phát nhạc hoặc kết nối với bluetooth, tôi đều nhận được lỗi từ bluetooth và bluealsa. Tôi đã thực hiện một số nghiên cứu về nó và đây là giải pháp cho vấn đề của tôi. Vì vậy, vì lý do nào đó mà bluetooth của tôi bị chặn mềm, không chắc đây có phải là bị chặn mềm tiêu chuẩn hay không. Bạn có thể xem đó có phải là lệnh không bằng cách gõ lệnh sau vào Putty của bạn.
danh sách rfkill
Vì vậy, nếu nó là softblocked, chỉ cần sử dụng cái này:
rfkill bỏ chặn bluetooth
Và bạn có thể muốn khởi động lại sau đó, nguồn của tôi:
Sự cố kết nối nối tiếp
Vì vậy, một vấn đề lớn khác mà tôi gặp phải là tôi không thể thực hiện bất kỳ kết nối nào với Arduino của mình thông qua trình nâng cấp, sau một số tìm kiếm, tôi phát hiện ra rằng '/ dev / ttyS0' của tôi đã biến mất và điều này có thể là do bản cập nhật RPi của bạn. Cũng tìm thấy một giải pháp về điều này
Bạn sẽ phải bật lại bảng điều khiển nối tiếp với raspi-config, khởi động lại, sau đó xóa thủ công bit "console = serial0, 115200" khỏi '/boot/cmdline.txt'. Xác nhận rằng "enable_uart = 1" đang ở trong' /boot/config.txt 'và khởi động lại lần nữa, điều đó sẽ lấy lại cổng ttyS0 của bạn, cũng như liên kết mềm' / dev / serial0 'tới nó.
Nguồn:
Đề xuất:
Đèn LED để bàn thông minh - Chiếu sáng thông minh W / Arduino - Neopixels Workspace: 10 bước (có hình ảnh)
Đèn LED để bàn thông minh | Chiếu sáng thông minh W / Arduino | Neopixels Workspace: Ngày nay chúng ta dành nhiều thời gian ở nhà, học tập và làm việc ảo, vậy tại sao không biến không gian làm việc của chúng ta trở nên tuyệt vời hơn với hệ thống chiếu sáng tùy chỉnh và thông minh dựa trên Arduino và Ws2812b LED. Sau đây tôi chỉ cho bạn cách xây dựng Smart của bạn Đèn LED để bàn
Biến điện thoại thông minh không sử dụng thành màn hình thông minh: 6 bước (có hình ảnh)
Biến điện thoại thông minh không sử dụng thành màn hình thông minh: Hướng dẫn Deze có trong het Engels, voor de Nederlandse versie klik hier Bạn có điện thoại thông minh (cũ) chưa sử dụng? Biến nó thành một màn hình thông minh bằng Google Trang tính và một số bút và giấy, bằng cách làm theo hướng dẫn từng bước dễ dàng này. Khi bạn hoàn thành
Đồng hồ báo thức thông minh: Đồng hồ báo thức thông minh được làm bằng Raspberry Pi: 10 bước (có hình ảnh)
Đồng hồ báo thức thông minh: Đồng hồ báo thức thông minh được làm bằng Raspberry Pi: Bạn đã bao giờ muốn có một chiếc đồng hồ thông minh chưa? Nếu vậy, đây là giải pháp cho bạn! Tôi đã làm Đồng hồ báo thức thông minh, đây là đồng hồ mà bạn có thể thay đổi thời gian báo thức theo trang web. Khi chuông báo thức kêu, sẽ có một âm thanh (còi) và 2 đèn sẽ
Quay số thông minh - Điện thoại truyền thống thông minh tự động sửa lỗi: 8 bước
Smart Dial - Điện thoại truyền thống thông minh tự động sửa lỗi: Smart Dial là điện thoại tự động sửa lỗi thông minh được tạo ra cho người cao tuổi có nhu cầu đặc biệt và nó cho phép người cao tuổi quay số trực tiếp từ điện thoại truyền thống mà họ quen dùng. Chỉ nhờ hoạt động tình nguyện tại một trung tâm chăm sóc người cao niên địa phương mà tôi
Cách điều khiển Công tắc thông minh cơ bản dựa trên Sonoff ESP8266 với điện thoại thông minh: 4 bước (có hình ảnh)
Cách điều khiển Công tắc thông minh cơ bản dựa trên Sonoff ESP8266 bằng điện thoại thông minh: Sonoff là dòng thiết bị dành cho Nhà thông minh do ITEAD phát triển. Một trong những thiết bị linh hoạt và rẻ tiền nhất từ dòng đó là Sonoff Basic. Đây là một công tắc hỗ trợ Wi-Fi dựa trên một con chip tuyệt vời, ESP8266. Bài viết này mô tả cách thiết lập Cl