Prenos cisla z jednoho arduina na druhy pomoci TX,RX

Uživatelský avatar
Caster
Příspěvky: 380
Registrován: 11 zář 2019, 09:02
Reputation: 0

Re: Prenos cisla z jednoho arduina na druhy pomoci TX,RX

Příspěvek od Caster » 31 bře 2021, 13:27

Zrovna dokončuji program pro ATtiny202, který nahradí teplotní senzor Oregon Sientific THN132N a zobrazí teplotu na displeji základnové stanice Oregon Sientific. Data jsou zabezpečena kontrolním součtem a navíc ještě CRC. Pro sichr se ještě posílají 2x za sebou viz popis protokolu zde (čidlo THN132N používá verzi 2.1). Reálná data zachycená z přenosu originálního čidla. Jde o tzv. Manchester kód který pak posílám na vysílač 433 MHz.

Pro generování stejných dat, jako u originálního čidla, používám u ATtiny202:

RTC pro probuzení MCU z režimu spánku každých 30 sekund
ADC pro měření interní teploty MCU s přesností na desetiny °C
USART v synchronním režimu pro posílání dat rychlostí 1024 bit/s
CCL programovatelnou logiku pro generování Manchester kódu
TCB pro generování pauzy 9,36 ms mezi dvěma sériemi odesílaných dat
AC komparátor pro sledování poklesu napětí baterie AA pod 1,1 V

Uživatelský avatar
Caster
Příspěvky: 380
Registrován: 11 zář 2019, 09:02
Reputation: 0

Re: Prenos cisla z jednoho arduina na druhy pomoci TX,RX

Příspěvek od Caster » 02 dub 2021, 11:10

Zkoušení na breadboardu. Zbývá už jen nechat vyrobit plošný spoj s měničem napětí 1,5 V na 3,3V (MCP16251) a dát do krabičky.

Na osciloscopu je vidět číslo 25,1°C. Žlutá = XCK 1024 Hz, fialová = generováný signál (číslice "5"), modrá = signál z přijímače 433 MHz - odhalil jsem tím špatný kontakt u vysílače, údaje se nevysílaly na displej.

V programu (C++) není použita žádná knihovna. Lze ho také použít k zobrazení jakéhokoliv číselného údaje +-xx.x na displeji základnové stanice Oregon.

Obrázek

Uživatelský avatar
Caster
Příspěvky: 380
Registrován: 11 zář 2019, 09:02
Reputation: 0

Re: Prenos cisla z jednoho arduina na druhy pomoci TX,RX

Příspěvek od Caster » 03 kvě 2021, 21:58

Věc se podařilo dotáhnout do zdárného konce. Jen s pájením malých součástech nejsem ještě tak zběhlý. Vše ale funguje jak má. ATtiny202 (U2) po probuzení ze spánku měří každých 43 sekund s přesností na 0,1°C svou vnitřní teplotu a posílá ji na displej Oregon Scientific.

U1 je zvyšující regulátor napětí (Boost) 1,5 na 3,3 V MCP16251 s velmi malým odběrem (4 µA) v klidovém stavu. Popis "R1" mí být správně pod odporem pod U1.

UPDI slouží pro programování ATtiny202 pomocí programátoru Microchip MPLAB Snap a MPLAB X IDE. Vlastní program používá skoro všechny funkce ATtiny202:
  • RTC hodiny reálného času pro generování probuzení ze spánku
  • USART pro synchronní generování vysilaných dat rychlostí 1 024 bit/s v Manchester kódu (pomocí programovatelné logiky CCL)
  • ADC pro měření vnitřní teploty chipu
  • AC Analogový komparátor pro zjištění, zda napětí baterie 1,5 nekleslo pod 1,1 V (a zobrazení stavu na displeji)
  • EVSYS Event systém pro zahájení měření teploty bez zásahu procesoru
  • TCB Čítač pro generování pauzy 9,34 ms mezi dvěma sadami odesílených dat
Odběr při vysílání (2x 136,8 ms) je 20 mA, v režimu spánku jsem naměřil 980 µA (včetně vysílače 433 MHz).

Obrázek

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 8 hostů