Ultrazvukový plašič

Protože bydlíme blízko lesa a často nás navštěvují lišky, kuny, myši, ovce a netopýři, začal jsem vymýšlet jak tyto návštěvníky odehnat. Narazil jsem na mnoho druhů “profi” plašičů (např. od firmy Deramax) a také několik DIY (udělěj si sám) konstrukcí (např. TADY , TADY nebo TADY).

Protože cena “z obchodu” nebyla nízká a v šuplíku jsem měl od našich čínských přátel (eBay, AliExpress) dostatek součástek o dalším postupu bylo rozhodnuto – jde se bastlit :).

Teorie

Všechny ultrazvukové plašiče generují zvukový signál na za horní hranicí slyšitelnosti lidského ucha (cca 22 kHz). Jejich cílem je vytvořit “nepříjemné” prostředí, ve kterém se nebudou zvířata cítit dobře a proto jej opustí a nebudou se do něj chtít vrátit. Doporučuje se, aby se generovaný signál mírně rozmítal a vetřelec si tak na něj nemohl zvyknout. Výrobci také uvádí, že zařízení nemusí na vetřelce zapůsobit, pokud má ve chráněném prostoru mláďata nebo trpní vadou sluchu. Z dokumentací plašičů lze vyčíst rozsahy frekvencí pro uvažované účely použití:

  • 22 – 26 kHz (psi a kočky)
  • 22 – 30 kHz (divoká zvěř, srnci, jeleni, lišky, zajíci)
  • 30 – 38 kHz (netopýři) .

Komponenty

Budeme tedy potřebovat generovat zvukový signál v rozsahu cca 20 kHz – 40 kHz. K tomu nám poslouží modul generátoru AD9833 . Ten dokáže generovat signál 0 – 12,5 MHz s krokem 0,1 Hz s amplitudou cca 0,6 V.

AD9833

Vygenerovaný signál si zesílíme pomocí zesilovače TDA7279 a na jehov výstup připojíme piezo reproduktory. Zesilovač pro provoz potřebuje napětí v rozsahu 6 – 12V.

TDA7279
Piezo reproduktor 30 kHz
Piezo reproduktor 30 kHz

Nejdůležitější komponenta je NodeMCU V0.9 s procesorem ESP8266 . Díky němu se bude vše nastavovat přes webové rozhraní.

NodeMCU (ESP8266)

Napájení napětí pro NodeMCU je 5V. Pro získání napětí 5V (z 12 V) použijeme STEP-DOWN konvertor (s klasickým stabilizátorem bychom zbytečně “topili”).

Step-down kontertor XL4015

Pro WEB sever by se hodilo uchovávat správný čas. Na to použijeme modul hodin reálného času DS3231 s teplotně kompenzovaným krystalem, který zaručuje po ročním běhu odchylku pouze 1 s ! (info ZDE).

DS3231

Abychom nevyráběli jen hloupé “pípátko”, doplníme do našeho zařízení čidlo teploty a vlhkosti DHT22.

DHT22

Požadované vlastnosti

Web server bude umožňovat ovládat a nastavovat celé zařízení. Bude možné definovat až 50 úloh. Pro každou úlohu bude možné nastavit:

  • čas, kdy úloha poběží (v hodinovém rozlišení)
  • aktivní dobu úlohy a dobu pauzy (např. úloha poběží 30 sekund a potom bude 60 sekund “odpočívat”)
  • bude možné nastavit frekvenci “od” a “do” v Hz která bude během aktivní doby úlohy přelaďována
  • bude možné nastavit přerušování generovaného signálu v rozsahu 0 – 5 Hz (na přerušovaný signál si vetřelci hůře zvyknou) .

Zařízení bude mít možnost fungovat jako AP (výchozí hodnota) a nebo KLIENT. Pokud bude v režimu KLIENT a bude mít přístup k internetu, automaticky si nastaví datum a čas z NTP serveru (jinak se použije čas z DS3231). Čas se automaticky posune při přechodu z letního na zimní (a opačně).

Realizace

Po několika neúspěšných pokusech o “nažehlení” navrženého plošného spoje jsem přistoupil k variantě brod = použil jsem univerzální plošný spoj a vše prodrátoval podle schématu.

Schéma zapojení

Schéma je jednoduché a jasné. Na pin A0 (ADC0) jsem připojil dva rezistory 1M a 220k, které společně umožňují pomocí vestavěného AD převodníku v ESP8266 měřit napětí až do hodnoty cca 14,45 V (což pro měření napětí 12 V baterie bude dostačující). Pokud by někomu nebylo jasné jak, tak schéma NodeMCU to osvětlí.

Schéma NodeMCU

NodeMCU má totiž na své desce na vstup ADC0 (který snese napětí v rozsahu pouze 0 – 1 V) připojen dělič. Tento dělič umožňuje na vstup A0 přivést napětí až o velikosti 3,2 V. Po doplnění rezistorů (1M a 220k) zvětšíme rozsah na už dříve uvedených 14,45 V (skutečná hodnota odporu přidaných rezistorů podle multimetru je 1M125).

Tranzistor Q1 (“česky” by bylo T1) ve schématu umožňuje přerušovat generovaný signál a tranzistor Q2 umí vypnout zesilovač v době, kdy není aktivní žádná úloha.

Generátor AD9833 je připojen přes SPI rozhraní:

  • SDATA -> MOSI (D7)
  • SCLK -> CLK (D5)
  • FSYNC -> CS (D8) .

Hodiny reálného času DS3231 komunikují přes I2C sběrnici:

  • SDA -> GPIO5 (D1)
  • SCL -> GPIO4 (D2)

ESP8266 nemá hardwarovou podporu I2C. I2C je tedy implementována softwarově (knihovna).

Komponenty jsem umístil do krabičky od firmy Solera (153x110x65). Jejich krabičky jsem si pro venkovní použití oblíbil. Nejsou přiliš drahé, snadno se otevírají (šroubek stačí otočit jen o 1/4 otáčky) a mají krytí IP55.

Pro naprogramování NodeMCU (ESP12 = ESP8266) jsem zvolil IDE PlatformIO. Je zdarma a obsahuje podporu Arduino frameworku (můžeme tedy využít výhodu velké Arduino komunity). Oproti Arduino IDE má však zabudovaný intellisence (našeptávač kódu), který proces programování značně zpříjemňuje. Pro některé platformy (pro ESP8266 bohužel ne) umožňuje dokonce debugování (krokování) programu. PlatformIO je plug-in do Visual Studio Code (VSCode). VSCode je zdarma pro osobní i komereční použití (snad to tak i zůstane).

Testování

Před zahájením testů jsem se pokusil odhadnout spotřebu. V klidovém režimu (neběží žádná úloha), zařízení odebírá cca 50 mA. Pokud běží úloha (zesilovač pracuje), je proudový odběr cca 300 mA. Na autobaterii s kapacitou 45 Ah a uvažované době plašení 7 h/den by zařízení mělo pracovat 15 dnů.

Bohužel moje stará autobaterie nevydržela ani dva dny provozu. Při ranní kontrole bylo její napětí (při připojeném plašiči) jen cca 6,5 V. Pro napájení jsem tedy použil 12 V síťový transformátor. Tento test jsem ale ve 03:00 ráno musel přerušit, protože zařízení slabě pískalo (bylo slyšet) a to nebylo pro spánek příjemné.

Když jsem později laboroval a zjišťoval, zda mám sluch jako kuna nebo je něco špatně, zjistil jsem, že pokud snížím hlasitost (potenciometrem na zesilovači), pískání ustane. Také jsem zjistil, že pískání vydává jen jeden piezo reproduktor (ze dvou zapojených). A byl to právě ten, který po doručení (z číny) nefungoval a který jsem musel rozebrat a “poštelovat” (+ a – drát uvnitř reproduktorku byl zkratovaný a tak piezo nepískalo). Po odpojení vadného reproduktoru už se pískání neobjevilo ani při maximálním zesílení zesilovače.

Při provozu ze síťového transformátoru se však pískání opět vyskytlo. Jedná se o spínaný zdroj a po “zemi” (GND) se z něj nejspíš šíří rušení které produkuje.

Jediným nepříjemným zvukem (při napájení z baterie) je tak slabé cvakání v důsledku přelaďování generátoru.

Když během testování něco pokazíme (např. nastavím špatné SSID nebo heslo pro připojení do WiFi sítě nebo pro přihlášení k našemu serveru), můžeme nastavení resetovat. K tomu slouží tlačítko “USER”. Po připojení napájení se na několik sekund rozsvítí dioda nedaleko tlačítka. Pokud tlačítko během svícení diody zmáčkneme a držíme, dojde k resetu nastavení. Po resetu se zařízení přepne do AP módu (bez hesla).

Závěr

Testy ukázaly, že zařízení po technické stránce funguje. To znamená, že generátor generuje frekvenci o požadované hodnotě a úlohy se spouští podle plánu. Bylo ověřeno, že při přechodu času z letního na zimní (a zpět) dojde k automatickému posunu času. Zařízení v režimu CLIENT si dokáže úspěšně načíst správný čas z NTP serveru.

Je vhodné vše napájet z baterie nebo z klasického (ne spínaného) transformátoru. Pro úsporu peněz i napájecího proudu by bylo vhodné použít pouze jednokanálový zesilovač a jeden reproduktor. Pokud bychom chtěli spotřebu snížit ještě víc, použijeme méně výkonný (nebo žádný) zesilovač.

První noc provozu (na baterii) se podle kamerového systému návštěvníci (lišky a kuny) neobjevily. Další noc plašič v provozu nebyl (prováděl jsem na něm ještě nějaká vylepšení) a návštěvníci opět dorazili. Při provozu na síťový transformátor byl test ve 3 hodiny ráno přerušen kvůli výše uvedenému pískání. Jestli je plašič tak nepříjemný a opravdu plaší prozatím nelze jednoznačně potvrdit nebo vyvrátit. Bude potřeba dalšího testování.

Pro zájemce přikládám odkaz na GITLab, kde je možné si stáhnout zdrojové kódy pro ESP8266.

4 thoughts on “Ultrazvukový plašič”

  1. Dobrý den, hezká konstrukce, jen prosím o info – kompilace ok , nahrání také, spustí se AP mod dhcp jede ale web stránka ukáže 404 not found. Dle konzole vše spi i2c ok je v AP modu a cca 2 vteřinové smyčče čte udaje z hodinového modulu

    • S tím jsem se nesetkal. Napadá mě, jestli jsi nezapomněl nahrát obsah filesystému pro ESP-čko. V Platofmiu to “provede” položka “Upload File System image”. Nahraje to obsah složky “data” do ESP. Odtud si potom ESP-čko tahá stránky pro web server.

  2. Tak bohužel tahle položka v sw není, build projede v pohodě. pokud by jste to mel primo v .bin bylo by to lepší. Bud mám novou verzu studia a v te to nejde ..:/
    Checking size .pio\build\nodemcu\firmware.elf
    Memory Usage -> http://bit.ly/pio-memory-usage
    DATA: [==== ] 42.8% (used 35032 bytes from 81920 bytes)
    PROGRAM: [==== ] 36.5% (used 380996 bytes from 1044464 bytes)
    Configuring upload protocol…
    AVAILABLE: espota, esptool
    CURRENT: upload_protocol = esptool
    Looking for upload port…

Leave a Comment

*


The maximum upload file size: 5 MB.
You can upload: image, audio, video, document, spreadsheet, interactive, text, archive, code, other.