本教程将打开有关" Project JiJi"的系列文章。并说明如何为安装在Raspberry Pi HQ相机上的16毫米远摄镜头增加自动对焦。在过去的几个月中,我一直在致力于为镜头添加自动对焦的项目,结果是:
为此增加了一些背景:Raspberry Pi Foundation自2013年以来提供了不同的Raspberry Pi相机模块。2013年生产了第一个模块(5兆像素),2016年发布了8像素升级模块(v2)。可见光和红外版本。今年(2020年),基金会推出了HQ相机。这是一台12百万像素的高质量(因此为HQ)相机(Sony IMX477),增加了使用带有CS卡口的镜头的可能性。这是一个很大的升级,但是到目前为止,镜头和相机都没有自动对焦。
如果您不耐烦,可以在lemariva / rPIFocus和lemariva / uPyFocus存储库中找到硬件设计,固件和软件。但是,您应该回来阅读本教程,直到最后,这样您才能了解它的工作原理,并且如果您愿意,还可以在该项目上进行合作!
在本文中,我将解释如何自己构建项目。我不会更详细地介绍。这些将在以后的文章中介绍。
如您可能已经注意到的,要为相机添加自动对焦,您需要订购PCB并焊接并安装一些零件。在Github存储库中的文件夹“ pcb”下,您将找到原理图以及PCB的电路板文件。要打开这些文件,您将需要Eagle。业余爱好者仍然可以免费使用Eagle,因此,请下载并安装它以打开文件。您可以使用此导出到Gerber教程导出Gerber文件。
为了简化您的过程,我还添加了Gerber文件,您可以将其直接发送给PCB提供商。我使用并推荐jlcpcb。它们快速,便宜,可靠,并且电路板的质量非常好。在图1中检查该项目的设置和成本。不要忘记选择Leadlead HASL-RoHS表面处理!
我为具有两种技能的人员设计了PCB:高级和基础技能。因此,如果您是专业人士,请拿起自己的焊料,自己焊接所有元件(IC),或者,如果您的技能是基本技能,请不要着急,拿起您的焊料并焊接自己的小型爱好板可以从上面的选择中购买。两个步进器旋转聚焦环和光圈环。它们由M5Stack ATOM控制,M5Stack ATOM还测量步进器。当前,并提供一个RestAPI来发送命令(基本的PCB原理图请参见图2)。
图3至图8为您展示了该设计的一些近距离照片,以帮助您安装元件。图3显示了如何安装光圈环和聚焦带环。它们的标准间距通常为0.8毫米。因此,电动机小齿轮应与此兼容。图4显示了已安装的电动机。检查电缆颜色-或订购!它们已连接到A4988驱动程序(图5),并且连接正确。否则,驾驶员将无法以正确的顺序切换电磁体,并且电动机将无法旋转。我计划在PCB上进行切割,以便可以修改到皮带环的小齿轮距离,并可以如图6所示固定电动机(使用2.5毫米螺钉)-并不是最好的方法,但是它是有效的;)。要将相机固定在板上,我使用了3/8英寸的螺钉和一个适配器将其安装到三脚架上(见图7)。螺钉将摄像机固定在板上。相机倾向于旋转,并释放螺丝。在这种情况下,您可以使用相机底座左侧的两个3mm孔(见图8)将其固定,例如矩形的木板。最后,您需要安装INA219和两个用于M5Stack ATOM矩阵的针头。 INA219测量步进器的电流,该电流用于识别聚焦环和光圈环的旋转极限。因此,启动后,系统会自行校准,并且不需要编码器来测量步进器的位置。
正如您在图9中所看到的,有一些IC,电容器和电阻器没有组装,还有两条电缆(红色和黑色)。电缆为电机提供7.5V电压。该IC,电容器和电阻器计划为M5Stack,A4988驱动器和INA219提供5V和3.3V。目前(在图9中),它们是通过USB电缆提供的,一端连接到M5Stack,另一端连接到Raspberry Pi。因此,您可以通过两种方式提供系统:)。但是,是的,您需要两个电源:一个用于步进器(7.5V),另一个用于Raspberry Pi(5V)。板上的5V(通过IC)将无法为Raspberry Pi提供电源。抱歉,但我不想为此使用更大的IC。
如前所述,M5Stack ATOM Matrix控制电机并提供RestAPI来接收命令。 M5Stack应用程序是用MicroPython编程的。如果您还没有听说过MicroPython,可以查看以下教程:ESP32,M5Stack和ESP8266上的MicroPython入门。 MicroPython是Python 3编程语言的一种精简而高效的实现,其中包括Python标准库的一小部分,并且经过优化可在微控制器上和受约束的环境中运行。该应用程序位于lemariva / uPyFocus。
打开文件并在此部分添加您的Wi-Fi凭据:M5Stack需要连接到Wi-Fi,以便Raspberry Pi(也已连接到Wi-Fi / LAN)可以找到它并发送命令以控制踏步机。
上载代码后,M5Stack重置并从校准例程开始(检查视频部分:nnn)。在连接到Wi-Fi时记下M5Stack报告的IP。您将需要它来配置微服务应用程序。
在Raspberry Pi上运行的应用程序是微服务应用程序。这意味着精心设计了不同的服务来提供应用程序。编排由docker-compose执行,服务使用Docker进行容器化。
如果您想了解有关嵌入式系统上Docker的更多信息,请阅读本教程:教程:嵌入式系统上的Docker(Raspberry Pi& Beagleboard)
要编排服务,您需要安装docker-compose。可以通过键入以下内容来完成:
为了更快地拍照,可以在RAM上创建磁盘。与SD卡或连接的USB磁盘相比,RAM磁盘可以更快地访问数据。因此,这允许应用程序减少照片之间的时间。为此,您需要通过在终端上键入来创建一个文件夹:
然后,您需要修改/ etc / fstab文件,并在文件末尾添加一行:
sudo nano / etc / fstab ###在文件末尾添加以下行:tmpfs / mnt / ramdisk tmpfs nodev,nosuid,size = 50M 0 0
后端:它通过RestAPI(Flask服务器)与前端通信,控制摄像头,将信号发送到M5Stack以控制电机,将信号和数据发送到其他服务以识别对象并拍照。基本上,它是核心服务。它是用Python编程的。
obj-detector:它通过UDP接收图像并识别其上的对象并返回JSON消息。它是用Python编程的。它使用TensorFlow并连接到Coral USB Accelerator来实时处理数据。
照片服务:它通过RestAPI(Flask服务器)接收信号来拍照,并对其进行处理以创建HDR照片。它使用Python编程,并且使用Celery对RestAPI进行多任务/非阻塞响应。
打开浏览器并访问URL地址:http://< ip-raspberrypi>:4200,您将看到如图9所示的界面。(嘘...我刚刚注意到我写了Raspberry HD摄像机而不是HQ摄像机... :()
Docker映像位于Docker Hub中。我目前正在使用免费计划,因此,如果没有人使用图像至少六个月,则Docker Hub会删除它。因此,有可能发生的情况是,如果您看到这篇文章,但其中一些/一个或多个图像不存在,则可以按照Github上的说明自行构建它们,或给我发送评论。我将尝试尽快上传它们。
这是有关JiJi项目的系列文章的第一部分。在本文中,我描述了在Raspberry Pi 4上构建和安装硬件,刷新M5Stack并启动Microservices应用程序的步骤。软件组件仍然存在问题,并且处于优化过程中,但是它们已经开始产生一些输出: )。您可以检查并下载示例照片(图11至14)。使用Luminance HDR v2.6.0处理了HDR文件(/ FORMAT = 32-bit_rle_rgbe)。
还有一件事:如果您想在这个项目上进行合作,非常欢迎您这样做,请与我联系!