Spisu treści:
Wideo: Arduino 1-wire Generic Client/Slave Device (czujnik): 4 kroki
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:27
Przeczytaj wprowadzenie i krok 2 mojego instruktażu o tym, jak zbudować 1-przewodowy wyświetlacz Arduino (144 znaków), aby uzyskać więcej informacji o sytuacji i dostępnych bibliotekach. Jak wyjaśniono tam, użyjemy biblioteki OneWire-Hub (emulator urządzenia podrzędnego OneWire) firmy orgua (zwróć uwagę, że wokół są inne widełki) w celu zbudowania ogólnych urządzeń 1-przewodowych (np. czujników) za pomocą Arduino.
Krok 1: Oprogramowanie
Najważniejsze jest stworzenie urządzenia, które w prosty sposób może zwrócić w zasadzie każdą wartość. Oznacza to, że standardowe oprogramowanie może być używane do bezpośredniego odczytu wszystkich wartości (nie jest wymagana konwersacja ani manipulacja binarna). W tym celu potrzebujemy bardzo prostego domyślnego urządzenia 1-wire, które może zwracać pływaki i jest szeroko obsługiwane. Jedyny wybór, jaki znam, to termometr DS18B20 (Monitor baterii DS2438 jest również interesujący i przydatny, ale dość złożony, a przez to powolny wśród innych wad). Biblioteka OneWire-Hub zawiera przykład o nazwie DS18B20_asInterface, który robi dokładnie to, czego potrzebujemy. Tworzy wiązkę DS18B20, z których każda reprezentuje jedną wartość zmiennoprzecinkową, którą chcemy zwrócić z naszych czujników. Ograniczeniami są tutaj rozdzielczość, a wartości muszą mieścić się w zakresie -55, 0 … 125, 0. Można to łatwo osiągnąć – w najgorszym przypadku przeskalować – i jest w rzeczywistości lepsze niż wartości, które można przedstawić np. wartości DS2438 (1,5 do 10 V). Alternatywnie większy zakres wartości można ustawić za pomocą:
setTemperatureRaw(static_cast(value * 16.0f));
ale odczytywanie i przetwarzanie tych wartości może nie być obsługiwane przez wszystkie oprogramowanie, ponieważ nie jest to zgodne ze specyfikacją.
Musisz mieć świadomość, że początkowo maksymalna liczba urządzeń podrzędnych jest ograniczona do 8, ale można ją zmienić w "OneWireHub_config.h", zwiększając HUB_SLAVE_LIMIT do 32. Pamiętaj również, aby zastosować ONEWIRE_TIME_MSG_HIGH_TIMEOUT, jeśli jest to wymagane przez Sieć 1-przewodowa (np. x10), jak wyjaśniono w kroku 2 wyświetlacza 1-przewodowego Arduino (144 znaki). I użyć wersji IDE >= 1.8.3 do kompilacji i przesłania kodu do Arduino.
Tutaj jako przykład kod urządzenia, które zbudowałem bardzo niedawno. Ponieważ zakładam, że nie będziesz używał tej samej kombinacji czujników co ja, nie będę tu wnikał w szczegóły, sprawdzaj kod i zadawaj pytania, jeśli potrzebujesz pomocy.
Krok 2: Sprzęt
Zasadniczo wszystko, co można podłączyć do Arduino, może być używane jako wybrany czujnik. Jedynym ograniczeniem jest to, że odczyt czujnika powinien być tak szybki, jak to możliwe, aby pozostało dużo czasu na komunikację 1-przewodową (por. Krok 2 mojej instrukcji dotyczącej wyświetlacza 1-przewodowego Arduino (144 znaków) w kolejności aby uzyskać przykład).
Przykładem możliwego sprzętu może być stacja pogodowa np.:
https://shop.boxtec.ch/wetter-messer-p-41289.html
Dodatkowo lub zamiast ciebie możesz chcieć użyć samego Arduino jako czujnika. Więcej na ten temat można przeczytać w mojej instrukcji dotyczącej mniej znanych funkcji Arduino - możliwe wartości to napięcie źródła i temperatura wewnętrzna.
Tutaj jako przykład zdjęcie urządzenia, które zbudowałem bardzo niedawno. Ponieważ zakładam, że nie będziesz używał tej samej kombinacji czujników co ja, nie będę tu wnikał w szczegóły, sprawdzaj kod i zadawaj pytania, jeśli potrzebujesz pomocy.
Krok 3: Przetestuj urządzenie
Podłącz go do sieci i sprawdź oprogramowanie pod kątem obecności wszystkich identyfikatorów ROM i wartości, które zwracają jako temperaturę.
Krok 4: Dodatek: ATtiny85
Pojedyncze urządzenia (ograniczenie pamięci) można również wykonać na ATtiny85. Wymaga to kilku kroków, ponieważ programujemy ATtiny85 za pomocą Arduino Uno jako ISP za pomocą Arduino IDE:
-
Spinki do mankietów
- https://plac zabaw.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
- użyj Arduino IDE >=1.8.3
-
zainstaluj opcję ATtiny w IDE
- Plik > Preferencje > Adresy URL menedżera dodatkowych tablic:
- Narzędzia > Tablica: ??? > Zarządzający tablicami…
- wyszukaj: "tiny" i zainstaluj
-
prześlij szkic ISP do Uno
Plik > Przykłady > ArduinoISP > ArduinoISP
-
włóż ATtiny85 do gniazda programowania (zero-force) i podłącz go:
- Pin Arduino MOSI D11 do ATtiny Pin 5
- Pin Arduino MISO D12 do pinu ATtiny 6
- Pin Arduino SCK D13 do pinu ATtiny 7
- Resetowanie pinów Arduino D10 do pinu ATtiny 1
- Pin Arduino GND do ATtiny Pin 4
- Pin Arduino VCC do ATtiny Pin 8
- (>=10uF cap na pinie Arduino Uno RESET może być potrzebny)
-
wybierz ATtiny85 (patrz zdjęcie):
- Tablica: "ATtiny25/45/85"
- Zegar 1 zegara: „CPU”
- BOD: „BOD niepełnosprawny”
- LTO (tylko 1.6.11 +): „Wyłączone”
- Chip: „ATtiny85”
- Zegar: „8 MHz (wewnętrzny)” (kompatybilny z ATtiny85 i ATtiny84)
- Zegar: „16 MHz (PLL)” (alternatywne ustawienie tylko dla ATtiny85)
- Port: ???
-
wybierz Programista:
Narzędzia > Programista: "Arduino jako ISP" (NIE "ArduinoISP" !)
-
ustawić ustawienia bezpiecznika (zegar itp.):
Narzędzia > Nagraj bootloader
- wgraj ten kod (dioda LED błędu programatora musi być wyłączona, w przeciwnym razie zresetuj ją)
-
Układ styków ATtinyX5 (ATtiny85):
- Pin 1: PB5 (RST)
- Pin 2: PB3 (A3) - opcjonalnie podłączony przez 220ohm do 1<-TX
- Pin 3: PB4 (A2) - podłączony do 1-wire DATA
- Pin 4: GND - podłączony do GND
- Pin 5: PB0 (PWM) - podłączony do czujnika I2C SDA
- Pin 6: PB1 (PWM) - podłączony do LED z 4,7k do GND
- Pin 7: PB2 (A1) - podłączony do czujnika I2C SCL
- Pin 8: VCC - podłączony do 5V
Praca z ATTiny85 wymaga nieco więcej pracy, ponieważ potrzebne są dodatkowe biblioteki do komunikacji I2C (adafruit/TinyWireM) i wyjścia szeregowego (TinyDebugSerial). Dodatkowo, ponieważ pamięć jest dość ograniczona, możesz chcieć dużo pracować z #define, np. aby usunąć debugowanie szeregowe. W przykładzie możesz zobaczyć to wszystko razem.
W celu przetestowania pierwszym krokiem jest sprawdzenie, czy dioda LED miga z prawidłową częstotliwością, 0,5 Hz. Następnie podłącz go do magistrali 1wire i sprawdź nowe urządzenie.
Zalecana:
DIY czujnik oddechu z Arduino (przewodzący czujnik rozciągnięcia dzianiny): 7 kroków (ze zdjęciami)
Czujnik oddechu DIY z Arduino (przewodzący czujnik rozciągnięcia dzianiny): Ten czujnik DIY przyjmie postać przewodzącego czujnika rozciągnięcia dzianiny. Będzie owijał się wokół klatki piersiowej/żołądka, a gdy klatka piersiowa/żołądek rozszerza się i kurczy, podobnie czujnik, a w konsekwencji dane wejściowe, które są przesyłane do Arduino. Więc
Zasilany energią słoneczną czujnik temperatury i wilgotności Arduino jako czujnik Oregon 433 mhz: 6 kroków
Czujnik temperatury i wilgotności Arduino zasilany energią słoneczną jako czujnik Oregon 433 mhz: Jest to konstrukcja czujnika temperatury i wilgotności zasilanego energią słoneczną. Czujnik emuluje czujnik Oregon 433 mhz i jest widoczny w bramce Telldus Net. Czujnik ruchu energii słonecznej" z serwisu eBay. Upewnij się, że mówi o cieście 3,7 V
Czujnik dzwonka do drzwi i czujnik temperatury: 6 kroków
Czujnik nacisku i temperatury dzwonka do drzwi: Ulepsza standardowy dzwonek przewodowy do drzwi z modułem esp-12F (esp8266). Instaluje się w samym dzwonku, aby uniknąć jakichkolwiek zmian w okablowaniu. Zapewnia następujące funkcje Wykrywanie przyciśnięć dzwonka do drzwiWysyła powiadomienia na telefon za pośrednictwem sklepów IFTTTS
Solar Irradiance Device (SID): czujnik solarny oparty na Arduino: 9 kroków
Solar Irradiance Device (SID): czujnik nasłonecznienia oparty na Arduino: Solar Irradiance Device (SID) mierzy jasność słońca i jest specjalnie zaprojektowany do użytku w klasie. Zbudowane są z wykorzystaniem Arduino, co pozwala na ich tworzenie przez każdego, od gimnazjalistów po dorosłych. Ta inst
Czujnik dotykowy i czujnik dźwięku kontrolujący światła AC/DC: 5 kroków
Czujnik dotykowy i czujnik dźwięku kontrolujący światła AC/DC: To mój pierwszy projekt i działa w oparciu o dwa podstawowe czujniki, jeden to czujnik dotykowy, a drugi to czujnik dźwięku, po naciśnięciu panelu dotykowego na czujniku dotykowym włącza się światło AC ON, jeśli go zwolnisz, światło będzie wyłączone i to samo