Progresso da semana.
Eletrônica.
Esta semana foi dedicada a parte eletrônica da Falcon.
Montei todos os circuitos internos.
Mas primeiro, dei uma demão da tinta base em todo o corpo da nave, pois após o fechamento do Calzone, vai ficar mais difícil pintar algumas áreas.
Muito bem, com base em uma extensa pesquisa na internet atrás de referências, cheguei a conclusão dos lugares onde instalaria as luzes de aterrissagem e as de navegação.
Sendo assim fiz uma série de furos no casco inferior, onde os maiores serão utilizados pelas luzes de aterrissagem e os menores pelas luzes vermelhas de navegação.
Montando os Leds.
Só ai serão 31 Leds.
Colocando tudo no lugar com cola quente.
Pronto, tudo no lugar.
Muito bem, feito esta etapa, parti para a montagem dos circuitos.
Para quem quiser se aventurar um dia, eu montei um resumo do esquema eletrônico que utilizarei nesta Falcon.
O cérebro de tudo é uma placa de Arduíno que ao receber um comando do controle remoto acionará os relês das luzes ou os servos das rampas.
E abaixo o código que criei para comandar tudo.
#include <Servo.h> // incluindo a biblioteca do Servo
#include <IRremote.h> // incluindo a biblioteca do infravermelho
/*
******************************************************
Millennium Falcon - AMT/ERTL
Controle Remoto IR e Servos
Criado por Alfredo Craveiro
Rev 3.0 Maio 2015
******************************************************
*/
Servo servo_rampa;
Servo servo_carga;
const int RECEBE_PINO = 11; // IR Reciever ligado no pino 11
int rele1 = 4; // Rele 1 ligado no pino 4 (controla luz das cabines)
int rele2 = 5; // Rele 2 ligado no pino 5 (controla luzes vermelhas)
int rele3 = 6; // Rele 3 ligado no pino 6 (controla motor)
int rele4 = 7; // Rele 4 ligado no pino 7 (controla farol)
int rele5 = 8; // Rele 5 ligado no pino 8 (controla luzes de aterrissagem)
int rele_acesso = 9; // Rele da luz da rampa de carga ligada no pino 9
int rele_carga = 10; // Rele da luz da rampa de acesso ligada no pino 10
int on_off_Luz_Cabine = 0; // Inicializando valor da varialvel
int on_off_Luz_Vermelha = 0; // Inicializando valor da varialvel
int on_off_motor = 0; // Inicializando valor da varialvel
int on_off_farol = 0; // Inicializando valor da varialvel
int on_off_landing = 0; // Inicializando valor da varialvel
int on_off_rampa_acesso = 0; // Inicializando valor da varialvel
int on_off_rampa_carga = 0; // Inicializando valor da varialvel
int resultado = 0; // resultado do módulo (%) da divisão, se restar ele é 1, se não restar é 0
IRrecv ir_recebe(RECEBE_PINO); // declarando a variável do sensor
decode_results codigo_recebido; // resultado
void setup()
{
Serial.begin(9600); //Inicia serial
ir_recebe.enableIRIn(); // inicia a receptor do IR
pinMode(rele1, OUTPUT); // define o pino como saída
pinMode(rele2, OUTPUT); // define o pino como saída
pinMode(rele3, OUTPUT); // define o pino como saída
pinMode(rele4, OUTPUT); // define o pino como saída
pinMode(rele5, OUTPUT); // define o pino como saída
pinMode(rele_acesso, OUTPUT); // define o pino como saída
pinMode(rele_carga, OUTPUT); // define o pino como saída
servo_carga.attach(2); // define o pino 2 para o servo_carga
servo_rampa.attach(3); // define o pino 3 para o servo_rampa
servo_carga.write(111); // posição inicial do servo_carga
servo_rampa.write(128); // posição inicial do servo_rampa
}
void loop() {
if (ir_recebe.decode(&codigo_recebido)) { //verifica se um código foi recebido pelo IR
if (codigo_recebido.value != 0 ){
Serial.println(codigo_recebido.value, HEX); //mostra no serial o resultado(apenas para facilitar a visualição durante a fase de construção do código)
}
//inicio codigo luz cabine
if (codigo_recebido.value == 0xE17A807F){ // verifica se foi pressionado o botão do controle
resultado = on_off_Luz_Cabine % 2; //vê o resultado do módulo (resto da divisão)
if (resultado == 0) { //se da divisão não restar nada, ele habilita a função
digitalWrite(rele1, HIGH);
delay(500);
}else{ // pressionando novamente o botão ele desabilita a função
digitalWrite(rele1, LOW);
delay(500);
}
on_off_Luz_Cabine++;
on_off_Luz_Cabine == 0;
}
//fim do codigo luz cabine
//inicio codigo luzes vermelhas
if (codigo_recebido.value == 0xE17A40BF){
resultado = on_off_Luz_Vermelha % 2;
if (resultado == 0) {
digitalWrite(rele2, HIGH);
delay(500);
}else{
digitalWrite(rele2, LOW);
delay(500);
}
on_off_Luz_Vermelha++;
on_off_Luz_Vermelha == 0;
}
//fim codigo luzes vermelhas
//inicio codigo motor
if (codigo_recebido.value == 0xE17AC03F){
resultado = on_off_motor % 2;
if (resultado == 0) {
digitalWrite(rele3, HIGH);
delay(500);
}else{
digitalWrite(rele3, LOW);
delay(500);
}
on_off_motor++;
on_off_motor == 0;
}
// fim codigo motor
//inicio codigo farol
if (codigo_recebido.value == 0xE17AC03F){
resultado = on_off_farol % 2;
if (resultado == 0) {
digitalWrite(rele4, HIGH);
delay(500);
}else{
digitalWrite(rele4, LOW);
delay(500);
}
on_off_farol++;
on_off_farol == 0;
}
// fim codigo farol
//inicio codigo luzes de aterrissagem
if (codigo_recebido.value == 0xE17AC03F){
resultado = on_off_landing % 2;
if (resultado == 0) {
digitalWrite(rele5, HIGH);
delay(500);
}else{
digitalWrite(rele5, LOW);
delay(500);
}
on_off_landing++;
on_off_landing == 0;
}
// fim codigo luzes de aterrissagem
//inicio codigo rampa de acesso
if (codigo_recebido.value == 0xE17A20DF){
resultado = on_off_rampa_acesso % 2;
if (resultado == 0) {
digitalWrite(rele_acesso, HIGH); // liga iluminação da rampa de acesso
delay(500);
for (int i = 128; i > 96; i--) {
servo_rampa.write(i); // desce rampa de acesso
delay(35);
}
}else{
digitalWrite(rele_acesso, LOW); // Desliga iluminação da rampa de acesso
delay(500);
for (int i = 96; i < 128; i++) {
servo_rampa.write(i); // sobe rampa de acesso
delay(25); }
}
on_off_rampa_acesso++;
on_off_rampa_acesso == 0;
}
// fim codigo rampa de acesso
//inicio codigo rampa de carga
if (codigo_recebido.value == 0xE17A20DF){
resultado = on_off_rampa_carga % 2;
if (resultado == 0) {
digitalWrite(rele_carga, HIGH); // liga iluminação da rampa de carga
delay(500);
for (int i = 128; i > 96; i--) {
servo_rampa.write(i); // desce rampa de carga
delay(35);
}
}else{
digitalWrite(rele_carga, LOW); // Desliga iluminação da rampa de carga
delay(500);
for (int i = 96; i < 128; i++) {
servo_rampa.write(i); // sobe rampa de carga
delay(25); }
}
on_off_rampa_carga++;
on_off_rampa_carga == 0;
}
// fim codigo rampa de carga
ir_recebe.resume(); // recebe o próximo código
delay(200);
}
}
Muito bem, para colocar isto tudo ai junto, resolvei utilizar fio estanhado.
Como serão muitas e muitas ligações a serem executadas, o fio estanhado tem a vantagem de poder ser moldado mas facilmente, ficando no lugar onde você o deixa, com isso a confusão de fio tende a ser menor.
Colei os reles nos seus lugares com cola quente e também alguns terminais, para facilitar.
Iniciando a longa soldagem, que me consumiu todo o tempo livre da semana.
[
Aqui um buraco na lateral para acomodar o receptor infravermelho do controle remoto.
Continuando a soldagem dos componentes.
Placa do Arduíno posicionada e tudo sendo ligado a ela.
Cabine ligada.
E pronto, depois de uma semana exaustiva de soldagens e mais soldagens, tudo pronto.
Eu já testei tudo e está tudo funcionando como deveria, por incrível que pareca.
Fico devendo um vídeo do teste, mas acho que ele estragaria a surpresa final, onde estará tudo montado e funcionando.
E foi isso ai, chegando a assustadora parte de fechar a nave e iniciar a pintura final, espero não estragar tudo, vou tentar caprichar na pintura (improvável

).
Abraço a todos.