Mục lục:

Lịch treo tường thông minh: 5 bước
Lịch treo tường thông minh: 5 bước

Video: Lịch treo tường thông minh: 5 bước

Video: Lịch treo tường thông minh: 5 bước
Video: Tường Xinh | Cửa Hàng Tranh Treo Tường & Đồng Hồ Nghệ Thuật | Uy Tín Số 1 Việt Nam 2024, Tháng bảy
Anonim
Lịch treo tường thông minh
Lịch treo tường thông minh

Vợ tôi và tôi từng có lịch treo tường bằng giấy cổ điển, trên đó chúng tôi đánh dấu những ngày quan trọng. Chúng tôi cũng sử dụng lịch Google trên điện thoại thông minh của mình để đánh dấu các sự kiện, vì vậy, điều này có nghĩa là phải làm việc gấp đôi. Vì vậy, tôi quyết định xây dựng một số loại lịch treo tường thông minh, sẽ hiển thị lời nhắc, sự kiện và một số dữ liệu khác của chúng tôi. Vì tôi có nhiều bộ phận điện tử cũ nằm xung quanh, nên mục tiêu của tôi là tái sử dụng chúng nhiều nhất có thể và xây dựng lịch với chi phí ít nhất có thể.

Trong hướng dẫn này, tôi sẽ chỉ cho bạn cách tạo lịch treo tường thông minh, hiển thị các sự kiện từ một số tài khoản Google. Nó cũng sẽ hiển thị thời gian, ngày tháng, thời tiết, nhiệt độ và một số thông tin bổ sung. Nó sẽ được cung cấp bởi máy tính Raspberry Pi có gắn cảm biến chuyển động Cảm biến hồng ngoại thụ động (PIR), để màn hình bật khi phát hiện chuyển động trong phòng, nhưng sẽ tắt sau vài phút không hoạt động. Hướng dẫn này dựa trên một số hướng dẫn khác mà tôi tìm thấy trên internet và tôi sẽ cung cấp các liên kết đến chúng để hiểu rõ hơn. Cần có một số kiến thức lập trình cơ bản (HTML, Python,…).

Bước 1: Phần cứng

Như đã đề cập trước đây, tôi đã cố gắng sử dụng lại càng nhiều thiết bị điện tử cũ để giảm chi phí. Tuy nhiên một số mặt hàng tôi đã phải mua, vì vậy tôi sẽ liệt kê tất cả những gì cần thiết cho việc xây dựng.

- Một bộ Raspberry Pi. Ban đầu tôi sử dụng mô hình 2 cũ của mình từ một số dự án khác. Nó hoạt động, nhưng việc chỉnh sửa và tải lại trang web khiến tôi mất rất nhiều thời gian, vì vậy cuối cùng tôi đã đổi sang mô hình 3, mô hình này hoạt động trôi chảy hơn https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313 & _nkw = raspberry + pi + kit & _sacat = 0

- Man hinh LCD. Tôi sử dụng màn hình từ máy tính xách tay cũ của mình, vì vậy tôi chỉ cần mua bo mạch điều khiển LVDS cho nó và bộ nguồn https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313&_nkw=hdmi+ trình điều khiển + LVDS + bo mạch & _sacat = 0

- Hộp nhựa đựng đồ điện tử

- Cảm biến chuyển động hồng ngoại thụ động

- Cảm biến nhiệt độ / độ ẩm AM2302

- Chất kết dính trượt bằng nhựa màu đen cho khung LCD

- Nhiều loại cáp (HDMI, 5.5mm cho nguồn DC, cáp jumper bảng mạch không hàn,…)

Bước 2: Tạo màn hình LCD

Tạo màn hình LCD
Tạo màn hình LCD
Tạo màn hình LCD
Tạo màn hình LCD
Tạo màn hình LCD
Tạo màn hình LCD

Tôi đã sử dụng màn hình LCD từ chiếc máy tính xách tay cũ đã lỗi thời của mình. Có rất nhiều hướng dẫn chung về cách làm điều này, tôi đã làm theo hướng dẫn này:

www.instructables.com/id/How-to-reuse-the-old-LCD-Screen-of-your-broken-Lap/

Tôi tháo nắp máy tính xách tay cũ của mình, lấy màn hình LCD ra và sau đó đặt mua bảng trình điều khiển LVDS chính xác. Tôi đã cung cấp cho người bán mã sản phẩm, mã này có thể được tìm thấy ở mặt sau của màn hình LCD, trong trường hợp của tôi, đó là LP171WE3 (TL) (A2) - xem nhãn phía dưới bên phải trên hình cuối cùng và sau đó anh ta gửi cho tôi LVDS thích hợp. Xin lưu ý, bạn cũng sẽ cần nguồn điện cho màn hình, vì vậy hãy yêu cầu người bán gửi nó. Tôi cũng đã mua một hộp nhựa 14,5 × 7,5 × 2cm đẹp mắt để lắp bo mạch điều khiển một cách độc đáo và gắn nó vào mặt sau của màn hình LCD.

Giờ đây, màn hình LCD có khung kim loại, trông không đẹp. Ban đầu tôi phun sơn nó thành màu đen, nhưng lớp sơn bắt đầu bong ra. Vì vậy, tôi lấy bốn chất kết dính trượt bằng nhựa màu đen, thường được sử dụng để đóng các tờ giấy, cắt chúng cho phù hợp và gắn chúng để che khung. Điều này trông tốt, vì vậy tôi đã kết nối tất cả các cáp, cắm HDMI vào Raspberry Pi và Voila cũ của tôi - nó hoạt động! Có một hình ảnh hiển thị trên màn hình, vì vậy tôi đã sẵn sàng chuyển sang bước tiếp theo - hiển thị thông tin gì trên màn hình và cách hiển thị thông tin đó.

Bước 3: Thiết lập phần mềm

Khi tôi đang tìm kiếm trên internet để tìm một số manh mối, cách xây dựng lịch, tôi đã lấy cảm hứng từ trang này https://dakboard.com/site. Họ cung cấp thành phẩm (màn hình, máy tính và phần mềm làm việc), nhưng họ cũng có một hướng dẫn tuyệt vời cho giải pháp DIY (https://blog.dakboard.com/diy-wall-display/). Tôi khuyên bạn nên làm theo hướng dẫn này, ít nhất là đối với phần đầu tiên với hướng dẫn chuẩn bị và thiết lập hệ thống trên Raspberry, để trình duyệt tự động tải trang web mong muốn khi khởi động.

Điều này hoạt động tốt, tuy nhiên tôi đang tìm kiếm một số giải pháp, có thể được tùy chỉnh nhiều hơn theo mong muốn của tôi. Tôi đã quyết định thiết lập máy chủ web của riêng mình và tạo một trang web, trang này sẽ hiển thị thông tin bổ sung ngoài lịch. Tôi đã chọn Wordpress.org vì nó được ghi chép đầy đủ và có sự hỗ trợ tốt cũng như cộng đồng lớn để giúp bạn. Dưới đây là hướng dẫn về cách cài đặt Wordpress trên Raspberry Pi: https://projects.raspberrypi.org/en/projects/lamp-web-server-with-wordpress. Với Wordpress đã được cài đặt, đã đến lúc thiết kế trang chủ của tôi. Bạn có thể sử dụng một trong nhiều chủ đề được cung cấp hoặc thiết kế từ đầu. Dù sao, một số kiến thức lập trình HTML là cần thiết cho việc này.

Tôi đã thiết kế trang của mình để lịch được hiển thị ở bên trái (https://sl.wordpress.org/plugins/google-calendar-events/), trong khi ngày và giờ ở bên phải được hiển thị (https://www.timeanddate.com/clocks/free.html và https://www.arclab.com/en/kb/htmlcss/display-date-time-javascript-php-ssi.html). Dự báo thời tiết được lấy từ trang này (https://www.1a-vreme.si/vremensko-okno/), cung cấp tiện ích dự báo cho các thành phố của Slovenia, nhưng tôi đoán các tiện ích cho các quốc gia khác cũng có thể được tìm thấy trên internet. Nhiệt độ được thu thập bằng cảm biến AM2302 (https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313&_nkw=AM2302+&_sacat=0), như được giải thích ở cuối chương này. Ở phía dưới là đồng hồ đếm ngược hàng ngày đơn giản, hiển thị còn bao nhiêu ngày nữa cho một sự kiện nào đó (thú vị cho con tôi biết, chúng sẽ phải chờ đợi điều gì đó bao nhiêu ngày). Ở góc trên cùng bên phải là plugin MetaSlider (https://wordpress.org/plugins/ml-slider/), trình chiếu ngẫu nhiên đến các bức ảnh được chọn của gia đình tôi. Ngoài ra, tôi đã sử dụng plugin Background Slider (https://sl.wordpress.org/plugins/background-slider-master/) để hiển thị cho tôi một số hình ảnh ngẫu nhiên cho nền đẹp hơn.

Như đã đề cập trước đây, nhiệt độ trong nhà được thu thập bằng cảm biến AM2302. Có rất nhiều bài hướng dẫn về cách lấy nhiệt độ, tôi làm theo bài này: https://www.modmypi.com/blog/am2302-temphumidity-sensor. Sau đó, tôi đã di chuyển cảm biến này sang một Raspberry Pi khác có Home Assistant chạy trên nó, vì nó dễ dàng hơn để đọc và xuất bản các giá trị bằng cách sử dụng thành phần DHT Sensor của nó (https://www.home-assistant.io/components/sensor.dht/). Home Assistant cũng có thể thu thập nhiệt độ bên ngoài bằng cách sử dụng các thành phần thời tiết khác nhau, tôi đã sử dụng thành phần YR.no (https://www.home-assistant.io/components/sensor.yr/). Cùng với đó, tôi đã viết một kịch bản tự động hóa để thu thập nhiệt độ trong nhà / bên ngoài từ các thành phần này và ghi chúng vào một tệp văn bản, sau đó được hiển thị trên lịch treo tường của tôi. Để biết thêm thông tin về Home Assistant, hãy xem trang chủ (https://www.home-assistant.io/).

Bước 4: Tùy chọn - Tắt màn hình

Giờ đây, chúng tôi đã thiết lập và chạy lịch theo cách chúng tôi thích. Nhưng chúng tôi không muốn màn hình được bật 24/7. Chúng tôi chỉ muốn nó bật, khi ai đó ở nhà. Ngoài ra, chúng tôi không muốn nó được bật vào nửa đêm, khi chúng tôi đi vệ sinh, nó quá sáng! Vì vậy, chúng tôi sẽ gắn một cảm biến hồng ngoại để thông báo khi ai đó đang đứng trước nó và thêm một số giới hạn thời gian, khi nào nó sẽ bật.

Xin lưu ý rằng kỹ năng lập trình của tôi còn khá hạn chế, vì vậy điều sau không thể là tối ưu, vì tôi đã chọn nó từ các diễn đàn và hướng dẫn trực tuyến khác nhau, nhưng về cơ bản thì nó hoạt động. Tuy nhiên, mọi khuyến nghị vẫn được hoan nghênh. Trước tiên, chúng ta sẽ bắt đầu với thử nghiệm bật / tắt màn hình theo cách thủ công. Vì vậy, chúng tôi sẽ tạo hai tệp (ví dụ: monitor_on.sh và monitor_off.sh) và viết một số mã vào đó. Cách dễ nhất để làm điều này là đăng nhập vào Raspberry của bạn bằng SSH và nhập

sudo nano monitor_on.sh

và gõ mã sau

tvservice - ưu tiên;

startx / usr / bin / graphical_launcher `fgconsole`

Nhấn CTRL + X để lưu và thoát, sau đó tạo tệp thứ hai

sudo nano monitor_off.sh

và gõ mã sau

tvservice --off;

Một lần nữa, nhấn CTRL + X để lưu và thoát. Làm cho các tệp mới tạo này có thể thực thi được:

sudo chmod + x monitor_on.sh

sudo chmod + x monitor_off.sh

Bây giờ để thử xem các lệnh này có hoạt động không, hãy nhập

sudo./monitor_off.sh

sudo./monitor_on.sh

Màn hình bây giờ sẽ tắt và bật tương ứng. Tôi nhận thấy rằng trên Raspberry Pi 2, mất gần 10 giây để màn hình bật. Trên Raspberry Pi 3, mất 1-2 giây. Tiếp theo, chúng tôi sẽ kết nối một cảm biến hồng ngoại, cảm biến này sẽ kích hoạt các tập lệnh này. Một lần nữa, có rất nhiều hướng dẫn cách thiết lập Raspberry Pi và PIR, tôi đã làm theo hướng dẫn này: https://www.instructables.com/id/PIR-Sensor-Interfacing-With-Raspberry-Pi/. Về cơ bản, tạo một tệp bằng cách sử dụng trình soạn thảo nano (ví dụ: motion_sensor.py) và nhập mã Python thích hợp vào đó. Dưới đây là ví dụ về tệp của tôi:

nhập RPi. GPIO dưới dạng GPIO nhập thời gian nhập mã đồng bộ xử lý nhập ngày giờ dưới dạng dtimport osGPIO.setwarnings (Sai) # GPIO.setmode (GPIO. BOARD) GPIO.setmode (GPIO. BCM) GPIO.setup (17, GPIO. IN) #PIRturned_off = Falseltime time.time () SHUTOFF_DELAY = 180 # giây. SHUTOFF_DELAY): in "Không có kẻ xâm nhập", iturned_off = Truetime.sleep (1) subprocess.call (['/ home / pi / monitor_off.sh'], shell = True) elif i == 1: #Khi đầu ra từ cảm biến chuyển động là CAO, màn hình bật ONprint "Đã phát hiện thấy kẻ xâm nhập", itime.sleep (1) last_motion_time = time.time () sys.stdout.flush () nếu turn_off và dt.datetime.now (). giờ> 5 và dt.datetime. now (). hours <23: turn_off = Falsesubprocess.call (['/ home / pi / monitor_on.sh'], shell = True) if _name_ == '_main _': try: main () ngoại trừ KeyboardInterrupt: GPIO.cleanup ()

Lưu ý rằng “GPIO.setup (17, GPIO. IN)” chỉ ra rằng chân đầu ra từ PIR được kết nối với chân 17 trên Raspberry Pi. Pin nào là tùy thuộc vào việc bạn xác định GPIO.setmode (GPIO. BOARD) hay GPIO.setmode (GPIO. BCM). Sự khác biệt được giải thích ở đây: https://raspberrypi.stackexchange.com/questions/12966/what-is-the-difference-between-board-and-bcm-for-gpio-pin-numbering. Tôi có # trước GPIO. BOARD, vì vậy nó bị bỏ qua và GPIO. BCM được sử dụng.

Chú ý dòng

SHUTOFF_DELAY = 180 # giây

Ở đây được nêu rõ, màn hình được bật trong bao lâu kể từ khi chuyển động cuối cùng được phát hiện, trước khi nó bị tắt. Điều này hữu ích vì tôi không muốn màn hình tắt / bật liên tục khi tôi đi ngang qua nó, nhưng muốn bật màn hình một lúc trước khi tắt. Tôi đã chọn khoảng thời gian 180 giây để màn hình tắt khoảng 3 phút sau khi phát hiện chuyển động cuối cùng.

Cuối cùng, dòng này

nếu turn_off và dt.datetime.now (). giờ> 6 và dt.datetime.now (). giờ <23:

cho biết rằng màn hình chỉ bật trong khoảng thời gian từ 6 giờ đến 23 giờ, vì vậy nó không làm phiền tôi vào ban đêm. Những dòng kẻ

in "Không có kẻ xâm nhập", tôi

in "Đã phát hiện kẻ xâm nhập", tôi

chỉ để kiểm tra tập lệnh, bạn có thể xóa chúng sau này, khi tập lệnh hoạt động. Bây giờ hãy kiểm tra tập lệnh:

sudo python motion_sensor.py

Bạn sẽ thấy thông báo “Đã phát hiện kẻ xâm nhập”, nếu bạn vẫy tay trên cảm biến, nếu không sẽ là “Không có kẻ xâm nhập”. Khi tập lệnh này được kiểm tra và đang hoạt động, hãy đặt nó bắt đầu khi khởi động:

sudo nano ~ /.config / lxsession / LXDE-pi / autostart

và thêm dòng sau

@sudo / usr / bin / python /home/pi/motion_sensor.py

Tất nhiên bạn phải chỉ định tên tệp chính xác của tập lệnh Python mà bạn đã tạo.

Bước 5: Treo lịch

Sau khi đã thiết lập xong, đã đến lúc treo lịch lên tường!

Ban đầu, tôi nghĩ đến việc giấu Raspberry Pi sau màn hình LCD để chỉ cần một cáp (nguồn DC). Nhưng vì Raspberry chạy trên 5V và màn hình LCD chạy trên 12V, tôi sẽ cần thêm biến áp. Ngoài ra, vỏ Raspberry khá dày, có nghĩa là màn hình LCD sẽ được đặt cách tường khoảng 3 cm. Vì vậy, tôi đã từ bỏ điều này và chỉ để lại các thiết bị điện tử LCD phía sau màn hình LCD, để bây giờ nó cách tường chưa đầy 1 cm. Tôi đã mua hai dây cáp dài 5 mét, một HDMI và một dây 5, 5mm để cấp nguồn DC. Cả hai dây cáp đều có màu trắng, giống như bức tường, có nghĩa là chúng không nổi bật lắm. Tôi đã lắp màn hình LCD trên tường và đặt Raspberry trên tủ lạnh ở bức tường đối diện, vì vậy về cơ bản, nó bị ẩn nhưng vẫn có thể dễ dàng truy cập.

Đề xuất: