Skocz do zawartości

slon

Użytkownicy
  • Zawartość

    20
  • Rejestracja

  • Ostatnio

Reputacja

15 Dobra

O slon

  • Ranga
    2/10

Informacje

  • Płeć
    Mężczyzna

Ostatnio na profilu byli

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

  1. slon

    Domowy system powiadamiania

    Treker już udzielił ci odpowiedzi ale jeśli by cię interesowało jakie dopuszczalne napięcie jest na kondensatorach z mojego projektu to jest to : ~25V (takie miałem ) na Vin i bodajże 16V na Vout. Zwróć uwagę na to, że im większe maksymalne napięcie tym większe rozmiary kondensatora przy tej samej pojemności a co za tym idzie inny rozstaw wyprowadzeń kondensatora.
  2. Morze to ci się przyda. To jest zmodyfikowany przykład "blinkWithoutDelay" const int ledPin = LED_BUILTIN;// the number of the LED pin // Variables will change : int ledState = HIGH; // ledState used to set the LED // Generally, you should use "unsigned long" for variables that hold time // The value will quickly become too large for an int to store unsigned long previousMillis = 0; // will store last time LED was updated // constants won't change : const long interval = 250; // interval at which to blink (milliseconds) unsigned long czas; unsigned long sekunda; void setup() { // set the digital pin as output: pinMode(ledPin, OUTPUT); } void loop() { unsigned long currentMillis = millis(); if (currentMillis - previousMillis >= interval) { // save the last time you blinked the LED previousMillis = currentMillis; // if the LED is off turn it on and vice-versa: if (ledState == LOW) { ledState = HIGH; } else { ledState = LOW; } czas=millis(); sekunda=czas/1000; if (sekunda<=6 || sekunda>12) { // set the LED with the ledState of the variable: digitalWrite(ledPin, ledState); } } } po tej modyfikacji dioda na pinie 13 miga co 250ms przez pierwsze 6s potem pauza do 13s i dalej miga if (sekunda<=6 || sekunda>12) zmodyfikuj tego if'a pod swoje potrzeby np: zmień || na && dodaj jakiś przycisk czy to tam chcesz. Ze zmianą interwału czy nr pin to napewno sobie poradzisz.
  3. Ja osobiście polecam coolterm Można wszystko poustawiać i ze znakami Cr czy LF też nie ma problemu. Naprawdę trzeba przetestować żeby się przekonać.
  4. W zasadzie to faktycznie jest to poradnik. Nawet myślałem o tym żeby zamieścić go w innym miejscu na forum tylko słabo sie rozejrzałem .
  5. slon

    Domowy system powiadamiania

    Kondensatory widać na zdjęciu. Trzy przed Vin arduino i pięć na +5V OUT arduino. Co do pojemności to tak je dobrałem aby w momencie przełączania przekaźnika na zasilanie z baterii napięcie +5V na arduino było stabilne (dokładnie to zmienia się o 0.01-0.02V) Dzięki temu wszystko stabilnie pracuje i pir nie "szaleje".
  6. slon

    Domowy system powiadamiania

    tak dokładnie u mnie to wygląda. Natomiast do poprawnego działania potrzebny jest zasilacz o "odpowiedniej budowie". Mam tu na myśli taki , który po odłączeniu z sieci i odczekaniu kilku sekund nie spowoduje chwilowego przełączenia pomiędzy stykami NO NC. Możesz to łatwo sprawdzić podłączając zasilacz do cewki przekaźnika(sam zasilacz nic więcej). Jeśli po wyjęciu zasilacza z gniazdka usłyszysz tylko jedno "cyknięcie" to jet ok jeśli natomiast po paru sekundach usłyszysz dodatkowo "cyk cyk" to takiego zasilacza nie należy stosować do tego schematu.
  7. slon

    Domowy system powiadamiania

    Jeśli chciał byś zasilić ten projekt z ogniwa 18650 to wystarczy ładowarka do smartfona połączona przez ten przewód i wpięta w ten układ. Na końcu tego modułu są cztery pady. Do wewnętrznych podłączasz + i - od ogniwa zgodnie z oznaczeniami na płytce. Do zewnętrznych wyjście zasilania opisane OUT i zgodnie z biegunami podłączasz na wejście przetwornicy (IN) podnoszącej napięcie na 5V (lub regulowana jak wolisz). Wyjście z przetwornicy podłączasz do pinu 5v arduino oraz GND i to tyle. Generalnie to w sekcji zasilanie jest sporo informacji na ten temat. Warto tam zerknąć i poczytać.
  8. slon

    Mobilny system powiadamiania

    Jak widać na foto ja też ale z tej wersji do WiFi to jeszcze nie korzystałem bo jakoś nie było okazji. Sam system miałem chęć zamontować do samochodu (odpalanie zdalne) ale z rezygnowałem z tego. Chociaż sam system do odpalania samochodu oparty o arduino , serwo , bluetooth i adapter do stacyjki powstał. Samochód można było odpalić przez BT z poziomu terminala.
  9. slon

    Domowy system powiadamiania

    Pewnie. Obudowa DT-065 pod wyświetlacz. Występuje w dwóch wersjach kolorystycznych i jest tylko w jednym sklepie internetowym z logiem lisa :). Szkoda , że niema jej w botlandzie no ale to już inna kwestia. Jak by to dobrze wszystko zaprojektować to można by do tej obudowy zmieścić cały mój projekt. Miałem tak zrobić i zastąpić klawiaturę membranową na analogową pozbył bym się wtedy wszystkich tych kabli i zwolnił bym 8 pinów cyfrowych kosztem jednego analogowego. Z tym, że trzeba by wtedy nawiercać otwory w tej obudowie z lcd i od strony programowej trzeba by było zmienić trochę kodu.
  10. Przeglądając forum natrafiłem na kilka postów z przed kilku miesięcy albo i starszych związanych z komunikacją radiową. Więc stwierdziłem , że opisze swoje wrażenia z użytkowania modułu HC-12, który swego czasu można było kupić w sklepie botland. Jeśli ktoś uważnie przeanalizował moduły , które znajdują się w obudowie mojego poprzedniego projektu pewnie dostrzegł małą antenkę obok modułu bluetooth. To jest właśnie moduł HC-12, który testowałem jakiś czas temu. Jeśli ktoś zadał by pytanie w jakim celu to odpowiedz jest prosta. Załóżmy , że mamy średniej wielkości gospodarstwo i chcieli byśmy otrzymywać informację o różnych zdarzeniach np: temperatura w szklarni itp. Lub chcemy się komunikować z kilkoma osobami w miejscach gdzie "cywilizacja nie dociera" W takich "polowych" warunkach może nam pomóc arduino uno oraz moduł radiowy. do modułu hc-12 przylutowałem gniazda kątowe do , których podłączone są przewody połączeniowe. tutaj druga strona tu oczywiście drugi moduł no i mamy komplet. Po lewej arduino uno podłączone do smartfona poprzez przewód USB otg + przewód USB miniusb a po prawej arduino uno podłączone do PC. Od strony sprzętowej to tyle. tak wygląda kod dla dla arduino uno i nano przy założeniu , że chcemy komunikować się w dwie strony. if (GSMSerial.available()) Serial.write(GSMSerial.read()); jeżeli usuniemy te dwie linijki kodu dla jednego urządzenia to będzie ono mogło tylko wysyłać dane. if (Serial.available()) GSMSerial.write(Serial.read()); jeśli natomiast usuniemy tylko te dwie liniki kodu to dane urządzenie będzie mogło tylko odbierać dane. I to jest to co mi bardzo się spodobało bo jedyna biblioteka jaką potrzebujemy to #include <SoftwareSerial.h> która już na starcie jest zainstalowana. Przy wgrywaniu skeczy do płytek sprawdziłem ile czasu zajmuje kompilacja + upload przez arduino IDE oraz BluinoLoader wynik: BL 6s Arduino IDE 14s. Teraz rzecz chyba najbardziej istotna czyli zasięg. Przy dokładnie takich zestawach jak widać na zdjęciach gdzie jeden był w domu a z drugim wędrowałem na zewnątrz zasięg kończył się przy ~300 metrach (przy zasięgu ustawionym na max bo jest możliwość jego regulacji w trybie AT) producent co prawda deklaruje 1000m ale to może przy otwartej przestrzeni i lepszych antenkach. Co do samego sposobu testowania to odbywało się to na zasadzie czatu ja pisałem z telefonu tak jest bardziej czytelnie a córka z komputera. Jeśli chodzi o opóźnienia transmisji to dochodziły do 2-3 sekund na granicy zasięgu. Dla celów komunikacji mobilnej w trudnym terenie najlepiej było by połączyć się ze smartfonem przez bluetooth a arduino z modułem rf i baterią zamknąć w małej obudowie i trzymać gdzieś przy sobie. W ten sposób wyszedł by to dobry zestaw dla PREPERSA.
  11. tutaj masz zestaw bloczków na połączenie z BT: bloczek 1 : sprawdza czy jest włączony BT. Jeśli nie to wysyła to co na czerwono bloczek 2: wyświetla listę urządzeń do połączenia bloczek 3: po wybraniu urządzenia nawiązuje połączenie Oczywiście te bloczki można pominąć i połączyć się ręcznie z menu telefonu po wcześniejszym sparowaniu urządzeń. ten bloczek wygląda prawie tak samo jak twój tyle , że sprawdza dodatkowo czy jest połączony z BT. Ja do swojego wysyłam same znaki bo ogólnie rzecz biorąc jest to mniej problematyczne (tutaj jest to 't'). no i zostaje kwestia kodu pod arduino if (Serial.available() > 0) { char komendy = Serial.read(); switch(komendy) { case't': tutaj_twoje_funkcjie(); break; } } jak zechcesz to dopiszesz sobie więcej przypadków pamiętaj tylko , żeby dokleić kolejne bloczki do app inventora.
  12. Czy mógł byś opisać proces projektowania/wytwarzania płytki pod ten projekt w punktach z krótkim opisem (jaki program/metody itp).
  13. W moim poprzednim projekcie niektórzy przeczytali zapewne wzmiankę o tym , że powstała jego oddzielna wersja z modułem GSM , który całkiem nieźle sobie radził. Pomyślałem więc , że czemu by go tutaj nie opisać w końcu sam projekt został ukończony. tutaj początki czyli zlutowany moduł neoway a w tle genuine arduino uno , które w początkowej fazie zostało wykorzystane do przetestowania coś na zasadzie "czy to będzie działać". Okazało się , że tak aczkolwiek trzeba było dokonać zmiany baud rate na 9600 bit/s. Pod arduino jest bateria ze smartfona z , której zasilany jest moduł. Natomiast na arduino nakładka , która dała łatwiejszy dostęp (powielony) do pinów zasilania i masy. Na płytce stykowej widać konwerter poziomów logicznych przez który odbywa się komunikacja (SoftwareSerial). Piny IO modułu neoway pracują z napięciem 2,85V ale tolerują napięcie do 3,3V. Dobrze jest sprawdzić napięcie na pinie 3,3V przed podaniem go na konverter (w orginalnym uno nie będzie raczej problemu ale jeśli to będzie klon to możecie się zaskoczyć). Po kilku testach postanowiłem całość nieco zmniejszyć. to w zasadzie dalej jest to samo tyle , że model arduino uno zastąpiłem nano jeszcze z ATMega 168. Tact switch nad modemem to przycisk on/off , który uruchamia modem po dłuższym przytrzymaniu. tutaj już prawie wszystko było gotowe. Nad modemem przetwornica step-up regulowana. Wyjście z przetwornicy ustawione na 4,89V. Pewnie zastanawiacie się czemu na nie na 5V a to dlatego, że w tym modelu na pinie 3,3V jest 3,4V to wolałem nie ryzykować i lekko obniżyłem napięcie zasilania co dało pożądany rezultat w postaci spadku napięcia na pinie 3,3V nawet lekko poniżej 3,3V. ogniwo 18650 które widzicie pojawiło się tylko tymczasowo jako źródło zasilania aczkolwiek gdyby obudowa była większa to pewnie bym je zostawił. Na płytce znajdują się 4 DIP switch'e i tak pierwszy od góry włącza/wyłącza przetwornicę i tym samym doprowadza napięcie do wszystkich modułów poza modemem gsm (modem jest zasilany bezpośrednio z ogniwa). Następnie dwa DIP switch'e obok siebie wlączają/wyłączają piny TX i RX arduino od bluetooth. Ostatni DIP switch odcina napięcie do arduino. W ten sposób można wgrywać skecze do arduino po usb bez rozłączania kabli. Po prawej stronie mamy czujnik ruchu a po lewej to ten "stary telefon" w , którym nie działa dotyk ale można do niego podłączyć mysz. tutaj widać kolejno, start modemu, sprawdzenie rejestracji do sieci , siłę i jakość sygnału, a na koniec napięcie ogniwa. void skalaAku() { int aku2 = analogRead(A6); if ((aku2 == 860) && (charging == 0)) { digitalWrite(4, HIGH); //wyłączamy przekaźnik zasilania tp4056 Serial.println("Ogniwo max"); skala = 0; charging++; } else if ((aku2 == 790) && (skala == 0)) { m590.write("AT+CMGS=\"111222333\"\r"); // podajemy nr telefonu delay(300); getm590(); m590.write("Ogniwo 3,9V"); //podajemy treśc wiadomości m590.write(26); // Kod 26 = CTRL+Z delay(2000); // czekamy na wysłanie getm590(); // sprawdzamy czy poszło czy error skala++; } else if ((aku2 == 720) && (skala == 1)) { //740 OK m590.write("AT+CMGS=\"111222333\"\r"); // podajemy nr telefonu delay(300); getm590(); m590.write("Ogniwo 3,5V"); //podajemy treśc wiadomości m590.write(26); // Kod 26 = CTRL+Z delay(2000); // czekamy na wysłanie getm590(); // sprawdzamy czy poszło czy error digitalWrite(4, LOW); //włączamy przekaźnik zasilania tp4046 charging = 0; skala++; delay(300); } else if ((aku2 == 705) && (skala == 2)) { m590.write("AT+CPWROFF\r"); } } Tutaj mamy funkcję, która była wykonywana przez około tydzień czasu no i raz nie dostałem sms'a. Czas pracy na jednym cyklu ładowania to było jakieś 17h jak dobrze pamiętam więc wychodziło 2 smsy na dobę. Jeżeli ktoś chciał by z tej funkcji skorzystać to trzeba... void getm590() { if (m590.available() > 0) { Serial.print(m590.readString()); } } najpierw wpisać tą funkcję albo przynajmniej wcześniej zadeklarować , że funkcja getm590() wystąpi oraz zadeklarować dwie zmienne typu int , które występują w funkcji skalaAku() a to "świeże zdjęcie" dzisiaj zrobione na potrzeby opisu ale sam projekt tak wyglądał już w lipcu 2018 i tak jak wyżej pisałem bateria ze smartfona wróciła pod płytkę a zaoszczędzone miejsce zostało przeznaczone na moduł z dwoma przekaźnikami i od góry ładowarka tp 4056. Jeden przekaźnik może trochę dziwnie wykorzystany ale chciałem żeby ładowarka była wyłączana przed przekroczeniem napięcia 4,2V na baterii co widać w kodzie. tak to wyglądało po zamknięciu i jedynym problemem było to , że PIR sam się wzbudzał co kilka godzin pracy nawet po próbie przeniesienia go poza obudowę. Przyczyn dalszych nie szukałem bo tak jak napisałem na początku projekt powstał aby przetestować sam modem a ten nawet całkiem dobrze radził sobie z raportowaniem stanu naładowania baterii.
  14. slon

    Bluethooth przesyła dziwne znaki.

    Tak pisząc o samych podstawach SoftwareSerial BT(0, 1); // źle tak niemożna tego zapisać bo wartości w nawiasach to piny na, których ma pracować SoftwareSerial. Na pinie 0 i 1 w arduino masz Serial sprzętowy. SoftwareSerial BT(2, 3); //dobrze to jest poprawny zapis i oznacza: podłącz PIN TX od BT do PIN'u nr 2 Arduino , PIN RX od BT do PIN'u nr 3 Arduino void setup() { BT.begin(9600); } tu jest dobrze ale zadeklarowałeś tylko prędkość przesyłu dla SoftwareSerial a gdzie hardware Serial? Przecież chcesz korzystać z dwóch Seriali. void setup() { BT.begin(9600); Serial.begin(9600); } teraz masz zadeklarowane dwa Seriale ( Software i hardware). Prędkości przesyłu dla obydwu Seriali muszą być jednakowe inaczej będziesz miał krzaczki. W uno Serial pracuje na 9600 i to jest pewne. Pozostaje kwestia z jaką prędkością pracuje BT (bo nie musi to być 9600). Trzeba to sprawdzić a do ewentualnej zmiany prędkości używa się komend AT. Aby użyć komęd AT dla BT przeba ustawić BT w tryb AT i użyć komendy zapisanej w karcie katalogowej dla HC-06 void loop() { if (BT.available()) Serial.write(BT.read()); można by to tak przetłumaczyć: Jeśli są dane w porcie BT (SoftwareSerial) to prześlij je na Sprzętowy Serial. if (Serial.available()) BT.write(Serial.read()); } a tutaj w drugą stronę: Jeśli są dane w Serialu (sprzętowym) to prześlij je na BT SoftwareSerial. To by było tyle jeśli chodzi o samą komunikację w dwie strony od strony programowej. Zostaje jeszcze strona sprzętowa czyli podłączenie BT do Arduino. Najlepiej jest to zrobić przez konwerter poziomów logicznych (chodzi o piny TX i RX).
×