Skocz do zawartości

Przeszukaj forum

Pokazywanie wyników dla tagów 'komunikacja'.

  • Szukaj wg tagów

    Wpisz tagi, oddzielając przecinkami.
  • Szukaj wg autora

Typ zawartości


Kategorie forum

  • Elektronika i programowanie
    • Elektronika
    • Arduino i ESP
    • Mikrokontrolery
    • Raspberry Pi
    • Inne komputery jednopłytkowe
    • Układy programowalne
    • Programowanie
    • Zasilanie
  • Artykuły, projekty, DIY
    • Artykuły redakcji (blog)
    • Artykuły użytkowników
    • Projekty - roboty
    • Projekty - DIY
    • Projekty - DIY (początkujący)
    • Projekty - w budowie (worklogi)
    • Wiadomości
  • Pozostałe
    • Oprogramowanie CAD
    • Druk 3D
    • Napędy
    • Mechanika
    • Zawody/Konkursy/Wydarzenia
    • Sprzedam/Kupię/Zamienię/Praca
    • Inne
  • Ogólne
    • Ogłoszenia organizacyjne
    • Dyskusje o FORBOT.pl
    • Na luzie
    • Kosz

Szukaj wyników w...

Znajdź wyniki, które zawierają...


Data utworzenia

  • Rozpocznij

    Koniec


Ostatnia aktualizacja

  • Rozpocznij

    Koniec


Filtruj po ilości...

Data dołączenia

  • Rozpocznij

    Koniec


Grupa


Znaleziono 3 wyniki

  1. Witam chyba juz od tygodnia walcze z pewnym problemem i nie potrafie sobie samemu poradzic a w internecie tez ciezko znalesc podobne problemy... Mianowicie chce skomunikowac kilka modułow ESP32 ze soba korzystajac z protokolu TCP/IP (jeden ESP jest serwerem, reszta sie do niego laczy). Kazdy z ESP chce rozrozniac przez adres IP i w zaleznosci od adresu wrzucac przychodzace dane do konkretnej zmiennej. Aby odczytac adres IP wykorzystuje clien.remoteIP() - zwraca adres IP jednak gdy wywolam w loop ta funkcje wiecej niz jeden raz moj ESP dostaje crash pamieci: (komunikat: Guru Meditation Error: Core 0 panic'ed (InstrFetchProhibited). Exception was unhandled. Core 0 register dump: PC : 0x00000000 PS : 0x00060e30 A0 : 0x801100ad A1 : 0x3ffb3d30 A2 : 0x3ffccd7c A3 : 0x3ffccfb0 A4 : 0x3ffcb340 A5 : 0x3ffcb320 A6 : 0x0204a8c0 A7 : 0x0c04a8c0 A8 : 0x8010ff50 A9 : 0x3ffb3cf0 A10 : 0x3ffccd8c A11 : 0x3ffccfb0 A12 : 0x3ffb3d3c A13 : 0x00000044 A14 : 0x00000001 A15 : 0x00000006 SAR : 0x00000010 EXCCAUSE: 0x00000014 EXCVADDR: 0x00000000 LBEG : 0x4000c349 LEND : 0x4000c36b LCOUNT : 0x00000000 Backtrace: 0x00000000:0x3ffb3d30 0x401100aa:0x3ffb3d70 0x4011d011:0x3ffb3d90 0x40122019:0x3ffb3dd0 0x401272b6:0x3ffb3df0 0x401109cf:0x3ffb3e10 0x40088b7d:0x3ffb3e40 Dodam ze crash wystepuje zaraz przy probie polaczenia klientow do ESP Jesli podlaczam moduly bez rozpoznawania wszystko jest okej - jestem w stanie wysylac serie danych (co prawda idzie t wolno, kilkanascie razy wolniej niz przez UDP bo z wykorzystaniem UDP zrobilem juz identyczna rzecz) jednak rozpoznanie jest niezbedne aby prawidlowo segregowac dane - zalozmy ze kazde esp wysyla dane z innego czujnika - serwer musi to zebrac i obrobic... Gdy wywoluje client.remoteIP() tylko raz to program dziala (choc nie zawsze, czasem wymaga kilku resetow klienta) Czy ktos bylby tak dobry i doradzil lub naprowadzil mnie chociaz na odpowiedz jak sobie z tym poradzic? Moze gdzies jest dostepny przyklad? Załaczam rowniez kod serwera: #include <WiFi.h> WiFiServer server(80); // Set a object server as a WiFiServer class IPAddress IP(192,168,4,1); // Select ip and mask IPAddress mask = (255, 255, 255, 0); void setup() { Serial.begin(115200); WiFi.mode(WIFI_AP); // Set Wi-Fi as access point/server WiFi.softAP("ESP32", "123456789"); // SSID and Password for the AP WiFi.softAPConfig(IP, IP, mask); // Set our own desired IP address server.begin(); // Begin the server Serial.println("Server started."); Serial.print("IP: "); Serial.println(WiFi.softAPIP()); // .softAPIP calls for the IP of the access point which we set earlier Serial.print("MAC:"); Serial.println(WiFi.softAPmacAddress()); // Calls for the mac address } void loop() { WiFiClient client = server.available(); // Return a client object to the class if there is a client available client.setNoDelay(1); if (!client) {return;} // Return cuts the function (loop) if client class is not connected // String request = client.readStringUntil('\r'); // Reads string received until \r and saves as string // Serial.print("From "); // Serial.print(client.remoteIP()); // Serial.print(", port "); // Serial.println(client.remotePort()); if (client.remoteIP()[3] == 2){ // badanie ostatniego bajtu adresu IP w celu rozpoznania urzadzenia (adresy sa kolejno od 192.168.4.2 String request = client.readStringUntil('\r'); Serial.println(" Dostalem po TCP od 1 : " + request); client.println(" Dostalem po TCP: " + request + "\r"); // Send the data with the \r so the client knows when to stop } if (client.remoteIP()[3] == 3){ String request = client.readStringUntil('\r'); Serial.println(" Dostalem po TCP od 2 : " + request); client.println(" Dostalem po TCP: " + request + "\r"); // Send the data with the \r so the client knows when to stop } } Oraz kod klienta: #include <WiFi.h> IPAddress ip(192, 168, 4, 1); const char* host = "192.168.4.1"; //ip serwera do ktorego sie laczymy const uint16_t port = 80; int buffer; int sygnal[100]; //tablica do przechowania sprobkowanego sygnalu void setup() { Serial.begin(115200); Serial.println(); WiFi.begin("ESP32", "123456789"); Serial.print("Connecting"); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(); Serial.print("Connected, IP address: "); Serial.println(WiFi.localIP()); for (int i=0; i <100; i++){ //uzupelnienie zmiennej sygnal wartosciami probek od 0-99 sygnal[i]=i; } delay(2500); } void loop() { //Wydruk na serial monitor adresu i portu po ktorym sie łaczymy Serial.print("connecting to "); Serial.print(host); Serial.print(':'); Serial.println(port); for (int i=0; i <100; i++){ //petla w ktorej 100 razy wysylany jest pakiet 2 bajtow buffer=sygnal[i]; // Use WiFiClient class to create TCP connections WiFiClient client; //w przypadku niedostepnosci serwera czekaj 3 sekundy if (!client.connect(host, port)) { Serial.println("connection failed"); Serial.println("wait 3 sec..."); delay(3000); return; } // wyslanie zawartosci buffer na serwer client.print(buffer); client.println("\r"); Serial.print("Wyslalem po TCP: "); Serial.println(buffer); //odczytaj odpowiedz serwera Serial.print("Odpowiedz: "); String line = client.readStringUntil('\r'); Serial.println(line); Serial.println("closing connection"); client.stop(); } //czekaj 5 sekund przed ponowym wyslaniem sygnalu Serial.println("wait 5 sec..."); delay(5000); }
  2. Witam, pracuję nad pewnym projektem do pojazdu. Chciałbym stworzyć system, który pozwoli uruchomić motocykl bez konieczności użycia kluczyka. Myślałem, żeby do tego celu wykorzystać moduł nrf podłączony do Teensy 3.6 znajdującego się w motocyklu oraz drugi moduł nrf służący jako pilot/brelok. Teensy po wyłączeniu silnika będzie wchodzić w tryb energooszczędny(Deep sleep) natomiast po wykryciu komunikacji z tym konkretnym nRF zostanie wybudzona(wykorzystam przerwania). Wiem, że takie nRF'y mają spore dystanse dlatego chciałbym jakoś ten dystans móc zmniejszyć, powiedzmy do 50-80m. I tutaj może pytania: - czy dystans komunikacji między takimi nRFami da się zmniejszyć(programowo?) ? -czy schemat takiego systemu ma sens? Da się coś może zrobić lepiej? -jakiej płytki/procesora najlepiej użyć do takiego pilota(musi być energooszczędny) ? Tutaj link do omawianego modułu: https://elty.pl/pl/p/Miniaturowy-modul-z-nRF24L01-2.4GHz-montaz-SMD/1762?gclid=CjwKCAjw44jrBRAHEiwAZ9igKIHTyQq9zrTGPwRNgydnKvBfk6NXBh60JIfxNxD4B28CpPtDnGPXpRoCA0QQAvD_BwE Z góry dziękuję za każdą pomoc.
  3. Cześć, bawię się od dłuższego czasu "arducam". Mam surowy moduł OV7670 bez ramu i walcze z nim na arduino nano. Już wcześniej udało mi się za pomocą samej atmegi 328 wyciągnąć z tej kamerki obraz, ale wtedy powiedzmy że nie wnikałem w ustawianie rejestrów kamerki, ściągnałem gotowca, dopasowałem do swojego uC, wgrałem i jakoś to działało. Teraz chciałem podejść do tematu troche ambitniej i ogarnąć sobie ustawienia kamerki( zmiana rozdzielczości, naświetlenia itd), no i zacząłem bawić się interfejsem SCCB kamerki. No i pojawiły się kłopoty. Do komunikacji od strony arduino użyłem biblioteki Wire i skopiowałem kawałek kodu z githuba ArduCAM do odczytywania pojedynczego rejestru. No nie działało mi to, więc podpiąłem analizator stanów logicznych, i sie okazało że jedno z drugim za bardzo rozmawiać nie chce. Ogólnie sygnały wyglądaja dziwnie, w pewnych momentach zegar i2c ma częstotliwość 8mhz. Kamerka wystawia sygnały na szynie danych i VSYNC, HS czy PCLK, ale przy zakrywaniu obiektywu to co pojawia się na D[0:7] nie różni się niczym od tego co jest przy odkrytym obiektywie, i przez to zastanawiam się czy ta kamerka nie jest uszkodzona (mimo że sygnały z niej jakieś wychodzą). Przyznam się, że zapomniałem się że kamerka operuje na 3,3V i podałem zegar bezpośrednio z pinu arduino na pin OV7670 Podrzucam szkic i zrzut z analizatora dla odczytu rejestru 0x12. Ma ktoś jakieś doświadczenia w tym temacie? Co o tym myślicie? Pzdr i2c_test.rar
×
×
  • Utwórz nowe...