Olá pessoal, estou com um projeto em mente, teoricamente funciona, vou soltar a ideia...

Como o titulo sugere o projeto consiste em fazer um tipo de "radar" tentando calcular a distância em que um Radio transmissor está de outro, pela teoria é possível calcular a distância de um radio transmissor para um radio receptor em função da potência do sinal recebido na antena, obvio sabendo a potência do sinal da antena emissora.

Pretendo utilizar o modulo conhecido NRF24L01+pa+lna, e a biblioteca RadioHead, a questão está em descobrir como medir a potência do sinal (db,dbm ou dbi) que está chegando no transmissor.

Futuramente a evolução desse projeto é fazer uma triangulação e identificar exatamente o local físico em que um determinado radio se encontra!.

Alguma, sugestão inicial?

Grato, pessoal 

Exibições: 7345

Responder esta

Respostas a este tópico

Olá Antoneli,

   Legal você ter trabalhado com a Radiohead,  eu nunca consegui até hoje sequer baixar os arquivos dela pra o NRF24L01,  a pagina dela tem um monte de links, mas não achei nenhum que tenha me levado aos arquivos.

   Cara, 5.000m2 putz isso é grande!  

   Bem, o que tenho aprendido com o arduino e de forma muito especial com o NRF24L01 é que muitas vezes a questão esta no angulo que se olha a coisa. 

   Vou dar uma ideia,  eu tô querendo criar uma rede de sensores para casa,  mas percebi que tinha problemas de encavalamento no recebimento de dados, se tivesse um só receptor e vários transmissores,   dai vi uma ideia em algum lugar onde o cara colocou os transmissores, todos,   como receptores, e o que seria o receptor emite um pedido um a um a cada modulo esse recebe o pedido e ai sim ele vira transmissor e manda o dado pedido,  ainda não testei,  mas tenho certeza que funciona.

   No seu caso, eu acho que o segredo, já que se trata de uma área tão grande, é encontra a perspectiva certa para o projeto.

   Vou lhe dar uma perspectiva,  mas é somente uma, você pode ter outras, não quer dizer que seja certa ou errada, é só uma forma de ver a coisa.

   Bem,  ao inves de usar os modulos PA+LNA que podem alcançar 1.000m em campo aberto,  eu usaria os modulos de 100m para restringir áreas de ação,  e mais que isso,  se tivesse condiçoes, utilizaria o comando de potencia, pra reduzir e tornar as áreas menores ainda.

   Isso tudo para os modulos receptores distribuidos pela área dos 5.000m  cobrindo-a como um todo em uma especie de matriz.

   Dai seria simples,  os objetos móveis quando entrassem na área de um dos receptores conversaria com ele.

   Esses multiplos receptores fixos conversariam entre si, e mandariam seus dados a um ponto central,  dai tudo que rolasse chegaria a esse ponto, e com a indicação de quem foi o transmissor movel que emitiu e pra qual receptor,  como cada receptor é fixo,  eu sei então onde meu transmissor movel esta.

   Cara, eu gostaria mais de falar contigo sobre os nrf24l01 vejo que voce tem alguma experiencia,  poderia me passar o link direto pra baixar a biblioteca radiohead?  vocE exemplos de comunicacao basica?

Eu de novo cara,

   Consegui baixar e abri a biblioteca RH_NRF24 que é a Radiohead para os nrf24l01, apesar que somente olhei, não fiz testes reais com o arduino com ela.

    De cara, o que observei é que ela é bastante parecida com a RF24 do maniacbug,  tem chamadas para o modulo ficar em TX ou RX,  tem comandos de envio e recebimento,  comandos de verificação de trafefo na rede, etc.   enfim,  muito parecidas,  com sitaxes diferentes mas muito parecidas.

   Obviamente somente com estudos e testes para saber se existe vantagens de uma sobre a outra.

   No caso da RF24 por ser mais difundida, a galera no forum arduino.cc andou encontrando umas falhas,  mas todas de configuração,  segundo eles, a biblioteca coloca o modulo para dormir as vezes de forma aleatoria o que prejudica comunicações.

   Mas existem revisões dela, como a feita por um cara chamado greg coperland.

   Eu tava começando a estudar a RF24NETWORK, que é a RF24 com foco em grandes redes(segundo documentação, acima de 65.000 pontos seriam suportados por ela).

   A RF24NETWORK é mais palatavel de se trabalhar,  você não precisa setar muita coisa como canais, etc.  ela sai assumindo um monte de coisas,  dai percebo que para algumas aplicações ela é melhor.

   Já para o que quero,  apesar de que poderá ter um numero grande de pontos,  a RF24 ainda me parece mais estavel.

   Como citei,  a minha ideia é fazer uma rede com varios pontos, onde um ponto central emite um chamado e todos os outros modulos vêem, como se fosse uma simples rede ponto a ponto,  só que dentro desse chamado há uma particula que informa a um determinado modulo que é a vez dele de se transformar de receptor em transmissor e transmitir os dados que tenha nele.

  Dessa forma usando somente lógica, dá pra fazer uma rede incrivelmente estavel e facil de dar manutenção, acredito eu.

Opá, tudo bem!

Seguinte a biblioteca radiohead para os módulos NRF24 ela não está tão evoluída.

O que eu fiz, com base na NF22 que já está bem avançada na biblioteca, e fiz alterações incorporando o driver dda NRF24, então eu acabei montando uma rede Mesh com NRF24.

Qual a vantagem, o meu projeto utiliza muitos Radios, cada radio conectado a um Arduino, e cada arduino possui um endereço na rede. A biblioteca trata de enviar a mensagem ao endereço correto eu não preciso me preocupar com isso.

E claro utilizando o conceito da rede Mesh, quando a mensagem é enviada para rede, ela parte de um Arduino qualquer*** e envia para o mais próximo, se a mensagem nao for pra ele então esse envia para o outro mais próximo, até chegar no destino, dessa forma se cria um roteamento automático que é utilizado para as mensagens.  Se você alterar a posição física de um determinado arduino, então o roteamento é reorganizado.

***A maioria das biblioteca que tem por ai para NRF24, utiliza-se do conceito Client Server, para o meu caso eu fiz outra alteração na biblioteca para funcionar sem Server, pois eu não posso depender de um único arduino. Então na minha situação todos são client e Server ao mesmo tempo. A lógica que montei é inteligente o suficiente para o arduino saber quando se comportar como client ou como Server.

 

O Mais importante de tudo, se o nó destino estiver muito longe, basta eu incluir um nó (inutil) no meio do caminho, a mensagem chegará ao no destino.

Inútil porque esse nó, não necessariamente precisa fazer algo, mas tem que estar com a biblioteca para poder retransmitir a mensagem.

Outra coisa, todo o tratamento de empacotamento, pilha, retransmissão, controle de msg já recebidas,etc.. já está no cabeçalho e a biblioteca efetua esse controle. 

Quanto ao tamanho da rede, talvez a radioHead possa ser um problema pra vc, pois a var que recebe o endereço é uint8_t. (255 radios conversando no mesmo canal e tunelamento, se variar um dos dois o canal e ou o tunelamento ai obvio aumenta mais 255 para cada variação!)

Não cheguei a verificar isso, mas acho que da pra mudar esse tamanho, obviamente impacta diretamente no tamanho do cabeçalho! 

Quanto a NRF24Network que vc falou, ela utiliza protocolo IP né?

Antonelli, alguns colegas já citaram em um outro tópico a vontade de localizar um transmissor usando a rede WIFI. Lembrando que os roteadores conseguem determinar a potência do sinal das redes proximas, acho que é possível fazer algumas medidas que não serão muito precisas, mas o ajudarão na localização. 

http://labdegaragem.com/forum/topics/gps-caseiro

Imagine usando quatro roteadores para rastrear um laptop com WIFI. Acho que isso possa ser possível. 

Antoneli,

    Cara, adorei você kkk.

    Essa semana eu tô sem pegar em nada eletrônico, a empresa que trabalho tá de greve e tô aproveitando pra dá uma de carpinteiro, pedreiro, eletricista etc. em casa kkk.

    Porem, se você viu alguns dos meus ultimos topicos, viu que falei que parei quase tudo pra me dedicar ao estudo dos NRF24L01.

    Achei fodissimo você ter de uma certa forma criado uma uma biblioteca, afinal juntar 2 coisa que gera uma terceira é criação.

    Adoraria ter acesso ao seu trabalho, se você achar que pode compartilhar com explicação de como funciona eu te agradeceria.

    Bem, eu tô no momento trabalhando na parte de hardware para apoio ao NRF24L01,  o lance é que esse modulo trabalha em 3.3v e o arduino em 5v,  dai se você desejar utilizar com baterias vai ter que usar reguladores que aumentam o consumo,  Parti pra o uso do Arduino Pro mini 3.3v e rolou uns testes legais,  mas como gosto de criar minhas proprias placas,  estou desenvolvendo uma versão do bootloader do arduino que permitira fazer o atmega328 DIP rodar em 3.3v com apoio de um cristal externo de 8Mhz.

   Não encontrei nada assim na net, dai tive que criar, o maniacbug criador da RF24 e da RF24NETWORK tentou criar um modulo harwares desses e até disponibilizou no site dele,  mas o dele não funciona,  encontrei modelos do chamado arduino minimo, que trabalha em 3.3v mas usar clock interno, resultado,  quando você pluga os nrf24l01 devido a um problema de clock ele passam a não ser ver.

   Já na versão que criei tá rolando tudo beleza, mas tá em testes.

   Acredito que para o que você pretende criar, você vai precisar de algo assim.

   Sobre a RF24NETWORK  apesar do nome network,  NÃO ela não trabalha com IP,  quem trabalha com IP é a biblioteca RF24ETHERNET que faz os nrf24l01 acessarem redes wifi.

    A menos que eu esteja enganado,  visto que apesar de já ter testado e adorado a rf24network,  ela faz exatamente o que você disse que sua versão alterada da radiohead faz.

   Ela é uma biblioteca com foco em redes, sua utilização é bem simplificada,  dá uma olhada nesse link:

https://maniacbug.wordpress.com/2012/03/30/rf24network/

Weider

Vou dar uma olhada nessa biblioteca tmb.

José

Valeu a resposta, vou ler o tópico....

José olhei o tópico que vc falou...

Com base no que estava sendo discutido lá, saí buscando informações; e a funcionalidade que eu estava procurando no módulo NRF24l01 era a tal de RSSI, mas... Esse módulo não tem essa funcionalidade, em contrapartida possui o RPD, busquei na folha de dados do módulo e entendi que a informação que esse registrador retorna para RPD é binaria ou seja 0 para potência abaixo de -64dbm ou 1 superior.

Então conclui que o máximo que eu posso chegar é identificar se um determinado dispositivo com esse módulo esta dentro de uma área de cobertura de -64dbm!

Como mencionei anteriormente, preciso rastrear uma área relativamente grande 5000m2, então eu teria que espalhar muitos desses módulos em pontos estratégicos para um rastreio efetivo. 

E mesmo assim não sei quanto que -64dbm representa em metros teria que ser pouco 1m por exemplo, para funcionar bem embora com custo muito elevado, pois teria que incorporar a dica do Weider e montar basicamente uma matriz de NRF24l01.

 

Antonelli, só fazendo testes. 

Acho que é o unico meio de verificar se essa é a solução mais adequada.

Olá mestre, estou lendo exaustivamente os posts do mestre Weider, Mestre José Gustavo, Mestre Bubulindo e outros, fico admirado com o foco e dedicação, e a cada post que leio, cada resposta, vejo uma grande solução se concretizando, tenho ideia de usar o transceptor no estilo automação residencial, como inicio e para aprendizado, usando conceitos ponto a ponto e mesh, bom pelo que identifiquei até o momento, há problemas de engenharia de hardware e software, ou pelo menos limitações, nas quais estão gerando tantos posts...

até aqui tive algumas ideias para resolver N dos problemas que li, e espero que lendo mais, encontre o ideal para meu início (comunicação residencial como comentei acima), bom dentre as ideias cito uma união de informações que encontrei que são de mui excelência:

1 arduino pode ter 2 NRF24, ou seja, cada NRF possui 6 gates, logo em 1 arduino teríamos 12 gates, se cada gate é RX de um módulo NRF remoto (instalado em algum lugar), e este logicamente possui 6 gates, se voltarmos ao início, nosso Arduíno tem em 1 gate informação do NRF remoto e informação de seus 6 gates, logo nessa primeira linha de raciocínio temos uns 40 Módulos remotos comunicando com 1 dos NRF ligados ao arduino que aqui podemos considerar de central.

este resumo da a ideia de Xbee, Mesh, Ponto a Ponto etc...

como há problemas na Lib e nos NRF quanto a distância, poderíamos Usar lógica como citou o mestre Weider, o que pode ser a troca de funções problemáticas por funções mais simples executando a mesma coisa, como contras temos: código maior, aumento no tempo de comunicação etc...

quanto ao conceito de determinar a localização de um NRF  nun raio de 5mil m², talz usando:

tempo de envio e recebimento de uma mensagem (o tempo que uma mensagem leva pra ir e voltar).

pulsos de comunicação monitorando o tempo de envio e recebimento).

uso de um simples magnetômetro ja criaria uma maior precisão.

bom vou trilhando minhas pesquisas em meio aos posts, mesmo este sendo de quase 2 anos, espero que encontre algo, e ainda com pouco conhecimento, possa contribuir com a comunidade.

desde já obrigado a todos pelo conhecimento e dedicação em cada teste de seus projetos e posts.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço