Ir ao conteúdo
  • Cadastre-se

Transmissão e recepção com PIC 16F628A


fonsecaricardo

Posts recomendados

Boa noite a todos! Sou novo e logo de cara já venho pedir ajuda para quem se dispor, desde já também agradeço aos mesmo que aqui postarem, obrigado.

Bom eu tenho que fazer uma transmissão e recepção com o microcontrolador PIC 16F628A, por RF. Primeiramente já tenho um esquema, mas estou disposto a mudá-lo se assim for necessário.

Neste link segue o esquema o qual segui desde o início:

https://sites.google.com/site/kitoeag/radio-controle

Além disso, eu não sei programar, nem ao menos em C, estou me esforçando, mas o que me fez vir até aqui é o tempo, está muito reduzido para eu tentar aprender em tempo hábil, montar e apresentar este projeto, já que o mesmo é para o dia 22 de novembro.

Porém nele encontrei uma dificuldade, a programação, o código está em Basic, eu fiz exatamente tudo o que está ali, inclusive baixei os programas os quais ele menciona, porém não funcionou, mas meu professor não está querendo que eu utilize exatamente o mesmo projeto, não que ele queira me prejudicar, mas quer que eu consiga fazer o programa e faça o esquema.

Os componentes que comprei foram estes mesmo que se encontram no link, tenho os 2 PIC's, e os demais componentes.

O que eu tinha pensado era ao invés de utilizar os led's na recepção, colocar um display de 7 segmentos e assim a cada botão que eu acionasse na transmissão apareceria um determinado n° na recepção, mas estou de mente aberta para outras ideias, se assim me for repassado.

Então peço a ajuda de todos que souberem programar e que estejam dispostos a ajudar-me, ficarei muito grato.

Desde já um muito obrigado aos que aqui vierem, abraço a todos.

Ricardo Fonseca

Link para o comentário
Compartilhar em outros sites

Amigo... Com que linguagem e com qual compilador você pretendente trabalhar?? Eu programamo em C utilizando o MikroC pro para PIC's.

Programar sem tempo de aprender, não é muito pratico, mas é possível. O que você pode fazer é olhar exemplos e tentar entender o código, uma vez que você consiga entender mais ou menos o que esta se passando ali, você pode começar a "Montar o Quebra-cabeça" usando varia fragmentos de código (para fins didaticos e é claro sempre respeitando as devidas autorias)... Esses HT's da vida não tem mistério o que você manda de um lado sai do outro... Se você jogar 0101 na entrada do 12E vai sair 0101 na saida do 12D... Com 4 bits você pode escrever até 16 Numero diferente... Se você souber usar a estrutura IF do C você faz esse projetinho em 20 minutos... Se quiser fazer algo mais complexo pode usar um teclado matricial (o MikroC já possui biblioteca para teclado matricial, facilitando sua vida... hehe)..

Vê melhor ai como você pretende fazer.. Para que possamos te ajudar. OK?

Aproposito, você tem o gravador para os PIC's??

Grato Luiz Gustavo

Link para o comentário
Compartilhar em outros sites

Valeu por responder tão rapidamente...

Bom a linguagem seria C, o compilador que estamos utilizando é o PIC C Compiler, mas se me recomendarem outro melhor e mais utilizado não teria problema, já que como falei não sei programar quase nada.

Sim possuo o gravador, eu mesmo o confeccionei e estou até tendo que fazer um vídeo mostrando como foi...

O que pretendo fazer é mais ou menos o que está no link o qual anexei, só que ao invés de na recepção acender leds, pretendo colocar um display de 7 segmentos e assim, ao apertar o botão do pino RB0, por exemplo, lá na recepção no display aparecer o n° 0 por exemplo. Seria basicamente isso. Seriam com dois PICs que pretendo fazer. Mas sem utilizar também as chaves de endereço que ele utilizou, já que elas não teriam assim tanta utilidade nesse meu projeto que pretendo.

Tudo por RF, como também mencionei.

Eu tento entender, mas acho que como estou numa pressão grande, já que se eu não conseguir fazer o projeto, muito provavelmente eu rode de semestre e assim não me formaria. Então tá complicado mesmo.

Bom seria isso, valeu!

Aguardo mais respostas se possível, abraço.

Link para o comentário
Compartilhar em outros sites

Olha........ A cada dia a coisa fica mais feia ...

Vou te dar uma ideia :

Já que o seu professor nāo ensinou como programar, porque voce não denuncia ele no MEC ? Ou na própria escola !

Ou será que ele ensinou e voce nunca se interessou ?

Não tem como fazer um projeto como esse sem saber programar.

Hoje é dia 10, e voce pretende aprender a programar em C e fazer um projeto tudo novo, em 12 dias ???????

Olha, sei que é ruim voce ler o que eu vou escrever, mas espero que ninguém lhe ajude, pois voce merece mesmo perder o semestre.

Se quiser que alguém o ajude, faça por merecer, pelo menos coloque o SEU esquema eletrônico, e descreva exatamente o que que voce quer que o programa faça.

Estamos aqui para ajudar a quem mereçer , a quem quer mesmo aprender eletronica de verdade, e não ajudar a passar de ano a quem não está nem aí com o seu próprio futuro.

Paulo

Link para o comentário
Compartilhar em outros sites

fonsecaricardo... O PIC C compiler lhe da muitas mordomias (não precisa configurar o tris, não precisa conhecer profundamente o PIC com o qual esta trabalhando, etc), já o MikroC tem as vantagens no seu Acervo de bibliotecas, é mais simples para configurar os Fuses, não precisa declarar bibliotecas a serem usadas, etc... Enfim, compilador você deve escolher o que você se adequar mais.

Se você for usar os CI's HT fica tudo muito fácil... hehe..... Até quantos números você pretende trabalhar?? Vai usar uma tecla que incrementa o numero ou vai usar uma tecla para cada numero??

Link para o comentário
Compartilhar em outros sites

aphawk

Cara acho que antes de falares o que pensas ou o que achas, deves pelo ao menos saber o que se passa.

Estou fazendo curso Técnico em Telecomunicações, o qual na grade curricular do curso no 1° semestre tive uma disciplina, Lógica de Programação, porém nela apenas vi programação em portugol e muito superficialmente, na época a então professora, que hoje não está mais no curso, estava por sair e ministrou a disciplina assim...

Não teria o porque de denunciar este meu professor no MEC, a disciplina que ele ministra é Microcontroladores, devido a como é organizada a grade da disciplina não é visto programação.

Agora se queres me julgar por eu não ter tido a oportunidade de ter um ensino devido, tranquilo, eu vim super de boa aqui, se achas que tenho que perder o semestre, acho que tu não sabes o que falas, mas tudo bem cara é tua opinião e a respeito.

Em nenhum momento procurei ofender ninguém ao vim pedir ajuda, meu propósito era só alguém me mostrar de alguma maneira resolver este problema, se tu não estás disposto, tudo bem também.

Quanto ao esquema que pretendo utilizar no link o qual anexei no início da minha primeira postagem mostra, é só rola o mouse um pouco abaixo que irás ver, como já falei no primeiro e no segundo post, pretendo com 1 PIC transmitir através de botões para o outro PIC receber e então mostrar no display de 7 segmentos determinado n°.

É bem simples ao que imagino e ao ver do meu conhecimento.

Só acho errado tu vir aqui e fazer julgamento do que tu acha certo ou errado, se não estavas disposto a vir acrescentar algo, ou simplesmente tu achou errado da minha parte, poderias ter guardado para ti tua opinião, já que ela foi formada sem argumentos bem fundamentados e sem saber o que realmente se passa.

Mas mesmo assim te agradeço, porque me senti mais motivado para conseguir, e tenho certeza eu vou, e irei conseguir me formar neste semestre.

Abraço rapaz.

fonsecaricardo... O PIC C compiler lhe da muitas mordomias (não precisa configurar o tris, não precisa conhecer profundamente o PIC com o qual esta trabalhando, etc), já o MikroC tem as vantagens no seu Acervo de bibliotecas, é mais simples para configurar os Fuses, não precisa declarar bibliotecas a serem usadas, etc... Enfim, compilador você deve escolher o que você se adequar mais.

Se você for usar os CI's HT fica tudo muito fácil... hehe..... Até quantos números você pretende trabalhar?? Vai usar uma tecla que incrementa o numero ou vai usar uma tecla para cada numero??

Pois é, estes CI's, eu percebi que são utilizados para não haver interferências, aí como não apareceram no esquema mais abaixo, não achei que fossem necessários neste projeto. Talvez o que me impeça o uso deles é o tempo, já que teria que encomendar pela internet, aqui em minha cidade a única eletrônica que tem boa, não tinha esses módulos e o microcontrolador estava em falta.

Se estás dizendo que este MikroC é melhor não vejo porque não tentar...

Pretendo utilizar de 0 a 9, sendo assim seriam necessárias ainda duas saídas do PORT.A. Seria uma tecla para cada n°, não sei em termos de programação, mas acho que seria até mais legal o projeto :)

Obrigado até agora pela ajuda amigo, abraço.

Link para o comentário
Compartilhar em outros sites

Fonsecaricardo,

voce è apenas mais um que todos os anos chega nesta época do ano desesperado pedindo ajuda. É o tal do TCC , que deixa todos preocupados.

Agora, não se faça de ofendido, pois voce teve a chance de aprender, pois está indo à escola, e deveria aprender conforme o seu professor te ensina a cada dia.

Já que voce prefere assim, então vamos desse teu jeito.

como voce quer fazer um projeto, sem saber alguma linguagem de programação de microcontroladores ?

O programa que você viu está em Basic, que é a linguagem mais simples de se programar. Se voce já baixou toda a linguagem, montou e não conseguiu nem ao menos fazer funcionar como está escrito no artigo, seu problema não é a programação, é a sua montagem.

E se a grade da disciplina não inclui programaçāo, como é que exigem um projeto desse dos alunos ?????????????? Oras, voce quer que alguém acredite nisso ?

Já que voce tomou a liberdade de me chamar de cara, vou lhe retribuir.

Cara, eu ajudo muita gente aqui no Fórum. Nunca me recusei a ajudar quem realmente precisa.

Tem mais alguns colegas que costumam ajudar, e eles podem te ajudar , pois linguagem C é com eles, não comigo.

Faça o seguinte :

Tente fazer o programa em C, e poste ele aqui, para que o pessoal veja aonde te ajudar.

Aqui ninguém vai fazer o programa para voce, isso é a sua tarefa e é o objetivo de seu professor te passar esse trabalho.

O que voce precisar saber sobre o hardware , o funcionamento exato do transmissor/receptor, o sistema de encoder/decoder dos HTs, tudo podemos lhe explicar e ajudar, mas lembre-se : É O SEU TRABALHO.

Eu tenho aqui comigo os dois módulos de transmissāo / recepçâo, sem uso, se voce não achar eles aí eu posso te enviar. Mas não tenho o parzinho dos HTs.

Espero que isto tenha servido para voce se estimular, e estudar e fazer o seu trabalho.

Falou, cara ?

Paulo

Link para o comentário
Compartilhar em outros sites

Fonseca,não fique alterado,mas veja:

Além disso, eu não sei programar, nem ao menos em C, estou me esforçando, mas o que me fez vir até aqui é o tempo, está muito reduzido para eu tentar aprender em tempo hábil, montar e apresentar este projeto, já que o mesmo é para o dia 22 de novembro

Não parece algo tipo "não sei nada,não estou afim de esquentar a cabeça e só tenho o tempo de alguem me passar logo tudo pronto",não é essa a impressão que voce passou??

voce não é o primeiro,e eu acho que esquecí o que quer dizer TCC,seria Trabalho Corrido Com certesa?

Link para o comentário
Compartilhar em outros sites

fonsecaricardo...

Eu não disse que o MikroC é melhor, apenas ressaltei que cada um tem suas peculiaridades.

Este vendedor envia por e-sedex, é baratinho e chega no maximo em 2 dias (comprei com ele algumas vezes e a entrega é realmente rápida, pode confiar... hehe)... Acho que isso pode te ajudar no seu projeto:

http://produto.mercadolivre.com.br/MLB-520852212-membrana-teclado-matricial-numerico-3x4-com-adesivo-arduino-_JM

http://produto.mercadolivre.com.br/MLB-518631984-receptor-rf-315-433mhz-com-controle-marron-arduino-pic-_JM

Os códigos agente vai arrumando aos poucos (como eu disse antes, procure por exemplos e tal...)

Outra coisa: aphawk é um cara muito sábio, eu respeito muito ele como amigo e como profissional, portanto escute o que ele diz com atenção... Não se sinta intimidado, é só que o pessoal daqui não gosta muito de acomodados (O QUE NÃO É O SEU CASO), outro dia vi um tópico de um cara que copiou e colou o enunciado do exercício e ficou esperando algum resolver para ele... Isso é revoltante, pois aqui nossa politica é apenas mostrar o caminho, a pessoa trilha ele sozinha. Ninguém aqui faz o trabalho de ninguém, apenas o que ocorreu foi que você deve ter se expressado mal na sua mensagem... Então voltemos ao projeto, OK??

A) Luiz Gustavo

Link para o comentário
Compartilhar em outros sites

Obrigado pelas suas palavras, LuizGBarrio !

Mas não sou nenhum sábio, o que eu faço é tentar usar a experiência e a minha memória. Não apenas eu, muitos aqui ajudam nesse trabalho gratuíto, e creio que todos se sentem orgulhosos quando vemos que conseguimos fazer a diferença para alguém que esteja com problemas, pois esse alguém será mais um profissional de nossa área.

Mas voce também já percebeu que sempre aparecem pessoas que querem nos usar, seja na área escolar, ou na área comercial. Isso eu não aceito.

Se hoje já temos de aguentar um Ministro sem nenhum conhecimento de Engenharia dizer na TV que "nossos Engenheiros são ruins" , imagine se as pessoas que não merecem se formar por seus próprios méritos conseguirem cada vez mais se formar e entrar no mercado de trabalho ?

Enquanto os nossos estudantes acharem que sempre vão conseguir passar de ano dando uma "acoxambrada", nada vai mudar ! Sem esforço, não se aprende, certo ? O curso pode ser fraco, professores podem ser fracos, escolas podem ser ruins, mas hoje temos Internet ! Quem quer aprender, consegue !

Mas mesmo depois disso tudo que falei acima, eu pretendo ajudar, mas claro que nosso amigo Fonsecaricardo tem de fazer a parte dele ! E olha só que interessante, Basic é a minha área !

Se voce olhar o link que passei para ele, lá tem um programa prontinho em Bascom, é só passar para C e pronto ! E o professor dele pediu para ele fazer o esquema e o programa, e cadê os dois para a gente ajudar ?

Vou aguardar e ver se me surpreendo, e olha, vou ter muita satisfação se ele conseguir fazer o trabalho , mesmo com a ajuda de todos daqui do Fórum.

Paulo

Link para o comentário
Compartilhar em outros sites

Obrigado Luiz pela dica do MikroC. Quanto ao codificador e decodificador, gostaria de ter certeza se realmente seria necessário no projeto, como disse já fiz a montagem daquele circuito e não funcionou, e sim a montagem estava certa, foi verificada por meu professor, então acho que talvez fossem necessários estes CI's, mas quero ter certeza antes de realizar a compra.

Amigo acho que tens que procurar saber o que se passa... Este projeto não é um TCC, meu curso não tem TCC, é apenas o projeto da 2ª etapa do semestre nesta disciplina, nas demais disciplinas meu projetos estão adiantados, por isso que fiz referência de que se eu não conseguir fazê-lo iria rodar.

Concordo com o que tu disse sobre formar profissionais ruins, mas acho que isso não é para se discutir aqui.

Se queres ou não acreditar no que falei, vai de ti Aphawk, não és obrigado a acreditar. Mas eu sou um cara super esforçado, não sou um aluno nota 10, mas me esforço pra caramba, e não estou aqui pedindo a ninguém que façam o circuito ou código para eu, apenas que me deem um auxílio.

E prova de que estou tentando aprender a programar, foi que encontrei esta apostila

http://www.inf.ufes.br/~jacee/materiais/PIC/PIC_apostila.pdf aqui pude ter mais clareza de como funcionam as instruções.

A linguagem dos microcontroladores aprendi, mas em Assembly.

Vtrx, talvez tenha sido essa a impressão, mas não é isso que quero não, até porque como já falei, eu terei que apresentar o projeto e inclusive explicar o código, então se eu não sei quase nada de linguagem C, se alguém me passasse o código não iria me adiantar muito, já que mesmo assim não saberia explicar por completo.

Ao mesmo tempo sei que é muito complicado "aprender" linguagem C em tão pouco tempo, mas vou tentar...

Aphawk, vi o link que postasse, e realmente o projeto é praticamente igual ao que eu também postei, mas como tu citou a linguagem está em Bascom. E eu não entendi quase nada :/

Não sou um cara acomodado, apenas quero uma ajuda.

No próximo post vou postar o código que consegui fazer na semana passada, olhando um exemplo que tive que fazer. É apenas um pedaço do receptor.

Também as imagens do circuito, fiz no Proteus Professional 8, não encontrei os módulos de transmissão/ recepção, mas eles vão conectados no pino 18 de cada PIC, tanto na recepção quanto na transmissão.

Este foi o código que fiz mais ou menos, vendo um exemplo que fiz:

