Como um desenvolvedor experiente inicia a IoT

10

Sou um desenvolvedor experiente que usa diversas tecnologias e também em tempo real. Quero aprender como desenvolver um dispositivo que não seja um computador, tablet ou qualquer um dos dispositivos familiares que todos conhecem.

Observei que sites de compras globais oferecem hardware de IoT, como módulo de relé de 2 canais, placa de desenvolvimento nodeMCU e mais hardware relacionado à IoT. Não tenho ideia do que fazer ou começar .

Supondo que eu saiba codificar, como começo a desenvolver meu primeiro dispositivo IoT?

TheUnreal
fonte
Os "outros" dispositivos têm um processador ou microcontrolador, bem como um computador geral, a única diferença é no seu desempenho, a memória disponível, etc.
Bence Kaulics
9
Parece-me uma desconexão entre as perguntas 'desenvolvedor experiente' e 'como iniciar'. É muito simples. Encontre um aplicativo que seja relevante para você hoje (aquecimento, iluminação, automação) e implemente-o. Quando houver perguntas específicas , você deverá obter boas respostas aqui - provavelmente elas virão de melhorias ou iterações no seu protótipo original. Como colocado, esta pergunta está realmente pedindo opiniões, não há uma resposta claramente correta.
Sean Houlihane
3
Fiz uma edição que tenta chegar ao núcleo da questão, mas mantendo parte do texto original. Sugiro que o OP @TheUnreal pergunte a segunda parte "A entrada na IoT exige ser uma empresa de recursos ou um indivíduo pode fazê-lo também neste mundo?" como uma pergunta separada, pois acho que ainda é relevante.
Simon Munro

Respostas:

14

Essa é uma pergunta muito ampla, mas tentarei dar algumas dicas gerais, espero que úteis para outras pessoas, assim como você (por isso, aceite minhas desculpas se eu postar coisas que você já sabe).

Se você está perguntando sobre a leitura de sensores, isso é telemetria e não necessariamente IoT. Eu codifiquei muitos projetos em que um PC independente lê e exibe algumas medidas.

Se você também deseja controlar o hardware conectado, este é o SCADA . Novamente, ele não precisa necessariamente estar conectado à Internet.

Aqui está um diagrama do SCADA, que oferece uma sensação muito boa para a IoT em geral. Observe que os PLCs no diagrama são sensores e controles de dispositivos habilitados para IoT.

Arquitetura SCADA

Você pode pedir recomendações de hardware para sensores e controlador em Recomendações de hardware .

E, depois que você tiver algum código, poderá obter conselhos sobre problemas no Stack Overflow .

Geralmente, a IoT para o setor envolve o modelo cliente / servidor, com o cliente medindo / controlando dispositivos de hardware e relatando / recebendo comandos do servidor. O servidor também geralmente possui um banco de dados e permite a geração de relatórios para gerenciamento e alarmes (e pode instruir o hardware remoto a reconfigurar / desligar com base nos dados recebidos).

Ufa! Essa é a introdução fora do caminho. Agora, para sujar as mãos.

Se você quiser entrar no âmago da questão da codificação, observe os soquetes e entenda a diferença entre TCP e UDP .

Felizmente, as décadas envolveram a maioria das coisas mais complicadas das bibliotecas, e provavelmente é melhor você ler os serviços RESTful. Existem vários tutoriais, cursos e vídeos online gratuitos, dependendo do seu idioma; C é uma linguagem embutida tradicional, com alguns usando C ++, mas é claro, use o que você sabe / se sente confortável. O Python é imensamente popular e simples de aprender, além de ser o idioma recomendado para o Raspberry Pi.

Pessoalmente, prefiro idiomas compilados a interpretados, pois é mais fácil eliminar os erros, mas a escolha é inteiramente sua. Apenas verifique se ele possui um bom suporte para acessar periféricos por USB, Ethernet e - ainda é extremamente comum no setor - porta serial.

Para o servidor, mais de 90% do servidor do mundo ainda está em execução no PHP. No entanto, há uma aceitação do uso do NodeJS, principalmente de pessoas que codificam aplicativos de navegador, que atualmente só podem ser feitas em JavaScript e não querem aprender dois idiomas. Eu não recomendo o desenvolvimento de aplicativos de IoT baseados em navegador, devido às restrições no código do navegador para acessar o sistema de arquivos e os periféricos (embora, eu mencionaria os gostos de Cordova , se você deseja desenvolver para smartphone).

Para começar, eu recomendaria um Raspberry Pi (codificação em Python ou C).

Placa Raspberry Pi

