讲座将近2个小时,因此最好直接在YouTube上观看;视频说明中有一个目录。视频后将附有简短的文字记录(特别是Habr)。
观看或阅读愉快。:)
问题描述和解决方案概念
让我们从初始数据开始。我们有一台普通的扫描仪(在我的情况下为Canon CanoScan LiDE 120)连接到计算机的USB端口,并且可以扫描到计算机中。但是,例如,这里出现了第二台计算机,并且由于通常需要进行扫描,因此每次在计算机之间切换扫描仪都是很不方便的。该怎么办?是的,现在有网络MFP,但是由于某些原因,这不是我们的选择。
为了解决该问题,我们基本上需要为扫描仪配备一个单独的位置,组织一个网络驱动器,将家庭网络的所有计算机连接到该位置,并教导扫描仪扫描到同一网络驱动器。扫描过程中的用户将靠近扫描仪,按下按钮并更改扫描的纸张。他不需要每次都运行计算机来发出扫描命令。然后,在扫描完他需要的所有内容后,他将转到计算机上,将扫描的文件从网络驱动器复制或传输到自己,并将继续使用它们。
因此,我们选择放置扫描仪的位置,将电缆从本地网络的路由器连接到它(也可以使用WiFi,但我们将其保留为可选),然后放置220V电源插座-接下来呢?
从理论上讲,扫描仪需要连接到计算机。但是,为此目的购买和安装单独的计算机非常昂贵,而且不合理。好吧,他将需要带有监视器的键盘和鼠标,它们还需要空间。同时,我们没有什么特别的,我们主要扫描一种格式(A4)。因此,让我们看一下更便携的东西。
在我们的项目中,我们使用的是单板计算机Raspberry Pi 2 ModelB。尽管它不是新的并且功能不是很强大,但它的功能足以满足我们的任务,它并没有真正消耗能量,很好,GPIO将会派上用场。
对于那些想立即基于现有扫描仪重复所有操作的人,我建议您首先访问SANE项目网站。,请转到受支持的设备列表,并确保项目充分支持特定的扫描仪型号。否则,可能会付出很多努力,甚至可能会花钱。此外,可能值得用Debian 10(虚拟的或真实的)来组织一台机器(虚拟的或真实的)(更确切地说是检查Raspberry Pi Foundation制作操作系统的版本时的当前版本),并开箱即用并使用scanimage实用程序检查工作; 如果一切正常,那么它将可能适用于覆盆子。
辅助必要
至于树莓和扫描仪的电源,在演示项目中,我使用常规的两安MicroUSB充电器。但是,如果树莓应该全天候工作,那么我不建议您使用它们。这不是他们的任务,如果在24/7模式下长时间不提供如此小的电流,则特定的充电不会失败,这也不是事实。最好不要省钱,或者购买专用的电源设备,或者改编另一个适合此类工作的电源。
另外,我不建议使用长距离或任何起源的USB电缆连接扫描仪。这是来自六个月以上的运营经验;在最不适当的时刻可能会发生意外。
至于“磁盘”内存-如您所知,在树莓中,使用microSD卡。第十个Raspberry Pi OS可以安装在4 gig卡上。但是,我们仍然可以在其中找到不错的可安装软件,以及用于扫描的网络文件夹。因此,我们至少关注8个。该项目中使用了16个,另外,对于OS映像的初始记录,还需要一台带有读卡器的计算机,可以将卡连接到其中。我为笔记本电脑内置的SD卡读卡器使用了适配器。
我们还需要一个身体。有很多选择。在所示的变体中,我使用了非原始的厚度增加的情况;这样就可以在顶盖上安装一个由项目提供的两个按钮和一个LED电路(后面会详细介绍),外壳的高度足以容纳按钮,一个覆盆子和BLS连接器以连接到GPIO引脚。该主体由有机玻璃制成。这是组装电路的外观,但没有覆盆子:
现在,我将这种情况用于调试和演示,在实战版本中,覆盆子与电源一起固定在专用的电气面板中,并同时用于另一项任务,并安装了电路在一个单独的小盒子中,该盒子通过四芯扁平电话线连接到树莓。
覆盆子的另一个问题是加热核心。如果您打算昼夜不停地工作,我们会用合适的导热胶粘一个小的散热器。
准备存储卡
让我们开始准备存储卡。最近,Raspberry Pi基金会不仅将Raspbian重命名为Raspberry Pi OS,而且还发布了适用于Windows,macOS和Ubuntu的名为Raspberry Pi Imager的程序。下载此程序,将其安装在计算机上并运行。
首先,在程序窗口中,我们将选择“选择操作系统”。有很多选择。默认情况下,提供了Raspberry Pi OS(32位),但它带有台式机,对于两个台式机来说都是这样。因此,我们转到Raspberry Pi OS(其他),然后选择lite选项。除了命令行,我们几乎不需要其他任何东西。然后,我们放入并选择一个存储卡,并在其上写一张图像。视频中的00:12:15展示了此过程。
最初设定
您可以将存储卡放在树莓派中,然后转到其设置。为此,除了电源,具有Internet的网络和扫描仪之外,我们还需要通过HDMI电缆连接USB键盘和显示器(对于第四代覆盆子,有MicroHDMI)。我们最后连接电源。并要记住使用开放式导电部件时的安全性,尤其是在没有覆盆子的情况下,并且在与220V电接触方面,电源存在问题。
打开,启动,使用默认的pi登录名和raspberry密码登录。视频中的设置过程从00:18:43开始。
首先,请确保制定sudo apt更新和sudo apt升级。在录制视频时,尽管我在初始设置之前就录制了存储卡的映像,但存储库提供了30个软件包的更新。显然,不是每次更新存储库时都收集它。
此外,如果需要,我们可以解决控制台中的正方形而不是俄语字母的问题。我们调用sudo dpkg-reconfigure console-setup并浏览菜单。我们设置(或保留)以下参数:
- 在控制台上使用的编码-UTF-8
- 支持的字符集-猜测最佳字符集
- 字体大小-8x16
第一次重启。我们通过sudo reboot定期执行此操作。再次登录,运行sudo raspi-config并进行参数的初始设置。我们在其中执行以下任务:
- ( : System options — Password )
- SSH (Interface options — SSH)
- (Localisation options — Locale; en_GB.UTF-8 UTF-8, en_US.UTF-8 UTF-8 ru_RU.UTF-8 UTF-8, )
- (Localisation options — Timezone; , )
- (Advanced options — Expand filesystem).
之后,选择完成。该程序将提供重启功能,我们可以这样做。
然后,我们再次登录(已使用新密码),转到sudo raspi-config,选择“本地化选项”,然后选择“键盘”。键盘设置程序将已经用俄语编写。
在键盘型号中,作为一种标准,我们选择“具有105键(国际)的普通PC”。
在布局中,首先选择“ Other”(其他),然后选择“ Russian”(俄语),然后选择选项(仅选择“ Russian”或更适合于现有键盘)。
接下来,根据需要选择一种切换布局和其他不同键的方法。一切将很快切换。它保留在raspi-config主菜单中以转到“完成”。我们将不再返回该实用程序。
安装和配置项目使用的其他软件
做sudo apt安装connectionpi samba sane。我将mc添加到了此列表(以及演讲)中,并显示了如何与他合作,但这纯粹是个人喜好,我不强加于任何人。
然后(最好在大多数情况下)将永久IP地址设置为malinka。我认为最好在路由器上执行此操作,但如果无法做到这一点,则可以在注释示例静态IP配置之后通过编辑/etc/dhcpcd.conf来设置静态网络设置。 Raspberry Pi OS附带了dhcpcd软件包,您无需安装它。
下一个任务是创建用于存储扫描文件的目录。我选择了这种情况,并创建了/ var / scanned目录。需要为此目录设置此类权限,以便samba可以使用它。
现在,当然,我们正在配置samba。我们转到/etc/samba/smb.conf并注册全局设置和区域,其中包含新网络资源的数据以及在此处创建的目录的路径。视频显示在00:41:51。但是,当然,网络的细节可能与此处给出的设置有所不同。
配置完成后,强烈建议重新启动树莓派并从计算机中检查网络驱动器。在大多数情况下,您需要从那里完全访问目录中的文件。
在过渡到针线和编程之前,我们还有两个任务-确定熨烫部件,然后首先确定扫描程序的参数。
让我们从铁的部分开始。为此,请运行gpio readall。 Malinka将在“物理”列中显示GPIO连接器上的引脚编号,并在“名称”列中显示它们的用途。对于该电路,我们需要三个GPIO端口和一根公共线(在“名称”列中,它称为0v;连接器上有很多它们,但我们不需要太多,只需选择其中之一即可)。我们在连接器上写下它们的名称和编号。对于我自己,我在引脚号12处选择GPIO.1,在引脚13处选择GPIO.2,在引脚15处选择GPIO.3。我将公共线连接到引脚号9。
现在让我们决定已经连接到USB的扫描仪。做sudo sane-find-scanner。如果使用此实用程序看不到扫描仪,则可能是扫描仪,覆盆子,电缆或电源存在问题;这需要单独解决。现在执行sudo scanimage –帮助|少一些,然后查看我们设备允许的选项。对于我自己,我将写下选项l,t,x,y,分辨率和格式。这些选项将进入扫描程序的命令行。
这样就完成了树莓的初始设置。在组装电路之前,必须先关闭覆盆子。如果没有人记得,可以使用sudo shutdown –h now命令来完成。片刻之后,屏幕上的图像将消失,并且覆盆子上的所有LED都将熄灭,除了电源LED之外。这意味着系统已经完成工作,您可以关闭电源并启动手工艺品。
覆盆子中的GPIO仅是数字的(即2级0和1级),并且可以在三种模式下工作:仅一个输入(该模式称为in),一个具有50-65千欧电阻的上拉电阻的输入(称为up)和一个输出(称为out)。我们将使用最后两种模式。
如我先前所写,我们将需要通过GPIO连接两个按钮(我们将其称为“开始”和“停止”)和一个LED。自然地,为了限制电流,您将需要串联一个限制电阻。我选择了标称值为2.2千欧,耗散功率为0.25 W的输出电阻。通常就足够了。接线图如下:
基于向上模式的使用,请记住,当按下按钮时,将从GPIO输入中读取值0,并在释放时-1。两个按钮通常都处于打开状态,没有固定。
我不会在这里详细介绍执行的细节,尤其是因为我之前已经展示了完成的案例的照片,那里已经有一切了。出于安全原因,我只建议选择外部部件全部为塑料的按钮,以免伸出裸露的导电部件。我用单引脚BLS连接器连接到GPIO引脚,类似于计算机机箱中使用的那些引脚;在这个演示中,我只是简单地从Arduino项目中挑选了一堆带有合适连接器的电线,选择了四种多色电线,去除不必要的末端,清洗并焊接到细节上。另一个选择是使用40针双排扁平电缆连接器,或者使用硬盘或CD驱动器上的旧IDE电缆(如果还有其他任何东西)。顺便说一句,此选项也适用于标准身高情况。它们有一个用于此类环路的插槽,用于输出到外部。
好吧,我还记得,我遭受了以下事实的困扰:在覆盆子板上(无论哪种情况,都是2型B型和3型B型)都没有指出GPIO连接器的引脚编号。我现在修复它;这两个模型在这方面没有差异。
软件部分的实现
软件部分以两个bash脚本的形式实现(塔达姆!)-一个配置文件和一个工作脚本本身。视频的01:08:30详细说明了流程图和实现。我认为在这里进行详细说明是没有道理的;脚本的源代码可以在这里下载并在闲暇时学习。
主要工作脚本的启动在/etc/rc.local中写入启动。唯一的事情-我必须先使用脚本将工作目录的更改注册到该目录。但是这里没有什么可怕的,它不会干扰进一步的工作。并且,当然,不要忘记在启动命令后添加&图标,否则引导系统会出现问题。
好吧,那么实际上只剩下了实时展示实际扫描的过程,以及ssh连接和调整参数的过程-这与我一样。您可以在视频中01:41:04观看。
不知何故发生了。在战斗版本中,区别在于,只有扫描分别进入单独的NAS,脚本才略有更改。因此,我认为,扫描甚至可以由某个地方的漫游器发送到Messenger,这只是希望了解相应的API并在curl上执行类似的操作。有很多选择。祝您实施顺利。:)