Do rozbudowy naszego termometru użyjemy znanej już nam czerwonej diody LED oraz elementu odpowiadającego za wyemitowanie sygnału dźwiękowego. Mowa tu o brzęczyku, nazywanym też buzzerembuzzerbuzzerem. Wykorzystamy popularny element oznaczony symbolem TMB12A05. Jest to brzęczyk aktywny, czyli taki, który posiada wbudowany generator. Oznacza to, że buzzer wydaje dźwięk po przyłożeniu napięcia zasilającego (w naszym przypadku wynosi ono 5 V).
Sam brzęczyk ma kształt walca z dwiema metalowymi nóżkami. Podobnie jak w przypadku diod LED, są one różnej długości. Dłuższa nóżka to anoda (oznaczona na obudowie symbolem +), zaś krótsza to katoda.
R1Ew74LiXYfAx
Zdjęcie przedstawia walec plastikowy, posiada on 2 nóżki, jedną niezncznie krótszą.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
Pracę zaczniemy od przygotowania układu zbudowanego w e‑materiale Arduino – termometrP1CZzN8a1Arduino – termometr. Oto szkic połączeń oraz gotowy termometr:
RGUFX7Nl7KnlK
Ilustracja przedstawia połączenia pomiędzy arduino uno, a płytką stykową. Na płytce znajduje się termometr (względem wycięcia w obudowie) podłączony jest prawą nóżką do uziemienia, lewą do +5V a środkową do pinu A0 arduino. Pin 5V podłączony jest do +5V płytki, a GND podłączone jest do uziemienia.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
RKOxpmJxAQiOv
Zdjęcie przedstawia połączenia pomiędzy arduino uno, a płytką stykową. Na płytce znajduje się termometr (względem wycięcia w obudowie) podłączony jest prawą nóżką do uziemienia, lewą do +5V a środkową do pinu A0 arduino. Pin 5V podłączony jest do +5V płytki, a GND podłączone jest do uziemienia.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
Wyślijmy do płytki Arduino kod odpowiedzialny za mierzenie temperatury i wyświetlanie wyników na ekranie komputera. Program ten również został omówiony w e‑materiale Arduino – termometrP1CZzN8a1Arduino – termometr. Zapiszmy szkic pod nazwą termometr.
Linia 1. const int sensor znak równości A0 średnik.
Linia 3. void setup otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 4. Serial kropka begin otwórz nawias okrągły 9600 zamknij nawias okrągły średnik.
Linia 5. zamknij nawias klamrowy.
Linia 7. void loop otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 8. int odczyt znak równości analogRead otwórz nawias okrągły sensor zamknij nawias okrągły średnik.
Linia 9. float napiecie znak równości odczyt asterysk 5 kropka 0 średnik.
Linia 10. napiecie znak równości napiecie prawy ukośnik 1024 kropka 0 średnik.
Linia 11. float tempC znak równości otwórz nawias okrągły napiecie minus 0 kropka 5 zamknij nawias okrągły asterysk 100 średnik.
Linia 13. Serial kropka print otwórz nawias okrągły cudzysłów Temperatura dwukropek cudzysłów zamknij nawias okrągły średnik.
Linia 14. Serial kropka print otwórz nawias okrągły tempC zamknij nawias okrągły średnik.
Linia 15. Serial kropka print otwórz nawias okrągły cudzysłów stopni C cudzysłów zamknij nawias okrągły średnik.
Linia 16. Serial kropka println otwórz nawias okrągły zamknij nawias okrągły średnik.
Linia 17. delay otwórz nawias okrągły 1000 zamknij nawias okrągły średnik.
Linia 18. zamknij nawias klamrowy.
Oto lista elementów potrzebnych do skonstruowania termometru z alarmem:
kompletny układ zbudowany w e‑materiale Arduino – termometrP1CZzN8a1Arduino – termometr,
czerwona dioda LED,
rezystory 220 Ωomega (2 sztuki),
brzęczyk TMB12A05 (lub podobny),
przewody i zworki połączeniowe.
Rozbudujmy nieco termometr, dodając do niego diodę i brzęczyk. Elementy te będą podłączone do pinów nr 6 i 7.
R1QyL9zOMxkCv
Ilustracja przedstawia schemat połączeń arduino uno do termometru, diody oraz brzęczyka. Od pinów 5V do modułu TMP36, od A0 do TMP36 oraz od GND do TMP36 - moduł nie posiada oznaczeń pinowych. Od pinu 7 poprzez rezystor 220 om do LED a następnie pin GND. Od pinu 6 poprzez rezystor 220 om do brzęczyka (dodatni teminal) a następnie do pinu GND.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
1. W przygotowanym wcześniej układzie łączymy diodę z pinem nr 7.
Anodę (dłuższą nóżkę) diody LED wtykamy do dowolnego otworu szyny danych, natomiast katodę umieszczamy dwa wiersze niżej. W tym samym wierszu co anoda powinna się znaleźć jedna nóżka rezystora. Jego końcówki można wygiąć tak, aby umieścić je w dwóch sąsiadujących wierszach, jednak wygodniej jest wpiąć jedną nóżkę w tym samym wierszu co anoda diody LED, a drugą kilka wierszy wyżej lub niżej. Następnie doprowadzamy do diody zasilanie, łącząc przewodem pin nr 7 z tym samym wierszem płytki stykowej, w którym znajduje się druga końcówka rezystora (ta, która nie ma kontaktu z diodą LED).
Łączymy katodę diody z masą płytki stykowej. Użyjmy drugiej szyny ujemnej na płytce. Pamiętajmy, aby obie szyny ujemne na płytce stykowej połączyć ze sobą przewodem.
RZW7SpwOYcxE1
Łączenie katody diody z masą płytki stykowej przy użyciu drugiej szyny ujemnej na płytce.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
2. Podłączamy brzęczyk. Jego dłuższą nóżkę wpinamy w jedną szynę danych, zaś krótszą - w drugą szynę. Dzięki temu obok buzzera pozostanie miejsce na inne styki.
Podobnie jak w przypadku diody, wpinamy jedną nóżkę rezystora w tym samym wierszu, w którym znajduje się anoda, a drugą nieco wyżej (lub niżej). Teoretycznie rezystor nie jest niezbędny - brzęczykowi nic nie grozi przy napięciu 5 V (jest to jego nominalne napięcie pracy). Opornik jest nam potrzebny do regulowania głośności dźwięku. Na liście elementów umieściliśmy rezystor 220 Ωomega, ale możemy przetestować także inne oporniki. Im wyższa będzie wartość rezystancji, tym niższe napięcie zasili brzęczyk. Przełoży się to na zmniejszenie głośności generowanego dźwięku.
Drugą nóżkę rezystora łączymy przewodem z pinem nr 6.
Katodę łączymy z masą płytki stykowej. Podłączamy płytkę Arduino do komputera.
R96qpesLrK2iz
Zdjęcie przedstawia połączenia pomiędzy arduino uno, a płytką stykową. Na płytce znajduje się termometr (względem wycięcia w obudowie) podłączony jest prawą nóżką do uziemienia, lewą do +5V a środkową do pinu A0 arduino. Pin 5V podłączony jest do +5V płytki, a GND podłączone jest do uziemienia. Uziemienie górnej szyny jak i dolnej na płytce stykowej jest połączone. Podłączona jest także LED, jedną nóżką do uziemienia, drugą zaś poprzez rezystor do pinu 7 arduino. Po środku płytki zamontowany jest brzęczyk, który poprzez rezystor łączy się z pinem 6 arduino, a drugą nóżką do uziemienia.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
Programowanie
Brzęczykiem steruje się tak samo jak diodą LED. Jeżeli buzzer ma wydawać dźwięk, to poziom napięcia na jego anodzie musi być wysoki. Jeśli zależy nam by ucichł, powinniśmy obniżyć napięcie do zera.
Rozbudujmy teraz szkic odpowiedzialny za obsługę termometru. Zapiszmy go pod nazwą termometr_alarm.
1. Poniżej stałej sensor deklarujemy zmienne – przypisujemy do nich numery pinów:
Linia 1. const int sensor znak równości A0 średnik.
Linia 2. int ledPin znak równości 7 średnik.
Linia 3. int buzzPin znak równości 6 średnik.
const int sensor = A0;
int ledPin = 7;
int buzzPin = 6;
2. W ciele funkcji loop() definiujemy wyjścia (mają być nimi piny nr 6 i 7):
Linia 1. void setup otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 2. Serial kropka begin otwórz nawias okrągły 9600 zamknij nawias okrągły średnik.
Linia 3. pinMode otwórz nawias okrągły ledPin przecinek OUTPUT zamknij nawias okrągły średnik.
Linia 4. pinMode otwórz nawias okrągły buzzPin przecinek OUTPUT zamknij nawias okrągły średnik.
Linia 5. zamknij nawias klamrowy.
3. Korzystając z instrukcji warunkowej if, określamy, jak ma się zachowywać nasz termometr. Załóżmy, że jeśli temperatura przekroczy 25°C, powinien się uruchomić alarm (zarówno świetlny, jak i dźwiękowy). W przeciwnym wypadku dioda i brzęczyk mają być wyłączone. Instrukcję warunkową umieszczamy przed funkcją delay(). Dodatkowo możemy zażądać wyświetlania informacji, że jest za gorąco:
Linia 1. if otwórz nawias okrągły tempC zamknij nawias ostrokątny 25 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 2. digitalWrite otwórz nawias okrągły ledPin przecinek HIGH zamknij nawias okrągły średnik.
Linia 3. digitalWrite otwórz nawias okrągły buzzPin przecinek HIGH zamknij nawias okrągły średnik.
Linia 4. Serial kropka print otwórz nawias okrągły cudzysłów Za goraco wykrzyknik cudzysłów zamknij nawias okrągły średnik.
Linia 5. Serial kropka println otwórz nawias okrągły zamknij nawias okrągły średnik.
Linia 6. zamknij nawias klamrowy else otwórz nawias klamrowy.
Linia 7. digitalWrite otwórz nawias okrągły ledPin przecinek LOW zamknij nawias okrągły średnik.
Linia 8. digitalWrite otwórz nawias okrągły buzzPin przecinek LOW zamknij nawias okrągły średnik.
Linia 9. zamknij nawias klamrowy.
4. Weryfikujemy kod i przesyłamy szkic do płytki. Klikamy symbol monitora portu szeregowego, aby go uruchomić. Następnie podgrzewamy czujnik, ujmując go w palce, i sprawdzamy, czy alarm działa. Pamiętajmy, aby dostosować próg włączania alarmu do własnych potrzeb.
Poniższy film przedstawia efekt działania układu.
RC1GTNYPG8dtU
Film nawiązujący do treści materiału pt. "Budowa układu".
Film nawiązujący do treści materiału pt. "Budowa układu".
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
Zróbmy teraz symulację układu z brzęczykiem za pomocą środowiska Tinkercad.
R1ItXti90WzaT
Zdjęcie ekranu przedstawia otwartą stronę internetową Tinkercad. Strefa robocza jest pusta.
Na liście komponentów, widocznej po prawej stronie okna, znajdź płytkę stykową. Kliknij w nią i umieść w głównym oknie.
RCkimQbQDeSNj
Zdjęcie ekranu przedstawia otwartą stronę internetową Tinkercad. W strefie roboczej postawiono płytkę stykową.
Następnie znajdź i wstaw na płytkę stykową czujnik temperatury.
RNS0EgOV5YPSD
Zdjęcie ekranu przedstawia otwartą stronę internetową Tinkercad. W strefie roboczej postawiono płytkę stykową, na której znajduje się termometr.
Teraz znajdź i dodaj do płytki stykowej diodę LED.
R12xLLyq7c0KW
Zdjęcie ekranu przedstawia otwartą stronę internetową Tinkercad. W strefie roboczej postawiono płytkę stykową, na której znajduje się termometr. Po prawej stronie zamontowano diodę.
Jako że w dostępnych komponentach nie ma brzęczyka, skorzystaj z przetwornika piezo.
R10KeZxlFZlJg
Zdjęcie ekranu przedstawia otwartą stronę internetową Tinkercad. W strefie roboczej postawiono płytkę stykową, na której znajduje się termometr. Po prawej stronie zamontowano diodę, a następnie przetwornik piezo.
Teraz dodaj dwa rezystory. Ustaw ich wartość na 220 Ωomega. Jeden dodaj do anody diody LED, drugi zaś do jednej z nóżek przetwornika piezo.
RDXKHYnZuqykr
Zdjęcie ekranu przedstawia otwartą stronę internetową Tinkercad. W strefie roboczej postawiono płytkę stykową, na której znajduje się termometr. Po prawej stronie zamontowano diodę, a następnie przetwornik piezo. Do lewej nóżki przetwornika oraz do anody diody podłączono po rezystorze.
Teraz dodaj moduł Arduino Uno do okna symulacji.
RnTS52gpeynpn
Zdjęcie ekranu przedstawia otwartą stronę internetową Tinkercad. W strefie roboczej postawiono arduino uno oraz płytkę stykową, na której znajduje się termometr. Po prawej stronie zamontowano diodę, a następnie przetwornik piezo. Do lewej nóżki przetwornika oraz do anody diody podłączono po rezystorze.
Podłącz pierwszy pin czujnika z pinem 5V Arduino Uno.
R1b2bcaaqXMs2
Zdjęcie ekranu przedstawia otwartą stronę internetową Tinkercad. W strefie roboczej postawiono arduino uno oraz płytkę stykową, na której znajduje się termometr. Po prawej stronie zamontowano diodę, a następnie przetwornik piezo. Do lewej nóżki przetwornika oraz do anody diody podłączono po rezystorze. Z pinu 5V połączono kablem lewą nóżkę moduło termometru (prostokątnym wycięciem w stronę ekranu).
Drugi pin czujnika połącz z pinem A0 Arduino Uno.
RXIueIX8IehID
Zdjęcie ekranu przedstawia otwartą stronę internetową Tinkercad. W strefie roboczej postawiono arduino uno oraz płytkę stykową, na której znajduje się termometr. Po prawej stronie zamontowano diodę, a następnie przetwornik piezo. Do lewej nóżki przetwornika oraz do anody diody podłączono po rezystorze. Z pinu 5V połączono kablem lewą nóżkę moduło termometru (prostokątnym wycięciem w stronę ekranu). Pin A0 arduino podłączono do środkowej nóżki termometru.
Do ujemnej szyny płytki podepnij: pin GND Arduino Uno, trzeci pin czujnika, katodę diody LED oraz wolny pin przetwornika piezo.
R1bmhApoAXWz7
Zdjęcie ekranu przedstawia otwartą stronę internetową Tinkercad. W strefie roboczej postawiono arduino uno oraz płytkę stykową, na której znajduje się termometr. Po prawej stronie zamontowano diodę, a następnie przetwornik piezo. Do lewej nóżki przetwornika oraz do anody diody podłączono po rezystorze. Z pinu 5V połączono kablem lewą nóżkę moduło termometru (prostokątnym wycięciem w stronę ekranu). Pin A0 arduino podłączono do środkowej nóżki termometru. GND arduino podłączono do uziemienia płytki stykowej, do którego podłączono także drugą nóżkę diody i drugą nóżkę przetwornika jak i prawą nóżkę termometru.
Wolną nóżkę rezystora podpiętego do diody LED podepnij do pinu D7 Arduino.
RtD0wfLoeFfcj
Zdjęcie ekranu przedstawia otwartą stronę internetową Tinkercad. W strefie roboczej postawiono arduino uno oraz płytkę stykową, na której znajduje się termometr. Po prawej stronie zamontowano diodę, a następnie przetwornik piezo. Do lewej nóżki przetwornika oraz do anody diody podłączono po rezystorze. Z pinu 5V połączono kablem lewą nóżkę moduło termometru (prostokątnym wycięciem w stronę ekranu). Pin A0 arduino podłączono do środkowej nóżki termometru. GND arduino podłączono do uziemienia płytki stykowej, do którego podłączono także drugą nóżkę diody i drugą nóżkę przetwornika jak i prawą nóżkę termometru. Wolną nóżkę rezystora przy diodzie podpięto do pinu 7.
Wolną nóżkę rezystora wpiętego do przetwornika piezo podepnij pod pin D6 Arduino.
R1O1MYuvlgXc8
Zdjęcie ekranu przedstawia otwartą stronę internetową Tinkercad. W strefie roboczej postawiono arduino uno oraz płytkę stykową, na której znajduje się termometr. Po prawej stronie zamontowano diodę, a następnie przetwornik piezo. Do lewej nóżki przetwornika oraz do anody diody podłączono po rezystorze. Z pinu 5V połączono kablem lewą nóżkę moduło termometru (prostokątnym wycięciem w stronę ekranu). Pin A0 arduino podłączono do środkowej nóżki termometru. GND arduino podłączono do uziemienia płytki stykowej, do którego podłączono także drugą nóżkę diody i drugą nóżkę przetwornika jak i prawą nóżkę termometru. Wolną nóżkę rezystora przy diodzie podpięto do pinu 7, a wolną nóżkę rezystora przetwornika do pinu 6.
Przejdźmy teraz do pisania kodu. W tym celu klikamy na przycisk Kod, z listy rozwijanej wybieramy Tekst, potwierdzamy chęć zmiany widoku i czyścimy zawartość.
Przepisz kod układu z brzęczykiem.
R1YfIvNKL9LI1
Zdjęcie ekranu przedstawia otwartą stronę internetową Tinkercad. W strefie roboczej postawiono arduino uno oraz płytkę stykową, na której znajduje się termometr. Po prawej stronie zamontowano diodę, a następnie przetwornik piezo. Do lewej nóżki przetwornika oraz do anody diody podłączono po rezystorze. Z pinu 5V połączono kablem lewą nóżkę moduło termometru (prostokątnym wycięciem w stronę ekranu). Pin A0 arduino podłączono do środkowej nóżki termometru. GND arduino podłączono do uziemienia płytki stykowej, do którego podłączono także drugą nóżkę diody i drugą nóżkę przetwornika jak i prawą nóżkę termometru. Wolną nóżkę rezystora przy diodzie podpięto do pinu 7, a wolną nóżkę rezystora przetwornika do pinu 6. Otwarto kod projektu: const int sensor = A0; int ledPin = 7; int buzzPin = 6; void setup(){ Serial.begin(9600); pinMode(ledPin, OUTPUT); pinMode(buzzPin, OUTPUT); } void loop(){ int odczyt = analogRead(sensor); float napiecie = odczyt * 5.0; napiecie = napiecie / 1024.0; float tempC = (napiecie - 0.5) * 100; Serial.print("Temperatura: "); Serial.print(tempC); Serial.print(" stopni C"); Serial.println(); if (tempC > 25){ digitalWrite(ledPin, HIGH); digitalWrite(buzzPin, HIGH); Serial.print("Za goraco!"); Serial.println(); } else { digitalWrite(ledPin, LOW); digitalWrite(buzzPin, LOW); } }
Jeśli okno z wpisanym kodem zasłania ci widok układu, możesz go dostosować do własnych potrzeb.
R1Hf4g5dn0Crl
Zdjęcie ekranu przedstawia otwartą stronę internetową Tinkercad. W strefie roboczej postawiono arduino uno oraz płytkę stykową, na której znajduje się termometr. Po prawej stronie zamontowano diodę, a następnie przetwornik piezo. Do lewej nóżki przetwornika oraz do anody diody podłączono po rezystorze. Z pinu 5V połączono kablem lewą nóżkę moduło termometru (prostokątnym wycięciem w stronę ekranu). Pin A0 arduino podłączono do środkowej nóżki termometru. GND arduino podłączono do uziemienia płytki stykowej, do którego podłączono także drugą nóżkę diody i drugą nóżkę przetwornika jak i prawą nóżkę termometru. Wolną nóżkę rezystora przy diodzie podpięto do pinu 7, a wolną nóżkę rezystora przetwornika do pinu 6. Otwarto kod projektu: const int sensor = A0; int ledPin = 7; int buzzPin = 6; void setup(){ Serial.begin(9600); pinMode(ledPin, OUTPUT); pinMode(buzzPin, OUTPUT); } void loop(){ int odczyt = analogRead(sensor); float napiecie = odczyt * 5.0; napiecie = napiecie / 1024.0; float tempC = (napiecie - 0.5) * 100; Serial.print("Temperatura: "); Serial.print(tempC); Serial.print(" stopni C"); Serial.println(); if (tempC > 25){ digitalWrite(ledPin, HIGH); digitalWrite(buzzPin, HIGH); Serial.print("Za goraco!"); Serial.println(); } else { digitalWrite(ledPin, LOW); digitalWrite(buzzPin, LOW); } }
Włącz widok Konsoli szeregowej i uruchom symulację.
R1QIfhyz4QtfZ
Zdjęcie ekranu przedstawia otwartą stronę internetową Tinkercad. W strefie roboczej postawiono arduino uno oraz płytkę stykową, na której znajduje się termometr. Po prawej stronie zamontowano diodę, a następnie przetwornik piezo. Do lewej nóżki przetwornika oraz do anody diody podłączono po rezystorze. Z pinu 5V połączono kablem lewą nóżkę moduło termometru (prostokątnym wycięciem w stronę ekranu). Pin A0 arduino podłączono do środkowej nóżki termometru. GND arduino podłączono do uziemienia płytki stykowej, do którego podłączono także drugą nóżkę diody i drugą nóżkę przetwornika jak i prawą nóżkę termometru. Wolną nóżkę rezystora przy diodzie podpięto do pinu 7, a wolną nóżkę rezystora przetwornika do pinu 6. Otwarto kod projektu: const int sensor = A0; int ledPin = 7; int buzzPin = 6; void setup(){ Serial.begin(9600); pinMode(ledPin, OUTPUT); pinMode(buzzPin, OUTPUT); } void loop(){ int odczyt = analogRead(sensor); float napiecie = odczyt * 5.0; napiecie = napiecie / 1024.0; float tempC = (napiecie - 0.5) * 100; Serial.print("Temperatura: "); Serial.print(tempC); Serial.print(" stopni C"); Serial.println(); if (tempC > 25){ digitalWrite(ledPin, HIGH); digitalWrite(buzzPin, HIGH); Serial.print("Za goraco!"); Serial.println(); } else { digitalWrite(ledPin, LOW); digitalWrite(buzzPin, LOW); } } . Otwarto konsolę z tytułem: "Czujnik temperatury [TMP36]" w polu nazwa wartość wpisana to 1.
Oto film przedstawiający działanie programu.
RnCbnGchopHn3
Film nawiązujący do treści materiału dotyczącej działania brzęczyka.
Film nawiązujący do treści materiału dotyczącej działania brzęczyka.