Boa tarde, habravchane! Hoje vou falar sobre a integração do Arduino com um PC no Windows e outros dispositivos. Já era em 2018, minhas placas Arduino de vários modelos finalmente chegaram até mim.
Há muito que eu queria construir uma casa inteligente e decidi usar essa plataforma em particular. Porque Bem, eu conheço C # muito bem e um pouco de C ++, mas como você sabe, o firmware do Arduino está escrito nas vantagens alteradas. Além disso, a plataforma possui um conversor digital-analógico, que simplifica o trabalho com sensores analógicos. Além disso, a plataforma é muito famosa e possui uma grande base modular.
Com todo o meu amor por microcontroladores, prefiro calcular tudo no Windows e toda a minha força está em aplicativos .NET. Este foi o meu problema. Eu simplesmente não conseguia entender o ambiente de desenvolvimento do Arduino IDE. Eu tive que me acostumar com isso. No entanto, projetos simples de aquecimento ainda funcionavam principalmente em um PC. Quem estiver interessado no tópico, peço um recorte!
Meu primeiro experimento foi uma simples troca de informações via USB (porta serial), através da qual enviei pacotes com comandos simples para executar ações no microcontrolador. Por exemplo, usei o modelo UNO do Arduino.

Essa é a interface do programa para Windows. "Squeak" - sinal para um pino (pino do Arduino) no número 10 de um sinal elétrico constante, que é acionado pela campainha que eu conectei. “LED” - fonte de corrente direta para o pino 13, que por padrão no controlador está conectado ao LED embutido, que serve para depurar esboços (firmware).

No entanto, toda essa funcionalidade está exatamente no controlador.
O que o programa faz? Apenas envia números para a porta! "0" significa desativar
LED, “1” - acenda o LED, “2” - desligue a campainha, “3” - acenda
campainha. Tudo é feito usando os elementos básicos do Windows Forms. Se
quem estiver interessado, a taxa de câmbio de dados é de 115200 baud. Obrigado
Para isso, posso visualizar facilmente o conteúdo das mensagens do microcontrolador em
Arduino IDE.

Eu acho que muitos agora queriam saber o que havia no firmware do microcontrolador. Como fazia muito tempo, não era fácil procurar o código de firmware do Arduino, mas o arquivo ainda foi encontrado!
Código inteiroComi alguma coisa, esta é uma versão antiga do arquivo, sem uma campainha, apenas com um LED.
int i = 0; // int led = 13; void setup() { Serial.begin(115200); // pinMode(led, OUTPUT); // 13- } void loop() { i = i + 1; // String stringOne = "Info from Arduino "; stringOne +=i; // Serial.println(stringOne); // char incomingChar; if (Serial.available() > 0) { // incomingChar = Serial.read(); // LED switch (incomingChar) { case '1': digitalWrite(led, HIGH); break; case '0': digitalWrite(led, LOW); break; } } delay(300); }
No entanto, este é apenas um exemplo. A única coisa - esse sistema deve ter um hub - ou seja, o ponto de interseção de todos os dispositivos. E isso destrói instantaneamente toda a descentralização do sistema.
Daí a conclusão - o método de usar o hub é adequado apenas para coleta e gerenciamento de informações. Um hub é necessário, por exemplo, para acessar dispositivos na Internet, mas não como um ponto chave de comunicação entre eles.
Suponha que possamos conectar todos os dispositivos usando I2C ou usando nosso próprio protocolo. Mas como soltar dados no hub? E, em geral, o que servirá como hub? Opção 3:
- Hub do roteador.
- Hub de outra placa Arduino.
- Hub de Raspberry Pi.
Vamos considerar tudo por sua vez. Então, o roteador. Para começar, o roteador é necessário não apenas, mas com o Linux integrado e uma porta USB para conectar
qualquer placa Arduino do sistema. Isso porque a rede consiste em um grande número de dispositivos e um "bate-papo" geral, onde todos os dispositivos enviam mensagens sobre seu status. Nos roteadores, por exemplo, “Linksys E2100L 802.11b / g / n” é adequado.

Como você pode ver, este roteador possui um conector USB, e as características mostram que tudo está girando no Linux. Eu pessoalmente não o usei, mas de acordo com as características que nos servirão. E isso
não é
um anúncio.
No caso de um roteador, você pode soltar dados em uma porta serial, como no Windows, e executar um script - um manipulador de mensagens no Linux (desculpe, se algo não é chamado dessa maneira, eu não estou familiarizado com o Linux).
Considere a opção 2. Outra placa Arduino. Os modelos Nano, Mini, Micro não são mais adequados aqui. Precisa de um modelo Arduino, UNO ou MEGA. Mas simplesmente não conecte a placa à rede. Como opção, use o Arduino UNO WI-FI, ou o que é mais confiável, o Arduino Yun ou Tian. Os problemas deste último são um preço e um download relativamente longos e, por funcionalidade, parecem o mesmo roteador, porque funcionam no Linux.
É melhor usar o chamado Ethernet Shield. Esta é uma placa de expansão para o Arduino, que é usada por cima e permite que você crie um servidor WEB simples no seu dispositivo com scripts PHP simples para processar informações de outros dispositivos na rede.

Alguns modelos desta placa de expansão estão equipados com um slot para cartão de memória micro-sd, que permite o registro local além do controle remoto.
Opção 3. Quase o mesmo que o anterior e muito menos o que eu gosto. Usando um micro
computador Raspberry Pi. É um computador. Concorde em desligar um computador inteiro para esta tarefa, embora muito fraco - um desperdício extra de recursos. Monetário e computacional. Pessoalmente, eu usaria o Raspberry Pi apenas como um servidor de vigilância por vídeo ou como um programa pronto para gerenciar uma casa inteligente como o Major DoMo e similares. Você também pode executar tarefas como bots em mensageiros e algoritmos complexos para controlar o microclima ou, no caso mais improvável, colocar inteligência artificial lá.

Como você pode ver, o Raspberry Pi 3 possui:
- 4 portas USB
- 1 porta Ethernet;
- 1 porta HDMI
- Wi-Fi
- Interface DSI para conectar um monitor Raspberry Pi a uma tela sensível ao toque;
- Slot para cartões micro-SD.
E muito mais Mas, apesar de todas as vantagens, o Raspberry Pi não é adequado como um hub.
Conclusão: O Arduino UNO + Ethernet Shield é mais adequado como um hub para mim pessoalmente. De todas as opções consideradas, essa é a mais barata e mais fácil de implementar.

Nesta configuração, a operabilidade do sistema não depende do hub. E mesmo se o hub travar, não afetará o desempenho da própria rede. A rede perderá apenas o acesso à Internet.
Eu acho que a primeira parte pode ser concluída sobre isso. Até breve!