É interessante fazer um LED ou uma lâmpada piscar utilizando um Arduino, mas para transformar estes projetos em algo mais sofisticado, que tal implementar uma comunicação serial entre o Arduino e o computador utilizando um software que você irá desenvolver?
Ficou interessado? Aprenda com este tutorial como realizar esta comunicação serial com um software desenvolvido com a linguagem de programação C#.
A comunicação serial que o Arduino realiza é chamada de UART (Universal Asynchronous Receiver / Transmitter) ou USART (Universal Synchronous Asynchronous Receiver / Transmitter) conhecidas por fornecerem sinais de TX (transmissão) e RX (recepção) com uma comunicação simples e full duplex. Nas versões originais ou réplicas do Arduino Uno, o chip que realiza a ponte entre a comunicação serial e a porta USB do seu computador é o Atmega16U2, um chip SMD bem pequeno ao lado do cristal, para mais informações consulte seu datasheet.
Materiais
Para você montar este projeto será necessário possuir um Arduino Uno ou um Arduino Standalone.
É recomendável a leitura do artigo publicado no Tec Dicas de como ligar uma lâmpada no Arduino Uno para realizar este tutorial com sucesso.
Programando o Arduino
Para controlar os estados de ligado e desligado de uma lâmpada é necessário programar e enviar ao Arduino um firmware para realizar estes comandos. O código abaixo realiza uma comunicação serial entre o computador e o Arduino utilizando a função "Serial", onde é executado o comando por meio de um caractere transmitido via software. Para mais informações sobre a função Serial do Arduino consulte a documentação oficial.
Primeiramente siga estes passos para configurar a IDE do Arduino.
- Conecte seu Arduino Uno no computador.
- Abra a IDE oficial do Arduino, versão utilizada 1.8.3.
- Na aba <Ferramentas - Placa:"Arduino/Genuino Uno" - Porta (Sua Porta)">
Cole este código em seu Sketch, compile e envie para seu Arduino.
/**
* Firmware para controlar uma lâmpada
* com um módulo de relé via comunicação serial
*
* tecdicas
* 13/11/2017
*/
void Lampada()
{
if(digitalRead(10) == HIGH)
{
digitalWrite(10, LOW);
}
else
{
digitalWrite(10, HIGH);
}
}
void setup()
{
pinMode(10, OUTPUT);
Serial.begin(9600);
}
void loop()
{
if(Serial.available()) // Se a comunicação Serial estive disponível..
{
char op = Serial.read(); // Leia a op (Opção) da Serial.
if (op == '1')
{
Lampada();
}
}
}
Enviando dados pela serial via software
Para enviar os dados por uma comunicação serial foi desenvolvido um simples software utilizando a linguagem de programação C# e a IDE oficial da Microsoft, o Visual Studio 2017 Community. Para este tutorial é recomendado que você possua um conhecimento sobre a linguagem e a IDE para saber o que está sendo desenvolvido.
Inicie seu Visual Studio e crie um novo projeto em C# para aplicativos Windows Forms, coloque o nome de "ControlarLampadaArduino", selecione um diretório para salvar o projeto e pressione OK conforme mostram as imagens abaixo.
Faça uma tela simples com apenas 1 botão e coloque as seguintes propriedades:
- No Form coloque o Name de FrmPrincipal e o Text de Controle de Lâmpada
- No botão coloque o Name de btnLigaDesliga e o Text de Liga / Desliga.
As cores dos botões são modificadas com a propriedade BackColor e a fonte em Font, use a sua criatividade!
Para acessar o código do Form1.cs pressione F7 ou para voltar ao modo design pressione Shift+F7 e digite o seguinte código abaixo.
using System;
using System.IO.Ports; // Esta biblioteca é essencial para a comunicação serial
using System.Windows.Forms;
/// <summary>
/// Pequeno software desenvolvido para enviar dados via
/// comunicação serial para controlar uma lâmpada via Arduino Uno
///
/// Desenvolvido por tecdicas
/// 13/11/2017
/// </summary>
///
namespace ControlarLampadaArduino
{
public partial class FrmPrincipal : Form
{
SerialPort s;
public FrmPrincipal()
{
InitializeComponent();
s = new SerialPort();
s.PortName = "COM3"; // Mude conforme a porta serial do seu Arduino
s.BaudRate = 9600;
}
private void ControlarLampada(string op)
{
if(!s.IsOpen) // Se a porta serial não estiver disponível
{
try
{
s.Open(); // Abre
s.Write(op); // Escreve na porta
s.Close(); // Fecha
}
catch
{
MessageBox.Show("Conecte seu Arduino na porta USB.", "Atenção",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}
}
// Evento click do botão
private void btnLigaDesliga_Click(object sender, EventArgs e)
{
ControlarLampada("1"); // Opção 1 do Arduino
}
}
}
Compile o código para verificar se não contém nenhum erro na programação, depois conecte seu Arduino Uno na porta USB, ligue a lâmpada na tomada e veja o resultado!