Skocz do zawartości

kaczakat

Użytkownicy
  • Zawartość

    196
  • Rejestracja

  • Ostatnio

  • Wygrane dni

    4

kaczakat wygrał w ostatnim dniu 2 marca

kaczakat ma najbardziej lubianą zawartość!

Reputacja

51 Bardzo dobra

O kaczakat

  • Ranga
    5/10

Informacje

  • Płeć
    Mężczyzna

Ostatnio na profilu byli

Blok z ostatnio odwiedzającymi jest wyłączony i nie jest wyświetlany innym użytkownikom.

  1. kaczakat

    Regulator temperatury cieczy

    Żeby odczuć zmiany temperatury wody musi być odpowiednia moc. Załóżmy, że masz zamknięty obieg, w którym jest 1 litr wody (1kg), Q= Cw*m*dt, woda ma CW=4.2 kJ/(kg K), czyli dla 1kg by uzyskać zmianę temperatury o 1oC (1K) w ciągu 1s trzeba dostarczyć (lub zabrać) moc 4.2kW. Jeśli będziesz miał te 50W i straty wyniosą 50% to moc 25W pozwoli schłodzić 1litr o 1oC w ciągu 168s. Bez strat to byłoby 84s, ale zawsze jakieś są. A jak już schłodzisz o 4oC to pamiętaj o izolacji, bo teraz każdą powierzchnią ten zbiorniczek będzie z powrotem zacznie zasysać ciepło próbując wrócić do równowagi z otoczeniem, tym mocniej im większa będzie różnica temperatury. By to w ogóle działało musi być zapewniony dobry przepływ ciepła, np. od strony chłodzenia radiator mający maksymalną możliwą powierzchnię wymiany ciepła z wodą, a po stronie gorącej dużo większy radiator+wentylator. Bo po pierwsze współczynnik wnikania ciepła jest dużo lepszy dla wody (ciepło łatwiej przepływa między wodą a metalem) a po drugie moc po stronie ciepłej jest sumą odebranego ciepła (powiedzmy 50W) + moc dostarczona z prądem - drugie 50W. No, teraz zajrzyj do PC i popatrz na radiator swojego Athlona czy tam I7 i porównaj do radiatora na swoim ogniwie, jest mam nadzieję OK? Jeśli obieg nie jest zamknięty to i tak w tym wzorze m powinno być z kropeczką, czyli oznacza przepływ wody w kg/s, wystarczy go określić, np. 0.001kg/s , nie można już mówić o czasie schłodzenia, a o ile ten strumień masy się schłodzi, co dla mocy 50W (czyli w założeniu doskonały odbiór ciepła) wyniesie 11.9oC. W sumie to to samo, czas potrzebny by przepłynął litr wody to 1000s, w każdych 84s całość schładza się średnio o 1oC. A jak chcesz by przez ogniwo płynęło więcej prądu to po prostu zwiększ napięcie.
  2. kaczakat

    Arduino - sterowanie z poziomu strony www

    To załóżmy, że masz przekierowany port i dostęp do routera. Najbardziej prymitywnym rozwiązaniem jest użycie GET i tego nie robię, ale powiedzmy, że do pierwszych testów... Jakiś kod HTML masz, masz przycisk, a podanym wcześniej przykładzie była stronka, która po zaznaczeniu checkbox wysyłała komunikat LED do serwera, na którym była uruchomiona. Taki komunikat można wysłać w dowolne miejsce używając: <!DOCTYPE html> <html> <head> <title>Arduino LED Control</title> </head> <body> <h1>LED</h1> <p>Click to switch LED on and off.</p> <form action="http://192.168.1.153" method="GET"> <input type="submit" value="LED2" name="Submit" id="frm1_submit" /> </form> </body> </html> Jak widać podałem adres http, czyli miejsce gdzie jest przycisk. Kod tego przycisku może być na PC, tu otwierasz stronę, a po wciśnięciu GET poleci na to IP. Teraz wystarczy w Arduino odczytać wartość LED2 i zmienić stan led. Niestety strona zostaje przeniesiona na serwer Arduino i trzeba się cofnąć. Nie udało mi się tego rozwiązać więc teraz robię inaczej. Po krótkim kursie "youtubowym" HTML, JS, CSS i websocket zrobiłem sobie stronkę z kilkoma przyciskami i polami tekstowymi. Uruchamiam ją na ESP8266 (ale jest też wersja biblioteki websocket dla Ethernet shield). Dalej w podlinkowanym kursie do Ethernet shield jest też coś o Ajax, to poprzednik websockets więc już raczej nie będę w to brnął, ale zasada byłaby podobna. Tu jest działający przykład na ESP8266 https://github.com/kaczakat/ESP8266 (i obok dla ESP32), kod strony jest w kodzie programu (może być też w spiffs lub w osobnym pliku *.h), a dla Ethernet shield również na SD. Program wgrany do uC ESP obsługuje 5 połączeń jednoczesnych, można się zalogować do strony na ESP i tu sobie klikać lub w dowolnym miejscu, np. na PC czy na serwerze umieścić inny plik html gdzie wewnątrz zamiast websock = new WebSocket('ws://' + window.location.hostname + ':81/'); jest np.: websock = new WebSocket('ws://192.168.1.155:81/'); Lub jeśli Twój IP jest zmienny i port przekierowany z 5345 na 81 to może być coś takiego: websock = new WebSocket('ws://gapcio15.dyndns.com:5345/'); Zaletą websocket jest szybkość i dwukierunkowość, jeśli na telefonie klikniesz zaświecenie LED1 to wszyscy klienci od razu dostają aktualizację stanu wyjść. Jak widać są dwa okienka, jedno otwarte z uC, drugie z PC (serwera ze stroną HTML). W sumie to chodzi o to, by po umieszczeniu w uC obsługi websocket z serwera przyleciało najpierw zalogowanie się do Arduino, a potem wysyłanie odpowiedniego komunikatu.
  3. kaczakat

    Arduino - sterowanie z poziomu strony www

    To na początek sprawdź w umowie czy masz zewnętrzne IP i czy masz dostęp do routera.
  4. kaczakat

    Arduino - sterowanie z poziomu strony www

    Skąd masz dostawcę Internetu? Router jest Twój czy dostałeś, do routera możesz się zalogować by zmienić np. adresację sieci czy nie znasz hasła?
  5. kaczakat

    Arduino - sterowanie z poziomu strony www

    No i skomplikowałeś... Masz zewnętrzne IP i dostęp do routera, przekierujesz port na Arduino, tak żeby był sens dalej pisać? Jak tak to poszukam, bo gdzieś miałem taki przykład.
  6. kaczakat

    Arduino - sterowanie z poziomu strony www

    To poczekam na dalsze wyjaśnienia i ewentualnie się skomplikuje (a miało być proste), bo moja intuicja podpowiada, że chodziło właśnie o to.
  7. kaczakat

    Arduino - sterowanie z poziomu strony www

    Tu znajdziesz cały cykl poradników jak zrobić zaawansowany sterownik z Ethernet Shield z obsługą przez WWW: http://startingelectronics.org/tutorials/arduino/ethernet-shield-web-server-tutorial/web-server-LED-control/, a jednym z prostych przykładów jest sterowanie LED z przycisku na stronie WWW, jest program i film.
  8. Nie wpadłem na to, że możesz nie mieć przylutowanej Anteny, a teraz zauważyłem na zdjęciu. Bez anteny mi działa tylko do 1,5m i jak cewki są zwrócone do siebie. W sumie ta na nadajniku ma mniejsze znaczenie, ale powiedz, że masz chociaż na odbiorniku.
  9. kaczakat

    Czujnik otwartej lodówki

    Program ma lecieć jak szalony :D. Jak już wstawiasz to delay(50) to możesz w każdej pętli zliczać sobie zmienną, zerować gdy drzwi zamknięte, a pozwalać jej rosnąć gdy otwarte. Gdy przekroczy wartość 5s/50ms (100) włącz alarm. Za chwile będziesz chciał dodać sterowanie WIFI i pomiar temperatury, także od razu zajrzyj do kursu, w ostatniej lekcji jest millis();, a na forum mnóstwo przykładowych kodów z wykorzystaniem tej funkcji.
  10. kaczakat

    nrf24l01 wysyłanie kilku danych

    Wysyłasz tylko 4 bajty, bo tyle ma typ float - sizeof(float). Powinieneś wysłać bajtów sizeof(measurement). Można też zmienić cały komunikat do wysłania na jeden napis np: "msg:25.6,1013.25,45.4" ( a jeszcze lepiej używaj int czy uint32_t i miej to w pamięci przy obliczeniach: "msg:256,101325,454". Taki komunikat wyślesz raz, odbierzesz raz, podzielisz sobie na poszczególne stringi z powrotem, pozamieniasz na liczby i będzie OK. Tu wrzuciłem przykład dla serial, jak w odbiorniku masz odebranego stringa to robisz analogicznie: Jak sobie szyfrujesz dane lub wyliczasz CRC to pewnie lepiej tablice.
  11. Całkowicie tych samych warunków nie odtworzę, ale jak to mówią informatycy: "u mnie działa". Miałem te moduły na wirzchu bo testowałem zasięg i z antenkami własnej roboty wynosił ponad 200m w terenie otwartym i w domu przez 3 ściany >10m też nie było problemu. Po dodaniu silnika na PWM pinu 6 działa w domu tak samo, na zewnątrz nie testowałem. Jedyne co to mój silniczek startuje od PWM>100 i zatrzymuje się przy 80, poniżej tylko piszczy. Osobne zasilania z baterii aku i przetwornicy 5V dla silniczka i osobno z power banku dla NANO, a nadajnik podpięty do USB komputera. Kod użyłem jednak swój, bo nie chciało mi się kombinować z LCD, po prostu LED szybko miga 3x gdy otrzyma zgodny komunikat "Wiadomosc". Zwiększyłem wiadomość do 20 znaków i dalej jest OK, piny RX/TX do RF mam te same i tak samo 2000baud. Oczywiście nie wszystkie komunikaty dochodzą, mam je ustawione co 1s i widać, że pojedyncze czasami nie dolatują.
  12. Zobacz co się będzie działa gdy zamienisz PWM (analogWrite) na zwykły włącz/wyłącz, można też zmienić częstotliwość PWM. Mam takie same RF (i ewentualnie kilka innych typów) i jakiś silniczek z zabawki, także podłącze to w tym tygodniu i podzielę się swoimi obserwacjami. Driver masz L293D? Co do zasady takie układy działają, przecież jest mnóstwo zabawek z RF, niestety akurat te radia to prawie że antena podłączona do pinu Arduino. Możesz wrzucić kod nadajnika i odbiornika do testów.
  13. Rozdziel zasilanie silnika i logiki. Do Arduino normalnie zasilacz, z Arduino zasil tylko L293D (czy jaki tam masz) od strony logiki - kabelki 5V, GND, IN1 i IN2. Z akumulatorków/baterii zasil wejście zasilania silnika na L293D (druga strona scalaka). Przy tym modelu RF może być nawet konieczne całkowite rozdzielenie sygnałów, bo Arduino może wszystkie zakłócenia od silnika odbierać jako sygnał.
  14. kaczakat

    Długie przewody w arduino

    I2C jest interfejsem "wewnątrzpudełkowym", kilka - kilkanaście cm długości. Na takie odległości kablem możesz próbować przesłać przez UART, ale raczej RS485 lub bezprzewodowo - ESP8266, transmitery UART na 433MHz, czyli w sumie kilka uC. Poza tym kable głośnikowe są zwykle 2 żyłowe, nie możesz podłączyć I2C dwoma żyłami, musi być jeszcze wspólna masa.
  15. kaczakat

    ESP-01 problem z połączeniem

    U mnie oczywiście działa, ale żeby bez problemu to nie. Podłączony do przedłużki USB nie działa, podłączony bezpośrednio do huba USB działa OK (mam dongla do ESP, w tej wersji ma przełącznik PROG-UART i nie ma kondensatora). Czyli jednak używasz Arduino, to po prostu na początek wgraj prosty szkic bez obsługi WIFI i pooglądaj jak się zachowuje UART. void setup() { // put your setup code here, to run once: Serial.begin(115200); } void loop() { // put your main code here, to run repeatedly: static int c=0; Serial.println(c++); delay(200); } Pokaż też jakimś zrzutem ekranu jak masz ustawione ESP w TOOLS przy wgrywaniu. Na dobrym kablu USB powinno wgrywać bez problemu z prędkością 921600. Do przykładowego szkicu z serwerem dodaj wydruk komunikatu, że za 2s nastąpi próba połączenia WIFI, daj delay(2000) i dopiero łączenie. Potwierdzisz czy w ogóle coś wgrywasz, czy ESP startuje i czy drukuje komunikaty zgodnie z ustawieniem. Zasilacz laboratoryjny nie pokaże za dużo, podłącz rezystor R1 i oscyloskop, wtedy coś widać.
×