E eu * recomendo * um chapéu sensor. Este é apenas um exemplo, mas não é caro e contém

  • Giroscópio - sensor de taxa angular: Acelerômetro +/- 245/500 / 2000dps
  • Sensor de aceleração linear: +/- 2/4/8/16 g
  • Magnetômetro - Sensor magnético: +/- 4/8/12/16
  • Barômetro de Gauss: faixa absoluta de 260 - 1260 hPa (a precisão depende da temperatura e pressão, +/- 0,1 hPa em condições normais)
  • Sensor de temperatura (temperatura precisa de +/- 2 ° C na faixa de 0-65 ° C)
  • Sensor de umidade relativa (com precisão de +/- 4,5% na faixa de 20-80% de rH, precisão de +/- 0,5 ° C na faixa de 15-40 ° C)
  • Ecrã matricial LED RGB 8x8
  • Joystick pequeno de 5 botões

placa do sensor

Isso permitirá que você colete alguns dados e os relate ao seu servidor. Você pode encontrar um serviço gratuito on-line para receber e exibir seus dados. Eu já vi alguns em outro site SO, mas esqueça onde.

Mas você provavelmente deseja codificar seu próprio servidor. Eu recomendaria o PHP como linguagem de programação. Para Linux, você é bem fornecido com LAMP (Linux, Apache, Mysql e PHP). Para o Windows, você precisa instalar um WAMP (Windows ... etc).

Você pode fazer a sua escolha. Eu uso o XAMPP em aplicações industriais há mais de uma década. Você não precisa usar o Mysql, o Sqlite também pode servir (plug sem formatação para minha própria pergunta de SO de 6 anos atrás, " Sqlite ou MySql? Como decidir? "). Você também terá que aprender sobre CRUD .

Com base nos dados recebidos do cliente / sensor, convém enviar um comando de volta, mesmo que simples (exibição: "temperatura muito alta", que pode ser traduzida em fechar uma válvula em um sistema industrial).

Você pode acionar alarmes em tempo real (envie um email dizendo que a temperatura está muito alta).

E você também pode querer pensar em gerar relatórios. Comece com uma tabela mostrando os dados recebidos. O considere um gráfico, ou algo mais sofisticado. Adicione uma opção para exportar para valores separados por vírgula (CSV), que permite ao usuário final importar os dados para uma planilha para análise e manipulação adicionais.

Se você não decidir que deseja relatórios de fantasia, você pode fazê-lo em PHP, mas, depois de algumas décadas de que agora mudaram-se para fazer muito do lado do cliente o material relatório, no navegador.

Para princípios gerais, obtenha uma visão geral dos aplicativos de página única e do AJAX . Pessoalmente, pesquisei bastante e escolhi o AngularJS do Google como minha linguagem de programação (há muitos tutoriais e ótimo suporte), mas você pode usar JS, Jquery, etc, como desejar.

Se você também decidir codificar as coisas do navegador, poderá usar os NodeJs no lado do servidor, para ter apenas que aprender uma nova linguagem de programação.

Muitas opções? Desculpa :-(

Espero que isso tenha lhe dado alguns conselhos, mas fique à vontade para fazer perguntas e informe-me se houver algum conselho geral faltando aqui.

Mawg diz que restabelece Monica
fonte
11
Obrigado Mawg, a maior parte do que você disse eu já sabia e não era um problema da questão, estou trabalhando com PHP e Javascript, além de corodva há anos. Acho que vou começar a comprar o UNO R3 e ver como posso proceder a partir daí.
TheUnreal
11
Comecei a escrever e simplesmente não conseguia parar :-) Espero que ajude os outros. Não conheço Cordova o suficiente. É bom para acessar o hardware do telefone, câmera lime, SIM, sensor de inclinação, mas pode acessar a porta serial? Porque isso é muito usado na indústria; você pode conviver com o conversor USB para serial, que é o que usamos para laptops, mas o Cordova pode enviar dados por USB? E Ethernet? continua ...
Mawg diz que restabelece Monica
11
... Você conhece JS, mas eu não recomendaria usá-lo em um processador embutido. Você pode , mas certamente não é normal. Talvez seja hora de pegar um Python ou C? Ou talvez você queira dizer navegador UNO R3 <--> servidor <-->? Fique com o Arduino, se você já conhece, por todos os meios. Eu mudo para o R Pi, mas essa é apenas a minha preferência pessoal. . Você tem um projeto de aprendizagem em mente? Dica, dica ... iot.stackexchange.com/questions/675/… :-)
Mawg diz para reinstalar Monica em
9

Como desenvolvedor experiente, você tem a capacidade de entender a lógica, ler e escrever código, descobrir coisas e outras habilidades importantes. O que você provavelmente não tem é uma compreensão dos eletrônicos básicos e a arte de obter código da área de trabalho em execução em um dispositivo pequeno.

Entrar no nível errado de complexidade pode ser assustador e pode significar que você desiste cedo demais. Por exemplo, as pessoas recomendam o ESP8266 e o ​​NodeMCU sem pensar que você precisa acertar, precisa do chip montado em uma placa de desenvolvimento, precisa do software, precisa conectá-lo a algo e apenas então você é capaz de executar JavaScript. Você precisa de muitas habilidades diferentes e pode desistir de qualquer um desses estágios.

Minha recomendação é começar com um Arduino. Onde o Arduino fez a diferença na comunidade de criadores foi o quão fácil é conectar um Arduino em uma porta USB, e a cadeia de compilação, compilação e implantação é classificada para você. Você pode escrever um código e piscar alguns LEDs rapidamente.

Sugiro também que você comece com o kit inicial oficial do Arduino . Embora seja muito simples, as instruções são fáceis e você obtém vários bits e peças eletrônicas úteis (tábua de pão, fios de jumper, LEDs etc.) que permanecem úteis.

Não se deixe levar pelo quão básico é o Arduino. Pegue um pouco de entusiasmo pela eletrônica e pela parte prática antes de tentar algo muito complexo. Se você achar os eletrônicos interessantes e quiser fazer mais, fique com o Arduino e obtenha um kit mais complexo. Eu comprei o robô BOE Shield-Bot . Pode não ser o robô melhor ou mais barato, mas tem um tutorial muito bom que detalha como controlar servos e coisas do tipo. Você também obtém muito mais bits úteis.

Se você passar por isso, desistirá e voltará ao software do servidor ou comprará mais bits, ferros de solda, mais placas e componentes. Muito em breve, você chegará a uma gaveta de sonhos desfeitos, como todos nós.

Eu não recomendaria o uso do Pi tão cedo. É mais um computador do que uma coisa e não possui recursos importantes necessários no início de sua jornada de entendimento (como entrada analógica). Você superará rapidamente o Arduino (ele não se conecta à Internet com muita facilidade), mas é um bom lugar para ver se isso será algo que você gosta.

Simon Munro
fonte
11
Esta é a resposta mais próxima das minhas perguntas. Obrigado.
TheUnreal
6

Vou prosseguir para responder à sua primeira pergunta.

Se você quiser apenas aprender, posso recomendar alguns livros sobre a Internet das Coisas, mas acho que você pode pesquisá-los sozinho. Se isso estiver claro, recomendo que você comece a trabalhar em seu próprio projeto pequeno, é assim que você aprende o melhor, enfrentando problemas da vida real.

Você precisará decidir o que é o que deseja criar. Aqui estão algumas inspirações e idéias interessantes para começar:

Projetos Arduino -> Microcontrolador

Projetos Raspberry Pi -> Microprocessador (mais poderoso)

hackaday.com -> Componentes mistos

Depois de ter a idéia do que deseja fazer, você precisará apresentar os requisitos para o seu projeto. O microcontrolador, sensores, atuadores, protocolos de comunicação, etc.

Como você pode ver, os dispositivos mais populares são Arduino , Raspberrypi e todos os outros parentes, preto de beagle , cebola , etc. Existem muitos outros, as diferenças são o preço, a compatibilidade com outros sensores e a popularidade. Os populares são mais compatíveis e têm mais suporte nos fóruns.

Nós podemos ajudá-lo com o requisito baseado em seu projeto. Boa sorte!

Sanders Snake
fonte
Eu já tenho uma idéia, mas quero experimentar esse mundo antes de pular para isso. Acho que vou começar a comprar o Uno R3 e postar perguntas assim que eu for.
TheUnreal
11
Um Arduino Uno é bom para controlar itens físicos, mas é caro se adaptar aos protocolos de rede, já que você basicamente precisa adicionar outro microcontrolador ou computador melhor para fazer isso. Às vezes você pode encontrar uma parte que faz tanto, outras vezes você tem um sistema voltado para rede que delega a tarefa de controle elétrico para algo como um Arduino
Chris Stratton
2

Outros se concentraram na primeira faceta da sua pergunta; Eu vou focar no último. Você perguntou se qualquer pessoa pode entrar na IoT ou se você precisa ser uma grande empresa com muitos recursos.

Se você procurar a etiqueta de , verá que existem dispositivos IoT que já possuem todo o lado do servidor. Existem muitos dispositivos de IoT que "qualquer pessoa" pode comprar, incluindo a câmera, o termostato, etc., o Nest Echo, o Amazon Echo, o Google Home, fornos inteligentes, geladeiras etc.

Mesmo muitos carros novos se qualificam como objetos a serem detectados ou controlados remotamente ... embora talvez ainda não seja a parte controlada. :)

Isso leva à resposta da sua primeira pergunta:

Como posso começar a praticar o desenvolvimento do meu primeiro dispositivo IoT?

Você não precisa necessariamente começar desenvolvendo: você pode começar com algo mais simples. Se você quiser entrar no lado em desenvolvimento, pode simplesmente mergulhar, como alguns sugeriram, mas você tem a opção disponível para começar de maneira simples e passar gradualmente para o domínio dos mais complexos.

anonymous2
fonte
11
E onde é melhor começar do que iot.stackexchange.com/questions/675/… ?
Mawg diz que restabelece Monica