Controlador de Semáforo com a Franzininho WiFi Lab01

Este post faz parte da série Franzininho WiFi com MicroPython

Introdução

Com a Franzininho WiFi Lab01 vamos construir um simulador simples de semáforo. Este dispositivo compacto nos permitirá criar um sistema de controle de tráfego básico, utilizando um LED RGB para simular as cores do semáforo. 

Embora a criação de um sistema de gerenciamento de tráfego em larga escala seja um projeto avançado, esta abordagem mais modesta nos oferecerá uma visão prática e educacional sobre como controlar e coordenar as luzes de um semáforo. 

Neste artigo, vamos explorar o uso do LED RGB como uma representação visual das fases de um semáforo, destacando como podemos controlar o tempo de exibição de cada cor. Essa abordagem nos permitirá simular o funcionamento de um semáforo de maneira simples e eficaz, utilizando técnicas como o PWM (Pulse Width Modulation).

PWM (Pulse Width Modulation)

PWM, ou Modulação por Largura de Pulso (Pulse Width Modulation), é uma técnica utilizada para controlar a potência média fornecida a um dispositivo elétrico, como um LED, motor elétrico ou outro componente eletrônico. O PWM controla a proporção do tempo em que o sinal está ligado (ao nível alto) em relação ao tempo total de um ciclo.

O controle é alcançado variando a largura dos pulsos de sinal em um ciclo fixo. Se a largura do pulso for maior, a média de potência entregue ao dispositivo é maior, resultando em uma saída mais brilhante no caso de um LED. Se a largura do pulso for menor, a média de potência é reduzida, resultando em uma intensidade de luz menor no LED.

Figura 1 – Modulações PWM

No contexto de LEDs RGB, o PWM é frequentemente utilizado para ajustar a intensidade luminosa de cada cor (vermelho, verde e azul), permitindo uma ampla gama de cores e transições suaves entre elas. 

Recursos necessários

Para iniciar o trabalho com os GPIOs, é essencial possuir o diagrama de pinos da placa à disposição, pois isso vai permitir que você identifique tanto os nomes quanto as funções associadas a cada um deles.

PinoRecurso
IO1LDR
IO2BT6
IO3BT5
IO4BT4
IO5BT3
IO6BT2
IO7BT1
IO8OLED_SDA
IO9OLED_SCL
IO10TFT_DC
IO11TFT_RES
IO12LED AZUL
IO13LED VERDE
IO14LED VERMELHO
IO15DHT11
IO17BUZZER
IO35TFT_SDA
IO36TFT_SCL
Tabela 1 – Franzininho WiFi Lab01 pinout

Código

Com a Franzininho WiFi Lab01 conectada ao seu computador, abra o Thonny e crie um novo arquivo contendo o código a seguir:

from machine import Pin, PWM
import utime

# configuração dos pinos para o LED RGB
ledR = 14  # Pino para o LED vermelho
ledG = 13  # Pino para o LED verde
ledB = 12  # Pino para o LED azul

# configuração dos objetos PWM
pwm_red = PWM(Pin(ledR), freq=500)
pwm_green = PWM(Pin(ledG), freq=500)
pwm_blue = PWM(Pin(ledB), freq=500)

def set_color(red, green, blue):
	# Configura a intensidade para cada cor
	pwm_red.duty(int(red * 1023 / 255))
	pwm_green.duty(int(green * 1023 / 255))
	pwm_blue.duty(int(blue * 1023 / 255))

# Semáforo
while True:
	set_color(255, 0, 0)  # Vermelho
	utime.sleep(5)
	set_color(0, 255, 0)  # Verde
	utime.sleep(5)
	set_color(255, 255, 0)  # Amarelo
	utime.sleep(3)

Vamos começar o código com “from machine import Pin, PWM”. Para poder acessar os pinos da placa e configurar o PWM. Além disso, importe a biblioteca “utime” para adicionar pausas no código.Os LEDs RGB são setados da seguinte forma: o LED vermelho no pino 14, o LED verde no pino 13, e o LED azul no pino 12, de acordo com a tabela de pinagem.Em seguida configuramos o PWM, que assumirá um importante papel de ajustar a intensidade de cada cor. Para isso, associamos um PWM a cada cor (vermelho, verde e azul) com uma frequência de 500Hz.A intensidade do LED é controlada pela função duty() da biblioteca PWM. No código, usamos a função set_color para definir a intensidade de cada cor:

def set_color(red, green, blue):
    # Configura a intensidade para cada cor
    pwm_red.duty(int(red * 1023 / 255))
    pwm_green.duty(int(green * 1023 / 255))
    pwm_blue.duty(int(blue * 1023 / 255))

Para realizar esse ajuste, pegamos o duty cycle e o valor máximo que cada cor pode assumir. O duty cycle pode ser um valor entre 0 e 1023, em que 1023 corresponde a 100% do duty cycle (brilho total) e 0 corresponde a 0% duty cycle (LED apagado). E o valor da cor pode ir de 0 a 255.

Essa função possibilitará a exibição da cor amarela no LED. Isso ocorre porque o amarelo é uma combinação de verde e vermelho, e o LED RGB, que possui apenas as cores vermelho, verde e azul, pode criar a cor desejada através dessa mistura.

No loop principal, chamamos a função set_color para exibir a cor vermelha durante 5 segundos, seguida pela cor verde por mais 5 segundos e, por fim, a cor amarela por 3 segundos. O objetivo é simular o funcionamento de um semáforo.

Ao executar o programa temos a seguinte saída:

Conclusão

Neste artigo exploramos como utilizar a técnica de Modulação por Largura de Pulso (PWM) para criar um simulador de semáforo utilizando um LED RGB. 

Ao compreendermos o papel crucial do PWM na variação da intensidade luminosa de cada cor, conseguimos simular eficazmente as fases de um semáforo de maneira simples e realista. 

Como sugestão de projeto, chame a função set_color dentro do loop, testando diferentes valores para red (vermelho), green (verde) e blue (azul), e observe as cores que são exibidas no seu LED RGB. Isso permitirá uma exploração prática das possibilidades de cores que podem ser obtidas.

Franzininho WiFi com MicroPython

Construindo um Servidor Web para sua Estação Meteorológica com a Franzininho WiFi Lab01
Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.
Comentários:
Notificações
Notificar
0 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Home » Notícias » Controlador de Semáforo com a Franzininho WiFi Lab01

EM DESTAQUE

WEBINARS

VEJA TAMBÉM

JUNTE-SE HOJE À COMUNIDADE EMBARCADOS

Talvez você goste: