Elektroda.pl
Elektroda.pl
X
Elektroda.pl
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

ESP8266/ATtiny13A - Podłączenie pinu CH_PD ESP8266 do ATtiny13A

19 Paź 2015 03:31 1926 10
  • Poziom 17  
    Witam, buduję czujnik natężenia światła (oparty na fotorezystorze), który miałby przesyłać dane do Internetu.

    Problem jest w tym, że czujnik nie działa poprawnie. Tylko czasem uda się wysłać pomiar.

    Idea jest taka, że ATtiny13A jest cały czas włączone i cały czas robi pomiary ADC na fotorezystorze. Jeśli pomiar będzie się różnił o 100 od poprzedniego to wtedy włącza ESP8266 (pin CH_PD ESP8266 jest połączony z portem PB1 µC). Następnie ESP8266 informuje ATtiny13A o tym, że się już połączyło z siecią WiFi podając stan wysoki na porcie GPIO2, który jest podłączony z pinem PB0 mikrokontrolera. Następnie ATtiny13A wysyła wartość pobraną z ADC, ESP8266 wysyła tą wartość do serwisu ThingSpeak, po czym zmienia stan portu GPIO2 na niski, a ATtiny13A wyłącza ESP8266 podając znowu stan niski na CH_PD ESP8266.

    Kabel PB1 <---> CH_PD oraz PB0 <---> GPIO2 jest podłączony normalnie, bez żadnych rezystorów podciągających. Czy tak jest poprawnie?

    Napisałem taki kod na moje ATtiny13A:
    Kod: c
    Zaloguj się, aby zobaczyć kod


    Kod na ESP8266 (NodeMCU):
    Kod: lua
    Zaloguj się, aby zobaczyć kod


    Co może być nie tak? Czy jest to wina niewłaściwego podłączenia czy programu?

    Proszę o pomoc,
    Defozo
  • Poziom 17  
    Generalnie połączenie zawsze działało, ale nie udało się zrealizować tego, co opisałem w temacie.
    Teraz jakbym to robił to zrobiłbym to tylko na ESP8266 (bez ATtiny13A).
  • Poziom 32  
    Pytam ponieważ chciałbym odebrać po UART ESP8266 to co ATtiny nadaje i później wysłać poprzez WiFi, ale kompletnie wiem jak odebrać dane :(
    Dane które posyła ATtiny wyglądają tak:
    Kod: bash
    Zaloguj się, aby zobaczyć kod

    temperatura | wilgotność | napięcie

    Cały pic polega na tym, że chcę to zrobić tak:
    -uruchamiam ESP
    -wczytuje dane przez UART
    -dziele de dane na trzy
    -wysyłam
    Kod: lua
    Zaloguj się, aby zobaczyć kod

    -wyłączam ESP

    Ale kompletnie nie wiem jak to zrobić :(
  • Poziom 17  
    Wysyłasz po UART'cie:
    Code:
    34&temp=24.1&napiecie=4.16a

    A potem odbierasz w ESP8266 tak, jak w kodzie poniżej.

    Popatrz na te dwa kody:
    Kod: c
    Zaloguj się, aby zobaczyć kod


    init.lua
    Kod: lua
    Zaloguj się, aby zobaczyć kod
  • Poziom 32  
    Edytowałem post wyżej ;)

    W ESP nie chcę używać GPIO. ESP nie musi sprawdzać połączenia Wifi :)
    ESP musi odebrać dane, podzielić na trzy i wysłać. Od strony ATtiny mam już wszystko-piszę w BASCOMie
  • Poziom 17  
    Zauważ, że ESP nie musi dzielić danych na 3.
    Wystarczy, że z mikrokontrolera wyślesz gotową linijkę do wysłania na serwer:
    Code:
    34&temp=24.1&napiecie=4.16


    Czy chodzi o sam program na ESP?
  • Poziom 32  
    Moim problemem jest tylko program na ESP. A te dane muszę podzielić i każdą wysłać osobno :(
    A jak taki program (lua) miałby wyglądać aby działał tak:
    -po włączeniu zasilania płacz z WiFi bez sprawdzania czy połączony itp.
    -odbierz dane z UART
    -wyślij dane na serwer
    Takie minimum.
  • Poziom 17  
    Odbieranie po UART i wysyłanie danych na serwer:
    Kod: lua
    Zaloguj się, aby zobaczyć kod

    Niestety nie wiem, jak dzielić dane.
  • Poziom 32  
    Czy to tak ma wyglądać?
    Kod: lua
    Zaloguj się, aby zobaczyć kod

    Czy jeszcze coś potrzebuje?

    Normalnie ten język LUA to dla mnie jakaś czarna magia-nie rozumiem go w ogóle :(
  • Poziom 32  
    Siedzę dziś przy tym cały wieczór i prawie działa, no właśnie prawie :|
    Zmajstrowałem coś takiego:
    Kod: lua
    Zaloguj się, aby zobaczyć kod

    Działam na razie z jedną daną aby jakoś to opanować-tu akurat temperatura "temp"
    ESP widzę w routerze.
    uC posyła daną w formacie "xx.x"
    ESP niby coś wysyła (widzę po diodzie) ale do serwera nic nie dociera :cry:
    Dana jest odbierana przez ESP bo gdy podłącze się konwerterem USB-UART pod ESP to daną z uC mam na terminalu.