Arduino 1-telli Genel İstemci/Slave Aygıt (Sensör): 4 Adım
Arduino 1-telli Genel İstemci/Slave Aygıt (Sensör): 4 Adım
Anonim
Arduino 1-telli Genel İstemci/Slave Aygıtı (Sensör)
Arduino 1-telli Genel İstemci/Slave Aygıtı (Sensör)

Durum ve mevcut kütüphaneler hakkında daha fazla bilgi almak için lütfen Arduino 1 telli Ekranın (144 Karakter) nasıl oluşturulacağına ilişkin talimatımın Giriş ve Adım 2'sini okuyun. Orada açıklandığı gibi, bir Arduino kullanarak genel 1 kablolu cihazlar (örn.

1. Adım: Yazılım

En önemli şey, temelde her türlü değeri basit bir şekilde döndürebilen bir cihaz yapmaktır. Bu, standart yazılımın tüm değerleri doğrudan okumak için kullanılabileceği anlamına gelir (konuşma veya ikili manipülasyon gerekmez). Bunun için, şamandıraları döndürebilen ve yaygın olarak desteklenen çok basit, varsayılan 1 telli bir cihaza ihtiyacımız var. Bildiğim tek seçenek DS18B20 Termometredir (DS2438 Pil Monitörü de ilginç ve kullanışlıdır ancak oldukça karmaşıktır ve bu nedenle diğer dezavantajların yanı sıra yavaştır). OneWire-Hub kitaplığı, tam olarak ihtiyacımız olanı yapan DS18B20_asInterface adlı bir örnek içerir. Her biri sensörümüzden/sensörlerimizden döndürmek istediğimiz bir kayan nokta değerini temsil eden bir grup DS18B20 oluşturur. Buradaki kısıtlamalar çözünürlüktür ve değerler -55, 0 … 125, 0 aralığında olmalıdır. Bu kolayca elde edilebilir - en kötü durumda yeniden ölçeklendirme olabilir - ve aslında örn. DS2438 değerleri (1,5 ila 10V). Alternatif olarak, aşağıdakiler kullanılarak daha büyük bir değer aralığı ayarlanabilir:

setTemperatureRaw(static_cast(değer * 16.0f));

ancak bu değerlerin okunması ve işlenmesi, teknik özelliklerin dışında olduğu için tüm yazılımlar tarafından desteklenmeyebilir.

Dikkat etmeniz gereken şey, başlangıçta maksimum bağımlı sayısının 8 ile sınırlı olduğu, ancak HUB_SLAVE_LIMIT'i 32'ye kadar artırarak "OneWireHub_config.h" içinde değiştirilebileceğidir. 1 telli ağ (örn. x10), Arduino 1 telli Ekranın 2. Adımında (144 Karakter) açıklandığı gibi. Ve kodu derlemek ve Arduino'nuza yüklemek için IDE Sürümü> = 1.8.3'ü kullanmak için.

İşte bir örnek olarak, çok yakın zamanda oluşturduğum cihazın kodu. Benim kullandığım sensör kombinasyonunu kullanmayacağınızı varsaydığım için burada daha fazla ayrıntıya girmeyeceğim, kodu kontrol edip yardıma ihtiyacınız olursa sorular sorun.

2. Adım: Donanım

Donanım
Donanım

Temel olarak bir Arduino'ya bağlayabileceğiniz her şey, tercih ettiğiniz sensör olarak kullanılabilir. Tek kısıtlama, 1 telli iletişimin gerçekleşmesi için bolca zamanın kalması için sensörün okunmasının mümkün olduğunca hızlı olması gerektiğidir (sırasıyla Arduino 1 telli Ekran (144 Karakter) hakkındaki talimatımın 2. Adımını verin. örnek almak için).

Olası donanıma bir örnek, örneğin aşağıdaki gibi bir hava durumu istasyonu olabilir:

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

Ek olarak veya sizin yerine Arduino'nun kendisini sensörünüz olarak kullanmak isteyebilirsiniz. Bununla ilgili daha fazla bilgiyi Arduino Daha Az Bilinen Özellikler hakkındaki talimatımda okuyabilirsiniz - olası değerler kaynak voltajı ve dahili sıcaklıktır.

İşte bir örnek olarak, çok yakın zamanda yaptığım cihazın bir görüntüsü. Benim kullandığım sensör kombinasyonunu kullanmayacağınızı varsaydığım için burada daha fazla ayrıntıya girmeyeceğim, kodu kontrol edip yardıma ihtiyacınız olursa sorular sorun.

3. Adım: Cihazı Test Edin

Ağınıza bağlayın ve tüm ROM kimliklerinin mevcut olup olmadığını ve sıcaklık olarak döndürdükleri değerler için yazılımınızı kontrol edin.

Adım 4: Ek: ATtiny85

Ek: ATtiny85
Ek: ATtiny85

ATtiny85'te tek aygıtlar (bellek sınırlaması) da yapılabilir. ATtiny85'i Arduino IDE'nin yardımıyla ISP olarak Arduino Uno kullanarak programladığımız için bunun birkaç adıma ihtiyacı var:

  • Bağlantılar

    • 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. Arduino IDE'yi kullan >=1.8.3
  2. ATtiny seçeneğini IDE'ye yükleyin

    1. Dosya > Tercihler > Ek Pano Yöneticisi URL'leri:
    2. Araçlar > Pano: ??? > Kurullar Müdürü…
    3. "minik" için arama yapın ve yükleyin
  3. ISP taslağını bir Uno'ya yükleyin

    Dosya > Örnekler > ArduinoISP > ArduinoISP

  4. ATtiny85'i programlama (sıfır kuvvet) soketine takın ve kablolayın:

    1. Arduino Pin MOSI D11 - ATtiny Pin 5
    2. Arduino Pin MISO D12 - ATtiny Pin 6
    3. Arduino Pin SCK D13 - ATtiny Pin 7
    4. Arduino Pin Reset D10 - ATtiny Pin 1
    5. Arduino Pin GND'den ATtiny Pin 4'e
    6. Arduino Pin VCC'den ATtiny Pin 8'e
    7. (Arduino Uno RESET pininde >=10uF cap gerekebilir)
  5. ATtiny85'i seçin (resme bakın):

    • Yönetim Kurulu: "ATtiny25/45/85"
    • Zamanlayıcı 1 Saat: "CPU"
    • B. O. D.: "B. O. D. Devre Dışı"
    • LTO (yalnızca 1.6.11 +): "Devre Dışı"
    • Çip: "ATtiny85"
    • Saat: "8 MHz (dahili)" (ATtiny85 ve ATtiny84 uyumlu)
    • Saat: "16 MHz (PLL)" (yalnızca ATtiny85 için alternatif ayar)
    • Liman: ???
  6. Programcı'yı seçin:

    Araçlar > Programcı: "ISP olarak Arduino" ("ArduinoISP" DEĞİL!)

  7. sigorta ayarlarını yapın (saat, vb.):

    Araçlar > Bootloader'ı Yaz

  8. bu kodu yükleyin (programcı hata LED'inin kapalı olması gerekir, aksi takdirde sıfırlayın)
  9. ATtinyX5 Pin Düzeni (ATtiny85):

    1. Pim 1: PB5 (RST)
    2. Pin 2: PB3 (A3) - isteğe bağlı olarak 220ohm ile 1<-TX arasında bağlanır
    3. Pin 3: PB4 (A2) - 1 kablolu DATA'ya bağlı
    4. Pin 4: GND - GND'ye bağlı
    5. Pin 5: PB0 (PWM) - sensör I2C SDA'ya bağlı
    6. Pin 6: PB1 (PWM) - LED'e 4,7k - GND ile bağlı
    7. Pin 7: PB2 (A1) - sensör I2C SCL'ye bağlı
    8. Pin 8: VCC - 5V'a bağlı

ATTiny85 ile çalışmak, I2C comm (adafruit/TinyWireM) ve seri çıktı (TinyDebugSerial) için ek kitaplıklar edinmeniz gerektiğinden biraz daha fazla çalışma gerektirir. Ek olarak, hafıza oldukça sınırlı olduğundan #define ile çok çalışmak isteyebilirsiniz, ör. seri hata ayıklamayı kaldırmak için. Örnekte bunların hepsini bir arada görebilirsiniz.

Test etmek için ilk adım, LED'in 0,5 Hz doğru frekansta yanıp sönüp yanıp sönmediğini kontrol etmektir. Ardından 1wire veriyoluna bağlayın ve yeni cihazı kontrol edin.