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 - DIY
    • Projekty - DIY roboty
    • Projekty - DIY (mini)
    • Projekty - DIY (początkujący)
    • Projekty - DIY 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

Kategorie

  • Quizy o elektronice
  • Quizy do kursu elektroniki I
  • Quizy do kursu elektroniki II
  • Quizy do kursów Arduino
  • Quizy do kursu STM32L4
  • Quizy do pozostałych kursów

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


Imię


Strona

Znaleziono 8 wyników

  1. Hej, zwracam się do Was z prośbą i radą jaki protokół do komunikacji miedzy różnymi mikrokontrolerami najlepiej użyć do mojego wymyślonego projektu. To zaczynając od pomysłu. Chciałem stworzyć kontroler główny, który będzie miał komunikację 2 kierunkową z urządzeniami podłączonymi do niego: mniej więcej tak ja na tym schemacie: Z Założenia chcę, aby urządzenia łączyły się ze sobą kablowo najprawdopodobniej skrętką 8 żyłową(2 lub 4 przewody chciałbym poświęcić na zasilania, reszta na komunikację) a odległość maksymalna to będzie 20m, Dane przesyłane miedzy nimi nie będą duże( najprawdopodobniej string o długości max 30 znaków lub char do identyfikacji typu wiadomości i int16) a częstotliwość komunikacji raz na 1s z każdym urządzeniem wystarczy. Chciałbym także aby te podłączenia można było robić w trakcie używania urządzenia a ich wykrywanie było na zasadzie "do portu 3 zostało coś podłączone" i po przez różnego rodzaju wiadomości urządzanie będzie rozpoznawało z czym konkretnie się połączył. Dodatkowo chciałbym aby można było podłączyć różne mikrokontrolery, takie jak STM32, ESP oraz Arduino. Jest Modbus, SPI, I2C, CAN, UART itd... Ale co najlepiej do takiego zastosowania by się nadało? Wiem, że każdy wybór ma swoje plusy i minusy i zdaję sobie sprawę, że muszę pójść na jakieś kompromisy. Moim wstępnym pomysłem było wykorzystanie do tego RS-485. Tylko nie miałem z nim nigdy styczności i nie jestem przekonany, że się sprawdzi. Dlatego chcę waszej opinii i porady, co byście do takiego zastosowania użyli, a może już ktoś robił coś podobnego i ma w tym doświadczenie.
  2. Witam, Może ktoś zasugerować czemu nie mogę się połączyć z brokerem, który jest zainstalowany na wirtualnej maszynie (system Ubuntu) - serwer Mosquitto. Nie mogę połączyć się za poza "lokalnego" połączenia z zewnątrz przez WIFI. Połączenia próbuje wykonać za pomocą różnych aplikacji na androdzie (np. MyMQTT). Próbowałem także przez wykorzystanie ESP32 i biblioteki MQTT. W żadnym wypadku nie udało mi się połączyć z brokerem. Ustawiłem wyjątek w zaporze dla portu 1883 - bez rezultatu (wyłączyłem całkowicie zapore - również bez efektu). Broker Mosquitto zainstalowałem zamiast na Ubuntu, to na Windows - także podobna sytuacja. Lokalnie Windows oraz Ubuntu widzą serwer i się z nim łączą za pomocą MQTT Explorer. Router jest widoczny w systemie Windows Router widzi urządzenie android, które jest połączone z urządzeniem poprzez transmisje WIFI. Jestem w stanie pingować wszystkie adresy (telefonu z androidem, windowsa czy Ubuntu) i odpowiadają (czasami jest duży ping - 1000ms) Zmieniłem w mosquitto.conf parametry listeners 1883 oraz allow_anny na true. Czy ktoś może zasugerować rozwiązanie? Może jakaś aplikacje czy kod/program na ESP32/Android do diagnostyki sieci?
  3. Cześć, mam problem z komunikacja pomiędzy esp i arduino. Wykorzystuje bibliotekę #include "SerialTransfer.h" do wysyłannia danych i komunikacja pomiędzy dwoma esp8266 działa bardzo dobrze ale jeżeli próbuje podłączyć esp i arduino i pokazują sie śmieci na terminalu. Konwerter TTL podłączony, napięcia prawidłowe 5V i 3.3V. O co może chodzić? 1 zdjecie ESP-ESP 2 zdjęcie ESP-Arduino, próbowałem na dwóch róznych TTL jak i pin TX z ESP do RX arduino bezpośrednio i tez nie działa.
  4. Witam serdecznie, nabyłem jakiś czas temu kilka sztuk modułów radiowych HC-12 do wykorzystania u siebie w domku. Ostatnio natknąłem się na problem - mianowicie standardowo pracuję na parametrach transmisji 9600 8N1, jednakże jedno urządzenie wymaga innych parametrów, a dokładnie zmiany parzystości z NONE na EVEN, wg. pdf-a wystarczy wpisać komendę "AT+U8E1", po czym moduł powinien odpowiedzieć "OK+U8E1", a u mnie odpowiada samym "OK" ale bez oczekiwanej zmiany. Oczywiście zalecane warunki zasilania (wg. noty pdf) zostały spełnione, tzn kondensator filtrujący zasilanie o wartości 470 µF oraz dioda 1N4007 w szeregu, a mimo to brak reakcji na próby zmiany parzystości. Zmiany prędkości transmisji, kanału, trybów pracy ("AT+FUx") oraz mocy nadawania są przyjmowane przez moduł, tylko parzystość jest "nie do ruszenia". Czy miał ktoś może styczność z takim problemem lub ma ktoś u siebie takie moduły i może sprawdzić czy też nie da się zmienić tej parzystości? Pozdrawiam, Robert
  5. Chcę wysyłać komunikaty z arduino do przemiennika częstotliwości, przemiennik komunikuje się za pomocą protokołu RS485. Zakupiłam speljalny konweret UART <-> RS485, więc kod mogę pisać w protokole serial. Po zgraniu programu i odłoczeniu arduino od komputera nie wysyła ono żadnych danych (nie świeci się led TX). Czy ktoś może wie jak to naprawić? Wcześniej wspomniany kod załączam poniżej. Dziękuje za wszelką pomoc 😀 #include<util/crc16.h> #include <SoftwareSerial.h> SoftwareSerial mySerial(0, 1); struct DataPacket { uint8_t DestinationAddress; uint8_t function; uint8_t functioncode; uint8_t functioncode1; uint8_t data; uint8_t data1; uint16_t CRClow; uint16_t CRChigh; } ; void setup(){ mySerial.begin(9600); } void loop(){ DataPacket TxPacket; TxPacket.DestinationAddress = 0x01; TxPacket.function = 0x06; TxPacket.functioncode = 0x01; TxPacket.functioncode1 = 0x0E; TxPacket.data = 0x00; TxPacket.data1 = 0x64; TxPacket.CRClow = lowByte(MakeCRC(&TxPacket)); TxPacket.CRChigh = highByte(MakeCRC(&TxPacket)); mySerial.write(TxPacket.DestinationAddress); mySerial.write(TxPacket.function); mySerial.write(TxPacket.functioncode); mySerial.write(TxPacket.functioncode1); mySerial.write(TxPacket.data); mySerial.write(TxPacket.data1); mySerial.write(TxPacket.CRClow); mySerial.write(TxPacket.CRChigh); } uint16_t MakeCRC(struct DataPacket *InPacket) { uint16_t TempCRC = 0xFFFF; TempCRC = _crc16_update(TempCRC, InPacket->DestinationAddress); TempCRC = _crc16_update(TempCRC, InPacket->function); TempCRC = _crc16_update(TempCRC, InPacket->functioncode); TempCRC = _crc16_update(TempCRC, InPacket->functioncode1); TempCRC = _crc16_update(TempCRC, InPacket->data); TempCRC = _crc16_update(TempCRC, InPacket->data1); return TempCRC; }
  6. 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); }
  7. 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.
  8. 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...

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.