Obsah:
- Zásoby
- Krok 1: Nastavení Raspberry Pi Zero W
- Krok 2: Tisk z počítače Pi
- Krok 3: Připojení k internetu věcí (část 1)
- Krok 4: Připojení k internetu věcí (část 2)
- Krok 5: Nastavení externího přístupu pomocí Ngrok
- Krok 6: Přidání Pi do tiskárny
- Krok 7: Posunutí dále
Video: Tiskárna Alexa - Upcyklovaná tiskárna účtenek: 7 kroků (s obrázky)
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:21
Jsem fanouškem recyklace staré technologie a jejího opětovného využití. Před časem jsem si pořídil starou levnou termální tiskárnu účtenek a chtěl jsem užitečný způsob, jak ji znovu použít. Pak jsem o prázdninách dostal dárek Amazon Echo Dot a jednou z funkcí, které jsem nejvíce používal, bylo přidání potravin do mého nákupního seznamu. A tak jsem si řekl, že by bylo skvělé tyto dva spojit a použít tiskárnu účtenek jako tiskárnu IOT pro Alexa (nebo Google Home, nebo Siri atd.). Podívejme se, co bude potřeba k tomu, aby se tato myšlenka stala skutečností.
Zásoby
Zde jsou části, které pro tento projekt používám:
- Levná generická termální tiskárna účtenek (musí podporovat ESC-POS)
- Zařízení Amazon Alexa (pravděpodobně budou fungovat i další zařízení „domácího asistenta“)
- Raspberry Pi Zero Wireless
- 7805 5v regulátor
- 10μf kondenzátor
- 1μf kondenzátor
Další věci, které pro tento projekt používám, jsou:
- Pokud toto, pak to (IFTTT.com)
- Pájecí zařízení
Krok 1: Nastavení Raspberry Pi Zero W
Prvním krokem je znovu vytisknout starou tiskárnu účtenek. Jako ovladač jsem se rozhodl použít Raspberry Pi Zero W, protože má nízkou cenu a malé rozměry. Ve skutečnosti je dostatečně malý, aby se vešel do samotného pouzdra tiskárny účtenek, takže zde není žádné externí připojení! Pi Zero W má také vestavěnou Wifi, takže vše je v podstatě integrováno do své malé velikosti.
Abychom mohli Pi zprovoznit, musíme si stáhnout Raspbian OS a vypálit ho na kartu microSD pomocí programu, jako je Etcher. Vložte jej do Pi spolu s kabelem HDMI, klávesnicí, myší a poté napájením.
Když se Pi spustí a jste na ploše, můžete se připojit k bezdrátové síti kliknutím na ikonu bezdrátového připojení v pravém horním rohu a výběrem názvu bezdrátového připojení. Pokud pak kliknete pravým tlačítkem na stejnou ikonu bezdrátového připojení, můžete přejít na nastavení sítě a nastavit statickou adresu IP, abychom se k ní mohli snadno připojit přes síť. Nakonec chcete kliknout na hlavní nabídku a vybrat „Editor konfigurace Raspbian“a na kartě „Rozhraní“zkontrolujte, zda je povoleno SSH. Poté jej uložte a restartujte Pi.
Krok 2: Tisk z počítače Pi
Jakmile bude Raspbery Pi restartován, měl by být připojen k vaší bezdrátové síti se statickou IP a s povoleným SSH. Nyní bychom se tedy k němu měli mít možnost vzdáleně připojit z jakéhokoli jiného počítače. K tomu budete potřebovat klienta SSH. Pro Windows je dobrým klientem Putty. Můžete se k němu připojit pomocí statické IP adresy Pi, kterou jsme nastavili dříve. Poté se můžete přihlásit pomocí „pi“jako uživatelského jména a „raspberry“jako hesla.
Po úspěšném přihlášení bychom nyní měli být na koncovém rozhraní Pi. Zde můžeme zadat příkazy, které budou spuštěny na Raspberry Pi. Jednou z prvních věcí, kterou chceme například udělat, je zajistit, aby byl software na Pi aktuální. V terminálu tedy můžeme zadat:
sudo apt-get update
Tento příkaz aktualizuje úložiště softwaru na Pi. Dále můžeme nainstalovat software tiskárny ESC-POS a požadované knihovny.
sudo apt-get install python3 python3-setuptools python3-pip libjpeg8-devsudo pip3 install --upgrade pip sudo pip3 install python-escpos
Když to bude hotové, můžeme nyní tiskárnu připojit k portu Micro-USB Pi (pomocí adaptéru) a zapnout. Potom v našem terminálu můžeme vytvořit malý python skript
nano hello_world.py
A v něm můžeme přidat tento kód pythonu
#!/usr/bin/python z escpos.printer import Usb p = Usb (0x0416, 0x5011) p.text ("Mini IOT Printer / n") p.close ()
Ukončete jej (CTRL-X), uložte jej (CTRL-Y) a spusťte jej, abyste jej otestovali
python3 hello_world.py
Krok 3: Připojení k internetu věcí (část 1)
K čemu by byla tiskárna bez něčeho k tisku? Chtěl jsem povolit funkčnost tisku z různých internetových služeb, jako je například Alexa. Jak to tedy mohu dosáhnout? Jednou z možností je vybrat konkrétní internetovou službu, sledovat jejich dokumentaci API a napsat aplikaci na základě jejich API. Ale rozhodl jsem se jít línou cestou…
Existuje skvělý web s názvem „If This Then That“, který spouští akce pro různé internetové služby (Alexa, Google Home, Gmail, Facebook, Instagram, Twitter atd.) Na základě sady kritérií. Například „pokud“zveřejním na Facebooku (toto), „Potom“mi pošlete e-mail (ten).
Takže v první polovině tohoto jsem se zaregistroval k bezplatnému účtu, můžete začít vytvářet nový „applet“pro různé služby, které chcete spustit. "Tato" část mého apletu bude Alexa. Na výběr je mnoho spouštěčů Alexa, ale já vyberu ten, který říká „Zeptejte se, co máte na nákupním seznamu“. A nakonec chceme, aby to spustilo skript Pythonu na Raspberry Pi, takže pro část „Toho“skriptu chceme vybrat Webhooks.
V možnosti Webhooks můžeme přidat URL, která ukazuje na naše Pi, ke kterému se vrátíme později. Pole Metoda můžeme ponechat jako „Získat“a pro typ obsahu vyberte „Prostý text“. V poli Tělo klikněte na „Přidat přísadu“a vyberte „Celý seznam“. Tím se odešle celý nákupní seznam jako požadavek Get.
Krok 4: Připojení k internetu věcí (část 2)
Předchozí krok se stará o část „Internet“, takže nyní můžeme pracovat na části „věci“pomocí Raspberry Pi. Abychom mohli komunikovat s apletem „If This Then That“webhooks, musíme na Raspberry Pi nastavit webový server. Existuje mnoho různých způsobů, jak nastavit webový server, ale vzhledem k tomu, že nakonec chci spustit skript Pythonu, rozhodl jsem se použít server Python Flask.
Pi má všechny předinstalované knihovny Flask, takže vše, co musíme udělat, je začít psát testovací skript:
nano flask_test.py
A v něm přidejme nějaký kód, který slouží jednoduché webové stránce.
#! flask/bin/python #IMPORTOVAT FLASKOVÉ KNIHOVNY z baňky importovat baňku, požadavek #VYTVOŘIT FLASK VARIABLE app = Flask (_ name_) #CREATE AN 'INDEX' PAGE @app.route ('/') def index (): vrátit 'Váš server z baňky funguje!' #RUN PROGRAM if _name_ == '_main_': app.run (debug = True, host = '0.0.0.0')
Nyní stačí uložit program a spustit jej pomocí tohoto příkazu:
sudo python3 flask_test.py
Odpovědí příkazu uvidíte, že výchozí port, na kterém Flask běží, je port 5000. Pokud tedy ve webovém prohlížeči zadáte IP adresu Pi: 5000, měl by se vám zobrazit text „Váš server Flask funguje!“
Máme testovací kód Pythonu z dřívější doby, který se tiskne na naši tiskárnu účtenek, a máme testovací server Flask. Dále je tedy musíme zkombinovat a začlenit nějaký kód, který načte data z našeho apletu Webhook. Pojďme vytvořit nový soubor Pythonu:
nano iot_print_server.py
A v rámci něj přidejte následující kód:
#! flask/bin/python #IMPORTOVAT KNIHOVNY FLASK A TISKÁRNY z baňky importovat Flask, žádost od escpos.printer import USB #ASIGN VARIABLES PRO TISKÁRNU A FLASK p = Usb (0x0416, 0x5011) app = Flask (_ name_) #CREATE 'INDEX' PAGE @app.route ('/') def index (): return 'Váš server Flask funguje!' #CREATE "PAGE" CALLED "LIST" FOR PRINTING ALEXA SHOPPING LIST @app.route ('/list') def list (): #CAPTURE "GET" DATA FROM IFTTT WEBOOKS content = request.get_data () #CONVERT RAW DATA TO STRING str_content = str (obsah) #ROZDĚLENÍ DAT DO ODDĚLENÝCH ŘÁDKŮ str_split = str_content.splitlines () #SEPERATE WORDS BY COMMA AND ADD TO a NEW LIST newlist = for word in str_split: word = word.split (',') newlist.extend (word) #REMOVE FORMATTING MARKS rmv_marks = [s.strip ("b '") for s in newlist] #PRINT HEADER #print ("Shopping List / n") p.text ("Shopping List: / n ") #ČÍSLO A TISK KAŽDÉHO POLOŽKY V SEZNAMU r = 1 pro x v rmv_marks: #print (str (r) +". " + X +" / n ") p.text (str (r) +". " + x + "\ n") r + = 1 #VÝSLEDKY NÁVRATU vrátit 'x' #RUN PROGRAM, pokud _name_ == '_main_': app.run (debug = True, host = '0.0.0.0')
Můžete jej spustit, abyste zjistili, zda vrací nějaké chyby, ale s naším webhookem to zatím fungovat nebude, protože v tuto chvíli server běží pouze lokálně. Webhook, ke kterému se lze připojit, zatím nemá externí adresu URL. Mohli bychom na našem routeru nastavit přesměrování portů a použít pouze naši externí IP adresu, ale to není příliš bezpečné. Jako alternativu jsem se rozhodl jít s NGROK.
Krok 5: Nastavení externího přístupu pomocí Ngrok
Ngrok nastavuje zabezpečené připojení k vaší síti, aniž by bylo nutné vystavovat vaši externí IP adresu nebo nepořádek s přesměrováním portů. Po registraci bezplatného účtu vám poskytne autorizační token. Pak si jej na Raspberry Pi můžete stáhnout, rozbalit, připojit svůj ověřovací token a poté jej spustit na portu 5000:
mkdir ngrokcd ngrok wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable… unzip ngrok-stable-linux-arm./ngrok authtoken [sem vložte svůj ověřovací token]./ngrok http 5000
*** DŮLEŽITÉ *** Bezplatná verze Ngroku vám neposkytne statickou adresu, takže pokaždé, když znovu spustíte Ngrok, získáte jinou adresu. Pokud chcete statickou adresu, abyste nemuseli stále upravovat svůj Webhook, budete muset za upgradovaný účet zaplatit.
Volná alternativa k Ngrok, která nabízí statické IP adresy, se na www.serveo.net nazývá „Serveo“
************************
Na výsledné obrazovce vám poskytne adresu pro přesměrování (https://random-string.ngrok.io), kterou můžeme použít v našem appletu Webhook. Vraťme se tedy zpět do pole „If This Then That“, do pole URL zadejte svou adresu pro přesměrování Ngrok a přejděte na stránku „seznam“na našem serveru Flask. Mělo by to vypadat nějak takto
random_string.ngrok.io/list
Pak pokračujte a uložte změny.
Chcete -li to vyzkoušet, nechte Ngrok spuštěný, otevřete nový terminál a spusťte náš skript python. Když jsou obě položky spuštěné, zeptejte se Alexe, co je na vašem nákupním seznamu. Po minutě nebo dvou by to mělo vytisknout výsledky. Pokud chcete, aby se okamžitě vytiskl, přejděte na svůj Applet na IFTTT a klikněte na „Zkontrolovat nyní“. Pokud vše půjde dobře, tiskárna účtenek by měla vytisknout, co je ve vašem nákupním seznamu! Poslední bit kódu, který musíme přidat, je způsob automatického spuštění ngrok a našeho bankového serveru při každém spuštění Pi. Můžeme to snadno udělat tím, že spustíme náš skript Python:
chmod +x iot_print_server.py
Poté můžeme náš soubor /etc/rc.local upravit tak, aby vypadal takto:
## Ve výchozím nastavení tento skript nedělá nic. # Vytiskněte IP adresu _IP = $ (název hostitele -I) || true if ["$ _IP"]; pak vytiskněte „Moje IP adresa je %s / n“„$ _IP“fi #autostart ngrok a nasměrujte ji do svého souboru./home/pi/ngrok/ngrok http -config =/home/pi/.ngrok2/ngrok. yml 5000 #autostart tiskárna skript python sudo python3 /home/pi/iot_receipt_printer.py & exit 0
Krok 6: Přidání Pi do tiskárny
Tiskárna účtenek, kterou mám, má uvnitř skříně spoustu prázdného místa. A když je Raspberry Pi Zero tak malý, jaký je, říkal jsem si, že by bylo skvělé ho schovat do tiskárny účtenek, aby vypadal jako jedno zařízení. Jediným problémem je, že tiskárna účtenek běží na 12v a Pi běží na 5v. Pokud tedy chceme k napájení obou pouze jeden napájecí kabel, budeme muset snížit napájení 12 V na 5 V.
Pomocí regulátoru napětí 7805, kondenzátoru 1uf a kondenzátoru 10uf jsem dokázal vytvořit jednoduchý 5v regulátor, který jsem připojil k logické desce tiskárny účtenek. Pájel jsem vodič "-" na společnou zem a poté jsem připájel vodič "+" na stranu "na" vypínače, aby se Pi zapínal a vypínal při zapnutí a vypnutí tiskárny. Pomocí multimetru jsem testoval, abych potvrdil, že výstup je pro Pi bezpečný. Poté jsem připájel na mikro USB kabel a připojil jej k Pi. Po zapojení kabelu do tiskárny a přepnutí přepínače se tiskárna i Pi zapnuly!
Nakonec jsem vyvrtal otvor pro připojení USB kabelu od Pi k tiskárně. Našel jsem místo, kam dát 5v regulátor a Pi dovnitř skříně tiskárny, a pak jsem dal všechno dohromady. Nyní má tiskárna také vlastní samostatný webový server!
Krok 7: Posunutí dále
Pokud jste se mohli podívat na „If This Then That“, pravděpodobně jste si všimli, že má spoustu různých webových služeb, ke kterým se můžete připojit. Pokud tedy nemáte Alexa, nebo se o něj nestaráte, můžete tento projekt použít k tisku téměř z čehokoli, jako je Facebook, Twitter, Gmail, Google Home, Evernote, Tumblr, Flickr, Wordpress, atd. Můj kód pro tisk tweetů najdete na mé stránce Github. Nyní se podívejte, co můžete vymyslet!
První cena v IoT Challenge
Doporučuje:
DIY NANOLEAF - žádná 3D tiskárna: 11 kroků (s obrázky)
DIY NANOLEAF - Žádná 3D tiskárna: Hii Tech Lovers v tomto Instructable Ukážu vám, jak vyrobit Arora Nanoleaf Bez použití elektrického nářadí & tyto panely můžete přizpůsobit. Vyrobil jsem 9 panelů, celkem 54 LED diod Neo pixel. Celkové náklady pod 20 USD (indické ₹ 1500) Nanoleaf světelné panely
Veselý svetr Grinchmas, termální tiskárna + GemmaM0: 5 kroků (s obrázky)
Merry Grinchmas svetr, termální tiskárna + GemmaM0: Svetr Merry Grinchmas je interaktivní oděv, který poskytuje širokou škálu personalizovaných tištěných zpráv jako stížnost, kdykoli se někdo dotkne pomponu Grinchova klobouku. Zprávy před Vánocemi přicházející přes tepelnou tiskárnu ovládanou
Dotter - obrovská jehličková tiskárna na bázi Arduina: 13 kroků (s obrázky)
Dotter - Obrovská jehličková tiskárna na bázi Arduina: Ahoj, vítej v tomto návodu :) Jsem Nikodem Bartnik 18 let starý tvůrce. Za 4 roky výroby jsem vyrobil spoustu věcí, robotů, zařízení. Ale tento projekt je pravděpodobně největší, pokud jde o velikost. Myslím, že je také velmi dobře navržený
3D pastelková tiskárna: 7 kroků (s obrázky)
3D pastelková tiskárna: Chci 3D tiskárnu velmi špatně, ale nemám peníze. Je mi také 13 a nemohu získat práci, tak co mám dělat? Jeden jsem postavil z Lega. Bohužel nemám Lego Mindstorms (350 $), takže jsem si musel vystačit. Toto nemá být přesné nebo přesné
Moje přenosná fotografická tiskárna: 5 kroků (s obrázky)
Moje přenosná fototiskárna: Termální tiskárna je běžné zařízení pro tisk účtenek. A je to také oblíbené pro kutily. Můžete to získat z níže uvedeného odkazu. Https: //www.adafruit.com/? Q = thermal%20printer Nedávno jsem našel zajímavou termální tiskárnu na aliexpress.com. Je to f