Alarm domowy z powiadomieniem GSM @ easy-soft | elektronika i programowanie mikrokontrolerów\nHome » Artykuły » Asembler » Różne przydatne urządzenia\nUrządzenia alarmowe bardzo często są wyposażane w różnego rodzaju sygnalizacje włamania. Najprostszym jest uruchomienie sygnału dźwiękowego czy optycznego, te bardziej zaawansowane potrafią podawać swój status przez Internet czy telefon. Prezentowane w tym artykule urządzenie to amatorski alarm, który potrafi przesłać informację o załączeniu przez krótką informację tekstową, tak zwany SMS. Dla potrzeb modelu wykorzystałem modem GSM firmy Wavecom (testowałem również Siemens M20), jednak można użyć dowolnego telefonu komórkowego. Być może jego wykorzystanie będzie wymagało rozwiązania problemu zasilania oraz sposobu kodowania SMS, jednak jest możliwe i wykonalne w warunkach warsztatu elektronika – amatora.\nPrezentowana centralka alarmowa jest jednym z tego rodzaju urządzeń elektronicznych, których podstawowa wartość skupia się na wykonaniu odpowiedniego oprogramowania. Układ elektryczny jest prosty i nieco przypomina płytkę prototypową przeznaczoną do projektowania układów z mikrokontrolerami. Jednostkę sterującą stanowi układ mikrokontrolera firmy ATMEL AT90S2313 taktowany wewnętrznym generatorem o częstotliwości stabilizowanej kwarcem 7,3728MHz. Mikrokontroler ma 15 linii wejścia – wyjścia. Dwie z nich wykorzystywane są przez UART (RXD – 2, TXD – 3), pozostałe trzynaście steruje pracą układów peryferyjnych lub służy do komunikacji mikrokontrolera z otoczeniem. Port B ustawiany jest przez program jako wyjściowy z załączonymi rezystorami pull-up (DDRB=0xFF). Tryb ten nie ulega zmianie w czasie pracy programu mimo, iż czasami port ten wyprowadza dane a czasami służy do ich odczytu. Jest to pewna szczególna cecha mikrokontrolera AVR, wrócimy jeszcze do niej w dalszej części artykułu. Podobnie jest w przypadku portu D, chociaż tutaj część linii jest liniami wyjściowymi (TXD, DIR) a część wejściowymi (RXD i bity 2 do 5). Nie mniej jednak raz ustawiony tryb pracy nie jest zmieniany podczas funkcjonowania urządzenia.\nJak wspomniałem wcześniej, mikrokontroler AT90S2313 posiada 15 linii portów wejścia – wyjścia. Potrzeby układu alarmu są jednak znacznie większe. Posiada on 8 wejść przeznaczonych dla czujników a dodatkowo wyświetlacz i klawiatura wymagają użycia odpowiednio co najmniej 6 i 7 wyprowadzeń portów. To tylko podstawowe układy otoczenia. Dodajmy do tego jeszcze co najmniej 1 linię dla sterowania układem sygnalizacji alarmu i otrzymamy liczbę 22 wyprowadzeń portów koniecznych do poprawnego funkcjonowania układu alarmu. Konieczna więc była albo zmiana mikrokontrolera na taki posiadający większą liczbę portów albo też zastosowania dodatkowych układów scalonych. Zdecydowałem się na to drugie rozwiązanie.\nSygnał z czujników alarmowych podawany jest na doprowadzenia diody transoptora. Transoptor zapewnia izolację galwaniczną oraz eliminuje część niskonapięciowych zakłóceń, które mogą pojawić się na linii doprowadzającej sygnał z czujnika. Użyłem 2 elementów firmy SHARP o symbolu PC849 (odpowiednik funkcjonalny produkowany jest przez firmę LITEON pod oznaczeniem LTV849). Każda z obudów zawiera 4 transoptory składające się z fototranzystora i diody. Szeregowo połączone z diodami rezystory R1..R8 należy dobrać do parametrów posiadanych czujników. Te stosowane przez mnie o wartości 1 kOhm dobrane zostały dla napięcia sterującego 9...12V.\nOsiem wejść czujników podłączone jest do układu multipleksera, który w zależności od poziomu logicznego sygnału przyłożonego na wejście A/B (wyprowadzenie 1) podaje na wyjścia 1Y..1Y odpowiednio stany logiczne z wejść 1A..4A lub 1B..4B. Umożliwia to 4-bitowemu portowi mikrokontrolera odczyt 8-bitowych danych w dwóch „porcjach” po 4 bity. Wyborem 4 wejść, z których odczytywany jest stan steruje wyprowadzenie 6 portu D mikrokontrolera.\nNiektóre z portów mikrokontrolera pełnią podwójną rolę. Oprócz tego, że są wyjściowymi np. dla modułu wyświetlacza LCD, to są również wejściowymi dla wierszy klawiatury. Zacznijmy może opis od wyświetlacza. W swojej konstrukcji użyłem modułu LCD 2 linie po 20 znaków w każdej. Wyświetlacz pracuje w trybie interfejsu 4-bitowego wykorzystując linie portu PB0..PB4 jako linie danych, PB4 jako linię wyboru rejestru RS i PB7 jako ENABLE. Wszystkie linie portów oprócz ENABLE są wykorzystywane w dwójnasób: jako sterujące wyświetlaczem oraz pracą klawiatury. Wykorzystywany jest fakt, że w czasie trwania stanu niskiego na linii ENABLE nie są do rejestrów wyświetlacza zapisywane żadne dane. Umożliwia to zmiany stanów pozostałych linii bez zakłócania pracy modułu.\nTypowo, na wyprowadzenie 3 złącza wyświetlacza podane jest napięcie z suwaka potencjometru służące do regulacji kontrastu a pomiędzy 15 i 16 doprowadzone jest napięcie dla podświetlenia tła (około 4,3V). Układ można uprościć zwierając napięcie regulacji kontrastu do masy. Dla większości wyświetlaczy LCD jest to wystarczające.\nKlawiaturę zbudowano jako matrycę 3 kolumn i 4 wierszy. Trzy bity portu B (4, 5 i 6) pracują jako wyjściowe, cztery jako wejściowe. Wszystkie linie mają załączone wewnętrznie rezystory pull-up. Wyjątkiem są tutaj bity 0 i 1, które wymagają zewnętrznych rezystorów podciągających. Kierunek pracy portu nie jest zmieniany przez program sterujący. Linie pracują zawsze jako wyjściowe a w razie potrzeby ich stan sprawdzany jest przez odczyt rejestru PIN. W architekturze mikrokontrolera AVR rejestr PIN to adres, przy odczycie którego, wyprowadzenie portu załączane jest przez specjalny bufor trójstanowy do wewnętrznej magistrali danych mikrokontrolera.\nRolę układu dopasowującego poziomy napięć interfejsu UART mikrokontrolera do RS232 pełni układ MAX232. Wykorzystane są tylko 2 układy driverów znajdujące się w strukturze. Sygnał interfejsu doprowadzony jest na złącze męskie, 9-wyprowadzeniowe. Układu MAX można nie wlutowywać lub nie wykorzystywać. Zworki JP1 i JP2 znajdujące się na płytce umożliwiają odłączenie sygnałów RXD i TXD mikrokontrolera od układu MAX, i doprowadzenie go do inwertorów 74HCT14. W zamiarze miał być to układ dopasowujący do telefonu GSM (Siemens C35). Rezystory R20 i R21 to dzielnik napięcia, który jest tak dobrany, aby napięcie wyjściowe nie przekraczało 3,3V w stanie wysokim. W drugą stronę, bramka 74HCT14 pracująca jako odbiornik, posiada w strukturze przerzutnik Schmitta, który powoduje, że napięcie powyżej 2,4V uważane jest za stan wysoki. Zaznaczam jednak, że alarm testowany był wyłącznie z modemami firmy Siemens (M20T) oraz Wavecom (WMOD2), a interfejs dla telefonu GSM nie był używany. Złącze dla „zwykłego” telefonu GSM oznaczone jest jako X14 a dla modemu GSM - X12. Bramki układu inwertora pracują również jako układy wyjściowe sterujące pracą przekaźnika oraz diody LED. Całość układu zasilana jest napięciem 5V z umieszczonego na płytce układu stabilizatora 7805 (U3). Do poprawnej pracy wymaga on podania co najmniej 7V na zaciski złącza X10. Uwaga na polaryzację! Kondensatory C9..C12 pełnią rolę filtrowania napięcia zasilającego. C10 i C11 powinny być umieszczone jak najbliżej wyprowadzeń stabilizatora. Rezystor R11 i kondensator C4 to prosty układ RC (rezystor ładowany przez kondensator) wytwarzający sygnał „reset” dla mikrokontrolera. Elementem wykonawczym alarmu jest przekaźnik RL1. Na doprowadzeniach jego cewki znajduje się dioda D3 mająca za zadania eliminowanie przepięć powstających w czasie załączania i wyłączania cewki. Jak wspomniałem wcześniej, rolę układu dopasowującego pełnią bramki inwertora połączone równolegle w celu zapewnienia większej wydajności prądowej. Przekaźnik sterowany jest wspólnie z diodą LED. Załączeniu przekaźnika odpowiada stan zaświecenia diody.\nW pewnych momentach pracy układu, dioda wykorzystywana jest również do sygnalizacji. Wówczas jednak jej błyski są na tyle krótkie, że nie powodują załączenia przekaźnika. Również w czasie przeglądania wierszy klawiatury starałem się dobrać czasy na tyle krótkie aby nie powodować załączania urządzeń zewnętrznych.\nTab. 1. Opis wyprowadzeń mikrokontrolera AT90S2313\nNumer (obudowa DIL20)\nOznaczenie sygnału na schemacie\nLinia danych DB4 modułu LCD, wiersz 2 klawiatury\nLinia danych DB5 modułu LCD, wiersz 3 klawiatury\nLinia danych DB6 modułu LCD, wiersz 4 klawiatury\nLinia danych DB7 modułu LCD, wiersz 1 klawiatury\nLinia RS modułu LCD, kolumna 1 klawiatury\nKolumna 2 klawiatury\nLinia załączająca przekaźnik i LED, kolumna 3 klawiatury\nLinia ENABLE modułu LCD\nLinia odbiornika interfejsu UART mikrokontrolera\nLinia nadajnika interfejsu UART mikrokontrolera\nWejście sygnału z czujki zewnętrznej (X1 i X5)\nWejście sygnału z czujki zewnętrznej (X2 i X6)\nWejście sygnału z czujki zewnętrznej (X3 i X7)\nWejście sygnału z czujki zewnętrznej (X4 i X8)\nSterowanie wyborem wejść multipleksera (U2)\nOpis programu sterującego\nPoczątkowo zamierzałem wykonać całość programu sterującego pracą alarmu w językach Bascom lub GCC. Okazało się jednak, że mikrokontroler AT90S2313 ze swoimi 2 kB pamięci FLASH jest zbyt skromny jak na wymagania kompilatora języka wysokiego poziomu. Zupełnie zaskoczył mnie kompilator GCC. Przeniosłem do niego bibliotekę funkcji, napisaną co prawda dla 8051, lecz po drobnych modyfikacjach kompilator GCC przetworzył źródło na kod wynikowy bez większego problemu. Jednak rozmiar tego kodu był dla mnie zupełnym zaskoczeniem! Wykonałem wyłącznie procedury obsługi LCD w języku C i te po kompilacji zajęły 3 kB! Dla porównania analogiczny funkcjonalnie program wykonany w Bascom AVR zajął jedynie ok.500 bajtów. Podobnie zresztą jak w RC-51. Być może nie umiałem włączyć jakiejś opcji optymalizacji ale... Tak czy inaczej – 2 kB to za mało pamięci aby była wystarczającą do wykonania tego typu aplikacji w jakimś języku wysokiego poziomu. Chcąc nie chcąc, zgodnie z zasadą „coś za coś”, musiałem wykonać całość programu sterującego w języku AVR Asembler. W tym przypadku był to rozmiar kodu wynikowego kosztem czasu spędzonego przy jego implementacji. Przy uruchamianiu i testowaniu programu sterującego posługiwałem się AVR Studio 4 firmy ATMEL.\nAby omówić sposób funkcjonowania programu, muszę wyjaśnić kilka podstawowych reguł, którymi kieruję się przy pisaniu tego rodzaju aplikacji. Dotyczą one głównie stałych i zmiennych oraz sposobu ich interpretacji przez funkcje. Zacznijmy od liczb. Zgodnie z notacją przyjętą przez firmę Atmel, każdą liczbę rozpoczyna bajt mniej znaczący a kończy bardziej znaczący. I tak – jeśli liczba jest 4-bajtową zmienną umieszczoną w rejestrach R0 - R01 - R02 - R03, to najmniej znaczący bajt zawiera R0 a najbardziej znaczący R03. Każdy łańcuch tekstowy wysyłany na wyświetlacz zawiera tylko kody znaków większych od 0x20 (32 dziesiętnie, kod znaku odstępu) a kończy się znakiem o kodzie 0x00. Podobnie jest z ciągami znaków wysyłanych do modemu ale podlegających przetwarzaniu przed ich wysłaniem. Na przykład polecenie zapisując kod PIN zawiera część stałą „AT+CPIN=” oraz zmienny – zależny od karty SIM – poufny kod PIN. Inaczej jest z poleceniami przesyłanymi wprost do modemu. Te kończy sekwencja kodów CR (powrót kursora do początku linii, 0x0A) oraz LF (nowa linia, 0x0C). Reasumując – każdy tekst wyświetlany lub przetwarzany kończy kod 0x00 a każdy tekst przesyłany jako stały do modemu, kończą kody CR-LF. Ten sposób zapamiętywania danych stosowany jest konsekwentnie w całym programie. Wyjątkiem jest sposób w jaki przechowywane są kody załączenia i wyłączenia alarmu oraz kod PIN.\nProgram główny jest bardzo krótki. Na początku ustawiane są tryby pracy portów B i D. Do rejestru DDRB wpisywana jest wartość 0xFF, co oznacza, że wszystkie wyjścia mają załączone rezystory pull-up i pracują jako wyjściowe. Do rejestru DDRD wpisywana jest wartość 0xC0, która ustawia bity 6 i 7 portu D jako wyjściowe a pozostałe jako wejściowe. Tu jedna uwaga. Linia TXD portu C (bit 1) pracuje jako wyjściowa, jednak wpisanie do rejestru DDRD „1” na pozycję odpowiednią dla tego bitu powoduje, że pracuje ona jako zwykły port wyjściowy i traci swoją funkcję jako TXD. Aby linia ta pracowała poprawnie jako wyjście interfejsu UART, należy do DDRD na pozycji 1 wpisać „0” lub pozostawić stan taki, jaki jest po załączeniu zasilania.\nNastępne linie programu ustalają częstotliwość z jaką wywoływane będą przerwania Timer’a 0 i 1. Ten pierwszy to licznik 8-bitowy generujący przerwanie po zliczeniu 255 impulsów. 256 impuls zegarowy ustawia flagę przepełnienia OVF0 i powoduje przejście do obsługi przerwania. Przy częstotliwości rezonatora kwarcowego 7,3728MHz, preskalerze ustawionym na wartość 1024 oraz początkowej wartości licznika 0 (licznik Timer’a 0 liczy w górę), przerwania będą wywoływane z częstotliwością 7372800 : 1024 : 256 = 28,125 Hz. Timer 1 również ma preskaler ustawiony na wartość 1024, jednak do rejestrów wpisywana jest wartość inicjująca, od której Timer zlicza impulsy zegarowe w górę, aż do przepełnienia. Timer 1, w odróżnieniu od Timer’a 0, jest 16-bitowy, toteż liczy do wartości 65535. Impuls numer 65536 powoduje przepełnienie, ustawienie flagi OVF1 i przejście do procedury obsługi przerwania. Tu przerwanie wywoływane jest z częstotliwością 7372800 : 1024 : (65535 – 58335) = 1 Hz. Przerwania są zablokowane po uruchomieniu mikrokontrolera, jednak pozostawiony „na wszelki wypadek” rozkaz CLI wyłącza je i blokuje aż do momentu, gdy konieczne będzie ich użycie. Zostawmy na razie procedury obsługi przerwań – będzie jeszcze okazja do nich wrócić.\nOd etykiety „STATUS_CHECK” rozpoczyna się część programu mająca za zadanie rozpoznanie trybu, w którym znajdował się mikrokontroler przed wyłączeniem napięcia zasilania. Wywoływana zostaje funkcja odczytująca bajt spod adresu 0x00 w pamięci EEPROM. Wartość tego bajtu odpowiada statusowi urządzenia. Jeśli komórka ta zawiera wartość różną od 0xF0 lub 0x0F, to program uznaje, że jest to pierwsze załączenie alarmu i zażąda wykonania wszystkich niezbędnych nastaw, to jest: podania kodu załączenia i wyłączenia, podania kodu PIN dla używanej karty SIM, wprowadzenia numeru telefonu oraz opisów dla lokalizacji alarmu i wejść czujników. Wybrana metoda sprawdzenia statusu urządzenia jest o tyle pewna, że każdy zapis programu do pamięci FLASH mikrokontrolera AT90S2313 powoduje usunięcie zawartości EEPROM (cały EEPROM zostaje zapisany wartością 0xFF). Po wprowadzeniu nastaw do komórki „STATUS” zostaje zapisana wartość odpowiednia dla stanu wyłączenia alarmu.\nPoświęćmy teraz kilka chwil wysyłanym do modemu rozkazom i ich znaczeniu. Interfejs UART pracuje z szybkością 9600 bitów na sekundę. Identyczną prędkość powinniśmy ustawić w posiadanym telefonie, czy modemie. Aby dokonać niezbędnych nastaw należy przy pomocy dowolnego programu terminala nawiązać połączenie z modemem i wydać polecenie „AT+IPR=9600;&W”. Ustawi ono i zapisze w pamięci konfiguracji modemu parametr prędkości transmisji. W przypadku użycia telefonu GSM może się okazać, że nie zaakceptuje on wyżej wymienionej komendy. Wówczas prawdopodobnie łatwiej będzie nam zmienić prędkość z jaką pracuje UART mikrokontrolera, aniżeli telefonu. Można to zrobić poprawiając funkcję „uart_init” a konkretnie wartość wpisywaną do rejestru UBRR. Należy dobrać ją w zależności od używanego rezonatora i wymaganej prędkości transmisji. Gotowe przykłady można znaleźć w notach aplikacyjnych na stronie producenta http://www.atmel.com lub wyliczyć samodzielnie na podstawie wzorów znajdujących się w kartach katalogowych mikrokontrolerów AVR. Gdy sprawdzimy, że modem (telefon) gotowy jest do pracy i komunikuje się poprawnie używając prędkości 9600 bps, możemy podłączyć go do naszego układu.\nJako pierwszą program sterujący wysyła komendę „ATZ”. Powoduje ona ustawienie domyślnego trybu pracy – przywrócone zostają również wszystkie te parametry, które nie zostały zapamiętane na stałe jako domyślne. Następny rozkaz wprowadza numer PIN właściwy dla karty na przykład: „AT+CPIN=9889”. Kod PIN to hasło, którego rola polega na zabezpieczeniu telefonu GSM przed niepowołanym dostępem. Tutaj szczerze powiedziawszy trochę przeszkadza ale niestety – jest wymagany w celu uruchomienia modemu. Jako kolejne wysyłane są polecenia „ATE0” wyłączające tzw. echo komendy oraz „AT+CPMS=SM” ustawiające miejsce przechowywania wiadomości SMS na kartę SIM. Jednocześnie z przyjmowaniem tych poleceń modem włącza się do sieci. W przypadku modemu WAVECOM gotowość do pracy sygnalizowana jest przez migoczącą z częstotliwością około 1 Hz diodę LED, w przypadku SIEMENS MT20 jest odwrotnie – dioda LED zaświeca się na stałe.\nPo każdym poleceniu wysłanym do modemu wywoływana jest funkcja „gets” odbierająca ciąg znaków z UART. Oczekiwane jest, że modem odpowie co najmniej wysyłając kody CR i LF. W przypadku braku odpowiedzi od modemu, program przestanie pracować już w fazie inicjacji. Można w ten sposób łatwo stwierdzić, że brak jest poprawnej łączności z modemem. Niestety, nie wykonałem w programie detekcji odłączenia modemu. W przypadku, gdy modem zostanie odłączony tuż przed wysłaniem SMS z powiadomieniem o załączeniu alarmu, alarm zostanie włączony a następnie program będzie oczekiwał na połączenie z modemem i odpowiedź na przesłane polecenia. Jeśli jej nie otrzyma – zawiesi się sprawdzając w nieskończoność stan flagi gotowości do odbioru znaku (bajtu) z UART.\nOd etykiety „main” rozpoczyna się główna pętla programu. Na jej początku ponownie odczytywany jest bajt statusu i w zależności od jego wartości podejmowana jest odpowiednia akcja. Polega ona bądź to na wywołaniu procedury obsługi alarmu w stanie czuwania, bądź to obsługi alarmu w stanie wyłączenia.\nZa jego obsługę odpowiedzialna jest funkcja „alarm_off”. Po jej wywołaniu czyszczony jest ekran wyświetlacza LCD a następnie wyświetlona zostaje informacja z pamięci ROM umieszczona w niej pod nazwami symbolicznymi „whenoff” oraz „set_1”. Ta pierwsza umieszczona zostaje w 1 linii ekranu – ja zadeklarowałem ją jako „ALARM WYŁĄCZONY”. Ta druga umieszczona w 2 linii LCD, to pytanie o kod wyłączenia. Zadeklarowałem ją jako „Kod wyłączenia?”. Później zmiennej „visible” nadana zostaje wartość „UCANTSEE” a zmiennej „sensors” wartość „SENSOROFF”. Po wyżej wymienionych operacji, wywoływana jest funkcja odczytu kodu wprowadzanego przy pomocy klawiatury. Kod jest zawsze 4 cyfrowy. Rezultat pracy funkcji zwracany jest w rejestrach o nazwach symbolicznych „cchar1” do „cchar4”. Uwaga: kod załączenia musi być inny niż „0000”. Jest on zarezerwowany do wprowadzenia urządzenia w tryb serwisowy!\nFunkcja „compare_codes” porównuje 4 bajty pobrane z pamięci EEPROM spod adresu podanego w rejestrze „eeaddr” z tymi odczytanymi z klawiatury. Jeśli kod wprowadzony jest identyczny z zapamiętanym, do komórki zawierającej bajt statusu w EEPROM, zapisana zostaje wartość informująca program o tym, że alarm jest załączony i następuje powrót do programu głównego. Teraz na podstawie zawartości komórki „status” pamięci EEPROM, wywołana zostaje funkcja obsługująca stan załączenia alarmu.\nCałość funkcji związanych ze stanem czuwania alarmu umieszczona jest w podprogramie pod etykietą „alarm_on”. Po wejściu do podprogramu załączane jest przerwanie Timer’a 1. Fragment programu zawierający kod jego obsługi, pokazałem na listingu 1. Procedura ta ma do wykonania dwa podstawowe zadania. Ma zwiększyć wartość zmiennej - licznika „goon” oraz odświeżyć zawartość rejestrów licznika Timer’a 1. Do tych dwóch zadań dodałem jeszcze trzecie – krótki, trwający około 1 milisekundy, błysk diody LED. Sygnalizuje ona w ten sposób, że odmierzany jest czas do załączenia. Pętla rozpoczynająca się od etykiety „al_on_wait” trwa dokładnie tyle czasu odmierzanego w sekundach, ile podano w stałej „DELAYTIME”. Jako typową wartość zadeklarowałem 30 sekund. Jest to czas, przed upływem którego osoba załączająca alarm musi się oddalić z obszaru zadziałania czujników.\nList. 1. Procedura obsługi przerwania Timer’a 1\n;obsługa przerwania timera 1\n;odmierzanie czasu opóźnienia do zadziałania alarmu\nsbi portb,ALARMOUT ;załączenie LED (migotanie w czasie "ALARMDELAY")\npush temp ;przechowanie zawartości "temp" na stosie\nout TCNT1L,temp ;odświeżenie zawartości Timer'a 1\ninc goon ;zwiększenie licznika "goon"\nrcall delay1ms ;opóźnienie czasowe dla LED\ncbi portb,ALARMOUT ;wyłączenie diody LED\nPo upływie tego czasu, rozkaz CLI wyłącza obsługę przerwań a przerwanie pochodzące od Timer’a 1 jest blokowane. Teraz wyświetlony zostaje komunikat o załączeniu alarmu („whenon” i „set_2”) a następnie do rejestru kontrolnego przerwań (TIMSK) wprowadzana jest nastawa załączająca przerwanie na skutek przepełnienia Timer’a 0. Jest ono odpowiedzialne za odpytywanie stanu czujników (sensorów) alarmu. Rozkazy składające się na procedurę obsługi umieściłem na listingu 2. Ze względu na pozorną złożoność poświęćmy jej troszeczkę uwagi.\nList. 2. Procedura obsługi przerwania Timer’a 0\n;obsługa przerwania timera 0\n;odpytywanie wejść alarmu\npush temp ;zapamiętanie "temp" na stosie\ncbi portd,HIGHNIBBLE ;odczyt młodszej połówki bajtu wejść czujników\nnop ;przerwa na czasy propagacji układów\nin temp,pind ;odczyt młodszej połówki bajtu\nasr temp ;"dopasowanie" bitów\nin temp,pind ;odczyt starszej połówki bajtu\nRozkaz „push temp” przechowuje wartość rejestru „temp” na stosie. Następnie zerowany jest bit 6 portu D oznaczony na schemacie jako DIR. Wartość „0” tego bitu oznacza, że odczytane zostaną czujniki podłączone do wejść 1A, 2A, 3A i 4A mikrokontrolera. Tworzą one młodszą połówkę bajtu stanu czujników. Jest ona odczytywana z rejestru PIND, przesunięta dwukrotnie w prawo (dwa polecenia „asr temp”) i zostaje zapamiętana w zmiennej „sensors”. Następnie, po ustawieniu stanu wysokiego na wyprowadzeniu PORTD.6, pobrany zostaje starsza połowa bajtu stanu czujników, przesunięta dwukrotnie w prawo i zsumowana z młodszą. Wynik sumowania zostaje zapamiętany w zmiennej „sensors”. Po odtworzeniu wartości „temp” rola procedury kończy się. Inne funkcje sprawdzają odczytany stan czujników i podejmują odpowiednią akcję. W przypadku stwierdzenia na jednym z wejść informacyjnych mikrokontrolera (PD2..PD5) stanu niskiego, rola przerwania Timer’a 0 kończy się – zostaje ono zablokowane. Dalsze przeglądanie czujników nie jest potrzebne. Ponownie zerowany jest licznik czasu „goon” i załączone zostaje przerwanie Timer’a 0 tym razem odmierzając czas upływający od momentu zadziałania czujnika do momentu załączenia alarmu. Ponownie jest to czas podany w sekundach o wartości „DELAYTIME”. Opóźnienie zostało wprowadzone po to, aby użytkownik miał możliwość wprowadzenia kodu wyłączającego alarm.\nProcedura „alarm_on”, sprawdza kod wyłączenia wprowadzany przez użytkownika podobnie jak poprzedniczka. W ten sam sposób kończy pracę ustawiając bajt statusu urządzenia w EEPROM i powracając do głównej pętli programu w przypadku zgodności wprowadzonego kodu z tym zapisanym w EEPROM. Ponownie jak poprzednio – decyzję o podejmowanej przez urządzenie akcji podejmuje główna pętla programu na podstawie zawartości komórki pamięci zawierającej bajt statusu urządzenia. W związku z tym, że jest to pamięć, która nie traci zawartości po wyłączeniu napięcia zasilania, urządzenie po odłączeniu i ponownym podłączeniu napięcia zasilania zostanie wprowadzone w ten sam stan, w którym znajdowało się przed wyłączeniem.\nRamy tego artykułu są trochę zbyt szczupłe aby omówić blisko 1,5 tysiąca linii programu napisanego w języku asemblera. Niestety w związku z tym pewne aspekty będą pominięte i dociekliwy Czytelnik musi sam przeanalizować kod źródłowy programu tak, aby dotrzeć do pewnych szczegółów. Jedną z takich dwóch „trudnych” procedur jest funkcja odczytu kodu wprowadzanego z klawiatury. Zwłaszcza kilka początkowych linii wymaga dokładniejszego omówienia. Umieściłem je na listingu 3.\nListing 3. Fragment funkcji odczytu kodu „read_code”\nbrid read_code_next ;jeśli przerwania są wyłączone,przejdź do\n;odczyt klawiatury i nie sprawdzaj stanu sensorów\nmov temp,sensors ;sprawdzenie stanu czujników!!! konieczne tutaj,\n;bo funkcja nie przerywa pracy do momentu odczytu\n;pełnego, 4-cyfrowego kodu\nbreq read_code_next ;jeśli żaden sensor nie jest aktywny omiń\nbrts read_code_act ;jeśli flaga T jest ustawiona, to nie wykonuj\n;nastaw przerwania Timera 1\ncli ;wyłączenie przerwań\nclr goon ;kasowanie licznika czasu opóźnionego załączenia\n;(pracuje w przerw.Timer'a 1)\nout TIMSK,temp ;załączenie przerwań Timer'a 1 (co 1 sek.)\nsei ;załączenie przerwań\nset ;ustawienie flagi "T"\npush zl ;przechowanie wskaźnika do bufora w RAM\nrcall kbd_read ;odczyt klawiatury, znak zwracany w “char”\nOd etykiety „read_code_next” rozpoczyna się właściwa procedura rozpoznawania wciśniętych klawiszy i nadawania wartości komórkom „cchar1”... „cchar4”. Pamiętajmy o tym, że funkcja jest uniwersalna i wykorzystywana zarówno w trybie wyłączenia alarmu jak i w trybie załączenia. Tryby te różnią się pomiędzy sobą przede wszystkim tym, że w stanie załączenia aktywne jest przerwanie Timer’a 0 przeglądające stan czujników. W związku z tym rozkaz „brid read_code_next” powoduje natychmiastowe przejście do funkcji interpretacji klawiszy wówczas, gdy nie jest załączona obsługa przerwania. Zrobiłem tak po to, aby wartość zmiennej „sensors” nie wpływała na stan alarmu. Dlaczego? Prześledźmy dalsze linie programu.\nsprawdza, czy któryś z czujników alarmu jest aktywny. Obojętnie czy w stanie wyłączenia, czy załączenia podejmowana jest akcja na podstawie stanu zmiennej „sensors”! W związku z tym możliwe jest uaktywnienie sygnalizacji dźwiękowej i powiadomienia SMS w stanie wyłączenia alarmu. Omawiane wcześniej polecenie „brid” ma urządzenie przed tym uchronić.\nRównież w tej funkcji konieczne jest jednokrotne zainicjowanie wartości „goon” i załączenie przerwań Timer’a 1 w celu odmierzania czasu opóźnionego załączenia. Inicjacja przeprowadzana jest w zależności od stanu flagi T. Rozkaz „brts read_code_act” omija polecenia nadające wartości zmiennym w przypadku, gdy flaga jest ustawiona. Polecenia „set” ustawia flagę T po przeprowadzeniu inicjalizacji.\nNa listingu 4 umieściłem fragment kodu źródłowego programu odpowiedzialny za obsługę uaktywnienia alarmu. Rozpoczyna się ona od etykiety „alarm_active” zestawem rozkazów testujących stan zmiennej „goon” odmierzającej czas do załączenia alarmu. Jeśli wartość „goon” jest mniejsza lub równa „DELAYTIME”, to nie jest podejmowana żadna akcja. Jeśli wartość „goon” jest większa od „DELAYTIME”, rozkaz „sbi portb,ALARMOUT” załącza sygnalizację dźwiękową a polecenie „rcall send_SMS” wywołuje podprogram wysyłający SMS pod zaprogramowany i zapamiętany w EEPROM numer telefonu. SMS będzie wysłany, o ile bit 0 zmiennej „sms_sent” nie jest ustawiony. Dodatkowo blokowane są przerwania, co powoduje zaniechanie sprawdzania stanu czujników oraz odmierzania czasu. Alarm pozostaje załączony do momentu wprowadzenia kodu wyłączenia lub odłączenia napięcia zasilania.\nList. 4. Procedura obsługi załączenia alarmu\n;alarm aktywny - sygnalizacja dźwiękowa, powiadomienie za pomocą SMS,\n;oczekiwanie na kod wyłączenia\nsubi temp,DELAYTIME ;sprawdzenie,czy upłynął już czas opóźnienia\ncli ;wyłączenie przerwań - już nie są potrzebne\nsbi portb,ALARMOUT ;załączenie wyjścia alarmu\ntst smssent ;jeśli wysyłano już SMS,to nie wysyłaj powtórnie\nrcall send_SMS ;wysłanie sms z powiadomieniem\nWysyłanie wiadomości SMS przez mikrokontroler to pytanie bardzo często pojawiające się w listach kierowanych do Redakcji oraz na grupach dyskusyjnych w Internecie, dlatego też poświęcę mu nieco czasu. Oba z posiadanych przez mnie modemów GSM obsługują dwa tryby przesyłania wiadomości SMS. Tryby te oznaczone są numerami 0 i 1. Odpowiedź Twojego telefonu lub modemu na rozkaz „AT+CMGF?” lub „AT+CMGF=?” będzie zawierać listę obsługiwanych trybów pracy. Ja dla swojej aplikacji wybrałem tryb 1, wygodniejszy i wolę nie wyrażać swojej opinii na temat kodowania wiadomości w trybie 0, zwanym również „PDU mode”.\nPodane poniżej informacje opracowane zostały na podstawie dokumentacji firmy SIEMENS dla modemu GSM M20. Zainteresowanym poszerzeniem swojej wiedzy na ten temat odsyłam szczególnie do czterech źródeł:\n- Dokumentacji modemu M20 SIEMENS dostępnej na stronie producenta pod nazwą „sms_guid_v1_0.doc”. Autorem jest T.Schuh.\n- Noty aplikacyjnej umieszczonej pod adresem „http://www.mcselec.com/an_31.htm” . Autorem jest Vilko Sustić.\n- Noty aplikacyjnej umieszczonej pod adresem „http://www.mcselec.com/an_117.htm”. Autorem jest Warren Read.\nInformacji zawartych na stronie internetowej http://www.dreamfabric.com/sms/\nMode 0 (PDU)\nW tym trybie na twórcę aplikacji spada obowiązek zakodowania całej informacji dotyczącej wysyłanej wiadomości. Spójrzmy na przykład zaczerpnięty z materiałów firmy Siemens przesyłający wiadomość o treści „THE BIG BROWN FOX” pod numer telefonu +991234567 (kliknij na tabelę, aby powiększyć).\nWyjaśnijmy znaczenie poszczególnych pól wiadomości SMS.\nDługość pola SCA jest opcjonalną dla niektórych telefonów. Jest to podana szesnastkowo liczba oktetów numeru Centrum Usług. Większość telefonów umożliwia wprowadzenie w tym miejscu wartości 0x00, więc nie trzeba podawać i tym samym znać tego parametru.\nTyp numeru Centrum Usług podanie wartości 91 oznacza numerację międzynarodową (np. z prefix +48 dla Polski), 81 to numeracja lokalna, obowiązująca na terenie danego kraju\nNumer Centrum Usług to numer podany przez operatora, dzięki któremu możliwe jest przesyłanie wiadomości SMS. Np. dla sieci Plus GSM jest to numer +48601000100, Zwróćmy uwagę na sposób kodowania tego numeru. Na przykład numer „601 000100” zakodowany będzie w sposób następujący:\nNumeracja krajowa, bez numeru kierunkowego: 81\nNieparzysta liczba znaków – na końcu dodawana jest litera F, więc numer przyjmie postać „601000100F”\nNumer po kodowaniu będzie wyglądał następująco: „06010010F0”.\nPierwszy oktet komunikatu SMS\nTP-RP – ścieżka (numer) nadawcy; ustawienie bitu oznacza, że ścieżka dla odpowiedzi na wysłany SMS jest ustawiona\nTP-UDHI – ustawienie bitu oznacza, że przesyłane dane użytkownika rozpoczynają się od nagłówka identyfikującego\nTP-SRR – ustawienie tego bitu oznacza, że nadawca żąda raportu na temat odbioru wiadomości SMS przez odbiorcę\nTP-VPF – bity określające format okresu ważności wiadomości SMS:\n- 0 0 : TP-VPP nieobecne\n- 1 0 : TP-VPP obecne, format relacyjny (0..143 = (wartość parametru + 1) x 5 minut, 144..167 =\n12 godzin + (wartość parametru - 143) x 30 minut, 168..196 = (wartość parametru–166)x1 dzień,\n197..255 = (wartość parametru – 192) x 7 dni)\n- 0 1 : format rozszerzony, 7 oktetów\n- 1 1 : format absolutny, 7 oktetów\nTP-RD – ustawienie bitu powoduje, że duplikaty wiadomości są odrzucane\nTP-MTI – typ komunikatu: wartość bitów 0 1 powoduje, że wiadomość przesyłana jest w trybie\nPole statusu określające numer odniesienia dla wysyłanego komunikatu; wpisanie wartości 0x00 powoduje, że numer telefonu, z którego wysyłamy SMS jest równocześnie numerem odniesienia.\nDługość numeru odbiorcy SMS, podana w ilości bajtów numeru.\nTyp numeru odbiorcy SMS (81 lub 91).\nNumer odbiorcy wiadomości SMS (kodowany w ten sam sposób, co numer Centrum Usług).\nIdentyfikator protokołu komunikacyjnego. Wartością typową, używaną przez większość sieci telefonów komórkowych jest 0x00.\nSchemat kodowania danych. Wprowadzona wartość 0x00 oznacza, że znaki kodowane są w postaci 7-bitowych znaków ASCII.\nOkres ważności wiadomości SMS. Liczba podana i interpretowana zgodnie z kodem reguły podanym przez bity TP-VPF.\nLiczba oktetów bajtów tekstu.\nWiadomość SMS zgodnie ze specyfikacją organizacji ETSI (http://www.etsi.org) może mieć do 160 znaków długości, gdzie każdy znak zakodowany jest w postaci kodu 7-bitowego. Znaki o kodach długości 8-bitów zazwyczaj nie są przez telefony wyświetlana, natomiast czasami używane są jako sterujące (przesyłanie obrazów, dzwonków itp.). Komunikaty zakodowane w postaci liczb 16-bitowych (maksymalnie 70 znaków) używane są do przesyłania komunikatów zakodowanych według standardu UNICODE (UCS2) i mogą być wyświetlane przez większość aparatów GSM. Niektóre z telefonów wyświetlają te komunikaty jako FLASH SMS. My zajmiemy się kodowaniem standardowym, gdy kody znaków mają długość 7 bitów. Prześledźmy sposób kodowania tekstu na przykładzie: zakodujmy wiadomość „ELEKTRONIKA”.\nTekst „ELEKTRONIKA” zawiera 11 znakÓW nazywane septetami ze względu na swą długość – 7 bitów. My musimy zmienić sposób kodowania z septetów na oktety – znaki o długości 8 bitów.\nPierwszy septet (E) zamieniany jest na oktet poprzez „zabranie“ najmniej znaczącego bitu następnego w kolejności znaku i wprowadzenie go na pozycję bitu 7 (0 + 1000101 = 01000101 à 0x45). Po tej operacji bit jest usuwany, więc następne przekształcenie (L) zabierze dwa bity z kolejnego znaku, kolejne trzy i tak dalej. W konsekwencji znak ósmy zostanie całkowicie usunięty. Dla znaku numer dziewięć proces rozpocznie się od początku.\nJako przykład zakodowaną wiadomość „ELEKTRONIKA” i wyślijmy na numer sieci PLUS. Centrum wiadomości (SCA) ma tutaj numer +48601000310. Prześlijmy wiadomość na numer +48605010203.\nDługość pola SCA (w tym przypadku 7 bajtów, z polem typu SCA): 07\nTyp SCA - numeracja międzynarodowa: 91\nNumer SCA: 8406010013F0\nPierwszy oktet wiadomości SMS: 11\nPole statusu: 00\nDługość numeru odbiorcy SMS (liczba bajtów): 07\nTyp numeru odbiorcy – numeracja międzynarodowa: 91\nNumer odbiorcy: 8496959192F3\nIdentyfikator protokołu: 00\nSchemat kodowania: 00\nOkres ważności (1 tydzień): BF\nDługość tekstu: 0x0A\nZbierzmy to w całość: 07918406010013F0110007918496959192F30000BF0A45667149953E9DC96510\nNiestety – oprócz znajomości długości niektórych ze składników wiadomości, aby ją wysłać musimy jeszcze znać jej całkowitą długość. W naszym przykładzie wynosi ona 32 bajty. Zestaw poleceń, które musimy wydać modemowi aby wysłać wiadomość, będzie następujący:\nUwaga: wyżej wymienione znaki są reprezentacją bajtów o wartości zakodowanej szesnastkowo. Cyfra „32” jest długością przesyłanej informacji podaną w bajtach. Podany przykład kodowania jest właściwy dla informacji wprowadzanej przez interfejs komunikacyjny. Inaczej wysyła się wiadomość, gdy numer Centrum Usług znajduje się na karcie czy też gdy wysyłana jest wiadomość zapamiętana w pamięci telefonu lub karty SIM.\nMode 1 (TEXT MODE)\nW przeciwieństwie do swojego poprzednika , tryb 1 zwany również TEXT MODE jest bardzo łatwy w użyciu. Poniższa sekwencja poleceń wysyła identyczną wiadomość jak wyżej w trybie tekstowym:\nTrybem tym posłużyłem się tworząc funkcję „send_SMS”. Niestety, nie wszystkie telefony GSM będą ten tryb obsługiwać.\nFunkcja wysyłająca wiadomość SMS: „send_sms”.\nNa listingu 5 umieściłem kod źródłowy funkcji wysyłającej wiadomość SMS. Część wiadomości docierającej do adresata jest stała, zdefiniowana w programie. Część wiadomości taka, jak lokalizacja obiektu i opis czujnika jest zmienna i może być zdefiniowana przez użytkownika. Definicja zostaje zapamiętana w pamięci EEPROM i jest używana przy kompozycji wiadomości. Przeanalizujmy listing 4.\nList. 5. Procedura wysyłania wiadomości tekstowej SMS\nldi zl,LOW(send_sms_1<<1) ;Z = adres nastawy-polecenia w ROM\nrcall putf ;wysłanie polecenia\nrcall gets ;pobranie odpowiedzi modemu\nldi zl,LOW(send_sms_2<<1) ;Z = adres napisu w ROM\nldi yl,LOW(buffer) ;Y = adres bufora w RAM\nclr yh ;tu adresy RAM mogą być tylko 1-bajtowe\nrcall move_rom2ram ;przepisanie danych z ROM do RAM,\n;adresy ROM w Z,RAM w Y\nldi eeaddr,SMSNUMBER_EEADDR ;pobranie numeru telefonu z eeprom\n;do "buffer", na który wskazuje Y\nrcall ee_read2buf ;uwaga: zmieniany jest rejestr Y\nldi temp,0x22 ;cudzysłów zamykający\nrcall st_EOL ;zapisanie znaków CR+LF do bufora\nrcall puts_buffer ;wysłanie zawartości "buffer" przez UART\n;teraz kompozycja SMS do wysłania\nldi zl,LOW(send_sms_3<<1) ;odczyt części "stałej" z ROM i EEPROM\nldi eeaddr,SMSTEXT_EEADDR ;teraz odczyt opisu obiektu (30 znaków\n;wprowadzone przez użytkownika)\nldi temp,',' ;do temp kod ascii przecinka\nst y,temp ;zapisanie go w buforze\nclr temp ;wyliczenia adresu etykiety i jej odczyt\n;(jeśli czujnik jest aktywny,to bit\ninc temp ;przyjmuje wartość "0")\nclc ;kasowanie flagi "carry"\nror sensors ;przeniesienie najmłodszego bitu do C\nbrcs send_SMS_sen ;jeśli C jest "1",to wejście nie jest aktywne\nrcall sen_ee_addr ;wyznaczenie adresu w eeprom\ninc yl ;odczyt etykiety wejścia do bufora w RAM\nldi temp,0x1A ;zapamiętanie znaku "Ctrl+Z"\nrcall st_EOL ;zapisanie kodów CR+LF\ninc smssent ;ustawienie znacznika wysłania SMS\nJako pierwsze wysyłane jest do modemu polecenie zapisane w pamięci ROM zdefiniowane pod etykietą „send_sms_1”. Jest to polecenie załączenia trybu tekstowego „AT+CMGF=1”. Uwaga! Zarówno polecenie wyświetlające listę dostępnych trybów jak i załączające konkretny tryb pracy działa dopiero po włączeniu się telefonu do sieci. Każde polecenie musi być zakończone znakiem CR (0x0D). Za przesłanie polecenia z ROM odpowiedzialna jest funkcja o nazwie „putf”. Różni się ona od „puts” tym, że dane wysyłane przez UART pobiera z ROM a nie bufora w pamięci RAM. W następnej kolejności przesyłany jest do modemu numer telefonu, którego stała część zdefiniowana jest pod etykietą „send_sms_2” a zmienna, wprowadzana przez użytkownika, pobierana jest z EEPROM. Polecenie zawierające numer telefonu adresata wiadomości komponowane jest w pamięci RAM i przesyłane do modemu przez funkcję „puts”. Podobnie tworzona jest wiadomość tekstowa: komponowana w RAM z części stałej „send_sms_3”, tekstu – lokalizacji obiektu wprowadzonej przez użytkownika oraz etykiety czujnika wyliczanej na podstawie zawartości zmiennej „sensors” (zmienna ta przesuwana jest w prawo z użyciem flagi przeniesienia C do momentu aż flaga ta zostanie wyzerowana; logiczne „0” oznacza stan aktywny czujnika – liczba przesunięć liczona wskazuje na numer wejścia). Tekst musi być zakończony znakiem CTRL+Z. Jest to dobrze znany nam znak końca zbioru tekstowego o kodzie 26 (0x1A).\nCałość zmontowano na dwóch płytkach jednostronnych: po jednej dla klawiatury i układu sterującego. Konstrukcja alarmu jest bardzo prosta a jej montaż nie powinien sprawiać trudności nawet początkującemu elektronikowi. Montaż rozpoczynamy od wlutowania łączówek – ja wykonywałem je przy pomocy drutu „srebrzanki”. Później elementy bierne – rezystory i kondensatory, półprzewodniki a na końcu układ mikrokontrolera. Mikrokontroler nie musi być zaprogramowany. Dolutowując do jego wyprowadzeń złącze można zaprogramować go już w układzie. Tak właśnie uruchamiałem swój układ.\nRezystory R1 do R8 należy dobrać w zależności od posiadanych czujników. Wartość 1k jest właściwą dla napięcia wejściowego od 9 do 12V i transoptorów LTV849. Dla PC849 firmy SHARP można użyć rezystorów o większej wartości. Wartość rezystancji można oszacować na podstawie wzoru: (Napięcie czujnika – 1,5) : 0,01 = Rezystancja w Ohm.\nProgram napisany został w taki sposób, że za aktywny uważany jest stan, gdy na wejściu pojawi się napięcie. W przypadku odwrotnym wymagane jest zanegowanie wartości zmiennej „sensors” po odczycie czujników. W takiej sytuacji wystarczy w procedurze obsługi przerwania Timer’a 0 na końcu dodać polecenie „neg sensors”.\nZarówno klawiatura jak i wyświetlacz podłączone zostały z użyciem złącz zaciskanych o nazwie IDC. Wyświetlacz wymaga złącza o 16 wyprowadzeniach, klawiatura o 10. Oczywiście złącza można zastąpić przewodami. Stabilizator 7805 dobrze jest umieścić na niewielkim radiatorze. Jego temperatura będzie zależeć bardzo mocno od modelu użytego wyświetlacza oraz doprowadzonego napięcia wejściowego. Ja użyłem zgodnego z LCD wyświetlacza VFD, który charakteryzuje się dosyć dużym poborem prądu i przez to stabilizator bardzo mocno nagrzewał się w czasie pracy (wyświetlacz pobiera około 0,3A co przy napięciu zasilającym 12V daje moc traconą przeszło 2W). Układ powinien być zasilany napięciem stałym o wartości co najmniej 8V i nie więcej niż 15V.\nJeśli chcemy wykorzystać modem GSM (na przykład WAVECOM), na płytce montujemy złącze DSUB-9 męskie (szpilki). Jest ono właściwe dla urządzenia sterującego transmisją. Do złącza tego wprost dołączamy kabel modemu.\nElementem wykonawczym jest przekaźnik z cewką na napięcie 5V. W modelu używałem przekaźnika firmy ITT o oznaczeniu RZ2H-5. Styki przekaźnika, podobnie jak wejścia czujników alarmu, wyprowadzone są przez złącza terminatory o rastrze 3,5mm („pod śrubkę”) umożliwiające wygodne podłączenie i rozłączenie układu.\nKarta SIM musi być przygotowana do pracy. To znaczy musi zawierać poprawny numer centrum serwisowego oraz być aktywna. Programowanie parametrów karty można wykonać bądź to z użyciem programu terminala, bądź to umieszczając kartę w zwykłym telefonie GSM.\nPo pierwszym załączeniu użytkownik musi wykonać konfigurowanie. Proszę pamiętać o tym, że interfejs użytkownika jest bardzo skromny, ponieważ ilość pamięci programu, którą dysponuje mikrokontroler również jest bardzo mała.\nJako pierwszy należy wprowadzić kod wyłączenia alarmu. Może i powinien on być inny od kodu załączenia. Wprowadzamy 4 cyfry – w tym momencie zmienna „visible” ma wartość „UCANSEE” i można odczytać wprowadzane znaki. Kod zawiera 4 cyfry, po których wprowadzeniu użytkownik zostanie poproszony o akceptację przez naciśnięcie klawisza ENTER (w prawym, dolnym rogu klawiatury) lub możliwe jest powtórne wprowadzenie innego (?) kodu po naciśnięciu klawisza CLR (środek dolnego rzędu klawiatury). Później w identyczny sposób wprowadzamy kod wyłączenia i numer PIN dla karty telefonu GSM. Teraz następuje pytanie o numer telefonu, na który wysyłane będą SMS. Należy wprowadzić go łącznie z numerem kierunkowym kraju, na przykład „48605010203”. Procedura wprowadzania numeru telefonu jest wspólna z tą przeznaczoną do wprowadzania tekstu: dłuższe przytrzymanie klawisza powoduje wprowadzenie litery. Proszę zwrócić uwagę na to, aby wprowadzić wyłącznie cyfry. W przypadku pomyłki, kasowanie jest możliwe przez naciśnięcie klawisza CLR. Numer zostaje zapamiętany po naciśnięciu ENTER.\nNastępnie użytkownik pytany jest o część opisową dla SMS. Przeznaczona jest ona dla krótkiego opisu lokalizacji, na przykład „JAGIELLOŃSKA 2/3”. Można wprowadzić do 28 znaków. Dodatkowo należy podać opisy dla wejść poszczególnych sensorów, na przykład 1 – „OKNO”, 2 – „DRZWI” itp. Zalecam aby wprowadzić cokolwiek, co pozwoli zidentyfikować wejście czujnika – chociażby numer 1, 2, 3 itp. Na etykietę – opis wejścia czujnika, przeznaczone jest 8 znaków. Jeśli nie zostaną wprowadzone żadne dane tekstowe, program zapisze pod adresem łańcucha znaków w EEPROM znak jego końca. Mogą się wówczas pojawić błędy przy kompozycji i wysyłaniu wiadomości SMS. Wprowadzanie tekstu kończy krótkie przyciśnięcie klawisza ENTER. Proszę nie przytrzymywać go przez czas dłuższy niż 1 sekunda.\nNa rysunku 1 umieściłem opis klawiatury. Tekst wprowadzany jest podobnie jak przy pisaniu wiadomości SMS w telefonie komórkowym. Dłuższe przytrzymanie klawisza, powoduje wyprowadzenie kolejnych znaków. I tak dla przykładu pod klawiszem „1” ukryte są litery A, B i C oraz oczywiście cyfra 1. Zwolnienie klawisza powoduje przesunięcie kursora na następną pozycję po upływie czasu około 1 sekundy.\nRys. 1. Rozmieszczenie klawiszy alarmu (na zielono wpisano kody zwracane przez procedurę kbd_read)\nPo wprowadzeniu nastaw alarm przejdzie do pracy w trybie wyłączonym. Podanie kodu załączenia spowoduje, że odmierzony zostanie czas 30 sekund a następnie alarm przejdzie do trybu czuwania. W tym czasie widać migotanie diody LED co 1 sekundę i pojawia się komunikat „czekaj...”, chociaż bardziej na miejscu byłby napis „uciekaj!”. Jest to jednak napis wspólny dla różnych funkcji, nie było miejsca w pamięci ROM na bardziej sugestywne komunikaty.\nPojawienie się napięcia na wejściu czujnika powoduje, że na kolektorze tranzystora pojawi się stan niski. Jest on interpretowany przez mikrokontroler jako uaktywnienie alarmu. Od momentu pojawienia się stanu niskiego CPU zaczyna odmierzać czas 30 sekund i jeśli w tym czasie nie zostanie wprowadzony kod wyłączenia, załączany jest przekaźnik oraz wysyłane powiadomienia SMS. Alarm jest załączony aż do momentu odłączenia napięcia zasilania lub wprowadzenia kodu wyłączenia. Podobnie jak poprzednio, odmierzanie czasu sygnalizowane jest przez migotanie diody LED.\nGdy alarm znajduje się w trybie wyłączenia, możliwe jest ponowne wprowadzenie nastaw. Nastawy wykonane poprzednio i zapisane w EEPROM są zamazywane a na ich miejsce zapisywane są nowe, wprowadzane przez użytkownika. Nie istnieje więc możliwość modyfikacji nastaw – należy podać je wszystkie na nowo. Aby wejść do trybu nastaw, w trybie wyłączenia należy wpisać kod „0000” a następnie kod wyłączenia alarmu. Po prawidłowym jego podaniu, możliwe jest wprowadzenie nastaw.\nUrządzenie alarmowe jest urządzeniem amatorskim i jako takie nosi jego znamiona. Jest przykładem aplikacji wykorzystującej modem lub telefon GSM do sygnalizacji. Wraz z urządzeniem udostępniam również źródło programu i zachęcam do samodzielnych jego modyfikacji. Można na przykład usunąć z programu możliwość wysyłania w wiadomości SMS etykiet opisów czujników a zaoszczędzone w ten sposób miejsce w pamięci programu wykorzystać na implementację lepszego interfejsu użytkownika lub innego sposobu kodowania wiadomości niż TEXT MODE. Można wreszcie pozbyć się procedur komunikacji z telefonem GSM i wykorzystywać urządzenie jak zwykłą centralkę alarmową.\nCałość programu została wykonana i skompilowana przy pomocy AVR STUDIO 4. Jest to kompletne środowisko do pisania i uruchamiania aplikacji dla mikrokontrolerów AVR. Do linii RESET, MISO, MOSI i SCK mikrokontrolera przylutowałem złącze i przy wykorzystaniu programatora ISP programowałem i testowałem układ. Jest to bardzo wygodna, nie tylko dla elektronika amatora, metoda. Pozwala na uruchamianie aplikacji w rzeczywistym środowisku jej pracy.\nProgram zajmuje 128 bajtów pamięci EEPROM na zmienne definiowane przez użytkownika. Ich wykaz Można znaleźć w tabeli 2. Kod wynikowy po kompilacji zajmuje 1019 słów dwubajtowych, to jest 2038 z 2048 bajtów pamięci programu AT90S2313. Niestety, nie ma już zbyt wiele miejsca na implementację nowych funkcji lub dłuższych komunikatów. Można je wykonać jedynie kosztem usunięcia lub optymalizacji już istniejących.\nTab. 2. Wykaz adresów zmiennych umieszczonych w pamięci EEPROM\nAdres zmiennej w EEPROM\nKomórka, w której zapamiętany jest status alarmu (załączony = 0xF0, wyłączony = 0x0F)\nKod załączenia alarmu w postaci 4 kodów znaków ASCII\nKod wyłączenia alarmu w postaci 4 kodów znaków ASCII\nNumer PIN telefonu, również 4 znaki ASCII\nNumer telefonu, na który przesyłane będą powiadomienia SMS; zmienna ma długość 12 bajtów – 11 na numer telefonu + 0x00\nEtykieta wejścia czujnika 1; zmienna ma długość 9 bajtów – 8 na opis + 0x00\nEtykieta wejścia czujnika 2, jak wyżej\n- / / - 3\n- / / - 4\n- / / - 5\n- / / - 6\n- / / - 7\n- / / - 8\nTekst komunikatu SMS przeznaczony do zidentyfikowania obiektu, na przykład ulica + numer domu; długość 28 bajtów – 27 na tekst + 0x00\nListing 6. Wykaz stałych używanych w programie\n;stałe związane z wyświetlaczem\n.equ ENABLE = 7 ;numer bitu portu b dla linii ENABLE wyświetlacza LCD\n.equ REGSEL = 4 ;numer bitu portu b dla linii R/S wyświetlacza LCD\n;stałe związane z UART i tablicami danych\n.equ CR = 0x0A ;kod znaku powrotu kursora\n.equ LF = 0x0D ;kod znaku nowej linii\n.equ EOF = 0x1A ;kod znaku końca zbioru tekstowego\n.equ EOD = 0x00 ;koniec danych (tabeli, tekstu itp)\n;stałe związane z klawiaturą\n.equ COLUMN1 = 4 ;numer bitu portu b 1 kolumny klawiatury\n.equ COLUMN2 = 5 ;numer bitu portu b 2 kolumny klawiatury\n.equ COLUMN3 = 6 ;numer bitu portu b 3 kolumny klawiatury\n.equ NOKEY = 0xFF ;jeśli "char" zwracany przez funkcję odczytu\n;klawiatury przyjmuje wartość NOKEY, oznacza to,\n;że nie jest wciśnięty żaden klawisz\n.equ CLRKEY = 10 ;umowny kod klawisza "CLR"\n.equ ENTERKEY = 11 ;umowny kod klawisza "ENTER"\n.equ UCANSEE = 0xFF ;stała dla "visible" oznacza, że wprowadzane znaki\n.equ UCANTSEE = 0x00 ;stała dla "visible" oznacza, że wprowadzanych znaków\n;nie można czytać (wyświetlany jest znak zastępczy *)\n;stałe stanu alarmu\n.equ ALARMON = 0x0F ;status alarmu - załączony\n.equ ALARMOFF = 0xF0 ;status alarmu - wyłączony\n.equ ALARMACTIVE = 0x55 ;status alarmu – sygnalizacja (nieużywany)\n.equ ALARMOUT = 6 ;bit wyjścia portu b sterujący załączeniem alarmu\n.equ HIGHNIBBLE = 6 ;bit wyjścia portu D sterujący wyborem połówki\n.equ SENSORSOFF = 0xFF ;wartość zmiennej „sensors” oznaczająca, że żaden\n;z czujników nie jest aktywny (wyzwolony przez\n.equ DELAYTIME = 30 ;czas opóźnienia do zadziałania alarmu (w sek.)\n.equ TIM1RLDH = 0xE3\n.equ TIM1RLDL = 0xDF ;stałe do odświeżania zawartości Timer'a 1\n;(częstotliwość wywoływania przerwania to 1 Hz)\n;teksty do wyświetlenia\nwelcome1: .db "ALARM+SMS",EOD\nwhenoff: .db "ALARM WYLACZONY",EOD\nwhenon: .db "ALARM AKTYWNY",EOD\n;teksty menu nastaw\nset_1: .db "Kod zalaczenia?",EOD\nset_2: .db "Kod wylaczenia?",EOD\nset_3: .db "Kod PIN modemu?",EOD\nset_4: .db "Telefon dla SMS?",EOD\nset_5: .db "Tekst SMS (30 zn.)?",EOD\nset_6: .db "Tekst wej. (8 zn.)?",EOD\nset_ok: .db "ENTER=OK,C=popraw ",EOD\nset_wait: .db "Czekaj...",EOD\n;nastawy modemu GSM\n.db "ATZ",CR,LF ;ten tekst wysyłany będzie przez UART,\n;dlatego kończy go CR+LF\n.db "AT+CPIN=",EOD ;ten tekst będzie przetwarzany przed\n;wysłaniem, dlatego kończy się EOD\n.db "ALARM ZALACZONY W OBIEKCIE ",EOD\n;tablica znaków do wprowadzania tekstu, naciśnięciu klawisza odpowiada znak\n;z tablicy kolumna 1 zawiera znaki dla pojedynczego naciśnięcia, 2 dla\n.db '0', ' ', '/', '-' ;kody dla klawisza "0"\n.db '1', 'A', 'B', 'C' ;kody dla klawisza "1"\n.db '2', 'D', 'E', 'F' ;kody dla klawisza "2"\n.db '3', 'G', 'H', 'I' ;kody dla klawisza "3"\n.db '4', 'J', 'K', 'L' ;kody dla klawisza "4"\n.db '5', 'M', 'N', 'O' ;kody dla klawisza "5"\n.db '6', 'P', 'Q', 'R' ;kody dla klawisza "6"\n.db '7', 'S', 'T', 'U' ;kody dla klawisza "7"\n.db '8', 'V', 'W', 'Z' ;kody dla klawisza "8"\n.db '9', 'Y', 'Z', '.' ;kody dla klawisza "9"\nListing 7. Wykaz definicji rejestrów używanych w programie (zmiennych)\n;definicje zmiennych pomocniczych\n.def cchar1= r02 ;kod BCD znaku zwracanego przez funkcję "read_code"/1\n.def cchar2= r03 ; j.w. /2\n.def cchar3= r04 ; j.w. /3\n.def cchar4= r05 ; j.w. /4\n.def visible = r06 ;zmienna ma wartość 1,gdy wprowadzany kod może\n.def length= r07 ;długość wprowadzanego tekstu dla read_text\n.def sensors = r08 ;stan sensorów (czujników) alarmu\n.def goon = r09 ;inkrementowana co 1 s przez funkcja odmierzająca\n;czas opóźnienia podczas obsługi przerwania Timer’a 1\n.def copypb= r10 ;przechowuje kopię portu b\n.def copypd= r11 ;przechowuje kopię portu d\n.def smssent = r12 ;wartość różna od 0 oznacza, że SMS został wysłany\n.def temp = r16 ;zmienna pomocnicza\n.def delay1 = r17 ;dla procedury delay\n.def delay2 = r18 ; - / / -\n.def delay3 = r19 ;w niej podawany jest argument dla funkcji „delaysec”\n.def delay = r20 ;główna zmienna dla delay-w niej jest podawany argument\n;dla funkcji „delayms” (w milisekundach)\n.def i = r21 ;zmienna pomocnicza - pętle i iteracje\n.def char = r22 ;bufor znaków dla lcd\n.def eedata = r23 ;bajt do zapisu w eeprom\n.def eeaddr = r24 ;adres zapisu bajtu w eeprom\n.def sbuf = r25 ;bufor dla znaku odbieranego/wysyłanego przez uart\n;xp zawiera odciętą, yp rzędną (definicja pokrywa się z "delay")\n.def xp = R17\n.def yp = R18\nSchemat i płytka alarmu (alarm-gsm-sch.zip) 90.04 KB\nProgram źródłowy (alarm-gsm-pliki.zip) 16.26 KB\nSchemat i płytki jako PDF (alarm-gsm-pcb.pdf) 239.33 KB


Mydło Olivia do rąk - 500 ml - Dezynfekcja skóry i dłoni - DEZYNFEKCJA (ŚRODKI DO DEZYNFEKCJI I HIGIENICZNE)\nDelikatne mydło do mycia rąk i dłoni\nMydło w płynie to alternatywa dla zwykłych mydeł w kostkach. Dzięki możliwości dozowania mydło jest bardzie higieniczne niż tradycyjna kostka. Mydło w płynie Oliwia to propozycja delikatnego detergentu myjącego do rąk. Mydło oprócz właściwości myjących posiada również nawilżające. Doskonale chroni skórę przed nadmiernym wysuszeniem. Zawarta w nim gliceryna pozwala na przedłużenie trwałości produktu jak i również dogłębnie nawilża i regenerację naskórka podobnie jak pochodne olejku kokosowego również w składzie. Mydło pozostawia na skórze warstwę ochronną.\nMydło nawilżające Olivia polecane jest dla wszystkich osób, których skóra narażona jest na codzienne działanie substancji drażniących, wysuszających. Bardzo dobrze sprawdzi się w warunkach medycznych dla personelu medycznego pracującego w rękawiczkach ochronnych, również w innych profesjach np. fryzjerstwie, kosmetyce i wszędzie tam gdzie wymaga się noszenia ochrony na dłonie. Polecane również dla osób, które nie mogą stosować tradycyjnych mydeł ze względu na uczulenia. Mydło w tej ofercie w wygodnej i poręcznej butelce o pojemności 500 ml z dozownikiem posiadamy również mydło w większej pojemności w kanistrze 5 L. Mydło posiada delikatny i przyjemny zapach dobrze się pieni i zmywa.\nMydło w płynne z neutralnym dla skóry pH 5,5-6,5. Mydło można stosować do rąk jak i również mycia całego ciała. Skład mydła w płynie wg. INCI Aqua, Sodium Laureth Sulfate, Lauramidopropyl Betaine, Cocamide DEA, Sodium Chloride, Glycerin, Citric Acid, Parfum, Preservative. W naszym medycznym sklepie posiadamy również inne środki do mycia również mydła, kremy, pianki i inne kosmetyki. Sposób zastosowania podobnie jak zwykłe mydła w płynie. Należy niewielką ilość mydła nanieść na wilgotne dłonie, rozetrzeć i spłukać wodą.\n- mydło w płynie Oliwia przeznaczone do mycia rąk i ciała\n- bardzo dobrze sprawdzi się dla osób pracujących w rękawiczkach ochronnych\n- mydło dobrze się pieni i zmywa\n- w składzie zawiera glicerynę nawilżającą i natłuszczającą\n- bardzo delikatny i przyjemny zapach\n- z wygodnym dozownikiem


Powstanie muzeum przy sklepie - KKSLECH.com - KKS Lech Poznań - Serwis nieoficjalny\nArtykuły / Kibice / Klub / Stadion Miejski / Wypowiedzi\nPowstanie muzeum przy sklepie\nW marcu 2012 roku Lech Poznań będzie miał 90 lat, zatem padły jest już pierwsze pomysły, aby powstało muzeum klubowe znajdujące się na stadionie przy ul. Bułgarskiej. Jak mówi wiceprezes naszego klubu, Arkadiusz Kasprzak, miejsce na nie jest już wybrane.\nTymczasem już od czerwca wiadomo, że operatorem stadionu Miejskiego przez 20 najbliższych lat będzie KKS Lech Poznań i Marcelin Management. Mimo to, oficjalna umowa z miastem wciąż nie weszła w życie, zatem nie mogą rozpocząć się żadne prace nad budową klubowego muzeum. – „Muzeum normalne jest uwarunkowane z podpisaniem umowy z miastem. Wówczas gdy Lech oficjalnie zostanie operatorem stadionu, wtedy powstanie muzeum stacjonarne.” – oznajmił wiceprezes Kolejorza, Arkadiusz Kasprzak.\nCzłonek zarządu Lecha Poznań zdradził także, gdzie będzie mieściło się muzeum Kolejorza, na które zresztą już od dłuższego czasu czeka wielu Wielkopolan zainteresowanych sportem. – „Takie muzeum powinno znaleźć się w okolicach sklepu na III trybunie. Miejsce jest już wybrane, ale na chwilę obecną nie możemy jeszcze działać, bo nie mamy dokumentów uwierzytelniających, że to my jesteśmy operatorem.” – podkreślił Kasprzak.\nNatomiast mimo planów zarządu Lecha Poznań w kwestii budowy muzeum, nie należy spodziewać się, że zostanie ono zbudowane jeszcze przed 90 rocznicą klubu. Na razie bowiem władze Kolejorza planują otworzyć tylko wirtualne muzeum, które będą mogli tworzyć kibice. Dodajmy również, że muzeum będzie opierało się przede wszystkim na piłkarskich pamiątkach, ale nie zabraknie w nim także historii innych dyscyplin.\nZapewne mało kto z kibiców pamięta, ale kilkanaście, kilkadziesiąt lat temu poznański Lech miał niezwykle mocno rozbudowany system sekcji. Znajdowała się przecież sekcja: koszykówki, siatkówki, hokeja na trawie, podnoszenia ciężarów, piłki ręcznej, zapasów, pływania, brydża, szachów, kręgli, boksu, gimnastyki, kajakarstwa, kolarstwa, lekkoatletyki, strzelectwa, szermierki, tenisa stołowego oraz łucznictwa.\n> Lech tylko piłkarski. Kiedyś było inaczej – artykuł z 27 czerwca\n12 września 2011 o 13:13\nto zima zadnych transferow tez nie bedzie, bo wszystko pojdzie na budowe muzeum i na inne rzeczy upamiejatniace 90-lecie\nco oni chca wystawic w tym muzeum?? za duzo pucharow nie maja…\n12 września 2011 o 13:56\nDo dupy z czyms takimim. Ciekawi mnie skad zarzad wezmie te wszystkie medalne i puchary za mistrzostwa w koszu, szachach i hokeju. Tego juz pewnie nie ma, albo dawno zostalo przepite lub sprzedane na bema\n12 września 2011 o 14:28\nSądzą, że jakiś kibic w chwili niepoczytalności odda im wszystkie pamiątki, które posiada.Oczywiście za darmo dla dobra klubu!\nDobry pomysl, tylko kto to sfinansuje, zarzad pewnie bedzie chcial by czesc kosztow ponioslo miasto.\nKiedy swiétowalismy 80 – lecie klubu nie powiedzial bym, ze moze byc gorzej. Wtedy klub nie mial kasy i dobrego zespolu, a teraz nie ma kibiców. Prawdziwych kibiców.\n12 września 2011 o 15:02\nbez jaj, jak zarzad Lecha to zarzad Lecha powinien budowac te muzeum za swoja kase ale tak by nie cierpial na tym zespol, ktory musi byc wzmocniony\n07 – kibice sa, ale nie chodza, nie dopinguja bo za wszystko idzie od psow dostac mandat i zakaz stadionowy\nkibicLecha akurat dostana mandat yhm…\n15 Zagłębie Lubin(3pkt.)- niezłe transfery m.in. Sernas\n1. Korona Kielce(12pkt.)-musiala pozbywać się swoich najlepszych graczy m.in. Niedzielan\nW tabeli dzieli ich przepaść, druzyna musi miec zgranie i byc zmotywowana, gdyby Lech był zmotywowany + umiejętności to po tej kolejce mielibyśmy min. 15 pkt.!\nPo co nam transfery niech ci co sa wezma sie do roboty 200% motywacja i zapier.alac, w sezonie mistrzowskim jak przegrał Lech w PP to zrozumieli że samymi umiejetnosciami sie niewygra, wzieli sie wgarsc , mobiloizycja zaangazowanie i nieprzegrali do końca sezonu!\nTO JEST RECEPTA NA MP!!!\n12 września 2011 o 17:04\njanek – chyba temata pomyliles


Leon Mathys lub Maty\nUrodzony ok.1917 roku,Belg z pochodzenia.W latach 1940-44 pracował na przymusowych robotach w Lebartai obecna Litwa okolice Kłajpedy.Przed wojną i po jej zakończeniu mieszkał w Belgii.Podobno miał dwóch synów urodzonych po wojnie,jeden z nich zginął w wypadku samochodowym.\nDodał: Teresa Marchel, (24 październik, 2010), napisz do poszukującego.\nmama mojego dziadka urodzila go w 1930r.w Warszawie.\nDodał: angelika, (25 październik, 2010), napisz do poszukującego.\nszukam ojca mojego ojca,mój ojciec urodził się w łosiny-tuchola\nDodał: beata siemienkiewicz, (25 październik, 2010), napisz do poszukującego.\nSyn Czesława Pszczółowskiego i Bolesławy Kopiczk lub Kopicz\nDodał: Marzena Prusinska, (25 październik, 2010), napisz do poszukującego.\nurodzony w minsku, w 1892 r. matka maria żyźniewska, ojciec antoni szpilewski. miał kilku braci. najprawdopodobniej służył w armii carskiej. po odzyskaniu niepodległości przez Polskę wyjechał do Pińska, gdzie wstąpił do armii polskiej. w 1940 r. aresztowany, wywieziony do łagru. rodzinę wywieziono do Kazachstanu - Kokczetaw, Imantaw, Aryk-Bałyk.\nDodał: brobro2008, (28 październik, 2010), napisz do poszukującego.\nZMOBILIZOWANY W 39 ROKU W STOPNIU POR.WP.PO WOJNIE WYJAZD DO ANGLII.POTEM KONTAKTY SIĘ URWAŁY,A POSZUKIWANIA PRZEZ CZERWONY KRZYŻ NIE DAŁY EFEKTU.DATY URODZIN STRYJA NIE ZNAM.\nDodał: marek pużanowski, (26 październik, 2010), napisz do poszukującego.\nmiał syna Adama Fulasa(1878-1967), mieszkajacego we wsi Nowa Wieś koło Pińczowa.\nDodał: asia, (28 październik, 2010), napisz do poszukującego.\nzamieszkiwał przed wojną za wschodnią granicą,pochowany na sybirze\nDodał: ewa rogala, (30 październik, 2010), napisz do poszukującego.\nMój dziadek niewiele o nim wiem zaginoł podczas drugiej wojny światowej żonaty z Stanisławą Majewską zamieszkiwał w Rembertowie pod Warszawą.\nDodał: U4189, (31 październik, 2010), napisz do poszukującego.\nDodał: artur jacek malachowski, (31 październik, 2010), napisz do poszukującego.\naleksandra wanda suska\nmoja mam miala troje dzieci dwie dziewczynki i chlopca jedna z dziewczynek zmarla i brat elzbieta zyjektora wychowywala sie w domu dziecka w keble a potem w pulawach elzbieta ur 80 80 1945r w lublinie poszukuje wiadomosci o mamie jej rodzinie krewnych bliskich i dalzsych podobno miezskala w lublinie na ul grockiej oddala mnie do domu dziecka byla po wojnie sanitariuzska poznala lana wojskowego i najprapodowniej wyjechala do francj ktokolwiek morze mi pomuc bede bmieszkam w zdunskiej woliardzo wdzieczna muj numer telefonu 43 823 4288 mieszkam w zdunskiej woli imie mamy aleksandra wanda rodowe suska pozdrawiam\nDodał: elzbieta staniucha, (31 październik, 2010), napisz do poszukującego.\naleksandra wanda suska suska\nCybulka, Cibulka, Czibulka\nPoszukuję jakichkolwiek śladów mojej rodziny Cybulka wywodzącej się z Moraw Śląskich. Poszukiwania z mojej strony są bardzo trudne. Ostatnie pamiątki, które mogły zawierać cenne wskazówki poszły z dymem Powstania Warszawskiego. Na szczęście Czeskie archiwa coraz bardziej udostępniają wersje cyfrowe metryk, więc jest szansa. Proszę o każdy napotkany przez Państwa ślad przy okazji własnych poszukiwań.\nDodał: Paweł Cybulski, ( 1 listopad, 2010), napisz do poszukującego.\nprzypuszczalny adres z 1976 roku: opole ul.luboszycka.data urodzenia brata nieznana.wiek ok.35-40. brak jakichkolewiek zdjęć.matka prawdopodobnie pielęgniarka na oddziale dziecięcym w szpitalu w opolu.możliwe,że ojciec nie żyje.\nja urodziłem się 8.9.1974r. w opolu.nazywałem się Jacek Malinowski.w wieku 2 lat zostałem rozdzielony z rodzeństwem i trafiłem do rodziny adopcyjnej.prawdopod obnie mam dwie siostry i brata.jedna z sióstr chyba przebywa w warszawie a druga w Anglii.o losach brata nic mi nie wiadomo.chciałbym odnaleźć rodzeństwo i poznać się z nim.wszystkie te wiadomości zdobyłem od sąsiadki rodziny Malinowskich.\nDodał: paulina staszyńska, ( 1 listopad, 2010), napisz do poszukującego.\nkrewnych z rodziny Pradelskich\nw latach 1908-1910 ?Marianna i jej mąż ?w latach 1908-1910 ?pracowali w chicago,(USA) ,tam urodziła sie moja babcia Seweryna Pradelska .po powrocie do polski jej rodzice kupili duże gospodarstwo w BUDZISŁAWIU KOŚCIELNYM .Seweryna miała siostrę Stanislawę,,brata Henryka i Eugeniusza. Stanisława ,żona Bolesława mieszkała w Koninie\nDodał: mariola bozena mania, ( 1 listopad, 2010), napisz do poszukującego.\nposzukuję krwenych z rodziny mojej mamy Wandy Mazurek z domu Grzegorska ur 19.11.1937 r w Gnieznie\nrodzice mojej mamy Józef Grzegorski i Seweryna Pradelska. Józef -nauczyciel m.inn.w szkole w Opaleniu syn Franciszki i ? rodzenstwo Józefa;Maria ,Rozalia-chrzestna Wandy ,Kazimierz -ksiądz ,Władysław -ksiądz ,Wacław -organista zamieszkali w Poznaniu\nposzukuję krewnych z rodziny mojej babci Zuzanny Mazurek\nZuzanna Mazurek -z domu Stefaniak,mama babci z domu Haber\nKREWNI Z RODZINY HABER !\nszukam wiecej informacji o moim dziadku zamordowanym w katyniu-miednoje lub harkowie,znajduje sie na ukraińskiej liscie katyńskiej ale nic o nim nie wiem\nDodał: daniel szymaniak, ( 1 listopad, 2010), napisz do poszukującego.


Posty: 49\t• Strona 4 z 5 • 1, 2, 3, 4, 5\nprzez letycja » 31 sie 2017, o 17:03\nWłaśnie, w góry już prędzej.\nprzez alexw8 » 7 wrz 2017, o 12:55\nWczasy nad naszym morzem jesienią potrafią być naprawdę klimatyczne. Nie ma co liczyć na super pogodę ale spacer po prawie pustej plaży w ładne jesienne popołudnie może być bardzo relaksujące.\nDołączył(a): 7 wrz 2017, o 11:14\nprzez siepauka28 » 28 wrz 2017, o 20:27\nPrawdę powiedziawszy, to nie wiem czy warto w Polsce spędzać urlop jesienią. Może lepiej pojechać do Paryża i odwiedzić choćby Moulin Rouge Poczytajcie sobie o tym, jestem pewna, żeby nie będziecie mogli się oprzeć, żeby tam nie pojechać ;D\nAle niezależnie od tego, jak bardzo rozpaczasz, w jak wielkich jesteś tarapatach, nie wolno ci zapomnieć, że w życiu nic nie jest postanowione z góry i że każdy problem ma swoje rozwiązanie.\nDołączył(a): 21 wrz 2017, o 21:51\nprzez Grzech » 30 wrz 2017, o 00:48\nA może Warszawa byłaby warta zobaczenia https://www.meteoprog.pl/pl/weather/Warszawa/ ?\nRzeczywistość należy ogarniać, kiedy jest jeszcze mała i bezbronna. W przeciwnym razie, ona ogarnie ciebie.\nDołączył(a): 29 wrz 2017, o 19:14\nprzez nikita » 3 lis 2017, o 13:30\nJa też lubię Podhale i do tego BookApart, ale w tym roku lepiej się tam nie pchać Lepiej pojechać do Wisły lub gdzieś indziej.\nprzez bomka » 1 gru 2017, o 22:06\nA co powiecie na Karkonosze? Zarówno jesienią jak i w pozostałych porach roku zachwycają przynajmniej mnie Przyznam, że spodobał mi się ciekawy hotel w tym rejonie a dokładnie https://travelist.pl/osada-sniezka/rodzinny-wypoczynek-u-stop-karkonoszy. Myślę, że warto.\nprzez letycja » 27 gru 2017, o 11:24\nZimą urlopu to już w ogóle nie widzę. Chyba, że ktoś jest pasjonatem sportów zimowych.\nprzez kuracjuszka » 15 sty 2018, o 14:02\nW Polsce zawsze znajdzie się mnóstwo miejsc do zwiedzenia, choć wszystko zależeć będzie od tego, co kogo interesuje. Ja bardzo lubię historię i zawsze gdziekolwiek pojadę lubię zwiedzać zabytki czy też dowiadywać się ciekawych rzeczy o okolicy. Zazwyczaj niewielkie miejscowości mają sporo do opowiedzenia: http://www.mirsk.eu/gora-sw-marcina/, a historia to bardzo ciekawa dziedzina Do tego miejscowości górskie czy te u podnóża wzniesień są fajnymi okolicami do spacerów i odpoczynku.\nprzez entuzjastyczna » 15 sty 2018, o 14:11\nNa pewno wkrótce się tam wybiorę!\nprzez efka » 17 lut 2018, o 18:38


Algierskie klimaty: Szkolo kochana!\nKto by pomyslal, ze na stare lata przyjdzie mi wrocic w szklone mury?! A jednak. 'Na nauke nigdy nie jest za pozno'- jak twierdzi moja 70- letnia 'kolezanka' z klasy :-). Swieta prawda.\nLekcja arabskiego dla poziomu poczatkujacego.\nSrednia wieku uczennic 50+, kilka wyjatkow ze mna wlacznie. Dlaczego taka wiekowa mlodziez chce sie uczyc? No coz, za czasow ich mlodosci jezykiem oficjalnym Algierii byl francuski, nie pozwalano nauczac arabskiego ani tym bardziej islamu. Obecne staruszki nie chca stracic tej szansy- aby samodzielnie czytac Koran czy zrozumiec piatkowa hutbe (kazanie przed modlitwa). Iman- nasza 'muallema' (nauczycielka)- jest studentka Szaria; zna angielski wiec mam fory. Cierpliwie tlumaczy mi znaczenie arabskich slowek, ktore wyszperala w slowniku angielskiego. Speszona zainteresowaniem reszty klasy przepraszam za zajecie czasu i proponuje, ze sama poszukam w domu. Iman nie chce o tym slyszec i tlumaczy mi, ze jestem jej siostra i to dla niej przyjemnosc. Po pierwszych zajeciach kobietki podchodza, witaja sie, troche wypytuja i nawet jedna chwali sie ze jej syn tez ma zone Polke. Zapewniaja, ze chca byc dla mnie jak matki i oferuja pomoc w razie jakiejkolwiek potrzeby. Fajnie...\nLekcja zasad czytania Koranu- tadzwid.\nSrednia wieku 7- 30. Na pierwszych zajeciach mala dziewczynka Amina (jak sie okazalo przepieknie recytujaca Koran) chodzi za mna i zagaduje wiec wszyscy mysla ze to moja corka, nikt nawet nie zauwazyl, ze nie znam jezyka:-). Nauczycielka tez mnie nie zna wiec siedze cicho, zeby obciachu nie narobic. Jest to poczatek kursu wiec zaczynamy od sury al-Fatiha- kazdy recytuje po jednym wersecie a muallema poprawia. Poszlo mi calkiem niezle, tyle ze kolezanki od razu wygadaly, ze z Polski jestem. I tym sposobem na kolejnych zajeciach tez zaczelam miec fory :-). Ogolnie bylam zachwycona; niesamowita atmosfera siostrzanej milosci a jednoczenie zapalu do nauki. A po lekcjach, zupelnie jak male dziecko wracam do domu pelna wrazen i opowiadam tesciowej 'co bylo w szkole'... Tyko worka na kapcie mi brakuje :-).\nAutor: Sarah Umm Yakub o 10:44\nAnonimowy 21 marca 2009 13:28\nSalam. Swietny blog Sarcia :) InshaLlah bede sledzic , choc z Algieria nie jestem zwiazana to chetnie sie dowiem jak Ci sie tam zyje :)\nPozdrawiam serdecznie. Zaneta :*\nagata 21 marca 2009 14:45\nfajny blog bede czytac :-)\nMonika 22 marca 2009 18:05\nmaszallah, Sis, super :-) Cieszę się, że zdecydowałaś się przybliżyć życie w Algierii, opisać tak "od podszewki" sprawy, o których zazwyczaj się nie mówi. Barak Allahu fiki :-)\nOby więcej takich info ;-)\nSarcia 23 marca 2009 07:02\nBarak allahu fikum ya ahauati. Fajnie, ze sie podoba.\nMałgorzata 28 marca 2009 17:11\nPowodzenia w szkolnej ławie:)\nPrzypuszczam, że blog był inspirowany blogiem Umm Latify (jeśli nie to przepraszam za niesprawiedliwy osąd:), ale to dla niego żadna ujma. Czekam na dalsze relacje.\nSarcia 29 marca 2009 06:59\nGosiu, glowny powod stojacy za tym blogiem to za czeste wypytywanie mnie o Algierie :-). Zeby sobie ulatwic zycie zalozylam bloga. A z blogiem Umm Latify oczywiscie sie znamy :-)\nAnonimowy 15 grudnia 2009 11:03\nHej włąśnie poznałam faceta z Algerii, jest młodszy ode mnie ale bardzo się polubiliśmy, czy powinnam się wycofać z tego za nim nie jest za późno??????????\nSarcia 9 stycznia 2010 23:19\nUciekac gdzie pieprz rosnie :)\nA na powaznie, nie ma to jakiegos znaczenia, czy mezczyzna jest od ciebie mlodszy, czy pochodzi z innego kontynentu ale to kim/jakim jest czlowiekiem. Chocbys zapytala o zdanie tysiac osob to i tak nie dadza ci zadnej poprawnej odpowiedzi, bo to pytanie powinnas zadac przede wszytkim samej sobie.\nPozdrawiam cie cieplo Anonimko\nAnonimowy 23 kwietnia 2010 15:20\nniesamowite poczucie humoru!!!!!!!!!!!!!!!\nSarah Umm Yakub 18 września 2011 07:51\nDziekuje... ze ktos je rozumie :)))))\nWoda na wage zlota\nHalawiyat czyli ciasteczka\nAlgeria welcome to...\nAssalamu Aleikum ya mushahidin :-)


50/2020: Ogłoszenie z dnia 2 lipca 2020 roku o zwołaniu Zgromadzenia Obligatariuszy Obligacji serii I3wyemitowanych przez spółkę PBG („Obligacje”). - Raporty bieżące - Relacje inwestorskie - PBG S.A. - lider branży budowlanej w Polsce\nStrona główna / Relacje inwestorskie / Raporty bieżące / 50/2020: Ogłoszenie z dnia 2 lipca 2020 roku o zwołaniu Zgromadzenia Obligatariuszy Obligacji serii I3wyemitowanych przez spółkę PBG („Obligacje”).\n50/2020: Ogłoszenie z dnia 2 lipca 2020 roku o zwołaniu Zgromadzenia Obligatariuszy Obligacji serii I3wyemitowanych przez spółkę PBG („Obligacje”).\nZgromadzenie Obligatariuszy odbędzie się w dniu 23 lipca 2020 roku, o godzinie 15.50, w Warszawie, pod adresem: ul. Wspólna 70, piętro IX, 00-687 Warszawa.\nraport bieżący 50/2020 (.pdf - 87,08 kB)


Опубликовано: 08.08.2009 16:19:53\n[b]Białoruś i Rosja zamierzają kontynuować współpracę w zakresie utworzenia wspólnej przestrzeni gospodarczej [/b]Takie oświadczenie zawiera wspólna deklaracja uczestników posiedzenia Państwowej Rady Najwyższej Państwa Związkowego Białorusi i Rosji, które odbyło się w Moskwie. Pokierował nim Przewodniczący Rady Najwyższej, prezydent Białorusi Aleksander Łukaszenko.Przed posiedzeniem odbyło się dwustronne spotkanie białoruskiego przywódcy z rosyjskim kolegą Dmitrijem Miedwiediewem. Spotkanie trwało około pięciu godzin. Liderzy dwóch państw rozmawiali o współpracy w zakresie handlu i gospodarki. Prezydenci udzielili uwagę także tematom, nad którymi dyskutowano na posiedzeniu Państwowej Rady Najwyższej, w tym utworzeniu Unii Celnej Białorusi, Kazachstanu i Rosji i wspólnej przestrzeni gospodarczej trzech państw.\nBiałoruś i Rosja zamierzają kontynuować wspуłpracę w zakresie utworzenia wspуlnej przestrzeni gospodarczej\nTakie oświadczenie zawiera wspуlna deklaracja uczestnikуw posiedzenia Państwowej Rady Najwyższej Państwa Związkowego Białorusi i Rosji, ktуre odbyło się w Moskwie. Pokierował nim Przewodniczący Rady Najwyższej, prezydent Białorusi Aleksander Łukaszenko.\nPrzed posiedzeniem odbyło się dwustronne spotkanie białoruskiego przywуdcy z rosyjskim kolegą Dmitrijem Miedwiediewem. Spotkanie trwało około pięciu godzin. Liderzy dwуch państw rozmawiali o wspуłpracy w zakresie handlu i gospodarki. Prezydenci udzielili uwagę także tematom, nad ktуrymi dyskutowano na posiedzeniu Państwowej Rady Najwyższej, w tym utworzeniu Unii Celnej Białorusi, Kazachstanu i Rosji i wspуlnej przestrzeni gospodarczej trzech państw.\nPo negocjacjach w wąskim gronie odbyło się bezpośrednio posiedzenie Państwowej Rady Najwyższej. Ze względu na to, że posiedzenie odbyło się z okazji 10. rocznicy podpisania Umowy o utworzeniu Państwa Związkowego, prezydent Białorusi Aleksander Łukaszenko w swoim przemуwieniu zaznaczył, że ta umowa jest ważnym etapem w nowej historii białorusko-rosyjskich stosunkуw, fundamentem strategicznego partnerstwa dwуch państw.\nPrezydent podkreślił, że Białoruś i Rosja w ramach Państwa Związkowego ściśle wspуłpracują w zakresie umocnienia zdolności obronnych i bezpieczeństwa, uzgadniają działania na arenie międzynarodowej. Szczegуlną uwagę lider białoruskiego państwa zwrуcił na to, że prawie rozwiązano problem zapewnienia rуwnych praw Białorusinуw w Rosji i Rosjan na Białorusi. “Nie z każdym państwem Białoruś i Rosja mają takie warunki dla obywateli” — powiedział Aleksander Łukaszenko.\nPrzewodniczący Państwowej Rady Najwyższej jest przekonany, że należy uważnie zanalizować i przygotować propozycję w zakresie formatu i funkcji związkowych organуw w warunkach Unii Celnej Białorusi, Kazachstanu i Rosji i w perspektywie w ramach wspуlnej przestrzeni gospodarczej.\nZ kolei prezydent Rosji Dmitrij Miedwiediew poinformował, że rosyjska strona podjęła “pozytywne decyzje w odpowiedzi na propozycje białoruskiej strony dotyczące wspуłpracy w branży naftowej”. “Na dzień dzisiejszy to najważniejsza decyzja, ktуra nie przysporzy problemуw białoruskiej stronie” — powiedział rosyjski lider. Nie podał jednak żadnych szczegуłуw.\nNa posiedzeniu Państwowej Rady Najwyższej podsumowano osiągnięcia handlowo-gospodarczej wspуłpracy Białorusi i Rosji w ciągu 9 miesięcy bieżącego roku, omуwiono realizację przez rządy obu państw Planu wspуlnych działań w zakresie minimalizacji skutkуw światowego kryzysu finansowo-ekonomicznego, rozpatrzono kwestie rozszerzenia wspуłpracy w branży energetycznej i rozwoju dwustronnych stosunkуw w dziedzinie wojennej i wojenno-technicznej.\nUchwalono budżet Państwa Związkowego na 2010 rok (w wysokości około 5 miliardуw rosyjskich rubli) i Program wspуlnych działań w polityce zagranicznej na lata 2010 — 2011, omуwiono wspуlną pracę w zakresie zapewnienia rуwnych praw obywateli Białorusi i Rosji, realizację Koncepcji rozwoju społecznego Państwa Związkowego do 2010 roku oraz planowane imprezy z okazji 65. rocznicy Wielkiego Zwycięstwa.\nPrezydenci Rosji i Białorusi podpisali Deklarację z okazji 10. rocznicy Umowy o utworzeniu Państwa Związkowego. “Zamierzamy kontynuować wspуłpracę w zakresie kształtowania wspуlnej przestrzeni gospodarczej, zapewniającej swobodną dystrybucję towarуw, usług, kapitału, siły roboczej, rуwne warunki i gwarancje dla podmiotуw gospodarczych, ujednolicenia podstawy prawnej, prowadzenia wspуlnej polityki makroekonomicznej, rozszerzenia wspуłpracy między regionami, integracji w ramach światowego systemu gospodarczego, pogłębienia wspуłpracy w zakresie bezpieczeństwa Państwa Związkowego” — mуwi się w dokumencie.


Przepis na babka zebra - MniamMniam.com\nBABKI I CIASTA UCIERANE ORAZ KEKSY CIASTA I CIASTKA CIASTA Z CZEKOLADĄ I KAKAO NA WIELKANOC BABKI I CIASTA UCIERANE ORAZ KEKSY NA WIELKANOC\nZnana w wielu domach. Pamiętam jak w dzieciństwie zachwycałam się jej dwu-kolorowym\nobliczem. Lubię do dzisiaj, sypka, piaskowa, taka jak powinna :)\nSkładniki na babka zebra\n2 łyżki mąki i 2 łyżki kakao\nPrzygotowanie dania babka zebra\nOddzielić białka od żółtek. Ubić pianę z białek, pod koniec ubijania dodać cukier. Dodać żółtka,\npotem powoli mąkę z proszkiem cały czas mieszając.Wymieszać z żółtkami, mąką, wymieszaną\nz proszkiem. Wlać wodę gazowaną i olej. Dokładnie wymieszać.\nPodzielić masę na pół (rozlać do dwóch misek). Do jednej dodać 2 łyżki mąki, do drugiej 2 łyżki\nkakao. Dobrze wymieszać. Przygotować dużą formę tortową (okrągłą).\nWylewać na blaszkę na przemian białą i czarną masę. Piec 40-60 min. Sprawdzać wykałaczką,\nczy po środku ciasto jest upieczone


Farbowanie włosów na siwo | krok po kroku\nJak osiągnąć siwy kolor włosów?\nMimo, iż siwy odcień włosów wielu osobom kojarzy się z wiekiem dojrzałym czy nawet starością, obecnie chętnie zarówno młodzi jak i starsi decydują się na eksponowanie stylowej, dodającej charakteru siwizny. Jednakże jeśli pragniemy cieszyć się efektowną, siwą fryzurką a nie zaobserwowaliśmy u siebie jeszcze pierwszego siwego włosa, nic nie stoi na przeszkodzie aby naturalny kolor włosów odbarwić na wybrany odcień srebrzystego czy siwego.\nJak się okazuje, farbowanie włosów na siwy kolor wymaga od nas nieco wprawy. Należy także zdawać sobie sprawę, iż jest to kolor dość wymagający, zatem nie będzie pasował do każdego typu twarzy czy typu urody. Pierwszym etapem przygotowania do farbowania się na siwy, szary czy srebrny kolor będzie zatem dobranie odpowiedniego odcienia, który najlepiej podkreśli atuty i zamaskuje niedoskonałości twarzy, zapewniając nam tym samym atrakcyjny i oryginalny wygląd.\nSiwe włosy zyskują stopniowo coraz większe uznanie, zarówno wśród osób starszych jak i młodych, stawiających na oryginalność i niepowtarzalność swoich fryzur. Aby zatem osiągnąć wybrany, ciekawy i niebanalny odcień siwizny należy wybrać najlepsze kosmetyki, które dodatkowo nie będą niszczyły włosów, prowadząc do ich matowienia czy wysuszania. O siwe włosy należy po farbowaniu także odpowiednio dbać, serwując im co jakiś czas regenerujące i odbudowujące zabiegi z użyciem masek, płukanek lub odżywek.\nAby uzyskać siwą fryzurę, dostosowaną do naszych własnych preferencji i upodobań, warto byśmy wybrali odpowiedni środek do koloryzacji. Najlepiej będzie postawić w tej sytuacji przede wszystkim na profesjonalne i uznane merki, których preparaty nie zniszczą i nadmiernie nie obciążają naszych włosów. Bez wątpienia najlepszy efekt otrzymamy, jeśli zdecydujemy się farbować jasne blond włosy, które najłatwiej będzie nam rozjaśnić. Na dużo ciemniejszych kosmykach nierzadko konieczne będzie także użycie rozjaśniacza, dzięki czemu otrzymamy jednolity i równomierny, srebrny odcień.\nWśród najpopularniejszych kosmetyków do koloryzacji siwych włosów znaleźć można obecnie przede wszystkim trwałe farby, różnego rodzaju płukanki i szampony koloryzacyjne, nadające włosom pięknego połysku, utrzymującego się od kilku do kilkunastu myć. Zależnie więc od naszych potrzeb możemy wybrać środek najlepszy i najbardziej dopasowany do naszych wymagań. Z użyciem wybranej farby lub szamponu można też z powodzeniem wykonać na naturalnych włosach srebrzyste pasemka.\nsabinagFryzury, Urodafarbowanie szamponem, farbowanie włosów krok po kroku, fryzury damskie, fryzury męskie, koloryzacja włosów, kosmetyki do siwych włosów, odcienie farb do włosów, pielęgnacja włosów siwych, płukanki do włosów\nJak zrobić kartkę dla babci? Jak zrobić ozdoby z karteczek?\nrobótki ręczne prezent zrób to sam szycie firan ozdoby świąteczne szycie bez maszyny bombki choinkowe kwiaty z papieru altanka ogrodowa umowa kredytowa dekoracje ślubne meble diy jak uszyć kostium stroik na grób altana ogrodowa kartki okolicznościowe kartki handmade kwiaty na cmentarz dekoracje bożonarodzeniowe dekoracje świąteczne dekoracje na Wszystkich Świętych ręcznie robiona kartka wiązanki na cmentarz kartki zrób to sam szycie krok po kroku dekoracje z papieru meble drewniane dekoracje z kwiatów prezent DIY samodzielne szycie jak zrobić wiązankę ciasta domowe dekoracje zrób to sam jak zrobić kartkę szycie odzieży historia kredytowa ozdoby bożonarodzeniowe Wielkanoc dekoracje z bibuły dekoracje DIY wieniec na cmentarz malowanie drewna meble zrób to sam dekoracje wielkanocne jak zrobić stroik na cmentarz meble z drewna


Z magnesem, bez badań i kwalifikacji\n2020-01-13 11:06 - 814\n- W toku dalszej kontroli drogowej okazało się, że kierujący nie posiada ważnych badań lekarskich i psychologicznych oraz kwalifikacji wstępnej. Za stwierdzone naruszenia przepisów został ukarany dwoma mandatami karnymi. Inspektorzy zakazali również dalszej jazdy - informuje Inspekcja Transportu Drogowego w Radomiu. - Dotkliwe konsekwencje finansowe grożą teraz przewoźnikowi, wobec którego wszczęto dwa postępowania administracyjne w sprawie nałożenia kar na kwotę ponad 11 tys. zł.\nks/czd fot. GITD\n~truck driver 82.139.2.*** 2020-01-13 20:54\nNiestety dokąd będą kierowcy którzy godzą się na takie warunki,dotąd będą dziadtransy u których magnes jest standardowym wyposażeniem samochodów. Taki kierowca godząc się na magnes,myśli że grozi mu tylko mandat (szef odda albo zapłaci). Nie zastanawia się że w razie wypadku to on nie szef pójdzie "siedzieć"...\n~nikos 85.128.11.*** 2020-01-13 14:08\nTak trzymac zieloni!!! Tłuc tych dziadtransow i co nam drogi rozjedzaja. zapraszam czesciej w okolice kopalni piachu i betoniarni bo tam to czasem ciezkie okazy mozna spotkac\n~Anonim 83.6.65.*** 2020-01-13 11:25\nbrawo ..bezpieczeństwo dróg dotyczy wszystkich nas


Wakacje 2022. To podobno najbezpieczniejsze miejsca na letni wypoczynek w tym roku\nWakacje tuż tuż. Ciekawe ile z nas marzy o urlopie, błogim lenistwie, czy aktywnym zwiedzaniu. W dzisiejszych niepewnych czasach trudno jest wybrać najlepszy kierunek na letnie wojaże...\nTo podobno najbardziej bezpieczne kierunki podróży. Poza tym warto zauważyć, że nie są one zbyt popularne w rankingach najczęściej i najchętniej odwiedzanych przez turystów miejsc. Może warto zagłębić się w lekturę i odnaleźć ukryty w tych miejsach potencjał?\nMimo, że nie jest to najtańszy kierunek na wakacje to całe zaplecze turystyczne jest idealnie przygotowane. Bawaria piękna jest o każdej porze roku. Turyści są wyjątkowo zadowoleni z dobrze wyposażonych hoteli i restauracji w każdym zakątku. U naszych zachodnich sąsiadów nie brakuje terenów do zwiedzenia, a i z pewnością znawcy historii nie będą się nudzić.\nTo nie jest najbardziej oblegany kierunek wybierany przez turystów, a szkoda. Północne Włochy zaskakują bowiem ukrytym bogactwem. Region jest bardzo różnorodny pod wzgledem krajobrazu i bogactw naturalnych. Do zwiedzania zachęcają gaje oliwne, sady cytrynowe i wioski rybackie. Ponadto Piękna Liguria jest bardzo atrakcyjna pod względem rozmaitych form wypoczynku.\nKraj wiatraków i tulipanów ma do zaoferowania znacznie więcej niż tylko to co jako pierwsze nasuwa się na myśl. To zupełnie niedoceniony, a niesłusznie, bowiem równowaga atrakcji dla entuzjastów aktywnego wypoczynku i bliskości natury sprawia, że każdy turysta z powodzeniem znajdzie tutaj coś dla siebie.\nA Ty gdzie wybierasz się na wakacje?\nWysłano: 23.05 18:11


Odrobaczanie kota – kiedy, jak często i dlaczego muszę odrobaczać swojego kota? - Baza wiedzy - Zooroom\nOdrobaczanie kota – kiedy, jak często i dlaczego muszę odrobaczać swojego kota?\nProfilaktyka to słowo klucz w dbaniu o zdrowie. Również, kiedy w grę wchodzi zdrowie naszego pupila. Do podstawowych czynności związanych z profilaktyką zdrowia kota zaliczają się dbanie o dobrze zbilansowaną dietę, regularne szczepienie oraz główny temat naszego tekstu, czyli odrobaczanie. Odrobaczamy oczywiście systematycznie, już od najmłodszych lat życia zwierzaka. Z artykułu dowiecie się jaki czas będzie najlepszy na przeprowadzenie odrobaczenia, jak często trzeba je powtarzać i przed czym dokładnie chroni ten proces.\nPo raz pierwszy powinieneś odrobaczyć kota w wieku czterech tygodni. Mały kociak powinien przyjąć kolejne porcje tabletek w odstępie ok. dwóch tygodni. Potem w trzecim i szóstym miesiącu życia. Następnie, gdy kot już „wyrośnie”, odrobaczanie przeprowadza się coraz rzadziej. Organizm malucha jest dużo bardziej podatny na pojawienie się różnego rodzaju pasożytów. Dorosłego kota warto badać dwa razy do roku. Próbka Kało wykazuje czy w organizmie występują „robaki”. Jeśli tak, zabieramy się za odrobaczanie. Obserwuj też zachowanie i ogólne samopoczucie swojego zwierzaka. Może być tak, że kot choruje właśnie przez pasożyty. Łącz profilaktykę ze stałą obserwacją. Zwierzę nie powie nam wprost, że coś mu dolega. Musimy zadbać o nie sami.\nJakie pasożyty najczęściej występują u kociaków? Są to tasiemiec, glista, tęgoryjec i pierwotniaki. Najpopularniejszy z nich to zdecydowanie glista kocia. Pasożyty owe wpływają przede wszystkim na osłabienie układu odpornościowego. Kot może czuć się osłabiony i łatwiej zapadać na różnego rodzaju schorzenia. Odrobaczanie uchroni nas przed poważnymi powikłaniami, a także chorobami odzwierzęcymi, które możemy złapać od swojego ulubieńca. Warto pamiętać też, żeby odrobaczać na tydzień przed szczepieniem. Robaki osłabiają odporność, przez co szczepienie może źle wpłynąć na zdrowie kotka.\nOdrobaczanie kota może zostać przeprowadzone dzięki tabletkom (to tańsza i najbardziej popularna opcja) lub dzięki preparatowi, który zakraplamy na kark zwierzęcia (nieco droższa, ale dość efektywna możliwość). Skonsultuj się z weterynarzem, żeby dobrać odpowiedni środek i zadbać o zdrowie i dobre samopoczucie swojego kota. Potem możesz już tylko wsłuchiwać się w pełne wdzięczności pomruki i miauknięcia.


