Skocz do zawartości
Mrpatryk

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

Pomocna odpowiedź

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,

Udostępnij ten post


Link to post
Share on other sites

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.

Udostępnij ten post


Link to post
Share on other sites

Są jakieś Tutoriale jak mniej więcej nawiązać połączenie serialem pomiędzy arduino-esp ? bo nie mogę nic konkretnego znaleźć.

Udostępnij ten post


Link to post
Share on other sites

Łączysz RX -> TX i TX->RX i wysyłasz dane w taki sam sposób jak wyświetlasz na monitorze.
A na ESP masz swój soft  czy firmowy i wykorzystujesz komendy AT?

Udostępnij ten post


Link to post
Share on other sites

firmowy bez komend AT, bo wysyłam dane z niego do bazy mysql. 

Udostępnij ten post


Link to post
Share on other sites

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.

Udostępnij ten post


Link to post
Share on other sites

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ć 😉

Udostępnij ten post


Link to post
Share on other sites

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.

Udostępnij ten post


Link to post
Share on other sites
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 😉

Udostępnij ten post


Link to post
Share on other sites

#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 ? 

Udostępnij ten post


Link to post
Share on other sites

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.

 

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...