Émulation de dispositif (s) à 1 fil

10

Ce que je veux faire, c'est faire d'un ATTiny IC devenir un esclave sur le bus 1 fil, avec son propre S / N et sa liste de commandes pour ses fonctions spécifiques.

Ce que je veux savoir, c'est si je peux utiliser la bibliothèque à un fil du site Arduino pour envoyer des données en tant qu'esclave.

Par exemple, vous pouvez avoir un esclave dans une pièce avec plusieurs types de capteurs qui feraient rapport au maître sur les informations demandées, ou le maître peut lui dire de contrôler quelque chose comme des stores.

Question Dois-je surveiller la ligne de bus et répondre à une demande du maître et prendre également en compte la manière dont un capteur normal enverrait des données? À quelle fréquence dois-je exécuter l'esclave pour obtenir les meilleures fonctionnalités?

Je n'utiliserai pas de pouvoir parasite, comme note.

RSM
la source
@ Gerben - Je l'avais déjà trouvé lors d'une recherche. Le parcourut. Mais j'étais inquiet car il y avait des erreurs, bien que résolues, je ne connais pas la fiabilité. De plus, la recherche de conceptions d'ennemis utilisant des esclaves personnalisés ne semblait pas être une chose courante, d'où la question ci-dessus.
RSM
Il semble que la bibliothèque le supporte. Voici une bibliothèque spécialement pour ça je pense. La vitesse semble être d'environ 15 kbps. Je pense que la vitesse du processeur n'a pas vraiment d'importance, mais cela dépend de la bibliothèque. S'il n'est pas alimenté par batterie, il suffit de le faire fonctionner à 8 MHz ou 16 MHz, et ça devrait aller.
Gerben
@Gerben Je vais tester la bibliothèque pour voir comment elle fonctionne. Une chose que je ne comprends toujours pas, c'est pourquoi il est si rare que certaines choses n'utilisent pas l'esclave à un fil?
RSM
@RSM Vous devriez vérifier cette bibliothèque github.com/MarkusLange/OneWireSlave
Ryu_hayabusa

Réponses:

3

Pour autant que je sache, la bibliothèque 1-wire que vous avez liée dans votre question ne permet d'agir qu'en tant que maître, pas en tant qu'esclave.

Je viens de publier une bibliothèque pour transformer une carte Arduino en esclave 1 fil, ici: https://github.com/neuoy/OneWireArduinoSlave (edit: déplacé ici https://gitea.youb.fr/youen/OneWireArduinoSlave ). Je l'utilise dans mon système domotique personnalisé, et cela fonctionne parfaitement dans ma configuration (le maître à 1 fil, un DS9490R, est connecté à un ordinateur portable via USB et alimente également l'Arduino, qui est un Arduino Uno). La bibliothèque gère les détails de bas niveau: correspondance rom, envoi et réception d'octets (ce qui est en fait assez difficile à obtenir correctement, la plupart du temps impossible sans analyseur logique). Le reste dépend de toi.

Il est entièrement implémenté avec des interruptions, toutes les communications sont effectuées en arrière-plan, vous pouvez exécuter un autre code comme d'habitude, en parallèle, et être averti par des rappels lorsque des octets sont reçus, etc. L'envoi d'octets au maître est également asynchrone.

Je sais également qu'il existe au moins une autre bibliothèque, https://github.com/MarkusLange/OneWireSlave , comme indiqué ci-dessus par Ryu_hayabusa. Cela n'a pas fonctionné pour moi (je ne sais pas si c'est à cause de ma configuration matérielle ou pour une autre raison), mais cela fonctionne certainement pour les autres, donc vaut également la peine d'être essayé. Il semble que cette bibliothèque ne soit pas implémentée avec des interruptions, donc votre programme est bloqué pendant l'attente d'une activité principale (ce qui est parfaitement acceptable dans de nombreux scénarios).

youen
la source
Le référentiel semble avoir migré
Jonas Berlin
1
@JonasBerlin En effet, j'ai déplacé le référentiel (juste édité la réponse pour refléter cela). Je laisse l'ancien lien comme sauvegarde juste au cas où, et comme référence pour trouver d'autres personnes sur GitHub.
youen
Faut-il peut-être copier les problèmes?
Jonas Berlin