Qualquer projeto de hardware tecnicamente complexo é sempre uma equação com muitas incógnitas: plataforma, componentes, tecnologias, produção, funcionalidade, viabilidade. Você pode "sentir" o que acontece quando as etapas caras são concluídas: P&D, seleção de componentes, desenvolvimento de programas e busca de uma fábrica para produção.

Eu já
contei detalhadamente a Habré como fabricamos uma câmera para determinar a fadiga do motorista. Hoje, quero focar no que aprendemos ao criar um protótipo deste dispositivo, como testar rapidamente hipóteses usando protótipos e quais plataformas e componentes são melhor usados para isso.
- Quando fomos ao desenvolvimento deste produto, tivemos que fazer muitos protótipos. Gostaria de compartilhar parcialmente nossa experiência, contar o que e como fizemos. Talvez alguém ache grande parte da história banal. Muitos de vocês, provavelmente, passaram por esses estágios e também têm suas próprias conquistas. Não pretendo ser a última instância da verdade, mas será interessante.
Vamos ver como os dispositivos são fabricados antes de chegarmos aos protótipos, porque isso determina muito. Este é um projeto abstrato, não está vinculado a nenhuma circunstância específica, eu cito apenas como exemplo.

Primeiro, você prepara a entrada e aborda a P&D. Normalmente, isso é feito por uma empresa terceirizada ou talvez você mesmo. Mas, em qualquer caso, este é um processo bastante demorado, o período mínimo é de três a oito semanas. Nesse estágio, eles fazem uma placa, selecionam componentes eletrônicos e o dispositivo assume uma modalidade material.
Em seguida, é produzida uma amostra da EVT, um dispositivo de teste que já está localizado na placa que você precisa sobre essas dimensões, sobre esses componentes. Seu objetivo é fazer você entender, parece o que você deseja receber, ou não, se algo precisa ser mudado. Você tem a oportunidade de testá-lo.
Em seguida, amostras de TVP são produzidas. Este é um teste de verificação de projeto, quando todos os defeitos encontrados no EVT ou na maioria deles são eliminados. Depois disso, o dispositivo é colocado na caixa final, no design final, para que você entenda como se sente em suas mãos, como continuará a usá-lo.
O próximo passo é liberar um lote experimental de PVT. Pode ser cem ou mil peças, dependendo de como tudo vai com você. E então a produção em massa começa.
A principal conclusão de toda essa história é que, até que você obtenha o primeiro protótipo, quero dizer EVT, um período mínimo de dois a três meses se passará. Isso é bastante tempo e sempre surgem riscos. Talvez nem todas as funções sejam implementadas. Talvez você pegue os componentes sem sucesso e precise voltar ao estágio inicial de P&D. Talvez você não tenha levado em consideração algumas condições operacionais deste dispositivo. Pode estar quente, frio, vibração, sujeira, poeira, água ao redor. Qualquer coisa.

Você também pode superestimar suas capacidades. Você queria fabricar um dispositivo que se encaixasse em uma determinada faixa de preço, mas falhou, acabou sendo mais caro. E algo comum pode acontecer - enquanto você desenvolve o dispositivo há meio ano, os requisitos mudam e você precisa fazer isso novamente. Isso acontece

Com base no esquema anterior, isso nos leva ao fato de que agora as pessoas geralmente usam algum tipo de abordagem ágil no desenvolvimento de software. Tudo gira em círculos, em iterações curtas. Em cada estágio, existe um protótipo funcional e tudo é normal, iterativo. No desenvolvimento de hardware, isso não é adequado. Se você alterar os requisitos, esse não será o primeiro estágio, você terá sete a oito semanas novamente e produzirá um novo EVT. É por isso que você não pode disponibilizar um produto mínimo e, um dia, refiná-lo. Não pode ser feito mal. Você pode melhorar algo programaticamente, mas se o fez mal, seu produto ficará ruim.
Cada uma dessas situações é uma perda de tempo, porque é desperdiçado tempo com as novas pesquisas, melhorias e produção de uma nova amostra de EVT que você solicitou. Você apenas senta e espera pelo resultado.

Portanto, vamos adicionar a esse esquema, onde falei sobre a produção do dispositivo, como ele é mapeado para o desenvolvimento de software.
Como esse desenvolvimento geralmente acontece? Existe uma versão de desenvolvimento. Como parte de P&D, você está lançando uma versão alfa, deve ter o beta pronto para a primeira amostra de EVT, depois o segundo beta aparecerá e você se preparará iterativamente para o lançamento. Em um mundo ideal, tudo acontece, como neste diagrama.
De fato, a realidade é que a versão alfa não tem nada para testar, então você corre um grande risco. Um beta-first pode não iniciar em tudo o que foi informado. Neste ponto, você perdeu tempo. Datas e planos estão quebrados, e nada de bom resultará disso.
No entanto, há uma pequena fraude, todos vocês sabem sobre isso. Você pode criar um protótipo nos estágios iniciais. Ele não precisa ser totalmente consistente com o dispositivo final, não precisa ter suas dimensões. Geralmente, pode ser diferente, feito de outra coisa. Mas isso ajudará você a entender exatamente o que está fazendo, como está fazendo e o que está enfrentando.

Você pode determinar rapidamente que tipo de hardware você precisa. Você pode testar sua ideia em condições reais, porque, enquanto está na sua cabeça, parece que funciona. No mundo real, outras necessidades.
O mesmo vale para o design. O dispositivo pode parecer bom para você, mas quando você o coloca em condições reais - no vidro de um carro ou no volante de uma bicicleta - ele não funciona como você precisa. Portanto, a validação de design também é um aspecto muito importante.
Você também pode escrever software rapidamente, porque testa todas as suas ações em uma amostra ao vivo ou em uma série de amostras. É bom se eles ainda estiverem em operação nesse período.
Além disso, todos sabemos que profissionais de marketing e especialistas em produtos dominam o mundo. Eles vêm correndo e dizem: "E ainda queremos assim e assim". É difícil esclarecer esses requisitos quando você não tem nada em mãos. Quando você tem alguma coisa, pode aplicá-las, pode tentar dizer a elas: estes são os seus cenários que funcionarão, mas não.
Quando você cria um dispositivo, geralmente o faz para algumas tarefas de negócios. Se você precisa atrair um investidor, procure-o com pedaços de papel, projetos, desenhos e histórias - é legal e necessário. Mas quando você vem e diz: "Olha, nós criamos isso, mas este é um protótipo funcional", então o investidor fica imediatamente mais interessado.
Você tem muitos riscos nos quais talvez não pense. Se você, como nós, fabrica um dispositivo com uma câmera, pode não lhe ocorrer que a energia do carro não seja tão boa quanto, por exemplo, na sua tomada elétrica. Pode haver um milhão desses riscos, e eles aparecerão somente quando você pegar o dispositivo e colocá-lo em um ambiente real.
Também permitirá que você colete dados reais. Uma coisa é quando você coloca a câmera na sua frente e se grava. Outra é quando a câmera está de frente para um motociclista, um motorista de carro, um mecânico. Tudo isso nos permite apresentar novos requisitos e limitações técnicas ao hardware, minimizando os riscos.

Agora vamos ver quais são os riscos. Eu gostaria de agrupá-los em três partes. Ou você não tem certeza de nada. Você não entende o tipo de hardware que precisa, não sabe como escrever software. Nesse caso, tudo é triste e, na minha opinião, é melhor fazer algum tipo de prova de conceito e depois deslizar para um dos métodos à esquerda. Ou você tem certeza do hardware e não do software, todo o esforço é gasto em software e você o entrega a um contratado terceirizado, mesmo que ele o faça normalmente. Ou você tem certeza absoluta do software, mas não tem certeza do hardware, precisa urgentemente de um protótipo. Você experimentará seu software neste protótipo. Você pode precisar adaptá-lo, mas também terá sucesso.
E então chegamos ao que protótipos fazer. Aqui minha opinião, talvez não coincida com a sua opinião, você deve sempre escolher uma plataforma que pode ser mais do que você deseja. Se você precisar de uma pequena extensão, reserve mais. Se você precisar de desempenho limitado, pegue algo que lhe dê mais. Se você precisar de um pouco de memória, tome o dobro. Se você precisar de algo que funcione exclusivamente em seu escopo de tarefas, adote algo ainda mais avançado, com algum tipo de ferramentas máximas, isso sempre o ajudará. Porque Porque quando você faz essa prototipagem, os mesmos especialistas em produtos, profissionais de marketing, dizem: "Bem, veja, há outra maneira de fazer e conectar". E o que acontece?

Vamos nos aproximar um pouco da realidade. Do que você pode fazer isso? A plataforma óbvia é o Arduino. Vamos fazer isso no Arduino, todo mundo adora Arduino. Na verdade, sim e não. No Arduino, você pode fazer, na minha opinião, coisas muito simples. Ou seja, o Arduino é mais adequado para alguns nós. Você precisa fazer um manipulador? Ok, pegue o Arduino e faça. Você precisa fazer um termômetro? Ótimo, existem um milhão deles. Outra coisa é se você precisar fazer algo complexo que exija poder de processamento, visão computacional e aprendizado de máquina.
Arduino é um nó. Você pode fazer uma roda, um carro controlado por rádio, e o Arduino fará. Mas se você precisar instalar uma câmera nesta sua máquina, isso não é muito bom.

Isso implora outra opção - Raspberry PI. Todo mundo o ama. Pequeno, bom, popular, vendido por centenas de milhões de peças no mundo. E, de fato, talvez sim, talvez não. Por um lado, é barato, é produtivo, possui muitos módulos que podem ser anexados a ele. Possui um conector de quarenta pinos bastante padrão. Mas há problemas.
Em primeiro lugar, é aquecido, especialmente o último modelo, o quarto. E se você olhar para a foto, o processador está cercado por vários periféricos e é muito difícil criar um dissipador de calor que a torça normalmente, porque você descansa na porta HDMI, USB, extensão de quarenta pinos e terá uma área de radiador, talvez talvez quatro por quatro centímetros no máximo.
E, no entanto, não há Android, apenas o Linux. Existem algumas variações sobre o tema, mas alguns projetos precisam do Android. Por exemplo, você está criando algum tipo de dispositivo destinado originalmente à plataforma Android. E aqui, de alguma forma, o Raspberry PI não é um grande auxiliar para você.
E o próximo problema, na minha opinião, são os sistemas operacionais de mídia removível. Você usa um cartão SD, respectivamente, menos todos os casos de uso automotivo e outros. Seu carro está tremendo, o cartão SD não é confiável, pode cair, vibrar. Se você tiver uma geada, algo mais, haverá condensação, em geral, haverá problemas.
De fato, existem muitas coisas diferentes, posso mostrar para você, tentamos de forma diferente. Há um pai de banana. É quase o mesmo que o Raspberry Pi. É normal, funciona, é compatível com ele nos conectores. Não é a pior plataforma Allwinner. Existe uma solução um pouco melhor, por exemplo, o Khadas Vim no processador Amlogic. Depois da minha história, será possível me procurar mais tarde durante o intervalo, estarei pronto para contar e mostrar tudo.
Todas essas coisas têm suas desvantagens. Na verdade, eu não vim aqui para anunciar peças de ferro, mas, no entanto, vou parar. Existe um dispositivo que nos convém para nossos propósitos muito melhor.

Este é o NanoPi, um fabricante chinês chamado FriendlyElec, FriendlyARM. Eles têm vários nomes. E aconteceu que ele é desprovido das desvantagens do Raspberry Pi, enquanto ele tem muitas vantagens.
Tanto o Linux quanto o Android estão lá, todos com códigos-fonte, tudo isso pode ser coletado em qualquer lugar. Existe um módulo eMMC, ou seja, você separa o sistema operacional de um meio externo e ele funciona em boas condições de temperatura. Tentamos congelar o Raspberry Pi e não funcionou muito bem. Ao lançar o terceiro modelo, ele simplesmente estourou, o processador se desfez. Não realizamos mais experimentos. Mas tentamos congelar e aquecer no forno. Não houve problemas.
Ao mesmo tempo, há um barramento PCI Express completo, com 2x e, em geral, está tudo bem. Ele também pode ser resfriado, seu processador está localizado no verso, eu mostrarei agora, eu também tenho. É assim que parece, tudo igual ao seu. Parte inferior do processador. Um radiador espesso é colocado nele, e este radiador dissipa perfeitamente todo esse calor.

Um pouco mais. O que tem ai? Na verdade, eu realmente gostei desta plataforma. Nos últimos seis meses, tenho prototipado tudo o que está com ela e, portanto, estou compartilhando com você. Há um processador de seis núcleos. Ele é muito poderoso, ele está se aquecendo. No pico, pode consumir 15 watts, às vezes até mais. Mas há uma placa de vídeo normal, uma compactação de vídeo por hardware e, o mais importante, tudo se estende bem e custa aproximadamente como um Raspberry Pi. São US $ 50, mais um pouco para eMMC e um radiador.

Ele tem um irmão mais novo. Exatamente do mesmo tamanho, minúsculo. A boa notícia: se você pegar este módulo eMMC daqui e conectá-lo a este, não precisará reconstruir o firmware, altere o software. Eles são totalmente compatíveis com hardware. Mesmo este pequeno conector de quarenta pinos na parte superior é compatível com pinos de um dispositivo grande. Ou seja, se você estiver fabricando um dispositivo e subitamente precisar mudar para um pequeno formato, eletricamente ele será aproximadamente compatível com você. Sim, um pouco menos de memória. Sim, há menos USB, não há quatro, mas duas, mas está tudo bem.

Do que mais você precisa? Na minha opinião, a melhor forma de prototipar é em uma distribuição Linux grande e espessa. Está claro que, no dispositivo final, você provavelmente terá um sistema operacional proprietário ou um Linux embarcado muito pequeno, algum tipo de Linaro ou algo menos. E sim, lá vai funcionar bem.
Mas enquanto você está escrevendo um protótipo, precisa de um kit de ferramentas flexível, e o Linux é a sua escolha. Algo no Debian, ou qualquer outra coisa, com pacotes onde você pode colocar tudo o que precisa em dois comandos e executar grandes e grandes coisas.
No estágio de prototipagem, o tamanho da distribuição realmente não importa. Sim, você terá quatro gigabytes. Bem bom. Aqui está o módulo eMMC de 16 gigabytes. Fiz upload deste Linux aqui, está tudo bem comigo. Você também precisa de uma boa fonte de alimentação e, o mais importante, de um bom cabo.
Agora estamos falando de um dispositivo como este, ou um tipo de Raspberry Pi, que é alimentado por Type-C. Aconteceu que existem poucos bons cabos Tipo C e ainda menos fontes de alimentação boas. E se você não usar nem uma fonte de alimentação serial, mas alguma coisa, por exemplo, para fitas de LED e ligar o dispositivo diretamente, será muito melhor. Também será difícil pegar um cabo, não o ignore.
No início de nossos experimentos, pouca energia e um cabo danificado levaram o dispositivo a congelar repentinamente. Procuramos problemas no software e na periferia, e isso consistiu no fato de que a energia cedeu repentinamente.
Obviamente, se você tiver sensores, usará uma placa como esta com vários fios pequenos, porque soldar um monte de coisas no joelho e conectá-lo a uma confusão de fios não é muito conveniente. Quando você chega a um protótipo em série mais ou menos, sempre pode solicitar uma placa de circuito impresso e seus componentes já serão soldados a ela. Mas enquanto você está experimentando, é mais conveniente.

A próxima coisa que você precisa é de USB-UART. Provavelmente, na placa em que você protótipo, haverá uma saída para o monitor. Mas se for adulto, é melhor ir direto para a solução em que você trabalha com isso no console, porque quando você coleta as amostras da EVT, ninguém fornece saídas de vídeo, HDMI ou qualquer outra coisa. Você deve aprender imediatamente a viver uma vida normal.

Há mais uma coisa útil, mostrarei a você. É uma tela LCD, curiosamente, com uma interface USB. Na verdade, acredito que o USB industrial não é muito bom, nem ruim. Mas em prototipagem e desenvolvimento - ótimo. Existem toneladas de periféricos no USB, essa tela é um caso especial. Essa é a tela comum de duas linhas padrão comum, com um conversor USB e mais dois botões. Pode ser conectado a qualquer dispositivo, exibir informações de depuração nele. Isso é o suficiente. Na maioria dos casos, você não precisa de mais nada.
Você precisará de mais uma coisa - uma impressora 3D. Você pode, é claro, cortar com uma faca uma espuma de poliestireno, esculpir em argila, plasticina e qualquer outra coisa. Mas no final, você sempre chegará a uma situação em que aqui está minha eletrônica, então eu entendo o que quero dela. Mas é impossível imaginar como isso funcionará em condições reais. Portanto, em algum momento, adquirimos várias impressoras e imprimimos todas as idéias que tínhamos.
Criamos um novo suporte - nós imprimimos. Criamos um novo prédio - nós imprimimos. Temos uma galeria inteira de duas ou três dúzias de suportes, botões e porta-copos diferentes. É mais fácil entender a realidade.

Agora haverá um pouco de holivar sobre o que desenvolver. Não sou adepto de nada, acredito que todas essas são excelentes linguagens de programação. Mas aconteceu que todo o hardware, como regra, é melhor escrito em C. Porque o kernel Linux, porque todos os módulos, porque tudo é simples, claro e mais difícil de se acertar no pé. No C ++, é um pouco mais fácil dar um tiro no pé, no Python você não precisa se preocupar com memória nem nada.
Portanto, na minha opinião, a regra aqui é a seguinte: se você procura imediatamente a solução final de produção em massa, escreva em C. Transfere-se facilmente para onde você precisar e tudo funcionará. Se você precisa de tudo aqui e agora, se precisa de visão computacional, manipulação de imagens, redes neurais e essa é a história toda, é mais fácil começar com o Python. , , , , - , . . C, - . : C production, Python .

. , . , , — . , . : , , , .
, . , , , . , .
, . , - . , . , , , , . , .
- , , , design-house , - . , , , . . , , -. , , . , .
, hardware software , , , , - .
, . , . , : «, , , ». . , , .

, hard soft. - - , , . proof of concept, . , , GPS, . proof of concept, , .
BOM, , , : , .
, --, , , . . . , , , , , , - . - . . — , , .
, , , NanoPi. . Isso funciona? . ? . , .
, , , , , , , , , : «, », . , , .
, , . .

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

, , , , NanoPi. , , .

, , , , . . , , ? . , . . 70 , 45 — .
, , , . , . machine learning, , , , . , , . , , . . . .
, . — . . , . . , , , . — , . , , , , . .
, , — 70 . , . . , . , , , .
. , ? , - . Mas não. , - , . , , — , .
. , USB- production, . , USB — . , , GPS, Wi-Fi.
, . Raspberry? , , . , AliExpress, , 50 , , PCV. USB, . , — . , Sony, OmniVision, - , - . USB — , .

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

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

. . , . , . , - .
, - hardware, - . computer vision . - . , , , , , . — .
, mass production, . , . , . , , . Obrigada