Indholdsfortegnelse:

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

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

Video: Arduino 1-wire Generic Client/Slave Device (Sensor): 4 trin
Video: 1-Wire – Through the Looking Glass (Scope) and Down the Rabbit Hole (Bit Level) 2024, December
Anonim
Arduino 1-wire Generic Client/Slave Device (Sensor)
Arduino 1-wire Generic Client/Slave Device (Sensor)

Læs venligst introduktionen og trin 2 i min instruktionsbog om, hvordan du opbygger en Arduino 1-tråds skærm (144 tegn) for at få mere information om situationen og tilgængelige biblioteker. Som forklaret der vil vi bruge OneWire-Hub-biblioteket (OneWire-slaveenhedsemulator) af orgua (vær opmærksom på, at der er andre gafler rundt) for at bygge generiske 1-tråds enheder (f.eks. Sensorer) ved hjælp af en Arduino.

Trin 1: Software

Det vigtigste er at lave en enhed, der kan returnere stort set enhver form for værdi på en enkel måde. Det betyder, at standardsoftware kan bruges til at læse alle værdierne direkte (ingen samtale eller binær manipulation er nødvendig). Til det har vi brug for en meget enkel standard 1-tråds enhed, der kan returnere floats og er bredt understøttet. Det eneste valg, jeg kender, er DS18B20 -termometeret (DS2438 -batterimonitoren er også interessant og nyttig, men ret kompleks og dermed langsom blandt andre ulemper). OneWire-Hub-biblioteket indeholder et eksempel kaldet DS18B20_asInterface, der gør præcis, hvad vi har brug for. Det skaber en flok DS18B20, hvoraf hver repræsenterer en flydeværdi, vi vil returnere fra vores sensor (er). Begrænsningerne her er opløsningen, og værdierne skal ligge i området -55, 0… 125, 0. Det kan let opnås - i værste fald være skalering - og er faktisk bedre end de værdier, der kan repræsenteres ved f.eks. DS2438 -værdierne (1,5 til 10V). Alternativt kan en større række værdier indstilles ved at bruge:

setTemperatureRaw (static_cast (værdi * 16,0f));

men læsning og behandling af disse værdier understøttes muligvis ikke af al software, da den er ude af specifikationer.

Det du skal være opmærksom på er, at det maksimale antal slaver i første omgang er begrænset til 8, men kan ændres i "OneWireHub_config.h" ved at øge HUB_SLAVE_LIMIT til 32. Du skal også sørge for at vedtage ONEWIRE_TIME_MSG_HIGH_TIMEOUT, hvis det er nødvendigt af din 1-wire netværk (f.eks. X10), som forklaret i trin 2 i Arduino 1-wire display (144 tegn). Og for at bruge IDE Version> = 1.8.3 til at kompilere og uploade koden til din Arduino.

Her som et eksempel koden til den enhed, jeg bygger for nylig. Da jeg antager, at du ikke skal bruge den samme kombination af sensorer, som jeg gør, vil jeg ikke gå nærmere ind på detaljer her, kontrollere koden og stille spørgsmål, hvis du har brug for hjælp.

Trin 2: Hardware

Hardware
Hardware

Grundlæggende kan alt, hvad du kan slutte til en Arduino, bruges som din foretrukne sensor. Den eneste begrænsning er, at aflæsning af sensoren skal være så hurtig som muligt for at have masser af tid tilbage til 1-leder kommunikationen kan finde sted (giv trin 2 i min instruks om Arduino 1-wire display (144 tegn) i rækkefølge for at få et eksempel).

Et eksempel på mulig hardware kan være en vejrstation som f.eks.:

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

Derudover eller i stedet for dig vil du måske bare bruge selve Arduino som din sensor. Du kan læse mere om det i min instruks om Arduino mindre kendte funktioner - mulige værdier er kildespændingen og den interne temperatur.

Her som et eksempel et billede af enheden, jeg bygger for nylig. Da jeg antager, at du ikke skal bruge den samme kombination af sensorer, som jeg gør, vil jeg ikke gå nærmere ind på detaljer her, kontrollere koden og stille spørgsmål, hvis du har brug for hjælp.

Trin 3: Test enheden

Tilslut det til dit netværk, og kontroller din software for alle ROM -id'er, der er til stede, og de værdier, de returnerer som temperatur.

Trin 4: Tillæg: ATtiny85

Tillæg: ATtiny85
Tillæg: ATtiny85

Enlige enheder (hukommelsesbegrænsning) kan også udføres på en ATtiny85. Dette kræver et par trin, mens vi programmerer ATtiny85 ved hjælp af Arduino Uno som internetudbyder ved hjælp af Arduino IDE:

  • Links

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

    1. Fil> Præferencer> Yderligere Boards Manager -webadresser:
    2. Værktøjer> Board: ??? > Bestyrelseschef …
    3. søg efter: "lille" og installer
  3. upload ISP -skitse til en Uno

    Fil> Eksempler> ArduinoISP> ArduinoISP

  4. indsæt ATtiny85 i programmeringsstikket (nul-kraft) og led det:

    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 Nulstil D10 til ATtiny Pin 1
    5. Arduino Pin GND til ATtiny Pin 4
    6. Arduino Pin VCC til ATtiny Pin 8
    7. (> = 10uF hætte på Arduino Uno RESET pin kan være nødvendig)
  5. vælg ATtiny85 (se billede):

    • Board: "ATtiny25/45/85"
    • Timer 1 Ur: "CPU"
    • B. O. D.: "B. O. D. deaktiveret"
    • LTO (kun 1.6.11 +): "Deaktiveret"
    • Chip: "ATtiny85"
    • Ur: "8 MHz (intern)" (ATtiny85 og ATtiny84 kompatibel)
    • Ur: "16 MHz (PLL)" (alternativ indstilling kun for ATtiny85)
    • Havn: ???
  6. vælg Programmer:

    Værktøjer> Programmerer: "Arduino som ISP" (IKKE "ArduinoISP"!)

  7. indstil sikringsindstillinger (ur osv.):

    Værktøjer> Brænd bootloader

  8. upload denne kode (programmeringsfejl -LED skal være slukket, ellers nulstil den)
  9. ATtinyX5 Pin -layout (ATtiny85):

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

At arbejde med ATTiny85 kræver lidt mere arbejde, da du skal få yderligere biblioteker til I2C comm (adafruit/TinyWireM) og seriel output (TinyDebugSerial). Da hukommelsen er ret begrænset, vil du måske arbejde meget med #define f.eks. for at fjerne seriel fejlfinding. I eksemplet kan du se alt dette kastet sammen.

Til test er det første trin at kontrollere, om LED'en blinker med den korrekte frekvens, 0,5Hz. Tilslut den derefter til 1wire -bussen og tjek for den nye enhed.

Anbefalede: