任何技术上复杂的硬件项目始终都是一个未知数的方程式:平台,组件,技术,生产,功能,可行性。 您可以“感觉”到昂贵的阶段完成后会发生什么:研发,组件选择,程序开发以及寻找要生产的工厂。

我已经在哈布雷(Habré)上详细介绍了如何制作相机来确定驾驶员的疲劳程度。 今天,我想集中讨论在创建此设备的原型时学到的知识,如何使用原型快速测试假设以及最适合此用途的平台和组件。
-当我们开始开发该产品时,我们不得不制作许多原型。 我想部分分享我们的经验,告诉我们我们做了什么。 也许有人会发现很多平庸的故事。 你们中的大多数人,很可能经历了这些阶段,也都有自己的成就。 我不假装自己是真理的最后实例,但这会很有趣。
在确定原型之前,让我们先看看设备的制造方法,因为它决定了很多事情。 这是一个抽象项目,它不受任何特定情况的束缚,我仅举一个例子。

首先,准备投入并进行研发。 通常,这是由第三方公司或您自己完成的。 但无论如何,这是一个相当漫长的过程,最短期限为三至八周。 在此阶段,他们制作电路板,选择电子元件,然后该设备就成为一个重要的体现。
接下来,将产生一个EVT样品,这是一个关于这些尺寸,此类组件的测试设备,已经位于您需要的板上。 它的目的是让您了解,是否需要更改,看起来像您想要接收什么。 您有机会进行测试。
然后产生DVT样品。 这是一种设计验证测试,可以消除EVT中发现的所有缺陷或大多数缺陷。 之后,将设备放置在最终设计的最终外壳中,以便您了解手中的感觉以及如何继续使用它。
下一步是发布PVT的试用批。 它可以是一百或一千个,具体取决于一切如何进行。 然后开始批量生产。
整个故事的主要结论是,直到您获得第一个原型,我的意思是EVT,至少要花两到三个月的时间。 这是相当长的时间,并且总是会产生风险。 也许不是所有功能都可以实现。 也许您将无法成功提取组件,并且您将不得不回到研发的初始阶段。 也许您没有考虑此设备的某些操作条件。 周围可能有热,冷,振动,污垢,灰尘,水。 没事

您也可能高估了自己的能力。 您想制造一种适合一定价格范围的设备,但是失败了,结果证明它更昂贵。 可能会发生一些常事-在您开发设备半年的时间里,要求已发生变化,您需要再次进行操作。 它发生了。

基于以前的方案,这使我们得出一个事实,即现在人们通常在软件开发中使用某种敏捷方法。 一切都在短时间内反复进行。 在每个阶段都有一个可用的原型,一切正常,反复。 在硬件开发中,这是不合适的。 如果您更改要求,那么这不是第一步,您又需要七到八周的时间,并且会产生新的EVT。 这就是为什么您不能制造一些最低限度的产品,而有一天在以后对其进行优化。 不能做得不好。 您可能可以通过编程方式进行某些改进,但如果做得不好,那么您的产品就会变坏。
每种情况都是浪费时间,因为您在订购新的EVT样品的新研究,改进和生产上浪费了时间。 您只要坐下来等待结果。

因此,让我们添加到该方案中,我在其中讨论了设备的生产,它如何映射到软件开发。
这种发展通常如何发生? 有一个开发版本。 作为研发的一部分,您将发布一个Alpha版本,您应该为第一个EVT示例准备好beta版本,然后出现第二个Beta版本,并为发行版进行迭代准备。 在理想的世界中,一切都会发生,如下图所示。
实际上,实际情况是alpha版本没有任何可测试的地方,因此您面临很大的风险。 Beta版优先功能可能根本无法根据您的要求开始。 此时,您已经浪费了时间。 日期和计划被打破,不会有什么好处。
但是,有个小作弊,大家都知道。 您可以在早期阶段制作原型。 他不需要与最终设备完全一致,也不需要具有其尺寸。 它通常可以与其他产品不同。 但这将帮助您准确地了解自己在做什么,如何做以及面对的事情。

您可以快速确定所需的硬件。 您可以在真实条件下测试您的想法,因为当它在您脑海中时,它似乎有效。 在现实世界中,其他需求。
设计也是如此。 该设备对您来说似乎不错,但是当您将其置于真实条件下时(在汽车玻璃上或自行车的方向盘上),它将无法按需使用。 因此,设计验证也是一个非常重要的方面。
您还可以快速编写软件,因为您要对一个现场样本或一系列样本测试您的每个动作。 如果他们此时仍在运作,那就太好了。
此外,我们都知道营销人员和产品专家统治着整个世界。 他们跑来跑去告诉你:“我们仍然希望那样那样。” 当您手头一无所有时,很难澄清这些要求。 当您拥有某些东西时,您可以应用它们,也可以尝试告诉它们:这些是您可以使用的方案,但它们不会。
制作设备时,通常是出于某些业务任务而制作。 如果您需要吸引投资者,那么请带上纸片,项目,图纸和故事来找他-这很酷而且很必要。 但是当您说:“看,我们想到了这个,但这是一个可行的原型”,那么投资者立刻就更加感兴趣。
您有很多您可能不会想到的风险。 如果您像我们一样用相机制造设备,则您可能不会想到汽车中的电源不如家用电源插座中的电源。 可能存在上百万种此类风险,并且只有在您拿起设备并将其放置在真实环境中时,这些风险才会弹出。
它还将允许您收集实际数据。 当您将相机放在自己面前并进行记录时,这是一回事。 另一个是当相机面对摩托车手,汽车驾驶员,机械师时。 所有这些使我们能够提出新的技术要求和对硬件的限制,最大程度地降低风险。

现在,让我们看看可能存在的风险。 我想将它们分为三个部分。 或您根本不知道任何事情。 您不了解您需要哪种硬件;您不了解如何编写软件。 在这种情况下,所有事情都是令人难过的,以我的观点,最好是做某种概念上的证明,然后向下滑动到左侧的一种方法。 或者,您对硬件有把握,而对软件没有把握,那么所有的精力都花在了软件上,并且您将硬件交给了第三方承包商,即使承包商通常这样做也是如此。 或者您完全确定软件,但不确定硬件,那么您急需一个原型。 您将在此原型上试用您的软件。 您可能需要对其进行调整,但您也会成功。
然后我们来制作什么原型。 在这里,我的观点也许与您的观点不一致,您应该始终选择一个比您想要的平台更多的平台。 如果您需要小扩展名,请预留更多空间。 如果您需要有限的性能,可以采取一些其他措施。 如果您需要一点内存,请多花一倍。 如果您需要专门用于您的任务范围的工具,则可以使用某些最大程度的工具进行更高级的设置,这将始终为您提供帮助。 怎么了 因为当您进行此原型制作时,相同的产品专家,市场营销人员会来说:“好吧,看,还有另一种方法可以进行连接。” 那会发生什么呢?

让我们更接近现实。 你能从这做什么? 明显的平台是Arduino。 让我们在Arduino上进行操作,每个人都喜欢Arduino。 实际上,是和不是。 我认为,在Arduino中,您可以做非常简单的事情。 也就是说,Arduino更适合某些节点。 您需要做一个机械手吗? 好的,抓住Arduino并完成它。 你需要做一个温度计吗? 太好了,一百万。 另一件事是,如果您需要做一些复杂的事情,需要处理能力,计算机视觉和机器学习。
Arduino是一个节点。 您可以制造一个轮子,一个无线电遥控汽车,然后Arduino会做。 但是,如果您需要在自己的这台机器上安装相机,那肯定不是很好。

这就引出了另一个选择-Raspberry PI。 每个人都爱他。 小型,优质,受欢迎,在世界范围内有数亿件的销售。 而且,实际上,也许是,也许不是。 一方面,它便宜,生产效率高,并且可以连接许多模块。 它具有相当标准的四针连接器。 但是有问题。
首先,将其加热,尤其是最后一个模型,第四个。 而且,如果您查看图片,处理器周围有很多外围设备,很难拿出会正常扭曲的散热器,因为您将搁置在HDMI端口,USB,40针扩展上,并且会有散热片区域,也许可能最多四乘四厘米。
但是没有Android,只有Linux。 主题有一些变体,但有些项目需要Android。 例如,您要生产最初针对Android平台的某种设备。 在某种程度上,Raspberry PI对您来说不是一个很好的帮助。
我认为,下一个问题是可移动媒体操作系统。 您分别使用SD卡,减去所有汽车和其他用例。 您的汽车在晃动,SD卡不可靠,可能掉下来,会振动。 如果结霜,可能会结露,总的来说会出问题。
实际上,有各种各样的东西,我可以向您展示,我们尝试了不同的方法。 有一个香蕉排。 它与Raspberry Pi大致相同。 这是正常现象,可以正常工作,并且与连接器兼容。 不是最糟糕的Allwinner平台。 还有一个更好的解决方案,例如,Amlogic处理器上的Khadas Vim。 在我讲完故事之后,有可能在休息时间稍后到我这里,我将准备讲述和展示这一切。
所有这些都有其缺点。 实际上,我并不是来这里做广告的,但尽管如此,我还是会停下来。 有一种更适合我们目的的设备。

这是中国制造商NanoPi,名为FriendlyElec,FriendlyARM。 他们有几个名字。 碰巧他没有Raspberry Pi的缺点,而他却有许多优点。
Linux和Android都可以使用,并且都带有源代码,所有这些都可以随时随地收集。 有一个eMMC模块,即,您将操作系统与外部介质分开,并且它可以在良好的温度条件下工作。 我们试图冻结Raspberry Pi,但效果不佳,当启动第三个模型时,它突然破裂,处理器崩溃了。 我们没有进行更多的实验。 但是我们试图将其冷冻并在烤箱中加热。 没有问题。
同时,有一条功能完善的PCI Express总线,具有2倍速,并且总体来说一切都很好。 它也可以被冷却,它的处理器位于背面,我现在将向您展示,我也有。 这就是它的外观,与您的外观相同。 处理器底部。 上面放了一个厚实的散热器,该散热器完美地散发了所有这些热量。

多一点。 那里有什么? 实际上,我真的很喜欢这个平台。 在过去的六个月中,我一直在与她一起进行原型制作,因此我正在与您分享。 有一个六核处理器。 他非常有力量,正在变暖。 在峰值时,它可能消耗15瓦,有时甚至更多。 但是有一个普通的视频卡,硬件视频压缩,最重要的是,它们都可以很好地扩展,并且价格与Raspberry Pi差不多。 这是50美元,还有eMMC和散热器的价格。

他有一个弟弟。 大小完全一样,很小。 好消息:如果您从此处取出此eMMC模块并将其插入此模块,则无需重建固件,无需更改软件。 它们与硬件完全兼容。 即使是顶部的这个40针小型连接器也可以与大型设备兼容。 也就是说,如果您要制造设备,但突然需要移动到小尺寸的设备,则在电气上它将与您大致兼容。 是的,内存少一点。 是的,USB较少,不是四个,而是两个,但是一切都很好。

您还需要什么? 在我看来,最好在大型的Linux发行版上进行原型制作。 显然,在最终设备中,您很可能将拥有专有操作系统,非常小的嵌入式Linux,某种Linaro或更少的东西。 是的,它会很好地工作。
但是在编写原型时,您需要一个灵活的工具包,因此选择大型Linux。 带有Debian的东西或其他东西,带有软件包,您可以在其中将所需的所有内容放入两个命令中并运行大型任务。
在原型设计阶段,分布的大小并不重要。 是的,您将有四个千兆字节。 好,好 这是16 GB的eMMC模块。 我在这里上传了此Linux,一切都很好。 您还需要良好的电源,最重要的是,还需要良好的电缆。
现在,我们谈论的是诸如Type-C这样的设备或Raspberry Pi。 碰巧的是,好的C型电缆很少,好的电源甚至更少。 而且,如果您甚至不带串行电源,而是带LED灯条直接为设备供电,那么您的情况会更好。 接起电缆也很困难,不要忽略它。
在实验开始时,电源不足和电缆不良导致设备突然冻结。 我们在软件和外围设备中寻找问题,其原因在于电源突然下降。
显然,如果您有传感器,那么您将使用带有一小束电线的这样的电路板,因为将一堆东西焊接到膝盖上并将其插入这种杂乱的电线中并不是很方便。 当您采用或多或少的串行原型时,总是可以订购PCB,而您的组件已经被焊接到该板上了。 但是,在进行实验时,它更方便。

接下来您需要的是USB-UART。 最有可能的是,在您制作原型的电路板上,会有监视器的输出。 但是,如果成年以后,最好直接在控制台中使用该解决方案,因为在收集EVT样本时,没人会提供任何视频输出,HDMI或其他任何东西。 您必须立即学会过正常的生活。

还有一件事有用,我将向您展示。 奇怪的是,这是一个带有USB接口的LCD屏幕。 我实际上相信工业上的USB并不是很好,甚至很差。 但是在原型开发中-很棒。 USB上有很多外围设备,此屏幕是特例。 这是常见的标准两行式屏幕,带有USB转换器和另外两个按钮。 它可以连接到任何设备,并在其上显示调试信息。 够了 在大多数情况下,您不需要其他任何东西。
您还需要一件事-3D打印机。 当然,您可以用聚苯乙烯泡沫的刀切出,再用粘土,橡皮泥和其他东西雕刻出来。 但是最后,您总会遇到我的电子设备出现的情况,因此我了解到我想要的东西。 但是无法想象这在实际条件下将如何工作。 因此,在某个时候,我们购买了几台打印机,并且打印了所有的想法。
我们想出了一个新的支架-我们进行打印。 我们想出了一座新建筑-我们打印。 我们有一整个画廊,里面有两到三打不同的支架,纽扣,杯垫。 更容易理解现实。

现在,关于开发的内容将有一些小道理。 我什么都不支持,我相信所有这些都是优秀的编程语言。 但是碰巧的是,所有硬件通常最好用C编写。因为Linux内核,所有模块,所有内容都很简单,清晰,而且很难攻克。 在C ++中,用脚射击自己要容易一些,在Python中,您不必费心内存或其他任何事情。
因此,在我看来,这里的规则是这样的:如果您立即针对最终的批量生产解决方案,请用C编写。它可以轻松地转移到您需要的任何地方,并且一切正常。 如果您现在和现在都需要任何东西,如果需要计算机视觉,图像处理,神经网络,而这就是全部,那么从Python开始更容易。
这是一个快速,轻松的入门门槛,您可以连接所有外围设备,编写,甚至从某个地方复制一组脚本,一切都对您有用。你可以忍受它。它总是可以用C并行重写,也可以通过其他方式完成。但是,这是我的主观意见:C适用于生产,而Python适用于原型。
现在下一个时刻。我认为原型不需要外包。在一种情况下,您需要将它们外包-这是您对硬件完全有信心的时候。在这里,您拥有一块铁,您肯定要使用这块铁实现某些功能。然后一切都变得很简单:他们找到了一个外包商,他们为您编写了代码,将其应用于硬件,一切都对您有用。, . , , , . , .
, . , - . , . , , , , . , .
- , , , design-house , - . , , , . . , , -. , , . , .
, hardware software , , , , - .
, . , . , : «, , , ». . , , .

, hard soft. - - , , . proof of concept, . , , GPS, . proof of concept, , .
BOM, , , : , .
, --, , , . . . , , , , , , - . - . . — , , .
, , , NanoPi. . 它行得通吗? . ? . , .
, , , , , , , , , : «, », . , , .
, , . .

— Signal Q1, . , , , -. , GPS — . :

, , , , NanoPi. , , .

, , , , . . , , ? . , . . 70 , 45 — .
, , , . , . machine learning, , , , . , , . , , . . . .
, . — . . , . . , , , . — , . , , , , . .
, , — 70 . , . . , . , , , .
. , ? , - . 但是没有 , - , . , , — , .
. , USB- production, . , USB — . , , GPS, Wi-Fi.
, . Raspberry? , , . , AliExpress, , 50 , , PCV. USB, . , — . , Sony, OmniVision, - , - . USB — , .

-, — , . , , . — . , . , - . , .

, , 3D- — . , , , , , . — . — .

. . , . , . , - .
, - hardware, - . computer vision . - . , , , , , . — .
, mass production, . , . , . , , . 谢谢啦