Daftar Isi:

Pencetak Alexa - Printer Tanda Terima Upcycled: 7 Langkah (dengan Gambar)
Pencetak Alexa - Printer Tanda Terima Upcycled: 7 Langkah (dengan Gambar)

Video: Pencetak Alexa - Printer Tanda Terima Upcycled: 7 Langkah (dengan Gambar)

Video: Pencetak Alexa - Printer Tanda Terima Upcycled: 7 Langkah (dengan Gambar)
Video: NASA's Concerns with SpaceX Starship Delay, CRS-28 and ULA Vulcan Test Fire 2024, November
Anonim
Image
Image
Pencetak Alexa | Printer Tanda Terima yang Didaur Ulang
Pencetak Alexa | Printer Tanda Terima yang Didaur Ulang

Saya penggemar daur ulang teknologi lama dan membuatnya berguna lagi. Beberapa waktu yang lalu, saya telah membeli printer tanda terima termal yang lama dan murah, dan saya ingin cara yang berguna untuk menggunakannya kembali. Kemudian, selama liburan, saya diberi hadiah Amazon Echo Dot, dan salah satu fitur yang paling sering saya gunakan adalah menambahkan bahan makanan ke daftar belanja saya. Jadi saya pikir akan keren untuk menggabungkan keduanya dan menggunakan printer tanda terima sebagai printer IOT untuk Alexa (atau Google Home, atau Siri, dll). Mari kita lihat apa yang diperlukan untuk mewujudkan ide ini.

Perlengkapan

Inilah bagian yang saya gunakan untuk proyek ini:

  1. Printer tanda terima termal generik murah (perlu mendukung ESC-POS)
  2. Perangkat Amazon Alexa (perangkat "asisten rumah" lainnya mungkin juga berfungsi)
  3. Raspberry Pi Nol Nirkabel
  4. 7805 5v Regulator
  5. 10μf Kapasitor
  6. 1μf Kapasitor

Hal-hal lain yang saya gunakan untuk proyek ini adalah:

  1. Jika Ini Maka Itu (IFTTT.com)
  2. Peralatan Solder

Langkah 1: Menyiapkan Raspberry Pi Zero W

Menyiapkan Raspberry Pi Zero W
Menyiapkan Raspberry Pi Zero W
Menyiapkan Raspberry Pi Zero W
Menyiapkan Raspberry Pi Zero W
Menyiapkan Raspberry Pi Zero W
Menyiapkan Raspberry Pi Zero W

Langkah pertama adalah mencetak kembali printer struk yang lama. Saya memilih menggunakan Raspberry Pi Zero W sebagai pengontrol karena harganya yang murah dan ukurannya yang kecil. Ini sebenarnya cukup kecil untuk muat di dalam kotak printer resi itu sendiri, jadi tidak ada koneksi eksternal! Pi Zero W juga memiliki Wifi bawaan sehingga semuanya pada dasarnya terintegrasi ke dalam ukurannya yang kecil.

Untuk menjalankan dan menjalankan Pi, kita perlu mengunduh OS Raspbian dan membakarnya ke kartu microSD menggunakan program seperti Etcher. Masukkan ke Pi bersama dengan kabel HDMI, keyboard, mouse, dan kemudian power.

Saat Pi boot dan Anda berada di antarmuka desktop, Anda dapat terhubung ke nirkabel Anda dengan mengklik ikon nirkabel di kanan atas dan memilih nama koneksi nirkabel Anda. Kemudian jika Anda mengklik kanan pada ikon nirkabel yang sama, Anda dapat pergi ke pengaturan jaringan dan mengatur alamat IP statis sehingga kami dapat dengan mudah menghubungkannya melalui jaringan. Terakhir, Anda ingin mengklik menu utama dan memilih "Raspbian Configuration Editor" dan di bawah tab "Interfaces", pastikan SSH diaktifkan. Kemudian simpan dan reboot Pi Anda.

Langkah 2: Mencetak Dari Pi

Mencetak Dari Pi
Mencetak Dari Pi
Mencetak Dari Pi
Mencetak Dari Pi

Setelah Raspbery Pi di-boot ulang, itu harus terhubung ke jaringan nirkabel Anda dengan IP statis dan dengan SSH diaktifkan. Jadi sekarang kita harus dapat menghubungkannya dari jarak jauh dari komputer lain mana pun. Untuk melakukannya, Anda memerlukan klien SSH. Untuk Windows, klien yang baik adalah Putty. Anda dapat menghubungkannya menggunakan alamat IP statis Pi yang kami atur sebelumnya. Kemudian Anda dapat login menggunakan "pi" sebagai nama pengguna dan "raspberry" sebagai kata sandi.

Setelah login berhasil, kita sekarang harus berada di antarmuka terminal Pi. Di sini kita bisa mengetikkan perintah yang akan dijalankan pada Raspberry Pi. Misalnya, salah satu hal pertama yang ingin kami lakukan adalah memastikan perangkat lunak pada Pi sudah diperbarui. Jadi, di terminal kita bisa mengetik:

sudo apt-get update

Perintah ini akan memperbarui repositori perangkat lunak pada Pi. Selanjutnya, kita dapat menginstal perangkat lunak printer ESC-POS dan perpustakaan yang diperlukan.

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

Setelah itu selesai, kita sekarang dapat menghubungkan Printer ke port Micro-USB Pi (menggunakan adaptor) dan menyalakannya. Kemudian di terminal kami, kami dapat membuat skrip python kecil

nano hello_world.py

Dan di dalamnya kita dapat menambahkan kode python ini

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

Keluar (CTRL-X), simpan (CTRL-Y) dan jalankan untuk mengujinya

python3 hello_world.py

Langkah 3: Menghubungkan ke Internet of Things (Bagian 1)

Menghubungkan ke Internet of Things (Bagian 1)
Menghubungkan ke Internet of Things (Bagian 1)
Menghubungkan ke Internet of Things (Bagian 1)
Menghubungkan ke Internet of Things (Bagian 1)
Menghubungkan ke Internet of Things (Bagian 1)
Menghubungkan ke Internet of Things (Bagian 1)
Menghubungkan ke Internet of Things (Bagian 1)
Menghubungkan ke Internet of Things (Bagian 1)

Apa gunanya printer tanpa sesuatu untuk dicetak? Saya ingin mengaktifkan fungsionalitas untuk mencetak dari layanan internet yang berbeda, seperti Alexa. Jadi bagaimana saya bisa mencapai itu? Salah satu opsi adalah memilih layanan internet tertentu, melacak dokumentasi API mereka, dan menulis aplikasi berdasarkan API mereka. Tapi saya memilih untuk menempuh jalan yang malas…

Ada situs web hebat bernama "Jika Ini Lalu Itu" yang memicu tindakan untuk berbagai layanan internet (Alexa, Google Home, Gmail, Facebook, Instagram, Twitter, dll) berdasarkan serangkaian kriteria. Misalnya, "jika" saya memposting ke Facebook (ini), "Lalu" kirimi saya email (itu).

Jadi untuk paruh pertama ini, saya mendaftar untuk mendapatkan akun gratis, Anda dapat mulai membuat "applet" baru untuk berbagai layanan yang ingin Anda picu. Bagian "Ini" dari applet saya adalah Alexa. Ada banyak pemicu Alexa untuk dipilih, tetapi saya akan memilih salah satu yang mengatakan "Tanyakan apa yang ada di daftar belanja Anda". Dan kami akhirnya ingin memicu skrip Python di Raspberry Pi, jadi untuk bagian skrip "Itu", kami ingin memilih Webhooks.

Dalam opsi Webhooks, kita dapat menambahkan URL yang menunjuk ke Pi kita, yang akan kita kembali nanti. Kita dapat meninggalkan bidang Metode sebagai "Dapatkan", dan untuk jenis konten pilih "Teks Biasa". Untuk bidang Badan, klik "Tambah Bahan" dan pilih "Seluruh Daftar". Ini akan mengirimkan seluruh daftar belanja sebagai permintaan Dapatkan.

Langkah 4: Menghubungkan ke Internet of Things (Bagian 2)

Menghubungkan ke Internet of Things (Bagian 2)
Menghubungkan ke Internet of Things (Bagian 2)
Menghubungkan ke Internet of Things (Bagian 2)
Menghubungkan ke Internet of Things (Bagian 2)

Langkah sebelumnya menangani bagian "Internet", jadi sekarang mari kita kerjakan bagian "hal" menggunakan Raspberry Pi. Untuk berkomunikasi dengan applet webhooks "If This Then That", kita perlu menyiapkan server web di Raspberry Pi. Ada banyak cara berbeda untuk menyiapkan server web, tetapi mengingat pada akhirnya saya ingin menjalankan skrip Python, saya memutuskan untuk menggunakan server Flask Python.

Pi memiliki semua pustaka Flask yang sudah diinstal sebelumnya, jadi yang perlu kita lakukan adalah mulai menulis skrip pengujian:

nano flask_test.py

Dan di dalamnya, mari tambahkan beberapa kode yang menyajikan halaman web sederhana.

#!flask/bin/python#IMPORT THE FLASK LIBRARIES dari flask import Flask, request #CREATE A FLASK VARIABLE app = Flask(_name_) #CREATE AN 'INDEX' PAGE @app.route('/') def index(): return 'Server Flask Anda berfungsi!' #JALANKAN PROGRAM jika _name_ == '_main_': app.run(debug=True, host='0.0.0.0')

Sekarang simpan saja programnya dan jalankan menggunakan perintah ini:

sudo python3 flask_test.py

Anda akan melihat dengan respon perintah bahwa port default yang dijalankan Flask adalah port 5000. Jadi di browser web, jika Anda mengetikkan Alamat IP Pi Anda:5000, Anda akan melihat teks "Server Flask Anda bekerja!"

Kami memiliki kode Python uji kami dari sebelumnya yang dicetak ke printer tanda terima kami, dan kami memiliki server Flask uji kami. Jadi selanjutnya kita perlu menggabungkannya dan memasukkan beberapa kode yang menarik data dari applet Webhook kita. Mari buat file Python baru:

nano iot_print_server.py

Dan di dalamnya, tambahkan kode berikut:

#!flask/bin/python#IMPORT PERPUSTAKAAN FLASK DAN PRINTER dari flask import Flask, request dari escpos.printer import Usb #ASSIGN VARIABLES UNTUK PRINTER DAN FLASK p = Usb(0x0416, 0x5011) app = Flask(_name_) #CREATE HALAMAN 'INDEX' @app.route('/') def index(): return 'Server Flask Anda berfungsi!' #BUAT "HALAMAN" YANG DISEBUT "DAFTAR" UNTUK MENCETAK DAFTAR BELANJA ALEXA @app.route('/list') def list(): #CAPTURE "GET" DATA DARI IFTTT WEBOOKS content = request.get_data() #CONVERT RAW DATA TO STRING str_content = str(content) #DIVIDE DATA MENJADI GARIS TERPISAH str_split = str_content.splitlines() #PISAH KATA DENGAN KOMA DAN TAMBAHKAN KE DAFTAR BARU newlist = untuk kata di str_split: word = word.split(', ') newlist.extend(word) #HAPUS TANDA FORMAT rmv_marks = [s.strip("b'") untuk s di daftar baru] #PRINT HEADER #print("Daftar Belanja\n") p.text("Daftar Belanja:\n ") #ENUMERASI DAN CETAK SETIAP ITEM DALAM DAFTAR r = 1 untuk x dalam rmv_marks: #print(str(r) + ". " + x + "\n") p.text(str(r) + ". " + x + "\n") r += 1 #RETURN HASIL kembalikan 'x' #Jalankan PROGRAM jika _name_ == '_main_': app.run(debug=True, host='0.0.0.0')

Anda dapat menjalankannya untuk melihat apakah itu mengembalikan kesalahan, tetapi itu tidak akan berfungsi dengan webhook kami karena saat ini, server hanya berjalan secara lokal. Belum ada URL eksternal untuk webhook untuk disambungkan. Kami dapat mengatur penerusan port pada router kami dan hanya menggunakan alamat IP eksternal kami, tetapi itu tidak terlalu aman. Sebagai alternatif, saya memutuskan untuk menggunakan NGROK.

Langkah 5: Menyiapkan Akses Eksternal Dengan Ngrok

Menyiapkan Akses Eksternal Dengan Ngrok
Menyiapkan Akses Eksternal Dengan Ngrok
Menyiapkan Akses Eksternal Dengan Ngrok
Menyiapkan Akses Eksternal Dengan Ngrok

Ngrok menyiapkan koneksi aman ke jaringan Anda tanpa harus mengekspos IP eksternal Anda atau mengacaukan penerusan porta. Setelah mendaftar untuk mendapatkan akun gratis, itu memberi Anda token otorisasi. Kemudian di Raspberry Pi Anda, Anda dapat mengunduhnya, membuka zipnya, menghubungkan token auth Anda, dan kemudian menjalankannya di port 5000:

mkdir ngrokcd ngrok wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable… unzip ngrok-stable-linux-arm./ngrok authtoken [masukkan token auth Anda di sini]./ngrok http 5000

***PENTING***Ngrok versi gratis tidak memberikan alamat statis, jadi setiap kali Anda menjalankan ulang Ngrok, itu akan memberi Anda alamat yang berbeda. Jika Anda menginginkan alamat statis sehingga Anda tidak perlu terus mengedit ulang Webhook, Anda harus membayar untuk akun yang ditingkatkan.

Alternatif gratis untuk Ngrok yang menawarkan IP statis disebut "Serveo" di www.serveo.net

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

Pada layar yang dihasilkan, ini memberi Anda alamat penerusan (https://random-string.ngrok.io) yang dapat kami gunakan di applet Webhook kami. Jadi kembali ke "If This Then That", di kolom URL, masukkan alamat penerusan Ngrok Anda dan arahkan ke halaman "daftar" di server Flask kami. Seharusnya terlihat seperti ini

random_string.ngrok.io/list

Kemudian lanjutkan dan simpan perubahannya.

Untuk mengujinya, tetap jalankan Ngrok, buka terminal baru, dan jalankan skrip python kami. Dengan kedua item berjalan, tanyakan Alexa apa yang ada di daftar belanja Anda. Setelah satu atau dua menit, itu akan mencetak hasilnya. Jika Anda ingin segera mencetak, cukup buka Applet Anda di IFTTT dan klik "Periksa Sekarang". Jika semuanya berjalan dengan baik, pencetak tanda terima akan mencetak apa yang ada di daftar belanja Anda! Kode terakhir yang perlu kita tambahkan adalah cara untuk memulai otomatis ngrok dan server labu kita setiap kali Pi dijalankan. Kami dapat dengan mudah melakukannya dengan membuat skrip Python kami dapat dieksekusi:

chmod +x iot_print_server.py

Kemudian kita bisa mengedit file /etc/rc.local kita sehingga terlihat seperti ini:

## Secara default skrip ini tidak melakukan apa-apa. # Cetak alamat IP _IP=$(hostname -I) || benar jika ["$_IP"]; kemudian printf "Alamat IP saya adalah %s\n" "$_IP" fi #autostart ngrok dan arahkan ke file auth Anda./home/pi/ngrok/ngrok http -config=/home/pi/.ngrok2/ngrok. yml 5000 #autostart skrip python printer Sudo python3 /home/pi/iot_receipt_printer.py & exit 0

Langkah 6: Menambahkan Pi ke Printer

Menambahkan Pi ke Printer
Menambahkan Pi ke Printer
Menambahkan Pi ke Printer
Menambahkan Pi ke Printer
Menambahkan Pi ke Printer
Menambahkan Pi ke Printer
Menambahkan Pi ke Printer
Menambahkan Pi ke Printer

Printer resi yang saya miliki memiliki banyak ruang kosong di dalam casing. Dan dengan Raspberry Pi Zero sekecil itu, saya pikir akan lebih keren untuk menyembunyikannya di printer resi sehingga terlihat seperti satu perangkat. Satu-satunya masalah adalah bahwa printer Tanda Terima berjalan pada 12v dan Pi berjalan pada 5v. Jadi jika kita hanya ingin satu kabel daya untuk menyalakan keduanya, kita harus menurunkan catu daya 12v itu menjadi 5v.

Menggunakan regulator tegangan 7805, kapasitor 1uf, dan kapasitor 10uf, saya dapat membuat regulator 5v sederhana yang saya sambungkan ke papan logika printer resi. Saya menyolder kabel "-" ke dasar yang sama, dan kemudian saya menyolder kabel "+" ke sisi "on" sakelar daya sehingga Pi akan hidup dan mati ketika printer dihidupkan dan dimatikan. Menggunakan multi-meter, saya menguji untuk memastikan bahwa output aman untuk Pi. Kemudian saya menyolder pada kabel micro-usb dan menghubungkannya ke Pi. Setelah mencolokkan kabel ke printer dan membalik sakelar, printer dan Pi menyala!

Akhirnya, saya mengebor lubang untuk menghubungkan kabel USB dari Pi ke printer. Saya menemukan tempat untuk meletakkan regulator 5v dan Pi di dalam casing printer, dan kemudian saya menyatukan semuanya kembali. Jadi sekarang printer juga memiliki server web sendiri!

Langkah 7: Mengambilnya Lebih Jauh

Mengambilnya Lebih Jauh
Mengambilnya Lebih Jauh

Jika Anda dapat melihat "Jika Ini Lalu Itu", Anda mungkin memperhatikan bahwa ia memiliki banyak layanan web yang berbeda untuk dihubungkan. Jadi jika Anda tidak memiliki Alexa, atau tidak ingin menggunakannya, Anda dapat menggunakan proyek ini untuk mencetak dari apa saja, seperti Facebook, Twitter, Gmail, Google Home, Evernote, Tumblr, Flickr, Wordpress, dll. Anda dapat menemukan kode saya untuk mencetak Tweet di halaman Github saya. Sekarang pergi dan lihat apa yang bisa Anda temukan!

Tantangan IoT
Tantangan IoT
Tantangan IoT
Tantangan IoT

Hadiah Pertama dalam Tantangan IoT

Direkomendasikan: