INHOUDSOPGAWE:

Arduino 1-draads generiese kliënt/slawe-toestel (sensor): 4 stappe
Arduino 1-draads generiese kliënt/slawe-toestel (sensor): 4 stappe

Video: Arduino 1-draads generiese kliënt/slawe-toestel (sensor): 4 stappe

Video: Arduino 1-draads generiese kliënt/slawe-toestel (sensor): 4 stappe
Video: Control Speed of Stepper Motor using L298N with Push Button Switches STLPB-01 2024, September
Anonim
Arduino 1-draads generiese kliënt/slawe-toestel (sensor)
Arduino 1-draads generiese kliënt/slawe-toestel (sensor)

Lees die inleiding en stap 2 van my instruksies oor hoe om 'n Arduino 1-draads skerm (144 tekens) te bou om meer inligting te kry oor die situasie en beskikbare biblioteke. Soos daar uiteengesit, gebruik ons die OneWire-Hub-biblioteek (OneWire-slaafapparaat-emulator) deur orgua (let op dat daar ander vurke is) om generiese 1-draads toestelle (bv. Sensors) met 'n Arduino te bou.

Stap 1: sagteware

Die belangrikste ding is om 'n toestel te maak wat op 'n eenvoudige manier enige waarde kan teruggee. Dit beteken dat standaard sagteware gebruik kan word om al die waardes direk te lees (geen gesprek of binêre manipulasie nodig nie). Daarvoor benodig ons 'n baie eenvoudige standaard 1-draads toestel wat dryf kan terugbring en wyd ondersteun word. Die enigste keuse waarvan ek weet, is die DS18B20 -termometer (die DS2438 -batterymonitor is ook interessant en nuttig, maar redelik kompleks en dus stadig onder ander nadele). Die OneWire-Hub-biblioteek bevat 'n voorbeeld genaamd DS18B20_asInterface wat presies doen wat ons nodig het. Dit skep 'n klomp DS18B20 waarvan elkeen een dryfwaarde verteenwoordig wat ons van ons sensor (s) wil teruggee. Die beperkings hier is die resolusie en die waardes moet in die reeks -55, 0… 125, 0. Dit kan maklik bereik word - in die ergste geval hergroei - en is eintlik beter as die waardes wat voorgestel kan word deur bv. die DS2438 waardes (1,5 tot 10V). Alternatiewelik kan 'n groter reeks waardes gestel word deur die volgende te gebruik:

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

maar die lees en verwerking van hierdie waardes word moontlik nie deur alle sagteware ondersteun nie, aangesien dit nie die spesifikasies het nie.

U moet daarvan bewus wees dat die maksimum aantal slawe aanvanklik tot 8 beperk is, maar in "OneWireHub_config.h" verander kan word deur HUB_SLAVE_LIMIT tot 32 te verhoog. 1-draads netwerk (bv. X10), soos verduidelik in stap 2 van Arduino 1-draads skerm (144 tekens). En om die IDE -weergawe> = 1.8.3 te gebruik om die kode op te stel en op te laai na u Arduino.

Hier is 'n voorbeeld van die kode van die toestel wat ek onlangs gebou het. Aangesien ek aanneem dat u nie dieselfde kombinasie van sensors as ek gebruik nie, gaan ek nie hier meer in op die besonderhede nie, kyk na die kode en stel vrae as u hulp nodig het.

Stap 2: Hardeware

Hardeware
Hardeware

Alles wat u aan 'n Arduino kan koppel, kan in wese gebruik word as u sensor van keuse. Die enigste beperking is dat die lees van die sensor so vinnig as moontlik moet wees sodat daar genoeg tyd oor is vir die kommunikasie met een draad (gee stap 2 van my instruksies oor Arduino 1-draads skerm (144 tekens) om om 'n voorbeeld te kry).

'N Voorbeeld van moontlike hardeware kan 'n weerstasie wees, byvoorbeeld:

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

Boonop wil u die Arduino self as u sensor in plaas daarvan gebruik. U kan meer hieroor lees in my instruksies oor die minder bekende kenmerke van Arduino - moontlike waardes is die bronspanning en die interne temperatuur.

Hier is 'n voorbeeld van die toestel wat ek onlangs gebou het. Aangesien ek aanneem dat u nie dieselfde kombinasie van sensors as ek gebruik nie, gaan ek nie hier meer in op die besonderhede nie, kyk na die kode en stel vrae as u hulp nodig het.

Stap 3: Toets die toestel

Koppel dit aan u netwerk en kyk na u sagteware dat alle ROM -ID's teenwoordig is en die waardes wat hulle as temperatuur teruggee.

Stap 4: Bylaag: ATtiny85

Bylaag: ATtiny85
Bylaag: ATtiny85

Enkele toestelle (geheue beperking) kan ook op 'n ATtiny85 gedoen word. Dit benodig 'n paar stappe terwyl ons die ATtiny85 programmeer met behulp van Arduino Uno as ISP met behulp van die Arduino IDE:

  • Skakels

    • 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. gebruik Arduino IDE> = 1.8.3
  2. installeer ATtiny -opsie na IDE

    1. Lêer> Voorkeure> Bykomende bestuurders -URL's:
    2. Gereedskap> Bord: ??? > Bestuurders …
    3. soek na: "klein" en installeer
  3. laai ISP -skets op na 'n Uno

    Lêer> Voorbeelde> ArduinoISP> ArduinoISP

  4. steek ATtiny85 in die programmeringsaansluiting (nulkrag) en verbind dit:

    1. Arduino Pin MOSI D11 tot ATtiny Pin 5
    2. Arduino Pin MISO D12 tot ATtiny Pin 6
    3. Arduino Pin SCK D13 tot ATtiny Pin 7
    4. Herstel van Arduino -pen D10 na AT -pin 1
    5. Arduino Pin GND tot ATtiny Pin 4
    6. Arduino Pin VCC tot ATtiny Pin 8
    7. (> = 10 uF -dop op Arduino Uno RESET -pen kan nodig wees)
  5. kies ATtiny85 (sien prent):

    • Bord: "ATtiny25/45/85"
    • Timer 1 klok: "CPU"
    • BOD: "BOD gestrem"
    • LTO (slegs 1.6.11 +): "Uitgeskakel"
    • Skyfie: "ATtiny85"
    • Klok: "8 MHz (intern)" (versoenbaar met ATtiny85 en ATtiny84)
    • Klok: "16 MHz (PLL)" (alternatiewe instelling slegs vir ATtiny85)
    • Hawe: ???
  6. kies programmeerder:

    Gereedskap> Programmeerder: "Arduino as ISP" (NIE "ArduinoISP" nie!)

  7. stel lontinstellings (klok, ens.) in:

    Gereedskap> Brand bootloader

  8. Laai hierdie kode op (programmeerderfout -LED moet af wees, anders moet u dit herstel)
  9. ATtinyX5 -penuitleg (ATtiny85):

    1. Speld 1: PB5 (RST)
    2. Pin 2: PB3 (A3) - opsioneel via 220ohm verbind met 1 <-TX
    3. Speld 3: PB4 (A2) - gekoppel aan 1 -draads DATA
    4. Speld 4: GND - gekoppel aan GND
    5. Speld 5: PB0 (PWM) - gekoppel aan sensor I2C SDA
    6. Speld 6: PB1 (PWM) - gekoppel aan LED met 4,7k na GND
    7. Speld 7: PB2 (A1) - gekoppel aan sensor I2C SCL
    8. Speld 8: VCC - gekoppel aan 5V

Om met ATTiny85 te werk, benodig 'n bietjie meer werk, aangesien u ekstra biblioteke moet kry vir I2C comm (adafruit/TinyWireM) en seriële uitvoer (TinyDebugSerial). Aangesien die geheue redelik beperk is, sal u baie met #define wil werk, bv. om seriële ontfouting te verwyder. In die voorbeeld kan u dit alles sien saamgooi.

Vir die toets is die eerste stap om te kyk of die LED met die korrekte frekwensie, 0,5Hz, flits. Koppel dit dan aan die 1wire -bus en kyk of die nuwe toestel is.

Aanbeveel: