Repositório focado no trabalho 1 da matéria de Fundamentos de Sistemas Embarcados feito utilizando a Raspberry Pi.
Este trabalho tem como objetivo gerenciar o funcionamento de 4 cruzamentos, controlando a passagem de pedestres e carros, além de monitorar as infrações por velocidade acima do limite permitido e avanço de sinal vermelho. Para um entendimento completo do projeto, sua descrição e requisitos podem ser vistos aqui
Utilizando a linguagem Python (versão 3) foi criado um Servidor Distribuído, é um Servidor Central.
- Controlar os semáforos
- Controlar o acionamento de botões de passagem de pedestres
- Monitorar o sensor de parada e passagem de carros
- Monitorar a velocidade dos carros na via principal
- Monitorar o número de carros na via principal
- Monitorar as infrações cometidas
- Enviar e receber informações do Servidor Central
- Gerenciar o acionamento dos cruzamentos
- Mostrar as informações, por cruzamento, recebidas do Servidor Distribuído:
- Número de carros por minuto na via principal
- Velocidade média da via principal
- Número de infrações por tipo
- Enviar informações para o Servidor Distribuído para ser acionado o modo noturno, ou o modo de emergência
- RPi.GPIO (Link da documentação aqui, não vem por padrão no Python 3)
- socket
- threading
Para executar o código necessita-se de um ambiente raspbian, por isso é necessário conectar-se as Raspberry Pi, cujas quais foram utilizadas para desenvolver este projeto.
Além do que precisa-se executar os códigos da maneira que é explicado na seção 'Uso' (abaixo).
Para executar os comandos abaixo, primeiro precisa-se clonar este repositório e copiá-lo para as duas rasp's, posteriormente acessá-las via conexão 'ssh' e entrar na pasta do projeto transferido.
Trabalhando com duas rasp's, uma delas servirá como Servidor Central, logo, o IP dessa Rasp terá que ser passado como parâmetro de inicialização nos scripts
Nos outros scripts, é necessário passar o parâmetro de qual cruzamento está sendo ativado, e o IP que está sendo executado o Servidor Central Possíveis parâmetros de cruzamento:
cruzamento_1
cruzamento_2
cruzamento_3
cruzamento_4
- 1°: Executar o Servidor Central
- No primeiro terminal, na rasp, execute o comando passando o IP :
python3 servidor_central.py numero_IP_da_rasp
Exemplo
python3 servidor_central.py 164.41.98.26
- 2°: Executar o primeiro Cruzamento como cliente do Servidor Distribuído
- No segundo terminal, na rasp, execute o comando passado os parâmetros 'cruzamento' e 'IP' de onde está rodando o Servidor Central:
python3 main.py cruzamento_1 IP_rasp_servidor_central
Exemplo
python3 main.py cruzamento_1 164.41.98.26
- 3°: Executar o segundo Cruzamento como cliente do Servidor Distribuído
- No terceiro terminal, na rasp, execute o comando passado os parâmetros 'cruzamento' e 'IP' de onde está rodando o Servidor Central:
python3 main.py cruzamento_2 IP_rasp_servidor_central
Exemplo
python3 main.py cruzamento_2 164.41.98.26
- 4°: Executar o terceiro Cruzamento como cliente do Servidor Distribuído
- No quarto terminal, na rasp, execute o comando passado os parâmetros 'cruzamento' e 'IP' de onde está rodando o Servidor Central:
python3 main.py cruzamento_3 IP_rasp_servidor_central
Exemplo
python3 main.py cruzamento_3 164.41.98.26
- 5°: Executar o quarto Cruzamento como cliente do Servidor Distribuído
- No quinto terminal, na rasp, execute o comando passado os parâmetros 'cruzamento' e 'IP' de onde está rodando o Servidor Central:
python3 main.py cruzamento_4 IP_rasp_servidor_central
Exemplo
python3 main.py cruzamento_4 164.41.98.26
No Servidor Central, quando ele é executado, uma lista de interações aparece no terminal, mostrando os comandos:
1 - Ligar modo de emergencia nos cruzamentos 1 e 2
2 - Desligar modo de emergencia nos cruzamentos 1 e 2
3 - Ligar modo de emergencia nos cruzamentos 3 e 4
4 - Desligar modo de emergencia nos cruzamentos 3 e 4
5 - Ligar modo noturno
6 - Desligar modo noturno
7 - Mostrar dados dos cruzamentos
- Modo noturno: Liga o semáforo amarelo em todos os cruzamentos ativos
- Modo emergência: Liga o semáforo verde por via principal, ou seja, nos cruzamentos 1 e 2, e/ou, nos cruzamentos 3 e 4.
Feito todos os comandos acima na ordem, basta interagir no simulador que se encontra na página de descrição do Trabalho 1
- Buzzer não está funcionando
Ian Ferreira.