Satura rādītājs:

Arduino 1 vadu vispārēja klienta/vergu ierīce (sensors): 4 soļi
Arduino 1 vadu vispārēja klienta/vergu ierīce (sensors): 4 soļi

Video: Arduino 1 vadu vispārēja klienta/vergu ierīce (sensors): 4 soļi

Video: Arduino 1 vadu vispārēja klienta/vergu ierīce (sensors): 4 soļi
Video: CS50 2014 – 7-я неделя 2024, Novembris
Anonim
Arduino 1 vadu vispārēja klienta/vergu ierīce (sensors)
Arduino 1 vadu vispārēja klienta/vergu ierīce (sensors)

Lūdzu, izlasiet manu pamācību ievadā un 2. solī par to, kā izveidot Arduino 1 vadu displeju (144 rakstzīmes), lai iegūtu vairāk informācijas par situāciju un pieejamajām bibliotēkām. Kā tur paskaidrots, mēs izmantosim orgua OneWire-Hub bibliotēku (OneWire vergu ierīces emulatoru) (pievērsiet uzmanību, ka apkārt ir arī citas dakšas), lai izveidotu vispārīgas 1 vadu ierīces (piemēram, sensorus), izmantojot Arduino.

1. darbība: programmatūra

Vissvarīgākais ir izgatavot ierīci, kas vienkāršā veidā var atgriezt būtībā jebkura veida vērtību. Tas nozīmē, ka standarta programmatūru var izmantot, lai tieši nolasītu visas vērtības (nav nepieciešama saruna vai bināras manipulācijas). Šim nolūkam mums ir nepieciešama ļoti vienkārša noklusējuma 1 vadu ierīce, kas var atgriezt pludiņus un tiek plaši atbalstīta. Vienīgā izvēle, ko es zinu, ir termometrs DS18B20 (akumulatora monitors DS2438 ir arī interesants un noderīgs, taču diezgan sarežģīts un līdz ar to lēns starp citiem trūkumiem). OneWire-Hub bibliotēkā ir piemērs ar nosaukumu DS18B20_asInterface, kas dara tieši to, kas mums nepieciešams. Tas rada virkni DS18B20, no kuriem katrs attēlo vienu peldošo vērtību, kuru mēs vēlamies atgriezt no mūsu sensora (-iem). Ierobežojumi šeit ir izšķirtspēja, un vērtībām jābūt diapazonā -55, 0… 125, 0. To var viegli sasniegt - sliktākajā gadījumā - mainīt mērogu - un patiesībā tas ir labāk nekā vērtības, kuras var attēlot, piem. DS2438 vērtības (no 1,5 līdz 10V). Varat arī iestatīt lielāku vērtību diapazonu, izmantojot:

setTemperatureRaw (static_cast (vērtība * 16.0f));

bet šo vērtību lasīšanu un apstrādi var neatbalstīt visa programmatūra, jo tās specifikācijas nav pieejamas.

Jums jāzina, ka sākotnēji maksimālais vergu skaits ir ierobežots līdz 8, bet to var mainīt sadaļā “OneWireHub_config.h”, palielinot HUB_SLAVE_LIMIT līdz 32. Ja jums ir nepieciešams, noteikti izmantojiet ONEWIRE_TIME_MSG_HIGH_TIMEOUT. 1 vadu tīkls (piemēram, x10), kā paskaidrots Arduino 1 vadu displeja 2. solī (144 rakstzīmes). Un, lai izmantotu IDE versiju> = 1.8.3, lai apkopotu un augšupielādētu kodu savā Arduino.

Šeit kā piemērs nesen izveidotās ierīces kods. Tā kā es pieņemu, ka jūs neizmantojat to pašu sensoru kombināciju, ko es izmantoju, es šeit sīkāk neiedziļināšos, pārbaudiet kodu un uzdodiet jautājumus, ja jums nepieciešama palīdzība.

2. darbība. Aparatūra

Aparatūra
Aparatūra

Būtībā jebko, ko varat savienot ar Arduino, var izmantot kā jūsu izvēlēto sensoru. Vienīgais ierobežojums ir tas, ka sensora nolasīšanai jābūt pēc iespējas ātrākai, lai paliktu pietiekami daudz laika, lai notiktu 1 vadu komunikācija (piešķiriet manas instrukcijas 2. soli par Arduino 1 vadu displeju (144 rakstzīmes), lai lai iegūtu piemēru).

Iespējamās aparatūras piemērs varētu būt meteoroloģiskā stacija, piemēram:

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

Turklāt vai jūsu vietā jūs varētu vēlēties kā sensoru izmantot pašu Arduino. Vairāk par to varat izlasīt manā pamācībā par Arduino mazpazīstamajām funkcijām - iespējamās vērtības ir avota spriegums un iekšējā temperatūra.

Šeit kā piemērs nesen izveidotās ierīces attēls. Tā kā es pieņemu, ka jūs neizmantojat to pašu sensoru kombināciju, ko es izmantoju, es šeit sīkāk neiedziļināšos, pārbaudiet kodu un uzdodiet jautājumus, ja jums nepieciešama palīdzība.

3. darbība: pārbaudiet ierīci

Pievienojiet to tīklam un pārbaudiet, vai jūsu programmatūrā ir visi ROM ID un vai vērtības tiek atgrieztas kā temperatūra.

4. solis: Pielikums: ATtiny85

Pielikums: ATtiny85
Pielikums: ATtiny85

Atsevišķas ierīces (atmiņas ierobežošana) var veikt arī ar ATtiny85. Tas prasa dažus soļus, jo mēs programmējam ATtiny85, izmantojot Arduino Uno kā ISP, izmantojot Arduino IDE:

  • Saites

    • 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. izmantot Arduino IDE> = 1.8.3
  2. instalējiet ATtiny opciju IDE

    1. Fails> Preferences> Papildu dēļu pārvaldnieka vietrāži URL:
    2. Rīki> Padome: ??? > Valdes vadītājs…
    3. meklējiet: "tiny" un instalējiet
  3. augšupielādējiet ISP skici Uno

    Fails> Piemēri> ArduinoISP> ArduinoISP

  4. ievietojiet ATtiny85 programmēšanas (nulles spēka) ligzdā un pievienojiet to vadam:

    1. Arduino tapa MOSI D11 līdz ATtiny Pin 5
    2. Arduino tapa MISO D12 līdz ATtiny Pin 6
    3. Arduino tapa SCK D13 līdz ATtiny Pin 7
    4. Arduino Pin Reset D10 uz ATtiny Pin 1
    5. No Arduino Pin GND līdz ATtiny Pin 4
    6. Arduino Pin VCC līdz ATtiny Pin 8
    7. (> = Var būt nepieciešams 10uF vāciņš uz Arduino Uno RESET tapas)
  5. izvēlieties ATtiny85 (skatiet attēlu):

    • Dēlis: "ATtiny25/45/85"
    • Taimeris 1 Pulkstenis: "CPU"
    • B. O. D.: "B. O. D. invalīds"
    • LTO (tikai 1.6.11 +): atspējots
    • Mikroshēma: "ATtiny85"
    • Pulkstenis: "8 MHz (iekšējais)" (saderīgs ar ATtiny85 un ATtiny84)
    • Pulkstenis: "16 MHz (PLL)" (alternatīvs iestatījums tikai ATtiny85)
    • Osta: ???
  6. izvēlieties programmētāju:

    Rīki> Programmētājs: "Arduino kā ISP" (NAV "ArduinoISP"!)

  7. iestatiet drošinātāju iestatījumus (pulkstenis utt.):

    Rīki> Burn Bootloader

  8. augšupielādējiet šo kodu (programmētāja kļūdas gaismas diodei jābūt izslēgtai, pretējā gadījumā atiestatiet to)
  9. ATtinyX5 tapu izkārtojums (ATtiny85):

    1. 1. tapa: PB5 (RST)
    2. 2. tapa: PB3 (A3) - pēc izvēles caur 220ohm savienots ar 1 <-TX
    3. 3. tapa: PB4 (A2) - savienots ar 1 vadu DATA
    4. 4. tapa: GND - savienots ar GND
    5. 5. tapa: PB0 (PWM) - savienots ar sensoru I2C SDA
    6. 6. tapa: PB1 (PWM) - savienots ar LED ar 4.7k līdz GND
    7. 7. tapa: PB2 (A1) - savienots ar sensoru I2C SCL
    8. 8. tapa: VCC - savienots ar 5V

Darbam ar ATTiny85 ir nepieciešams nedaudz vairāk darba, jo jums ir nepieciešams iegūt papildu bibliotēkas I2C comm (adafruit/TinyWireM) un sērijveida izvadei (TinyDebugSerial). Turklāt, tā kā atmiņa ir diezgan ierobežota, iespējams, vēlēsities daudz strādāt ar #define, piem. lai noņemtu sērijas atkļūdošanu. Piemērā jūs varat redzēt, kā tas viss ir salikts kopā.

Lai pārbaudītu, pirmais solis ir pārbaudīt, vai gaismas diode mirgo ar pareizo frekvenci - 0,5 Hz. Pēc tam pievienojiet to 1wire kopnei un pārbaudiet jauno ierīci.

Ieteicams: