Mundarija:
- Ta'minotlar
- 1 -qadam: Raspberry Pi Zero W ni sozlash
- 2 -qadam: Pi -dan chop etish
- 3 -qadam: narsalar Internetiga ulanish (1 -qism)
- 4 -qadam: narsalar Internetiga ulanish (2 -qism)
- 5 -qadam: Ngrok yordamida tashqi kirishni o'rnatish
- 6 -qadam: Pi -ni printerga qo'shish
- 7 -qadam: davom ettirish
Video: Alexa printer - Qayta ishlangan kvitansiya printeri: 7 qadam (rasmlar bilan)
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:25
Men eski texnologiyani qayta ishlash va uni yana foydali qilish tarafdoriman. Bir muncha vaqt oldin men eski, arzon termal kvitansiya printerini sotib oldim va uni maqsadga muvofiqlashtirishning foydali usulini xohlardim. Keyin, ta'til paytida menga Amazon Echo Dot sovg'a qilindi va men eng ko'p ishlatadigan xususiyatlardan biri xaridlar ro'yxatiga oziq -ovqat mahsulotlarini qo'shish edi. Shunday qilib, ikkalasini birlashtirish va kvitansiya printerini Alexa (yoki Google Home yoki Siri va boshqalar) uchun IOT printer sifatida ishlatish yaxshi bo'lardi, deb o'yladim. Keling, bu g'oyani amalga oshirish uchun nima qilish kerakligini ko'rib chiqaylik.
Ta'minotlar
Mana men loyiha uchun ishlatadigan qismlar:
- Arzon umumiy termal kvitansiya printeri (ESC-POS-ni qo'llab-quvvatlashi kerak)
- Amazon Alexa Device (boshqa "uy yordamchisi" qurilmalari ham ishlaydi)
- Raspberry Pi Zero Simsiz
- 7805 5v regulyator
- 10 mkf kondansatör
- 1 mikron kondansatör
Men ushbu loyihada ishlatadigan boshqa narsalar:
- Agar shunday bo'lsa (IFTTT.com)
- Lehimlash uskunalari
1 -qadam: Raspberry Pi Zero W ni sozlash
Birinchi qadam - eski kvitansiya printerini qayta chop etish. Men arzon narx va kichik o'lchamlari tufayli Raspberry Pi Zero W -ni boshqaruvchi sifatida ishlatishni tanladim. Bu, aslida, kvitansiya printerining qutisiga mos keladigan darajada kichik, shuning uchun tashqi aloqalar yo'q! Pi Zero W Wi -Fi -da ham qurilgan, shuning uchun hamma narsa kichik hajmiga birlashtirilgan.
Pi -ni ishga tushirish uchun biz Raspbian OS -ni yuklab olishimiz va Etcher kabi dastur yordamida microSD kartaga yozishimiz kerak. Uni HDMI kabeli, klaviatura, sichqoncha va keyin quvvat bilan birga Pi -ga joylashtiring.
Pi ishga tushganda va siz ish stoli interfeysida bo'lsangiz, yuqori o'ngdagi simsiz belgini bosish va simsiz ulanish nomini tanlash orqali simsiz tarmoqqa ulanishingiz mumkin. Agar siz o'sha simsiz belgini o'ng tugmasini bosgan bo'lsangiz, siz tarmoq sozlamalariga o'tishingiz va unga tarmoq orqali osongina ulanishimiz uchun statik IP -manzilni o'rnatishingiz mumkin. Nihoyat, siz asosiy menyuni bosing va "Raspbian konfiguratsiya muharriri" ni tanlang va "Interfeyslar" yorlig'i ostida SSH yoqilganligiga ishonch hosil qiling. Keyin uni saqlang va Pi -ni qayta ishga tushiring.
2 -qadam: Pi -dan chop etish
Raspbery Pi qayta ishga tushirilgandan so'ng, u simsiz tarmoqqa statik IP va SSH yoqilgan holda ulangan bo'lishi kerak. Endi biz unga boshqa kompyuterdan masofadan ulanish imkoniyatiga ega bo'lishimiz kerak. Buning uchun sizga SSH mijozi kerak bo'ladi. Windows uchun yaxshi mijoz Putty hisoblanadi. Siz unga ilgari o'rnatgan Pi statik IP -manzili yordamida ulanishingiz mumkin. Keyin foydalanuvchi nomi sifatida "pi" va parol sifatida "malina" yordamida kirishingiz mumkin.
Muvaffaqiyatli kirishdan so'ng, biz endi Pi terminalining interfeysida bo'lishimiz kerak. Bu erda biz Raspberry Pi -da bajariladigan buyruqlarni kiritishimiz mumkin. Masalan, biz qilmoqchi bo'lgan birinchi narsalardan biri bu Pi dasturiy ta'minotining yangilanganligiga ishonch hosil qilishdir. Shunday qilib, terminalda biz yozishimiz mumkin:
sudo apt-get yangilanishi
Bu buyruq Pi dasturiy ta'minot omborlarini yangilaydi. Keyin biz ESC-POS printer dasturini va kerakli kutubxonalarni o'rnatishimiz mumkin.
sudo apt-get install python3 python3-setuptools python3-pip libjpeg8-devsudo pip3 install-pip sudo pip3 ni python-escpos-ni yangilang.
Shunday qilib, biz printerni Pi-ning Micro-USB portiga (adapter yordamida) ulashimiz va uni yoqishimiz mumkin. Keyin terminalimizda biz kichik piton skriptini yaratishimiz mumkin
nano hello_world.py
Va biz bu python kodini qo'shishimiz mumkin
#!/usr/bin/pythonfrom escpos.printer usb p = Usb (0x0416, 0x5011) p.text ("Mini IOT Printer / n") p.close ()
Chiqish (CTRL-X), saqlash (CTRL-Y) va uni sinab ko'rish uchun ishga tushirish
python3 salom_jahon.py
3 -qadam: narsalar Internetiga ulanish (1 -qism)
Chop etish uchun biror narsa bo'lmasa, printerdan nima foyda? Men Alexa kabi turli xil Internet xizmatlaridan chop etish funksiyasini yoqmoqchi edim. Xo'sh, buni qanday amalga oshirishim mumkin? Bitta variant - ma'lum bir Internet xizmatini tanlash, ularning API hujjatlarini kuzatib borish va API asosida ariza yozish. Lekin men dangasa yo'lni tanlayman …
Har xil Internet xizmatlari (Alexa, Google Home, Gmail, Facebook, Instagram, Twitter va boshqalar) uchun bir qancha mezonlarga asoslangan harakatlarni ishga soluvchi "Agar bu shunday bo'lsa" deb nomlangan ajoyib veb -sayt mavjud. Masalan, "agar" men Facebook-ga xabar yuborsam (bu), "Keyin" menga elektron pochta xabarini yuboring (bu).
Shunday qilib, birinchi yarmida men bepul hisob qaydnomasiga yozildim, siz ishga solmoqchi bo'lgan turli xil xizmatlar uchun yangi "applet" yaratishni boshlashingiz mumkin. Mening appletimning "bu" qismi Alexa bo'ladi. Alexa -ni tanlash uchun juda ko'p tetikler bor, lekin men "Xaridlar ro'yxatida nima borligini so'rang" deganini tanlayman. Va biz oxir -oqibat Raspberry Pi -da Python skriptini ishga tushirishni xohlaymiz, shuning uchun skriptning "o'sha" qismi uchun biz Webhooklarni tanlashni xohlaymiz.
Webhooks -da biz Pi -ga ishora qiladigan URL -ni qo'shishimiz mumkin, biz keyinroq qaytamiz. Biz "Yo'l" maydonini tark etishimiz mumkin va kontent turi uchun "Oddiy matn" ni tanlang. Tana maydoni uchun "Tarkibni qo'shish" ni bosing va "Butun ro'yxatni" tanlang. Bu barcha xaridlar ro'yxatini Get so'rovi sifatida yuboradi.
4 -qadam: narsalar Internetiga ulanish (2 -qism)
Oldingi qadam "Internet" qismiga tegishli, shuning uchun endi "narsalar" qismida Raspberry Pi yordamida ishlashga ruxsat bering. "Agar shunday bo'lsa" webhooks appleti bilan bog'lanish uchun biz Raspberry Pi -da veb -serverni o'rnatishimiz kerak. Veb -serverni o'rnatishning turli xil usullari bor, lekin men oxir -oqibat Python skriptini ishga tushirishni xohlayotganimni hisobga olib, Python Flask serveridan foydalanishga qaror qildim.
Pi-da barcha Flask kutubxonalari oldindan o'rnatilgan, shuning uchun biz test skriptini yozishni boshlashimiz kerak:
nano -flask_test.py
Va unda oddiy veb -sahifaga xizmat qiladigan kodni qo'shamiz.
#! flask/bin/python #Flask kutubxonalarini kolbadan import qilishdan import qiling, #FLASK VARIABLE app = Flask (_ name_) #CREATE AN 'INDEX' PAGE @app.route ('/') def index (): qaytish 'Sizning Flask serveringiz ishlayapti!' #Dasturni ishga tushiring, agar _name_ == '_main_': app.run (disk raskadrovka = To'g'ri, xost = '0.0.0.0')
Endi dasturni saqlang va uni quyidagi buyruq yordamida ishga tushiring:
sudo python3 flask_test.py
Buyruqning javobidan ko'rasizki, Flask standart port 5000 -dir. Shunday qilib, veb -brauzerda, agar siz Pi -ning IP -manzili: 5000 -ni yozsangiz, "Sizning Flask serveringiz ishlayapti!"
Bizda oldingi Python kodi mavjud bo'lib, u kvitansiya printerida chop etiladi va bizda Flask test serveri mavjud. Shunday qilib, biz ularni birlashtirishimiz va Webhook ilovamizdan ma'lumotlarni tortib oladigan kodni kiritishimiz kerak. Keling, yangi Python faylini yarataylik:
nano iot_print_server.py
Va uning ichiga quyidagi kodni qo'shing:
#! flask/bin/python #Flask va printer kutubxonalarini kolbadan import qilish, escpos.printerdan import qilish Usb #PRINTER VA FLASH UCHUN TA'SIRLANIShI p = Usb (0x0416, 0x5011) app = Flask (_ nomi _) #C 'INDEX' PAGE @app.route ('/') def index (): "Sizning Flask serveringiz ishlayapti!" #ALEXA SOTISh Ro'yxatini @app.route ('/list') def ro'yxatini chop etish uchun "Ro'yxat" deb nomlangan "SAHIFA" YARATISH def ro'yxati (): #CAPTURE "SAVOLLARNI IFTTT WEBOOKSdan oling = content. request_get_data () #RAW DATA TO STRING str_content = str (kontent) #MA'LUMOTLARNI AYRILGAN QATLARGA TARQISH str_split = str_content.splitlines () #VERGA BO'LGAN AYRIMLI SO'ZLAR VA YANGI Ro'yxatga Qo'shish newlist = str_split so'z uchun: word = word.split (',') newlist.extend (word) #FORMATTING BELGILARINI O'CHIRISH rmv_marks = [s.strip ("b '") s uchun yangi ro'yxatda] #PRINT HEADER #print ("Xaridlar ro'yxati / n") p.text ("Xaridlar ro'yxati: / n ") #Ro'yxatdagi har bir elementni sanash va chop etish rmv_marksidagi x uchun r = 1: #print (str (r) +". " + X +" / n ") p.text (str (r) +". " + x + "\ n") r + = 1 #QAYTISH natijalari qaytariladi 'x' #dasturni ishga tushiring, agar _name_ == '_main_': app.run (debug = True, host = '0.0.0.0')
Siz uni biron bir xatoni qaytaradimi yoki yo'qligini bilish uchun ishga tushirishingiz mumkin, lekin u bizning veb -krujkamiz bilan ishlamaydi, chunki hozircha server faqat mahalliy darajada ishlaydi. Veb -kuk uchun hali ulanadigan tashqi URL yo'q. Biz yo'riqnoma orqali portni yo'naltirishni sozlashimiz va tashqi IP manzilimizni ishlatishimiz mumkin edi, lekin bu unchalik xavfsiz emas. Boshqa variant sifatida men NGROK bilan borishga qaror qildim.
5 -qadam: Ngrok yordamida tashqi kirishni o'rnatish
Ngrok sizning tashqi IP -ni yoki portni boshqa manzilga uzatishni buzmasdan tarmoqqa xavfsiz ulanishni o'rnatadi. Bepul hisob qaydnomasiga yozilgandan so'ng, u sizga avtorizatsiya tokenini beradi. Keyin Raspberry Pi -da siz uni yuklab olishingiz, ochishingiz, avtorizatsiya tokenini ulashingiz va keyin 5000 -portda ishga tushirishingiz mumkin:
mkdir ngrokcd ngrok wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable… ngrok-stabil-linux-arm-ni oching.
*** MUHIM *** Ngrok-ning bepul versiyasi sizga statik manzil bermaydi, shuning uchun har safar Ngrok-ni qayta ishga tushirganingizda, u sizga boshqa manzilni beradi. Agar siz Webhook-ni qayta tahrir qilmasligingiz uchun statik manzilni xohlasangiz, yangilangan hisob uchun to'lashingiz kerak bo'ladi.
Ngrok -ga statik IP -ni taklif qiladigan bepul muqobil www.serveo.net saytida "Serveo" deb nomlanadi
************************
Olingan ekranda u sizga Webhook ilovasida foydalanishimiz mumkin bo'lgan yo'naltirish manzilini beradi (https://random-string.ngrok.io). Shunday qilib, "Agar shunday bo'lsa" ga qayting, URL maydoniga Ngrok yo'naltirish manzilingizni kiriting va uni Flask serverimizdagi "ro'yxat" sahifasiga yo'naltiring. Bu shunga o'xshash ko'rinishi kerak
random_string.ngrok.io/list
Keyin davom eting va o'zgarishlarni saqlang.
Buni sinab ko'rish uchun Ngrokning ishlashini davom ettiring, yangi terminal oching va python skriptimizni ishga tushiring. Ikkala element ham ishlayotganida, Alexa -dan xaridlar ro'yxatida nima borligini so'rang. Bir -ikki daqiqadan so'ng u natijalarni chop etishi kerak. Agar siz uni darhol chop etishni xohlasangiz, IFTTT -dagi Applet -ga o'ting va "Hozir tekshirish" -ni bosing. Agar hamma narsa yaxshi bo'lsa, kvitansiya printeri xaridlar ro'yxatida nima borligini chop etishi kerak! Biz qo'shishimiz kerak bo'lgan kodning oxirgi qismi ngrok va bizning kolbadagi serverni har ishga tushirish vaqtida avtomatik ishga tushirish usulidir. Biz buni Python skriptimizni bajariladigan qilib osonlikcha qila olamiz:
chmod +x iot_print_server.py
Keyin biz /etc/rc.local faylini shunday tahrir qilishimiz mumkin:
## Odatiy bo'lib, bu skript hech narsa qilmaydi. # IP manzilini chop eting _IP = $ (hostname -I) || rost bo'lsa ["$ _IP"]; keyin printf "Mening IP manzilim - %s / n" "$ _IP" fi #autostart ngrok va uni autentifikatsiya faylingizga yo'naltiring./home/pi/ngrok/ngrok http -config =/home/pi/.ngrok2/ngrok. yml 5000 #printerni python skriptini avtomatik ishga tushirish sudo python3 /home/pi/iot_receipt_printer.py va 0 dan chiqish
6 -qadam: Pi -ni printerga qo'shish
Menda kvitansiya printerida korpus ichida juda ko'p bo'sh joy bor. Va Raspberry Pi Zero juda kichkina bo'lgani uchun, uni kvitansiya printerida yashirish yaxshi bo'lardi, shunda u bitta qurilmaga o'xshaydi. Yagona muammo shundaki, Qabul qilish printeri 12v va Pi 5v da ishlaydi. Agar biz ikkalasini ham faqat bitta quvvat kabelidan quvvatlantirmoqchi bo'lsak, biz 12V quvvat manbaini 5vgacha kamaytirishga to'g'ri keladi.
7805 kuchlanish regulyatori, 1uf kondansatör va 10uf kondansatör yordamida men kvitansiya printerining mantiqiy platasiga ulangan oddiy 5v regulyatorni yaratishga muvaffaq bo'ldim. Men "-" simini umumiy erga lehimladim, keyin "+" simini quvvat tugmachasining "yon tomoniga" lehimladim, shunda printer yoqilganda va o'chganda Pi yoqiladi va o'chadi. Ko'p o'lchagich yordamida men chiqish Pi uchun xavfsiz ekanligini tasdiqladim. Keyin men micro-usb kabelini lehimlab, uni Pi ga uladim. Kabelni printerga ulab, kalitni aylantirgandan so'ng, printer ham, Pi ham yoqildi!
Nihoyat, men USB kabelini Pi -dan printerga ulash uchun teshik ochdim. Men printer qutisiga 5v regulyator va Pi qo'yish joyini topdim, keyin hamma narsani bir joyga to'pladim. Shunday qilib, hozirda printerda o'z shaxsiy veb -serveri bor!
7 -qadam: davom ettirish
Agar siz "Agar shunday bo'lsa" ni ko'rib chiqa olsangiz, unda ulanish uchun juda ko'p turli xil veb -xizmatlar borligini payqadingiz. Agar sizda Alexa bo'lmasa yoki undan foydalanishni xohlamasangiz, siz ushbu loyihadan Facebook, Twitter, Gmail, Google Home, Evernote, Tumblr, Flickr, Wordpress kabi har qanday narsadan chop etish uchun foydalanishingiz mumkin. va hokazo Siz mening Github sahifamdan tvitlarni chop etish kodini topishingiz mumkin. Endi boring va nima o'ylab topishingiz mumkinligini ko'ring!
IoT Challenge -da birinchi mukofot
Tavsiya:
SLA 3D printer kislotali qistirilgan elektron platalar: 7 qadam (rasmlar bilan)
SLA 3D Printer kislotali o'ralgan elektron platalar: Remix..remix .. Xo'sh, menga ATtiny chiplarim uchun ishlab chiqish taxtasi kerak. Menda Kicadni bilmagan tenglikni kesish uchun CNC yo'q va men taxtalarga buyurtma berishni xohlamayman. Lekin menda qatronli printer … va kislota bor va men SketchUp -ni bilaman. Va narsalar qilishni yoqtirish. Nima bo'ldi
OreServer - LED pleer indikatorli Raspberry Pi bag'ishlangan minecraft serveri: 9 qadam (rasmlar bilan)
OreServer - LED -pleer ko'rsatkichli Raspberry Pi bag'ishlangan minecraft -serveri: 2020 yil iyul. YANGILANISH - Ushbu loyihani boshlashdan oldin, shuni bilingki, men uni ikkidan ortiq yaratish uchun ishlatilgan turli xil dasturiy vositalarga juda ko'p o'zgarishlar va yangilanishlar kiritilgan. yil avval. Natijada, ko'p qadamlar yozilganidek ishlamaydi.
Qo'lda ishlangan IR masofadan boshqarish pulti: 5 qadam (rasmlar bilan)
Qo'lda ishlangan IR masofadan boshqarish pulti: Men avvalgi loyihamda ushbu qurilmani IQ uzatuvchi sifatida ishlatganman va keyingi ko'rsatmalarni ushbu loyiha tavsifiga yuklashga va'da bergandim, shuning uchun men sizga 555 taymer yordamida IR uzatgichni taqdim etaman. ko'p
Hurda bilan ishlangan CNC besleme tezligini o'lchash vositasi: 5 qadam
Chiqindilardan tayyorlangan CNC besleme tezligini o'lchash vositasi: Hech kim hech qachon CNC mashinasida haqiqiy ovqatlanish tezligini o'lchashni xohlaganmi? Ehtimol emas, CNC ishidan keyin frezalash bitlari buzilmaguncha … lekin ular muntazam ravishda sinishni boshlaganda, ehtimol, tekshirish vaqti keldi. Ushbu ko'rsatmada siz
Qo'lda ishlangan Arduino bilan ishlaydigan RGB Moodlamp: 7 qadam
Qo'lda ishlangan Arduino bilan ishlaydigan RGB Moodlamp: Bu ko'rsatma 5 qismga bo'lingan:- Qurilishni rejalashtirish (1-qadam)- Qo'lda ishlangan soya (2+3-qadam)- ATmega8 boshqaruvchisi bilan 3W LEDlarni boshqarish uchun elektron sxema (4-qadam)- Kod ( 5-qadam)- Qanday qilib uni yakka o'zi olish mumkin (Ardu-ni o'chiring