Índice:

Projeto Arduino: controle eletrônico pela Internet usando Nodejs + banco de dados SQL e website: 6 etapas
Projeto Arduino: controle eletrônico pela Internet usando Nodejs + banco de dados SQL e website: 6 etapas

Vídeo: Projeto Arduino: controle eletrônico pela Internet usando Nodejs + banco de dados SQL e website: 6 etapas

Vídeo: Projeto Arduino: controle eletrônico pela Internet usando Nodejs + banco de dados SQL e website: 6 etapas
Vídeo: Programador Sênior VS júnior #short #shorts 2024, Novembro
Anonim
Projeto Arduino: Controle de eletrônicos pela Internet usando Nodejs + banco de dados SQL e website
Projeto Arduino: Controle de eletrônicos pela Internet usando Nodejs + banco de dados SQL e website
Projeto Arduino: Controle de eletrônicos pela Internet usando Nodejs + banco de dados SQL e website
Projeto Arduino: Controle de eletrônicos pela Internet usando Nodejs + banco de dados SQL e website
Projeto Arduino: Controle de eletrônicos pela Internet usando Nodejs + banco de dados SQL e website
Projeto Arduino: Controle de eletrônicos pela Internet usando Nodejs + banco de dados SQL e website

Projeto por: Mahmed.tech

Data da realização: 14 de julho de 2017

Nível de dificuldade: iniciante com algum conhecimento de programação.

Requisito de hardware:

- Arduino Uno, Nano, Mega (acho que a maioria dos MCU com a conexão serial funcionará)

- Único LED e resistor de limitação de corrente. Use esta calculadora se você não tiver certeza: Ohms Law Calculator

- Potenciômetro de 10K.

Requisito de software:

- IDE Arduino

- Node. JS (este é um software em um computador, muito simples de instalar)

- Servidor MySQL (a maneira mais fácil que encontrei é usar uma hospedagem barata. Você também pode obter nomes de domínio gratuitos)

Linguagem de programação e script usada:

Arduino (C / C ++ modificado), JavaScript (Nodejs), PHP, HTML e CSS

IntroduçãoEste projeto em poucas palavras: Controlando um microcontrolador Arduino a partir de uma interface da web. Portanto, controle qualquer dispositivo elétrico de qualquer lugar com internet. Eu queria ampliar minha compreensão de programação e desenvolvimento web e que melhor maneira de fazer isso do que fazer um projeto simples, mas eficaz. O hardware é mínimo para que eu pudesse me concentrar mais no software. Portanto, optei por um LED simples, configuração de potenciômetro. O potenciômetro enviará dados e o led receberá (brilho PWM). Usando o NodeJS, os dados seriais foram lidos (valor do potenciômetro) e gravados (brilho do led). A parte difícil deste projeto foi obter dados de entrada de um local remoto (servidor web)

Etapa 1: Lógica do software: Arquitetura do sistema

Lógica de software: Arquitetura do sistema
Lógica de software: Arquitetura do sistema

Dados do potenciômetro:

Isso começa no Arduino, ler o valor do potenciômetro é impressão serial. No entanto, desta vez usaremos Node. JS para ler o valor. O NodeJS abrirá a comunicação serial para a mesma porta em que o Arduino está conectado e lerá o valor do potenciômetro impresso. O NodeJS irá então fazer o upload dos dados para um banco de dados SQL remoto, isso acontecerá toda vez que um novo valor de pote for impresso. Uma página da Web se conectará ao intervalo definido do banco de dados SQL e recuperará o valor do potenciômetro. Em seguida, será exibido na página da web.

Dados Led:

Para o led, o brilho do PWM será definido pelo usuário em uma página remota da Web, portanto, sua jornada começa na extremidade oposta do espectro. Os dados de entrada são salvos em um banco de dados SQL; a cada intervalo definido, o banco de dados é verificado quanto a uma mudança no PWM do led, isso é feito pelo NodeJS. Se o valor for diferente do valor anterior, o novo valor será enviado ao Arduino por meio de um barramento serial. O Arduino altera o valor PWM de saída do led para alterar seu brilho.

A calculadora da lei de Ohms usa a fórmula V = IR e P = IV = I²R = V² / R Para este projeto, usarei um led azul. Isso é importante porque à medida que a frequência da luz aumenta, a queda de tensão também aumenta. Já a luz azul tem uma frequência mais alta em comparação com algo como um led vermelho. Isso significa uma tensão direta mais alta. Dependendo da marca, tipo e tamanho, a faixa de trabalho pode variar. Para minha configuração, usei um resistor de 220 Ω em série, negativo para o terra e positivo para um pino PWM em um Arduino. O potenciômetro foi conectado a um pino analógico. Com 5VCC uma extremidade GND a outra e o pino do meio conectado a um pino analógico (A0 no meu caso).

Etapa 2: Etapa 1: Fiação do Hardware

Etapa 1: Fiação de Hardware
Etapa 1: Fiação de Hardware

Isso é muito simples: basta conectar seu resistor limitador de corrente em série com o LED e certifique-se de que você está direcionado corretamente. Um ponto irá para o GND enquanto a outra extremidade irá para o pino do Arduino. Para minha configuração, usei o pino 12 para led e A7 para Pot. Não tenho um esquema, pois é um circuito muito simples. No entanto, encontrei isso online (imagem)

Etapa 3: Etapa 2: Arduino

Primeiro, o liderado e o pote foram verificados para ver se estavam funcionando conforme o esperado. Isso foi diminuído por um programa simples onde o valor do pote controla o led. Usei a função de restrição para alterar o intervalo de pot de 0 a 1023 a 0 a 255, mas um / 4 simples também funciona. O valor do potenciômetro foi suavizado tomando a média de 10 leituras consecutivas, para remover picos. (No entanto, essa suavização causou problemas com o NodeJS, então isso foi removido posteriormente no projeto - mais sobre isso)

Código Arduino

Leitura / gravação serial A próxima etapa é obter a entrada do usuário por meio das janelas do monitor serial fornecidas pelo Arduino ide para definir o brilho. Para fazer isso, o serial.parseInt () é usado, o que leva um valor inteiro e ignora a string. Além disso, uma verificação de erro é adicionada ao código. O intervalo válido de um valor PWM é 0 - 255, quando um usuário insere> 255, ele atribui o valor 255 e se o usuário insere o valor ou <+/- 5, fiz isso para tornar a leitura mais estável, pois era flutuação. Por que este é um grande problema relacionado à atualização de SQL, mais sobre isso depois.

Etapa 4: Etapa 3: NodeJS

Não vou mostrar a você como obter ou configurar um servidor SQL. Existem muitos tutoriais por aí.

Existem 3 aspectos principais no programa NodeJS:

Ler dados seriais

Gravar dados seriais

Atualizar banco de dados SQL

Para fazer uma conexão serial dentro do NodeJS, um módulo chamado serialport deve ser baixado, o que pode ser feito usando o comando npm. Abra o CMD na pasta onde o programa NodeJS será mantido, instale digitando: npm install serialport Além disso, o módulo SQL deve ser instalado para poder se conectar ao banco de dados sql: npm install mysql NodeJS - Serial Port Meu primeiro passo com o NodeJS programa era para ler os dados impressos e enviar pwm brilho para o Arduino. Isso foi feito abrindo a conexão serial na mesma taxa de braud e porta. Assim que a conexão foi estabelecida, li as mensagens recebidas e as imprimi na janela do console. Problema levantado quando tentei escrever o valor pwm para controlar o brilho.

Ele continuava lançando erros: Port Not Open, minha solução inicial era chamar a função de gravação quando havia dados de entrada. No entanto, esta foi uma solução ruim e eu estava bastante insatisfeito com a solução, embora funcionasse, ela só seria enviada quando o valor do pote fosse alterado. O código de exemplo para o módulo serial também não funcionaria gerando o mesmo erro. Mais tarde, descobri que o programa estava tentando executar a função de gravação sem abrir a porta, o que resultou naquele erro. Eu resolvi esse problema usando a função setInterval ()

NodeJS - MySQLA biblioteca MySQL foi usada (npm install MySQL) para se conectar ao banco de dados SQL, uma vez que o servidor em um local remoto o endereço IP do servidor foi usado em vez de localhost.

var con contém as informações de conexão no formato JSON, uma vez que a conexão foi feita com sucesso, o banco de dados pode ser consultado. Foram criadas 2 funções uma para atualizar a tabela outra selecionando com parâmetros levando na consulta SQL. A tabela de atualização é chamada quando um novo valor de potenciômetro é recebido e a consulta de verificação de brilho será executada periodicamente.

Link NodeJSCode

Etapa 5: Etapa 4: a interface da web

Etapa 4: a interface da web
Etapa 4: a interface da web

Interface web

A página principal da web foi escrita em PHP, pois eu já tinha alguma experiência com meus bancos de dados CO323 e o módulo da Web na universidade. A tabela e o formulário HTML foram usados para exibir os dados sql.

Código de acesso PHP SQL: Link Role para a seção de interface da web.

Código da página da web em HTML e CSS * Javascript: Link Role para a parte inferior

Webpage final

Recomendado: