Popularny post Szern Napisano Marzec 4, 2023 Popularny post Udostępnij Napisano Marzec 4, 2023 Ta treść została wynagrodzona przez moderatora! Szern otrzymał odznakę: "Recenzent (za ciekawą ocenę kursu)" Dzień dobry! Pozwolę sobie wrzucić nieco dłuższy wpis z okazji zakończenia mojego prywatnego cyklu szkolenia, który składał się z trzech i pół kursów Forbota. 😉 Miałem przyjemność kupić sobie trzykuferkowy zestaw do nauki elektroniki. Zawsze, od dzieciaka interesowałem się elektroniką, ale niestety nie miałem możliwości pójścia w tym kierunku. Zajmowałem się szeroko pojętym marketingiem IT (webmastering, SEO, Analityka itp.). Trochę programuję na własne potrzeby. Zawsze myślałem, że byłoby super potrafić połączyć umiejętność programowania z umiejętnością budowy urządzeń elektronicznych. W ostatnich latach miałem bardzo poważne problemy zdrowotne. Z konieczności miałem coś w rodzaju urlopu zdrowotnego. Kupiłem więc wspomniany już zestaw "Mistrz elektroniki" i wykorzystałem wolny czas. Wykorzystałem również kupiony kilka lat temu Raspberry Pi 1.2 B+, który w szufladzie czekał na lepsze czasy. Powoli przeszedłem wszystkie trzy kursy i na zakończenie postanowiłem sobie zrobić "pracę dyplomową", którą chciałbym się pochwalić. Proszę o wyrozumiałość: to moje początki elektroniki. Jestem całkowicie otwarty na krytykę, którą przyjmę z pokorą. Materiały, które wykorzystałem pochodzą z trzech kuferków Forbota (kurs elektroniki - poziom I i II, kurs techniki cyfrowej), dodatkowo wykorzystałem Raspberry Pi 1.2 B+ wraz z doskonałą obudową prototypową i kabelkami, a także dwie płytki stykowe najmniejszego rozmiaru. Wiedzę czerpałem z wspomnianych wyżej kursów i dodatkowo z "Raspberry Pi kurs od podstaw". Zrobiłem sobie prosty alarm. Składa się on z niezależnego nadajnika podczerwieni, gdzie jeden z rezystorów zastąpiłem potencjometrem (3,5 Om , na diodzie 40 mA i 0,81 V) aby zwiększyć zasięg sygnału diody do ok. 1,5 m (lekcja z drugiej części kursu elektroniki), odbiornika podczerwieni podłączonego do Raspberry Pi (zamiast diody sygnalizacyjnej), czujnika światła (lekcja z tego samego kursu), który również zamiast diody podłączyłem do Raspberry Pi, licznik cyfrowy (lekcja z kursu podstaw elektroniki cyfrowej), który z kolei zamiast przycisku miał podłączone wejście do Raspberry Pi, a także skromnego układu wyświetlającego składającego się z czterech diod (gdzie starałem się tak dobrać oporniki, aby uzyskać zbliżony poziom świecenia) i prostego przycisku - wszystko podłączone do szyny GPIO Raspberry Pi. Całość spiąłem prostym programem napisanym w Pythonie: mport RPi.GPIO as GPIO from time import * diodaR = 17 diodaY = 27 diodaG = 22 diodaB = 23 licznik = 26 przycisk = 24 czujnikIR = 25 czujnikL = 5 GPIO.setmode(GPIO.BCM) lista_diod = [diodaR,diodaY,diodaG,diodaB] GPIO.setup(lista_diod, GPIO.OUT) GPIO.setup(licznik, GPIO.OUT) GPIO.setup(przycisk, GPIO.IN, pull_up_down=GPIO.PUD_UP) GPIO.setup(czujnikIR, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) GPIO.setup(czujnikL, GPIO.IN) GPIO.add_event_detect(przycisk, GPIO.RISING, bouncetime=200) GPIO.add_event_detect(czujnikIR, GPIO.FALLING) def blysk(dioda,ile): GPIO.output(dioda, GPIO.HIGH) sleep(ile) GPIO.output(dioda, GPIO.LOW) def alarm(): for i in range (10): GPIO.output(diodaR, GPIO.HIGH) sleep(0.1) GPIO.output(diodaR, GPIO.LOW) GPIO.output(diodaB, GPIO.HIGH) sleep(0.1) GPIO.output(diodaB, GPIO.LOW) GPIO.output(diodaG, GPIO.HIGH) GPIO.output(licznik, GPIO.LOW) GPIO.output(licznik, GPIO.HIGH) GPIO.output(licznik, GPIO.LOW) try: while GPIO.input(przycisk) == GPIO.HIGH: if (GPIO.input(czujnikL)): GPIO.output(diodaY, GPIO.HIGH) if GPIO.input(czujnikIR): alarm() else: GPIO.output(diodaY, GPIO.LOW) except KeyboardInterrupt: print('Koniec') GPIO.output(diodaY, GPIO.LOW) GPIO.output(diodaG, GPIO.LOW) GPIO.cleanup() Alarm ustawiony jest tak, aby sprawdzał czy ktoś przechodzi przez drzwi. Włącza się jedynie w ciemności (w nocy, przy zgaszonym świetle) - kiedy alarm jest aktywny, zapala się żółta dioda. Jeśli ktoś przejdzie przez drzwi w nocy, na chwilę zaczynają migać diody czerwona i niebieska, a także zwiększa się stan licznika (0-9). Przy pierwszym przejściu zapala się zielona dioda (sygnalizując naruszenie alarmu) i nie gaśnie. Jeden przycisk służy do resetowania licznika, a drugi wyłącza alarm (kończy działanie programu). Tutaj można zobaczyć: Dodatkowo chciałem narysować schemat alarmu. Pierwotnie chciałem skorzystać z programu Eagle, ale niedawno przesiadłem się definitywnie na Linuxa (po latach pracy na Windows) i Eagle bardzo źle działał na Linuxie. Zdecydowałem się więc na użycie programu KiCad. Wiem, że to prosty układ i nie ma w nim kompletnie nic nowatorskiego, ale dochodząc do tego etapu nauczyłem się: podstaw elektroniki analogowej i cyfrowej, podstaw konfiguracji Raspberry Pi, łączenia elementów analogowych z cyfrowymi, podstaw Pythona i podstaw programowania kontrolerów, podstaw tworzenia schematów w KiCad'zie. Dla mnie to ogromna dawka wiedzy i opisałem ten projekt po to, aby pokazać ile można się nauczyć przy prostym projekcie. 🙂 Teraz zabieram się za przetworniki analogowo-cyfrowe oraz Raspberry Pico, a w dalszej perspektywie zamierzam zbudować własny, prosty telefon (nie składający się z płytek rozwojowych). Trzymajcie kciuki! 😉 11 Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Marzec 6, 2023 Udostępnij Marzec 6, 2023 @Szern dziękuję za świetną recenzję kursów i gratuluję ciekawego projektu 🙂 Komentarz wydzieliłem do osobnego tematu, tutaj więcej osób zobaczy co udało Ci się zdziałać. Jeszcze raz gratuluję i cieszę się, że kursy Forbota pozwalają poznać elektronikę w praktyce 🚀 Zachęcam do dalszego rozwijania projektu i publikacji aktualizacji - taka dyskusja będzie też na pewno ciekawą formą zdobywania nowej wiedzy. Powodzenia! Link do komentarza Share on other sites More sharing options...
ethanak Marzec 6, 2023 Udostępnij Marzec 6, 2023 Ja tylko tak w kwestii formalnej: Eagle bardzo dobrze działa na moim Ubuntu. Problem może wystąpić jedynie z oknem logowania, ale to się da rozwiązać bardzo prosto (nie mam teraz dostępu do swojego kompa, jesli kogoś to interesuje to podam sposób później). Link do komentarza Share on other sites More sharing options...
Szern Marzec 7, 2023 Autor tematu Udostępnij Marzec 7, 2023 20 godzin temu, ethanak napisał: Ja tylko tak w kwestii formalnej: Eagle bardzo dobrze działa na moim Ubuntu. Problem może wystąpić jedynie z oknem logowania, ale to się da rozwiązać bardzo prosto (nie mam teraz dostępu do swojego kompa, jesli kogoś to interesuje to podam sposób później). Mam Minta LMDE (czyli właściwie Debiana). Miałem solidne problemy przy instalacji (jestem uparty), a po ich pokonaniu i tak niespodziewanie się wysypywał, więc przeszedłem na natywną alternatywę. Myślę jeszcze o Eaglu na Wine (choć na razie nie używam Wine, udaje mi się znaleźć odpowiedniki do wszystkiego, czego używałem na Windows 7). Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Produkcja i montaż PCB - wybierz sprawdzone PCBWay! • Darmowe płytki dla studentów i projektów non-profit • Tylko 5$ za 10 prototypów PCB w 24 godziny • Usługa projektowania PCB na zlecenie • Montaż PCB od 30$ + bezpłatna dostawa i szablony • Darmowe narzędzie do podglądu plików Gerber Zobacz również » Film z fabryki PCBWay
Szern Marzec 7, 2023 Autor tematu Udostępnij Marzec 7, 2023 21 godzin temu, Treker napisał: @Szern dziękuję za świetną recenzję kursów i gratuluję ciekawego projektu 🙂 Komentarz wydzieliłem do osobnego tematu, tutaj więcej osób zobaczy co udało Ci się zdziałać. Jeszcze raz gratuluję i cieszę się, że kursy Forbota pozwalają poznać elektronikę w praktyce 🚀 Zachęcam do dalszego rozwijania projektu i publikacji aktualizacji - taka dyskusja będzie też na pewno ciekawą formą zdobywania nowej wiedzy. Powodzenia! To ja ogromnie dziękuję - kursy Forbota naprawdę otworzyły mi możliwości, które dotychczas były dla mnie zamknięte. Powoli przymierzam się do kursu lutowania i bardzo luźno zastanawiam się nad STM32L4. Nie jestem jednak tego pewien, bo zagrzebałem się w Raspberry Pi i Pico. 1 Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Marzec 7, 2023 Udostępnij Marzec 7, 2023 3 godziny temu, Szern napisał: bardzo luźno zastanawiam się nad STM32L4 STM32L4 to bardzo ciekawy temat, ale na pewno trochę mniej hobbystyczny - warto interesować się tymi układami, jeśli planujesz działać na dużo wyższym poziomie niż "typowy" domowy majsterkowicz. W przeciwnym wypadku możesz nie zauważać zalet tych układów. Link do komentarza Share on other sites More sharing options...
Szern Marzec 7, 2023 Autor tematu Udostępnij Marzec 7, 2023 (edytowany) 29 minut temu, Treker napisał: STM32L4 to bardzo ciekawy temat, ale na pewno trochę mniej hobbystyczny - warto interesować się tymi układami, jeśli planujesz działać na dużo wyższym poziomie niż "typowy" domowy majsterkowicz. W przeciwnym wypadku możesz nie zauważać zalet tych układów. A czy możesz mi polecić ewentualne kursy na Forbocie, które uważasz za sensowne dla mnie przed kursem STM32L4 (poza lutowaniem, które zrobię w następnej kolejności)? W tej chwili zgłębiam temat przetworników AC (zarówno doświadczalnie, jak i programowo, może będzie z tego krótki post), uczę się posługiwać najprostszym z możliwych oscyloskopem Scoppy, w dalszych krokach zamierzam opanować wyświetlacze diodowe (również programowo) i współpracę modemu USB z Raspberry Pi i płytki rozwojowej z Raspberry Pico. Zaczynam się uczyć języka C, którego nie znam. Chciałbym prosić o polecenie tematów, którymi mógłbym/powinienem się zająć. Edytowano Marzec 7, 2023 przez Szern 1 Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Marzec 8, 2023 Udostępnij Marzec 8, 2023 22 godziny temu, Szern napisał: A czy możesz mi polecić ewentualne kursy na Forbocie, które uważasz za sensowne dla mnie przed kursem STM32L4 (poza lutowaniem, które zrobię w następnej kolejności)? Na pewno w tej sytuacji warto przejść przez 3 kursy Arduino: poziom I, poziom II i budowa robotów. Będziesz miał wtedy większe obycie z elektroniką i programowaniem mikrokontrolerów. Taka wiedza przyda się później zarówno przy Pico, jak i przy STM32L4. Kursy Arduino wprowadzą Cię również do C. 1 Link do komentarza Share on other sites More sharing options...
Popularny post Zakrzewiaczek Marzec 9, 2023 Popularny post Udostępnij Marzec 9, 2023 Jeżeli chcesz połączyć elektronikę z programowaniem to spróbuj Arduino, jest proste w obsłudze (do zrobienia takiego alarmu potrzeba może 20 linijek), ale z Raspberry Pi nie rezygnuj, to też fajny temat 😉 Gratuluję i życzę dalszych sukcesów. 4 Link do komentarza Share on other sites More sharing options...
Szern Marzec 21, 2023 Autor tematu Udostępnij Marzec 21, 2023 (edytowany) Bardzo dziękuję za poradę. Nie planowałem Arduino, ale, idąc za Waszymi radami, zabiorę się za tą platformę. Kursy wyglądają interesująco. Przy okazji chciałbym się podzielić moim ostatnim, edukacyjnym projektem. Jak wspominałem, chodzi o czujniki i przetwornik analogowo-cyfrowy. Poniżej układ. Przy okazji udało mi się zacząć zabawę z programem Fritzing i mam pytanie. Czy takie fajne dymki z opisami do elementów, które są w kursach Forbota to etykiety Fritzing? Jeśli tak, to jak je zrobić? Jeśli nie, to jak je zrobić? 😉 Układ składa się z przetwornika A/C MCP3008 i czterech czujników: - cyfrowego czujnika temperatury i wilgotności DHT11 +50C, - termistora NTC 110 47 kΩ (z zestawu Forbota "Podstawy elektroniki 2") - fotorezystora 5-10 kΩ GL5616 (z tego samego zestawu) - fototranzystora L-53P3C o maksymalnej czułości dla fali o częstotliwości 940 nm (również z powyższego zestawu). Oczywiście wszystko zapiąłem do mojego "prototypowego" zestawu z Raspberry Pi. Poniżej schemat połączeń. A to kod programu, który wyświetla w terminalu wartości czterech czujników (tylko w przypadku zmiany którejkolwiek wartości) i w określonym przedziale czasu zapisuje dane do pliku CSV (po każdym uruchomieniu nadpisuje plik usuwając dane i rozpoczynając zapis od nowa, więc trzeba pamiętać o backupie). import sys import Adafruit_DHT import csv import datetime from time import * from MCP3008 import MCP3008 from numpy import log as ln interwal = 60 # przerwa pomiędzy pomiarami w sekundach plik = 'czujniki2.csv' wartosc = [0,0,0] wartoscB = [0,0,0] czujnik = [0,0,0] humidity = 0 temperature = 0 znaczki = [0,0,0,0,0] pierwszy = 1 # pobranie wartości napięcia z tabeli wartosc i sformatowanie jej na string wyjsciowy (wszystkich al def adcV(c=''): if c=='': z = '' i = 0 for x in wartosc: z = z + "\nnapięcie ADC" + str(i) + ": {:,.2f} V".format(x) i += 1 else: z = "napięcie ADC" + str(c) + ": {:,.2f} V".format(wartosc[c]) return z ry: while 1: # pobranie wartości z przetwornika MCP3008 adc = MCP3008() for x in range(len(wartosc)): wartoscB[x] = wartosc[x] # zachowanie poprzedniej wartości do porównania czy się zmieniłą czujnik[x] = adc.read(x) wartosc[x] = (czujnik[x]*5)/1024 # przeliczenie wartości z przetwornika na napięcie adc.close() beta = 4450 r = 47000 r25 = 47000 adc = czujnik[0] t25 = 298.15 # wyliczenie temperatury termistora NTC 110 47kΩ z wartości pobranej z przetwornika # T = B/(ln(R/R25)+ln((1024-ADC)/ADC)+B/T25)-273,15 temp = beta/(ln(r25/r)+ln((1024-adc)/adc)+beta/t25)-273.15 temp1 = "temperatura Rt: {:,.1f} *C".format(temp) # pobranie wartości temperatury i wilgotności z czujnika DHT11 sensor = Adafruit_DHT.DHT11 pin = 5 humiditybak = humidity temperaturebak = temperature humidity, temperature = Adafruit_DHT.read_retry(sensor, pin) temp2 = "temperatura DTH: {:0.1f} *C".format(temperature) hum = "wilgotność: {:0.1f} %".format(humidity) # sprawdzenie, które wartości się zmieniły i oznaczenie tego w tablicy znaczki if round(wartoscB[0],2)!=round(wartosc[0],2): znaczki[0] = 1; if round(wartoscB[1],2)!=round(wartosc[1],2): znaczki[1] = 1; if round(wartoscB[2],2)!=round(wartosc[2],2): znaczki[2] = 1; if round(humiditybak,1)!=round(humidity,1) and humidity is not None: znaczki[3] = 1; if round(temperaturebak,1)!=round(temperature,1) and temperature is not None: znaczki[4] = 1; # wyduk na konsole wartości i oznaczenie strzałką tych, które się zmieniły if znaczki[0]==1 or znaczki[1]==1 or znaczki[2]==1 or znaczki[3]==1 or znaczki[4]==1: if znaczki[3]==1: print("=> ",end='') print(hum) if znaczki[4]==1: print("=> ",end='') print(temp2) if znaczki[0]==1: print("=> ",end='') print(temp1) if znaczki[0]==1: print("=> ",end='') print(adcV(0)) if znaczki[1]==1: print("=> ",end='') print(adcV(1)) if znaczki[2]==1: print("=> ",end='') print(adcV(2) + "\n") # zapis do pliku csv if pierwszy==0: with open(plik, 'a', encoding='utf-8') as csvfile: csvwriter = csv.writer(csvfile) csvwriter.writerow([datetime.datetime.now(), humidity, temperature, temp, wartosc[0], wartosc[1], if pierwszy==1: with open('czujniki.csv', 'w', encoding='utf-8') as csvfile: csvwriter = csv.writer(csvfile) csvwriter.writerow(['timestamp', 'wilgotnosc DHT', 'temperatura DHT', 'temperatura Rt', 'napięcie pierwszy = 0 csvwriter.writerow([datetime.datetime.now(), humidity, temperature, temp, wartosc[0], wartosc[1], sleep(interwal) znaczki = [0,0,0,0,0] except KeyboardInterrupt: print('Koniec') I tutaj mam problem. Czujnik cyfrowy działa bez problemu, ale już termistor stał się dla mnie wyzwaniem. Polecam poniższy artykuł, o nieco łudzącym tytule "Jak zmierzyć najdokładniej temperaturę termistorem". W największym skrócie tłumaczy on dlaczego dokładny pomiar temperatury jest praktycznie niemożliwy w warunkach hobbystycznych. W innym artykule "Pomiar temperatury: termistor NTC + mikrokontroler" znalazłem sposób zrobienia tego w praktyce i interesująco podaną teorię wraz z dość skomplikowanymi wzorami. Z jego pomocą udało mi się przygotować wzór dla swojego termistora i napisać na jego podstawie program w Pythonie. Jednak nie działa to tak jak powinno. Mój wzór jest zły. Albo brak mi podstaw, albo pomyliłem się w przekształceniach, ale mam problem z naprawieniem tego. W weryfikacji poprawności działania pomogła mi wizualizacja w formie wykresów w LibreCalc i porównanie z odczytami fabrycznie skalibrowanego czujnika DHT11. Wykres poniżej. Widać, że wykres dobowy z termistora jest mniej więcej lustrzanym odbiciem wykresu temperatury z DTH11. W praktyce okazało się, że precyzyjne pomiary pobierane z czujników analogowych są bardzo trudne do uzyskania, wymagają solidnej znajomości matematyki i kalibracji. Trochę się zniechęciłem, a został mi jeszcze fotorezystor i fototranzystor. Czy mógłbym prosić o polecenie jakichś materiałów (artykuły, czasopisma, książki - cokolwiek) z których mógłbym zacząć się uczyć jak obchodzić się z analogowymi czujnikami temperatury, światła itp. Edytowano Marzec 21, 2023 przez Szern 2 Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Marzec 21, 2023 Udostępnij Marzec 21, 2023 41 minut temu, Szern napisał: Czy mógłbym prosić o polecenie jakichś materiałów (artykuły, czasopisma, książki - cokolwiek) z których mógłbym zacząć się uczyć jak obchodzić się z analogowymi czujnikami temperatury, światła itp. Tutaj wiele zależy od konkretnych czujników i tego co chcesz uzyskać. Przy niektórych czujnikach często używa się np. filtrów Alfa-beta lub Kalmana. Tutaj znajdziesz przykłady: https://forbot.pl/blog/filtr-alfa-beta-teorii-praktyki-1-id2234 https://forbot.pl/blog/filtr-kalmana-teorii-praktyki-1-id2855 W innych przypadkach wystarczą np. analogowe filtry RC lub LC: https://forbot.pl/blog/czym-jest-filtr-rc-jak-dziala-i-co-warto-o-nim-wiedziec-id40448 https://forbot.pl/blog/czym-jest-filtr-lc-jak-dziala-i-kiedy-moze-sie-przydac-id40588 Z kolei jeszcze inne czujniki analogowe podłącza się do mikrokontrolera przez komparator: https://forbot.pl/blog/kurs-elektroniki-ii-komparatory-napiecia-id9357 1 Link do komentarza Share on other sites More sharing options...
redvbl Kwiecień 9, 2023 Udostępnij Kwiecień 9, 2023 Dnia 7.03.2023 o 09:05, Szern napisał: To ja ogromnie dziękuję - kursy Forbota naprawdę otworzyły mi możliwości, które dotychczas były dla mnie zamknięte @Szern Chyba mamy coś wspólnego, bo mi też Forbot pomaga🤣 Dziękuję 1 Link do komentarza Share on other sites More sharing options...
Szern Kwiecień 11, 2023 Autor tematu Udostępnij Kwiecień 11, 2023 Dnia 9.04.2023 o 09:56, redvbl napisał: @Szern Chyba mamy coś wspólnego, bo mi też Forbot pomaga🤣 Dziękuję To pewnie zabrzmi banalnie, ale właśnie Forbot dał mi szansę realizacji tego, o czym myślałem przez lata. Kursy, forum i inne publikacje nie tylko pozwoliły mi samodzielnie poznawać podstawy elektroniki, ale też nieustannie dają mi impuls do rozwijania swoich zainteresowań. Chociaż przyznam, że czasami, kiedy czytam prawdziwych ekspertów, trochę się załamuję faktem, że najprawdopodobniej nie uda mi się osiągnąć takiego poziomu. Bardzo późno zacząłem i poświęcam czas na mnóstwo innych rzeczy. Ale i tak mam z tego mnóstwo radości. Trzymam kciuki, abyś miał tak samo. :) 2 Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Kwiecień 11, 2023 Udostępnij Kwiecień 11, 2023 3 godziny temu, Szern napisał: Chociaż przyznam, że czasami, kiedy czytam prawdziwych ekspertów, trochę się załamuję faktem, że najprawdopodobniej nie uda mi się osiągnąć takiego poziomu. Głowa do góry, wszystko idzie do przodu tej wiedzy jest po prostu coraz więcej, ale z drugiej strony jest do wszystkiego łatwiejszy dostęp. Warto korzystać 🙂 1 Link do komentarza Share on other sites More sharing options...
redvbl Kwiecień 11, 2023 Udostępnij Kwiecień 11, 2023 7 minut temu, Treker napisał: łatwiejszy dostęp Jaki? Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Bądź aktywny - zaloguj się lub utwórz konto!
Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony
Utwórz konto w ~20 sekund!
Zarejestruj nowe konto, to proste!
Zarejestruj się »Zaloguj się
Posiadasz własne konto? Użyj go!
Zaloguj się »