Meniru perangkat 1-kawat

10

Yang ingin saya lakukan adalah membuat ATTiny IC menjadi budak di bus 1-kawat, dengan S / N sendiri dan daftar perintah untuk fungsi spesifiknya.

Yang ingin saya ketahui adalah apakah saya bisa menggunakan perpustakaan satu kawat dari situs Arduino untuk mengirim data sebagai budak.

Misalnya, Anda dapat memiliki budak di satu ruangan dengan beberapa jenis sensor yang akan dilaporkan ke master pada informasi yang diminta, atau master dapat memberitahu itu untuk mengendalikan sesuatu seperti tirai.

Pertanyaan Apakah saya harus memonitor jalur bus dan menanggapi permintaan dari master dan juga mempertimbangkan cara sensor normal akan mengirim data? Berapa frekuensi saya harus menjalankan slave untuk mendapatkan fungsionalitas terbaik?

Saya tidak akan menggunakan kekuatan parasit, sebagai catatan.

RSM
sumber
@Gerben - Saya telah menemukan itu sebelumnya pada pencarian. Membacanya sepintas lalu. Tapi saya khawatir karena ada beberapa kesalahan, meskipun sudah dipecahkan, saya tidak tahu keandalannya. Juga mencari desain musuh menggunakan budak kustom tidak tampak seperti hal yang umum, maka pertanyaan di atas.
RSM
Sepertinya dikatakan perpustakaan mendukungnya. Berikut ini adalah perpustakaan khusus untuk itu saya pikir. Kecepatan sepertinya sekitar 15kbps. Saya pikir kecepatan CPU tidak terlalu penting, tetapi itu tergantung pada perpustakaan. Jika tidak bertenaga baterai, jalankan saja pada 8mhz atau 16mhz, dan itu akan baik-baik saja.
Gerben
@Gerben Saya akan menguji perpustakaan untuk melihat cara kerjanya. Satu hal yang masih belum saya dapatkan adalah mengapa sangat tidak umum untuk beberapa hal untuk tidak menggunakan budak satu kawat?
RSM
@RSM Anda harus memeriksa perpustakaan ini github.com/MarkusLange/OneWireSlave
Ryu_hayabusa

Jawaban:

3

Sejauh yang saya tahu, perpustakaan 1-kawat yang Anda tautkan dalam pertanyaan Anda hanya memungkinkan untuk bertindak sebagai master, bukan sebagai budak.

Saya baru saja merilis perpustakaan untuk mengubah papan Arduino menjadi budak 1-kawat, di sini: https://github.com/neuoy/OneWireArduinoSlave (sunting: pindah ke sini https://gitea.youb.fr/youen/OneWireArduinoSlave ). Saya menggunakannya di sistem otomasi rumah khusus saya, dan berfungsi dengan sempurna dalam pengaturan saya (master 1-kawat, DS9490R, terhubung ke laptop melalui USB, dan juga memberikan daya ke Arduino, yang merupakan Arduino Uno). Pustaka menangani detail tingkat rendah: match rom, byte kirim dan terima (yang sebenarnya cukup sulit untuk diperbaiki, sebagian besar tidak mungkin tanpa penganalisis logika). Sisanya terserah padamu.

Ini sepenuhnya dilaksanakan dengan interupsi, semua komunikasi dilakukan di latar belakang, Anda dapat mengeksekusi kode lain seperti biasa, secara paralel, dan diberitahu oleh panggilan balik ketika byte diterima dll. Mengirim byte ke master juga tidak sinkron.

Saya juga tahu setidaknya ada satu perpustakaan lain, https://github.com/MarkusLange/OneWireSlave , seperti yang dikomentari di atas oleh Ryu_hayabusa. Itu tidak bekerja untuk saya (tidak tahu apakah itu karena pengaturan perangkat keras saya atau karena alasan lain), tetapi pasti bekerja untuk orang lain, jadi juga patut dicoba. Tampaknya pustaka ini tidak diimplementasikan dengan interupsi, jadi program Anda diblokir sambil menunggu aktivitas master (yang sangat dapat diterima dalam banyak skenario).

kamu
sumber
Repositori tampaknya telah pindah ke gitea.youb.fr/youen/OneWireArduinoSlave
Jonas Berlin
1
@JonasBerlin Memang, saya sudah memindahkan repositori (baru mengedit jawaban untuk mencerminkan itu). Saya meninggalkan tautan lama sebagai cadangan untuk berjaga-jaga, dan sebagai referensi untuk menemukan garpu orang lain di GitHub.
youen
Haruskah masalah disalin mungkin?
Jonas Berlin