Kazalo:

Arduino 1-žilna splošna odjemalska/podrejena naprava (senzor): 4 koraki
Arduino 1-žilna splošna odjemalska/podrejena naprava (senzor): 4 koraki

Video: Arduino 1-žilna splošna odjemalska/podrejena naprava (senzor): 4 koraki

Video: Arduino 1-žilna splošna odjemalska/podrejena naprava (senzor): 4 koraki
Video: METEOSTANICE s Arduino UNO 2024, November
Anonim
Arduino 1-žilna splošna odjemalska/podrejena naprava (senzor)
Arduino 1-žilna splošna odjemalska/podrejena naprava (senzor)

Prosimo, preberite uvod in 2. korak mojega navodila, kako zgraditi 1-žični zaslon Arduino (144 znakov), da dobite več informacij o razmerah in knjižnicah, ki so na voljo. Kot je pojasnjeno, bomo za izdelavo generičnih enožičnih naprav (npr. Senzorjev) z uporabo Arduina uporabili knjižnico OneWire-Hub (emulator podrejenih naprav OneWire).

1. korak: Programska oprema

Najpomembnejša stvar je, da naredite napravo, ki lahko v bistvu na preprost način vrne kakršno koli vrednost. To pomeni, da se s standardno programsko opremo lahko neposredno berejo vse vrednosti (pogovora ali binarne manipulacije ni potrebno). Za to potrebujemo zelo preprosto privzeto 1-žilno napravo, ki lahko vrne plavajoče in je široko podprta. Edina izbira, ki jo poznam, je termometer DS18B20 (monitor baterije DS2438 je zanimiv in uporaben, vendar precej zapleten in zato počasen med drugimi pomanjkljivostmi). Knjižnica OneWire-Hub vsebuje primer, imenovan DS18B20_asInterface, ki naredi točno tisto, kar potrebujemo. Ustvari kup DS18B20, od katerih vsak predstavlja eno plavajočo vrednost, ki jo želimo vrniti iz naših senzorjev. Tu so omejitve ločljivost in vrednosti morajo biti v območju -55, 0 … 125, 0. To je mogoče zlahka doseči - v najslabšem primeru prilagoditi velikost - in je dejansko boljše od vrednosti, ki jih lahko predstavimo npr. vrednosti DS2438 (1,5 do 10 V). Druga možnost je, da nastavite večji razpon vrednosti z:

setTemperatureRaw (static_cast (vrednost * 16,0f));

vendar branje in obdelava teh vrednosti morda ne podpira vsa programska oprema, ker nima specifikacij.

Zavedati se morate, da je sprva največje število podrejenih omejeno na 8, vendar jih je mogoče spremeniti v »OneWireHub_config.h« s povečanjem HUB_SLAVE_LIMIT do 32. Prav tako morate poskrbeti, da sprejmete ONEWIRE_TIME_MSG_HIGH_TIMEOUT, če bo to potrebno 1-žično omrežje (npr. X10), kot je razloženo v 2. koraku Arduino 1-žičnega zaslona (144 znakov). In za uporabo različice IDE> = 1.8.3 za sestavljanje in nalaganje kode v vaš Arduino.

Tu je na primer koda naprave, ki sem jo izdelal pred kratkim. Ker predvidevam, da ne uporabljate iste kombinacije senzorjev, ki jih uporabljam jaz, se tukaj ne bom spuščal v podrobnosti, preverite kodo in postavite vprašanja, če potrebujete pomoč.

2. korak: Strojna oprema

Strojna oprema
Strojna oprema

V bistvu lahko vse, kar lahko povežete z Arduinom, uporabite kot senzor po vaši izbiri. Edina omejitev je, da mora biti branje senzorja čim hitrejše, da ostane dovolj časa za izvedbo 1-žične komunikacije (podarite 2. korak mojega navodila o 1-žičnem zaslonu Arduino (144 znakov) po vrstnem redu) za primer).

Primer možne strojne opreme je lahko vremenska postaja, na primer:

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

Dodatno ali namesto vas bi morda želeli uporabiti sam Arduino kot svoj senzor. Več o tem lahko preberete v mojih navodilih o manj znanih lastnostih Arduino - možne vrednosti so napetost vira in notranja temperatura.

Tu je na primer slika naprave, ki sem jo izdelal pred kratkim. Ker predvidevam, da ne uporabljate iste kombinacije senzorjev, ki jih uporabljam jaz, tukaj ne bom šel podrobneje, preverite kodo in postavite vprašanja, če potrebujete pomoč.

Korak: Preizkusite napravo

Povežite ga z omrežjem in preverite, ali so v programski opremi prisotni vsi ID -ji ROM -a in vrednosti, ki se vrnejo kot temperatura.

4. korak: Dodatek: ATtiny85

Dodatek: ATtiny85
Dodatek: ATtiny85

Posamezne naprave (omejitev pomnilnika) je mogoče narediti tudi na ATtiny85. To potrebuje nekaj korakov, ko programiramo ATtiny85 z uporabo Arduino Uno kot ponudnika internetnih storitev s pomočjo Arduino IDE:

  • Povezave

    • 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. uporabite Arduino IDE> = 1.8.3
  2. namestite možnost ATtiny v IDE

    1. Datoteka> Nastavitve> URL -ji dodatnih upraviteljev plošč:
    2. Orodja> Plošča: ??? > Upravni odbor …
    3. poiščite: "tiny" in namestite
  3. naložite skico ponudnika internetnih storitev v Uno

    Datoteka> Primeri> ArduinoISP> ArduinoISP

  4. vstavite ATtiny85 v vtičnico za programiranje (brez sile) in jo ožičite:

    1. Arduino Pin MOSI D11 do ATtiny Pin 5
    2. Arduino Pin MISO D12 do ATtiny Pin 6
    3. Arduino Pin SCK D13 do ATtiny Pin 7
    4. Arduino Pin ponastavite D10 na ATtiny Pin 1
    5. Arduino Pin GND do ATtiny Pin 4
    6. Arduino Pin VCC do ATtiny Pin 8
    7. (> Morda bo potreben pokrovček 10uF na zatiču za ponastavitev Arduino Uno)
  5. izberite ATtiny85 (glejte sliko):

    • Plošča: "ATtiny25/45/85"
    • Ura časovnika 1: "CPE"
    • B. O. D.: "B. O. D. onemogočeno"
    • LTO (samo 1.6.11 +): "Onemogočeno"
    • Čip: "ATtiny85"
    • Ura: "8 MHz (notranja)" (združljivo z ATtiny85 in ATtiny84)
    • Ura: "16 MHz (PLL)" (alternativna nastavitev samo za ATtiny85)
    • Pristanišče: ???
  6. izberite programer:

    Orodja> Programer: "Arduino kot ponudnik internetnih storitev" (NE "ArduinoISP"!)

  7. nastavite nastavitve varovalk (ura itd.):

    Orodja> Burn Bootloader

  8. naložite to kodo (LED dioda napake programerja mora biti izklopljena, sicer jo ponastavite)
  9. Postavitev pin ATtinyX5 (ATtiny85):

    1. Pin 1: PB5 (RST)
    2. Pin 2: PB3 (A3) - po izbiri priključen preko 220ohm na 1 <-TX
    3. Pin 3: PB4 (A2) - povezan z 1 -žičnimi DATA
    4. Pin 4: GND - povezan z GND
    5. Pin 5: PB0 (PWM) - priključen na senzor I2C SDA
    6. Pin 6: PB1 (PWM) - priključen na LED z 4,7k na GND
    7. Pin 7: PB2 (A1) - priključen na senzor I2C SCL
    8. Pin 8: VCC - priključen na 5V

Delo z ATTiny85 zahteva nekaj več dela, saj potrebujete dodatne knjižnice za komunikacijo I2C (adafruit/TinyWireM) in serijski izhod (TinyDebugSerial). Poleg tega, ker je pomnilnik precej omejen, boste morda želeli veliko delati z #define npr. odstraniti serijsko odpravljanje napak. V primeru lahko vidite, da je vse skupaj združeno.

Za preskus je prvi korak, da preverite, ali LED utripa s pravilno frekvenco, 0,5Hz. Nato ga povežite z vodilom 1wire in preverite, ali je nova naprava.

Priporočena: