Skocz do zawartości

Wrona

Użytkownicy
  • Zawartość

    101
  • Rejestracja

  • Ostatnio

Wszystko napisane przez Wrona

  1. @kaczakat Skoro działa i z kompem się komunikuje a nawet cały układ w pewnych okolicznościach działa to tak jak mówiłem nie ma sensu otwierać pacjenta i omawiać jego bebechów i tworzyć poboczne wątki skoro problemem jest język i uszy :) Tak czy siak dzięki Ci bo sprawa się wyjaśniła. Gdy taki gamoń jak ja pyta o taką błahostkę jak ja zapytałem to wystarczy jednym zdaniem odpowiedzieć że "Bo w komunikacji po USB mamy Device oraz Host (kontroler magistrali np. komputer), a twoje Arduino ani ESP nie są Hostami o bez doinwestowania w dodatkowe nakładki nie będą nimi, a poczytać o tym można np
  2. @kaczakat Dzięki. Nie ma żadnego schematu. Ot Cztery kable idą od nadającego Arduino czyli RX, TX i zasilanie i cztery wchodzą do odbierającego ESP. Gdy po drodze stawiałem konwerter stanów logicznych to działało to w sposób nie przewidywalny (po jakiś czasie siadało) dlatego zacząłem kombinować czym by go zastąpić. Jednocześnie gdy na drodze tej komunikacji stawiałem komputer poprzez Pl2303 to wszystko działało bez zakłóceń. Dlatego zrezygnowałem z konwertera stanów logicznych i zacząłem kombinować z programatorem jako pośrednikiem. Kod programu tu jest bez znaczenia bo zarówno wysyłanie jak
  3. Powinienem wiedzieć wiele rzeczy. Zapewne powinienem wiedzieć dlaczego dwa programatory połączone beczką nie zadziałają tak jak tego się spodziewałem. Ale nie rzucaj we mnie kredą ani nie bij linijką. Po prostu mnie zignoruj.
  4. Na pewno w twoim pytaniu jest głęboki sens i gdybym był inteligentnym gościem to bym od razu załapał ogrom wiedzy z w nim zawarty, ale ... nie jestem Ja sobie to wyobraziłem tak: Z Arduino idzie sygnał z TX i wchodzi na pin RX do PL2303 potem beczka zamienia M na F i podpinam kolejne PL2303 gdzie zmieniam napięcie z 5V na 3V by zasilać ESP a sygnał wychodzi z TX do RX ESP. Generalnie układ zaczął reagować poprawnie tylko zamiast danych wysyła jakieś głupoty. Może pokombinuje z dzielnikami napięcia.
  5. Chciałem zrobić komunikacje Arduino i ESP poprzez „SoftwareSerial”. Problemem było że napięcie z Arduino to 5V (i to musi tak zostać) a ESP przyjmuje tylko 3,3V. Rozwiązaniem pierwszego wyboru był konwerter stanów logicznych. Trochę z tym zamieszania, bo z jednej strony trzeba podać 5V a z 3,3V czyli trochę zamieszania z napięciami. No ale się udało, ale raz działało a raz nie. Jak trochę podziałało to potem przestawało. Arduino podpięte do komputera komunikowało się bez problemu. Podobnie ESP podpięte do komputera poprzez PL2303 działało bez najmniejszego problemu. Jednak, gdy tylko oba te po
  6. Tak jestem pewien bo na serwerze zapisuje się zdjęcie i mam na nie podgląd.
  7. Kodów próbowałem wielu i z każdym mam ten sam problem. Ale oczywiście wstawiam poniżej jeden z nich. #include "esp_camera.h" #include "soc/soc.h" #include "soc/rtc_cntl_reg.h" #include "driver/rtc_io.h" #include <WiFi.h> #include <WebServer.h> #include <WiFiClient.h> #include "ESP32_FTPClient.h" #include <WiFiUdp.h> char* ftp_server = "***"; char* ftp_user = "***"; char* ftp_pass = "***"; char* ftp_path = "***"; const char* ssid = "***"; const char* password = "***"; unsigned long AC = 0; unsigned long ZC = 0; WebServer
  8. Mam esp32cam który co kilka minut robi zdjęcie wysyła na serwer. Wszystko działa ale od czasu do czasu dochodzi do błędu i dostaje komunikat: [E][camera.c:1049] camera_probe(): Detected camera not supported. [E][camera.c:1249] esp_camera_init(): Camera probe failed with error 0x20004 Programowy restart nie naprawia problemu i dopiero odłączenie urządzenia i ponowne uruchomienie przynosi pozytywny skutek do czasu aż po kilku czy kilkunastu a czasem kilkudziesięciu wykonanych zdjęciach znów komunikat o błędzie. Ma ktoś jakiś pomysł jak rozwiązać ten problem bez konieczności ciągłe
  9. @ethanak Nie ma znaczenia. Nie potrafisz skupić się na konkretnym problemie. Już ci napisałem że jest sobie nadajnik i odbiornik. Nie ma dla nas znaczenia jako one się komunikują i czy się rozumieją. Zapewne się rozumieją skoro całość działa bez zarzutu. Dane przekazywane przez nadajnik są prawidłowo odczytywane i przetwarzane przez odbiornik. Cokolwiek się dzieje w pierwotnej wersji tego urządzenia to dzieje się tak jak ma się dziać. Teraz na scenę wchodzę ja "Janusz Hakerstwa". Dzięki sile i godności osobistej rozkręcam obudowę i podpinam swoje Arduino Uno jako "podsłuch" czyli mamy
  10. @ethanak Jakiś nadajnik wysyła do odbiornika poprzez UART stringa z wynikami. Nie ma dla nas znaczenia czy tamten odbiornik go rozumie i jak go rozumie. Nie wnikamy w to. Ktoś tak to zaprogramował i to działa i jest sprawne i to nie nasza sprawa. Nie to jest rozpatrywana kwestią i o tym nie ma sensu dyskutować. Ja natomiast na drodze stawiam "podsłuch" z Arduino i mam dostęp do tego stringa. Widzę go np. jako 2020-11-02 10:05:24 24.54 24.55 25.84 25 23 24 28 21 24 25 Tak UwagaNaKota Nie WezParasol na końcu jest '\n' bo docelowy odbiornik czyta przekaz do tego znaku Teraz potrzeb
  11. @ethanak Bo tam są również wysyłane komunikaty tekstowe a nie tylko wyniki pomiarów. Gdybym miał najpierw zakodować te teksty na liczby a potem odpowiednio je rozkodować na powrót w teksty to by było trochę karkołomne. Oczywiste dla zmiennych dychotomicznych lub o wąskim zakresie możliwych wyników byłoby to rozsądne rozwiązanie. Gorzej z wynikami daty i czasu bo trzeba by je porozkładać na czynniki pierwsze a data i czas mają stałą szerokość i doskonale można je "ekstrahować" string.substring(x,y). Generalnie jest tak że te cały długi string jest wysyłany w innym celu i do inneg
  12. Mam pomiary z 10 czujników temperatury i kilka zmiennych typu String. Wszystko to scaliłem w jeden String i wysłałem za pośrednictwem UART z jednego Arduino UNO do drugiego. Po stronie odbiornika chciałem powyciągać z tego Stringa kilka informacji. Dla takiego szczawika programowania, najprostszym rozwiązaniem było użycie string.substring(x,y). Działa, ale działać będzie jedynie do czasu gdy całość prototypu stoi na biurku i wskazuje temperatury dwucyfrowe. W praktyce pewne czujniki temperatury mogą mieć odczyty jednocyfrowe a wtedy ustawione na sztywno pozycje x i y przestaną mieć sens. Wolał
  13. @marek1707 No właśnie coś tam się kiełbasiło. Nawet jeśli kręciłem tylko w jedna stronę to liczby nie zawsze narastały a czasem malały. Już do tego nie wrócę by Ci to zademonstrować bo musiałem uporządkować biblioteki Enkodera. Przerwania nie pomagały a właściwie zaprzepaszczały sens stosowania enkodera. Na razie serdecznie dziękuje za dotychczasową pomoc. W międzyczasie zająłem się kolejnym problemem do rozwiązania. Jak coś znów spierniczę to się odezwę Dzięki.
  14. @marek1707 Próbowałem dzielenia przez 4 i robił się syf w kolejności cyfr. Na spokojnie ogarnę to później. Natomiast faktycznie bibliotekę musiałem zmieniać. Dotychczasowa nie rozumiała co właściwie chce jej przekazać i dopiero nowa z linku jaki podałeś rozumiała o co chodzi z tym ENCODER_DO_NOT_USE_INTERRUPTS. Na razie dzięki. Muszę przemyśleć swoje priorytety, bo być może najlepszym rozwiązaniem będzie zamiana enkodera na potencjometr i przycisk.
  15. @marek1707 Dzięki, faktycznie zmieniam bibliotekę enkodera na tą która wskazałeś, by nie działać na przerwaniach. Uruchomiłem przykład: #define ENCODER_DO_NOT_USE_INTERRUPTS #include <Encoder.h> Encoder myEnc(2, 3); void setup() { Serial.begin(9600); Serial.println("Basic NoInterrupts Test:"); } long position = -999; void loop() { long newPos = myEnc.read(); if (newPos != position) { position = newPos; Serial.println(position); } } Krótkie pytanko? Dlaczego jeden krok enkodera daje w efekcie czterokrotne zliczanie? Przykładowo startujemy od 0. Obracam enk
  16. Zamierzam skomunikować dwie płytki Arduino poprzez programowy Serial. Nadajnik ma dodatkowo regulacje częstotliwości wysyłania danych zaprogramowaną na Enkoderze. Problem w tym że obie biblioteki się "pogryzły" (o ile dobrze rozumiem poniższy błąd). Arduino:1.8.13 (Windows 10), Płytka:"Arduino Uno" libraries\SoftwareSerial\SoftwareSerial.cpp.o (symbol from plugin): In function `SoftwareSerial::read()': (.text+0x0): multiple definition of `__vector_5' libraries\Encoder\Encoder.cpp.o (symbol from plugin):(.text+0x0): first defined here collect2.exe: error: ld returned 1 exit status exit stat
  17. Wrona

    Szacowanie eCO2 na podstwie pomiaru H2

    @marek1707 Dzięki za wyczerpujące informacje i potwierdzenie moich przypuszczeń że ten przelicznik H2 na CO2 to nie jest jakieś równanie oparte na przemianach chemicznych zachodzących w powietrzu. Jeszcze wczoraj na próbę zamówiłem ten sensor z ostatniego liku jaki podałeś, choć oczywiście w cenie dwukrotnie wyższej gdyż w polskim sklepie. Wydał mi się to jakimś sensownym kompromisem między ceną i jakością (podobno ma spory rozrzut ale mierzy to co ma mierzyć). Potestuje to się przekonam. Raz jeszcze dzięki.
  18. Jak wiadomo czujniki CO2 są droższe niż CO. Atrakcyjny cenowo wydaje się być czujnik oparty o SGP30, który jednak nie dokonuje pomiaru CO2 a H2 i potem szacuje eCO2 na podstawie H2. Szukam i nie mogę znaleźć literatury na ten temat. Czujniki wodoru są w cenie adekwatnej do moich możliwości. Szukam konkretnych formuł przeliczenia wyniku H2 na oszacowanie eCO2.
  19. @ethanak Oczywiście nie obyło się jeszcze bez kilku drobnych problemów i kilku na tyle poważnych że przeszło mi przez myśl by "dać se spokój" ale wytrwałem i oficjalnie przyznaje że biblioteka FTP_Client dla ESP8266 zadziałała i na serwer FTP wysyła dane pomiarowe. Przypuszczam że w tej bibliotece nie zadziała ftp.appendFile() bez wcześniejszego ftp.newFile() w setapie (co jest zbędne np. w bibliotece dla FTP_Client dla ESP32). Jednak nie sprawdzałem tego poprzez analizę kodu a jedynie empirycznie metodą prób i błędów. Dzięki @ethanak nauczyłem się dziś stosować mójstring.c_str() co jest
  20. Dzisiejszy dzień mogę uznać za zły. Co to znowu jest? Czym teraz musze się zająć by ugasić nowy pożar? c:/users/wrona/appdata/local/arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-4-b40a506/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: libraries\FTP_Client-master\example.cpp.o:C:\Program Files (x86)\Arduino\libraries\FTP_Client-master/example.cpp:11: multiple definition of `ftp'; sketch\TEST.ino.cpp.o:C:\Users\wrona\Desktop\TEST/TEST.ino:24: first defined here c:/users/wrona/appdata/local/arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5
  21. @ethanak Z płytka sobie chyba poradziłem po wszystko poszło gładko. Jednak gdzie szukać przyczyny że nie mogę zainstalować paczki ESP8266 powyżej 2.3.0 czy ten adres jest nieaktualny http://arduino.esp8266.com/stable/package_esp8266com_index.json ? Coś zrobić ręcznie? Na razie reinstaluje całe arduino IDE bo podjąłem tyle różnorodnych prób że sam nie wiem co pozamieniałem na co i gdzie. EDIT: Reinstalacja całości pomogła i mam już najnowszą wersje paczki dla ESp8266
  22. @ethanak Jak chcesz to potrafisz być miły Z tego co kojarzę czeka mnie aktualizacja oprogramowania ESP8266. Nie robiłem tego jeszcze ale chyba nadszedł ten dzień. O to chodzi?
  23. @ethanak Tak, naprawdę to sułtańskiego haremu (w obiegowym tego słowa znaczeniu). Natomiast wracając do potyczek z kodem. 1. Kod od jakiego zacząłem jest taki a nie inny bo taki jest w przykładzie dołączonym do tej konkretnej biblioteki. Skopiowałem go by przetestować ale nie działa więc próbujemy dojść do tego dlaczego tak jest. W tym mi pomagasz i jestem wdzięczny. 2. To że się u Ciebie kompiluje to żaden argument bo zastanów się chwilkę. Po co miałbym Cię oszukiwać pisząc o błędach gdyby mi się kompilowało? Skąd wziąłbym opisy błędów kompilacji? Skoro ich nie rozumi
  24. @ethanak Testujemy kolejno void WyFTP() { ftp.openConnection(); ftp.changeWorkDir("/Pomiary/"); String wyniki = "Zestaw wynikow:\n"; unsigned int dlugosc = wyniki.length() + 1; unsigned char dane[dlugosc]; strcpy(dane, wyniki.c_str()); ftp.initFile(FTP_FileType_ASCII); ftp.appendFile("WynikiPomiarow.txt"); ftp.write(dane); ftp.closeFile(); ftp.closeConnection(); } Daje TEST:207:28: error: invalid conver
  25. Jak najbardziej próbowałem zrobić zgodnie z Twoją radą ale tak jak pisałem to błędu nie likwidowało. Dlatego szukając różnych rozwiązań wróciłem do "write" bo w obecnej konfiguracji tamte błędy zniknęły i na razie został ten ostatni a niedozwolonej konwersji. Dlatego mam już mętlik, bo wiem że "write" wymaga const char * ale wtedy pojawiają się niezrozumiałe dla mnie komunikaty o błędach a gdy podaje uint8_t * to pojawia się jedynie ten błąd i nieprawidłowej konwersji. Wiem że to kwestia rzutowania czegoś w coś i jeszcze w coś innego. Dlatego szukam w internetach o rzutowaniu na jakiś pro
×
×
  • 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.