Sadržaj:
- Supplies
- Korak 1: Postavljanje Raspberry Pi Zero W
- Korak 2: Štampanje iz Pi -a
- Korak 3: Povezivanje na Internet stvari (1. dio)
- Korak 4: Povezivanje na Internet stvari (2. dio)
- Korak 5: Postavljanje vanjskog pristupa pomoću Ngroka
- Korak 6: Dodavanje Pi u štampač
- Korak 7: Idemo dalje
Video: Alexa Printer - Upciklirani pisač računa: 7 koraka (sa slikama)
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:06
Obožavam reciklirati staru tehnologiju i učiniti je ponovo korisnom. Nedavno sam nabavio stari, jeftini termalni štampač računa i htio sam koristan način da ga ponovo namjenim. Zatim sam, za vrijeme praznika, dobio na poklon Amazon Echo Dot, a jedna od značajki koju sam najviše koristio bilo je dodavanje namirnica na moju listu za kupovinu. Pa sam pomislio da bi bilo super kombinirati ovo dvoje i koristiti pisač računa kao IOT štampač za Alexa (ili Google Home, ili Siri itd.). Pogledajmo šta je potrebno da se ova ideja ostvari.
Supplies
Evo dijelova koje koristim za ovaj projekt:
- Jeftini generički termalni pisač računa (mora podržavati ESC-POS)
- Amazon Alexa uređaj (vjerovatno će raditi i drugi uređaji za "kućnog pomoćnika")
- Raspberry Pi Zero Wireless
- 7805 Regulator 5v
- 10μf kondenzator
- 1μf kondenzator
Ostale stvari koje koristim za ovaj projekt su:
- Ako ovo onda ono (IFTTT.com)
- Oprema za lemljenje
Korak 1: Postavljanje Raspberry Pi Zero W
Prvi korak je ponovno štampanje starog štampača računa. Odlučio sam se koristiti Raspberry Pi Zero W kao kontroler zbog niske cijene i male veličine. Zapravo je dovoljno mali da stane u samo kućište pisača računa, tako da nema vanjskih veza! Pi Zero W također ima ugrađen Wi -Fi pa je sve u osnovi integrirano u njegovu malu veličinu.
Da bismo pokrenuli Pi, moramo preuzeti Raspbian OS i snimiti ga na microSD karticu pomoću programa kao što je Etcher. Umetnite ga u Pi zajedno s HDMI kablom, tastaturom, mišem, a zatim uključite napajanje.
Kad se Pi podigne i nalazite se na radnom sučelju, možete se povezati s bežičnom mrežom klikom na ikonu bežične veze u gornjem desnom kutu i odabirom naziva bežične veze. Zatim, ako desnom tipkom miša kliknete tu istu ikonu bežične veze, možete otići u mrežne postavke i postaviti statičku IP adresu tako da se možemo lako povezati s njom putem mreže. Konačno, želite kliknuti na glavni izbornik i odabrati "Raspbian Configuration Editor", a na kartici "Interfaces" provjerite je li SSH omogućen. Zatim ga spremite i ponovo pokrenite Pi.
Korak 2: Štampanje iz Pi -a
Nakon što se Raspbery Pi ponovno pokrene, trebao bi biti povezan s bežičnom mrežom sa statičkim IP -om i omogućenim SSH -om. Dakle, sada bismo se trebali moći povezati s njim daljinski sa bilo kojeg drugog računara. Da biste to učinili, potreban vam je SSH klijent. Za Windows, dobar klijent je Putty. Na njega se možete povezati pomoću Pi -ove statičke IP adrese koju smo ranije postavili. Zatim se možete prijaviti pomoću "pi" kao korisničkog imena i "maline" kao lozinke.
Nakon uspješne prijave, trebali bismo biti na sučelju terminala Pi. Ovdje možemo upisati naredbe koje će se izvršavati na Raspberry Pi. Na primjer, jedna od prvih stvari koju želimo učiniti je provjeriti je li softver na Pi ažuriran. Dakle, u terminal možemo upisati:
sudo apt-get update
Ova naredba će ažurirati softverska spremišta na Pi -u. Zatim možemo instalirati softver štampača ESC-POS i potrebne biblioteke.
sudo apt-get install python3 python3-setuptools python3-pip libjpeg8-devsudo pip3 install --upgrade pip sudo pip3 install python-escpos
Kad to učinite, sada možemo spojiti pisač na Pi-ov Micro-USB port (pomoću adaptera) i uključiti ga. Zatim u našem terminalu možemo stvoriti malu python skriptu
nano hello_world.py
I u njega možemo dodati ovaj python kod
#!/usr/bin/pythoniz escpos.printer uvoz Usb p = Usb (0x0416, 0x5011) p.text ("Mini IOT štampač / n") p.close ()
Izađite iz njega (CTRL-X), sačuvajte ga (CTRL-Y) i pokrenite ga da biste ga testirali
python3 hello_world.py
Korak 3: Povezivanje na Internet stvari (1. dio)
Šta bi koristilo štampaču bez nečega za štampanje? Htio sam omogućiti funkcionalnost ispisa s različitih internetskih servisa, poput Alexa. Pa kako to mogu postići? Jedna je mogućnost da odaberete određenu internetsku uslugu, pronađete njihovu API dokumentaciju i napišete aplikaciju na temelju svog API -ja. Ali biram lijeni put …
Postoji sjajna web stranica pod nazivom "If This Then That" koja pokreće radnje za različite internetske usluge (Alexa, Google Home, Gmail, Facebook, Instagram, Twitter itd.) Na temelju niza kriterija. Na primjer, "ako" objavim na Facebooku (ovo), "Zatim" pošaljite mi e-poštu (to).
Dakle, za prvu polovicu ovoga, kada sam se registrirao za besplatni račun, možete početi stvarati novi "applet" za različite usluge koje želite pokrenuti. "Ovaj" dio mog apleta bit će Alexa. Postoji mnogo Alexa okidača za odabir, ali ja ću odabrati onaj koji kaže "Pitaj šta je na tvojoj listi za kupovinu". I na kraju želimo da pokrene Python skriptu na Raspberry Pi, pa za "Taj" dio skripte želimo odabrati Webhooks.
U opciji Webhooks možemo dodati URL koji upućuje na naš Pi, na koji ćemo se vratiti kasnije. Polje Metoda možemo ostaviti kao "Get", a za vrstu sadržaja odaberite "Plain Text". Za polje Body kliknite "Add Ingredient" i odaberite "Entire List". Ovo će poslati cijeli popis za kupovinu kao zahtjev za dobijanje.
Korak 4: Povezivanje na Internet stvari (2. dio)
Prethodni korak vodi računa o dijelu "Internet", pa sada dopuštamo da radite na dijelu "stvari" koristeći Raspberry Pi. Da bismo komunicirali s applet webhooks -om "If This Then That", moramo postaviti web server na Raspberry Pi. Postoji mnogo različitih načina za postavljanje web servera, ali s obzirom da na kraju želim pokrenuti Python skriptu, odlučio sam koristiti Pythonov Flask server.
Pi ima sve instalirane Flask biblioteke, pa sve što trebamo učiniti je započeti pisanje testne skripte:
nano flask_test.py
I u to, dodajmo neki kod koji služi jednostavnoj web stranici.
#! flask/bin/python #UVOZ FLASK BIBLIOTEKA iz flask import Flask, zahtjev #CREATE A FLASK VARIABLE app = Flask (_ name_) #CREATE AN 'INDEX' PAGE @app.route ('/') def index (): return 'Vaš Flask server radi!' #POKRENITE PROGRAM ako je _name_ == '_main_': app.run (debug = True, host = '0.0.0.0')
Sada samo spremite program i pokrenite ga pomoću ove naredbe:
sudo python3 flask_test.py
Po odgovoru naredbe vidjet ćete da je zadani port na kojem Flask radi port 5000. Dakle, u web pregledniku, ako upišete IP adresu vašeg Pi: 5000, trebali biste vidjeti tekst "Vaš Flask server radi!"
Imamo naš probni Python kod od ranije koji se štampa na našem štampaču računa, a imamo i naš testni Flask server. Stoga ih moramo kombinirati i ugraditi neki kod koji izvlači podatke iz našeg Webhook apleta. Kreirajmo novu Python datoteku:
nano iot_print_server.py
Unutar njega dodajte sljedeći kod:
#! flask/bin/python #UVOZ BIBLIOTEKE U FLASKU I ŠTAMPAČ iz uvozne bočice, zahtijev od escpos.printer uvoza USB #ZNAČAJNE PROMJENE ZA ŠTAMPAČ I FLASKU p = Usb (0x0416, 0x5011) app = Flask (_ name_) #CREATE 'INDEX' PAGE @app.route ('/') def index (): return 'Vaš Flask server radi!' #CREATE "PAGE" CALLED "LIST" ZA ŠTAMPANJE ALEXA SHOPPING LIST @app.route ('/list') def list (): #CAPTURE "DOBI" PODATKE IZ IFTTT WEB KNJIGA content = request.get_data () #CONVERT RAW DATA U STRING str_content = str (sadržaj) #PODIJELITE PODATKE U ODVOJENE LINIJE str_split = str_content.splitlines () #ODVOJENE RIJEČI PO ZAPAČI I DODAJTE NA NOVU LISTU newlist = za riječ u str_split: word = word.split (',') newlist.extend (word) #REMOVE FORMATTING MARKS rmv_marks = [s.strip ("b '") za s na novoj listi] #PRINT HEADER #print ("Lista za kupovinu / n") p.text ("Lista za kupovinu: / n ") #ENUMERIRAJ I ISPISAJ SVAKU STAVKU NA LISTI r = 1 za x u rmv_marks: #print (str (r) +". " + X +" / n ") p.text (str (r) +". " + x + "\ n") r + = 1 #RETURN RESULTS return 'x' #POKRENITE PROGRAM ako je _name_ == '_main_': app.run (debug = True, host = '0.0.0.0')
Možete ga pokrenuti da vidite vraća li greške, ali s našim webhookom još neće raditi jer poslužitelj trenutno radi samo lokalno. Još ne postoji vanjski URL na koji se webhook može povezati. Mogli bismo postaviti prosljeđivanje portova na naš usmjerivač i koristiti samo našu IP adresu s vanjske strane, ali to nije previše sigurno. Alternativno, odlučujem se za NGROK.
Korak 5: Postavljanje vanjskog pristupa pomoću Ngroka
Ngrok postavlja sigurnu vezu s vašom mrežom bez otkrivanja vanjskog IP -a ili nereda s prosljeđivanjem portova. Nakon što se prijavite za besplatni račun, on vam daje token za autorizaciju. Zatim na svom Raspberry Pi -u možete ga preuzeti, raspakirati, povezati svoj auth token, a zatim ga pokrenuti na portu 5000:
mkdir ngrokcd ngrok wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable… raspakirajte ngrok-stable-linux-arm./ngrok authtoken [ovdje unesite svoj auth token]./ngrok http 5000
*** VAŽNO *** Besplatna verzija Ngroka ne daje statičku adresu, pa će vam svaki put kada ponovno pokrenete Ngrok dati drugu adresu. Ako želite statičku adresu kako ne biste morali stalno uređivati svoj Webhook, morat ćete platiti nadograđeni račun.
Besplatna alternativa Ngroku koja nudi statičke IP adrese naziva se "Serveo" na www.serveo.net
************************
Na rezultirajućem ekranu daje vam adresu za prosljeđivanje (https://random-string.ngrok.io) koju možete koristiti u našem Webhook apletu. Vraćajući se na "Ako je ovo onda ono", u polje URL unesite svoju Ngrok adresu za prosljeđivanje i usmjerite je na stranicu "lista" na našem Flask serveru. To bi trebalo izgledati otprilike ovako
random_string.ngrok.io/list
Zatim nastavite i spremite promjene.
Da biste ga isprobali, nastavite s radom Ngroka, otvorite novi terminal i pokrenite našu python skriptu. Dok su obje stavke aktivne, pitajte Alexa šta je na vašoj listi za kupovinu. Nakon minute ili dvije, rezultati bi trebali biti odštampani. Ako želite da se odmah odštampa, samo idite u svoj Applet na IFTTT -u i kliknite "Check Now". Ako sve prođe u redu, štampač računa bi trebao odštampati ono što je na vašoj listi za kupovinu! Posljednji dio koda koji moramo dodati je način za automatsko pokretanje ngroka i našeg poslužitelja za bočice pri svakom pokretanju Pi. To možemo lako učiniti tako što ćemo našu Python skriptu izvršiti:
chmod +x iot_print_server.py
Tada možemo urediti našu /etc/rc.local datoteku tako da izgleda ovako:
## Prema zadanim postavkama, ova skripta ne radi ništa. # Odštampajte IP adresu _IP = $ (ime hosta -I) || true ako ["$ _IP"]; zatim printf "Moja IP adresa je %s / n" "$ _IP" fi #autostart ngrok i usmjerite je na vašu autorizacijsku datoteku./home/pi/ngrok/ngrok http -config =/home/pi/.ngrok2/ngrok. yml 5000 #autostart pisača python skripta sudo python3 /home/pi/iot_receipt_printer.py & exit 0
Korak 6: Dodavanje Pi u štampač
Štampač računa koji imam ima puno praznog prostora unutar kućišta. S obzirom na to da je Raspberry Pi Zero malen, mislio sam da bi bilo super samo ga sakriti u pisač računa kako bi izgledao kao jedan uređaj. Jedini problem je što pisač Receipt radi na 12v, a Pi na 5v. Dakle, ako želimo samo jedan kabel za napajanje za oboje, morat ćemo smanjiti to napajanje od 12 volti na 5 volti.
Koristeći regulator napona 7805, kondenzator od 1 uf i kondenzator od 10 uf uspio sam stvoriti jednostavan regulator od 5 volti koji sam spojio na logičku ploču pisača računa. Lemio sam žicu "-" na zajedničku masu, a zatim sam žicu "+" lemio na "on" stranu prekidača za napajanje tako da se Pi uključi i isključi kada se štampač uključi i isključi. Korištenjem višemetara testirao sam kako bih potvrdio da je izlaz siguran za Pi. Zatim sam lemio na mikro-USB kabel i spojio ga na Pi. Nakon što ste priključili kabl u štampač i okrenuli prekidač, i štampač i Pi su se uključili!
Na kraju sam izbušio rupu za povezivanje USB kabla od Pi -a do štampača. Našao sam mjesto za stavljanje 5v regulatora i Pi u kućište pisača, a zatim sam sve ponovo sastavio. Tako da štampač sada ima i vlastiti samostalni web server!
Korak 7: Idemo dalje
Ako ste mogli pogledati "Ako je ovo onda ono", vjerojatno ste primijetili da ima mnoštvo različitih web usluga za povezivanje. Dakle, ako nemate Alexa ili ne želite da je koristite, možete koristiti ovaj projekat za štampanje sa bilo čega, kao što su Facebook, Twitter, Gmail, Google Home, Evernote, Tumblr, Flickr, Wordpress, itd. Moj kod za štampanje tvitova možete pronaći na mojoj stranici Github. A sad idi i vidi šta možeš smisliti!
Prva nagrada u IoT izazovu
Preporučuje se:
Arduino pisac Morseovog koda: 7 koraka (sa slikama)
Arduino pisac Morzeovog koda: Napravio sam robota koji može pretvoriti bilo koji dati tekst u Morzeov kod i zatim ga zapisati !! Napravljen je od kartona i Lega, a za elektroniku sam koristio Arduino i samo dva motora
Veseli Grinchmas džemper, termalni pisač + GemmaM0: 5 koraka (sa slikama)
Džemper Merry Grinchmas, termalni pisač + GemmaM0: Džemper Merry Grinchmas interaktivni je odjevni predmet koji nudi širok spektar personaliziranih ispisanih poruka za žalbu kad god netko dodirne Grinchov šešir. Poruke protiv Božića stižu putem termalnog štampača kojim upravlja
ScanUp NFC čitač/pisac i audio snimač za slijepe, slabovidne i sve ostale: 4 koraka (sa slikama)
ScanUp NFC čitač/pisac i audio snimač za slijepe, slabovidne i sve ostale: Studiram industrijski dizajn i projekat je rad mog semestra. Cilj je podržati osobe sa oštećenim vidom i slijepe osobe pomoću uređaja koji omogućava snimanje zvuka u. WAV formatu na SD kartici i pozivanje tih podataka pomoću NFC oznake. Tako u
Svaki litar se računa! Arduino dozirnik vode "Štit": 7 koraka (sa slikama)
Svaki litar se računa! Arduino dozator vode "Štit": Zdravo! Pomoću ovog uputstva možete dozirati željenu količinu vode. Sustav može raditi u mL i L. Koristit ćemo Arduino UNO, mjerač protoka za brojanje količine vode, LCD za prikaz statusa, tipke za promjenu postavki i relej za izmjeničnu struju
3D pisač za bojice: 7 koraka (sa slikama)
3D Crayon štampač: Jako želim 3D štampač, ali nemam novca. I ja imam 13 godina i ne mogu se zaposliti, pa šta da radim? Ja pravim jedan od Lego kockica. Nažalost, nemam Lego Mindstorms (350 USD), pa sam se morao snaći. Ovo nije zamišljeno da bude precizno ili tačno