blog-eletrogate-logo-desktop blog-eletrogate-logo-mobile
  • Categorias
    • Voltar
    • INICIANTES
    • INTERMEDIÁRIOS
    • AVANÇADOS
    • divide
    • Automação Residencial
    • Componentes Eletrônicos
    • Impressão 3D
    • IoT
    • Modelagem 3D
    • Módulos Wifi
    • Por trás da tecnologia
    • Projetos
    • Raspberry Pi
    • Robótica
    • Sensores
    • Shields
    • Sistemas Operacionais
    • Tipos de Arduino
    • Tutoriais
  • Apostilas
  • Quem Somos
  • Seja um redator
  • Trabalhe Conosco
    • Categorias
      • Voltar
      • INICIANTES
      • INTERMEDIÁRIOS
      • AVANÇADOS
      • divide
      • Automação Residencial
      • Componentes Eletrônicos
      • Impressão 3D
      • IoT
      • Modelagem 3D
      • Módulos Wifi
      • Por trás da tecnologia
      • Projetos
      • Raspberry Pi
      • Robótica
      • Sensores
      • Shields
      • Sistemas Operacionais
      • Tipos de Arduino
      • Tutoriais
    • Apostilas
    • Quem Somos
    • Seja um redator
    • Trabalhe Conosco
Loja Eletrogate
voltar
  • Introdução
  • Material Necessário para o Projeto Comunicação Serial a Laser
  • Receptor
  • Emissor
  • Funcionamento:
  • Considerações finais
Projetos

Comunicação Serial a Laser

Eletrogate 6 de julho de 2023Atualizado em: 02 ago 20235 min

Introdução

A fibra óptica é uma tecnologia de transmissão de dados que utiliza cabos compostos por fios de vidro ou plástico extremamente finos para transmitir informações em forma de luz. É uma das formas mais rápidas e eficientes de transmissão de dados disponíveis atualmente, sendo amplamente utilizada em sistemas de telecomunicações, internet de alta velocidade, redes de televisão a cabo e outras aplicações que demandam transmissão de grandes quantidades de dados em altas velocidades e com baixa perda de sinal. Como usaremos essa mecânica de comunicação no Arduino? Como no funcionamento de qualquer comunicação, teremos um emissor e um receptor. O receptor consiste em um componente sensível à luz, ele será responsável por detectar os pulsos luminosos enviados pelo emissor. Já o emissor consiste em uma fonte de luz que será pulsada conforme o dado enviado, como a comunicação do Arduino é feita em bits (ligado ou desligado), aproveitaremos os bits para ligar ou desligar o laser a fim de apenas trocar a eletricidade pela luz. Agora que entendemos a mecânica do funcionamento, podemos ir para a montagem.


Material Necessário para o Projeto Comunicação Serial a Laser

  • Nano V3.0 + Cabo Usb para Arduino
  • Diodo Laser 5v Arduino
  • Módulo Receptor de Laser 
  • Led Difuso 5mm Vermelho 
  • Resistor 330R 1/4W (10 Unidades)
  • Jumpers – Femea/Femea – 20 Unidades de 20cm
  • Jumpers – Macho/Macho – 20 Unidades de 20cm 
  • Protoboard 400 Pontos

Os jumpers M/M são para a conexão na própria protoboard, já os F/F são para conexão dos módulos no Arduino nano. Poderíamos usar qualquer outro Arduino, mas por questões de disponibilidade e custos, preferi o nano. Dependendo da aplicação pode ser necessário de jumpers M/F.


Receptor


O circuito receptor baseia-se na entrada de dados (bits) no pino RX (1) do Arduino pela incidência do “liga-desliga” (bits) do led serial. Quando o laser for ligado, o Arduino registra 1 e quando for desligado, é registrado 0. O V indica a direção da esfera do led, portanto atenção.

Código para o receptor:

void setup() { 
  pinMode(13, OUTPUT);  // Define o pino 13 como saída 
  Serial.begin(9600);   // Inicia a comunicação serial com uma taxa de transmissão de 9600 bps 
} 

void loop() {
  char entradaSerial = Serial.read();  // Lê o caractere recebido da entrada serial e armazena na variável 'entradaSerial' 

  if (entradaSerial == '2') {  // Se o caractere recebido for '2' 
    digitalWrite(13, HIGH);   // Liga o LED conectado ao pino 13 
    delay(100);               // Aguarda 100 milissegundos 
    digitalWrite(13, LOW);    // Desliga o LED 
    delay(100);               // Aguarda mais 100 milissegundos 
  } 

  if (entradaSerial == '1') {  // Se o caractere recebido for '1' 
    digitalWrite(13, HIGH);   // Liga o LED 
  } 

  if (entradaSerial == '0') {  // Se o caractere recebido for '0' 
    digitalWrite(13, LOW);    // Desliga o LED 
  } 

}

O código apresentado acende o led se for recebido 1, apaga se for recebido 0 e caso seja 2, ele piscará com um intervalo de 100 ms.

Explicação:

void setup() {  
pinMode(13, OUTPUT); // Define o pino 13 como saída  
Serial.begin(9600); // Inicia a comunicação serial com uma taxa de transmissão de 9600 bps
}

A função “setup()” é executada uma única vez, quando a placa Arduino é ligada ou resetada. Nessa função, é definido que o pino 13 será utilizado como saída para controlar um LED. Também é iniciada a comunicação serial com uma taxa de transmissão de 9600 bits por segundo.

void loop() {  
char entradaSerial = Serial.read(); // Lê o caractere recebido da entrada serial e armazena na variável 'entradaSerial'  
  
if (entradaSerial == '2') { // Se o caractere recebido for '2'  
digitalWrite(13, HIGH); // Liga o LED conectado ao pino 13  
delay(100); // Aguarda 100 milissegundos  
digitalWrite(13, LOW); // Desliga o LED  
delay(100); // Aguarda mais 100 milissegundos  
}  
  
if (entradaSerial == '1') { // Se o caractere recebido for '1'  
digitalWrite(13, HIGH); // Liga o LED  
}  
  
if (entradaSerial == '0') { // Se o caractere recebido for '0'  
digitalWrite(13, LOW); // Desliga o LED  
}  
}

  A função “loop()” é executada continuamente após a execução da função “setup()”. Nessa função, é lido o caractere recebido pela entrada serial e armazenado na variável ‘entradaSerial’.

Os condicionais “if” são utilizados para verificar qual caractere foi recebido e, em seguida, acender ou apagar o LED. Se o caractere ‘2’ é recebido, o LED pisca rapidamente, alternando entre ligado e desligado com um intervalo de 100 milissegundos entre cada estado. Se o caractere ‘1’ é recebido, o LED é ligado. Se o caractere ‘0’ é recebido, o LED é desligado.

O ciclo se repete indefinidamente, aguardando a chegada de novos dados pela entrada serial e executando as ações correspondentes a cada caractere recebido.


Emissor

O circuito emissor baseia-se no envio da leitura serial pelo pino TX (0), onde o led está conectado. Como o envio é digital em bits (ligado ou desligado, 1 e 0), então led ligará no bit 1 e desligará no bit 0.

Código para o emissor:

void setup() { 
Serial.begin(9600); // Inicia a comunicação serial com uma taxa de transmissão de 9600 bps 
} 
 
void loop() { 
if (Serial.available()) { // Verifica se há dados disponíveis na entrada serial 
Serial.write(Serial.read()); // Lê o caractere recebido e envia de volta pela saída serial 
} else { 
// Não há dados disponíveis na entrada serial, então a execução passa para essa parte do código 
// Essa parte do código está vazia, mas poderia ser usada para realizar outras tarefas enquanto o programa aguarda a chegada de dados pela entrada serial. 
} 
}

Explicação do código emissor:

void setup() { 
Serial.begin(9600); // Inicia a comunicação serial com uma taxa de transmissão de 9600 bps 
}

A função setup() é executada apenas uma vez, no início do programa. Neste caso, ela inicia a comunicação serial com uma taxa de transmissão de 9600 bits por segundo.

void loop() { 
if (Serial.available()) { // Verifica se há dados disponíveis na entrada serial 
Serial.write(Serial.read()); // Lê o caractere recebido e envia de volta pela saída serial 
}
else { 
// Não há dados disponíveis na entrada serial, então a execução passa para essa parte do código 
// Essa parte do código está vazia, mas poderia ser usada para realizar outras tarefas enquanto o programa aguarda a chegada de dados pela entrada serial. 
} 
}  

A função loop() é executada continuamente enquanto o Arduino estiver ligado. Ela verifica se há dados disponíveis na entrada serial utilizando a função Serial.available(). Se houver, ela lê o caractere recebido utilizando a função Serial.read() e envia de volta pela saída serial utilizando a função Serial.write().

Se não houver dados disponíveis, a execução passa para a próxima parte do código, representada pelos comentários “Não há dados disponíveis na entrada serial, então a execução passa para essa parte do código”.


Funcionamento:

https://blog.eletrogate.com/wp-content/uploads/2023/05/WhatsApp-Video-2023-05-16-at-7.47.31-PM.mp4
Primeiro digitei 1, depois 0 e finalmente 2.

Considerações finais

O sensor de laser geralmente vem desmontado. O receptor se assemelha com um led, mas terá 3 pinos, conecte de forma que a face que contém uma pequena esfera seja voltada para o lado dos terminais. O alto índice de luminosidade no local a ser realizado o experimento pode causar interferências no sensor. (AVISO: não é normal o sensor esquentar muito).

Por que não usar um LDR? Após minhas pesquisas, descobri que o LDR não é a melhor opção para esse projeto, além de dificultar a programação, esse componente tem uma demora para se adaptar à luz, o que torna quase impossível uma boa comunicação serial e aproveitar as altas velocidades de envio da luz.

 Se o código for editado, atente-se para a velocidade serial (Baud rate), pois devem estar sincronizados.



Daniel Vasconcelos

Tenho 14 anos, meu primeiro contato com eletrônica foi aos 5 anos, e com o Arduino aos 12. Desde então venho explorando mais desse mundo incrível.


Eletrogate

6 de julho de 2023 Atualizado em: 02 ago 2023

A Eletrogate é uma loja virtual de componentes eletrônicos do Brasil e possui diversos produtos relacionados à Arduino, Automação, Robótica e Eletrônica em geral.

Conheça a Metodologia Eletrogate e Lecione um Curso de Robótica nas Escolas da sua Região!

Projetos

Jogo da Velha na TV!

Eletrogate19 de setembro de 2023

Este é um jogo de quebra-cabeça para dois jogadores, identificados como “X” e “O”, que se revezam marcando os espaços em uma área 3 × 3.
Alguma vez na vida você já deve ter jogado este clássico jogo conhecido como Jogo-da-Velha ou Tic-Tac-Toe.

Neste post, você vai aprender a montar e programar uma versão digital deste jogo, com saída de imagem para TV, utilizando apenas alguns componentes eletrônicos básicos, uma placa Arduino UNO e um Teclado Matricial de 16 teclas.

Projetos

Jogo da Velha na TV!

Eletrogate19 de setembro de 2023

Este é um jogo de quebra-cabeça para dois jogadores, identificados como “X” e “O”, que se revezam marcando os espaços em uma área 3 × 3.
Alguma vez na vida você já deve ter jogado este clássico jogo conhecido como Jogo-da-Velha ou Tic-Tac-Toe.

Neste post, você vai aprender a montar e programar uma versão digital deste jogo, com saída de imagem para TV, utilizando apenas alguns componentes eletrônicos básicos, uma placa Arduino UNO e um Teclado Matricial de 16 teclas.

IoT

LittleFS: Alto Desempenho para RP Pico, ESP32 e ESP8266

Eletrogate12 de setembro de 2023

Aprenda neste post, a usar o sistema de arquivos LittleFS, que possui mais desempenho do que o sistema SPIFFS, nas placas Raspberry Pi Pico, ESP32 e ESP8266.

IoT

LittleFS: Alto Desempenho para RP Pico, ESP32 e ESP8266

Eletrogate12 de setembro de 2023

Aprenda neste post, a usar o sistema de arquivos LittleFS, que possui mais desempenho do que o sistema SPIFFS, nas placas Raspberry Pi Pico, ESP32 e ESP8266.

Sensores

Como Utilizar o Módulo Sensor de Cor RGB TCS34725

Eletrogate5 de setembro de 2023

Você já precisou de algum sensor para detectar as cores de objetos? Venha conferir o post de hoje! Nós vamos utilizar o sensor RGB TCS34725.

Sensores

Como Utilizar o Módulo Sensor de Cor RGB TCS34725

Eletrogate5 de setembro de 2023

Você já precisou de algum sensor para detectar as cores de objetos? Venha conferir o post de hoje! Nós vamos utilizar o sensor RGB TCS34725.

Projetos

Controlando o Braço Robótico em MDF via Bluetooth

Eletrogate29 de agosto de 2023 Atualizado em: 01 set 2023

Que tal montar um braço robótico e controlá-lo pelo celular? Entre para dicas de montagem e aprender a controlar servos e conectar sua placa.

Projetos

Controlando o Braço Robótico em MDF via Bluetooth

Eletrogate29 de agosto de 2023 Atualizado em: 01 set 2023

Que tal montar um braço robótico e controlá-lo pelo celular? Entre para dicas de montagem e aprender a controlar servos e conectar sua placa.

Eletrogate Robô

Cadastre-se e fique por
dentro de novidades!

blog-eletrogate-logo-footer

Rua Rio de Janeiro, 441 - Sala 1301
Centro - Belo Horizonte/MG
CEP 30160-041
*Não temos atendimento físico

ANWAR SLEIMAN HACHOUCHE - ME
CNPJ: 18.917.521/0001-73

Atendimento

(31) 3142-3800

[email protected]


Seg a Sex - das 8h às 17h

Institucional

  • Apostilas
  • Quem Somos
  • Privacidade
  • Seja um Redator
  • Trabalhe Conosco

Nos acompanhe

Facebook Instagram Youtube

© ELETROGATE 2023 - Todos os direitos reservados. Termos de uso e Política de privacidade.