Eu não sabia nada sobre jardinagem. Eu não sabia nada sobre hardware. Acho que é por isso que decidi trabalhar em um novo projeto de hobby, onde eu tinha que aprender sobre os dois. Comecei a cultivar uma planta de mirtilo, 100% automatizada usando um Raspberry Pi.

Ao lado do meu trabalho principal, cientista de dados, sempre trabalho em alguns projetos de hobby. Eles não ganham muito dinheiro (nem fazem sentido), mas são divertidos e eu os uso para expandir meu conhecimento em áreas sobre as quais não conheço muito. Eu poderia continuar falando sobre por que trabalhar em projetos paralelos é ótimo.

Mas dada toda a minha experiência com projetos paralelos, devo dizer que posso ter sido um pouco ambicioso demais quando pensei que construiria um projeto de hardware facilmente. Acontece que, em muitos aspectos, é muito diferente do software. Eu aprendi isso da pior maneira.

 

Aqui estão minhas lições mais importantes!

 

A beleza de um projeto de hardware: você pode tocar no produto!

 

Eu já havia trabalhado em vários projetos de software hobby. Mas para mim, um projeto de hardware foi emocionante por dois motivos:

 

Primeiro, recentemente me interessei em cultivar minha própria comida. Saber que posso produzir pelo menos uma pequena parte do que vou comer é muito gratificante. No entanto, sou muito ruim com coisas repetitivas e sempre tendo a esquecer de regar minhas plantas. Então, eu tinha duas opções: configurar toneladas de lembretes de calendário ou agir como um engenheiro e automatizar todo o processo. Obviamente, eu escolhi este último.

Em segundo lugar, sou um cientista de dados. Eu escrevo código, crio modelos, executo scripts, mas tudo isso existe apenas no meu computador. Às vezes, eles só existem na nuvem, que é outra camada removida de mim. Eu queria criar algo que pudesse tocar!

 

Portanto, um projeto de hardware parecia razoável.

 

O plano (era para ser fácil …)

 

Na minha cabeça, o plano era simples:

 

Pegue um pequeno computador (por exemplo, um Raspberry PI).

 

Pegue um sensor de umidade do solo e um sensor de luz que se conecta a este computador via wi-fi e envia pontos de dados continuamente sobre minha planta.

Pegue uma bomba d’água e uma lâmpada de cultivo que são ativadas via wi-fi quando os dados indicam que a planta precisa de algo.

Eu imagino que todo mundo que começa um projeto como este viria com um plano simples semelhante. Como uma pessoa de software, eu já vi o fluxo de dados, as simples instruções `if`, as automações no crontab. Na minha cabeça, todo o projeto foi feito em uma semana.

 

Eu fui tão ingênuo – e tão errado …

 

Introdução: o hardware está lento!

 

Há uma boa chance de que, como eu, você tenha escrito código, mas nunca tenha trabalhado com hardware real.

 

Sempre que quiser iniciar um novo projeto de software, posso começar rapidamente:

 

Eu escolho uma estrutura, ambiente, solução, etc …

 

Eu implanto o servidor (faço download e instalo o sistema operacional e outros aplicativos, etc.)

 

Eu espero até que a instalação seja concluída. (~ 10-30 minutos)

 

Eu começo a construir o projeto.

 

É um pouco simplificado, mas você entendeu. Pode-se passar da fase de ideia para a fase de execução em aproximadamente 10 minutos (ou menos).

A primeira coisa que tive que aprender é que esse não é o caso de um projeto de hardware. Mais como:

 

Você escolhe sua estrutura, ambiente, hardware preferido, etc …

 

Você encomenda o hardware.

 

Você espera pela sua entrega. (~ 1 semana)

 

Você instala tudo. (~ 10-30 minutos)

 

Você começa a construir o projeto.

 

Essa etapa adicional (aguardar a entrega) pode não parecer grande coisa. Isto é. Principalmente quando você percebe que se esqueceu de pedir alguma coisa. Ou uma peça de hardware não é compatível com outra. Ou que a substituição não está disponível em seu país.

Essa semana pode facilmente crescer para um mês ou mais. E esperar pode matar projetos de passatempo.

 

Mas dividir as tarefas também ajuda aqui.

 

Para meu jardineiro automatizado, comecei pequeno – em vez de pedir tudo que precisava, me concentrei em construir apenas uma pequena parte do projeto primeiro: o sensor de umidade do solo. Recebi minha primeira pilha de teste (um Raspberry Pi 4, um cartão SD, um sensor de umidade Adafruit STEMMA e alguns cabos de ligação) em poucos dias. (Na verdade, encomendei o tipo errado de cabos jumper. Isso acrescentou alguns dias. Em cerca de uma semana, finalmente comecei.)

Assim que o sensor de umidade funcionou, comecei a adicionar todas as outras partes. Eu sempre pedia o novo hardware de que precisava – ou as substituições quando descobri que eu pedia as peças erradas. Às vezes, encomendei as peças certas, mas cometi um erro conceitual. (por exemplo, tentei construir uma torneira mecânica em vez de usar uma bomba de água simples. Deus sabe por quê.) Isso é mais ordem – e mais espera.

Resumindo: depois de todos os testes e construção, demorou não menos que três meses para chegar à minha pilha final do autogardener completo. Novamente: a construção de hardware é lenta.

 

Depurar hardware também é difícil

 

Não se trata apenas de construir hardware mais lento do que construir software. Também é significativamente mais difícil depurá-lo!

Como mencionei, meu primeiro passo foi construir a peça do sensor de umidade. Assim que comecei a trabalhar e consegui meus primeiros dados de umidade na tela, fiquei muito animado.

 

Mas no dia seguinte, simplesmente parou de funcionar.

 

Levei três horas (!) Para descobrir o problema. Eu investiguei em um nível de software. Nada. Reiniciei o Raspberry Pi várias vezes. Nada. Limpei o sensor de umidade. Então eu o desconectei da placa e conectei novamente. Nada.

Eu estava travado. O principal problema era que meu processo de depuração – que aprendi para codificação – também não me ajudou. Quando escrevo código, apenas executo o modo de depuração e vejo as mensagens de erro. Quando isso não ajuda, executo novamente meu código linha por linha. Mais cedo ou mais tarde, encontro o problema.

Mas desta vez recebi uma mensagem de erro muito genérica, não encontrei realmente o erro no código e não tinha ideia de como depurar o hardware. Eventualmente, descobriu-se que o problema era com um cabo de jumper ligeiramente danificado. O que parece óbvio agora, mas quando você é um iniciante absoluto c