Czerwiec | 2015 | Portal informacyjny | Page 2\nOrganizacja integracji dla firm\nOsoby, które prowadzą własną działalność gospodarczą, powinny zwracać uwagę nie tylko na zdobywanie nowych klientów czy stałe poszerzanie osobistej oferty. Równie bardzo istotną sprawą jest dobór pracowników i zadbanie o ichniejszym komfort pracy. Jeżeli już atmosfera w firmie jest przyjazna, to automatycznie można liczyć na lepsze osiągi.\nimprezy firmowe, imprezy integracyjne, integracja pracowników\nZnakomita zabawa w trakcie wieczoru pańskiego to marzenie praktycznie każdej kobiety. Niestety, czasami nieprosto jest zorganizować wszystko tak, żeby spełniało nadzieja zarówno gości jak i przyszłej panny młodej. Ma możliwość się też okazać, że będzie ona niezadowolona z atrakcji jakie przygotują dla niej koleżanki, jednak wówczas z reguły bardzo trudno jest się do tego przyznać i inni ludzie robią dobrą…\nimpreza panieńska, panieński, wieczór panieński\nWieczór kawalerski bez tajemnic\nW życiu większości z nas, nastaje taki moment, w którym decydujemy się na zawarcie związku małżeńskiego. Wiąże się to z kilkoma wyrzeczeniami, niemniej jednak również w większości przypadków z całkowitą zmianą naszego dotychczasowego życia. W bardzo wielu sytuacjach przed ceremonią ślubną organizowana jest impreza dla przyszłego pana młodego i osobna impreza dl przyszłej pani młodej.\nimpreza kawalerska, kawaler, wieczór kawalerski\nAlkomaty w najlepszej cenie\nZnacząca większość z nas dzień po imprezie na której gościł alkohol staje przed tym samym niebanalnym pytaniem – czy już mogę bezpiecznie prowadzić samochód? Niestety, profesjonalne alkomaty mocno ograniczają nasz domowy budżet, a wszakże nie jest to coś, z czego korzysta się dzień w dzień, zatem nie właściwie każdy może pozwolić sobie na taką dogodność.\nalkomaty, alkotesty, alkotesty jednorazowe\nWłaściwie każdy, doświadczony właściciel firmy wie, jak ważne jest zadowolenie i szczęście wszystkich pracowników. W końcu to oni tworzą cały nasz zakład i to w tej chwili od nich zależy przyszłe lata naszego biznesu. Dlatego warto od czasu do czasu zafundować całej ekipie odrobinę przyjemności. Nasi pracownicy z całkowitą czyli stu procentową pewnością nam się za to odwdzięczą i zaczną…\nWarto zorganizować wieczór panieński\nKażda niewiasta posiada swój wieczór panieński tylko raz w całkowitym życiu. Dlatego należy zadbać o to, by była to faktycznie bardzo dobra uroczystość. Niektóre kobiety preferują, żeby to przyjaciółki przygotowały dla nich taką rozrywkę. Jeżeli już jednakże pragniemy posiadać zapewnienie, że nasza impreza będzie udana, powinniśmy same zająć się jej organizacją. A jak to można zrobić?\nImpreza na całego – wieczór kawalerski\nŚlub bliskiego przyjaciela to doskonały powód do tego, by zorganizować niezapomniane przyjęcie. Nie w każdej chwili natomiast można odnaleźć pomysł, który spodoba się zarówno panu młodemu jak i jego znajomym.\nZakupy w znaczącej liczbie sytuacji kojarzą nam się z nieprzyjemnym koniecznością. A przecież tak wcale nie musi być! Wystarczy, że od czasu do czasu postawimy na bardzo przyjemne zakupy, które zaoferują nam całe mnóstwo sposobów.\nchocobath, mydlarnia, mydła\nBy pracownicy byli zadowoleni\nTo oczywiste, że niecodziennie zdarza nam się nocować w drogich, luksusowych hotelach albo pensjonatach. Należy jednak od czasu do czasu zafundować taką radość swoim pracownikom. Jeśli zatem prowadzimy własną firmę, pomyślmy o takim rozwiązaniu. W ten sposób możemy przynieść mojej firmie naprawdę kilka korzyści.\nŚlub to wydarzenie, które odgrywa w naszym życiu ważną rolę. Wszystkie pary młode planując się do tego dnia zwracają uwagę na wyselekcjonowanie strojów, na zorganizowanie sali do zabawy, cateringu i orkiestry, samochodu i fotografa. Ze stuprocentową pewnością prawie każdy z owych czynników jest bardzo ważny, a dopięcie wszystkiego na ostatni guzik zapewnia dobrą zabawę. Jeżeli sam ślub i wesele przeprowadzane…\nStarannie wykonana odzież robocza\nPortal dla myśliwych


Najlepsze budowanie sklepów od zaraz − ekstraligakobiet.pl\nNajlepsze budowanie sklepów od zaraz\nNa pewno wiesz, jak istotne jest posiadanie własnej strony internetowej. Kto będzie zatem najlepszym wyborem? Najlepiej będzie przygotować stronę u ekspertów w tej branży. Wyłącznie rzetelni fachowcy tworzenia stron internetowych zdołają sprostać takiej misji. Czemu należy wynająć specjalistów do utworzenia witryny? Projektowanie stron internetowych bywa bardziej skomplikowane, niż wydaje się to w pierwszej chwili. Jeżeli nie zajmujesz się profesjonalnie tworzeniem witryn, w szybki sposób możesz się pomylić. Zlecając zrobienie witryny niewykwalifikowanej osobie, powinieneś liczyć się z mizernym dziełem realizacją.\nBrand Doubles to lider wśród firm, które wykonują usługi takie jak opracowywanie graficzne oraz wytwarzanie witryn internetowych. Dzięki ich dużemu doświadczeniu skutecznie budują pozytywne wyobrażenie Twojej firmy w sieci. Utworzą dla Twojej firmy zachęcającą i responsywną stronę internetową zarówno ze względów komunikacyjnych, estetycznych jak i informacyjnych. Przygotowane przez firmę Doubles strony internetowe okazują się całkowicie funkcjonalne, ale również niezwykle ładne. Projektują łatwe w użytkowaniu, działające całkowicie poprawnie, ale również bardzo ładne strony WWW, zwracając uwagę w pierwszej chwili na spersonalizowane podejście do klientów.\nW firmie Doubles można znaleźć tylko ludzi z doświadczeniem oraz ekspertów z dziedziny tworzenia witryn www. Cały czas śledzą trendy w technologii oraz wizualne, by być na bieżąco. Zdobyta wiedza oraz doświadczenie, które posiedli powoduje, iż potrafią poprawnie budować witryny WWW, tak, żeby były w 100% wpasowane pod wytyczne Google, chodziły bez zarzutów, a użytkownicy czuli satysfakcję z ich prędkości oraz bezproblemowości korzystania.\nStrategię Doubles opiera|Strategia tej spółki opiera się} zdecydowanie na tym, że chcą wnikliwie współpracować z klientem. Z rozwagą wsłuchujemy się w potrzeby a potem rozplanowują swoją strategię pod uwagi. Klienci mają pewność, że są obsługiwani indywidualnie i zawsze z równym zapałem. Zrobili wiele zadań, wciąż rozszerzając liczbę usatysfakcjonowanych odbiorców. Strony WWW, które wykonali, rzecz jasna zadowalały ich klientów. Każdy ich projekt odpowiada charakterowi, jakim cechuje się firma klienta, przyciągając unikalnością grafiki, estetyką i kolorystyką.\nNie powierzaj Twojej strony WWW w niepewne ręce. Projektowanie strony internetowej to zajęcie wymagające wiedzy, doświadczenia i odpowiedniego przygotowania technicznego. Pamiętaj, że jest to ogromnie ważny element reklamy Twojej firmy. Dzięki stronie pokazujesz światu swoją unikalną ofertę, zdobywasz nowych klientów, budujesz wizerunek firmy a także zwiększasz świadomość istnienia Twojej firmy wśród użytkowników sieci. Powinieneś pamiętać o tym, że Twój wizerunek w sieci to główny filar sukcesu Twojej firmy. Wiele osób korzysta głównie z urządzeń mobilnych, dlatego powinieneś zadbać o to, aby Twoja strona www była responsywna i dostosowana do wszystkich możliwych urządzeń. Daj nam kredyt zaufania a także oddaj swoją stronę WWW w ręce ekspertów. Działania Doubles sprawią, że Twoja strona WWW będzie funkcjonalna a także nowoczesna.\nOpracowywanie stron to w pierwszej kolejności pasja dla Doubles. Robią to od długiego okresu czasu, z przyjemnością rozwijając wciąż swoje doświadczenie, uzupełniając wiedzę na wszelakie możliwe i dostępne sposoby. Przygotowywanie stron to sztuka, za którą musi iść posiadanie dużych aspiracji i serce włożone w każde zadanie. W połączeniu z wiedzą, ciągłym kontaktem z klientem i zrozumieniem jego pragnień, dobrze dobranymi technikami i doświadczeniem, daje sto procent sukcesu i zadowolenia z gotowego projektu. Nie boimy się żadnych wyzwań, wykonujemy nawet najbardziej wymagające projekty. W Doobles sukcesy spowodowane są współpracą tylko najlepszych specjalistów od marketingu internetowego, grafiki i programowania.


Temat zarobków w IT, a szczególności zarobków programistów jest bardzo często poruszany. Wiele osób właśnie interesują zarobki programistów. Dużo jest również o nie to zapytań na portalach internetowych, także mnóstwo jest w internecie artykułów na ten temat, jednak żaden z nich nie daje konkretnej odpowiedzi. W dzisiejszym artykule postaram Ci się przybliżyć ten temat. Powiem, od czego konkretnie, zależy wysokość zarobków programistów, a także jakie zarobki możesz otrzymać w swojej pierwszej pracy.\nJeżeli masz ochotę, to zerknij na forum programistyczne, gdzie jest jeden bardzo popularny temat o zarobkach programistów: ile zarabiacie?, w którym programiści dzielą się tym, ile faktycznie zarabiają. Oczywiście musisz patrzeć na informacje w nim zawarte trochę z przymrużeniem oka, ponieważ wypowiadają się tam anonimowe osoby, które oczywiście na zawsze piszą, jak jest naprawdę. Nie mniej jednak dużo z tych wynagrodzeń, o których piszą Ci użytkownicy, są jak najbardziej realne.\nNa początek musisz wiedzieć, że nie da się wprost powiedzieć, ile dokładnie zarabia programista .NET, ponieważ zależy to od wielu czynników. Na jednym portalu nawet istnieje słynny tag programista 15k, który oczywiście nawiązuje do programistów, którzy zarabiają 15 000 zł. Jeżeli interesują Cię tylko takie zarobki, to już na wstępie muszę Cię zmartwić, ponieważ mało programistów zarabia to słynne 15 tysięcy. Oczywiście programiści zarabiają bardzo dobrze, ale często nie aż tyle. Tym bardziej na początku Twojej kariery takich zarobków na pewno nie osiągniesz. W takim razie, od czego zależy wynagrodzenie programisty?\nPo pierwsze, wynagrodzenie na pewno zależy od stażu pracy, czyli Twojego doświadczenia, a co za tym idzie Twoich umiejętności. Jeżeli dopiero zaczynasz karierę, to na pewno Twoje zarobki nie będą zbyt wysokie. Może się nawet okazać, że po przebranżowieniu z innego zawodu możesz na początku zarabiać mniej niż w poprzedniej pracy, oczywiście te zarobki będą z czasem wzrastać. Dopiero osoby z wysokim stażem pracy, a co za tym idzie z wysokimi umiejętnościami, mogą liczyć na większe zarobki.\nNa wysokość wynagrodzenia ma również wpływ Twoje stanowisko, a konkretnie zakres Twoich obowiązków. To znaczy, jeżeli chcesz zarabiać więcej, to zazwyczaj nie możesz być samym programistą, ale musisz już mieć więcej obowiązków, większą odpowiedzialność. Możesz na przykład być team leaderem i zarządzać zespołem, czy projektem.\nKolejny ważny punkt to miejscowość, w jakiej pracujesz, największe zarobki można osiągnąć w większych miejscowościach takich jak Warszawa, Kraków, czy Wrocław. A z kolei w mniejszych miastach, na pewno będzie Ci ciężej wynegocjować lepsze wynagrodzenie.\nWażne też czy firma jest międzynarodowa, to znaczy konkretnie czy ma zagranicznych klientów, wtedy zarobki również są na wyższym poziomie, ale oczywiście wtedy już musisz mieć bardzo dobrą znajomość języka angielskiego.\nOprócz tego ważne są umiejętności w negocjacjach, nie oszukujmy się, często zdarza się tak, że dwie osoby pracujące w tej samej firmie mogą mieć taki sam zakres obowiązków, umiejętności, doświadczenie, ale ich zarobki mogą się różnić, ponieważ jedna z osób potrafiła się lepiej sprzedać na rozmowie kwalifikacyjnej, czy umieć po prostu lepiej negocjować stawkę.\nZnaczenie może mieć też posiadanie dyplomu ukończonych studiów. Osobie po studiach może być trochę łatwiej wynegocjować lepszą pensję.\nMyślę, że to tyle najważniejszych czynników, które wpływają na wysokość wynagrodzenia. Moim zdaniem, w pierwszej pracy powinieneś celować w zależności od wielu czynników od około 2500 do około 4500 zł netto miesięcznie. Oczywiście ta stawka będzie rosła z roku na roku, czasem warto na początku zgodzić się na mniejsze wynagrodzenie i skupić się na własnym rozwoju, a dopiero później zwiększać to wynagrodzenie. Czasem również warto na rozmowie kwalifikacyjnej zaproponować trochę większą stawkę, niż faktycznie oczekujemy, żeby było miejsce na ewentualne negocjacje.\nJeżeli Twoja główną motywacją do pracy programisty są wysokie zarobki, to wydaje mi się, że są łatwiejsze drogi, w których możesz osiągnąć równie wysokie zarobki, a mniejszym nakładem pracy. Jeżeli chcesz osiągnąć duże zarobki w tej branży, to czeka Cię dużo pracy, przede wszystkim musisz dużo się rozwijać. Wydaje mi się, że osoby, które chcą zostać programistami, tylko dlatego, żeby dużo zarabiać, to szybko się zniechęcą. Jeżeli chcesz zostać programistą, to po prostu musisz to lubić i nie polecam Ci się skupiać tylko na zarobkach, bo oprócz zarobków praca programisty ma również dużo innych zalet.\nJak widzisz, na zarobki programistów wpływa wiele czynników. Są to przede wszystkim doświadczenie, stanowisko, miejsce pracy, rodzaj klientów, umiejętność negocjacji i wykształcenie. W swojej pierwszej pracy nie możesz liczyć na bardzo wysokie zarobki, ale z czasem, Twoim zaangażowaniem i ciężką pracą możesz jak najbardziej do nich dojść. Jestem ciekaw, jak to wygląda z Twojej perspektywy? Czy jeszcze jest coś, co Twoim zdaniem ma duży wpływ na wysokość wynagrodzenia programisty? :)\nPoprzedni artykuł - Jak Nauczyć Się Programowania Od Zera?\nNastępny artykuł - Jak Dobrze Zaprezentować Się Na Rozmowie Kwalifikacyjnej Na Programistę - Rozmowa z Pawłem Zdziechem.\nTOMEK, 16 lipca 2020 10:56\nNo cóż mogę powiedzieć, że te 15k to nie problem wbrew pozorom. Szczerze? Osobiście uważam, że główne kryterium to skąd jest klient, dla którego pracujesz. Jeżeli pracujesz dla klienta z US albo z Niemiec to norma ok 25-30k na b2b. Dlatego ja osobiście nie pracuję dla klientów z Polski. Jestem zmęczony tekstami w stylu: "za te pieniądze to będę miał 10 studentów". Oczywiście są również wyjątki :) Oczywiście zakładam, że ktoś zna się na swojej działce, a nie robi rozpoznanie bojem :)\nKAZIMIERZ SZPIN, 16 lipca 2020 11:18\n@TOMEK, jasne że tak. Jest to bardzo ważne kryterium, ale połączeniu kilku działa jeszcze lepiej :)\nZŁY, 20 lipca 2020 08:33\n"Dopiero osoby z wysokim stażem pracy, a co za tym idzie z wysokimi umiejętnościami, mogą liczyć na większe zarobki." Niestesty, ale te 2 rzeczy nie zawsze idą w parze. Ja bym powiedział, że staż decyduje o tym czy Cię zaproszą na rozmowę, a umiejętności są zawsze sprawdzane na rozmowie i one decydują czy Cię wezmą. Druga sprawa to strasznie clickbaitowy tytuł. Bo w samym artykule jest 0 konkretów. Ja się zawiodłem :(\nKAZIMIERZ SZPIN, 20 lipca 2020 18:35\n@ZŁY, wydaje mi się, że jednak osoby które mają większe doświadczenie, to jednak często również mają większą wiedze. Brały udział w wielu projektach i z każdego z nich wyciągają wnioski. Nie zgodzę się, że tytuł jest clickbaitowy. To znaczy, zależy co rozumiesz pod pojęciem clickbait, dla mnie clickbait może być wtedy gdy artykuł nie nawiązuje do tematu artykułu. A chyba tak nie jest w tym temacie? Nie da się łatwo stwierdzić ile zarabia programista. Opisałem jak to wygląda w rzeczywistości, a konkrety również podałem pod koniec artykułu :)