#include <16f628a.h>
#fuses INTRC,NOWDT,NOPROTECT,NOMCLR,NOLVP
#use delay (clock=4000000)

void main(){

while(1){
if((input(pin_b0))==1){
output_b(0b0111111);
}

if((input(pin_b1))==1){
output_b(0b0000110);
}

if((input(pin_b2))==1){
output_b(0b1011011);
}


if((input(pin_b3))==1){
output_b(0b1001111);
}

if((input(pin_b4))==1){
output_b(0b1100110);
}


if((input(pin_b5))==1){
output_b(0b1101101);
}

if((input(pin_b6))==1){
output_b(0b1111100);
}


if((input(pin_b7))==1){
output_b(0b0000111);
}


}

Os circuitos de transmissão e recepção:

image.jpg

Circuito TX

image.jpg

Circuito RX

Não encontrei os módulos no proteus então ficaram sem, mas os módulos, ambos, vão conectados ao ao pino 18 de cada PIC.

Eu ainda encontrei no site http://microcontrolandos.blogspot.com.br/ um projeto com outro PIC, mas com o mesmo propósito, tem os códigos ali.

Pensei se teria como adaptar este código para o PIC que estou utilizando?

O criador do projeto respondeu que poderia utilizar o mesmo código. mas não sei ;s

Aí o link http://microcontrolandos.blogspot.com.br/2013/10/pic-modulo-rf.html

Link para o comentário
Compartilhar em outros sites

Ok, vamos em frente.

Quanto à sua pergunta sobre usar o mesmo código, voce só precisa adaptar ele para os pinos que você vai usar, e fazer a inicialização do seu modelo de Pic de acordo. Mas vai ter de qualquer maneira de dar uma pequena alterada, para poder ler a porta do seu pic e enviar para o outro.

Primeiro, voce deve ter certeza de que as frequências de seus dois módulos são iguais... Já vî venderem o tx numa frequência e o rx em outra.

Para isso, ligue apenas os módulos, coloque uma chavinha na entrada do tx, indo para o terra, e um resistor de uns 4k7 indo ao positivo da alimentação do módulo.

No receptor, simplesmente coloque o multímetro na saída, e então mude a chave e veja se o sinal na saída acompanha a chave.

Agora, sobre os seus esquemas postados :

No Tx, mude a posição dos resistores nas entradas :

Em cada pino do Pic, ligue o botão entre esse pino e o terra, e ligue o resistor entre o pino e o positivo da alimentaçao.

Assim, sem apertar o botão, será lido nivel 1, e quando apertar o botão será lido nivel 0.

Agora, sobre o módulo :

Use uma velocidade serial baixa, tipo uns 300 bps, para evitar problemas com a distância entre o tx e o rx.

voce pode simplesmente utilizar a comunicação serial , por exemplo, no formato 8N1 a 300 bauds. O truque é criar um tipo de sincronismo, por exemplo transmitindo o nivel 1 por 200 milisegundos, indo depois para zero por 100 milisegundos, e então fazer a transmissão serial dos bytes que te interessam.

Isso é bem simples de se fazer, e voce não vai precisar dos HTs para fazer isso.

Desta maneira, seu programa simplesmente fará o seguinte : pega os bits na entrada, e envia para o receptor, simplesmnte fazendo o tal do sincronismo, e a seguir volta para o início. Eu acho que seria muito importante voce enviar um bYte de checksum, que iria indicar no receptor que os dados foram recebidos perfeitamente.

O programa na recepção vai ficar esperando pelo sincronismo, e a seguir vai receber o seu byte de dados e o byte de cheksum, se estiver de acordo, então apresenta o dado na saída.

Creio que fazer isso é bem simples em C, veja o que voce acha disso, implemente o código do transmissor e poste aqui para o pessoal te auxiliar.

Paulo

Link para o comentário
Compartilhar em outros sites

Só quero acrescentar uma coisa.... o aphawk esta entre meu top dez de respeitados aqui hahahaha, (e se ele me permite dizer), ele tem la seus 50 e tantos anos, e se disse isto foi pautado tanto na experiencia que ele tem de vida, quanto experiência de outros caso semelhantes que apareceram aqui no fórum.

bom partindo pra ajuda

aqui esta o link para download do microC, realmente ótimo compilador!

http://www.4shared.com/rar/l_wTVn4E/PMriokgrroaCma.html

já nestes 4 links a seguir tem os datasheet's dos componentes usados, nele tem os circuitos recomendados pelo fabricante, que pelo que eu vi são iguais aos que você tem no seu link, mas fica ai os datasheet's, são os melhores documentos para pesquisas rsrsrs

http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Wireless/General/RWS-371-6_433.92MHz_ASK_RF_Receiver_Module_Data_Sheet.pdf

http://www.wenshing.com.tw/Data_Sheet/TWS-DS-3_433.92MHz_Miniaturization_Wireless_Transmitter_Module_Data_Sheet.pdf

http://www.ipic.co.jp/Pdffiles/ht12e.pdf

https://courses.cit.cornell.edu/ee476/FinalProjects/s2008/cl457_yft2/cl457_yft2/datasheets/HT12D.pdf

quando eu estava montando meu transmissor de pequenas informações, usei estes circuitos e funcionou perfeitamente! no HELP do microC tem boas dicas, e sobre muitos periféricos do pic

flowwww

Link para o comentário
Compartilhar em outros sites

Heehhe Mr. Nintendo tá querendo me deixar mais velho ainda ?????

Agora estou vendo que o fonsecaricardo está mesmo indo atrás, então vou ajudar, mas como todos sabem, não sei nada de C....

Aliás, ele postou um link de um projetinho bem simples no Microcontrolandos, o código em C que está lá foi escrito para um outro Pic, voce consegue acertar ele para o Pic que o fonsecaricardo está usando ?

Acho que com isso ele vai conseguir adaptar o programa para a necessidade dele sem ter de escrever tudo do zero....

P.s. - Mister Nintendo, pelo menos aqui acho que não vão te responder como Sagan kkkkkk,

Paulo

Link para o comentário
Compartilhar em outros sites

Estive fora agora a noite, mas li todos os comentários, e agradeço a todos pelas postagens, que com certeza irão me ajudar e muito.

Só para esclarecer, em nenhum momento quis te ofender Aphawk, eu sei que tem outras pessoas que veem aqui e ficam esperando que respondam tudo mastigadinho e elas não precisem fazer nada, inclusive acho isso errado. Tem que mostrar interesse... E acho que talvez o modo como foi meu primeiro post tenha passado essa impressão, mas ao mesmo tempo também não lhe dava o direito de formar uma opinião sem nem me conhecer, respeito, mas tu acabou vendo que estavas errado, sou um cara esforçado, e gosto de aprender, não quero as coisas nas mãos.

Mas é isso, não vou ficar lavando roupa suja, muito obrigado pela ajuda de todos. Hoje infelizmente não vou ter como estudar todas as opiniões postadas, mas amanhã ao voltar da aula com certeza.

E então posto aqui os resultados.

Valeu a todos e boa noite!

Link para o comentário
Compartilhar em outros sites

a unica coisa a se mudar é a configuração, tira "ADCON1" e colocar "CMCON=0x07", como o resto é biblioteca pura, o compilador próprio se encarrega. mas eu particularmente ficaria com o circuito do HT, acho em todos aspectos mais simples, fácil de dar certo e encontrar erros

PS

P.s. - Mister Nintendo, pelo menos aqui acho que não vão te responder como Sagan kkkkkk,

kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk ri demais nesta parte!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

flowwww

Link para o comentário
Compartilhar em outros sites

fonsecaricardo,

Do jeito que voce escreveu a primeira mensagem, foi o que pareceu, lembre-se de que a primeira impressão é a que fica.

Mas já ví que voce correu atrás, e é isso que me motiva a ajudar. Sei que você não quis me ofender, e eu quando vejo indício de que o solicitante não quer pegar no pesado, sempre respondo duro mesmo, para o cara perceber que aqui não tem otários para fazer o trabalho dele. Se o solicitante realmente está de boa fé, ele vai insistir, e é o que você fez, então, estamos tranquilos, vamos ver se fazemos logo esse seu projeto.

Veja que o Mr Nintendo já colocou as únicas alterações, então acho que agora depende de você compilar e testar nos dois Pics. E depois adaptar o seu programa.

Mr. Nintendo,

Usando a comunicação serial, sem nenhum hardware extra para se preocupar, tem de funcionar. O pessoal usa esses Hts para poder escolher endereços individuais apenas, para evitar que um controle remoto acione vários portões.... aqui não é esse caso, e se o cara conseguiu fazer funcionar apenas enviando via serial, nós também temos, certo Sagan ? ( kkkkkkkkkkkkkk eu não consigo esquecer isso.... nem sei como você deixou passar em branco também ! )

Paulo

Link para o comentário
Compartilhar em outros sites

E aí pessoal, vi o Aphawk falando em fazer a partir de comunicação serial, mas não pode ser, a comunicação tem de ser através de radio frequência, por isso os módulos.

Mister Nintendo, fiz a alteração naquele código, como falastes, mas não deu, tinham erros e não compilou, utilizei o MicroC.

Também vi os links que postastes, mas eu tenho de utilizar o PIC 16F628A, não poderia ser aquele esquema então.

O projeto se baseia em transmissão e recepção com este microcontrolador pic, e em RF.

Aqui nestes links estão os códigos que fiz a partir da alteração que falastes:

http://www.4shared.com/file/Pj_wfWee/rx_1.html

http://www.4shared.com/file/Aev5Kz9B/tx_1.html

se puderes dar uma revisada, não fui eu quem fiz o código, apenas copiei daquele link do microcontrolandos e coloquei a biblioteca uart nos códigos da transmissão e da recepção, com a alteração que falastes.

Obrigado pela ajuda de todos, e este projeto vai sair com certeza, valeu!

Link para o comentário
Compartilhar em outros sites

Poste o código aqui amigo... Fica mais fácil para analisarmos e lhe responder melhor... Só não se esqueça de colocar entre a TAG CODE antes postar (simbolo do jogo da velha ai na barra de configuração dos Comentários)....

Link para o comentário
Compartilhar em outros sites

Opa Fonsecaricardo, voce está enganado....

Não muda nada, você vai fazer a comunicação serial via RF, pois o protocolo desses seu "modem" de RF é AFSK, dá certinho, só muda o meio físico, em vez de ser um cabo, é um sinal de rádio.

Se voce pensar bem, existe também a comunicação padrão SPI, que também é serial....

Existem vários periféricos Bluetooth que fazem EXATAMENTE a mesma coisa !

E se voce olhar o programa que você mesmo indicou, logo no início , eles abrem um buffer de comunicação serial a 1200 Bauds ! Eles também fazem comunicação serial, exatamente como eu falei acima, só que eu faria a 300 bauds mesmo, para ter menos problemas com a distância....

Quanto ao código, você mesmo tem de alterar os pinos aonde serão ligados os seus interruptores, e os pinos de tx / rx que o seu projeto utiliza, pois nesse projeto eles utilizam os pinos de comunicação serial nativo do Pic, e você deve também usar o mesmo pino no seu hardware.

E por favor, poste os códigos dentro de sua mensagem.... fica bem mais fácil de olharmos.... eu por exemplo uso um Ipad , e dá uma encheção de saco fazer download e abrir .....

Paulo

Link para o comentário
Compartilhar em outros sites

Código do transmissor:

#include <16F628A.h>
#device *=16
#fuses HS, NOWDT, NOLVP, NOBROWNOUT, NOPROTECT, PUT
#use delay(clock=20000000)
#use rs232(baud=1200, xmit=PIN_B2, rcv=PIN_B1, stream=PC)




void RF_Init()
{
UART1_Init (1200);
Delay_ms(100);
}
void RF_Receive_Init()
{
RCIE_bit = 1;
GIE_Bit = 1;
PEIE_Bit = 1;
}
void RF_Send(char comando, char valor)
{
char checksum = ~(char)(comando + valor);
UART1_Write(0xFF); //Start
delay_ms(10);
UART1_Write(comando); //Comando
delay_ms(10);
UART1_Write(valor); //Valor
delay_ms(10);
UART1_Write(checksum); //Checksum
delay_ms(10);
}
char started, count;
void RF_Read(char *Cmd, char *Val, char *Ok)
{
char buffer;
char checksum_byte;
*Ok = 0;
if(PIR1.RCIF)
{
buffer = Uart1_Read();
if(started)
{
count++;
if(count == 1)
{
*Cmd = buffer;
}
if(count == 2)
{
*Val = buffer;
}
if(count == 3)
{
checksum_byte = buffer;
started = 0;
if(checksum_byte == ~(char)(*Cmd + *Val))
{
*Ok = 1;
}
}
}
else
{
if(buffer == 0xFF)
{
started = 1;
count = 0;
}
}
}
}


void main()
{
CMCON=0x07 = 0x0F; //Desativa as portas analógicas(PORTA e PORTB)
TRISB = 3;
RF_Init();
while(1)
{
if(PORTB.F0 == 1)
{
RF_Send( 'A', 1 );
}
else if(PORTB.F1 == 1)
{
RF_Send( 'A', 0 );
}
}
}

Código do receptor:

#include <16F628A.h>
#device *=16
#fuses HS, NOWDT, NOLVP, NOBROWNOUT, NOPROTECT, PUT
#use delay(clock=20000000)
#use rs232(baud=1200, xmit=PIN_B2, rcv=PIN_B1, stream=PC)



void RF_Init()
{
UART1_Init(1200);
Delay_ms(100);
}
void RF_Receive_Init()
{
RCIE_bit = 1;
GIE_Bit = 1;
PEIE_Bit = 1;
}
void RF_Send(char comando, char valor)
{
char checksum = ~(char)(comando + valor);
UART1_Write(0xFF); //Start
delay_ms(10);
UART1_Write(comando); //Comando
delay_ms(10);
UART1_Write(valor); //Valor
delay_ms(10);
UART1_Write(checksum); //Checksum
delay_ms(10);
}
char started, count;
void RF_Read(char *Cmd, char *Val, char *Ok)
{
char buffer;
char checksum_byte;
*Ok = 0;
if(PIR1.RCIF)
{
buffer = Uart1_Read();
if(started)
{
count++;
if(count == 1)
{
*Cmd = buffer;
}
if(count == 2)
{
*Val = buffer;
}
if(count == 3)
{
checksum_byte = buffer;
started = 0;
if(checksum_byte == ~(char)(*Cmd + *Val))
{
*Ok = 1;
}
}
}
else
{
if(buffer == 0xFF)
{
started = 1;
count = 0;
}
}
}
}

char comando, valor, ok;


void Interrupt()
{
RF_Read(&comando, &valor, &ok);
if(ok == 1)
{
if(comando == 'A')
{
PORTB = valor;
}
}
}
void main()
{
CMCON=0x07 = 0x0F; //Desativa as portas analógicas(PORTA e PORTB)
RF_Init();
RF_Receive_Init();
TRISB = 0;
PORTB = 0;
while(1);
}

Código do receptor:

#include <16F628A.h>
#device *=16
#fuses HS, NOWDT, NOLVP, NOBROWNOUT, NOPROTECT, PUT
#use delay(clock=20000000)
#use rs232(baud=1200, xmit=PIN_B2, rcv=PIN_B1, stream=PC)



void RF_Init()
{
UART1_Init(1200);
Delay_ms(100);
}
void RF_Receive_Init()
{
RCIE_bit = 1;
GIE_Bit = 1;
PEIE_Bit = 1;
}
void RF_Send(char comando, char valor)
{
char checksum = ~(char)(comando + valor);
UART1_Write(0xFF); //Start
delay_ms(10);
UART1_Write(comando); //Comando
delay_ms(10);
UART1_Write(valor); //Valor
delay_ms(10);
UART1_Write(checksum); //Checksum
delay_ms(10);
}
char started, count;
void RF_Read(char *Cmd, char *Val, char *Ok)
{
char buffer;
char checksum_byte;
*Ok = 0;
if(PIR1.RCIF)
{
buffer = Uart1_Read();
if(started)
{
count++;
if(count == 1)
{
*Cmd = buffer;
}
if(count == 2)
{
*Val = buffer;
}
if(count == 3)
{
checksum_byte = buffer;
started = 0;
if(checksum_byte == ~(char)(*Cmd + *Val))
{
*Ok = 1;
}
}
}
else
{
if(buffer == 0xFF)
{
started = 1;
count = 0;
}
}
}
}

char comando, valor, ok;


void Interrupt()
{
RF_Read(&comando, &valor, &ok);
if(ok == 1)
{
if(comando == 'A')
{
PORTB = valor;
}
}
}
void main()
{
CMCON=0x07 = 0x0F; //Desativa as portas analógicas(PORTA e PORTB)
RF_Init();
RF_Receive_Init();
TRISB = 0;
PORTB = 0;
while(1);
}

Link para o comentário
Compartilhar em outros sites

Código do transmissor:

#include <16F628A.h>

#device *=16

#fuses HS, NOWDT, NOLVP, NOBROWNOUT, NOPROTECT, PUT

#use delay(clock=20000000)

#use rs232(baud=1200, xmit=PIN_B2, rcv=PIN_B1, stream=PC)

void RF_Init()

{

UART1_Init (1200);

Delay_ms(100);

}

}

Heheheh tá vendo como é comunicação serial igualzinha ao que falei ???? Olha o RS232(...) e abaixo o UART1_INIT(1200) .....

Paulo

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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...