Mündəricat:

Arduino 1 telli Ümumi Müştəri/Qul Cihazı (Sensor): 4 addım
Arduino 1 telli Ümumi Müştəri/Qul Cihazı (Sensor): 4 addım

Video: Arduino 1 telli Ümumi Müştəri/Qul Cihazı (Sensor): 4 addım

Video: Arduino 1 telli Ümumi Müştəri/Qul Cihazı (Sensor): 4 addım
Video: You can learn Arduino in 15 minutes. 2024, Noyabr
Anonim
Arduino 1 telli Ümumi Müştəri/Qul Cihazı (Sensor)
Arduino 1 telli Ümumi Müştəri/Qul Cihazı (Sensor)

Vəziyyət və mövcud kitabxanalar haqqında daha çox məlumat əldə etmək üçün Arduino 1 telli Ekranın (144 Karakter) necə qurulacağına dair göstərişlərimin Girişini və Adım 2-ni oxuyun. Orada izah edildiyi kimi, Arduino istifadə edərək ümumi 1 telli qurğular (məsələn, sensorlar) qurmaq üçün orgua tərəfindən OneWire-Hub kitabxanasından (OneWire kölə cihaz emulyatoru) istifadə edəcəyik (ətrafda başqa çəngəllər də var).

Addım 1: Proqram təminatı

Ən əsası, hər hansı bir dəyəri sadə bir şəkildə qaytara biləcək bir cihaz etməkdir. Standart proqramın bütün dəyərləri birbaşa oxumaq üçün istifadə edilə biləcəyi mənasını verir (heç bir söhbətə və ya ikili manipulyasiyaya ehtiyac yoxdur). Bunun üçün üzənləri geri qaytara bilən və geniş dəstəklənən çox sadə bir standart 1 telli qurğuya ehtiyacımız var. Bildiyim yeganə seçim DS18B20 Termometridir (DS2438 Batareya Monitoru çox maraqlı və faydalıdır, lakin olduqca mürəkkəbdir və buna görə də digər çatışmazlıqlar arasında yavaşdır). OneWire-Hub kitabxanasında ehtiyac duyduğumuz şeyi edən DS18B20_asInterface adlı bir nümunə var. Hər biri sensorlarımızdan geri qaytarmaq istədiyimiz bir dəyişkən dəyəri təmsil edən bir dəstə DS18B20 yaradır. Buradakı məhdudiyyətlər qətnamədir və dəyərlər -55, 0… 125, 0 aralığında olmalıdır. Buna asanlıqla nail olmaq olar - ən pis halda ölçüsünü dəyişmək - və əslində məs. DS2438 dəyərləri (1,5 ilə 10 V arasında). Alternativ olaraq daha böyük dəyərlər aralığını istifadə edərək təyin etmək olar:

setTemperatureRaw (static_cast (dəyər * 16.0f));

lakin bu dəyərlərin oxunması və işlənməsi, texniki xüsusiyyətlərə uyğun olmadığı üçün bütün proqramlar tərəfindən dəstəklənə bilməz.

Bilməli olduğunuz şey, başlanğıcda maksimum qul sayının 8 ilə məhdudlaşdırılmasıdır, lakin "OneWireHub_config.h" də HUB_SLAVE_LIMIT -ı 32 -ə qədər artırmaqla dəyişdirilə bilər. Həmçinin ehtiyacınız olarsa ONEWIRE_TIME_MSG_HIGH_TIMEOUT qəbul etməyinizə əmin olmalısınız. 1 telli şəbəkə (məsələn, x10), Arduino 1 telli Ekranın 2-ci Adımında (144 Karakter) izah edildiyi kimi. Kodu tərtib etmək və Arduino -ya yükləmək üçün IDE Version> = 1.8.3 istifadə etmək.

Nümunə olaraq bu yaxınlarda qurduğum cihazın kodu. Sensorların eyni kombinasiyasından istifadə etməyəcəyinizi güman etdiyim üçün burada daha ətraflı məlumat verməyəcəyəm, kodu yoxlayın və kömək istəsəniz suallar verin.

Addım 2: Avadanlıq

Avadanlıq
Avadanlıq

Əsasən bir Arduino -ya qoşula biləcəyiniz hər şey seçdiyiniz sensor kimi istifadə edilə bilər. Yeganə məhdudiyyət, 1 telli ünsiyyətin baş verməsi üçün çox vaxtın qalması üçün sensorun oxunmasının mümkün qədər sürətli olmasıdır (Arduino 1 telli Ekran (144 Karakter) haqqında göstərişlərimin 2-ci hissəsini sıralayın. nümunə almaq üçün).

Mümkün avadanlıq nümunəsi bir hava stansiyası ola bilər, məsələn:

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

Əlavə olaraq və ya sizin əvəzinizə Arduinonun özünü sensor olaraq istifadə etmək istəyə bilərsiniz. Bu barədə daha çox məlumatı Arduino Kiçik Tanınmış Xüsusiyyətlərim haqqında oxuya bilərsiniz - mümkün dəyərlər qaynaq gərginliyi və daxili temperaturdur.

Nümunə olaraq bu yaxınlarda qurduğum cihazın görüntüsü. Sensorların eyni kombinasiyasından istifadə etməyəcəyinizi düşündüyüm üçün burada daha ətraflı məlumat verməyəcəyəm, kodu yoxlayın və kömək istəsəniz suallar verin.

Addım 3: Cihazı yoxlayın

Şəbəkənizə qoşun və bütün ROM ID -lərinin mövcud olmasını və temperatur olaraq geri qaytardıqları proqramları yoxlayın.

Addım 4: Əlavə: ATtiny85

Əlavə: ATtiny85
Əlavə: ATtiny85

Tək qurğular (yaddaş məhdudiyyəti) ATtiny85 -də də edilə bilər. Arduino IDE -nin köməyi ilə Arduino Uno -nu ISP olaraq istifadə edərək ATtiny85 -i proqramlaşdırdığımız üçün bunun bir neçə addımı lazımdır:

  • 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 istifadə edin> = 1.8.3
  2. IDE üçün ATtiny seçimini quraşdırın

    1. Fayl> Tercihlər> Əlavə Kartlar Meneceri URL -ləri:
    2. Alətlər> İdarə Heyəti: ??? > İdarə Heyəti meneceri…
    3. "kiçik" axtarın və quraşdırın
  3. ISO eskizini bir Unoya yükləyin

    Fayl> Nümunələr> ArduinoISP> ArduinoISP

  4. ATtiny85-i proqramlaşdırma (sıfır qüvvə) yuvasına daxil edin və tellə bağlayın:

    1. Arduino Pin MOSI D11 -dən ATtiny Pin 5 -ə
    2. Arduino Pin MISO D12 - ATtiny Pin 6
    3. Arduino Pin SCK D13 - ATtiny Pin 7
    4. Arduino Pin D10 -u ATtiny Pin 1 -ə sıfırlayın
    5. Arduino Pin GND -dən ATtiny Pin 4 -ə
    6. Arduino Pin VCC -dən ATtiny Pin 8 -ə
    7. (> Arduino Uno RESET pinində 10 uF qapaq lazım ola bilər)
  5. ATtiny85 seçin (şəklə baxın):

    • Lövhə: "ATtiny25/45/85"
    • Taymer 1 Saat: "CPU"
    • B. O. D.: "B. O. D. Əlil"
    • LTO (yalnız 1.6.11 +): "Əlil"
    • Çip: "ATtiny85"
    • Saat: "8 MHz (daxili)" (ATtiny85 və ATtiny84 uyğun)
    • Saat: "16 MHz (PLL)" (yalnız ATtiny85 üçün alternativ ayar)
    • Liman: ???
  6. Proqramçı seçin:

    Alətlər> Proqramçı: "Arduino ISP olaraq" ("ArduinoISP" DEYİL!)

  7. sigorta parametrlərini təyin edin (saat və s.):

    Alətlər> Bootloader yandırın

  8. bu kodu yükləyin (proqramçı səhvinin LEDinin söndürülməsi lazımdır, əks halda sıfırlayın)
  9. ATtinyX5 Pin Layout (ATtiny85):

    1. Pin 1: PB5 (RST)
    2. Pin 2: PB3 (A3) - isteğe bağlı olaraq 220ohm ilə 1 <-TX -ə qoşulur
    3. Pin 3: PB4 (A2) - 1 telli DATA -ya bağlıdır
    4. Pin 4: GND - GND -yə bağlıdır
    5. Pin 5: PB0 (PWM) - I2C SDA sensoruna bağlıdır
    6. Pin 6: PB1 (PWM) - GND -ə 4.7k olan LED -ə bağlıdır
    7. Pin 7: PB2 (A1) - I2C SCL sensoruna bağlıdır
    8. Pin 8: VCC - 5V -a qoşulur

ATTiny85 ilə işləmək üçün I2C comm (adafruit/TinyWireM) və serial çıxışı (TinyDebugSerial) üçün əlavə kitabxanalar əldə etməyiniz lazım olduğu üçün bir az daha çox işə ehtiyac var. Əlavə olaraq yaddaş olduqca məhdud olduğu üçün #define ilə çox işləmək istəyə bilərsiniz. serial ayıklama aradan qaldırılması üçün. Misalda bunların hamısının bir araya gəldiyini görə bilərsiniz.

Test etmək üçün ilk addım, LED -in 0.5Hz -də düzgün tezliklə yanıb -sönmədiyini yoxlamaqdır. Sonra 1wire avtobusuna qoşun və yeni cihazı yoxlayın.

Tövsiyə: