Ir ao conteúdo
  • Cadastre-se

eng.viniciuspais

Membro Pleno
  • Posts

    67
  • Cadastrado em

  • Última visita

Reputação

2
  1. mano, manchester não funcionou.... le os posts ai.... tenta comunicação serial a 1200bps! falou
  2. Boa noite Pessoal, desculpa a demora! Então XARA, eu estou usando o meu código que faz o mesmo que o código do Matheus porém o do Matheus esta feito para ser utilizado no PICC (eu acho) e o meu foi feito para ser utilizado no MikroC, as bibliotecas pode ter alguma diferença mais você pode alterar rapidinho. Como você deve ter lido ai, a comunicação é serial a 1200bps sendo transmitido pelo modulo RF. Parei de mexer neste projeto pois estava desenvolvendo um dataloger. Terminei e vendi para a empresa que eu trabalho e agora estou retomando esse projeto. O meu funcionou corretamente e eu não vou mais usar ele mais continue perguntando que nós o ajudaremos com certeza. Comprei dois controles de alarme positron (DP45 Rolling Code & Flex Code) e comecei a interpretar o algoritmo para o controle em qualquer projeto, pretendo desenvolver em assembly e utilizar o pic12f683 pois foi o que menos me deu trabalhos em projetos atrás. Caso o algoritmo for muito complexo eu posso programar o controle com o meu cógigo e usar o hardware dele pois o controle contem um pic12cxx nele, mais pelo que eu pude analisar o código segue contem 3 bytes que seguem uma regra(ritmo) matemática e outros bits que representam os botões. Se alguem quiser me ajudar eu posto o que já consegui! Abraço. Tudo de bom!
  3. Olá pessoal, após analisar a comunicação no osciloscópio eu cheguei a conclusão que é possivel realizar esta comunicação, mais não com o meu hardware. Testei por horas a comunicação serial a 1200bps (Simulação virtual no Proteus, PIC a PIC direto e PIC a PIC com módulos RF) e constatei que o meu transmissor não tem força para irradiar a frequencia(transmissor alimentado a 5V). Com antena de 170mm, o transmissor não aciona a saida receptor a 200mm de distancia entre as antenas enquanto que um controle remoto de alarme para carro consegue fazer isso com facilidade a aproximadamente 5 metros sem antena (apenas no receptor). Veja o resultado do meu hardware com as antenas bem proximas. Excelente? Eu não confiava até ver que o "bixim" é "bão" mesmo! Comprei um novo transmissor (igual o do Matheus) e espero que sua transmissão seja boa, pois os que eu comprei não servem para nada! Obrigado pessoal, desculpa a demora na resposta, mais meu dia está muito corrido. Postarei os resultados do novo transmissor assim que chegar, modifiquei bastante meu código fonte, quando terminar eu posto ele completo e funcionando junto com o esquema eletrônico!
  4. Israel no momento eu estou analisando no osciloscópio os tempos e os niveis e parece estar com um desvio admissivel.... vou colocar os cristais como pediu para verificar se melhora ainda mais... Posto os resultados completos dos testes esta noite... Obrigado a todos que estão me ajudando!
  5. Gente, vou hoje na loja de um amigo meu olhar no osciloscópio a comunicação a 1200bps entre pics e depois vou analisar com os módulos rf.... testei meu programa(já editei varias vezes, postarei mais detalhes quando concluir) e no proteus funcionou 100% agora falta analisar o funcionamento fisico. Obrigado a todos que estão me ajudando!
  6. Então gente não esta dando certo mesmo... chacalgbi e matheus, vou fazer os testes sem os módulos... é **** cara... isso tem que funcionar! Amanhã eu posto os resultados. Obrigado.
  7. manda dos dois jeitos, reduzido para pic16f628a e normal para 18f2550! ai eu vejo se deu certo! Obrigado.
  8. Tenho um 18f2550 e um 18f4550. Simplificao código, tem como? porque a pci com 16f628a ja esta montada! Obrigado.
  9. Sem problemas Caroline... Então Matheus, coloquei a antena e coloquei o transmissor com delay, fiz tudo certinho e nada de funcionar... tem como você compilar o seu programa ai no seu pc e me enviar para verificar se o problema esta no meu compilador? se sim, coloque uma saida no pino B5 do receptor e coloque um botão no B5 do transmissor. Detalhe: você pode notar que eu não estou utilizando oscilador externo! estou testando os perifericos (trocando os pinos, testando se a uart esta recebendo...) mais creio que vai dar certo logo... tenho um controle da positron que é de alarme de carro, você sabe como funciona (protocolo, dados pela uart ou outros) pois pode ser que seja mais pratico usa-lo! Obrigado. Até mais.
  10. Codigo é no MikroC. o pino é A2 no mikroC fica assim (porta A . Bit 2). vou fazer esses testes agora e posto o resultado... vou por um delay de 200ms... falou. Obrigado.
  11. então matheus ainda nao consegui fazer funcionar... vamos lá! meu novo código Transmissor: void main() { int readytosend = 0, x = 0; // inicializa as variáveis TRISA = 0x00; // define saidas e entradas TRISB = 0xFF; PORTA.B2 = 0; UART1_Init(2400); while (1) { // loop infinito readytosend = 0; // flag de controle de botão do { if (Button(&PORTB, 5, 1, 0)) { // verifica se o botão esta pressionado (B5) x = 0x01; // variável x recebe o valor do botão readytosend = 1; // flag de controle recebe o valor 1 para sair da rotina } if (Button(&PORTB, 4, 1, 0)) { // verifica se o botão esta pressionado (B4) x = 0x02; // variável x recebe o valor do botão readytosend = 1; // flag de controle recebe o valor 1 para sair da rotina } } while(readytosend == 0); // continua se o flag for diferente de 0 PORTA.B2 = 1; // Liga Transmissor UART1_Write(0x0B); // Envia byte de inicio UART1_Write(0x0B); // Envia byte de inicio UART1_Write(0x0B); // Envia byte de inicio UART1_Write(0x0B); // Envia byte de inicio UART1_Write(x); // Envia X PORTA.B2 = 0; // Desliga transmissor } } Receptor: unsigned char u_received; void interrupt(){ if(PIR1.B5) // INTERRUPÇÃO POR RECEBIMENTO NA UART { if(uart1_read() != 0x0B) { u_received = uart1_read(); } } } void main() { UART1_Init(2400); // Inicializa módulo UART Delay_ms(100); // Atraso para estabilização UART TRISA = 0x00; // PORTA todos saídas TRISB = 0xFF; // PORTB todos saídas exceto RB0 //ATIVAÇÃO DE INTERRUPÇÃO DA UART PIE1.B5 = 1; // RECEBIMENTO NA UART INTCON.B6 = 1; // ATIVA INT. DOS PERIFERICOS INTCON.B7 = 1; // ATIVA INT. GERAL while(1){ if (u_received == 0x01) { PORTA.B4 = 1; } else if (u_received == 0x02) { PORTA.B4 = 0; } } } Conectei a saida do receptor no RX do PIC16f628A com um resistor de 1K. Conectei a entrada do transmissor no TX do PIC16f628A com um resistor de 150ohms. Coloquei o pino A2 do PIC direto no VCC do módulo de transmissão. Módulo receptor Módulo transmissor Eu vi um video que o cara usou a saída linear do receptor! Ainda não consegui fazer funcionar!!!!!
  12. voce usou a saida linear ou digital do receptor? tem como voce passar o esquema eletrônico? Obrigado.
  13. Vou ajustar para meu PIC e posto o resultado... Obrigado. #use rs232(baud=2400, xmit=WireTX, rcv=WireRX, ERRORS, STREAM=Wireless) Você utiliza rs232 para comunicação e utiliza um pino no transmissor(data do rf433 no tx do pic)?
  14. Com certeza serve.... poste por favor... eu consigo utilizar no MikroC? porque você usa o CCS? é melhor? Me explica uma coisa... eu tento no MikroC e não consigo usar esta função para inverter o estado do pino "PORTB.B3 = ~PORTB.B3;" porque não funciona? Obrigado e aguardo o código.
  15. Boa noite, estou tentando fazer um PIC16F628A enviar um sinal pelo RF 433,92mhz (esses vendidos no mercadolivre) e receber em um PIC12F683 e receptor, porém não obtive sucesso. Não utilizo oscilador externo, utilizo um regulador 7805 nos pics+módulos (um por circuito) e gravador icsp. Estou utilizando o MikroC PRO v4.60 e a biblioteca MANCHESTER e BUTTON, pois eu achei que seria fácil de desenvolver. Código do Transmissor: //Conexão do módulo de transmissão (Manchester) sbit MANRXPIN at RA0_bit; sbit MANRXPIN_Direction at TRISA0_bit; sbit MANTXPIN at RA4_bit; sbit MANTXPIN_Direction at TRISA4_bit; void main() { int readytosend = 0, x = 0; // inicializa as variáveis TRISA = 0x00; // define saidas e entradas TRISB = 0xFF; PORTA.B2 = 0; Man_Send_Init(); // inicializa a transmisão while (1) { // loop infinito readytosend = 0; // flag de controle de botão do { if (Button(&PORTB, 5, 1, 0)) { // verifica se o botão esta pressionado (B5) x = 0x01; // variável x recebe o valor do botão readytosend = 1; // flag de controle recebe o valor 1 para sair da rotina } if (Button(&PORTB, 4, 1, 0)) { // verifica se o botão esta pressionado (B4) x = 0x02; // variável x recebe o valor do botão readytosend = 1; // flag de controle recebe o valor 1 para sair da rotina } } while(readytosend == 0); // continua se o flag for diferente de 0 PORTA.B2 = 1; // Acende LED Man_Send(0x0B); // Envia byte de inicio Delay_ms(100); // Aguarda 100ms Man_Send(x); // Envia X Delay_ms(90); // Aguarda 90ms Man_Send(0x0E); // Envia byte de final Delay_ms(1000); // Aguarda 100ms PORTA.B2 = 0; // Apaga LED } } Código do Receptor: // Manchester module connections sbit MANRXPIN at GP0_bit; sbit MANRXPIN_Direction at GP0_bit; sbit MANTXPIN at GP3_bit; sbit MANTXPIN_Direction at GP3_bit; // End Manchester module connections char error, ErrorCount, temp; void main() { ErrorCount = 0; // limpa variavel contadora de erros TRISIO= 0x01; // define entradas e saidas Man_Receive_Init(); // Initialize Recepção while (1) { // Loop infinito while (1) { // Loop infinito temp = Man_Receive(&error); // Tenta receber o byte if (temp == 0x0B) // Byte de inicio foi recebido? break; // Quebra o laço infinito if (error) // Ocorreu erro? break; // Quebra o laço infinito } do { temp = Man_Receive(&error); // Tenta receber o byte if (error) { // Ocorreu erro? ErrorCount++; // Incrementa contador de erros if (ErrorCount > 20) { // Errou mais de 20 vezes? temp = Man_Synchro(); // Tenta sincronizar novamente //Man_Receive_Init(); // ou reinicia novamente o recebimento ErrorCount = 0; // Limpra o contador de erros } } else { // Não ocorreu erros... if (temp != 0x0E) // Se um byte diferente do byte de fim de transmissão while (1){ if (temp == 0x01){ // Recebeu 0x01? GPIO.B1 = 0; // limpa GP1 break; // quebra o loop infinito } if (temp == 2){ // Recebeu 0x02? GPIO.B1=1; // seta GP1 break; // quebra o loop infinito } } } Delay_ms(25); } while (temp != 0x0E) ; // Sai do looop se receber byte de fim de transmissão } } Postarei daqui a pouco porque esqueci a cabo do iPhone no trabalho. Circuito do Transmissor: Circuito do Receptor: Esquema eletrônico do Transmissor: Esquema eletrônico de Receptor: Eu acho que o problema esta no código ou no mikroC porque eu observei que quando eu aperto o botão para comunicar o led não acende ou fica aceso fraco como se fosse PWM oscilando 30% e 50%, aguardo a ajuda de todos. Obrigado.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...