Mục lục:

Máy in Alexa - Máy in hóa đơn Upcycled: 7 bước (có hình ảnh)
Máy in Alexa - Máy in hóa đơn Upcycled: 7 bước (có hình ảnh)

Video: Máy in Alexa - Máy in hóa đơn Upcycled: 7 bước (có hình ảnh)

Video: Máy in Alexa - Máy in hóa đơn Upcycled: 7 bước (có hình ảnh)
Video: Ơ KÌA CHỒNG #Shorts 2024, Tháng sáu
Anonim
Image
Image
Máy in Alexa | Máy in hóa đơn Upcycled
Máy in Alexa | Máy in hóa đơn Upcycled

Tôi là người thích tái chế công nghệ cũ và biến nó trở lại hữu ích. Cách đây không lâu, tôi đã mua được một chiếc máy in hóa đơn nhiệt cũ, giá rẻ và tôi muốn có một cách hữu ích để sử dụng lại nó. Sau đó, trong những ngày lễ, tôi đã được tặng một Amazon Echo Dot và một trong những tính năng mà tôi sử dụng nhiều nhất là thêm hàng tạp hóa vào danh sách mua sắm của mình. Vì vậy, tôi nghĩ sẽ rất tuyệt nếu kết hợp cả hai và sử dụng máy in hóa đơn làm máy in IOT cho Alexa (hoặc Google Home hoặc Siri, v.v.). Hãy xem cần phải làm gì để biến ý tưởng này thành hiện thực.

Quân nhu

Đây là những phần tôi sử dụng cho dự án này:

  1. Máy in hóa đơn nhiệt chung giá rẻ (cần hỗ trợ ESC-POS)
  2. Thiết bị Amazon Alexa (các thiết bị "trợ lý gia đình" khác cũng có thể hoạt động)
  3. Raspberry Pi Zero Wireless
  4. Bộ điều chỉnh 7805 5v
  5. Tụ điện 10μf
  6. Tụ điện 1μf

Những thứ khác tôi sử dụng cho dự án này là:

  1. Nếu điều này thì điều đó (IFTTT.com)
  2. Thiết bị hàn

Bước 1: Thiết lập Raspberry Pi Zero W

Thiết lập Raspberry Pi Zero W
Thiết lập Raspberry Pi Zero W
Thiết lập Raspberry Pi Zero W
Thiết lập Raspberry Pi Zero W
Thiết lập Raspberry Pi Zero W
Thiết lập Raspberry Pi Zero W

Bước đầu tiên bạn tiến hành in lại máy in hóa đơn cũ. Tôi chọn sử dụng Raspberry Pi Zero W làm bộ điều khiển vì giá rẻ và kích thước nhỏ. Nó thực sự đủ nhỏ để vừa bên trong hộp máy in hóa đơn, vì vậy không có kết nối bên ngoài! Pi Zero W cũng được tích hợp Wifi nên về cơ bản mọi thứ đều được tích hợp vào nó với kích thước nhỏ gọn.

Để thiết lập và chạy Pi, chúng ta cần tải xuống hệ điều hành Raspbian và ghi nó vào thẻ nhớ microSD bằng một chương trình như Etcher. Cắm nó vào Pi cùng với cáp HDMI, bàn phím, chuột và sau đó cấp nguồn.

Khi Pi khởi động và bạn đang ở giao diện máy tính để bàn, bạn có thể kết nối với mạng không dây của mình bằng cách nhấp vào biểu tượng không dây ở phía trên bên phải và chọn tên kết nối không dây của bạn. Sau đó, nếu bạn nhấp chuột phải vào cùng một biểu tượng không dây đó, bạn có thể vào cài đặt mạng và đặt địa chỉ IP tĩnh để chúng ta có thể dễ dàng kết nối với nó qua mạng. Cuối cùng, bạn muốn nhấp vào menu chính và chọn "Trình chỉnh sửa cấu hình Raspbian" và trong tab "Giao diện", hãy đảm bảo SSH được bật. Sau đó, lưu nó và khởi động lại Pi của bạn.

Bước 2: In từ Pi

In từ Pi
In từ Pi
In từ Pi
In từ Pi

Khi Raspbery Pi đã được khởi động lại, nó sẽ được kết nối với mạng không dây của bạn bằng IP tĩnh và đã bật SSH. Vì vậy, bây giờ chúng ta có thể kết nối với nó từ xa từ bất kỳ máy tính nào khác. Để làm điều đó, bạn sẽ cần một ứng dụng khách SSH. Đối với Windows, một ứng dụng khách tốt là Putty. Bạn có thể kết nối với nó bằng địa chỉ IP tĩnh của Pi mà chúng tôi đã đặt trước đó. Sau đó, bạn có thể đăng nhập bằng cách sử dụng "pi" làm tên người dùng và "raspberry" làm mật khẩu.

Sau khi đăng nhập thành công, bây giờ chúng ta sẽ ở giao diện đầu cuối của Pi. Tại đây chúng ta có thể nhập các lệnh sẽ thực thi trên Raspberry Pi. Ví dụ, một trong những điều đầu tiên chúng tôi muốn làm là đảm bảo phần mềm trên Pi được cập nhật. Vì vậy, trong terminal, chúng ta có thể nhập:

sudo apt-get cập nhật

Lệnh này sẽ cập nhật kho phần mềm trên Pi. Tiếp theo, chúng ta có thể cài đặt phần mềm máy in ESC-POS và các thư viện cần thiết.

sudo apt-get install python3 python3-setuptools python3-pip libjpeg8-devsudo pip3 install --upgrade pip sudo pip3 install python-escpos

Sau khi hoàn tất, bây giờ chúng ta có thể kết nối Máy in với cổng Micro-USB của Pi (sử dụng bộ chuyển đổi) và bật nó lên. Sau đó, trong thiết bị đầu cuối của chúng tôi, chúng tôi có thể tạo một tập lệnh python nhỏ

nano hello_world.py

Và trong đó chúng ta có thể thêm mã python này

#! / usr / bin / pythonfrom escpos.printer import Usb p = Usb (0x0416, 0x5011) p.text ("Mini IOT Printer / n") p.close ()

Thoát khỏi nó (CTRL-X), lưu nó (CTRL-Y) và chạy nó để kiểm tra

python3 hello_world.py

Bước 3: Kết nối với Internet of Things (Phần 1)

Kết nối với Internet of Things (Phần 1)
Kết nối với Internet of Things (Phần 1)
Kết nối với Internet of Things (Phần 1)
Kết nối với Internet of Things (Phần 1)
Kết nối với Internet of Things (Phần 1)
Kết nối với Internet of Things (Phần 1)
Kết nối với Internet of Things (Phần 1)
Kết nối với Internet of Things (Phần 1)

Máy in sẽ tốt gì nếu không có thứ để in? Tôi muốn bật chức năng in từ các dịch vụ internet khác nhau, chẳng hạn như Alexa. Vậy làm thế nào tôi có thể thực hiện được điều đó? Một tùy chọn là chọn một dịch vụ internet cụ thể, theo dõi tài liệu API của họ và viết ứng dụng dựa trên API của họ. Nhưng tôi chọn con đường lười biếng…

Có một trang web tuyệt vời có tên "If This Then That" kích hoạt các hành động cho các dịch vụ internet khác nhau (Alexa, Google Home, Gmail, Facebook, Instagram, Twitter, v.v.) dựa trên một bộ tiêu chí. Ví dụ: "nếu" tôi đăng lên Facebook (cái này), "Sau đó" hãy gửi cho tôi e-mail (cái đó).

Vì vậy, trong nửa đầu của việc này, tôi đã đăng ký một tài khoản miễn phí, bạn có thể bắt đầu tạo một "applet" mới cho các dịch vụ khác nhau mà bạn muốn kích hoạt. Phần "This" trong applet của tôi sẽ là Alexa. Có rất nhiều trình kích hoạt Alexa để bạn lựa chọn, nhưng tôi sẽ chọn một trình kích hoạt có nội dung "Hỏi có gì trong danh sách mua sắm của bạn". Và cuối cùng chúng tôi muốn nó kích hoạt một tập lệnh Python trên Raspberry Pi, vì vậy đối với phần "That" của tập lệnh, chúng tôi muốn chọn Webhooks.

Trong tùy chọn Webhooks, chúng tôi có thể thêm một URL trỏ đến Pi của chúng tôi, chúng tôi sẽ quay lại sau. Chúng ta có thể để trường Phương pháp là "Nhận", và đối với loại nội dung, hãy chọn "Văn bản thuần túy". Đối với trường Nội dung, hãy nhấp vào "Thêm thành phần" và chọn "Toàn bộ danh sách". Thao tác này sẽ gửi toàn bộ danh sách mua sắm dưới dạng yêu cầu Nhận.

Bước 4: Kết nối với Internet of Things (Phần 2)

Kết nối với Internet of Things (Phần 2)
Kết nối với Internet of Things (Phần 2)
Kết nối với Internet of Things (Phần 2)
Kết nối với Internet of Things (Phần 2)

Bước trước sẽ xử lý phần "Internet", vì vậy bây giờ hãy làm việc với phần "mọi thứ" bằng cách sử dụng Raspberry Pi. Để giao tiếp với ứng dụng webhooks "If This Then That", chúng ta cần thiết lập một máy chủ web trên Raspberry Pi. Có nhiều cách khác nhau để thiết lập một máy chủ web, nhưng cuối cùng tôi muốn chạy một tập lệnh Python, tôi đã quyết định sử dụng máy chủ Flask của Python.

Pi có tất cả các thư viện Flask được cài đặt sẵn, vì vậy tất cả những gì chúng ta cần làm là bắt đầu viết một tập lệnh thử nghiệm:

nano flask_test.py

Và trong đó, hãy thêm một số mã phục vụ một trang web đơn giản.

#! flask / bin / python # IMPORT THE FLASK LIBRARIES from flask import flask, request #CREATE A FLASK VARIABLE app = Flask (_ name_) #CREATE AN 'INDEX' PAGE @ app.route ('/') def index (): return 'Máy chủ Flask của bạn đang hoạt động!' # CHẠY CHƯƠNG TRÌNH if _name_ == '_main_': app.run (debug = True, host = '0.0.0.0')

Bây giờ chỉ cần lưu chương trình và chạy nó bằng lệnh sau:

sudo python3 flask_test.py

Bạn sẽ thấy bằng phản hồi lệnh rằng cổng mặc định mà Flask chạy là cổng 5000. Vì vậy, trong trình duyệt web, nếu bạn nhập Địa chỉ IP của Pi: 5000, bạn sẽ thấy dòng chữ "Máy chủ Flask của bạn đang hoạt động!"

Chúng tôi có mã Python thử nghiệm của chúng tôi từ trước đó được in ra máy in hóa đơn của chúng tôi và chúng tôi có máy chủ Flask thử nghiệm của mình. Vì vậy, tiếp theo, chúng ta cần kết hợp chúng và kết hợp một số mã kéo dữ liệu từ ứng dụng Webhook của chúng ta. Hãy tạo một tệp Python mới:

nano iot_print_server.py

Và bên trong nó, hãy thêm mã sau:

#! flask / bin / python # IMPORT FLASK AND PRINTER LIBRARIES from flask import flask, request from escpos.printer import Usb #ASSIGN VARIABLES CHO MÁY IN VÀ FLASK p = Usb (0x0416, 0x5011) app = Flask (_ name_) #CREATE 'INDEX' PAGE @ app.route ('/') def index (): return 'Máy chủ Flask của bạn đang hoạt động!' #CREATE "TRANG" ĐƯỢC GỌI LÀ "DANH SÁCH" ĐỂ IN DANH SÁCH MUA SẮM ALEXA @ app.route ('/ list') def list (): #CAPTURE "NHẬN" DỮ LIỆU TỪ IFTTT WEBOOKS content = request.get_data () #CONVERT NGUYÊN LIỆU ĐẾN STRING str_content = str (nội dung) # DỮ LIỆU BỊ CHUYỂN HÓA VÀO DÒNG SEPERATE str_split = str_content.splitlines () # DỮ LIỆU BẰNG COMMA VÀ THÊM VÀO DANH SÁCH MỚI newlist = cho từ trong str_split: word = word.split (',') newlist.extend (word) #REMOVE FORMATTING MARKS rmv_marks = [s.strip ("b '") cho s trong danh sách mới] #PRINT HEADER #print ("Danh sách mua sắm / n") p.text ("Danh sách mua sắm: / n ") #ENUMERATE VÀ IN TỪNG MỤC TRONG DANH SÁCH r = 1 cho x trong rmv_marks: #print (str (r) +". "+ X +" / n ") p.text (str (r) +". "+ x + "\ n") r + = 1 #RETURN KẾT QUẢ trả về 'x' # CHẠY CHƯƠNG TRÌNH if _name_ == '_main_': app.run (debug = True, host = '0.0.0.0')

Bạn có thể chạy nó để xem nó có trả về bất kỳ lỗi nào không, nhưng nó sẽ không hoạt động với webhook của chúng tôi vì hiện tại, máy chủ chỉ đang chạy cục bộ. Chưa có URL bên ngoài nào để webhook kết nối. Chúng tôi có thể thiết lập chuyển tiếp cổng trên bộ định tuyến của mình và chỉ sử dụng địa chỉ IP bên ngoài, nhưng điều đó không thực sự quá an toàn. Để thay thế, tôi quyết định sử dụng NGROK.

Bước 5: Thiết lập quyền truy cập bên ngoài với Ngrok

Thiết lập quyền truy cập bên ngoài với Ngrok
Thiết lập quyền truy cập bên ngoài với Ngrok
Thiết lập quyền truy cập bên ngoài với Ngrok
Thiết lập quyền truy cập bên ngoài với Ngrok

Ngrok thiết lập kết nối an toàn với mạng của bạn mà không cần phải để lộ IP bên ngoài của bạn hoặc gây rối với chuyển tiếp cổng. Sau khi đăng ký một tài khoản miễn phí, nó sẽ cung cấp cho bạn một mã thông báo ủy quyền. Sau đó, trên Raspberry Pi của bạn, bạn có thể tải xuống, giải nén nó, kết nối mã thông báo xác thực của bạn và sau đó chạy nó trên cổng 5000:

mkdir ngrokcd ngrok wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable… giải nén ngrok-stable-linux-arm./ngrok authtoken [chèn mã xác thực của bạn tại đây]./ngrok http 5000

*** QUAN TRỌNG *** Phiên bản miễn phí của Ngrok không cung cấp cho bạn một địa chỉ tĩnh, vì vậy mỗi khi bạn chạy lại Ngrok, nó sẽ cung cấp cho bạn một địa chỉ khác. Nếu bạn muốn có một địa chỉ tĩnh để không phải tiếp tục chỉnh sửa lại Webhook của mình, thì bạn sẽ cần phải trả tiền cho một tài khoản được nâng cấp.

Một giải pháp thay thế miễn phí cho Ngrok cung cấp IP tĩnh được gọi là "Serveo" tại www.serveo.net

************************

Trên màn hình kết quả, nó cung cấp cho bạn một địa chỉ chuyển tiếp (https://random-string.ngrok.io) mà bạn có thể sử dụng trong ứng dụng Webhook của mình. Vì vậy, quay lại "If This Then That", trong trường URL, hãy nhập địa chỉ chuyển tiếp Ngrok của bạn và trỏ nó đến trang "danh sách" trên máy chủ Flask của chúng tôi. Nó sẽ trông giống như thế này

random_string.ngrok.io/list

Sau đó, hãy tiếp tục và lưu các thay đổi.

Để kiểm tra, hãy tiếp tục chạy Ngrok, mở một thiết bị đầu cuối mới và chạy tập lệnh python của chúng tôi. Khi cả hai mặt hàng đang chạy, hãy hỏi Alexa có gì trong danh sách mua sắm của bạn. Sau một hoặc hai phút, nó sẽ in ra kết quả. Nếu bạn muốn nó in ngay lập tức, chỉ cần truy cập Applet của bạn trên IFTTT và nhấp vào "Kiểm tra ngay". Nếu mọi thứ suôn sẻ, máy in hóa đơn sẽ in ra những gì trong danh sách mua sắm của bạn! Đoạn mã cuối cùng mà chúng tôi cần thêm là một cách để tự động khởi động ngrok và máy chủ bình của chúng tôi mỗi khi Pi khởi động. Chúng tôi có thể dễ dàng làm điều đó bằng cách làm cho tập lệnh Python của chúng tôi có thể thực thi được:

chmod + x iot_print_server.py

Sau đó, chúng tôi có thể chỉnh sửa tệp /etc/rc.local của mình để nó trông giống như sau:

## Theo mặc định, tập lệnh này không làm gì cả. # In địa chỉ IP _IP = $ (tên máy-I) || true if ["$ _IP"]; sau đó printf "Địa chỉ IP của tôi là% s / n" "$ _IP" fi #autostart ngrok và trỏ nó đến tệp auth của bạn./home/pi/ngrok/ngrok http -config = / home / pi /.ngrok2 / ngrok. yml 5000 #autostart script python của máy in sudo python3 /home/pi/iot_receipt_printer.py & exit 0

Bước 6: Thêm số Pi vào máy in

Thêm số Pi vào máy in
Thêm số Pi vào máy in
Thêm số Pi vào máy in
Thêm số Pi vào máy in
Thêm số Pi vào máy in
Thêm số Pi vào máy in
Thêm số Pi vào máy in
Thêm số Pi vào máy in

Máy in hóa đơn của tôi có rất nhiều chỗ trống bên trong vỏ. Và với việc Raspberry Pi Zero nhỏ như vậy, tôi nghĩ chỉ cần giấu nó trong máy in hóa đơn để nó trông giống như một thiết bị thì sẽ rất tuyệt. Vấn đề duy nhất là máy in hóa đơn chạy trên 12v và Pi chạy trên 5v. Vì vậy, nếu chúng ta chỉ muốn một cáp nguồn cấp nguồn cho cả hai, chúng ta sẽ phải giảm cấp nguồn 12v đó xuống 5v.

Sử dụng bộ điều chỉnh điện áp 7805, tụ điện 1uf và tụ điện 10uf, tôi đã có thể tạo bộ điều chỉnh 5v đơn giản mà tôi kết nối với bảng logic của máy in hóa đơn. Tôi hàn dây "-" vào mặt đất chung, sau đó tôi hàn dây "+" vào bên "trên" của công tắc nguồn để Pi sẽ bật và tắt khi bật và tắt máy in. Sử dụng đồng hồ đa năng, tôi đã kiểm tra để xác nhận rằng đầu ra là an toàn cho Pi. Sau đó, tôi hàn cáp micro-usb và kết nối nó với Pi. Sau khi cắm cáp vào máy in và bật công tắc, cả máy in và Pi đều bật!

Cuối cùng, tôi đã khoan một lỗ để kết nối cáp USB từ Pi với máy in. Tôi tìm thấy một nơi để đặt bộ điều chỉnh 5v và Pi bên trong hộp máy in, sau đó tôi đặt mọi thứ lại với nhau. Vì vậy, bây giờ máy in cũng có máy chủ web độc lập của riêng nó!

Bước 7: Tiến xa hơn

Tiến xa hơn
Tiến xa hơn

Nếu bạn có thể xem qua "If This Then That", bạn có thể nhận thấy rằng nó có rất nhiều dịch vụ web khác nhau để kết nối. Vì vậy, nếu bạn không có Alexa hoặc không muốn sử dụng Alexa, bạn có thể sử dụng dự án này để in từ bất kỳ thứ gì, chẳng hạn như Facebook, Twitter, Gmail, Google Home, Evernote, Tumblr, Flickr, Wordpress, vv Bạn có thể tìm thấy mã của tôi để in Tweet trên trang Github của tôi. Bây giờ hãy đi và xem những gì bạn có thể nghĩ ra!

Thách thức IoT
Thách thức IoT
Thách thức IoT
Thách thức IoT

Giải nhất trong Thử thách IoT

Đề xuất: