Obsah:

1-drátové generické klientské/podřízené zařízení (senzor) Arduino: 4 kroky
1-drátové generické klientské/podřízené zařízení (senzor) Arduino: 4 kroky

Video: 1-drátové generické klientské/podřízené zařízení (senzor) Arduino: 4 kroky

Video: 1-drátové generické klientské/podřízené zařízení (senzor) Arduino: 4 kroky
Video: Projekt 146 – Generátor statických webových stránek 2024, Červenec
Anonim
Generické klientské/podřízené zařízení Arduino (snímač)
Generické klientské/podřízené zařízení Arduino (snímač)

Přečtěte si prosím úvod a krok 2 mého návodu k sestavení 1vodičového displeje Arduino (144 znaků), abyste získali více informací o situaci a dostupných knihovnách. Jak je zde vysvětleno, použijeme knihovnu OneWire-Hub (emulátor zařízení OneWire slave) od orgua (pozor, kolem jsou další vidlice), abychom mohli stavět generická 1vodičová zařízení (např. Senzory) pomocí Arduina.

Krok 1: Software

Nejdůležitější věcí je vytvořit zařízení, které dokáže jednoduchým způsobem vrátit v podstatě jakýkoli druh hodnoty. To znamená, že ke čtení všech hodnot lze použít standardní software (není třeba konverzace ani binární manipulace). K tomu potřebujeme velmi jednoduché výchozí 1vodičové zařízení, které dokáže vracet plováky a je široce podporováno. Jedinou volbou, kterou znám, je teploměr DS18B20 (monitor baterie DS2438 je také zajímavý a užitečný, ale poměrně složitý, a tedy pomalý mimo jiné nevýhody). Knihovna OneWire-Hub obsahuje příklad nazvaný DS18B20_asInterface, který dělá přesně to, co potřebujeme. Vytváří spoustu DS18B20, z nichž každý představuje jednu pohyblivou hodnotu, kterou chceme vrátit z našich senzorů. Omezeními jsou zde rozlišení a hodnoty musí být v rozsahu -55, 0… 125, 0. Toho lze snadno dosáhnout - v nejhorším případě je změna měřítka - a ve skutečnosti je lepší než hodnoty, které lze vyjádřit např. hodnoty DS2438 (1,5 až 10 V). Alternativně lze nastavit větší rozsah hodnot pomocí:

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

čtení a zpracování těchto hodnot však nemusí být podporováno veškerým softwarem, protože je mimo specifikace.

Musíte si uvědomit, že zpočátku je maximální počet podřízených omezen na 8, ale lze jej změnit v „OneWireHub_config.h“zvýšením HUB_SLAVE_LIMIT až na 32. Také se musíte ujistit, že v případě potřeby přijmete ONEWIRE_TIME_MSG_HIGH_TIMEOUT 1vodičová síť (např. X10), jak je vysvětleno v kroku 2 1vodičového displeje Arduino (144 znaků). A použít verzi IDE> = 1.8.3 ke kompilaci a nahrání kódu do vašeho Arduina.

Zde jako příklad kód zařízení, které jsem postavil velmi nedávno. Předpokládám, že nepoužíváte stejnou kombinaci senzorů jako já, nebudu se zde dále rozepisovat, zkontrolujte kód a pokládejte otázky, pokud potřebujete pomoc.

Krok 2: Hardware

Hardware
Hardware

V podstatě cokoli, co můžete připojit k Arduinu, lze použít jako senzor, který si vyberete. Jediným omezením je, že čtení senzoru by mělo být co nejrychlejší, aby měl dostatek času na to, aby mohla proběhnout 1vodičová komunikace (sdělte krok 2 mého pokynu o 1vodičovém displeji Arduino (144 znaků) v pořadí získat příklad).

Příkladem možného hardwaru může být meteorologická stanice, například:

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

Navíc nebo místo vás možná budete chtít použít jako senzor samotné Arduino. Více si o tom můžete přečíst v mé instruktáži o méně známých funkcích Arduina - možné hodnoty jsou napětí zdroje a vnitřní teplota.

Zde jako příklad obrázek zařízení, které jsem postavil velmi nedávno. Předpokládám, že nepoužíváte stejnou kombinaci senzorů jako já, nebudu se zde dále rozepisovat, zkontrolujte kód a pokládejte otázky, pokud potřebujete pomoc.

Krok 3: Otestujte zařízení

Připojte jej k síti a zkontrolujte, zda váš software obsahuje všechna ID ROM a hodnoty, které vrací jako teplotu.

Krok 4: Dodatek: ATtiny85

Dodatek: ATtiny85
Dodatek: ATtiny85

Jednotlivá zařízení (omezení paměti) lze také provést na ATtiny85. Při programování ATtiny85 pomocí Arduino Uno jako ISP s pomocí Arduino IDE to vyžaduje několik kroků:

  • Odkazy

    • 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. použijte Arduino IDE> = 1.8.3
  2. nainstalujte možnost ATtiny do IDE

    1. Soubor> Předvolby> Adresy URL dalších správců desek:
    2. Nástroje> Deska: ??? > Správce desek…
    3. vyhledejte: „maličký“a nainstalujte
  3. nahrajte skicu ISP na Uno

    Soubor> Příklady> ArduinoISP> ArduinoISP

  4. vložte ATtiny85 do programovací (nulové) zásuvky a zapojte jej:

    1. Arduino Pin MOSI D11 na ATtiny Pin 5
    2. Arduino Pin MISO D12 na ATtiny Pin 6
    3. Arduino Pin SCK D13 na ATtiny Pin 7
    4. Pin Arduino Resetujte D10 na ATtiny Pin 1
    5. Arduino Pin GND na ATtiny Pin 4
    6. Arduino Pin VCC na ATtiny Pin 8
    7. (> = 10uF cap na pinu Arduino Uno RESET může být potřeba)
  5. vyberte ATtiny85 (viz obrázek):

    • Deska: "ATtiny25/45/85"
    • Hodiny časovače 1: "CPU"
    • B. O. D.: "B. O. D. zakázáno"
    • LTO (pouze 1.6.11 +): "Zakázáno"
    • Čip: "ATtiny85"
    • Hodiny: „8 MHz (interní)“(kompatibilní s ATtiny85 a ATtiny84)
    • Hodiny: „16 MHz (PLL)“(alternativní nastavení pouze pro ATtiny85)
    • Přístav: ???
  6. vyberte programátora:

    Nástroje> Programátor: „Arduino jako ISP“(NE „ArduinoISP“!)

  7. nastavit nastavení pojistek (hodiny atd.):

    Nástroje> Vypálit bootloader

  8. nahrajte tento kód (kontrolka LED chyby programátoru musí zhasnout, jinak ji resetujte)
  9. Rozložení pinů ATtinyX5 (ATtiny85):

    1. Pin 1: PB5 (RST)
    2. Pin 2: PB3 (A3) - volitelně připojen přes 220 ohmů k 1 <-TX
    3. Pin 3: PB4 (A2) - připojen k 1vodičovému DATA
    4. Pin 4: GND - připojeno k GND
    5. Pin 5: PB0 (PWM) - připojeno k senzoru I2C SDA
    6. Pin 6: PB1 (PWM) - připojeno k LED s 4,7 k GND
    7. Pin 7: PB2 (A1) - připojeno k senzoru I2C SCL
    8. Pin 8: VCC - připojeno k 5V

Práce s ATTiny85 vyžaduje trochu více práce, protože potřebujete další knihovny pro I2C comm (adafruit/TinyWireM) a sériový výstup (TinyDebugSerial). Navíc, protože paměť je poměrně omezená, možná budete chtít hodně pracovat s #define, např. k odstranění sériového ladění. V příkladu můžete vidět, jak je to všechno pohromadě.

Při testování je prvním krokem kontrola, zda LED dioda bliká se správnou frekvencí 0,5 Hz. Poté jej připojte ke sběrnici 1wire a zkontrolujte nové zařízení.

Doporučuje: