X
Forum

Forum

DHT11, DHT21 a DTH2...
 
Notifications
Clear all

DHT11, DHT21 a DTH22 sensory přes 1-Wire

91 Posts
20 Users
8 Likes
14.5 K Views
(@budulinek)
Reputable Member
Joined: 7 years ago
Posts: 355
 

Zdar všem,

tady je můj skeč. Není tam žádný limit na počet 1-wire sensorů na sběrnici. Tak můžete otestovat, kolik jich to zvládne na jedné sběrnici.

Můžete si na Arduino nacpat kolik senzorů chcete, v různých kombinacích, jste omezeni jenom dostupnými piny (můžete použít digitál i analog) a RAM (adresy a stavy senzorů se ukládají).

Skeč by měl být "fail-safe", tj. vypořádá se s chybami čtení senzorů. U čínslých  DHT senzorů doporučuji HW řešení (tj. vypínat napájení DHT senzorů v případě chyby - viz skeč a config). Jo a zapomněl jsem zmínit, že u DHT se taky občas doporučuje pull-up odpor. Už nevím kolik, pokud byste to potřebovali, musíte to zjistit. U onewire by mělo (mohlo) fungovat dokonce i "plug-and-play" (skeč periodicky skenuje sběrnice a hledá nové sensory a odstraňujez paměti ty, které nereagují).

 

https://github.com/budulinek/Arduino-multiple-sensors-UDP

 

Pull-requesty na githubu vítány. Pokud byste potřebovali přidat jiné typy senzorů (např. tlak), můžete si kód snadno dopsat. Logika skeče je poměrně jednoduchá.

TODO: dodělat funkce na přijímání příkazů. Tj. skeč by kromě automatického odesílání hodnot (na základě cyklů a hystereze) reagoval i na požadavky (příkazy) zaslané přes UDP.


   
ReplyQuote
(@budulinek)
Reputable Member
Joined: 7 years ago
Posts: 355
 

https://github.com/budulinek/Arduino-multiple-sensors-UDP

Skeč aktualizován:

HW:

  • není potřeba vypínat napájení DHT senzorů, připojte Vcc natrvalo, k Arduinu stačí dovést DATA
  • připomínám, že díky aktualizované Wire knihovně pro I2C je tato sběrnice fail-safe, takže úplně s klidem můžete I2C sběrnici (pro senzor světla BH1750FVI ) protáhnout na několik metrů (nenechte se zmást starými návody na netu)! Senzory BH1750FVI (v kombinaci s nějakými senzory pohybu) vřele doporučuju pro noční osvětlení
  • vše otestováno, kromě DS2438 (pokud někdo má, budu rád za feedback)

SW:

  • použita jiná knihovna pro DHT senzory
  • spolehlivější čtení 1W senzorů. Dřív jsem měl cca 10% chybovost (rušení signálu kvůli souběhu datových a silových kabelů), ale implementoval jsem opakované čtení v případě chyby a dost to pomohlo (jsem na 100% úspěšnosti)

   
Jakub reacted
ReplyQuote
(@david-pr)
Honorable Member
Joined: 6 years ago
Posts: 643
 

Cao,

Mezi vcc a data standartni 4k7 odpor ?


   
ReplyQuote
(@pepahr)
Trusted Member
Joined: 6 years ago
Posts: 73
 

@budulinek takže na ty senzory světla můžu použít např. stávající volné žíly z pohybových  senzorů (cca 10-15m délka?) a to čidlo i mrsknout k němu pod fresnelku - nezkoušel jsi? Jasně že bude úbytek světla, ale to by šlo pak zohlednit v configu asi opravou...

Nechce se mi čekat na aliexpress, je jedno jaký ethernet shield použiju? Např i tento k nanu?: https://arduino-shop.cz/arduino/1676-sitovy-ethernetovy-modul-w5500-tcp-ip-51-stm32-pro-arduino.html?gclid=Cj0KCQiAqdP9BRDVARIsAGSZ8AmiQfe5naQOfpHJmSiGfJ2WSxVRCSKRO8sHaJWLm9TIeEpJ1n-Ky3caAlb2EALw_wcB

 

 


   
ReplyQuote
(@david-pr)
Honorable Member
Joined: 6 years ago
Posts: 643
 

Pro w5500 musis pouzit ethernet2.h knihovnu.


   
ReplyQuote
(@pepahr)
Trusted Member
Joined: 6 years ago
Posts: 73
 

aha ok a ještě jsem našel tento levnější?:

https://www.laskarduino.cz/robotdyn-arduino-nano-ethernet-enc28j60-shield/

vzal bych tam i ty čidla osvitu v arduinu shopou je nemají 🙁


   
ReplyQuote
(@david-pr)
Honorable Member
Joined: 6 years ago
Posts: 643
 

Na ty enc28j60 velky pozor, pokud si dobre pamatuji,maji problem prave s udp komunikaci.


   
ReplyQuote
(@budulinek)
Reputable Member
Joined: 7 years ago
Posts: 355
 

@david-pr

Ano, k DHT22 mezi Vcc a Data doporučuju odpor (umístěný u senzoru). Pokud si pamatuju, dal jsem 3k3, ale 4k7 by taky měl fungovat. Pokud by kabel byl dlouhý a signál pořád špatný, můžeš zkusit slabší odpor.

@pepahr

Přesně tak, na senzory používám volné žíly v UTP kabelech natažených k vypínačům. Tady je foto "dvojboje" PIR senzor + BH1750FVI

IMG 20201118 195115363

Úbytek světla je, ale neřeším to ani ve skeči, ani v Loxone configu. Nepotřebuju přesné luxy, stačí, že to dokáže rozlišit úplná tma <> rozsvícené hlavní světlo <> denní světlo.

I2C sběrnice, kterou používají BH1750FVI senzory, byla vymyšlená na vzdálenosti v rámci jednoho tištěného spoje, takže na netu se dočteš, že absolutní maximum je 50 cm.... Kecy. Mám dva senzory, každý cca 8m. Jednou za bár hodin se mi v UDP logu objeví chyba (podotýkám, že cyklus čtení mám 1s), ale sběrnice běží dál a další čtení senzoru o 1s později už je OK. Takže 15m klidně zkus.

Ten ethernet shield klidně kup. Je tam standardní w5500 čip, který běží na standardní ethernet.h knihovně.

Jinak ale není jedno, jaké shieldy kupujete! Chraň vás ruka páně, abyste bohdá sáhli po čipu ENC28J60!! je to sračka, na kterou potřebuješ jinou (hodně velkou) knihovnu a stejně nemáš jistotu, že se to podaří rozchodit.

w5500je držák, všechny shieldy, co jsem s ním měl bez problémů fungovaly se standardní knihovnou.

 

 


   
ReplyQuote
(@david-pr)
Honorable Member
Joined: 6 years ago
Posts: 643
 

Ta uprava pro ethernet2.h není vubec slozita,nahrajes knihovnu a upravis skec. To samo musis i u toho enc.


   
ReplyQuote
(@budulinek)
Reputable Member
Joined: 7 years ago
Posts: 355
 

Koukám, jaký je rozdíl mezi ethernet a ethernet2 a našel jsem akorát:

https://github.com/adafruit/Ethernet2

Deprecated/Archived Library

This library is no longer going to be used, since the official Arduino library has been updated and works great https://github.com/arduino-libraries/Ethernet


   
ReplyQuote
(@david-pr)
Honorable Member
Joined: 6 years ago
Posts: 643
 

Fakt? Ja musel pro w5500 pouzit orave ethernet2.h, mozma jsem mel jen neaktualni základní. 

Na 1wire ale taky odpor,ne?


   
ReplyQuote
(@pepahr)
Trusted Member
Joined: 6 years ago
Posts: 73
 

@budulinek ok dík zkusím.. koupím i vlhkost poprosím tě pak asi o pomoc při zprovoznění... ☺️

@David jj na 1-wire mám 4.7k odpor...


   
ReplyQuote
(@budulinek)
Reputable Member
Joined: 7 years ago
Posts: 355
 

@david-pr

Jojo, na 1-wire je odpor mezi Vcc a DATA nutností (umístěno u Arduina). Nejdřív jsem taky dal 4k7, ale na mě byl moc silný. Zkoušel jsem všelijaké slabší a nakonec jsem to vyřešil kombinací 1k odpor + 5k potenciometr a "naladím" podle potřeby. Stačí ale jednou nastavit optimální odpor a pak už 1-wire šlape jako hodinky.


   
ReplyQuote
(@_petr_)
Honorable Member
Joined: 6 years ago
Posts: 493
 

Potřeboval bych funkčnost rozšířit o MAX31850K. Dokázal byste mě někdo nasměrovat, jak podporu pro tento senzor doplnit?


   
ReplyQuote
(@budulinek)
Reputable Member
Joined: 7 years ago
Posts: 355
 

@_petr_

Google říká:

Zkus místo https://github.com/milesburton/Arduino-Temperature-Control-Library
použít https://github.com/adafruit/MAX31850_DallasTemp

a místo https://www.pjrc.com/teensy/td_libs_OneWire.html
použít https://github.com/adafruit/MAX31850_OneWire

 

Koukám, že některé funkce (například validFamily() ) v těch alternativních knihovnách chybí, budeš je muset nahradit kódem přímo ve skeči.


   
ReplyQuote
Page 3 / 7
Share: