Skocz do zawartości

Stacja pogodowa Arduino jak przesłac dane za pomocą NodeMCU wifi ESP82


Pomocna odpowiedź

Napisano

Witam , zbudowałem prostą stację pogodowa (zegar, data, pomiar cisnienia,wilgotnosci,,temperatury, oraz odczyt z sensora wody) do tego mam wyświetlacz 4x20, chciałbym wszystko umieścić w bazie danych mysql. Wszystko jest zbudowane na arduino nano V3. Pytanie następujące. Jak podłączyć do arduino moduł  WIFI ESP8266 NODEmcu V3 tak żeby nie wgrywać w niego programu aby wszystko zostało na arduino nano a moduł służył tylko do wysyłania danych do mysql.?? Jest taka możliwość? Jak już niektórzy z forum wiedza, ogarnąłem przesyłanie do bazy za pomocą samego modułu danych 🙂 Zalezy mi teraz tylko na przesłaniu danych bez przenoszenia programu na moduł. Pod które piny można się wpiąć by przesłać te dane ? 

ktoś ma jakiś pomysł ? Można by było po rx,tx się podłączyć ? i przesyłać po porcie szeregowym ? ale w tedy trzeba by było odbierać i dzielić jakoś odebrane bity jeśli dobrze rozumiem.

zaś wolał bym jakoś inaczej tego dokonać by arduino odczytywało dane a esp wysyłał je do mysql . bez konieczności przesyłania danych serialportem,

Możesz użyć UART, niestety nano ma tylko 1, dlatego testowanie będzie utrudnione, bo ten jest używany do wgrywania szkiców i podglądu co się dzieje w procku. Jakbyś użył np. Arduino Micro, to ten ma do komunikacji i wgrywania UART na USB, a drugi jako Serial1 na pinach TX/RX, byłoby łatwiej. Wysyłać dane na serial jest prosto, trudniej odbierać i obrabiać. Tego musisz się nauczyć. W przykładach Arduino jest serial event. To czy użyjesz ESP-ESP, NANO-UNO, czy ESP-NANO jest obojętne, każdy zadziała tak samo. Można alternatywnie użyć softowego UART po stronie NANO, I2C, SPI, czy zupełnie wymyślonego przez Ciebie. Powodzenia.

Nie szukaj nic o połączeniu ESP-Arduino tylko o komunikacji między dwoma Arduino, napisałem Ci przecież, że jaki moduł to nie ma znaczenia, Arduino załatwia podstawowe przekazanie danych po stronie sprzętowej niezależnie czy używasz UNO, ESP,  ARM,  musisz nauczyć odbierać i obrabiać dane przylatujące na UART, czyli parsowania: 

Weźmiesz sobie jakikolwiek projekt wykorzystujący UART i przyjrzysz się szczególnie odbieraniu danych i masz tutorial - coś z GSM, BT, GPS, również ESP jako modem WIFI.

W ramach przypomnienia: w celu uzyskania wielkiej litery najlepiej na klawiaturze wcisnąć dany klawisz w połączeniu z Shift (można również stosować Caps Lock, ale to mniej wygodne rozwiązanie). Dodatkowo warto pamiętać, że przed znakami przecinka i kropki nie stawiamy spacji (sytuacja ma się identycznie w przypadku znaków zapytania oraz wykrzykników). Naprawdę warto poświecić te 5 sekund, aby post był napisany poprawnie - aż chce się wtedy odpowiadać i pomagać 😉

Sorka Admin 🙂 . A więc tak, udało się przesłać dane za pomocą portu szeregowego, po tx i rx. Natomiast problem mam taki ze co nowe odświeżanie Loop'a na NodeMCU wifi ESP82 wyświetla wartości po 4/5 linijek, dubluje, krzaczy, itp. Problem jest z odebraniem czy z wysyłaniem ? Na arduino wysyłam niecałą jedną linijkę liczb oraz jedną nazwę... Jest możliwość ze NodeMCU wyświetla tak jak by kilka linijek które siedzą na serial porcie ? 

Dobra, udało się uzyskać liczby z arduino nano  i teraz borykam się z problemem podzielenia stringa  tak by odczytać te liczby i zapisać do zmiennych int.

1 godzinę temu, Mrpatryk napisał:

Jakiej lini ? którego kodu ? 

No właśnie - to prawdopodobnie była ironia ze strony @kaczakat, który chciał Ci delikatnie zasugerować, że jak pytasz o to gdzie leży problem z Twoim programem to warto byłoby ten program pokazać innym... Jak inaczej ktoś ma Ci doradzić? 😉

A jak już się tak "czepiam pisowni" to... spacje przed znakami zapytania to też "złoooo". Nie zwracam uwagi złośliwie, zwyczajnie zastanawia mnie dlaczego sporo osób popełnia taki błąd. Przecież podczas "ręcznego pisania" nie robi się takiego odstępu 😉


#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>
#include <ESP8266WiFi.h>
const char* ssid= "********";
const char* password = "********";
const int httpPort = 80;
const char* host = "***************"; //IP serwera z MySQL

  String incomingByte =" ";

void setup() {

 Serial.begin(9600);
 WiFi.begin(ssid, password);  
 while (WiFi.status() != WL_CONNECTED) {
   delay(500);
   Serial.print(".");
 }
Serial.println(WiFi.localIP());
}
void loop() {
  Serial.flush();
 if ( Serial.available ( ) > 0 ) { 
 
 incomingByte = Serial.readStringUntil('.') ; 


//Serial . print ( "Otrzymałem:" ) ; 
Serial . println ( incomingByte ) ; 

} 
 


  WiFiClient client; //wysylanie do PHP i MySQL
  if (!client.connect(host, httpPort)) {
   Serial.println("connection failed");
   
 }
 else
 {
//String url = "/esp.php?";
  // url += "id=1"; 
  // url += "&t="; 

  // url += "&h="; 

// client.print(String("GET ") + url + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n\r\n");  
 }
 delay(1000);               
}

taki kodzik mam na nodemcu-wifi-esp8266, wszystko jest w jednym ciągu znaków . Jak podzielić ten ciąg i przypisać do danych zmiennych ? 

Nie, używałem swojej kuli. W 35 linii powinna być obsługa czas oparta chociaż o millis(), wywal delay(). Jak używasz flush() to jest to raczej używane do upewnienia się, że zanim wykonasz kolejny krok bufor nadawczy zostanie wysłany zanim np. zanim uśpisz urządzenie. Właśnie na tym polega problem odbioru, do niego powinieneś być gotowy zawsze. Nie zajrzałeś do przykładu z serial event. Widać, że kursu Arduino co najmniej nie zakończyłeś z sukcesem.  A ktoś się napracował, by nie było pierwszych 100 pytań o rzeczy oczywiste. Ewentualnie przejdź go jeszcze raz: https://forbot.pl/blog/kurs-arduino-ii-wielozadaniowosc-opoznienia-z-millis-id18418.

@deshipu, a co do offtopu to w książkach przynajmniej pilnują by nie zaczynać nowej linii od znaku  ! lub ? z poprzedniego zdania. A teraz zdarza w artykułach elektronicznych, że nad tym już nie panują i wychodzi im to bokiem - robią jednocześnie sierotkę/wdowę ze znaku interpunkcyjnego.

 

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...