Мазмуну:

Arduino 1-зым Generic Client/Slave Device (Sensor): 4 Steps
Arduino 1-зым Generic Client/Slave Device (Sensor): 4 Steps

Video: Arduino 1-зым Generic Client/Slave Device (Sensor): 4 Steps

Video: Arduino 1-зым Generic Client/Slave Device (Sensor): 4 Steps
Video: optical fiber db meter 2024, Ноябрь
Anonim
Arduino 1-зым Generic Client/Slave Device (Sensor)
Arduino 1-зым Generic Client/Slave Device (Sensor)

Сураныч, Киришүүнү жана 2-кадамды окуп, кырдаал жана жеткиликтүү китепканалар жөнүндө көбүрөөк маалымат алуу үчүн Arduino 1 зымдуу дисплейди (144 символ) кантип куруу керектигин окуп чыгыңыз. Бул жерде түшүндүрүлгөндөй, биз Arduino аркылуу жалпы 1 зымдуу түзмөктөрдү (мис. Сенсорлорду) куруу үчүн OneWire-Hub китепканасын (OneWire кулдук түзүлүш эмулятору) orgua аркылуу колдонобуз (тегерегинде башка айрылар бар).

1 -кадам: Программалык камсыздоо

Эң негизгиси, негизинен ар кандай баалуулукту жөнөкөй жол менен кайтара ала турган түзмөк жасоо. Демек, стандарттык программалык камсыздоо бардык баалуулуктарды түз окуу үчүн колдонулушу мүмкүн (эч кандай сүйлөшүү же экилик манипуляциянын кереги жок). Ал үчүн бизге калкып келе турган жана кеңири колдоого алынган өтө жөнөкөй 1 зымдуу түзмөк керек. Мен билген жалгыз чечим DS18B20 термометри (DS2438 Батарея Монитору кызыктуу жана пайдалуу, бирок өтө татаал жана башка кемчиликтер арасында жай). OneWire-Hub китепканасында DS18B20_asInterface деп аталган мисал камтылган, ал бизге керектүү нерселерди кылат. Бул DS18B20 тутумун түзөт, алардын ар бири сенсорубуздан кайткысы келген бир өзгөрмөлүү маанини билдирет. Бул жердеги чектөөлөр - бул токтом жана баалуулуктар -55, 0… 125, 0 диапазонунда болушу керек. Буга оңой эле жетүүгө болот - эң начар учурда кайра масштабдаштырууга болот - жана мис. DS2438 баалуулуктары (1,5тан 10В чейин). Же болбосо, чоңураак маанилер диапазонун колдонуу менен белгилениши мүмкүн:

setTemperatureRaw (static_cast (маани * 16.0f));

бирок бул баалуулуктарды окуу жана иштетүү бардык программалык камсыздоолор тарабынан колдоого алынбашы мүмкүн, анткени ал спецификациядан тышкары.

Сиз билишиңиз керек, адегенде кулдардын максималдуу саны 8 менен чектелген, бирок "OneWireHub_config.h" дан HUB_SLAVE_LIMITти 32ге чейин көбөйтүү менен өзгөртүүгө болот. 1 зымдуу тармак (мис. X10), Arduino 1 зымдуу дисплейинин 2-кадамында түшүндүрүлгөндөй (144 символ). Ал эми IDE версиясын колдонуу> = 1.8.3 кодду түзүү жана Arduinoго жүктөө үчүн.

Бул жерде мен жакында эле түзгөн түзмөктүн коду. Мен сенсорлордун комбинациясын колдонбойт деп ойлойм, мен бул жерде кененирээк маалымат бербейм, кодду текшериңиз жана жардам керек болсо суроолорду бериңиз.

2 -кадам: Аппараттык

Аппараттык
Аппараттык

Негизинен Arduino менен туташтыра турган нерсеңизди сиз каалаган сенсор катары колдонсо болот. Жалгыз чектөө, сенсорду окуу мүмкүн болушунча тезирээк болушу керек, бул үчүн 1 зымдуу байланыш үчүн көп убакыт калды (Arduino 1-зымдуу дисплейи (144 Chars) жөнүндө менин көрсөтмөмдүн 2-кадамын тапшырыңыз) мисал алуу үчүн).

Мүмкүн болгон жабдуулардын мисалы аба ырайы бекети болушу мүмкүн, мисалы:

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

Кошумча же анын ордуна сиз жөн гана Arduino'ду сенсор катары колдонууну каалашыңыз мүмкүн. Бул тууралуу көбүрөөк маалымат менин Arduino Lesser белгилүү өзгөчөлүктөрү жөнүндө окуй аласыз - мүмкүн болгон маанилер булак чыңалуусу жана ички температура.

Бул жерде мен жакында эле түзгөн аппараттын сүрөтү. Мен сенсорлордун комбинациясын колдонбойт деп ойлойм, мен бул жерде кененирээк маалымат бербейм, кодду текшериңиз жана жардам керек болсо суроолорду бериңиз.

3 -кадам: Түзмөктү сыноо

Аны тармагыңызга туташтырып, программалык камсыздоону текшериңиз, анда бардык ROM идентификаторлору бар жана алар температура катары кайтып келишет.

4 -кадам: Тиркеме: ATtiny85

Тиркеме: ATtiny85
Тиркеме: ATtiny85

Жалгыз түзмөктөр (эс тутумун чектөө) ATtiny85те да жасалышы мүмкүн. Бул бир нече кадамдарды талап кылат, анткени биз ATtiny85ти Arduino Uno менен ISP катары Arduino IDEдин жардамы менен программалайбыз:

  • Шилтемелер

    • 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> = 1.8.3
  2. IDEге ATtiny опциясын орнотуңуз

    1. Файл> Тандоолор> Кошумча такталар менеджери URL'дери:
    2. Tools> Board: ??? > Такта менеджери…
    3. издөө: "кичинекей" жана орнотуу
  3. ISO эскизин Unoго жүктөө

    Файл> Мисалдар> ArduinoISP> ArduinoISP

  4. ATtiny85ти программалоо (нөлдүк күч) розеткасына салып, зым менен байланыштырыңыз:

    1. Arduino Pin MOSI D11 ATtiny Pin 5ке
    2. ATDiny Pin 6 үчүн Arduino Pin MISO D12
    3. ATDiny Pin 7ге Arduino Pin SCK D13
    4. Arduino Pin D10 ATtiny Pin 1ге кайтарылды
    5. ATDiny Pin 4 үчүн Arduino Pin GND
    6. ATduTiny Pin 8 үчүн Arduino Pin VCC
    7. (> Arduino Uno RESET пин 10UF капкак керек болушу мүмкүн)
  5. ATtiny85ти тандаңыз (сүрөттү караңыз):

    • Такта: "ATtiny25/45/85"
    • Таймер 1 Сааты: "CPU"
    • B. O. D.: "B. O. D. Майып"
    • LTO (1.6.11 + гана): "Өчүрүлгөн"
    • Чип: "ATtiny85"
    • Саат: "8 МГц (ички)" (ATtiny85 жана ATtiny84 шайкеш)
    • Саат: "16 МГц (PLL)" (ATtiny85 үчүн альтернативдүү жөндөө)
    • Порт: ???
  6. программист тандоо:

    Куралдар> Программист: "Arduino ISP катары" ("ArduinoISP" ЭМЕС!)

  7. сактандыруучу орнотууларды коюу (саат ж. б.):

    Куралдар> Bootloader күйгүзүү

  8. бул кодду жүктөңүз (программисттин катасы LED өчүрүлүшү керек, болбосо аны кайра коюңуз)
  9. ATtinyX5 пин жайгашуусу (ATtiny85):

    1. Pin 1: PB5 (RST)
    2. Pin 2: PB3 (A3) - милдеттүү түрдө 1 <-TX 220ohm аркылуу туташкан
    3. Pin 3: PB4 (A2) - 1 -зым ДАТАга туташкан
    4. Pin 4: GND - GND менен туташкан
    5. Pin 5: PB0 (PWM) - I2C SDA сенсоруна туташкан
    6. Pin 6: PB1 (PWM) - LEDга 4.7k менен GNDге туташкан
    7. Pin 7: PB2 (A1) - I2C SCL сенсоруна туташкан
    8. Pin 8: VCC - 5Vга туташкан

ATTiny85 менен иштөө бир аз көбүрөөк иштөөнү талап кылат, анткени I2C comm (adafruit/TinyWireM) жана сериялык чыгаруу (TinyDebugSerial) үчүн кошумча китепканаларды алуу керек. Кошумча эс тутуму чектелүү болгондуктан #define менен көп иштөөнү каалашыңыз мүмкүн. сериялык мүчүлүштүктөрдү жок кылуу. Мисалда сиз мунун баарынын чогулганын көрө аласыз.

Биринчи кадамды текшерүү үчүн, LED туура жыштыкта, 0,5 Гцте жаркырап турганын текшерүү керек. Андан кийин аны 1wire автобусуна туташтырып, жаңы түзмөктү текшериңиз.

Сунушталууда: