Obsluga Thingspeak przez ESP8266 i komendy AT

Pytania, kody i porady dotyczące nie tylko Bascom.
ODPOWIEDZ
Awatar użytkownika
niveasoft
Posty: 1216
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Obsluga Thingspeak przez ESP8266 i komendy AT

Post autor: niveasoft » 15 sty 2016, 17:02

Witam. Dużo ostatnio pisze a na forum mnie nie widać więc czas to zmienić :D
Kupiłem sobie NodeMCU i flashnąłem go od razu do LUA software i.. i tak leżał :D

No ale nadarzyła się okazja by sprawdzić co to potrafi ale ktoś to potrzebował znów z komendami AT..
O ile flasher do LUA jest jakby "intuicyjny" to powrót do komend AT taki znów "oczywisty" i prosty nie jest.

Chwilę mi to zajęło ale rozpracowałem to i potrafię flashować je w każdą stronę jakby ktoś potrzebował to mogę podpowiedzieć co i jak.
Chodzi mi o to by każdy nie musiał z osobna tracić czasu chyba że lubi to tak jak ja :D
Miło by jednak było kiedyś wpisać w wyszukiwarkę swoje hasło i otrzymać gotową podpowiedź zamiast ślęczeć nad notami i psuć wzrok :D

Tak więc zamieszczam gotowy kodzik który umieszcza dane na serwerze Thingspeak a jak działa można zobaczyć na poniższym filmie.
AAJZ240QjdE

Kod programu na Xmege ;) '**************************************************************** '* UPDATING THINGSPEAK FIELD WITH ESP8266 AND XMEGA * '* ESP8266 AT COMMANDS V.051 SDK 1.5.0 * '* BARTek niveasoft(at)tlen.pl * '**************************************************************** $regfile = "xm128a3udef.dat" $crystal = 32000000 '32MHz $hwstack = 80 'this is for my other tasks so $swstack = 100 'you can modify values to your needs $framesize = 100 Config Submode = New Const Api_key = "ABCDEFGHIJKLMNOP" '' <<<<< YOUR API WRITE KEY Const Debuging = 1 ' ***************** SYSTEM CLOCK CONFIG ************************** ' INTERNAL 32MHz NO PRESCALE ' Config Osc = Disabled , 32mhzosc = Enabled , 32khzosc = Enabled Config Sysclock = 32mhz , Prescalea = 1 , Prescalebc = 1_1 ' ' ENABLING AUTOMATIC OSCILLATOR CALIBRATION Osc_dfllctrl.0 = 1 Dfllrc32m_ctrl.0 = 1 ' '***************************************************************** '************ CONFIGURATION FOR COM1 ON PORTC ******************** ' ESP8266 ON COM1 Config Com1 = 115200 , Mode = Asynchroneous , Parity = None , Stopbits = 1 , Databits = 8 'Tx-PC3 Rx-PC2 Open "COM1:" For Binary As #1 Config Serialin0 = Buffered , Size = 100 'for COM1 Config Input1 = Crlf , Echo = Crlf ' Const Max_str_len = 150 : Dim Com1_str As String * Max_str_len '***************************************************************** #if Debuging = 1 '*********** CONFIGURATION FOR COM2 ON PORTC ********************* ' COM2 IS FOR DEBUG SO SEPARATE CONFIG Config Com2 = 115200 , Mode = Asynchroneous , Parity = None , Stopbits = 1 , Databits = 8 'Tx-PC7 Rx-PC6 Open "COM2:" For Binary As #2 Config Serialin1 = Buffered , Size = 50 'for COM2 Config Input2 = Cr , Echo = Cr ' Dim Com2_str As String * 50 '***************************************************************** #endif Dim Char As Byte , Mark As Byte , Count As Byte Dim Cmd As String * 100 , Cmd_len As String * 15 Dim Field1 As String * 5 , Lenght As Byte Dim State As Byte , Old_state As Byte , Mem_state As Byte Const Startup = 0 Const Waiting = 1 Const Send_len = 2 Const Sending = 3 Led Alias Portf.0 : Config Led = Output '*** SUB FOR USART HANDLING *** Sub Get_reply Com1_str = "" Count = 0 Do Char = Inkey(#1) If Char > 0 Then Select Case Char Case 13 : If Com1_str <> "" Then Exit Do Case 10 : If Com1_str <> "" Then Exit Do Case Else Com1_str = Com1_str + Chr(char) End Select Incr Count If Count >= Max_str_len Then Com1_str = "" Count = 0 End If End If Loop If Com1_str <> "" Then Mark = 1 End Sub '*** SUB FOR DEBUG ON COM2 *** Sub Show_state Local St_str As String * 10 Select Case State Case 0 : St_str = "Startup" Case 1 : St_str = "Waiting" Case 2 : St_str = "Send_len" Case 3 : St_str = "Sending" End Select Old_state = State Print #2 , "Now State=" ; St_str End Sub '*** SUB FOR ESP8266 *** Sub Esp8266 Select Case State Case Startup If Mark = 1 Then Mark = 0 Select Case Com1_str Case "WIFI GOT IP" 'AT+CIPSTART="TCP","184.106.153.149",80 Cmd = "AT+CIPSTART={034}TCP{034},{034}184.106.153.149{034},80" Print #1 , Cmd Field1 = Str(rnd(100)) ' <<<<<< random value for Testing #if Debuging = 1 Print #2 , "Field value=" ; Field1 #endif Cmd = "GET https://api.thingspeak.com/update?api_key=" Cmd = Cmd + Api_key Cmd = Cmd + "&field1=" Cmd = Cmd + Field1 Cmd = Cmd + "{010}{010}" Mem_state = State 'memorize that we starting State = Waiting Case Else #if Debuging = 1 Print #2 , Com1_str #endif End Select End If Case Waiting ' if we waiting for answear If Mark = 1 Then Mark = 0 Select Case Com1_str 'Case "CONNECT" Case "OK" ' if we see OK Select Case Mem_state Case Startup 'previous was Startup so this is first "OK" Mem_state = Send_len Lenght = Len(cmd) : Cmd_len = Str(lenght) Cmd_len = "AT+CIPSEND=" + Cmd_len Print #1 , Cmd_len Case Send_len 'second "OK" so we send Len of data we want send Print #1 , Cmd State = Sending Mem_state = Sending 'memorize that we send data to server ' ( for Error handling ) End Select #if Debuging = 1 Print #2 , Com1_str #endif Case "ERROR" #if Debuging = 1 Print #2 , Com1_str #endif State = Startup Case "CLOSED" #if Debuging = 1 Print #2 , Com1_str #endif State = Startup Case Else #if Debuging = 1 Print #2 , Com1_str #endif End Select End If Case Sending If Mark = 1 Then Mark = 0 Select Case Com1_str Case "SEND OK" State = Startup End Select #if Debuging = 1 Print #2 , Com1_str #endif End If End Select End Sub Enable Interrupts Do Call Esp8266 #if Debuging = 1 If Old_state <> State Then Call Show_state #endif If Ischarwaiting(#1) > 0 Then Call Get_reply Loop End Pozdrawiam
Awatar użytkownika
pimowo
Posty: 392
Rejestracja: 28 maja 2016, 10:07

Re: Obsluga Thingspeak przez ESP8266 i komendy AT

Post autor: pimowo » 31 maja 2016, 18:31

niveasoft pisze:O ile flasher do LUA jest jakby "intuicyjny" to powrót do komend AT taki znów "oczywisty" i prosty nie jest.
Możesz podpowiedzieć w jaki sposób wrócić do komend AT? :)
Mam ESP-12e z firmware NodeMCU, ale nie wiem co teraz zrobić aby móc używać komend AT.
Awatar użytkownika
niveasoft
Posty: 1216
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Obsluga Thingspeak przez ESP8266 i komendy AT

Post autor: niveasoft » 31 maja 2016, 19:09

Szczerze mówiąc to już słabo pamiętam, ale jak uruchomiłem ten program do flashowania to pamiętał ostatnie ustawienia i adresy dla poszczególnych plików.
Na szczęście, bo nie chciałoby mi się tego teraz szukać.
Musisz zwrócić uwagę na nazwy plików i do nich po prawej wpisać poprawne adresy.
Kolejność plików nie jest chyba ważna. Ważne by po prawej stronie danego pliku pasował adres pod którym będzie umieszczony w ESP.

Obrazek

Flasher waży ponad 20MB więc go tu nie będę uploadował.
Pliki znalazłem na stronie Esspresiv i nazywają się AT_0.51_on_ESP8266_NONOS_SDK_V1.5.0 może są już nowsze.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Awatar użytkownika
pimowo
Posty: 392
Rejestracja: 28 maja 2016, 10:07

Re: Obsluga Thingspeak przez ESP8266 i komendy AT

Post autor: pimowo » 08 cze 2016, 13:29

Śliczne dzięki za pomoc ;)
Trochę mi nie szło z tymi komendami AT i rozwiązałem problem (raczej obszedłem problem) trochę inaczej. AVR przesyła "Print" do ESP (LUA) a ESP sortuje dane i posyła dalej ;)
ODPOWIEDZ