0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何利用树莓派Zero实现物联网打印机的设计

科技观察员 来源:hackster.io 作者:hackster.io 2022-04-04 16:35 次阅读

不久前,我买了一台旧的、便宜的热敏收据打印机,我想通过另一种有用的方法来重新利用它。所以我准备将收据打印机用作Alexa(或GoogleHome、Siri等)的IOT打印机。

Pi打印

第一步是让旧的收据打印机在新的设备中再次实现打印功能。我选择使用RaspberryPiZeroW作为控制器,因为它价格便宜且体积小。实际上它也足够小,可以放入收据打印机外壳本身,因此没有外部连接。

pYYBAGJICqyAZpGzAAGtjOJCVAw111.png

为了让Pi启动并运行,我们需要下载RaspbianOS并使用Etcher等程序将其刻录到microSD卡上。将其与HDMI电缆、键盘、鼠标和电源一起插入Pi。

poYBAGJICqiAC56wAAMTv4wfJ7Q970.png

当Pi启动并进入桌面界面时,您可以通过单击右上角的无线图标并选择无线连接的名称来连接到无线。然后,如果您右键单击同一个无线图标,您可以转到网络设置并设置静态IP地址,以便我们可以轻松地通过网络连接到它。最后,您要单击主菜单并选择“Raspbian配置编辑器”,然后在“接口”选项卡下,确保已启用SSH。然后保存并重新启动您的Pi。

pYYBAGJICqWARKvVAASHwoqaIjY201.png

要远程连接到Pi,您需要一个SSH客户端。Windows系统的话,建议使用Putty客户端。您可以使用我们之前设置的Pi的静态IP地址连接到它。然后您就可以使用“pi”作为用户名和“raspberry”作为密码登录。

poYBAGJICp-Acc_mAAJK88BaI3s464.png

接下来展现在我们面前的就是Pi的终端界面,我们要做的第一件事是确保软件是最新的,所以运行:

pYYBAGJICpyAer9WAAAMD3nUbQM049.png

随着软件的更新,我们现在可以安装ESC-POS打印机软件和所需的库。

pYYBAGJICpiATd9ZAABAwNyx8qE352.png

然后我们可以记下一个漂亮的小“HelloWorld”测试脚本。

pYYBAGJICpSAQ5SdAAJmGfT9Ra4660.png

连接到物联网(第1部分)

如果没有要打印的东西,打印机会有什么好处?我想启用从不同互联网服务打印的功能。一种选择是选择特定的互联网服务,跟踪他们的API文档并基于他们的API编写应用程序。

有一个很棒的网站叫做“IfThisThenThat”,它根据一组标准触发不同互联网服务(Alexa、GoogleHome、Gmail、Facebook、Instagram、Twitter等)的操作。例如,“如果”我在Facebook上发帖(this),“那么”给我发一封电子邮件(that)。

poYBAGJICpCAGt0RAAJ1foH2Pc4067.png

所以在前半部分,我注册了一个免费帐户,你可以开始为你想要触发的不同服务创建一个新的“小程序”。我的小程序的“这个”部分将是Alexa。有很多Alexa触发器可供选择,但我将选择显示“询问您的购物清单上有什么”的触发器。我希望它最终可以触发RaspberryPi上的Python脚本,因此对于脚本的“that”部分,我们要选择Webhooks。

在Webhooks选项中,我们可以添加一个指向我们的Pi的URL,稍后我们将返回。我们可以将Method字段保留为“Get”,并为内容类型选择“PlainText”。对于正文字段,单击“添加成分”并选择“整个列表”。这会将整个购物清单作为Get请求发送。

pYYBAGJICoyAEeklAAHXZGS9mXI019.png

连接到物联网(第2部分)

上一步处理“Internet”部分,现在让我们使用RaspberryPi处理“things”部分。为了与“IfThisThenThat”webhooks小程序进行通信,我们需要在RaspberryPi上设置一个Web服务器。有许多不同的方式来设置Web服务器,但考虑到我最终想要运行Python脚本,我决定使用Python的Flask服务器。

Pi已经预装了所有的Flask库,所以我们需要做的就是开始编写一个测试脚本:

poYBAGJICoiAddhGAAAL0yUxYDU542.png

在其中添加一些提供简单网页的代码。

pYYBAGJICoOAQdBHAACMLk-usVc889.png

现在只需保存程序并使用以下命令运行它:

pYYBAGJICn-AWOtdAAAPQ0-eXaY412.png

您将通过命令响应看到Flask运行的默认端口是端口5000。因此,在Web浏览器中,如果您输入Pi的IP地址:5000,您应该会看到文本“您的Flask服务器正在运行!”

