Sadržaj:

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

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

Video: Arduino 1-žični generički klijentski/podređeni uređaj (senzor): 4 koraka
Video: ESP8266 ESP01 WI-FI-UART | Программирование LDmicro-Roboremo 2024, Studeni
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 knjižnicama. Kao što je tamo objašnjeno, koristit ćemo biblioteku OneWire-Hub (emulator OneWire slave uređaja) tvrtke orgua (obratite pažnju da u blizini postoje i druge vilice) 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 na jednostavan način može vratiti bilo koju vrijednost. Što znači da se standardni softver može koristiti za izravno č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). Knjižnica 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 položaju koju želimo vratiti s naših senzora. Ograničenja ovdje su razlučivost 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. vrijednosti DS2438 (1,5 do 10 V). Alternativno, veći raspon vrijednosti može se postaviti pomoću:

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 1-žičnog zaslona (144 znaka). I za korištenje IDE verzije> = 1.8.3 za sastavljanje i prijenos 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 i ja, ovdje neću 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 dosta vremena za 1-žičnu komunikaciju (dajte 2. korak mojih uputa o Arduino 1-žičnom zaslonu (144 znakova) dobiti 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 značajkama - 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 i ja, ovdje neću 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) također se mogu izvesti na ATtiny85. Za to je potrebno nekoliko koraka dok programiramo ATtiny85 koristeći Arduino Uno kao ISP -a uz pomoć Arduino IDE -a:

  • Veze

    • 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> Dodatni URL -ovi upravitelja ploča:
    2. Alati> Ploča: ??? > Upravitelj odbora…
    3. potražite: "tiny" i instalirajte
  3. prenesite skicu ISP -a u Uno

    Datoteka> Primjeri> ArduinoISP> ArduinoISP

  4. umetnite ATtiny85 u utičnicu za programiranje (nulte sile) i spojite 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 reset 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 pinu za resetiranje Arduino Uno)
  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 s 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. prenesite 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 spojen preko 220ohm na 1 <-TX
    3. Pin 3: PB4 (A2) - spojen na 1 -žične PODATKE
    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 knjižnice 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 pogrešaka. U primjeru možete vidjeti sve to zajedno.

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

Preporučeni: