Sadržaj:

Arduino 1-žični opći klijentski/podređeni uređaj (senzor): 4 koraka
Arduino 1-žični opći klijentski/podređeni uređaj (senzor): 4 koraka

Video: Arduino 1-žični opći klijentski/podređeni uređaj (senzor): 4 koraka

Video: Arduino 1-žični opći klijentski/podređeni uređaj (senzor): 4 koraka
Video: Ардуино уроки программирование для начинающих с 9 лет [с нуля] #ДомаВместе 2024, Novembar
Anonim
Arduino 1-žični generički klijentski/podređeni uređaj (senzor)
Arduino 1-žični generički klijentski/podređeni uređaj (senzor)

Molimo pročitajte Uvod i korak 2 mojih uputa o tome kako izgraditi Arduino jednožilni zaslon (144 znaka) kako biste dobili više informacija o situaciji i dostupnim bibliotekama. Kao što je tamo objašnjeno, koristit ćemo biblioteku OneWire-Hub (emulator OneWire slave uređaja) od strane orgua (obratite pažnju da postoje i druge viljuške) kako bismo izgradili generičke jednožične uređaje (npr. Senzore) pomoću Arduina.

Korak 1: Softver

Najvažnije je napraviti uređaj koji u osnovi može vratiti bilo koju vrijednost na jednostavan način. Što znači da se standardni softver može koristiti za direktno čitanje svih vrijednosti (nije potreban razgovor ili binarna manipulacija). Za to nam je potreban vrlo jednostavan zadani 1-žični uređaj koji može vratiti plovke i koji je široko podržan. Jedini izbor za koji znam je termometar DS18B20 (monitor baterije DS2438 je također zanimljiv i koristan, ali prilično složen i stoga spor među ostalim nedostacima). Biblioteka OneWire-Hub sadrži primjer nazvan DS18B20_asInterface koji radi upravo ono što nam treba. On stvara hrpu DS18B20 od kojih svaki predstavlja jednu vrijednost u plutajućem obliku koju želimo vratiti sa naših senzora. Ograničenja ovdje su rezolucija i vrijednosti moraju biti u rasponu -55, 0 … 125, 0. To se lako može postići - u najgorem slučaju promjenom veličine - i zapravo je bolje od vrijednosti koje se mogu predstaviti npr. DS2438 vrijednosti (1,5 do 10V). Alternativno, veći raspon vrijednosti može se postaviti korištenjem:

setTemperatureRaw (static_cast (vrijednost * 16.0f));

ali čitanje i obradu ovih vrijednosti možda ne podržava sav softver jer nema specifikacija.

Ono što morate biti svjesni je da je u početku maksimalni broj podređenih uređaja ograničen na 8, ali se može promijeniti u "OneWireHub_config.h" povećanjem HUB_SLAVE_LIMIT do 32. Također morate biti sigurni da ćete usvojiti ONEWIRE_TIME_MSG_HIGH_TIMEOUT ako vam to zatreba 1-žična mreža (npr. X10), kako je objašnjeno u 2. koraku Arduino jednožilnog zaslona (144 znaka). I za korištenje IDE verzije> = 1.8.3 za kompajliranje i postavljanje koda na vaš Arduino.

Evo kao primjer koda uređaja koji sam nedavno izgradio. Budući da pretpostavljam da nećete koristiti istu kombinaciju senzora kao ja, neću ovdje dalje ulaziti u detalje, provjerite kôd i postavljajte pitanja ako vam je potrebna pomoć.

Korak 2: Hardver

Hardver
Hardver

U osnovi, sve što možete spojiti na Arduino može se koristiti kao vaš senzor po izboru. Jedino ograničenje je da bi očitavanje senzora trebalo biti što je moguće brže kako bi ostalo dovoljno vremena za obavljanje 1-žične komunikacije (dajte 2. korak mojih uputa o Arduino jednožilnom zaslonu (144 znakova) po redu da biste dobili primjer).

Primjer mogućeg hardvera mogla bi biti meteorološka stanica, npr.

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

Dodatno ili umjesto vas, možda biste htjeli koristiti sam Arduino kao svoj senzor. Više o tome možete pročitati u mojim uputama o Arduino manje poznatim karakteristikama - moguće vrijednosti su napon izvora i unutarnja temperatura.

Evo kao primjer slike uređaja koji sam nedavno izgradio. Budući da pretpostavljam da nećete koristiti istu kombinaciju senzora kao ja, neću ovdje dalje ulaziti u detalje, provjerite kôd i postavljajte pitanja ako vam je potrebna pomoć.

Korak 3: Testirajte uređaj

Povežite ga s mrežom i provjerite u svom softveru jesu li prisutni svi ID -ovi ROM -a i vrijednosti koje se vraćaju kao temperatura.

Korak 4: Dodatak: ATtiny85

Dodatak: ATtiny85
Dodatak: ATtiny85

Pojedinačni uređaji (ograničenje memorije) mogu se raditi i na ATtiny85. Ovo treba nekoliko koraka dok programiramo ATtiny85 koristeći Arduino Uno kao ISP -a uz pomoć Arduino IDE -a:

  • Linkovi

    • 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. koristite Arduino IDE> = 1.8.3
  2. instalirajte ATtiny opciju u IDE

    1. Datoteka> Postavke> URL -ovi dodatnih upravitelja odbora:
    2. Alati> Ploča: ??? > Upravitelj odbora…
    3. potražite: "tiny" i instalirajte
  3. otpremite skicu ISP -a u Uno

    Datoteka> Primjeri> ArduinoISP> ArduinoISP

  4. umetnite ATtiny85 u utičnicu za programiranje (nulte sile) i povežite je:

    1. Arduino pin MOSI D11 na ATtiny Pin 5
    2. Arduino pin MISO D12 na ATtiny Pin 6
    3. Arduino pin SCK D13 na ATtiny Pin 7
    4. Arduino pin resetirajte D10 na ATtiny Pin 1
    5. Arduino pin GND na ATtiny Pin 4
    6. Arduino Pin VCC na ATtiny Pin 8
    7. (> = Možda će biti potrebna kapa od 10uF na Arduino Uno RESET pin -u)
  5. odaberite ATtiny85 (pogledajte sliku):

    • Ploča: "ATtiny25/45/85"
    • Tajmer 1 Sat: "CPU"
    • B. O. D.: "B. O. D. onemogućen"
    • LTO (samo 1.6.11 +): "Onemogućeno"
    • Čip: "ATtiny85"
    • Sat: "8 MHz (interno)" (kompatibilno sa ATtiny85 i ATtiny84)
    • Sat: "16 MHz (PLL)" (alternativna postavka samo za ATtiny85)
    • Luka: ???
  6. odaberite programera:

    Alati> Programer: "Arduino kao ISP" (NE "ArduinoISP"!)

  7. postavite postavke osigurača (sat itd.):

    Alati> Burn Bootloader

  8. otpremite ovaj kôd (LED lampica greške programera mora biti isključena, inače je resetirajte)
  9. Raspored pinova ATtinyX5 (ATtiny85):

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

Rad s ATTiny85 -om zahtijeva malo više rada jer trebate nabaviti dodatne biblioteke za I2C comm (adafruit/TinyWireM) i serijski izlaz (TinyDebugSerial). Osim toga, budući da je memorija prilično ograničena, možda biste htjeli puno raditi s #define, npr. za uklanjanje serijskog uklanjanja grešaka. U primjeru možete vidjeti sve ovo zajedno.

Za testiranje, prvi korak je provjeriti treperi li LED sa ispravnom frekvencijom, 0,5Hz. Zatim ga spojite na sabirnicu 1wire i provjerite ima li novog uređaja.

Preporučuje se: