Indholdsfortegnelse:
Video: Arduino 1-wire Generic Client/Slave Device (Sensor): 4 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:26
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
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
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
- brug Arduino IDE> = 1.8.3
-
installer ATtiny option til IDE
- Fil> Præferencer> Yderligere Boards Manager -webadresser:
- Værktøjer> Board: ??? > Bestyrelseschef …
- søg efter: "lille" og installer
-
upload ISP -skitse til en Uno
Fil> Eksempler> ArduinoISP> ArduinoISP
-
indsæt ATtiny85 i programmeringsstikket (nul-kraft) og led det:
- Arduino Pin MOSI D11 til ATtiny Pin 5
- Arduino Pin MISO D12 til ATtiny Pin 6
- Arduino Pin SCK D13 til ATtiny Pin 7
- Arduino Pin Nulstil D10 til ATtiny Pin 1
- Arduino Pin GND til ATtiny Pin 4
- Arduino Pin VCC til ATtiny Pin 8
- (> = 10uF hætte på Arduino Uno RESET pin kan være nødvendig)
-
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: ???
-
vælg Programmer:
Værktøjer> Programmerer: "Arduino som ISP" (IKKE "ArduinoISP"!)
-
indstil sikringsindstillinger (ur osv.):
Værktøjer> Brænd bootloader
- upload denne kode (programmeringsfejl -LED skal være slukket, ellers nulstil den)
-
ATtinyX5 Pin -layout (ATtiny85):
- Pin 1: PB5 (RST)
- Pin 2: PB3 (A3) - valgfri tilsluttet via 220ohm til 1 <-TX
- Pin 3: PB4 (A2) - tilsluttet 1 -leder DATA
- Pin 4: GND - tilsluttet GND
- Pin 5: PB0 (PWM) - tilsluttet sensor I2C SDA
- Pin 6: PB1 (PWM) - tilsluttet LED med 4,7k til GND
- Pin 7: PB2 (A1) - tilsluttet sensor I2C SCL
- 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:
[Home IoT] ESP8266 MQTT Client Device: 7 trin
[Home IoT] ESP8266 MQTT Client Device: Det er interessant at bruge en billig WiFi-aktiveret MCU med MQTT-protokollen til at styre enhederne, f.eks. Den automatiske vandføder til min kat. Der er min blog for mere detaljeret information (https://regishsu.blogspot.com/2019/07/home-iot-esp…Spe
ESP32 Camera Picture Logging Client: 5 trin
ESP32 Camera Picture Logging Client: ESP32 Camera Picture Logging Client-projektet er koncentreret om at bruge ESP32-mikrokontroller til at tage billeder og sende det til central server via internettet ved hjælp af ESP32-modulets WiFi-funktion. Hovedprintkort er designet med to hovedmål for øje:
IOT123 - ASSIMILATE SENSOR HUB: ICOS10 GENERIC SHELL (IDC) MONTERING: 6 trin
IOT123 - ASSIMILATE SENSOR HUB: ICOS10 GENERIC SHELL (IDC) MONTERING: BEMÆRK Dette er en forbedret (kredsløbssikkerhed) version af ASSIMILATE SENSOR HUB: ICOS10 GENERIC SHELL (HOOKUP WIRE) Assembly. Det samles hurtigere og har et kredsløb af højere kvalitet, men koster mere (~ $ 10 ekstra, hvis det understøtter 10 sensorer). Den vigtigste fe
IOT123 - I2C MURTON PROTOTYPING SLAVE: 3 trin
IOT123 - I2C BRICK PROTOTYPING SLAVE: Mens jeg udviklede den nyeste ASSIMILATE ACTOR (KY -019 RELAY), blev et generisk dev -bord kastet sammen for at spare mig for noget ekstra arbejde ved mit skrivebord. Den har standard pinouts på I2C IOT123 BRICK, men tillader brugerdefinerede forbindelser til sensoren fra ATT
HC - 06 (Slave Module) Ændring af "NAME" uden brug "Monitor Serial Arduino" der "Let fungerer": Fejlfri måde!: 3 trin
HC - 06 (slave -modul) Ændring af "NAME" uden brug "Monitor Serial Arduino" … der "Let fungerer": Fejlfri måde!: Efter " Lang tid " forsøger at ændre navn på HC - 06 (slave -modul) ved hjælp af " seriel monitor af Arduino, uden " Succes ", jeg fandt en anden nem måde og jeg deler nu! Hav det sjovt venner