Innholdsfortegnelse:

Arduino 1-wire Generic Client/Slave Device (Sensor): 4 trinn
Arduino 1-wire Generic Client/Slave Device (Sensor): 4 trinn

Video: Arduino 1-wire Generic Client/Slave Device (Sensor): 4 trinn

Video: Arduino 1-wire Generic Client/Slave Device (Sensor): 4 trinn
Video: NPK 7 IN 1 SOIL SENSOR - Humidity,Temperature ,EC, PH & NPK values all in one 2024, November
Anonim
Arduino 1-wire Generic Client/Slave Device (Sensor)
Arduino 1-wire Generic Client/Slave Device (Sensor)

Vennligst les introduksjonen og trinn 2 i instruksjonene mine om hvordan du bygger en Arduino 1-leders skjerm (144 tegn) for å få mer informasjon om situasjonen og tilgjengelige biblioteker. Som forklart der vil vi bruke OneWire-Hub-biblioteket (OneWire-slaveenhetsemulator) av orgua (vær oppmerksom på at det er andre gafler rundt) for å bygge generiske 1-tråds enheter (f.eks. Sensorer) ved hjelp av en Arduino.

Trinn 1: Programvare

Det viktigste er å lage en enhet som i utgangspunktet kan returnere noen form for verdi på en enkel måte. Det betyr at standard programvare kan brukes til å lese alle verdiene direkte (ingen samtale eller binær manipulasjon nødvendig). For det trenger vi en veldig enkel standard 1-tråds enhet som kan returnere flyter og støttes bredt. Det eneste valget jeg vet om er DS18B20 -termometeret (DS2438 batterimonitor er også interessant og nyttig, men ganske komplekst og dermed tregt blant andre ulemper). OneWire-Hub-biblioteket inneholder et eksempel kalt DS18B20_asInterface som gjør akkurat det vi trenger. Det skaper en haug med DS18B20, som hver representerer en flyteverdi vi vil returnere fra sensorene våre. Restriksjonene her er oppløsningen og verdiene må ligge i området -55, 0… 125, 0. Det kan lett oppnås - i verste fall skalere - og er faktisk bedre enn verdiene som kan representeres av f.eks. DS2438 -verdiene (1,5 til 10V). Alternativt kan et større verdiområde settes ved å bruke:

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

men å lese og behandle disse verdiene støttes kanskje ikke av all programvare ettersom den er tom for spesifikasjoner.

Det du må være klar over er at det maksimale antallet slaver i utgangspunktet er begrenset til 8, men kan endres i "OneWireHub_config.h" ved å øke HUB_SLAVE_LIMIT til 32. Du må også sørge for å adoptere ONEWIRE_TIME_MSG_HIGH_TIMEOUT om nødvendig av din 1-tråds nettverk (f.eks. X10), som forklart i trinn 2 i Arduino 1-leders skjerm (144 tegn). Og for å bruke IDE -versjonen> = 1.8.3 til å kompilere og laste opp koden til Arduino.

Her som et eksempel koden til enheten jeg bygger veldig nylig. Siden jeg antar at du ikke skal bruke den samme kombinasjonen av sensorer som jeg gjør, vil jeg ikke gå nærmere inn på detaljer her, sjekk koden og still spørsmål hvis du trenger hjelp.

Trinn 2: Maskinvare

Maskinvare
Maskinvare

I utgangspunktet kan alt du kan koble til en Arduino brukes som valgfri sensor. Den eneste begrensningen er at lesingen av sensoren skal være så rask som mulig for å ha god tid igjen til 1-leder kommunikasjonen kan finne sted (overfør trinn 2 i min instruks om Arduino 1-wire display (144 tegn) for for å få et eksempel).

Et eksempel på mulig maskinvare kan være en værstasjon som f.eks.:

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

I tillegg eller i stedet for deg vil du kanskje bruke selve Arduino som din sensor. Du kan lese mer om det i min instruks om Arduino Mindre kjente funksjoner - mulige verdier er kildespenningen og den interne temperaturen.

Her som et eksempel et bilde av enheten jeg bygger veldig nylig. Siden jeg antar at du ikke skal bruke den samme kombinasjonen av sensorer som jeg gjør, vil jeg ikke gå nærmere inn på detaljer her, sjekk koden og still spørsmål hvis du trenger hjelp.

Trinn 3: Test enheten

Koble den til nettverket ditt og sjekk programvaren din for at alle ROM -ID -er skal finnes og verdiene de returnerer som temperatur.

Trinn 4: Vedlegg: ATtiny85

Vedlegg: ATtiny85
Vedlegg: ATtiny85

Enkelte enheter (minnebegrensning) kan også gjøres på en ATtiny85. Dette trenger noen få trinn mens vi programmerer ATtiny85 ved å bruke Arduino Uno som Internett -leverandør ved hjelp av Arduino IDE:

  • Lenker

    • 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. bruk Arduino IDE> = 1.8.3
  2. installer ATtiny -alternativet til IDE

    1. Fil> Preferanser> Ytterligere nettadresser for Boards Manager:
    2. Verktøy> Brett: ??? > Styreleder …
    3. søk etter: "liten" og installer
  3. last opp ISP -skisse til en Uno

    Fil> Eksempler> ArduinoISP> ArduinoISP

  4. sett inn ATtiny85 i programmeringsstikkontakten (null kraft) og koble den til:

    1. Arduino Pin MOSI D11 til ATtiny Pin 5
    2. Arduino Pin MISO D12 til ATtiny Pin 6
    3. Arduino Pin SCK D13 til ATtiny Pin 7
    4. Arduino Pin Tilbakestill D10 til ATtiny Pin 1
    5. Arduino Pin GND til ATtiny Pin 4
    6. Arduino Pin VCC til ATtiny Pin 8
    7. (> = 10uF lokket på Arduino Uno RESET pin kan være nødvendig)
  5. velg ATtiny85 (se bilde):

    • Brett: "ATtiny25/45/85"
    • Timer 1 Clock: "CPU"
    • B. O. D.: "B. O. D. deaktivert"
    • LTO (bare 1.6.11 +): "Deaktivert"
    • Chip: "ATtiny85"
    • Klokke: "8 MHz (intern)" (kompatibel med ATtiny85 og ATtiny84)
    • Klokke: "16 MHz (PLL)" (alternativ innstilling bare for ATtiny85)
    • Havn: ???
  6. velg programmerer:

    Verktøy> Programmerer: "Arduino som ISP" (IKKE "ArduinoISP"!)

  7. angi sikringsinnstillinger (klokke, etc.):

    Verktøy> Brenn oppstartslaster

  8. last opp denne koden (programmeringsfeil -LED må være slått av, ellers tilbakestill den)
  9. ATtinyX5 Pin -layout (ATtiny85):

    1. Pin 1: PB5 (RST)
    2. Pin 2: PB3 (A3) - valgfritt tilkoblet via 220ohm til 1 <-TX
    3. Pin 3: PB4 (A2) - koblet til 1 -leder DATA
    4. Pin 4: GND - koblet til GND
    5. Pin 5: PB0 (PWM) - koblet til sensor I2C SDA
    6. Pin 6: PB1 (PWM) - koblet til LED med 4,7k til GND
    7. Pin 7: PB2 (A1) - koblet til sensor I2C SCL
    8. Pin 8: VCC - koblet til 5V

Å jobbe med ATTiny85 trenger litt mer arbeid, siden du trenger flere biblioteker for I2C comm (adafruit/TinyWireM) og seriell utgang (TinyDebugSerial). I tillegg ettersom minnet er ganske begrenset, vil du kanskje jobbe mye med #define f.eks. for å fjerne seriell feilsøking. I eksemplet kan du se alt dette kastet sammen.

For testing er det første trinnet å kontrollere om LED -en blinker med riktig frekvens, 0,5 Hz. Koble den deretter til 1wire -bussen og se etter den nye enheten.

Anbefalt: