Skocz do zawartości

Kącik AA (Astro Arduino)


jolo

Rekomendowane odpowiedzi

No to powiedzmy do portu będzie wysyłane co 1s taka linijka danych pogodowych.

-21.2;88;320;15;999;

Czyli: temperatura;wilgotność;kier_wiatru;pred_wiatru;ciśnienie.

:)

Pozdrawiam! Lucjan
Sony A7II, Olympus E-PL5, E-PM2 full spectrum, Astro CZJ Sonnar 300 f/[email protected], EQ3-2 + AstroEQ

Odnośnik do komentarza
Udostępnij na innych stronach

W drugą stroną też powinno być to banalne. Nie próbowałem jeszcze tego, ale powinno zadziałać coś takiego:

Temp = Serial.parseFloat();
Hum = Serial.parseFloat();
WindDir = Serial.parseFloat();
WindSpd = Serial.parseFloat();
Pres = Serial.parseFloat();

Oczywiście cały proces obsługi Seriala trzeba dopisać.

HEQ5, TSAPO65Q + Canon EOS 450D hypermod, SK804A + Orion SSAG, DO Titanium 9x63

Odnośnik do komentarza
Udostępnij na innych stronach

Nie koniecznie do komputera. To jest dopiero koncepcja ale musze wiedziec jak to ugryzc. Jedeno arduino bedzie sercem dla wszystkich czujnikow pogodowych i bedzie na zewnatrz. Te dane muszą być jakoś przesłane do drugiego urządzenia do ktorego bedzie juz podlaczony LCD graficzny i ładnie prezentował dane (a jak sie uda to i wysyłał do wunderground.com).

 

No i teraz chodzi o przesył danych... Opcji jest kilka.

 

1. Jakiś moduł RF 433MHz np C1101

2. XBee - tu mamy czysty port szeregowy po 2.4GHz

3. WiFi - np tanie ESP8266

4. Ethernet

 

Wybór transmisji to nie wsztstko bo urządzenie musze jakoś zasilać. Jezeli bedzie to LAN to wykorzystam PoE. Jezeli zdecyduje sie na panel fotowoltaiczny i akumulator LiPo to wtedy wchodzą w gre punkty 1-3.

 

Punkt 2 czyli XBee daje największe możliwośći bo mogę oprócz przesyłania dancy również programować Arduino bedące gdzieś tam nad dachem.

 

Myslałem też o warjacji UNO z bluetooth wlasnie zeby sie dało programować bez kabla.

 

Prawdopodobnie padnie na XBee bo jednym modułem załatwie możliwość programowania i przesyłania danych no ale sam jeszcze nie wiem - jest sporo kombinacji. Może ethernet i do programowania bluetooth.

 

A najbardziej pasował by mi moduł C1101 bo wtedy mógłbym czytać te dane pogodowe (np samą temperature) na kilku odbiornikach. W zasadzie z XBee tez można ale C1101 można kupić za 1/5 ceny xbee.

 

No ale wróćmy do tematu. Załóżmy że bedzie XBee czyli czytamy dane jak z portu szeregowego...

Pozdrawiam! Lucjan
Sony A7II, Olympus E-PL5, E-PM2 full spectrum, Astro CZJ Sonnar 300 f/[email protected], EQ3-2 + AstroEQ

Odnośnik do komentarza
Udostępnij na innych stronach

W drugą stroną też powinno być to banalne. Nie próbowałem jeszcze tego, ale powinno zadziałać coś takiego:

Temp = Serial.parseFloat();
Hum = Serial.parseFloat();
WindDir = Serial.parseFloat();
WindSpd = Serial.parseFloat();
Pres = Serial.parseFloat();

Oczywiście cały proces obsługi Seriala trzeba dopisać.

No jest to ciekawa funkcja. Sprawdze dzisiaj jak to działa. Jak dobrze rozumiem to funkcja czyta wartosci liczbowe po znakach czyli z wartosci: temp15.3 powinno odczytac mi 15.3. Zgadza sie?

Pozdrawiam! Lucjan
Sony A7II, Olympus E-PL5, E-PM2 full spectrum, Astro CZJ Sonnar 300 f/[email protected], EQ3-2 + AstroEQ

Odnośnik do komentarza
Udostępnij na innych stronach

No jest to ciekawa funkcja. Sprawdze dzisiaj jak to działa. Jak dobrze rozumiem to funkcja czyta wartosci liczbowe po znakach czyli z wartosci: temp15.3 powinno odczytac mi 15.3. Zgadza sie?

Zgadza się. Funkcja zwraca pierwszy poprawny float odczytany ze strumienia. Jak oglądałem przykłady użycia, to wykorzystywano coś takiego, jak podałem wyżej, żeby pobierać kolejne wartości zawarte w 1 "transferze".

  • Like 1

HEQ5, TSAPO65Q + Canon EOS 450D hypermod, SK804A + Orion SSAG, DO Titanium 9x63

Odnośnik do komentarza
Udostępnij na innych stronach

OK czyli teraz jeszcze pytanie jak uzyc tej funkcji zeby czytała po danym ciągu znaków. Załóżmy że wysle ciag znaków: t20h88p999ws15wd320

 

Bedzie to tak?

Temp = Serial.parseFloat(t);
Hum = Serial.parseFloat(h);
WindDir = Serial.parseFloat(wd);
WindSpd = Serial.parseFloat(ws);
Pres = Serial.parseFloat(p);

Pozdrawiam! Lucjan
Sony A7II, Olympus E-PL5, E-PM2 full spectrum, Astro CZJ Sonnar 300 f/[email protected], EQ3-2 + AstroEQ

Odnośnik do komentarza
Udostępnij na innych stronach

To jest funkcja bezargumentowa, niczego w nawiasie nie dodajesz. Działa to na tej zasadzie, że pierwsze jej wywołanie zwróci wartość 20, kolejne 88, potem 999 itd. Tutaj masz prosty przykład: http://www.tigoe.com/pcomp/code/arduinowiring/1161/

  • Like 1

HEQ5, TSAPO65Q + Canon EOS 450D hypermod, SK804A + Orion SSAG, DO Titanium 9x63

Odnośnik do komentarza
Udostępnij na innych stronach

Tak jak pisze Iluvatar parsowanie tą funkcją (podobnie jak parseInt) jest bardzo wygodne. Jeśli jedynym zadaniem odbiornika danych jest czekanie na dane i ich wyświetlanie to rozwiązanie jest w zupełności wystarczające. Jeśli kontroler będzie miał jeszcze inne zadania, to trzeba pamiętać że metody portu szeregowego parseFloat, parseInt, find, findUntil, readBytes, readBytesUntil to metody blokujące i mogą wstrzymać kod programu aż do momentu w którym otrzymają dane, albo aż upłynie określony parametrem setTimeout czas. 

Jeśli kontroler musi wykonywać jednocześnie szereg innych zadań trzeba dane obsługiwać bez blokowania wątku, odczytując dane z portu bajt za bajtem i konwertując je po rozpoznaniu odpowiedniego znaku. W pętli loop jedynie sprawdzamy, czy już dane są gotowe, a całe parsowanie przeprowadzamy w obsłudze zdarzenia serialEvent.  Na przykład tak:

String inputString = "";         // zmienna przechowująca polecenia z portu szeregowego
byte valueIndex = 0;             // oznacza indeks odczytywanej zmiennej 
boolean lineComplete = false;    // oznacza zakończenie transmisji komendy
float lineData[6];               // 6 to ilość danych w jednej linijce do zapamiętania

void setup() {
  Serial.begin(9600);
  inputString.reserve(25); 
  for(byte i = 0; i < 6; i++) lineData[i] = 0.0; 
}

void loop() {
  if (lineComplete) {
    // linia danych pobrana
    // i zapamiętana w tabeli lineData
    // możemy ją teraz przetworzyć i czekać na następną
    
    for(byte i = 0; i < 6; i++) lineData[i] = 0.0;
    valueIndex = 0;
    lineComplete = false;
  }  
}


void serialEvent() {
  while (Serial.available()) {
    char inChar = (char)Serial.read(); 
    if(inChar == ';') {
      char carray[inputString.length() + 1];
      inputString.toCharArray(carray, sizeof(carray));
      lineData[valueIndex] = atof(carray);
      valueIndex++;
      inputString = "";
    } else {
      inputString += inChar;
    }
    if (inChar == '\n') lineComplete = true; 
  }
}

jolo-astrojolo.png

Odnośnik do komentarza
Udostępnij na innych stronach

Ale skoro dane będą wysyłane co 1 sekundę i odczyt nastąpi tylko w wyniku serialEvent(), to chyba nie powinniśmy się nigdzie zawiesić. Pod warunkiem oczywiście, że nie zgubimy po drodze danych i Serial nie będzie oczekiwał.

Odczyt po bajcie oczywiście jest bezpieczniejszy, ale z użyciem parse'ów łatwiejszy do zrobienia dla osób z mniejszym doświadczeniem.

HEQ5, TSAPO65Q + Canon EOS 450D hypermod, SK804A + Orion SSAG, DO Titanium 9x63

Odnośnik do komentarza
Udostępnij na innych stronach

Dokładnie tak jak piszesz - jak w założeniach wyniknie, że nie ma takiej potrzeby to odczyt przez parseInt i parseFloat będzie dużo wygodniejszy. W przypadku opisywanym przez AstroLutka pomyślałbym tylko jeszcze o jakimś sprawdzaniu końca linii, albo wysyłaniu na końcu serii danych za każdym razem wartości np -1000.0, żeby jawnie zaznaczyć koniec linii danych i uniknąć rozsynchronizowania komunikacji. Kod serialEvent() mógłby wyglądać np tak:

void serialEvent() {
  while (Serial.available()) {
    lineData[valueIndex] = Serial.parseFloat();
    if(lineData[valueIndex] == -1000.0 || valueIndex > 4) lineComplete = true;
    valueIndex++;
  }
}

Reszta kodu jak powyżej.

  • Like 2

jolo-astrojolo.png

Odnośnik do komentarza
Udostępnij na innych stronach

Panowie działa super z Serial.Event(); Wstawiłem sobie nawet liczniczek zeby zaobserwować czy sie nie blokuje kontroler. Poniżej kod. Zczytuje liczby za kazdym razem i nic nie gubi. Mozna wysłać ciąg np: -12.4,90.2,9.2,999 i wszystko trafia na swoje miejsce.

 

#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);


float temp = 0;
float hum = 0;
float wspd = 0;
float pres = 0;




boolean stringComplete = false;
void setup() {


  pinMode(10, OUTPUT);
  analogWrite(10, 50);
  lcd.begin(20, 4);
  Serial.begin(9600);


}


void pokaz_lcd() {
  lcd.setCursor(0, 0);
  lcd.print("TM: ");
  lcd.print(temp, 1);
  lcd.setCursor(10, 0);
  lcd.print("HU: ");
  lcd.print(hum, 1);
  lcd.setCursor(0, 1);
  lcd.print("WS: ");
  lcd.print(wspd, 1);
  lcd.setCursor(10, 1);
  lcd.print("PR: ");
  lcd.print(pres, 1);
  lcd.setCursor(0, 3);
  lcd.print(millis() / 100);


}


void loop() {
  if (stringComplete) {
    stringComplete = false;
  }
  pokaz_lcd();
}


void serialEvent() {
  while (Serial.available()) {
    temp = Serial.parseFloat();
    hum = Serial.parseFloat();
    wspd = Serial.parseFloat();
    pres = Serial.parseFloat();
    char inChar = (char)Serial.read();
    if (inChar == '\n') {
      stringComplete = true;
    }
  }
}
  • Like 1

Pozdrawiam! Lucjan
Sony A7II, Olympus E-PL5, E-PM2 full spectrum, Astro CZJ Sonnar 300 f/[email protected], EQ3-2 + AstroEQ

Odnośnik do komentarza
Udostępnij na innych stronach

Znalazłem tani i fajny transceiver na 2.4 GHz. nRF24L01+. Prędkość 250kbit 1Mbit i 2Mbit. Interfejs SPI. Okazuje się ze bardzo popularny na arduino. Cena :) 1.5$. W Polsce w jednym ze sklepów znalazłem po niecałe 6 PLN. Moc 1mW. Zasięg około 100m. Są też mocniejsze wersje i takie z wyjściem na zewnętrzną antenę. Mam to zamiar oprogramować i użyć do przesyłu danych pogodowych. Jednak jest 20x tańszy od xbee :) no i może pracować jako point to multipoint i np zbierać dane z kilku miejsc naraz...

  • Like 1

Pozdrawiam! Lucjan
Sony A7II, Olympus E-PL5, E-PM2 full spectrum, Astro CZJ Sonnar 300 f/[email protected], EQ3-2 + AstroEQ

Odnośnik do komentarza
Udostępnij na innych stronach

  • 4 tygodnie później...

Dałoby radę :) Arduino ma też tą fajną cechę, że można w nim zmieniać program przez ten sam kabel USB przez który później z nim się komunikujemy, a więc można np zaktualizować oprogramowanie w urządzeniu które już jest przypięte do teleskopu a potem zaraz go używać bez żadnego pędzlowania kablami. 

Czas na pierwsze zastosowanie - zdalne włączanie i wyłączanie urządzeń za pomocą Arduino. Zasada działania będzie prosta - poleceniami wysyłanymi z komputera chcemy włączać i wyłączać przekaźniki, które następnie mogą zasilać interesujące nas urządzenia. Poniżej poglądowy schemat jak połączyć kilka elementów w interesującą nas całość:

attachicon.gifard-01_bb.jpg

 

Oprócz Arduino i przekaźnika będziemy potrzebowali jakiś tranzystor NPN małej mocy (BC237, BC548 albo podobny) oraz dwa rezystory (górny 4.7kohm, dolny 100kohm) i diodę zabezpieczającą (dowolna dioda, np 1N4148 albo podobna). Schemat przedstawia tylko jeden kanał sterujący, ale do każdego wyjścia Arduino możemy podpiąć kolejny przekaźnik i sterować wieloma jednocześnie.

Styki przekaźnika mogą włączać napięcie 12V ale też napięcie sieciowe 230V. W drugim przypadku należy oczywiście zachować wszystkie środki ostrożności przy pracy z napięciem sieciowym. Można też zastosować optoizolator pomiędzy Arduino i tranzystorem sterującym, ale żeby to miało sens uzwojenie przekaźnika należałoby zasilać osobnym napięciem zasilania 12V a nie tym, którym zasilamy Arduino i resztę układu.

Opcjonalna dioda LED z rezystorem 1kohm będzie nam pokazywała, kiedy przekaźnik jest włączony.

 

Kod:

#define RELAY_PIN 2

String inputString = "";         // zmienna przechowująca polecenia z portu szeregowego
boolean stringComplete = false;  // oznacza zakończenie transmisji komendy


void setup() {
  // ustawiamy wyjście przekaźnika w stan niski
  digitalWrite(RELAY_PIN, LOW);
  // inicjalizujemy port szeregowy
  Serial.begin(9600);
  // rezerwujemy 5 bajtów na dane wejściowe
  inputString.reserve(5);  
}

void loop() {
  // jeśli pobrano komendę 
  if (stringComplete) {
    // rozpoznajemy ją: (R:0, R:1)
    if(inputString.charAt(0) == 'R') {
      // i jej argument
      if(inputString.charAt(2) == '0') {
        digitalWrite(RELAY_PIN, LOW);
      } else {
        digitalWrite(RELAY_PIN, HIGH);
      }
    }
    // czyścimy bufor polecenia
    inputString = "";
    stringComplete = false;
  }  
}

/*
  Zdarzenie SerialEvent jest wywoływane kiedy nowe dane 
  napływają do portu szeregowego kontrolera. 
 */
void serialEvent() {
  while (Serial.available()) {
    // pobieramy bajt danych
    char inChar = (char)Serial.read(); 
    // dodajemy do zmiennej przechowującej komendę
    inputString += inChar;
    // jeśli pobrany znak to znak nowej linii
    // ustawiamy flagę oznaczającą koniec polecenia
    if (inChar == '\n') {
      stringComplete = true;
    } 
  }
}

Kodu jest dość sporo, ale większość to komentarze. W sekcji setup wyłączamy przekaźnik, inicjujemy port szeregowy Arduino oraz rezerwujemy zmienną na przesyłane polecenia. Zdarzenie serialEvent wywoływane jest automatycznie po odebraniu danych przez port szeregowy. Po odebraniu znaku nowej linii oznaczającego koniec polecenia ustawiana jest flaga stringComplete i w pętli loop z polecenia odczytywany jest jego argument i odpowiednio przełączany jest przekaźnik. Po załadowaniu kodu do Arduino możemy otworzyć dowolny monitor portu szeregowego (również ten wbudowany w Arduino IDE) i wpisując w jego okienko polecenie R:0 będziemy wyłączali przekaźnik a po wpisaniu R:1 przekaźnik zostanie włączony.

Zamiast samemu montować układ możemy do Arduino Uno zakupić gotowy relay shield wyposażony w kilka przekaźników i pozostanie nam jedynie zaprogramowanie układu:

attachicon.gifrelayshieldb1s.jpg

 

W następnej części rozbudujemy nieco kod sterujący tak, żeby umożliwić włączanie i wyłączanie przekaźników po określonym czasie albo według zadanego prostego planu. Oczywiście zachęcam do prezentowania swoich pomysłów i rozwiązań  B)

Mam dwa pytania. Oba z cyklu czy dobrze rozumiem?

1 Z powyższego kodu wynika, że wprowadzenie dowolnych znaków oprócz R:0 włączy stycznik?

2 Co oznacza (char) w lini:

  // pobieramy bajt danych

  char inChar = (char)Serial.read();  

ED 80, Celestron 8/1000, montaż Advance VX, NEQ6, ASI1600MC-Cool, ASI-120, Nikon D5300, QHY5v 

Odnośnik do komentarza
Udostępnij na innych stronach

1. dokładnie tak. To jakby '0' oznaczało false, a cokolwiek innego true

2. zdarzenie serialEvent jest wywoływane za każdym razem, kiedy do portu szeregowego dochodzi jakaś nowa informacja. Zadaniem tej linijki jest dodanie odczytanych bajtów danych, dołączenie ich do zmiennej inputString i jeśli komenda jest zakończona to wykonanie polecenia (ustawienie stringComplete na true)

jolo-astrojolo.png

Odnośnik do komentarza
Udostępnij na innych stronach

Boszeeeeee, co to jest??? czy Jolo AstroHub 3.0 też trzeba będzie programować czy jak to tgam się nazywa?, bo jak tak to ja na pewno tego nie ogarnę, To wszystko o czym Łukasz tu piszesz to dla mnie więcej niż czarna magia :(

Moje fotki https://photos.google.com/album/AF1QipMNqiXQ-13VWmtjIGgVMkKsTASYHTqiCdVyy-vx

TS APO 102/520 f5. 1, EQ6R, QHY294M Pro, ZWO ASI224 MC, Canon EOS 550D

Odnośnik do komentarza
Udostępnij na innych stronach

........ To wszystko o czym Łukasz tu piszesz to dla mnie więcej niż czarna magia :(

On tak specjalnie aby zmniejszyć liczbę zamawiających... za dużo ich się narodziło, mnie wystraszył  >:D

  • Like 2

Serdecznie pozdrawiam i kryształowego nieba życzę - Jacek  ?
TS T APO 90/600 z TSFLAT2 + Samyang 135 f2 ED z QHY183C + AS 60/240 z RC IMX290M + Canon 550D - sadzane na ZEQ25GT + Nikon 12x50 EX do podglądania.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeszcze tak trochę poczekają i jak zrezygnuje ze 30 procent zainteresowanych to zabiorą się za robotę  ;)

  • Like 1

Celestron C8-NGT 200/1000, Sky-Watcher Pro-series MAK 150/1800, Uniwersał 90/900,
lornetka TPL 20x80 GIANT,  30x60,   canon EOS 60D, ALccd 5,  Baader UHC-S; Baader O III
PTMA Katowice

Odnośnik do komentarza
Udostępnij na innych stronach

Jeszcze tak trochę poczekają i jak zrezygnuje ze 30 procent zainteresowanych to zabiorą się za robotę  ;)

Ja myślę że jeszcze parę postów z tym kodem i to będzie duuużo więcej jak 30% ;).

 Takahashi FSQ 106ED, TS 50/205 guidescope, NEQ6pro belt mod, QHY8L, ALccd5L-IIc, 550d

Odnośnik do komentarza
Udostępnij na innych stronach

1. dokładnie tak. To jakby '0' oznaczało false, a cokolwiek innego true

2. zdarzenie serialEvent jest wywoływane za każdym razem, kiedy do portu szeregowego dochodzi jakaś nowa informacja. Zadaniem tej linijki jest dodanie odczytanych bajtów danych, dołączenie ich do zmiennej inputString i jeśli komenda jest zakończona to wykonanie polecenia (ustawienie stringComplete na true)

Jasne, dzięki.

ED 80, Celestron 8/1000, montaż Advance VX, NEQ6, ASI1600MC-Cool, ASI-120, Nikon D5300, QHY5v 

Odnośnik do komentarza
Udostępnij na innych stronach

  • 3 tygodnie później...

Dla każdego, któremu nie jest obce arduino powinien zainteresować fakt, że w poniedziałek ukazała się nowa, oficjalna  wersja środowiska arduino - 1.6.0 http://arduino.cc/en/Main/Software Myślę, warto je zaktualizować - instalator odinstaluje poprzednią wersję - trzeba będzie zaimportować dodatkowe biblioteki ..

  • Like 2

APO TS 130/910;  ASI 290MM; okular Baader Scopos 30 mm 2",  ES 14mm,  ES 4,7 mm, EQ6-R Pro, Canon EOS RP, Jolo AstroHub 3.0

Odnośnik do komentarza
Udostępnij na innych stronach

Ja mam którąś tam 1.5.5 i korzystam z niej jako podkładki pod Arduino Eclipse. Gdyby się komuś znudziło środowisko Arduino i chciał czegoś więcej to polecam Arduino Eclipse. To prawdziwy kombajn do tworzenia projektów Arduino.

Warto się zapoznać...

http://www.baeyens.it/eclipse/download.php

  • Like 2

Pozdrawiam! Lucjan
Sony A7II, Olympus E-PL5, E-PM2 full spectrum, Astro CZJ Sonnar 300 f/[email protected], EQ3-2 + AstroEQ

Odnośnik do komentarza
Udostępnij na innych stronach

Dzięki! Popatrzę, poczytam jakoś wcześniej nigdy nie trafiłem na środowisko Arduino Eclipse, pewnie dlatego, że moja przygoda z arduino rozpoczęła się całkiem niedawno ..

APO TS 130/910;  ASI 290MM; okular Baader Scopos 30 mm 2",  ES 14mm,  ES 4,7 mm, EQ6-R Pro, Canon EOS RP, Jolo AstroHub 3.0

Odnośnik do komentarza
Udostępnij na innych stronach

Eclipse to uniwersalne otwarte wielosystemowe srodowisko. Amatorzy zaprzegaja go do pracy z kazdym jezykiem programowania :) ma potencjał.

 

Ja pracuje wlasnie nad stacją pogodową na bazie shieldu ze SparkFun. Wkrotce sie pochwale... Pogoda jest niejako nieodłącznym składnikiem obserwacji astronomicznych :)

  • Like 1

Pozdrawiam! Lucjan
Sony A7II, Olympus E-PL5, E-PM2 full spectrum, Astro CZJ Sonnar 300 f/[email protected], EQ3-2 + AstroEQ

Odnośnik do komentarza
Udostępnij na innych stronach

Jest, jest przesyłka a właściwie przesyłki zakupy dokonane w dalekowschodnim kraju dotarły 10 dni wystarczyło, żeby 2 x arduino uno ( niecałe 3$ szt.) i 2 x sprzęgło helikalne (1,65 $ szt.) Brakuje tylko silnika krokowego, który pewnie zaraz zapuka do drzwi (a co tam jak na wszystko ceny to na wszystko - 13 $) , Przy okazji można zobaczyć mój zestaw do testów i nauki oraz silnik krokowy ze starego FDD 5,25''. Plan jest taki: arduino + silnik z FDD na focuser i arduino + silnik krokowy 12V, 0,4A + easy driver jako napęd platformy palaktycznej ale jeszcze zostało trochę do zrobienia a czasu jak na lekarstwo ale co tam, jak ja zawsze mówię co się nauczę to moje :)

 

post-541-0-03777800-1423784463_thumb.jpg

post-541-0-69030100-1423784470_thumb.jpg

post-541-0-40426700-1423784476_thumb.jpg

post-541-0-66499500-1423784483_thumb.jpg

  • Like 2

APO TS 130/910;  ASI 290MM; okular Baader Scopos 30 mm 2",  ES 14mm,  ES 4,7 mm, EQ6-R Pro, Canon EOS RP, Jolo AstroHub 3.0

Odnośnik do komentarza
Udostępnij na innych stronach

  • 1 miesiąc później...

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić obrazków. Dodaj lub załącz obrazki z adresu URL.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.

© Robert Twarogal * forumastronomiczne.pl * (2010-2023)