Innehållsförteckning:
Video: Arduino 1-wire Generic Client/Slave Device (Sensor): 4 Steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:38
Läs introduktionen och steg 2 i min instruktion om hur man bygger en Arduino 1-tråds display (144 tecken) för att få mer information om situationen och tillgängliga bibliotek. Som förklarat där kommer vi att använda OneWire-Hub-biblioteket (OneWire-slavenhetsemulator) av orgua (var uppmärksam på att det finns andra gafflar runt) för att bygga generiska 1-trådiga enheter (t.ex. sensorer) med hjälp av en Arduino.
Steg 1: Programvara
Det viktigaste är att göra en enhet som kan returnera i princip vilken typ av värde som helst på ett enkelt sätt. Det betyder att standardprogramvara kan användas för att läsa alla värden direkt (ingen konversation eller binär manipulation behövs). För det behöver vi en mycket enkel standard 1-tråds enhet som kan returnera flottörer och som stöds i stor utsträckning. Det enda valet jag känner till är DS18B20 -termometern (DS2438 batteriövervakare är också intressant och användbar men ganska komplex och därmed långsam bland andra nackdelar). OneWire-Hub-biblioteket innehåller ett exempel som heter DS18B20_asInterface som gör precis vad vi behöver. Det skapar ett gäng DS18B20 varav var och en representerar ett flottörvärde som vi vill returnera från våra sensorer. Restriktionerna här är upplösningen och värdena måste ligga i intervallet -55, 0… 125, 0. Det kan lätt uppnås - i värsta fall vara omskalning - och är faktiskt bättre än de värden som kan representeras av t.ex. DS2438 -värdena (1,5 till 10V). Alternativt kan ett större värdeintervall ställas in med hjälp av:
setTemperatureRaw (static_cast (värde * 16,0f));
men läsning och bearbetning av dessa värden kanske inte stöds av all programvara eftersom det är ur specifikationer.
Vad du måste vara medveten om är att initialt det maximala antalet slavar är begränsat till 8 men kan ändras i "OneWireHub_config.h" genom att öka HUB_SLAVE_LIMIT till 32. Du måste också se till att anta ONEWIRE_TIME_MSG_HIGH_TIMEOUT om det behövs av din 1-tråds nätverk (t.ex. x10), som förklaras i steg 2 i Arduino 1-tråds display (144 tecken). Och för att använda IDE -versionen> = 1.8.3 för att kompilera och ladda upp koden till din Arduino.
Här som ett exempel koden för den enhet jag bygger mycket nyligen. Eftersom jag antar att du inte använder samma kombination av sensorer som jag gör kommer jag inte att gå mer in på detaljer här, kolla koden och ställ frågor om du behöver hjälp.
Steg 2: Hårdvara
I princip kan allt du kan ansluta till en Arduino användas som din valda sensor. Den enda begränsningen är att läsa av sensorn ska vara så snabb som möjligt för att ha gott om tid kvar för 1-trådskommunikationen (skicka steg 2 i min instruktion om Arduino 1-tråds display (144 tecken) i ordning för att få ett exempel).
Ett exempel på möjlig hårdvara kan vara en väderstation som t.ex.
https://shop.boxtec.ch/wetter-messer-p-41289.html
Dessutom eller istället för dig kanske du vill använda själva Arduino som din sensor. Du kan läsa mer om det i min instruktion om Arduino Mindre kända funktioner - möjliga värden är källspänningen och den inre temperaturen.
Här som ett exempel en bild av enheten jag bygger mycket nyligen. Eftersom jag antar att du inte använder samma kombination av sensorer som jag gör kommer jag inte att gå in på detaljer här, kolla koden och ställ frågor om du behöver hjälp.
Steg 3: Testa enheten
Anslut den till ditt nätverk och kontrollera din programvara för att alla ROM -ID ska finnas och värdena som de returnerar som temperatur.
Steg 4: Bilaga: ATtiny85
Enstaka enheter (minnesbegränsning) kan också göras på en ATtiny85. Detta kräver några steg när vi programmerar ATtiny85 med Arduino Uno som ISP med hjälp av Arduino IDE:
-
Länkar
- 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
- använd Arduino IDE> = 1.8.3
-
installera ATtiny -alternativet till IDE
- Arkiv> Inställningar> Ytterligare webbadresser för Boards Manager:
- Verktyg> Styrelse: ??? > Styrelsechef …
- Sök efter: "liten" och installera
-
ladda upp ISP -skiss till en Uno
Arkiv> Exempel> ArduinoISP> ArduinoISP
-
sätt in ATtiny85 i programmeringsuttaget (nollkraft) och anslut det till:
- Arduino Pin MOSI D11 till ATtiny Pin 5
- Arduino Pin MISO D12 till ATtiny Pin 6
- Arduino Pin SCK D13 till ATtiny Pin 7
- Arduino Pin Återställ D10 till ATtiny Pin 1
- Arduino Pin GND till ATtiny Pin 4
- Arduino Pin VCC till ATtiny Pin 8
- (> = 10uF lock på Arduino Uno RESET pin kan behövas)
-
välj ATtiny85 (se bild):
- Bräda: "ATtiny25/45/85"
- Timer 1 Klocka: "CPU"
- B. O. D.: "B. O. D. inaktiverad"
- LTO (endast 1.6.11 +): "Inaktiverad"
- Chip: "ATtiny85"
- Klocka: "8 MHz (intern)" (kompatibel med ATtiny85 och ATtiny84)
- Klocka: "16 MHz (PLL)" (alternativ inställning endast för ATtiny85)
- Hamn: ???
-
välj programmerare:
Verktyg> Programmerare: "Arduino som ISP" (INTE "ArduinoISP"!)
-
ställ in säkringsinställningar (klocka etc.):
Verktyg> Burn Bootloader
- ladda upp den här koden (programmeringsfel -lysdioden måste vara släckt, annars återställ den)
-
ATtinyX5 Pin -layout (ATtiny85):
- Pin 1: PB5 (RST)
- Stift 2: PB3 (A3) - valfritt ansluten via 220ohm till 1 <-TX
- Stift 3: PB4 (A2) - ansluten till 1 -tråds DATA
- Pin 4: GND - ansluten till GND
- Stift 5: PB0 (PWM) - ansluten till sensor I2C SDA
- Stift 6: PB1 (PWM) - ansluten till LED med 4,7k till GND
- Stift 7: PB2 (A1) - ansluten till sensor I2C SCL
- Stift 8: VCC - ansluten till 5V
Att arbeta med ATTiny85 kräver lite mer arbete eftersom du behöver få ytterligare bibliotek för I2C comm (adafruit/TinyWireM) och seriell utmatning (TinyDebugSerial). Eftersom minnet är ganska begränsat kanske du vill jobba mycket med #define t.ex. för att ta bort seriell felsökning. I exemplet kan du se allt detta kastat ihop.
För testning är det första steget att kontrollera om lysdioden blinkar med rätt frekvens, 0,5 Hz. Anslut den sedan till 1wire -bussen och leta efter den nya enheten.
Rekommenderad:
ESP32 Camera Picture Logging Client: 5 steg
ESP32 Camera Picture Logging Client: ESP32 Camera Picture Logging Client-projektet är koncentrerat till att använda ESP32-mikrokontroller för att ta bilder och skicka den till central server via Internet med ESP32-modulens WiFi-kapacitet. Huvudkretskortet har utformats med två huvudmål i åtanke:
Slave Trigger Flash Mark II: 6 steg (med bilder)
Slave Trigger Flash Mark II: I den här instruktören kommer jag att förklara hur man gör en riktig (optisk) slavutlösare med ett minimum av komponenter. Det finns många komplexa mönster du kan hitta på internet, denna design är en mycket enkel och fungerar väl i starkt och svagt ljus
Slave Trigger Flash: 4 steg (med bilder)
Slave Trigger Flash: I denna instruktiva förklarar jag hur man gör en riktig (optisk) slavutlösare med ett minimum av komponenter. Det finns många komplexa mönster du kan hitta på internet, denna design är en mycket enkel och fungerar bra i ljus och svagt upplyst omgivning
Generic Switch Hijacker: 3 steg
Generic Switch Hijacker: Den här artikeln beskriver hur man bygger en solid state -mikrokontroller -enhet som styr fysiska switchar. Det är mycket billigt att göra (4 $ eller så), förutsatt att du har en mikrokontroller programmerare. Kretsen i sig är av trivial komplexitet. Detta p
Smart Master/Slave Power Strip för din dator [mod] (självavstängning men noll standby): 6 steg (med bilder)
Smart Master/Slave Power Strip för din PC [mod] (självavstängning men noll standby): Av bör vara avstängd. Och användbarheten borde vara bra. För att göra det kort: Vi hittade inte rätt produkt där ute, så vi slutade modda en.Vi köpte en " Energy Saver " kraftlister från Zweibrueder. Enheterna är mycket solida och inte särskilt e