Skocz do zawartości

Arduino MEGA R3 + Żyroskop MPU6050 + Adafruit 16-channels PWM/Servo


zioloiso

Pomocna odpowiedź

Ok, dzięki, nie zacieły się. Tylko chodzi o to, że program piszę na adruino, a ESP wykorzystuje tylko jako wifi. Komendy AT. nie mogę znaleźć przykłady jak takiego stringa( strone html) wysłać.

Cześć,

ja bym napisał "web server" (w Arduino) na ESP8266, a UART'a użył do komunikacji między tym serwerem a ATmegą (do wysyłania komend odebranych przez stronę WWW na tym serwerze).

Pozdrawiam

Link do komentarza
Share on other sites

OK, postawiłem stronę w html bezpośrednio na ESP, działa w przeglądarce, teraz potrzebuje info jak przesłać kilka zmienny z arduino do ESP przez uart. Strona ma tylko wyświetlać info, nic nie sterować.

  • Lubię! 1
Link do komentarza
Share on other sites

OK, postawiłem stronę w html bezpośrednio na ESP, działa w przeglądarce, teraz potrzebuje info jak przesłać kilka zmienny z arduino do ESP przez uart. Strona ma tylko wyświetlać info, nic nie sterować.

Gratulacje,

zrobione samemu lepiej smakuje 😉

W tych linkach znajdziesz przykłady kodu do takiej komunikacji:

https://forum.arduino.cc/index.php?topic=441146.0

https://forum.arduino.cc/index.php?topic=480247.0

https://forum.arduino.cc/index.php?topic=441146.0

http://randomnerdtutorials.com/sending-data-from-an-arduino-to-the-esp8266-via-serial/

https://arduino.stackexchange.com/questions/40116/serial-communication-between-esp8266-and-arduino-uno?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa

  • Lubię! 1
Link do komentarza
Share on other sites

Odpoczywam chwilowo od komunikacja, ponieważ przyszła tarcza do serw i odziwo wsadziłem ją w mega + zasilanie i działa 🙂 Nie musiałem się umęczyć. Czekam na żyroskop, że sprawdzić.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Odpoczywam chwilowo od komunikacja, ponieważ przyszła tarcza do serw i odziwo wsadziłem ją w mega + zasilanie i działa 🙂 Nie musiałem się umęczyć. Czekam na żyroskop, że sprawdzić.

Cześć,

z żyroskopem będzie najtrudniejsza część. Czy zamierzasz użyć filtru Kalmana, tak jak opisywało kilku kolegów przed Tobą na forum. Patrz linki:

https://www.forbot.pl/forum/topics50/mpu6050-calkowanie-sygnalu-zyroskopu-vt15207.htm

https://www.forbot.pl/forum/topics50/filtr-kalmana-model-stanowy-dla-pomiaru-zyroskop-magnetometr-vt14669.htm

A tutaj teoria:

https://forbot.pl/blog/filtr-kalmana-w-praktyce-3-przyklady-z-kodami-id7342

https://forbot.pl/blog/filtr-kalmana-teorii-praktyki-1-id2855

Pozdrawiam

Link do komentarza
Share on other sites

Witam, żyroskop narazie będę wykorzystywał tylko do zwalniania modelu i do skręcania o określoną ilość stopni.

Ruszyłem komunikacje. Na str wyświetlam dane ze struct 😃 wysyłam dane z atmega do esp, ale nie pokrywają się, jakby się dane przesuwały. jakaś porada?

ATMEga:

//komunikacja Arduino z ESP8266

struct Dane
{
 float x;
 float y;
 float z;
 float wilgotnosc;
 float temperatura;
 int air;
 int gaz;
 int szybkosc;
 bool alarm;
};

Dane dane;

//timery

#include <Timers.h>
Timer ms25;
Timer ms100;
Timer ms1000;

void setup() {
 //uart
 Serial.begin(115200);
 Serial3.begin(115200);  
   //timery
 ms25.begin( 25 );
 ms100.begin( 100 );
 ms1000.begin( 1000 ); 
}

void loop() {

      //timer 1s
 if( ms1000.available() )
 {    
   dane.x = 1; dane.y = 1; dane.z = 1; dane.wilgotnosc = 60; dane.temperatura = 22; dane.air = 20; dane.gaz = 30; dane.szybkosc = 120; dane.alarm = false;    
   const char* wys = (const char*) &dane;
   for( int i = 0; i < sizeof(dane); i++ ) Serial3.print( *wys++);
   Serial3.println();        
   ms1000.restart();     
 }  

 }

ESP:

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>

const char* ssid = "asd"; // SSID sieci WiFi
const char* password = "12345678"; // hasło do WiFi
//numer portu serwera www
const unsigned int port = 80; 
// ustaw port serwera
ESP8266WebServer server(port);

//komunikacja Arduino z ESP8266

struct Dane
{
 float x;
 float y;
 float z;
 float wilgotnosc;
 float temperatura;
 int air;
 int gaz;
 int szybkosc;
 bool alarm;
};

Dane dane;

void setup() {
 //ustaw szybkość portu szeregowego
Serial.begin(115200);
//włącz WiFi
WiFi.mode(WIFI_STA); //tryb STATION
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) { // czekaj na połączenie z WiFi
delay(500);
Serial.print(".");
}
  //wypisz przydzioleny IP i MAC dla tego urządzenia
Serial.println("");
Serial.println("WiFi połączone");
Serial.println(WiFi.localIP());
Serial.println(WiFi.macAddress());
//uruchom serwery www
server_on();

}

void loop(){

server.handleClient();
if (Serial.available() > sizeof( dane ))
{
  char* odbr = ( char* ) &dane;
  for (int i = 0; i < sizeof( dane ); i++) *odbr++ = Serial.read();
  Serial.read();
  } 
}

String Head_HTML()
{
  String head = "<!DOCTYPE html>\n";
  head += "<html>";
  head += "<head>";
  head += "<title>STRAZNIK_DOMU</title>";
  head += "<meta charset=\"utf-8\">";
  head += "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">";
  head += "<link rel=\"stylesheet\" href=\"https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css\" >";
  head += "</head>";
  head += "<body style=\"text-align: center;color: white; background: black;font-size: 1.5em;\">\n";
return head; 
}

String Foot_HTML()
{
  String foot = ""; 
  foot += "<p>zioloiso © 2018</p></td></tr>";
  foot += "</body>\n";
  foot += "</html>\n";
  return foot;
}

String Page_HTML(){
String page = "";
page += "<p><h3><b>DANE ZE STRAZNIKA</b></h3></p></br>\n";
page += "<p><h3>Wilgotnosc: "+ String( dane.wilgotnosc ) +"%, Temperatura: "+ String( dane.temperatura ) +"*C </h3></p>\n"; 
page += "<p><h3>Zyroskop[ x = "+ String( dane.x ) +" | y = "+ String( dane.y ) +" | z = "+ String( dane.z ) +" ] </h3></p>\n"; 
page += "<p><h3>Stezenie gazow latwopalnych: "+ String( dane.gaz ) +"% </h3></p>\n"; 
page += "<p><h3>Stezenie substacji latwopalnych i dymu: "+ String( dane.air ) +"% </h3></p>\n";
page += "<p><h3>Predkosc poruszania straznika: "+ String( dane.air ) +"% </h3></p>\n";
page += "<p><h3> Alarm: "+ String( dane.alarm ) +" </h3></p></br></br></br></br></br></br></br></br></br></br></br></br></br></br></br></br></br>\n"; 
return page;
}

String WebPage(){
return Head_HTML()+Page_HTML()+Foot_HTML();
}

void server_on( void ){
//adres główny
server.on("/", [](){
server.send(200, "text/html", WebPage());
});

server.begin(); // Start serwera www
}
Link do komentarza
Share on other sites

Ok, poprawiłem strukturę, ale dane dalej się przesuwają ;/

O jak wywaliłem boola to jest ok 😃 Teraz czaje.

Podobno warto jeszcze checksum zrobić.

Link do komentarza
Share on other sites

Zajmuje się aktualnie żyroskopem i niestety ma problemy z nim. Odczyt danych jest jakby z kosmosu, liczby skaczą nawet gdy się nie rusza. Korzystam z bibliotek p. Jarzębskiego. Spotkał się ktoś z takim problemem? Skaczą nawet po setkami. Zapisuje je to flotów. Interesuje mnie odczyt stopni od włączenia modelu(Żyroskopu).

Link do komentarza
Share on other sites

Doradzi ktoś jaką bibliotekę wybrać, gdy program wykonuje się np 2 ms lub 4 ms. Na gołym programie jest ok, ale gdy we wale do kodu wszystko co chce to zaczyna głupieć ten odczyt.

Link do komentarza
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!

Anonim
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...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.