Emulação de dispositivos de 1 fio

10

O que eu quero fazer é tornar um ATTiny IC um escravo no barramento de 1 fio, com seu próprio S / N e lista de comandos para suas funções específicas.

O que eu quero saber é se posso usar a biblioteca de um fio do site do arduino para enviar dados como escravo.

Por exemplo, você pode ter um escravo em uma sala com vários tipos de sensores que reportariam ao mestre as informações solicitadas ou o mestre pode pedir para controlar algo como persianas.

Pergunta Eu precisaria monitorar a linha de ônibus e responder a uma solicitação do mestre e também levar em consideração a maneira como um sensor normal enviaria dados? Em que frequência devo executar o escravo para obter a melhor funcionalidade?

Não usarei energia parasita, como nota.

RSM
fonte
@ Gerben - eu tinha encontrado isso antes em uma pesquisa. Deslizou através dele. Mas fiquei preocupado porque houve alguns erros, embora resolvidos, não conheço a confiabilidade. Também os projetos de busca de inimigos usando escravos personalizados não pareciam algo comum, portanto, a pergunta acima.
RSM
Parece dizer que a biblioteca suporta isso. Aqui está uma biblioteca especificamente para ela, eu acho. A velocidade parece estar em torno de 15kbps. Eu acho que a velocidade da CPU realmente não importa, mas isso depende da biblioteca. Se não for alimentado por bateria, basta executá-lo em 8mhz ou 16mhz e deve estar tudo bem.
Gerben
@Gerben Vou testar a biblioteca para ver como ela funciona. Uma coisa que ainda não entendo é por que é tão incomum que algumas coisas não usem o escravo de um fio?
RSM
@RSM Você deve verificar esta biblioteca github.com/MarkusLange/OneWireSlave
Ryu_hayabusa

Respostas:

3

Até onde eu sei, a biblioteca de 1 fio que você vinculou na sua pergunta permite apenas agir como mestre, não como escravo.

Acabei de lançar uma biblioteca para transformar uma placa Arduino em uma escrava de 1 fio, aqui: https://github.com/neuoy/OneWireArduinoSlave (editar: movido para aqui https://gitea.youb.fr/youen/OneWireArduinoSlave ) Eu o uso no meu sistema de automação residencial personalizado e funciona perfeitamente na minha configuração (o mestre de 1 fio, um DS9490R, está conectado a um laptop via USB e também fornece energia ao Arduino, que é um Arduino Uno). A biblioteca lida com detalhes de baixo nível: match rom, byte send and receive (o que é realmente muito difícil de acertar, principalmente impossível sem um analisador lógico). O resto é com você.

É totalmente implementado com interrupções, todas as comunicações são executadas em segundo plano, você pode executar outro código como de costume, em paralelo, e é notificado por retornos de chamada quando bytes são recebidos, etc. O envio de bytes ao mestre também é assíncrono.

Eu também sei que pelo menos uma outra biblioteca existe, https://github.com/MarkusLange/OneWireSlave , como comentado acima por Ryu_hayabusa. Não funcionou para mim (não sei se é por causa da minha configuração de hardware ou por outro motivo), mas definitivamente funciona para outras pessoas, portanto vale a pena tentar. Parece que esta biblioteca não foi implementada com interrupções; portanto, seu programa está bloqueado enquanto aguarda a atividade principal (o que é perfeitamente aceitável em muitos cenários).

youen
fonte
O repositório parece ter se mudou para gitea.youb.fr/youen/OneWireArduinoSlave
Jonas Berlim
11
@JonasBerlin De fato, mudei o repositório (apenas editei a resposta para refletir isso). Deixo o link antigo como um backup, apenas por precaução, e como referência para encontrar garfos de outras pessoas no GitHub.
youen
Talvez os problemas devam ser copiados?
Jonas Berlim