Përmbajtje:
- Furnizimet
- Hapi 1: Vendosja e Raspberry Pi Zero W
- Hapi 2: Shtypja nga Pi
- Hapi 3: Lidhja me Internetin e Gjërave (Pjesa 1)
- Hapi 4: Lidhja me Internetin e Gjërave (Pjesa 2)
- Hapi 5: Vendosja e qasjes së jashtme me Ngrok
- Hapi 6: Shtimi i Pi në Printer
- Hapi 7: Duke e çuar më tej
Video: Printeri Alexa - Printeri i Marrjes së Çiklizuar: 7 hapa (me fotografi)
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:17
Unë jam një tifoz i riciklimit të teknologjisë së vjetër dhe e bëj atë të dobishme përsëri. Pak kohë më parë, kisha blerë një printer të vjetër, të lirë të marrjes termike, dhe doja një mënyrë të dobishme për ta ri-synuar atë. Pastaj, gjatë pushimeve, m'u dhurua një Amazon Echo Dot, dhe një nga veçoritë që kam përdorur më shumë ishte shtimi i ushqimeve në listën time të blerjeve. Kështu që mendova se do të ishte mirë të kombinosh të dyja dhe të përdorësh printerin e dëftesës si një printer IOT për Alexa (ose Google Home, ose Siri, etj). Le të shohim se çfarë do të duhet për ta bërë këtë ide realitet.
Furnizimet
Këtu janë pjesët që përdor për këtë projekt:
- Printer i lirë gjenerik i marrjes termike (duhet të mbështesë ESC-POS)
- Pajisja Amazon Alexa (pajisjet e tjera "ndihmës në shtëpi" ndoshta do të funksionojnë gjithashtu)
- Raspberry Pi Zero Wireless
- 7805 5v Rregullator
- 10μf Kondensator
- 1μf Kondensator
Gjëra të tjera që përdor për këtë projekt janë:
- Nëse Kjo Atëherë (IFTTT.com)
- Pajisjet e saldimit
Hapi 1: Vendosja e Raspberry Pi Zero W
Hapi i parë është të printoni përsëri printerin e faturës së vjetër. Zgjodha të përdor Raspberry Pi Zero W si kontrollues për shkak të çmimit të lirë dhe madhësisë së vogël. Actuallyshtë në fakt mjaft i vogël për t'u përshtatur brenda kutisë së printerit të faturës, kështu që nuk ka lidhje të jashtme! Pi Zero W gjithashtu ka ndërtuar në Wifi kështu që gjithçka është në thelb e integruar në madhësinë e tij të vogël.
Për të filluar funksionimin e Pi, duhet të shkarkojmë Raspbian OS dhe ta djegim atë në një kartë microSD duke përdorur një program të tillë si Etcher. Futeni atë në Pi së bashku me një kabllo HDMI, tastierë, miun dhe më pas fuqinë.
Kur Pi ngrihet dhe jeni në ndërfaqen e desktopit, mund të lidheni me wireless -in tuaj duke klikuar në ikonën e valës në pjesën e sipërme të djathtë dhe duke zgjedhur emrin e lidhjes tuaj pa tel. Pastaj nëse klikoni me të djathtën në të njëjtën ikonë pa tel, mund të shkoni te cilësimet e rrjetit dhe të vendosni një adresë IP statike në mënyrë që të lidhemi lehtësisht me të përmes rrjetit. Së fundi, ju doni të klikoni në menunë kryesore dhe zgjidhni "Redaktuesi i Konfigurimit Raspbian" dhe nën skedën "Ndërfaqet", sigurohuni që SSH është e aktivizuar. Pastaj ruani atë dhe rindizni Pi tuaj.
Hapi 2: Shtypja nga Pi
Pasi të jetë rindezur Raspbery Pi, duhet të lidhet me rrjetin tuaj pa tel me një IP statike dhe me SSH të aktivizuar. Pra, tani ne duhet të jemi në gjendje të lidhemi me të nga distanca nga çdo kompjuter tjetër. Për ta bërë këtë, do t'ju duhet një klient SSH. Për Windows, një klient i mirë është Putty. Mund të lidheni me të duke përdorur adresën IP statike të Pi që kemi vendosur më herët. Pastaj mund të identifikoheni duke përdorur "pi" si emrin e përdoruesit dhe "mjedër" si fjalëkalim.
Pas një hyrjeje të suksesshme, tani duhet të jemi në ndërfaqen e terminalit Pi. Këtu mund të shtypim komandat që do të ekzekutohen në Raspberry Pi. Për shembull, një nga gjërat e para që duam të bëjmë është të sigurohemi që softueri në Pi është i përditësuar. Pra, në terminal mund të shtypim:
përditësim sudo apt-get
Kjo komandë do të azhurnojë depot e softuerit në Pi. Tjetra, ne mund të instalojmë softuerin e printerit ESC-POS dhe bibliotekat e kërkuara.
sudo apt-get install python3 python3-setuptools python3-pip libjpeg8-devsudo pip3 install-upgrade pip sudo pip3 install python-escpos
Me të bërë këtë, tani mund ta lidhim Printerin me portën Micro-USB të Pi (duke përdorur një përshtatës) dhe ta ndezim. Pastaj në terminalin tonë mund të krijojmë një shkrim të vogël python
nano hello_world.py
Dhe në të mund të shtojmë këtë kod python
#!/usr/bin/pythonnga escpos.printer import Usb p = Usb (0x0416, 0x5011) f. teksti ("Mini IOT Printer / n") f.mbylli ()
Dilni nga ajo (CTRL-X), ruani atë (CTRL-Y) dhe ekzekutojeni për ta testuar
python3 hello_world.py
Hapi 3: Lidhja me Internetin e Gjërave (Pjesa 1)
Çfarë përfitimi do të kishte një printer pa diçka për të printuar? Doja të aktivizoja funksionimin për të printuar nga shërbime të ndryshme të internetit, të tilla si Alexa. Pra, si mund ta arrij atë? Një opsion është të zgjidhni një shërbim specifik të internetit, të gjurmoni dokumentacionin e tyre API dhe të shkruani një aplikacion bazuar në API -në e tyre. Por unë zgjedh të shkoj në rrugën dembele…
Ekziston një uebfaqe e mrekullueshme e quajtur "If This Then That" e cila shkakton veprime për shërbime të ndryshme të internetit (Alexa, Google Home, Gmail, Facebook, Instagram, Twitter, etj) bazuar në një sërë kriteresh. Për shembull, "nëse" postoj në Facebook (kjo), "Pastaj" më dërgoni një e-mail (atë).
Pra, për gjysmën e parë të kësaj, unë u regjistrova për një llogari falas, ju mund të filloni të krijoni një "aplet" të ri për shërbimet e ndryshme që dëshironi të aktivizoni. Pjesa "Kjo" e apletit tim do të jetë Alexa. Ka shumë shkas për Alexa për të zgjedhur, por unë do të zgjedh atë që thotë "Pyetni çfarë është në listën tuaj të blerjeve". Dhe ne përfundimisht duam që ajo të shkaktojë një shkrim Python në Raspberry Pi, kështu që për pjesën "That" të skenarit, ne duam të zgjedhim Webhooks.
Në opsionin Webhooks, ne mund të shtojmë një URL që tregon Pi -në tonë, për të cilën do të kthehemi më vonë. Ne mund ta lëmë fushën Metodë si "Merr", dhe për llojin e përmbajtjes zgjidhni "Tekst i thjeshtë". Për fushën Trupi, klikoni "Shto Përbërës" dhe zgjidhni "E gjithë Lista". Kjo do të dërgojë të gjithë listën e blerjeve si një kërkesë për marrje.
Hapi 4: Lidhja me Internetin e Gjërave (Pjesa 2)
Hapi i mëparshëm kujdeset për pjesën "Internet", kështu që tani le të punojmë në pjesën "gjëra" duke përdorur Raspberry Pi. Për të komunikuar me apletin webhooks "If This Then That", ne duhet të krijojmë një server në internet në Raspberry Pi. Ka shumë mënyra të ndryshme për të krijuar një server në internet, por duke pasur parasysh që në fund të fundit dua të drejtoj një skript Python, vendosa të përdor serverin Python's Flask.
Pi ka të gjitha bibliotekat Flask të para-instaluara, kështu që gjithçka që duhet të bëjmë është të fillojmë të shkruajmë një skript testues:
nano flakon_test.py
Dhe në të, le të shtojmë një kod që shërben për një faqe të thjeshtë në internet.
#! flask/bin/python #Importoni bibliotekat e shisheve nga importi i balonës Flask, kërkoni #KRIJONI një aplikacion të ndryshueshëm të FLASK = Flaskë (_ name_) #Krijo një faqe 'INDEKS' @app.route ('/') def index (): kthehu 'Serveri juaj i Flask po punon!' #RUNI PROGRAMIN nëse _name_ == '_main_': app.run (debug = E vërtetë, host = '0.0.0.0')
Tani thjesht ruani programin dhe drejtojeni duke përdorur këtë komandë:
sudo python3 flask_test.py
Nga përgjigjja e komandës do të shihni që porti i parazgjedhur në të cilin funksionon Flask është porti 5000. Pra, në një shfletues uebi, nëse shkruani Adresën IP të Pi -së tuaj: 5000, duhet të shihni tekstin "Serveri juaj Flask po punon!"
Ne kemi kodin tonë të testimit Python nga më herët që printon në printerin tonë të faturës, dhe ne kemi serverin tonë testues Flask. Pra, më tej ne duhet t'i kombinojmë ato dhe të përfshijmë një kod që tërheq të dhënat nga apleti ynë Webhook. Le të krijojmë një skedar të ri Python:
nano iot_print_server.py
Dhe brenda tij, shtoni kodin e mëposhtëm:
#! flask/bin/python #IMPORTI BIBLIOTEKAT E FLASKS DHE PRINTERIT nga importi i shisheve Flask, kërkesë nga escpos.printer import Usb #ASSIGN VARIABLES FOR PRINTER AND FLASK p = Usb (0x0416, 0x5011) app = Flask (_ name_) #CRE 'INDEX' PAGE @app.route ('/') def index (): return 'Serveri juaj Flask po punon!' #KRIJO "Faqja" e quajtur "Lista" për shtypjen e listës së blerjeve ALEXA @app.route ('/list') def list (): #CAPTURE "MERR" TAT DHNA NGA IFTTT WEBOOKS përmbajtje = request.get_data () #CONVERT RAW DATA TO STRING str_content = str (përmbajtje) #TIV DHIVNAT TIV NDARA N L LINJA TP NDARA str_split = str_content.splitlines () #FJAL TEP NDARA NGA KOMMA DHE SHTOJ N A LISTIST T NEW RI lista e re = për fjalë në str_split: fjalë = fjalë.split (',') newlist.extend (word) #REMOVE FORMATTING MARKS rmv_marks = [s.strip ("b '") for s in newlist] #PRINT HEADER #print ("Lista e blerjeve / n") p.tekst ("Lista e blerjeve: / n ") #NUMRIMI DHE SHPYTIMI Cdo send në listë R = 1 për x në rmv_marks: #print (str (r) +". " + X +" / n ") p.text (str (r) +". " + x + "\ n") r + = 1 #RETURN REZULTATET kthehen 'x' #RUN PROGRAMIN nëse _name_ == '_main_': app.run (debug = E vërtetë, host = '0.0.0.0')
Mund ta ekzekutoni për të parë nëse kthen ndonjë gabim, por nuk do të funksionojë akoma me webhook -un tonë sepse tani për tani, serveri po funksionon vetëm në nivel lokal. Ende nuk ka asnjë URL të jashtme për lidhjen e uebit. Ne mund të vendosim përcjelljen e portit në ruterin tonë dhe thjesht të përdorim adresën IP të jashtme, por kjo nuk është vërtet shumë e sigurt. Si një alternativë, unë vendos të shkoj me NGROK.
Hapi 5: Vendosja e qasjes së jashtme me Ngrok
Ngrok krijon një lidhje të sigurt me rrjetin tuaj pa pasur nevojë të ekspozoni IP -në tuaj të jashtme ose të ngatërroni me përcjelljen e portit. Pasi të regjistroheni për një llogari falas, ju jep një shenjë autorizimi. Pastaj në Raspberry Pi tuaj, mund ta shkarkoni, zbërtheni, lidhni shenjën tuaj të autorit dhe më pas ta ekzekutoni në portën 5000:
mkdir ngrokcd ngrok wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable… unzip ngroh-stable-linux-arm./ngrok authtoken [futni shenjën tuaj të autorit këtu]./ngrok http 5000
*** E RORTNDSISHME *** Versioni falas i Ngrok nuk ju jep një adresë statike, kështu që sa herë që të ri-ekzekutoni Ngrok, do t'ju japë një adresë të ndryshme. Nëse doni një adresë statike në mënyrë që të mos keni nevojë të vazhdoni të redaktoni Webhook tuaj, atëherë do t'ju duhet të paguani për një llogari të azhurnuar.
Një alternativë falas për Ngrok që ofron IP statike quhet "Serveo" në www.serveo.net
************************
Në ekranin që rezulton, ai ju jep një adresë përcjellëse (https://random-string.ngrok.io) që mund ta përdorim në apletin tonë Webhook. Pra, duke u kthyer në "Nëse Kjo Atëherë", në fushën URL, futni adresën tuaj të përcjelljes Ngrok dhe drejtojeni atë në faqen "lista" në serverin tonë Flask. Duhet të duket diçka si kjo
random_string.ngrok.io/list
Pastaj shkoni përpara dhe ruani ndryshimet.
Për ta provuar atë, mbani Ngrok në punë, hapni një terminal të ri dhe drejtoni shkrimin tonë python. Me të dy artikujt në punë, pyesni Alexa se çfarë është në listën tuaj të blerjeve. Pas një minutë ose dy, duhet të printojë rezultatet. Nëse dëshironi që ajo të printohet menjëherë, thjesht shkoni te Apleti juaj në IFTTT dhe klikoni "Kontrollo Tani". Nëse gjithçka shkon mirë, printeri i dëftesës duhet të printojë atë që është në listën tuaj të blerjeve! Pjesa e fundit e kodit që duhet të shtojmë është një mënyrë për të nisur automatikisht ngrohjen dhe serverin tonë të shisheve sa herë që Pi fillon. Ne lehtë mund ta bëjmë atë duke e bërë skriptin tonë Python të ekzekutueshëm:
chmod +x iot_print_server.py
Pastaj ne mund të redaktojmë skedarin tonë /etc/rc.local në mënyrë që të duket kështu:
## Si parazgjedhje ky skript nuk bën asgjë. # Shtypni adresën IP _IP = $ (emri i hostit -I) || e vërtetë nëse ["$ _IP"]; pastaj printf "Adresa ime IP është %s / n" "$ _IP" fi #autostart ngrok dhe drejtojeni atë në skedarin tuaj të autorizimit./home/pi/ngrok/ngrok http -config =/home/pi/.ngrok2/ngrok. yml 5000 #autostart printer python script sudo python3 /home/pi/iot_receipt_printer.py & exit 0
Hapi 6: Shtimi i Pi në Printer
Printeri i dëftesës që kam ka shumë hapësirë të zbrazët brenda zorrës. Dhe me Raspberry Pi Zero që është aq i vogël sa është, mendova se do të ishte mirë vetëm ta fsheh atë në printerin e dëftesës në mënyrë që të duket si një pajisje. Problemi i vetëm është se printeri Receipt funksionon në 12v dhe Pi funksionon në 5v. Pra, nëse duam vetëm një kabllo të energjisë për t'i furnizuar të dy, do të na duhet të heqim dorë nga furnizimi me energji 12v në 5v.
Duke përdorur një rregullator të tensionit 7805, një kondensator 1uf dhe një kondensator 10uf, unë kam qenë në gjendje të krijoj një rregullator të thjeshtë 5v që e lidha me tabelën logjike të printerit të marrjes. Unë ngjita tela "-" në tokën e përbashkët, dhe pastaj e lidha tela "+" në anën "në" të ndërprerësit të energjisë, në mënyrë që Pi të ndizet dhe fiket kur printeri ndizet dhe fiket. Duke përdorur një shumë metër, unë testova për të konfirmuar që dalja ishte e sigurt për Pi. Pastaj u ngjita në një kabllo mikro-usb dhe e lidha me Pi. Pas lidhjes së kabllit në printer dhe kthimit të kalimit, si printeri ashtu edhe Pi u ndezën!
Më në fund, unë shpova një vrimë për të lidhur kabllon USB nga Pi në printer. Gjeta një vend për të vendosur rregullatorin 5v dhe Pi brenda kutisë së printerit, dhe pastaj i bashkova të gjitha së bashku. Pra, tani printeri ka edhe serverin e vet të përmbajtur në internet gjithashtu!
Hapi 7: Duke e çuar më tej
Nëse keni qenë në gjendje të hidhni një sy në "If This Then That", me siguri keni vënë re se ka mijëra shërbime të ndryshme në internet për t'u lidhur. Pra, nëse nuk keni një Alexa, ose nuk ju intereson të përdorni një të tillë, mund ta përdorni këtë projekt për të printuar nga pothuajse çdo gjë, të tilla si Facebook, Twitter, Gmail, Google Home, Evernote, Tumblr, Flickr, Wordpress, etj. Ju mund të gjeni kodin tim për printimin e Tweets në faqen time në Github. Tani shko dhe shiko se çfarë mund të dalësh!
Çmimi i parë në Sfidën IoT
Recommended:
Dizajni i marrjes, përforcimit dhe filtrimit të një qarku të një elektrokardiogrami bazë: 6 hapa
Dizajni i marrjes, përforcimit dhe filtrimit të qarkut të një elektrokardiogrami bazë: Për të përfunduar këtë udhëzues, të vetmet gjëra që nevojiten janë një kompjuter, qasje në internet dhe disa softuerë simulues. Për qëllimet e këtij dizajni, të gjitha qarqet dhe simulimet do të funksionojnë në LTspice XVII. Ky program simulimi përmban
Kanalizimi i ventilatorit të marrjes së CPU -së kompjuterike prej 3 dollarësh: 7 hapa (me fotografi)
3 dollarë për kanalin e ventilatorit të marrjes së CPU -së kompjuterike: Të kesh një kanal futës direkt nga ana e kutisë së kompjuterit tuaj në ventilatorin e CPU -së mund t'ju japë ftohje shumë më të mirë se çdo opsion tjetër ftohës (ajror). Në vend që të përdorni ajrin e marrë nga një portë e përparme, e cila ka kohë të ngrohet nga përbërësi tjetër
Reduktimi i konsumit të energjisë së stafetës - Mbajtja kundrejt rrymës së marrjes: 3 hapa
Reduktimi i konsumit të energjisë së stafetës - Mbajtja kundrejt rrymës së marrjes: Shumica e stafetëve kërkojnë më shumë rrymë për të aktivizuar fillimisht sesa kërkohet për të mbajtur stafetën pasi kontaktet të jenë mbyllur. Rryma e kërkuar për të mbajtur stafetën (Mbajtja e rrymës) mund të jetë shumë më e vogël se rryma fillestare e kërkuar për të vepruar
Matës i Nivelit Audio Nga një VFD i Çiklizuar: 7 Hapa
Matës i nivelit të audios nga një VFD i ricikluar: VFD - Ekrane fluoreshente vakum, një lloj Dinosauri i Teknologjisë së Ekranit, ende mjaft i bukur dhe i lezetshëm, mund të gjenden në shumë pajisje elektronike të vjetruara dhe të lënë pas dore. Pra, do t'i hedhim ato? Joooo ne ende mund t'i përdorim ato. Kushtoi pak përpjekje
Shkalla e marrjes së mostrave/aluzimi i udhëzueshëm: 8 hapa (me fotografi)
Shkalla e marrjes së mostrave/Aliasing Instructable: Unë dëshiroj të krijoj një projekt edukativ që demonstron aliasing (dhe normat e mostrës) dhe ka për qëllim të vendoset në një faqe në internet si një burim për studentët që po mësojnë rreth aliasimit