Daftar Isi:
- Perlengkapan
- Langkah 1: Menyiapkan Raspberry Pi Zero W
- Langkah 2: Mencetak Dari Pi
- Langkah 3: Menghubungkan ke Internet of Things (Bagian 1)
- Langkah 4: Menghubungkan ke Internet of Things (Bagian 2)
- Langkah 5: Menyiapkan Akses Eksternal Dengan Ngrok
- Langkah 6: Menambahkan Pi ke Printer
- Langkah 7: Mengambilnya Lebih Jauh
Video: Pencetak Alexa - Printer Tanda Terima Upcycled: 7 Langkah (dengan Gambar)
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:55
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:
- Printer tanda terima termal generik murah (perlu mendukung ESC-POS)
- Perangkat Amazon Alexa (perangkat "asisten rumah" lainnya mungkin juga berfungsi)
- Raspberry Pi Nol Nirkabel
- 7805 5v Regulator
- 10μf Kapasitor
- 1μf Kapasitor
Hal-hal lain yang saya gunakan untuk proyek ini adalah:
- Jika Ini Maka Itu (IFTTT.com)
- Peralatan Solder
Langkah 1: 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
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)
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)
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
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
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
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!
Hadiah Pertama dalam Tantangan IoT
Direkomendasikan:
Terima Email Pemberitahuan Saat Saluran di ThingSpeak Tidak Diperbarui untuk Beberapa Saat: 16 Langkah
Terima Email Pemberitahuan Saat Saluran di ThingSpeak Tidak Diperbarui untuk Sementara: Cerita latar belakangSaya memiliki enam rumah kaca otomatis yang tersebar di Dublin, Irlandia. Dengan menggunakan aplikasi ponsel yang dibuat khusus, saya dapat memantau dan berinteraksi dari jarak jauh dengan fitur otomatis di setiap rumah kaca. Saya dapat membuka / menutup kemenangan secara manual
Tanda Strip LED Difusi Dengan Arduino / Bluetooth: 8 Langkah (dengan Gambar)
Tanda Strip LED Difusi Dengan Arduino / Bluetooth: Saya membuat tanda ini untuk stan DJ di Pertunjukan Interaktif tahunan ke-8 di ruang peretas lokal saya, NYC Resistor. Tema tahun ini adalah The Running Man, film sci-fi tahun 1987 yang chintzy, yang berlangsung pada tahun 2017. Papan nama itu dibangun dari
Terima Pemberitahuan Email Dari Proyek IoT Anda: 6 Langkah
Terima Pemberitahuan Email Dari Proyek IoT Anda: Program pemberitahuan email yang menghubungkan proyek IoT Anda ke Adafruit IO dan IFTTT. Saya telah menerbitkan beberapa proyek IoT. Saya harap Anda telah melihatnya, Jika tidak, saya mengundang Anda ke profil saya dan memeriksanya. Saya ingin menerima beberapa pemberitahuan ketika ada variabel
Pengukur atau Tanda Tingkat Kebisingan Tidak Aman: 4 Langkah (dengan Gambar)
Pengukur atau Tanda Tingkat Kebisingan Tidak Aman: Saya suka melihat proyek kreatif orang. Alat modern & teknologi memberi kita begitu banyak pilihan kreatif. Saya mengajarkan materi sulit kepada siswa sekolah menengah di sebuah sekolah menengah di Selandia Baru jadi saya selalu berkembang & mencoba hal-hal baru. ini
Minecraft Interaktif Jangan Masuk Pedang/Tanda (ESP32-CAM): 15 Langkah (dengan Gambar)
Minecraft Interaktif Jangan Masuki Pedang/Tanda (ESP32-CAM): Sebenarnya ada beberapa alasan mengapa proyek ini ada:1. Sebagai penulis perpustakaan multitasking kooperatif TaskScheduler, saya selalu ingin tahu bagaimana menggabungkan manfaat multitasking kooperatif dengan manfaat pre-emptive