pYYBAGJICnyAHGDyAAFqmnNehKo323.png

我们已经有了测试Python代码,以及我们的测试Flask服务器。所以接下来我们需要将它们结合起来,并结合一些从我们的Webhook小程序中提取数据的代码,以能够打印到我们的收据打印机中。

先创建一个新的Python文件:

poYBAGJICnaAX528AAAMODxHDy0941.png

并在其中添加以下代码:

#!flask/bin/python

#IMPORTTHEFLASKANDPRINTERLIBRARIES

fromflaskimportFlask,request

fromescpos.printerimportUsb

#ASSIGNVARIABLESFORTHEPRINTERANDFLASK

p=Usb(0x0416,0x5011)

app=Flask(__name__)

#CREATE‘INDEX’PAGE

@app.route(‘/’)

defindex():

return‘YourFlaskserverisworking!’

#CREATE“PAGE”CALLED“LIST”FORPRINTINGALEXASHOPPINGLIST

@app.route(‘/list’)

deflist():

#CAPTURE“GET”DATAFROMIFTTTWEBOOKS

content=request.get_data()

#CONVERTRAWDATATOSTRING

str_content=str(content)

#DIVIDEDATAINTOSEPERATELINES

str_split=str_content.splitlines()

#SEPERATEWORDSBYCOMMAANDADDTOANEWLIST

newlist=[]

forwordinstr_split:

word=word.split(‘,’)

newlist.extend(word)

#REMOVEFORMATTINGMARKS

rmv_marks=[s.strip(“b‘”)forsinnewlist]

#PRINTHEADER

#print(“ShoppingList\n”)

p.text(“ShoppingList:\n”)

#ENUMERATEANDPRINTEACHITEMINLIST

r=1

forxinrmv_marks:

#print(str(r)+“。”+x+“\n”)

p.text(str(r)+“。”+x+“\n”)

r+=1

#RETURNRESULTS

return’x‘

#RUNTHEPROGRAM

if__name__==’__main__‘:

app.run(debug=True,host=’0.0.0.0‘)

您可以运行它以查看它是否返回任何错误,但它还不能与我们的webhook一起使用,因为到这一步为止,服务器仅在本地运行。尚无Webhook可连接的外部URL。我们可以在路由器上设置端口转发,只使用面向外部的IP地址,但这并不是太安全。作为替代方案,我决定选择NGROK。

使用Ngrok设置外部访问

Ngrok可以建立与网络的安全连接,而无需暴露您的外部IP或弄乱端口转发。注册一个免费帐户后,它会为您提供一个授权令牌。然后在您的RaspberryPi上,您可以下载它、解压缩它、连接您的身份验证令牌,然后在端口5000上运行它:

pYYBAGJICm6AEVbpAAHn7P12YhY148.png

在结果屏幕上,它会为您提供一个转发地址(http://random-string.ngrok.io),您可以在我们的Webhook小程序中使用该地址。所以回到“IfThisThenThat”,在URL字段中,输入您的Ngrok转发地址并将其指向我们Flask服务器上的“列表”页面。它应该看起来像这样

poYBAGJICmmAKEkwAAAVOMhGF34368.png

然后继续保存更改。

我为了测试它能够保持Ngrok运行,打开一个新终端,然后运行我们的python脚本。当这两个项目都运行时,询问Alexa购物清单上有什么。一两分钟后,它应该可以打印出结果。

如果您想立即打印,只需转到IFTTT上的Applet,然后单击“立即检查”。如果一切顺利,收据打印机应该会打印出您的购物清单上的内容!

我们需要添加的最后一点代码是每次Pi启动时自动启动ngrok和我们的烧瓶服务器的方法。我们可以通过使我们的Python脚本可执行来轻松地做到这一点:

pYYBAGJICmSACSL4AAAPbXKsPTQ456.png

然后我们可以编辑我们的/etc/rc.local文件,使它看起来像这样:

poYBAGJICl-ANuLJAACo7zbjMbU020.png

将Pi添加到打印机

我的收据打印机在外壳内有很多空白空间。由于RaspberryPiZero是如此之小,所以我认为将其隐藏在收据打印机中以使其看起来像一个设备会更酷。唯一的问题是收据打印机在12v上运行,而Pi在5v上运行。因此,如果我们只想要一根电源线为它们两者供电,我们将不得不将12v电源降为5v。

pYYBAGJIClyAaOafAAQ2SBzpnNc445.png

使用7805稳压器、1uf电容器和10uf电容器,我能够创建简单的5v稳压器,并将其连接到收据打印机的逻辑板上。我将“-”线焊接到公共地线,然后将“+”线焊接到电源开关的“开”侧,以便在打开和关闭打印机时Pi会打开和关闭。我使用万用表进行了测试,以确认输出对于Pi来说是安全的。然后我焊接了一根微型USB电缆并将其连接到Pi。将电缆插入打印机并翻转开关后,打印机和Pi都打开了!

pYYBAGJICleAfccaAAKCTXK_s9U210.png

最后,我钻了一个孔,将USB电缆从Pi连接到打印机。我找到了一个将5v稳压器和Pi放入打印机外壳的地方,然后我将所有东西放回原处。所以现在打印机也有它自己的独立网络服务器了!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 物联网
    +关注

    关注

    2882

    文章

    42290

    浏览量

    361808
  • 打印机
    +关注

    关注

    9

    文章

    739

    浏览量

    45051
  • 树莓派
    +关注

    关注

    114

    文章

    1656

    浏览量

    104943
收藏 人收藏

    评论

    相关推荐

    WIZ珍藏 #1:来自Adafruit的IoT(联网打印机

    项目描述我要介绍一个关于mini打印机的教程,这个打印机可以通过Arduino Uno 和 Ethernet Shield 实现联网。Ad
    发表于 12-16 10:50

    有没有用树莓 香蕉制作3D打印机的教程?

    有没有用树莓 香蕉制作3D打印机的教程?想自己做个3D打印机 不知有没有教程
    发表于 12-17 21:11

    树莓网店票据打印机

    `` 本帖最后由 348081236 于 2016-2-18 18:28 编辑 外网看到的。开网店的可以用这个来打票据。知道有这么个东西就行。第一步:材料收集第二步:连接和组装第三步:软件第四步:配置打印机的Gmail账号第五步:配置树莓脚本第六步:
    发表于 12-29 11:13

    3D打印树莓相机(又要3D打印机了)

    +Adafruit PiTFT2.8“TFT320×240+电容式触摸屏Adafruit功率加大1000充电器Adafruit锂离子聚合电池 - 3.7V2500mAh的树莓相机和FFAdafruit
    发表于 12-31 15:14

    树莓之无线打印机

    ` 本帖最后由 348081236 于 2016-1-6 16:08 编辑 只需要百来块的树莓A型、电源、SD卡和USB无线网卡(要能支持Raspbian或其他操作系统)和打印机,你就能得到
    发表于 01-06 16:05

    树莓3连打印机问题。显示stopped“Filter failed”

    树莓派上,是raspbian-jessie。自己安装了cups,在打印机官网下了linux的驱动,在用cups添加打印机的时候,也看到有驱动,但是后面在打印的时候就这样了。 自己电脑
    发表于 09-10 15:39

    树莓制作无线网络打印服务器

    使用网络打印机。目前尚需要将树莓的IP设置为固定IP,且路由器设置IP与MAC绑定,才能实现每次通电后即可打印的功能。因系统存储卡未备份出
    发表于 08-12 16:07

    基于3D打印机树莓diy家用PC

    如果您只需要一台能够打字或者收发电子邮件,以及能够上网浏览信息的计算机,于是为了省钱而打算购买一台二手计算机的话。天工社告诉您,其实还有更为省钱的办法,那就是使用树莓和3D打印机自己造一台!  
    发表于 07-10 06:26

    如何利用树莓派去设计一个联网智能小车

    如何利用树莓派去设计一个联网智能小车?基于树莓
    发表于 08-18 07:22

    如何利用树莓实现联网

    如何利用树莓实现联网
    发表于 10-19 06:58

    树莓zero wh坑分享

    树莓型号:树莓zero wh坑一:电源线按照网上的教程烧录好SD卡,使用5v2a的电源,结果能看到电源灯一直闪,死活看不到
    发表于 01-13 06:25

    测试打印机

    测试打印机 1. 初始化打印机①初始化打印机打印机的初始化发生在打印机的内部,加电时自动进行。②初始化
    发表于 06-12 23:01 1440次阅读

    树莓派网络打印机

    基于树莓派的网络打印机
    发表于 04-11 11:44 0次下载

    打印机的种类

    本视频主要详细介绍了打印机的种类,分别是便携式打印机、墨仓式(加墨式)打印机、激光打印机、喷墨打印机
    的头像 发表于 04-11 14:26 1.2w次阅读

    兄弟打印机怎么样_兄弟打印机的使用方法

    现在市场上的打印机的种类和品牌众多,打印机品牌中兄弟打印机的知名度不及惠普打印机,所以很多人并不了解兄弟这个打印机品牌。那么兄弟
    的头像 发表于 04-10 09:50 1.2w次阅读