Mục lục:

Máy nạp vật nuôi với RasPi và Telegram Bot: 4 bước (có hình ảnh)
Máy nạp vật nuôi với RasPi và Telegram Bot: 4 bước (có hình ảnh)

Video: Máy nạp vật nuôi với RasPi và Telegram Bot: 4 bước (có hình ảnh)

Video: Máy nạp vật nuôi với RasPi và Telegram Bot: 4 bước (có hình ảnh)
Video: Tìm hiểu Multi-Label Classification và làm bài toán nhận diện phong cảnh - Mì AI 2024, Tháng bảy
Anonim
Máy nạp vật nuôi với RasPi và Telegram Bot
Máy nạp vật nuôi với RasPi và Telegram Bot
Máy nạp vật nuôi với RasPi và Telegram Bot
Máy nạp vật nuôi với RasPi và Telegram Bot

Trước hết, tôi cần làm rõ rằng đây không phải là Idea Mine ban đầu, chỉ cần cập nhật và điều chỉnh các tập lệnh lập trình để hoạt động với telegram, tôi đã tìm thấy nó trong một cuốn sách có thể hướng dẫn trước đó nên các khoản tín dụng thực sự là tác giả của nó.

Bạn có thể xem phiên bản tiếng Tây Ban Nha của điều này trong Blog cá nhân của tôi:

Bạn cần phải xây dựng một mạch điện nhỏ để kích hoạt một động cơ mô-men xoắn cao và vì kiến thức về điện tử của tôi rất rất hiếm nên tôi đã phải dành vài ngày để học những kiến thức cơ bản bằng cách xem video trên YouTube.

Tập lệnh tự động hóa ban đầu được viết bằng Python và sử dụng kết nối GMail để tham khảo các lệnh, tôi chưa bao giờ sử dụng ngôn ngữ lập trình này nhưng sự thật thì không quá khác so với các ngôn ngữ khác, tôi đã sửa đổi một chút để nó thích nghi tốt hơn với ngôn ngữ mới những thư viện Python và quá trình tự động hóa cùng với cấu hình hệ điều hành cho phép bạn tham số hóa như sau:

  • Tương tác thông qua các lệnh gửi đến Trò chuyện được điều khiển thông qua ChatBots.
  • Nó cho phép theo dõi trạng thái của thực phẩm đã được phân phối.
  • Kiểm soát lượng thức ăn sẽ được phân phát.
  • Nó có các nút cho phép bạn cho ăn theo cách thủ công.
  • Nó không cho phép cho ăn quá mức bằng cách tắt cho ăn cách nhau 8 giờ.
  • Nó có một màn hình LCD trạng thái hiển thị dữ liệu là ngày và giờ của lần cấp nguồn tiếp theo, SSID mà nó được kết nối với WiFi và địa chỉ IP của thiết bị.
  • Tùy chọn: Hiển thị một số Truyện cười ngẫu nhiên của Chuck Norris và / hoặc Câu đố về các con số bằng cách sử dụng một cặp APIS công cộng (Tài tình của tác giả gốc).
  • Hệ thống không bị khởi động lại do bị cắt điện vì nó lưu tệp trạng thái.
  • Hệ thống Phát hiện khi mất kết nối và cố gắng kết nối lại cho đến khi thành công.

Bước 1: Vật liệu đã qua sử dụng

  • 1 Raperry Pi, tốt nhất là phiên bản 3 đã được tích hợp với thẻ Không dây, bạn cũng có thể sử dụng phiên bản Pi 3 Zero, mất nhiều công hơn một chút vì bạn phải hàn các chân, nhưng tôi phát hiện ra rất muộn rằng nó có thể được sử dụng một trong số này tiết kiệm hơn.
  • 1 động cơ điện mô-men xoắn cao, 37mm, 3.5 vòng / phút và 12V.
  • 1 Braket cho động cơ 37mm.
  • Màn hình LCD 1 ký tự 20x4 dòng với bộ điều khiển HD44780.
  • 1 Máy phân phối ngũ cốc Zevro Model WM1001 trục-D dài 5 inch, đường kính 0,63cm (Cần cắt D để gắn vào máy phân phối)
  • 1 Bộ ghép trục từ 1/4 "đến 6mm để nối với động cơ.

