Isi kandungan:
- Bekalan
- Langkah 1: Menyiapkan Raspberry Pi Zero W
- Langkah 2: Mencetak Dari Pi
- Langkah 3: Menyambung ke Internet Perkara (Bahagian 1)
- Langkah 4: Menyambung ke Internet Perkara (Bahagian 2)
- Langkah 5: Menyiapkan Akses Luaran Dengan Ngrok
- Langkah 6: Menambah Pi ke Pencetak
- Langkah 7: Melangkah Lebih Lanjut
Video: Pencetak Alexa - Pencetak Resit Berbasikal: 7 Langkah (dengan Gambar)
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:09
Saya peminat mengitar semula teknologi lama dan menjadikannya berguna lagi. Beberapa ketika yang lalu, saya telah membeli pencetak resit terma yang lama dan murah, dan saya mahukan kaedah yang berguna untuk tujuan semula. Kemudian, semasa cuti, saya diberi Amazon Echo Dot, dan salah satu ciri yang paling sering saya gunakan ialah menambahkan bahan makanan ke senarai membeli-belah saya. Oleh itu, saya fikir akan menyenangkan menggabungkan kedua-duanya dan menggunakan pencetak resit sebagai pencetak IOT untuk Alexa (atau Google Home, atau Siri, dll.). Mari lihat apa yang diperlukan untuk menjadikan idea ini menjadi kenyataan.
Bekalan
Inilah bahagian yang saya gunakan untuk projek ini:
- Pencetak resit terma generik yang murah (perlu menyokong ESC-POS)
- Peranti Alexa Amazon (peranti "pembantu rumah" lain mungkin akan berfungsi juga)
- Raspberry Pi Zero Wireless
- 7805 5v Pengatur
- Kapasitor 10μf
- Kapasitor 1μf
Perkara lain yang saya gunakan untuk projek ini adalah:
- Sekiranya Ini Berlaku (IFTTT.com)
- Peralatan Pematerian
Langkah 1: Menyiapkan Raspberry Pi Zero W
Langkah pertama adalah mencetak pencetakan resit lama lagi. Saya memilih untuk menggunakan Raspberry Pi Zero W sebagai alat kawalan kerana harganya murah dan saiznya kecil. Ini sebenarnya cukup kecil untuk dimasukkan ke dalam casing pencetak resit itu sendiri, jadi tidak ada sambungan luaran! Pi Zero W juga telah membina Wifi sehingga semuanya pada dasarnya disatukan ke dalam ukurannya yang kecil.
Untuk menjalankan Pi, kita perlu memuat turun OS Raspbian dan membakarnya ke kad microSD menggunakan program seperti Etcher. Masukkan ke dalam Pi bersama kabel HDMI, papan kekunci, tetikus, dan kemudian kuasa.
Semasa Pi boot dan anda berada di antara muka desktop, anda boleh menyambung ke wayarles anda dengan mengklik ikon wayarles di kanan atas dan memilih nama sambungan wayarles anda. Kemudian jika anda mengklik kanan pada ikon wayarles yang sama, anda boleh pergi ke tetapan rangkaian dan menetapkan alamat IP statik sehingga kami dapat menyambungnya dengan mudah melalui rangkaian. Akhirnya, anda mahu mengklik pada menu utama dan pilih "Editor Konfigurasi Raspbian" dan di bawah tab "Antara muka", pastikan SSH diaktifkan. Kemudian simpan dan reboot Pi anda.
Langkah 2: Mencetak Dari Pi
Setelah Raspbery Pi dihidupkan semula, ia harus disambungkan ke rangkaian wayarles anda dengan IP statik dan dengan SSH diaktifkan. Jadi sekarang kita seharusnya dapat menyambungnya dari jauh dari komputer lain. Untuk melakukannya, anda memerlukan pelanggan SSH. Untuk Windows, pelanggan yang baik adalah Putty. Anda boleh menyambungnya menggunakan alamat IP statik Pi yang kami tetapkan lebih awal. Kemudian anda boleh log masuk menggunakan "pi" sebagai nama pengguna dan "raspberry" sebagai kata laluan.
Setelah berjaya masuk, kita sekarang harus berada di antara muka terminal Pi. Di sini kita dapat menaip perintah yang akan dijalankan pada Raspberry Pi. Sebagai contoh, salah satu perkara pertama yang ingin kita lakukan adalah memastikan perisian pada Pi sentiasa terkini. Jadi, di terminal kita boleh menaip:
sudo apt-get kemas kini
Perintah ini akan mengemas kini repositori perisian pada Pi. Seterusnya, kita dapat memasang perisian pencetak 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
Dengan selesai, kita sekarang dapat menghubungkan Pencetak ke port Micro-USB Pi (menggunakan penyesuai) dan menyalakannya. Kemudian di terminal kami dapat membuat sedikit skrip python
nano hello_world.py
Dan di dalamnya kita boleh menambah kod python ini
#! / usr / bin / pythonfrom escpos.printer import Usb p = Usb (0x0416, 0x5011) p.text ("Pencetak Mini IOT / n") p.tutup ()
Keluar (CTRL-X), simpan (CTRL-Y) dan jalankan untuk mengujinya
python3 hello_world.py
Langkah 3: Menyambung ke Internet Perkara (Bahagian 1)
Apa kebaikan pencetak tanpa sesuatu untuk dicetak? Saya mahu membolehkan fungsi mencetak dari pelbagai perkhidmatan internet, seperti Alexa. Jadi bagaimana saya boleh mencapainya? Salah satu pilihan adalah memilih perkhidmatan internet tertentu, melacak dokumentasi API mereka dan menulis aplikasi berdasarkan API mereka. Tetapi saya memilih untuk pergi ke jalan malas…
Terdapat laman web hebat bernama "If This Then That" yang mencetuskan tindakan untuk perkhidmatan internet yang berbeza (Alexa, Google Home, Gmail, Facebook, Instagram, Twitter, dll) berdasarkan satu set kriteria. Contohnya, "if" saya hantar ke Facebook (ini), "Kemudian" hantarkan e-mel kepada saya (itu).
Jadi untuk separuh pertama ini, saya mendaftar untuk akaun percuma, anda boleh mula membuat "applet" baru untuk pelbagai perkhidmatan yang ingin dicetuskan. Bahagian "Ini" dari applet saya adalah Alexa. Terdapat banyak pencetus Alexa untuk dipilih, tetapi saya akan memilih salah satu yang mengatakan "Tanya apa yang ada dalam senarai beli-belah anda". Dan akhirnya kami mahu ia memicu skrip Python pada Raspberry Pi, jadi untuk bahagian "Itu" skrip, kami ingin memilih Webhooks.
Dalam pilihan Webhooks, kita dapat menambahkan URL yang menunjukkan Pi kita, yang akan kita kembali kemudian. Kita boleh meninggalkan medan Kaedah sebagai "Dapatkan", dan untuk jenis kandungan pilih "Teks Biasa". Untuk medan Badan, klik "Tambah Bahan" dan pilih "Seluruh Senarai". Ini akan menghantar keseluruhan senarai belanja sebagai permintaan Dapatkan.
Langkah 4: Menyambung ke Internet Perkara (Bahagian 2)
Langkah sebelumnya mengurus bahagian "Internet", jadi sekarang mari kita mengusahakan bahagian "perkara" menggunakan Raspberry Pi. Untuk berkomunikasi dengan applet webhooks "If This Then That", kita perlu menyediakan pelayan web di Raspberry Pi. Terdapat banyak cara untuk menyediakan pelayan web, tetapi memandangkan saya akhirnya mahu menjalankan skrip Python, saya memutuskan untuk menggunakan pelayan Flask Python.
Pi mempunyai semua perpustakaan Flask yang telah diinstal sebelumnya, jadi yang perlu kita lakukan ialah mula menulis skrip ujian:
nano flask_test.py
Dan di dalamnya, mari kita tambahkan beberapa kod yang berfungsi untuk laman web mudah.
#! flask / bin / python # IMPORKAN PERPUSTAKAAN FLASK dari termos import termos, minta #CREATE A FLASK VARIABLE app = Flask (_ name_) #CREATE AN 'INDEX' PAGE @ app.route ('/') def index (): kembali 'Pelayan Flask anda berfungsi!' #JALANKAN PROGRAM jika _name_ == '_main_': app.run (debug = True, host = '0.0.0.0')
Sekarang hanya simpan program dan jalankan menggunakan perintah ini:
sudo python3 flask_test.py
Anda akan melihat dengan tindak balas arahan bahawa port lalai yang dijalankan oleh Flask adalah port 5000. Oleh itu, dalam penyemak imbas web, jika anda memasukkan Alamat IP Pi: 5000, anda akan melihat teks "Pelayan Flask anda berfungsi!"
Kami mempunyai kod Python ujian kami dari sebelumnya yang dicetak ke pencetak resit kami, dan kami mempunyai pelayan Flask ujian kami. Oleh itu, kita perlu menggabungkannya dan memasukkan beberapa kod yang menarik data dari applet Webhook kami. Mari buat fail Python baru:
nano iot_print_server.py
Dan di dalamnya, tambahkan kod berikut:
#! flask / bin / python # IMPORKAN PERPUSTAKAAN FLASK DAN PRINTER dari termos import termos, permintaan dari escpos.printer import Usb # VASABEL ASAS UNTUK PRINTER DAN FLASK p = Usb (0x0416, 0x5011) app = Flask (_ATE_ #C) 'INDEX' PAGE @ app.route ('/') def index (): return 'Pelayan Flask anda berfungsi!' #CREATE "PAGE" CALLED "LIST" FOR PRINTING ALEXA SHOPPING LIST @ app.route ('/ list') def list (): #CAPTURE "GET" DATA DARI IFTTT WEBOOKS content = request.get_data () #CONVERT RAW DATA KE STRING str_content = str (content) #DIVIDE DATA INTO SEPERATE LINES str_split = str_content.splitlines () # SELAMATKAN PERKATAAN OLEH COMMA DAN TAMBAHKAN KE DAFTAR BARU senarai baru = untuk kata dalam str_split: word = word.split (',') newlist.extend (word) #REMOVE FORMATTING MARKS rmv_marks = [s.strip ("b '") for s in newlist] #PRINT HEADER #print ("Daftar Belanja / n") p.text ("Senarai Beli-belah: / n ") #ENUMERASI DAN CETAK SETIAP ITEM DALAM SENARAI r = 1 untuk x dalam rmv_markah: #print (str (r) +". "+ X +" / n ") p.text (str (r) +". "+ x + "\ n") r + = 1 # KEPUTUSAN KEMBALI mengembalikan 'x' #JALANKAN PROGRAM jika _nama_ == '_main_': app.run (debug = True, host = '0.0.0.0')
Anda boleh menjalankannya untuk melihat apakah ia mengembalikan kesalahan, tetapi ia tidak akan berfungsi dengan webhook kami kerana pada masa ini, pelayan hanya dijalankan secara tempatan. Belum ada URL luaran untuk dihubungkan oleh webhook. Kami dapat mengatur penerusan port pada penghala kami dan hanya menggunakan alamat IP menghadap luaran kami, tetapi itu tidak terlalu selamat. Sebagai alternatif, saya memutuskan untuk menggunakan NGROK.
Langkah 5: Menyiapkan Akses Luaran Dengan Ngrok
Ngrok membuat sambungan yang selamat ke rangkaian anda tanpa perlu mendedahkan IP luaran anda atau mengacaukan pemajuan port. Setelah mendaftar untuk akaun percuma, ia memberi anda token kebenaran. Kemudian pada Raspberry Pi anda, anda boleh memuat turunnya, membuka zip, menyambungkan token autentikasi anda, dan kemudian menjalankannya pada port 5000:
mkdir ngrokcd ngrok wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable… unzip ngrok-stable-linux-arm./ngrok authtoken [masukkan token pengarang anda di sini]./ngrok http 5000
*** PENTING *** Versi percuma Ngrok tidak memberi anda alamat statik, jadi setiap kali anda menjalankan semula Ngrok, ia akan memberi anda alamat yang berbeza. Sekiranya anda mahukan alamat statik sehingga anda tidak perlu terus mengedit Webhook anda, maka anda perlu membayar untuk akaun yang ditingkatkan.
Alternatif percuma untuk Ngrok yang menawarkan IP statik disebut "Serveo" di www.serveo.net
************************
Pada layar yang dihasilkan, ia memberikan alamat penerusan (https://random-string.ngrok.io) yang dapat Anda gunakan di applet Webhook kami. Oleh itu, kembali ke "If This Then That", di medan URL, masukkan alamat pemajuan Ngrok anda dan arahkan ke halaman "daftar" di pelayan Flask kami. Ia mesti kelihatan seperti ini
random_string.ngrok.io/list
Kemudian teruskan dan simpan perubahannya.
Untuk mengujinya, terus Ngrok berjalan, buka terminal baru, dan jalankan skrip python kami. Dengan kedua-dua item berjalan, tanyakan Alexa apa yang ada di senarai membeli-belah anda. Selepas satu atau dua minit, ia akan mencetak hasilnya. Sekiranya anda mahu mencetaknya dengan segera, pergi ke Applet anda di IFTTT dan klik "Check Now". Sekiranya semuanya berjalan lancar, pencetak resit harus mencetak apa yang ada di senarai beli-belah anda! Bit terakhir kod yang perlu kita tambahkan adalah cara untuk memulakan semula ngrok dan pelayan termos kami setiap kali Pi dimulakan. Kita boleh melakukannya dengan mudah dengan menjadikan skrip Python kita dapat dilaksanakan:
chmod + x iot_print_server.py
Kemudian kita boleh mengedit fail /etc/rc.local kami sehingga kelihatan seperti ini:
## Secara lalai skrip ini tidak melakukan apa-apa. # Cetak alamat IP _IP = $ (nama host -I) || benar jika ["$ _IP"]; kemudian printf "Alamat IP saya adalah% s / n" "$ _IP" fi #autostart ngrok dan arahkan ke fail auth anda./home/pi/ngrok/ngrok http -config = / home / pi /.ngrok2 / ngrok. yml 5000 #mulakan semula skrip python pencetak sudo python3 /home/pi/iot_receipt_printer.py & keluar 0
Langkah 6: Menambah Pi ke Pencetak
Pencetak resit yang saya ada mempunyai banyak ruang kosong di dalam selongsong. Dan dengan Raspberry Pi Zero sekecil itu, saya rasa akan lebih baik jika menyembunyikannya di pencetak resit sehingga kelihatan seperti satu peranti. Satu-satunya masalah ialah pencetak Resit berjalan pada 12v dan Pi berjalan pada 5v. Oleh itu, jika kita hanya mahu satu kabel kuasa memberi kuasa kepada kedua-duanya, kita mesti menurunkan bekalan kuasa 12v ke 5v.
Dengan menggunakan pengatur voltan 7805, kapasitor 1uf, dan kapasitor 10uf, saya dapat membuat pengatur 5v sederhana yang saya sambungkan ke papan logik pencetak resit. Saya menyolder wayar "-" ke landasan bersama, dan kemudian saya menyolder wayar "+" ke sisi "on" pada suis kuasa sehingga Pi akan menyala dan mati ketika pencetak dihidupkan dan dimatikan. Dengan menggunakan multi-meter, saya menguji untuk mengesahkan bahawa outputnya selamat untuk Pi. Kemudian saya menyolder kabel micro-usb dan menyambungkannya ke Pi. Setelah memasang kabel ke pencetak dan membuka suis, pencetak dan Pi dihidupkan!
Akhirnya, saya menggerudi lubang untuk menyambungkan kabel USB dari Pi ke pencetak. Saya menjumpai tempat untuk meletakkan pengatur 5v dan Pi di dalam casing pencetak, dan kemudian saya meletakkan semuanya kembali. Jadi sekarang pencetak juga mempunyai pelayan web sendiri yang lengkap!
Langkah 7: Melangkah Lebih Lanjut
Sekiranya anda dapat melihat "Jika Ini Kemudian", anda mungkin menyedari bahawa ia mempunyai banyak perkhidmatan web yang berbeza untuk disambungkan. Oleh itu, jika anda tidak mempunyai Alexa, atau tidak berminat menggunakannya, anda boleh menggunakan projek ini untuk mencetak dari apa sahaja, seperti Facebook, Twitter, Gmail, Google Home, Evernote, Tumblr, Flickr, Wordpress, Anda boleh mendapatkan kod saya untuk mencetak Tweet di halaman Github saya. Sekarang pergi dan lihat apa yang boleh anda buat!
Hadiah Pertama dalam Cabaran IoT
Disyorkan:
Meter Tahap Audio Dari VFD Berbasikal: 7 Langkah
Meter Tahap Audio Dari VFD Berbasikal: VFD - Paparan Fluoresen Vakum, semacam Dinosaur Teknologi Paparan, masih cukup bagus dan sejuk, terdapat di banyak alat elektronik rumah yang ketinggalan zaman dan lalai. Oleh itu, adakah kita akan membuangnya? Tidak, kita masih boleh menggunakannya. Ia memerlukan sedikit usaha
Binaan Pembesar Suara Bluetooth yang Hebat - Berbasikal !: 7 Langkah (dengan Gambar)
Binaan Pembesar Suara Bluetooth yang Hebat | Berbasikal !: Beberapa ketika yang lalu, rakan saya menghantar saya gambar bekas pembesar suara lama yang terletak di atas bumbungnya. Seperti yang anda lihat dalam gambar (pada langkah seterusnya), ia dalam keadaan mengerikan. Nasib baik, ketika saya memintanya untuk memberikannya kepada saya, dia bersetuju. Saya telah merancang untuk membina
Helmet Berbasikal berhawa dingin (Dibuat Dari Komputer Kitar Semula): 5 Langkah (dengan Gambar)
Helmet Berbasikal berhawa dingin (Dibuat Dari Komputer Kitar Semula): Helmet ini dengan kipas di atas lubang menyedut udara dari kepala anda dan anda dapat merasakannya muncul di atas muka anda dan di bahagian bawah kepala anda! Sangat baik untuk berbasikal pada hari-hari cerah ketika sangat panas. LED juga membantu berbasikal pada waktu malam! Bahagian semua
Litar Berbasikal Warna LED RGB: 4 Langkah
Litar Berbasikal Warna LED RGB: Bagaimana tujuan membuat litar berbasikal warna LED RGB dari penyegar udara Glade LightShow. Saya sedang dalam proses membuat litar berbasikal warna merah, hijau, biru berdasarkan mikrokontroler PIC ketika saya melihat Glade Penyegar udara LightShow
Perbaikan Mudah ke Timbuktu Commute Bag V.1, untuk Berbasikal: 3 Langkah
Perbaikan Mudah untuk Timbuktu Commute Bag V.1, untuk Berbasikal: Sebagai peminat beg Timbuktu yang biasa berbasikal dengan komputer riba di beg messenger saya, ketika mereka keluar dengan beg ulang-alik, saya fikir 'sempurna' dan memesannya secara dalam talian. Saya seperti woo hoo ini akan menjadi sejuk. Tetapi ketika saya mendapatnya, saya terkejut dan kecewa