Isi kandungan:

Arduino 1-wire Generic Client / Slave Device (Sensor): 4 Langkah
Arduino 1-wire Generic Client / Slave Device (Sensor): 4 Langkah

Video: Arduino 1-wire Generic Client / Slave Device (Sensor): 4 Langkah

Video: Arduino 1-wire Generic Client / Slave Device (Sensor): 4 Langkah
Video: 1-Wire – Through the Looking Glass (Scope) and Down the Rabbit Hole (Bit Level) 2024, November
Anonim
Peranti Pelanggan / Slave Generik Arduino 1-wayar (Sensor)
Peranti Pelanggan / Slave Generik Arduino 1-wayar (Sensor)

Sila baca Pengenalan dan Langkah 2 arahan saya mengenai cara membina Paparan 1-wayar Arduino (144 Chars) untuk mendapatkan lebih banyak maklumat mengenai keadaan dan perpustakaan yang ada. Seperti yang dijelaskan di sana kita akan menggunakan perpustakaan OneWire-Hub (emulator peranti hamba OneWire) oleh orgua (perhatikan ada garpu lain di sekitarnya) untuk membina peranti 1 wayar generik (mis. Sensor) menggunakan Arduino.

Langkah 1: Perisian

Perkara yang paling penting adalah membuat peranti yang pada dasarnya dapat mengembalikan nilai apa pun dengan cara yang mudah. Bermaksud bahawa perisian standard dapat digunakan untuk membaca semua nilai secara langsung (tidak perlu perbualan atau manipulasi binari). Untuk itu kita memerlukan peranti 1-wayar lalai yang sangat mudah yang dapat mengembalikan pelampung dan disokong secara meluas. Satu-satunya pilihan yang saya tahu ialah Termometer DS18B20 (Monitor Bateri DS2438 juga menarik dan berguna tetapi agak rumit dan dengan demikian perlahan antara kekurangan lain). Perpustakaan OneWire-Hub mengandungi contoh yang disebut DS18B20_asInterface yang melakukan apa yang kita perlukan. Ini menghasilkan sekumpulan DS18B20 yang mana setiap satu mewakili satu nilai apungan yang ingin kita kembalikan dari sensor kita. Batasan di sini adalah ketetapan dan nilainya harus berada dalam julat -55, 0… 125, 0. Itu dapat dicapai dengan mudah - dalam keadaan terburuk adalah penukaran semula - dan sebenarnya lebih baik daripada nilai yang dapat diwakili oleh mis. nilai DS2438 (1.5 hingga 10V). Sebagai alternatif, julat nilai yang lebih besar dapat ditetapkan dengan menggunakan:

setTemperatureRaw (static_cast (nilai * 16.0f));

tetapi membaca dan memproses nilai-nilai ini mungkin tidak disokong oleh semua perisian kerana di luar spesifikasi.

Yang harus anda perhatikan ialah pada mulanya jumlah maksimum hamba dibatasi hingga 8 tetapi dapat diubah dalam "OneWireHub_config.h" dengan meningkatkan HUB_SLAVE_LIMIT hingga 32. Juga anda harus memastikan untuk menggunakan ONEWIRE_TIME_MSG_HIGH_TIMEOUT jika diperlukan oleh anda Rangkaian 1-wayar (misalnya x10), seperti yang dijelaskan dalam Langkah 2 Paparan 1-wayar Arduino (144 Karakter). Dan untuk menggunakan Versi IDE> = 1.8.3 untuk menyusun dan memuat naik kod ke Arduino anda.

Di sini sebagai contoh kod peranti yang saya bina baru-baru ini. Oleh kerana saya menganggap anda tidak menggunakan kombinasi sensor yang sama seperti yang saya lakukan, saya tidak akan memperincikannya dengan lebih terperinci di sini, periksa kodnya dan tanyakan soalan sekiranya anda memerlukan bantuan.

Langkah 2: Perkakasan

Perkakasan
Perkakasan

Pada dasarnya apa sahaja yang anda boleh sambungkan ke Arduino boleh digunakan sebagai pilihan anda. Satu-satunya sekatan ialah membaca sensor harus secepat mungkin untuk mempunyai banyak masa yang tersisa untuk komunikasi 1 wayar berlangsung (berikan Langkah 2 dari arahan saya mengenai Arduino 1-wire Display (144 Chars) agar untuk mendapatkan contoh).

Contoh perkakasan yang mungkin ialah stesen cuaca seperti:

https://shop.boxtec.ch/wetter-messer-p-41289.html

Selain itu atau sebagai gantinya anda mungkin mahu menggunakan Arduino itu sendiri sebagai sensor anda. Anda boleh membaca lebih lanjut mengenai perkara itu dalam arahan saya mengenai Ciri-ciri Kurang Dikenal Arduino - nilai yang mungkin adalah voltan sumber dan suhu dalaman.

Di sini sebagai contoh gambar peranti yang saya bina baru-baru ini. Oleh kerana saya menganggap anda tidak menggunakan kombinasi sensor yang sama seperti yang saya lakukan, saya tidak akan memperincikannya dengan lebih terperinci di sini, periksa kodnya dan tanyakan soalan sekiranya anda memerlukan bantuan.

Langkah 3: Uji Peranti

Sambungkannya ke rangkaian anda dan periksa perisian anda untuk semua ID ROM ada dan nilai-nilai mereka kembali sebagai suhu.

Langkah 4: Lampiran: ATtiny85

Lampiran: ATtiny85
Lampiran: ATtiny85

Peranti tunggal (batasan memori) juga boleh dilakukan pada ATtiny85. Ini memerlukan beberapa langkah semasa kami memprogram ATtiny85 menggunakan Arduino Uno sebagai ISP dengan bantuan Arduino IDE:

  • Pautan

    • https://playground.boxtec.ch/doku.php/arduino/att…
    • https://sebastian.expert/could-not-find-usbtiny-d…
    • https://learn.sparkfun.com/tutorials/tiny-avr-pro…
    • https://forum.arduino.cc/index.php?topic=425532.0
    • https://forum.arduino.cc/index.php?topic=128963.0
  1. gunakan Arduino IDE> = 1.8.3
  2. pasang pilihan ATtiny ke IDE

    1. Fail> Pilihan> URL Pengurus Papan Tambahan:
    2. Alatan> Papan: ??? > Pengurus Papan …
    3. cari: "kecil" dan pasang
  3. memuat naik lakaran ISP ke Uno

    Fail> Contoh> ArduinoISP> ArduinoISP

  4. masukkan ATtiny85 ke soket pengaturcaraan (zero-force) dan kawatnya:

    1. Arduino Pin MOSI D11 hingga ATtiny Pin 5
    2. Arduino Pin MISO D12 hingga ATtiny Pin 6
    3. Arduino Pin SCK D13 hingga ATtiny Pin 7
    4. Arduino Pin Reset D10 ke ATtiny Pin 1
    5. Arduino Pin GND ke ATtiny Pin 4
    6. Arduino Pin VCC ke ATtiny Pin 8
    7. (> = Cap 10uF pada pin Arduino Uno RESET mungkin diperlukan)
  5. pilih ATtiny85 (lihat gambar):

    • Papan: "ATtiny25 / 45/85"
    • Jam Pemasa 1: "CPU"
    • B. O. D.: "B. O. D. Dilumpuhkan"
    • LTO (1.6.11 + sahaja): "Dilumpuhkan"
    • Cip: "ATtiny85"
    • Jam: "8 MHz (dalaman)" (serasi ATtiny85 dan ATtiny84)
    • Jam: "16 MHz (PLL)" (tetapan alternatif untuk ATtiny85 sahaja)
    • Pelabuhan: ???
  6. pilih Pengaturcara:

    Alat> Pengaturcara: "Arduino sebagai ISP" (BUKAN "ArduinoISP"!)

  7. tetapkan tetapan fius (jam, dll.):

    Alat> Burn Bootloader

  8. muat naik kod ini (LED ralat pengaturcara perlu dimatikan, jika tidak tetapkan semula)
  9. Tata Letak Pin ATtinyX5 (ATtiny85):

    1. Pin 1: PB5 (RST)
    2. Pin 2: PB3 (A3) - disambungkan secara pilihan melalui 220ohm hingga 1 <-TX
    3. Pin 3: PB4 (A2) - disambungkan ke DATA 1-wayar
    4. Pin 4: GND - disambungkan ke GND
    5. Pin 5: PB0 (PWM) - disambungkan ke sensor I2C SDA
    6. Pin 6: PB1 (PWM) - disambungkan ke LED dengan 4.7k ke GND
    7. Pin 7: PB2 (A1) - disambungkan ke sensor I2C SCL
    8. Pin 8: VCC - disambungkan ke 5V

Bekerja dengan ATTiny85 memerlukan sedikit lebih banyak pekerjaan kerana anda perlu mendapatkan perpustakaan tambahan untuk I2C comm (adafruit / TinyWireM) dan output bersiri (TinyDebugSerial). Selain itu kerana memori agak terhad, anda mungkin mahu banyak bekerja dengan #define mis. untuk membuang penyahpepijatan bersiri. Dalam contoh anda dapat melihat semua ini dilemparkan bersama.

Untuk menguji langkah pertama adalah memeriksa sama ada LED berkelip dengan frekuensi yang betul, 0.5Hz. Kemudian sambungkannya ke bas 1wire dan periksa peranti baru.

Disyorkan: