INHOUDSOPGAWE:
- Voorrade
- Stap 1: Die opstel van die Raspberry Pi Zero W
- Stap 2: Druk vanaf die Pi
- Stap 3: Koppel aan die internet van dinge (deel 1)
- Stap 4: Koppel aan die internet van dinge (deel 2)
- Stap 5: Stel eksterne toegang op met Ngrok
- Stap 6: Voeg die Pi by die drukker
- Stap 7: Neem dit verder
Video: Alexa -drukker - Opgedrukte kwitansie -drukker: 7 stappe (met foto's)
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:25
Ek is 'n fan daarvan om ou tegnologie te herwin en dit weer nuttig te maak. Ek het 'n rukkie gelede 'n ou, goedkoop termiese kwitansie-drukker aangeskaf, en ek wou 'n nuttige manier hê om dit weer te gebruik. Toe, gedurende die vakansie, kry ek 'n Amazon Echo Dot, en een van die funksies wat ek die meeste gebruik het, was om kruideniersware by my inkopielys te voeg. Daarom het ek gedink dit sal gaaf wees om die twee te kombineer en die kwitansie -drukker te gebruik as 'n IOT -drukker vir Alexa (of Google Home, of Siri, ens.). Kom ons kyk wat nodig is om hierdie idee te laat realiseer.
Voorrade
Hier is die dele wat ek vir hierdie projek gebruik:
- Goedkoop generiese termiese kwitansie drukker (moet ESC-POS ondersteun)
- Amazon Alexa -toestel (ander "huisassistente" -toestelle sal waarskynlik ook werk)
- Raspberry Pi Zero Wireless
- 7805 5v Reguleerder
- 10μf kondensator
- 1μf kondensator
Ander dinge wat ek vir hierdie projek gebruik, is:
- As dit dan is (IFTTT.com)
- Soldeertoerusting
Stap 1: Die opstel van die Raspberry Pi Zero W
Die eerste stap is om die ou kwitansie -drukker weer te laat druk. Ek het gekies om die Raspberry Pi Zero W as die beheerder te gebruik vanweë die goedkoop prys en die klein grootte. Dit is eintlik klein genoeg om in die kassade van die drukkers self te pas, so daar is geen eksterne verbindings nie! Die Pi Zero W het ook ingeboude Wifi, sodat alles basies in sy klein grootte geïntegreer is.
Om die Pi aan die gang te kry, moet ons die Raspbian OS aflaai en dit met 'n program soos Etcher op 'n microSD -kaart verbrand. Steek dit in die Pi saam met 'n HDMI -kabel, sleutelbord, muis en dan krag.
As die Pi opstart en u op die lessenaarkoppelvlak is, kan u met u draadlose verbinding koppel deur op die ikoon regs bo te klik en die naam van u draadlose verbinding te kies. As u dan met die rechtermuisknop op dieselfde draadlose ikoon klik, kan u na die netwerkinstellings gaan en 'n statiese IP -adres instel sodat ons dit maklik via die netwerk kan maak. Uiteindelik wil u op die hoofkieslys klik en die "Raspbian Configuration Editor" kies en onder die oortjie "Interfaces" seker maak dat SSH aangeskakel is. Stoor dit dan en herlaai u Pi.
Stap 2: Druk vanaf die Pi
Nadat die Raspbery Pi herlaai is, moet dit gekoppel wees aan u draadlose netwerk met 'n statiese IP en met SSH aangeskakel. Ons moet dus op afstand vanaf enige ander rekenaar daaraan kan koppel. Om dit te kan doen, benodig u 'n SSH -kliënt. Vir Windows is Putty 'n goeie kliënt. U kan daarby koppel deur die statiese IP -adres van die Pi wat ons vroeër gestel het, te gebruik. Dan kan u aanmeld met 'pi' as gebruikersnaam en 'framboos' as wagwoord.
Na 'n suksesvolle aanmelding, behoort ons nou by die terminale koppelvlak van die Pi te wees. Hier kan ons opdragte invoer wat op die Raspberry Pi uitgevoer sal word. Een van die eerste dinge wat ons wil doen, is byvoorbeeld om seker te maak dat die sagteware op die Pi op datum is. Dus, in die terminale kan ons tik:
sudo apt-get update
Hierdie opdrag sal die sagteware bewaarplekke op die Pi opdateer. Vervolgens kan ons die ESC-POS-drukkersagteware en vereiste biblioteke installeer.
sudo apt-get install python3 python3-setuptools python3-pip libjpeg8-devsudo pip3 installeer-upgrade pip sudo pip3 installeer python-escpos
As dit klaar is, kan ons die drukker nou aansluit op die mikro-USB-poort van die Pi (met behulp van 'n adapter) en dit aanskakel. Dan kan ons in ons terminale 'n klein python -script skep
nano hello_world.py
En daarin kan ons hierdie python -kode byvoeg
#!/usr/bin/pythonvan escpos.printer invoer Usb p = Usb (0x0416, 0x5011) p.text ("Mini IOT Printer / n") p.close ()
Verlaat dit (CTRL-X), stoor dit (CTRL-Y) en voer dit uit om dit te toets
python3 hello_world.py
Stap 3: Koppel aan die internet van dinge (deel 1)
Wat help 'n drukker sonder om iets te druk? Ek wou funksionaliteit moontlik maak om vanaf verskillende internetdienste, soos Alexa, te druk. So, hoe kan ek dit bereik? Een opsie is om 'n spesifieke internetdiens te kies, hul API -dokumentasie op te spoor en 'n toepassing op grond van hul API te skryf. Maar ek kies om die lui pad te loop …
Daar is 'n wonderlike webwerf genaamd "If This Then That" wat aksies vir verskillende internetdienste (Alexa, Google Home, Gmail, Facebook, Instagram, Twitter, ens) veroorsaak, gebaseer op 'n stel kriteria. Byvoorbeeld, "as" ek op Facebook plaas (hierdie), "Dan" stuur vir my 'n e-pos (dit).
Dus, vir die eerste helfte hiervan, het ek aangemeld vir 'n gratis rekening; u kan 'n nuwe 'applet' begin skep vir die verskillende dienste wat u wil aktiveer. Die 'Hierdie' deel van my applet is Alexa. Daar is baie Alexa -snellers om uit te kies, maar ek gaan die een kies wat sê "Vra wat op u inkopielys is". En uiteindelik wil ons hê dat dit 'n Python -script op die Raspberry Pi moet aktiveer, dus vir die 'That' gedeelte van die script wil ons Webhooks kies.
In die Webhooks -opsie kan ons 'n URL byvoeg wat na ons Pi verwys, waarna ons later sal terugkeer. Ons kan die veld Metode as "Get" verlaat, en kies vir die inhoudstipe "Plain Text". Klik in die liggaam -veld op "Voeg bestanddeel by" en kies "Hele lys". Dit stuur die hele inkopielys as 'n Kry -versoek.
Stap 4: Koppel aan die internet van dinge (deel 2)
Die vorige stap sorg vir die gedeelte "Internet", sodat ons nou kan werk aan die "dinge" -deel met behulp van die Raspberry Pi. Om met die "If This Then That That" webhooks -applet te kommunikeer, moet ons 'n webbediener op die Raspberry Pi opstel. Daar is baie verskillende maniere om 'n webbediener op te stel, maar omdat ek uiteindelik 'n Python -script wil uitvoer, het ek besluit om Python's Flask -bediener te gebruik.
Die Pi het al die Flask-biblioteke vooraf geïnstalleer, dus al wat ons hoef te doen is om 'n toetsskrif te begin skryf:
nano flask_test.py
En laat ons 'n kode byvoeg wat 'n eenvoudige webwerf bedien.
#! fles/bak/luislang #INVOER DIE FLESBiblioteke van flesinvoerfles, versoek #CREATE A FLASK VARIABLE app = Flask (_ name_) #CREATE AN 'INDEX' PAGE @app.route ('/') def index (): terug 'Jou kolfbediener werk!' #RUN DIE PROGRAM as _name_ == '_main_': app.run (debug = True, host = '0.0.0.0')
Stoor nou net die program en voer dit uit met hierdie opdrag:
sudo python3 flask_test.py
U sal met die opdragreaksie sien dat die standaardpoort waarop Flask werk, poort 5000 is. As u in u webblaaier die IP -adres van u Pi tik: 5000, moet u die teks sien "U Flask -bediener werk!"
Ons het ons toets Python -kode van vroeër wat na ons kwitansie -drukker gedruk word, en ons het ons toetsfles -bediener. Ons moet dit vervolgens kombineer en 'n kode bevat wat die data uit ons Webhook -applet haal. Kom ons skep 'n nuwe Python -lêer:
nano iot_print_server.py
Voeg daarby die volgende kode:
#! kolf/bak/luislang #INVOER DIE KOLF EN DRUKKERBiblioteke van flesinvoerfles, versoek van escpos.printer invoer Usb #TEKEN VARIABELE VIR DIE DRUK EN KOLF p = Usb (0x0416, 0x5011) app = Fles (_ naam_) #SKEP 'INDEX' PAGE @app.route ('/') def index (): return 'Jou kolfbediener werk!' #SKEP "BLADSY" GENOEM "LYS" VIR AFDRUKKING VAN ALEXA WINKELLYS @app.route ('/list') def list (): #CAPTURE "KRY" GEGEVENS VAN IFTTT WEBOOKS content = request.get_data () #CONVERT RAW DATA AAN STRING str_content = str (inhoud) #DIVIDE DATA IN SEPERATE LINES str_split = str_content.splitlines () #SEPERATE WORDS BY COMMA AND TO AD TO A NEW LIST newlist = for word in str_split: word = word.split (',') newlist.extend (word) #REMOVE FORMATTING PUNTE rmv_marks = [s.strip ("b '") vir s in newlist] #PRINT HEADER #print ("Shopping List / n") p.text ("Inkopielys: / n ") #ENUMEREER EN DRUK ELKE PUNT OP LYS r = 1 vir x in rmv_marks: #print (str (r) +". " + X +" / n ") p.text (str (r) +". " + x + "\ n") r + = 1 #TERUGRESULTATE lewer 'x' #RUN DIE PROGRAM as _name_ == '_main_': app.run (debug = True, host = '0.0.0.0')
U kan dit uitvoer om te sien of dit foute oplewer, maar dit werk nog nie met ons webhook nie, want op die oomblik werk die bediener slegs plaaslik. Daar is nog geen eksterne URL vir die webhook om aan te sluit nie. Ons kan poort -forwarding op ons router instel en net ons eksterne IP -adres gebruik, maar dit is nie regtig te veilig nie. As alternatief besluit ek om saam met NGROK te gaan.
Stap 5: Stel eksterne toegang op met Ngrok
Ngrok skep 'n veilige verbinding met u netwerk sonder om u eksterne IP bloot te stel of poortverstuur te mors. Nadat u aangesluit het vir 'n gratis rekening, gee dit u 'n magtigingsteken. Dan kan u dit op u Raspberry Pi aflaai, dit uitpak, u authentic -token koppel en dit dan op poort 5000 laat loop:
mkdir ngrokcd ngrok wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable… unzip ngrok-stable-linux-arm./ngrok authtoken [plaas u outyktoken hier]./ngrok http 5000
*** BELANGRIK *** Die gratis weergawe van Ngrok gee u nie 'n statiese adres nie, dus elke keer as u Ngrok herlaai, kry u 'n ander adres. As u 'n statiese adres wil hê sodat u nie u Webhook hoef te redigeer nie, moet u betaal vir 'n opgegradeerde rekening.
'N Gratis alternatief vir Ngrok wat statiese IP's bied, word "Serveo" op www.serveo.net genoem
************************
Op die gevolglike skerm gee dit u 'n aanstuuradres (https://random-string.ngrok.io) wat u in ons Webhook-applet kan gebruik. Gaan dus terug na "If This Then That", in die URL -veld, voer u Ngrok -aanstuuradres in en wys dit na die "lys" -bladsy op ons Flask -bediener. Dit moet so iets lyk
random_string.ngrok.io/list
Gaan dan voort en stoor die veranderinge.
Om dit te toets, hou Ngrok aan die gang, maak 'n nuwe terminale oop en voer ons python -script uit. Terwyl albei items hardloop, vra Alexa wat op u inkopielys is. Na 'n minuut of twee moet die resultate gedruk word. As u wil hê dat dit onmiddellik moet druk, gaan dan na u Applet op IFTTT en klik op "Check Now". As alles goed verloop, moet die kwitansie -drukker dit wat op u inkopielys is, afdruk! Ons kan dit maklik doen deur ons Python -script uitvoerbaar te maak:
chmod +x iot_print_server.py
Dan kan ons ons /etc/rc.local lêer wysig sodat dit so lyk:
## Hierdie skrip doen standaard niks. # Druk die IP -adres af _IP = $ (gasheernaam -I) || waar as ["$ _IP"]; druk dan "My IP -adres is %s / n" "$ _IP" fi #autostart ngrok en wys dit na u outitielêer./home/pi/ngrok/ngrok http -config =/home/pi/.ngrok2/ngrok. yml 5000 #begin die python -script van die printer outomaties sudo python3 /home/pi/iot_receipt_printer.py en verlaat 0
Stap 6: Voeg die Pi by die drukker
Die kwitansie -drukker wat ek het, het baie leë ruimte in die omhulsel. En omdat die Raspberry Pi Zero so klein was, het ek gedink dit sal gaaf wees om dit net in die kwitansiedrukker te verberg, sodat dit soos een toestel lyk. Die enigste probleem is dat die kwitansie -drukker op 12v werk en die Pi op 5v. As ons dus net een kragkabel wil hê, moet ons die 12V -kragtoevoer na 5V verminder.
Met behulp van 'n 7805 spanningsreguleerder, 'n 1uf -kapasitor en 'n 10uf -kondensator kon ek 'n eenvoudige 5v -reguleerder skep wat ek aan die logika van die kwitansie -drukker gekoppel het. Ek het die "-" draad aan die gemeenskaplike grond gesoldeer, en dan het ek die "+" draad aan die "aan" kant van die aan / uit-skakelaar gesoldeer sodat die Pi aan en af sou draai as die drukker aan en af was. Met 'n multi-meter het ek getoets om te bevestig dat die uitset veilig was vir die Pi. Toe soldeer ek aan 'n mikro-usb-kabel en koppel dit aan die Pi. Nadat u die kabel in die drukker gekoppel het en die skakelaar omgedraai het, het beide die drukker en die Pi aangeskakel!
Uiteindelik het ek 'n gat geboor om die USB -kabel van die Pi aan die drukker te koppel. Ek het 'n plek gekry om die 5v -reguleerder en Pi in die drukkas te sit, en toe sit ek alles weer bymekaar. So nou het die drukker ook sy eie webbediener!
Stap 7: Neem dit verder
As u na 'If This Then That' kon kyk, het u waarskynlik opgemerk dat dit baie verskillende webdienste het om aan te sluit. As u dus nie 'n Alexa het nie, of nie omgee om dit te gebruik nie, kan u hierdie projek gebruik om van alles te druk, soos Facebook, Twitter, Gmail, Google Home, Evernote, Tumblr, Flickr, Wordpress, ens. U kan my kode vir die druk van tweets op my Github -bladsy vind. Gaan kyk nou wat u kan bedink!
Eerste prys in die IoT -uitdaging
Aanbeveel:
Alexa Voice Controlled Raspberry Pi Drone Met IoT en AWS: 6 stappe (met foto's)
Alexa Voice Controlled Raspberry Pi Drone Met IoT en AWS: Hallo! My naam is Armaan. Ek is 'n 13-jarige seun uit Massachusetts. Hierdie handleiding toon, soos u uit die titel kan aflei, hoe u 'n Raspberry Pi Drone kan bou. Hierdie prototipe demonstreer hoe drones ontwikkel en ook hoe 'n groot rol hulle in die
Swaai slim magiese spieël vanaf 'n ou skootrekenaar met Alexa -stemherkenning: 6 stappe (met foto's)
Swaai slim magiese spieël vanaf 'n ou skootrekenaar met Alexa-stemherkenning: skryf hier in vir 'Elektronika in 'n neutedop': https://www.udemy.com/electronics-in-a-nutshell/?couponCode=TINKERSPARK Kyk ook na my YouTube -kanaal hier vir meer projekte en elektroniese tutoriale: https://www.youtube.com/channel/UCelOO
Draadlose afstandsbediening met 2,4 GHz NRF24L01 -module met Arduino - Nrf24l01 4 -kanaals / 6 -kanaals sender -ontvanger voor quadcopter - Rc Helikopter - Rc -vliegtuig met Arduino: 5 stappe (met foto's)
Draadlose afstandsbediening met 2,4 GHz NRF24L01 -module met Arduino | Nrf24l01 4 -kanaals / 6 -kanaals sender -ontvanger voor quadcopter | Rc Helikopter | Rc -vliegtuig met Arduino: om 'n Rc -motor te bestuur | Quadcopter | Drone | RC -vliegtuig | RC -boot, ons het altyd 'n ontvanger en sender nodig, veronderstel dat ons vir RC QUADCOPTER 'n 6 -kanaals sender en ontvanger nodig het en dat die tipe TX en RX te duur is, so ons maak een op ons
Hoe om 'n rekenaar met maklike stappe en foto's uitmekaar te haal: 13 stappe (met foto's)
Hoe om 'n rekenaar uitmekaar te haal met eenvoudige stappe en foto's: dit is 'n instruksie oor hoe om 'n rekenaar uitmekaar te haal. Die meeste basiese komponente is modulêr en kan maklik verwyder word. Dit is egter belangrik dat u daaroor georganiseerd is. Dit sal u verhinder om onderdele te verloor, en ook om die montering weer
IoT Cat Feeder met behulp van deeltjiesfoton geïntegreer met Alexa, SmartThings, IFTTT, Google Sheets: 7 stappe (met foto's)
IoT -kattevoer met behulp van deeltjiesfoton geïntegreer met Alexa, SmartThings, IFTTT, Google Sheets: Die behoefte aan 'n outomatiese kattevoer is vanselfsprekend. Katte (die naam van ons kat is Bella) kan onaangenaam wees as hulle honger is, en as jou kat soos ek is, sal die bak elke keer droog eet. Ek het 'n manier nodig gehad om outomaties 'n beheerde hoeveelheid kos uit te gee