Tất cả các vật liệu trước đây, ngoại trừ hai vật liệu cuối cùng tôi không thể mua được ở đất nước của mình (hoặc ít nhất là tôi không biết lấy chúng ở đâu), tuy nhiên que và bộ ghép có thể ở trong một xưởng hàn nhưng đây là lần đầu tiên tôi làm điều gì đó. như vậy, tôi không biết nó phải như thế nào để phù hợp với động cơ nên tôi đã hỏi trang của các liên kết được mô tả ở trên; Dưới đây là các tài liệu mà tôi có thể mua ở các cửa hàng địa phương:

  • 1 hộp gỗ, mình dùng rộng 20,3 cm x cao 26,7 cm x sâu 13 cm. hộp có cửa mở sang phải khoét lỗ 10cm x 4cm để đặt màn hình LCD (mộc cục)
  • 3 nút nhấn
  • 1 Protoboard nhỏ
  • 1 LED 3,3 Volts (Không quan trọng màu sắc nhưng đối với điện áp, chúng thường có màu Đỏ)
  • 1 bóng bán dẫn NPN PN2222
  • 1 Điện trở 270 Ω
  • 1 Điện trở 10 KΩ
  • 1 chiết áp 10 KΩ
  • 1 diode IN4003 (IN4001 hoặc IN4004 có thể hoạt động)
  • 1 bộ chuyển đổi 12V 3A
  • 1 bộ chuyển đổi 5V 2A
  • 4 vít với đai ốc cánh từ 1,5 inch đến 2 inch (tùy thuộc vào độ dày của gỗ được sử dụng, chúng để cố định giá đỡ động cơ vào hộp gỗ)
  • Cáp Jumper sợi có nhiều màu sắc khác nhau
  • 1 ống gấp hoặc một bộ PVC có Đường kính 4 inch, điều này phụ thuộc vào chiều cao mà hộp gỗ sẽ được đặt.
  • 1 khuỷu tay PVC gắn vào bó bột trước đó.
  • Kẹp 3 ống xe hơi (Thế giới)
  • 4 Chân Cáp UTP (chúng tôi cần các cặp xoắn để tạo kết nối)
  • 1 USB WebCam, không nhất thiết phải có độ phân giải cao.

Một số vật liệu linh tinh có thể kiếm được ở các cửa hàng phần cứng hoặc có thể chúng tôi đã có: Băng keo công nghiệp

  • Thợ hàn thiếc
  • Tin
  • Máy khoan
  • Khoan 5/16
  • Vít S8 với bộ mở rộng

Bước 2: Đặt cấu trúc

Đặt cấu trúc
Đặt cấu trúc
Đặt cấu trúc
Đặt cấu trúc
Đặt cấu trúc
Đặt cấu trúc

Ý tưởng chính là thay thế tay cầm phân phối đi kèm trong ZEVRO bằng thanh D sau đó sẽ được kết nối với Động cơ bằng Bộ ghép nối. Bộ phân phối sẽ được gắn vào hộp gỗ và hộp gỗ vào tường. Vì tôi không biết nhiều về điện tử nên tôi không sử dụng bất kỳ tấm Bakelite nào để gắn mạch nên tôi đã sử dụng breadboard để đặt tất cả các thành phần nên ở dưới cùng của hộp được gắn chặt bằng vít Rapberry Pi và breadboard đã có keo dính. ở mặt sau nên mình mới đi dán. Hộp phải có ba nút sẽ có chức năng Khởi động lại bộ hẹn giờ, kích hoạt bộ nạp và nút cuối cùng sẽ là bước kích hoạt trực tiếp động cơ mà không cần thông qua mạch điện. Động cơ sẽ được giữ bên trong hộp bằng giá đỡ, vì vậy chỉ có thanh D kết nối với bộ phân phối mới nhô ra khỏi hộp, ở dưới cùng của hộp hãy cố định và điều chỉnh webcam sao cho trong mỗi lần tư vấn và xác nhận của tôi. đã gửi một bức ảnh về đĩa thức ăn như thế nào, điều này để không cho ăn quá mức trong trường hợp chúng chưa ăn hết lượt thức ăn cuối cùng.

Từ dưới cùng của thiết bị phân phối, ống đi xuống đĩa được đặt và khuỷu tay PVC được đặt trên đế, tôi đặt một ít Băng công nghiệp vào đầu ra để giảm thiểu tốc độ của dòng thực phẩm và làm đế phân phối cho ngăn không cho thực phẩm phun khắp nơi. Để cố định đường ống vào tường, hãy sử dụng các giá đỡ kim loại mà bạn cố định vào tường bằng đinh vít S8.

