Skocz do zawartości

Prototyp alarmu - projekt na koniec kursów Forbota


Pomocna odpowiedź

@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

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

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

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

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

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.

  • Lubię! 1
Link do komentarza
Share on other sites

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

(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 przez Szern
  • Lubię! 1
Link do komentarza
Share on other sites

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.

  • Lubię! 1
Link do komentarza
Share on other sites

(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ć? 😉

czujniki.thumb.png.2b630b7802f9ce9763b47c607f9f0124.png

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ń.

1807678761_schematczujnikw.thumb.png.7314f7b640fb958ea12bd641f3b58529.png

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.

1366932487_wykresczujnikw.thumb.png.4f9a36330b404953c806f784dba32dd3.png

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 przez Szern
  • Lubię! 2
Link do komentarza
Share on other sites

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:

W innych przypadkach wystarczą np. analogowe filtry RC lub LC:

Z kolei jeszcze inne czujniki analogowe podłącza się do mikrokontrolera przez komparator:

  • Lubię! 1
Link do komentarza
Share on other sites

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ę

  • Lubię! 1
Link do komentarza
Share on other sites

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. :)

  • Lubię! 2
Link do komentarza
Share on other sites

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ć 🙂

  • Lubię! 1
Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.