Trên cửa hộp, giữ tấm màn hình LCD và sử dụng các cặp xoắn của cáp UTP để đưa chúng trực tiếp đến Raspberry, ở đầu còn lại của cáp nối các đầu cái của jumper để giúp kết nối dễ dàng hơn các cổng GPIO của Raspberry. Đây sẽ là sơ đồ mạch. Tôi sẽ cố gắng giải thích nó với những gì tôi có thể nhận được từ Điện tử.

Động cơ được kết nối trực tiếp với cực dương của máy biến áp 12 vôn nhưng để dòng điện chạy qua nó phải đi qua mạch ở cực trung tính của động cơ, đối với bóng bán dẫn N2222 này được sử dụng. Các bóng bán dẫn thường có 3 chân tương ứng với một bộ thu, một chân đế và một bộ phát, tùy thuộc vào kiểu bóng bán dẫn mà vị trí của các chân này có thể khác nhau; Bóng bán dẫn này làm cho chức năng chuyển đổi. Đây là nơi chúng tôi kết nối cực trung tính của động cơ với cực thu của bóng bán dẫn, chân số 19 của rapberry được kết nối với đế bằng điện trở 270Ω và bộ phát được kết nối với cực trung tính của bóng bán dẫn. Máy biến áp 12V cùng với một trong các cực đất của mâm xôi; bóng bán dẫn sẽ cho phép dòng điện chạy giữa bộ thu và bộ phát miễn là cơ sở được kích thích với điện áp đủ; Sau đó, chúng ta sẽ lập trình rapberry để theo một số lệnh nhất định, cổng 19 sẽ phát ra 3,3 volt, đủ để mạch tiếp tục và kích hoạt động cơ.

Đối với màn hình LCD, một phần khác của protobard được sử dụng trong một mạch khác, nơi bạn kết nối chiết áp 10KΩ loại bỏ độ tương phản của văn bản xuất hiện trên màn hình LCD, vì vậy nếu không có gì xuất hiện trên màn hình thì có thể là do chiết áp hoàn toàn đóng cửa; trong trường hợp của tôi, tôi để nó mở hoàn toàn để văn bản được hình dung tốt hơn. Cuối cùng, các kết nối trong breadboard sẽ như sau.

Bước 3: Cấu hình Raspberry Pi

Trước hết, điều quan trọng là phải tạo Telegram Bot mà hệ thống sẽ được quản lý, Bạn sẽ cần một khóa để sửa đổi tập lệnh python đính kèm. Vui lòng đọc các bước trên Tài liệu điện tín:

core.telegram.org/bots#3-how-do-i-create-a-bot

Để định cấu hình rapberry, hãy sử dụng phiên bản Lite của Rapbian (chúng tôi không cần giao diện đồ họa) và áp dụng cấu hình cơ bản hiển thị raspbian khi nó được cài đặt hoặc sử dụng lệnh raspi-config: mở rộng không gian lên 100% và bật SSH nhưng điều đặc biệt quan trọng nhất là thay đổi mật khẩu và tên người dùng thành người dùng pi theo mặc định (Nếu không, như đã xảy ra với tôi, họ có thể bị tấn công bởi cổng 22 nếu họ có địa chỉ IP công khai đến mâm xôi). Ngoài ra, cấu hình để kết nối tự động với mạng WiFi của tôi (Giả sử mạng của tôi được gọi là "BlogSoriano" và mật khẩu của tôi là "$ ecure123!") Chúng tôi tạo và lưu khóa trong tệp Kết nối không dây bằng lệnh sau:

sudo wpa_passphrase "BlogSoriano" "$ ecure123!" | sudo tee -a /etc/wpa_supplicant/wpa_supplicant.conf> / dev / null

việc tiếp theo là cập nhật và cài đặt hệ thống cài đặt python "pip", vì vậy chúng tôi sẽ đăng nhập với quyền root, cập nhật và cài đặt các gói cần thiết:

sudo -i apt-get update apt-get install build-essential python-dev python-smbus python-pip

Với điều này, chúng tôi đã có quyền truy cập vào thư viện lớp python, đối với tập lệnh mà chúng tôi sẽ sử dụng, chúng tôi cần cài đặt những thứ sau:

pip cài đặt RPi. GPIO Adafruit-CharLCD httplib2 html2text netifaces điện thoại di động không dây cv2

Khi quá trình cài đặt phụ thuộc kết thúc, chúng tôi sẽ sử dụng tập lệnh được đính kèm trong bước này, tôi lưu nó trong đường dẫn /opt/petfeeder.py và tệp có thể được tạo bằng lệnh nano /opt/petfeeder.py và bên trong tệp này chúng tôi dán mã hoặc, nếu bạn có nhiều kinh nghiệm hơn về Linux, bạn có thể tải xuống trực tiếp bằng wget. Trong tập lệnh, điều quan trọng là phải sửa đổi các biến BOTKEY (ở dòng 36) và SYSPASSWORD (ở dòng 23).

Tôi làm rõ rằng mã này không phải do tôi viết vì tôi chưa bao giờ lập trình bằng Python, tôi chỉ sửa đổi nó để hoạt động với các thư viện mới và với màn hình LCD 20x4 và sử dụng Telegram Bot.

Khi chúng ta có Script, chúng ta phải thay đổi giá trị của các biến bằng khóa cho bot; vì điều này, cần phải tạo một Telegram Bot mới, với điều đó nó sẽ chỉ là lưu tệp và thoát (với Ctrl + hoặc lưu và ctrl + x rời khỏi trình chỉnh sửa nano), chúng tôi chỉ cần là bằng chứng về việc khởi động lại; tập lệnh tự lưu vào lần cuối cùng hệ thống nguồn được kích hoạt, vì vậy chúng tôi chỉ phải làm cho tập lệnh chạy mỗi khi hệ điều hành khởi động, vì điều này, tôi đã tìm thấy một giải pháp rất cụ thể với một chương trình có tên là supervisor, được cài đặt từ kho Debian:

apt-get cài đặt giám sát

và sau khi cài đặt, chúng ta chỉ cần tạo một tệp cấu hình trong /etc/supervisor/conf.d/petfeeder.conf, như trong trường hợp trước chúng ta có thể tạo và lưu nó bằng nano, tệp này sẽ có như sau:

[program: petfeederd] directory = / opt command = python petfeeder.py autostart = true autorestart = true

Sau khi tệp được lưu, chúng ta có thể sử dụng lệnh supervisorctl [start | dừng lại | khởi động lại] petfeederd, vì trong trường hợp này dịch vụ chưa được khởi động, chúng tôi thực thi nó với start:

supervisorctl bắt đầu petfeederd

Bước 4: Sẵn sàng kiểm tra

Image
Image
Sẵn sàng để kiểm tra
Sẵn sàng để kiểm tra
Sẵn sàng để kiểm tra
Sẵn sàng để kiểm tra
Sẵn sàng để kiểm tra
Sẵn sàng để kiểm tra

Và với điều này, hệ thống sẽ hoạt động, màn hình LCD sẽ hiển thị thông tin về thời điểm nó sẽ là nguồn cấp dữ liệu tiếp theo hoặc liệu nó đã sẵn sàng để cấp dữ liệu hay chưa. Bạn cũng phải hiển thị tên của mạng không dây mà bạn đang kết nối và địa chỉ IP đang được sử dụng trong trường hợp chúng tôi cần kết nối thông qua SSH, tôi chia sẻ một video nhỏ mà tôi đã thực hiện, tôi xin lỗi vì chất lượng của nó, tôi tôi không tốt lắm là chủ đề này của vlog.

Bạn sẽ có thể tìm kiếm bot của mình trên Telegram và Gửi một trong các lệnh tiếp theo sau khi bạn / cho phép trò chuyện của mình:

/ feed: Bắt đầu quá trình cho ăn miễn là đã trôi qua khoảng thời gian được tham số hóa.

/ when: nó trả về thông tin về lần cho ăn cuối cùng và hình ảnh của đĩa thức ăn.

/ photo: Trả lại hình ảnh đĩa thức ăn.

/ restart: Khởi động lại hệ thống, đặt biến của last feed là 0 để có thể feed ngay lập tức.

/ status Nó thông báo về trạng thái kết nối Internet: SSID của Mạng không dây được kết nối và địa chỉ IP mà hệ thống có trong mạng.

Đề xuất: