• Nie Znaleziono Wyników

Arduino termometr. Wprowadzenie Przeczytaj Prezentacja mul medialna Sprawdź się Dla nauczyciela

N/A
N/A
Protected

Academic year: 2022

Share "Arduino termometr. Wprowadzenie Przeczytaj Prezentacja mul medialna Sprawdź się Dla nauczyciela"

Copied!
10
0
0

Pełen tekst

(1)

Arduino – termometr

Wprowadzenie Przeczytaj

Prezentacja mul medialna Sprawdź się

Dla nauczyciela

(2)

W bieżącym odcinku kursu Arduino użyjemy złącza analogowego, do którego podepniemy czujnik temperatury.

Termometr wydaje się być mało interesującym urządzeniem – ale to tylko pozory. Projekt, którym się zajmiemy, może zostać urozmaicony na wiele sposobów, jak choćby o sygnał dźwiękowy lub świetlny, włączający się gdy temperatura jest zbyt wysoka lub zbyt niska. Takie urządzenie potrafi ocalić życie egzotycznych rybek akwariowych. Odczyt temperatury można prezentować na ekranie siedmiosegmentowego wyświetlacza LED lub na matrycowym wyświetlaczu LCD 2×16.

Zaczniemy jednak od skonstruowania najprostszego termometru. Wyniki pomiaru temperatury będziemy sprawdzać na ekranie monitora.

Twoje cele

Dowiesz się, jak zmierzyć temperaturę za pomocą czujnika TMP36.

Poznasz możliwości złącza analogowego.

Wyświetlisz na ekranie temperaturę zmierzoną za pomocą czujnika.

Arduino – termometr

Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

(3)

Przeczytaj

Czujnik temperatury

Do budowy termometru użyjemy czujnika TMP36, który nadaje się do pomiaru temperatur w zakresie od –40 do +150°C. Sam czujnik ma postać ściętego z jednej strony cylindra z trzema wyprowadzeniami; jest to obudowa typu THT TO92.

Czujnik temperatury TMP36

Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Podstawowe dane techniczne:

napięcie zasilania: od 2,7 V do 5,5 V zakres pomiarowy: od -40°C do +120°C dokładność pomiaru: ±2°C

Opiszmy wyprowadzenia czujnika. Gdy patrzymy na jego płaską stronę, a nóżki są skierowane do dołu (tak jak na zdjęciu wyżej), pierwsze wyprowadzenie od lewej strony jest plusem zasilania. Napięcie zasilające nie może być wyższe niż 5,5 V – zaznaczyliśmy to od razu podając dane techniczne czujnika.

Jeżeli podłączymy element TMP36 bezpośrednio do 9‑woltowej baterii, to czujnik z pewnością zostanie uszkodzony. Podłączenie za pośrednictwem płytki Arduino jest z kolei całkowicie bezpieczne, ponieważ jej napięcie robocze (5 V) mieści się w przedziale akceptowanym przez czujnik.

Drugie wyprowadzenie to wyjście analogowe, z którego odczytujemy napięcie, przeliczane następnie na temperaturę. Wreszcie trzecie wyprowadzenie to minus zasilania, który należy połączyć z masą.

Budowa układu

Elementy potrzebne do wykonania zadania:

płytka Arduino Uno płytka stykowa kabel USB typu A‑B czujnik TMP36

przewody i zworki połączeniowe

Elementy podłączamy według przedstawionego niżej schematu.

Schemat podłączenia czujnika TMP36 do Arduino

Realizacja projektu

Wyginamy wyprowadzenia czujnika TMP36 tak, abyśmy mogli je wetknąć w trzy otwory na płytce stykowej. Wpinamy czujnik pionowo – poszczególne wyprowadzenia powinny znajdować się w tej samej kolumnie, lecz w różnych wierszach.

(4)

Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Podłączamy zasilanie czujnika do szyny dodatniej. Jeden styk powinien znaleźć się obok wyprowadzenia czujnika (ważne, aby był to ten sam wiersz, po tej samej stronie płytki stykowej); drugi natomiast można umieścić w dowolnym miejscu szyny zasilającej. Łączymy masę czujnika z masą płytki stykowej.

Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Środkowe wyprowadzenie (wyjście) podłączamy do złącza analogowego (pinu) A0.

Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Podłączamy zasilanie i przewód masy.

Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Układ jest dość prosty. Aby jednak działał, należy uzupełnić go o odpowiedni program. Uruchamiamy aplikację Arduino IDE. Wydajemy polecenie Plik | Nowy. Zapisujemy od razu szkic pod nazwą termometr.

Definiujemy stałą odpowiadającą pinowi, do którego podłączono czujnik (A0), a w ciele funkcji setup() wskazujemy port szeregowy (Serial) łączący płytkę Arduino z komputerem oraz ustalamy szybkość transmisji.

const int sensor = A0;

void setup() { Serial.begin(9600);

}

(5)

W ciele funkcji loop() umieszczamy kolejną funkcję, pozwalającą na odczytanie napięcia z czujnika. Jest ono proporcjonalne do temperatury otoczenia. Temperaturze 0°C odpowiada napięcie 500 mV. Dzięki takiemu ustaleniu punktu zerowego można zmierzyć także temperatury ujemne. Zmiana temperatury na wyższą o 1°C oznacza zwiększenie napięcia wyjściowego czujnika o 10 mV; zmniejszenie temperatury o tę samą wartość skutkuje zmniejszeniem napięcia o 10 mV.

Ponieważ temperatura się zmienia, wartość reprezentująca ją w szkicu Arduino powinna być przechowywana w postaci zmiennej. Należy rozumieć to następująco: odczytaną z czujnika temperatury wartość napięcia trzeba zapisać jako zmienną odczyt:

void loop() {

int odczyt = analogRead(sensor);

}

Wartość zwróconą przez funkcję analogRead() należy przekształcić na rzeczywiste napięcie, które uzyskujemy z czujnika. Obliczamy ją ze wzoru: (odczytana wartość ⋅ 5 V). Wartość 5 V wynika z napięcia dostarczanego z płytki Arduino.

Uzyskany wynik dzielimy przez 1024. Dlaczego dokonujemy dzielenia i dlaczego akurat przez 1024? Otóż wynika to z rozdzielczości, z jaką odczytywany jest sygnał napięciowy z wejść analogowych płytki Arduino: może on osiągnąć jeden z 1024 poziomów (ponumerowanych od 0 do 1023). Wspominaliśmy o tym w poprzedniej lekcji, poświęconej systemowi automatycznego sterowania natężeniem oświetlenia.

Definiujemy kolejną zmienną; tym razem jednak zastosujemy typ float. Ma ona nazwę napiecie.

Ważne!

Należy pamiętać, aby w nazwach zmiennych nie stosować polskich znaków. Korzystając z typu danych float nie wolno również zapominać, że wszystkie liczby zapisujemy wraz z częścią ułamkową (ze znakiem kropki i liczbą po kropce). Robimy tak nawet wtedy, gdy chodzi o zapisanie liczby całkowitej (liczbę 5 należy zapisać jako 5.0).

float napiecie = odczyt * 5.0;

napiecie = napiecie / 1024.0;

Przekształcamy wartość napięcia na temperaturę w skali Celsjusza. Skorzystamy ze wzoru: ((obliczone napięcie [V] – 0.5 V) ⋅ 100), gdzie 0.5 V (czyli 500 mV) oznacza wartość początkową, odpowiadającą temperaturze 0°C.

float tempC = (napiecie - 0.5) * 100;

Po dokonaniu obliczeń musimy określić sposób prezentacji wyników na ekranie.

Serial.print(tempC);

Następnie wysyłamy szkic do płytki i w prawym górnym rogu okna programu Arduino IDE klikamy przycisk monitora portu szeregowego. Otrzymujemy następujący ciąg liczb:

Wyniki pomiaru temperatury wprawdzie się pojawiły, lecz są odświeżane tak szybko, że nie da się ich odczytać. Poza tym nie wiadomo, gdzie kończy się jedna liczba, a gdzie zaczyna następna.

Zmodyfikujmy zatem szkic, nakazując wyświetlanie każdej liczby w nowej linii. Użyjemy również funkcji delay(), dzięki której pokazywana wartość pozostanie na ekranie przez określony czas; dopiero później pojawi się następna liczba. Ponownie przesyłamy szkic do płytki i wywołujemy Monitor portu szeregowego.

Serial.println();

delay(1000);

Aby termometr wyglądał bardziej profesjonalnie, uzupełnimy szkic o dodatkowe elementy. Przed liczbą oznaczającą temperaturę będzie się pojawiał tekst „Temperatura:”, a za wyświetloną wartością liczbową dodamy frazę „stopni C”. Skorzystamy z tej samej funkcji, której użyliśmy do wyświetlania temperatury, jednak tekst, który w niej umieścimy, powinien zostać ujęty w cudzysłów.

Raz jeszcze przesyłamy szkic do płytki i wywołujemy monitor portu szeregowego. Następnie chwytamy w dwa palce czujnik, żeby odrobinę go podgrzać; zmiana temperatury powinna nastąpić błyskawicznie, a wyniki zobaczymy na ekranie.

(6)

Serial.print("Temperatura: ");

Serial.print(tempC);

Serial.print(" stopni C");

Cały kod programu wygląda następująco:

const int sensor = A0;

void setup() { Serial.begin(9600);

}

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();

delay(1000);

}

Słownik

monitor portu szeregowego

moduł służący do odbierania informacji z płytki Arduino oraz wysyłania komend/danych z komputera do Arduino zmienna typu int

zmienna przechowująca liczby całkowite zmienna typu float

zmienna przechowująca liczby zmiennoprzecinkowe

(7)

Prezentacja mul medialna

Polecenie 1

Zbuduj oraz zaprogramuj układ z dwoma czujnikami DS18B20 podłączonymi do jednego pinu płytki Arduino.

(8)

Sprawdź się

Ćwiczenie 1

Jakim napięciem możemy zasilić czujnik temperatury TMP36?

2 V 9 V 5 V 8 V Ćwiczenie 2

Wpisz odpowiednią liczbę, tak aby odczyt temperatury odbywał się co 5 sekund:

const int sensor = A0;

void setup() ...

void loop()

...

} Ćwiczenie 3

Wskaż wyprowadzenie masy z czujnika TMP36:

Ćwiczenie 4

Która instrukcja odpowiada za przełamanie wiersza (przejście do następnej linii) w monitorze portu szeregowego?

Serial.println();

delay(2000);

Serial.print(end);

Ćwiczenie 5

Które temperatury jest w stanie zmierzyć czujnik TMP36?

-20°C -60°C 160°C 120°C Ćwiczenie 6

Zakładając, że temperatura zmierzona w pomieszczeniu to 21°C, uporządkuj linie kodu, tak aby w monitorze portu szeregowego wyświetlany był napis: "21 stopni C to temperatura w pokoju".

Serial.print(" stopni C");

Serial.print(" to temperatura w pokoju");

Serial.print(tempC);

Ćwiczenie 7

Liczbę 15.24 możemy przechowywać w zmiennej typu:

float int char Ćwiczenie 8

Do których pinów Arduino możemy podłączyć wyjście analogowe z czujnika TMP36?

Do pinów A0-A5 do pinów TX, RX do pinów 5 V lub 3.3 V

(9)

Dla nauczyciela

Autor: Anna Kwaśna Przedmiot: Informatyka Temat: Arduino – termometr Grupa docelowa:

III etap edukacyjny, liceum ogólnokształcące, technikum Podstawa programowa:

Treści nauczania – wymagania szczegółowe Zakres podstawowy

II. Programowanie i rozwiązywanie problemów z wykorzystaniem komputera i innych urządzeń cyfrowych. Uczeń:

1. projektuje i programuje rozwiązania problemów z różnych dziedzin, stosuje przy tym: instrukcje wejścia/wyjścia, wyrażenia arytmetyczne i logiczne, instrukcje warunkowe, instrukcje iteracyjne, funkcje z parametrami i bez parametrów, testuje poprawność programów dla różnych danych; w szczególności programuje algorytmy z punktu I.2);

2. do realizacji rozwiązań problemów prawidłowo dobiera środowiska informatyczne, aplikacje oraz zasoby, wykorzystuje również elementy robotyki;

IV. Rozwijanie kompetencji społecznych. Uczeń:

1. aktywnie uczestniczy w realizacji projektów informatycznych rozwiązujących problemy z różnych dziedzin, przyjmuje przy tym różne role w zespole realizującym projekt i prezentuje efekty wspólnej pracy;

6. poszerza i uzupełnia swoją wiedzę korzystając z zasobów udostępnionych na pla ormach do e‑nauczania.

V. Przestrzeganie prawa i zasad bezpieczeństwa. Uczeń:

1. postępuje zgodnie z zasadami netykiety oraz regulacjami prawnymi dotyczącymi: ochrony danych osobowych, ochrony informacji oraz prawa autorskiego i ochrony własności intelektualnej w dostępie do informacji; jest świadomy konsekwencji łamania tych zasad;

2. respektuje obowiązujące prawo i normy etyczne dotyczące korzystania i rozpowszechniania oprogramowania komputerowego, aplikacji cudzych i własnych oraz dokumentów elektronicznych;

3. stosuje dobre praktyki w zakresie ochrony informacji wrażliwych (np. hasła, pin), danych i bezpieczeństwa systemu operacyjnego, objaśnia rolę szyfrowania informacji;

Zakres rozszerzony

I. Rozumienie, analizowanie i rozwiązywanie problemów. Uczeń spełnia wymagania określone dla zakresu podstawowego, a ponadto:

1. w zależności od problemu rozwiązuje go, stosując metodę wstępującą lub zstępującą;

2. do realizacji rozwiązania problemu dobiera odpowiednią metodę lub technikę algorytmiczną i struktury danych;

II. Programowanie i rozwiązywanie problemów z wykorzystaniem komputera i innych urządzeń cyfrowych. Uczeń spełnia wymagania określone dla zakresu podstawowego, a ponadto:

1. projektuje i tworzy rozbudowane programy w procesie rozwiązywania problemów, wykorzystuje w programach dobrane do algorytmów struktury danych, w tym struktury dynamiczne i korzysta z dostępnych bibliotek dla tych struktur;

2. stosuje zasady programowania strukturalnego i obiektowego w rozwiązywaniu problemów;

3. sprawnie posługuje się zintegrowanym środowiskiem programistycznym przy pisaniu, uruchamianiu i testowaniu programów;

4. przygotowując opracowania rozwiązań złożonych problemów, posługuje się wybranymi aplikacjami w stopniu zaawansowanym:

1) tworzy i edytuje dwuwymiarowe oraz trójwymiarowe wizualizacje i animacje, stosuje właściwe formaty plików graficznych, 2) uczestniczy w opracowaniu dokumentacji projektu zespołowego, pracując przy tym w odpowiednim środowisku,

V. Rozwijanie kompetencji społecznych. Zakres rozszerzony. Uczeń spełnia wymagania określone dla zakresu podstawowego, a ponadto:

1. przy realizacji zespołowego projektu programistycznego posługuje się środowiskiem przeznaczonym do współpracy i realizacji projektów zespołowych, w tym środowiskiem w chmurze;

współtworzy zasoby udostępniane na pla ormach do e‑nauczania;

Kształtowane kompetencje kluczowe:

kompetencje obywatelskie;

kompetencje cyfrowe;

kompetencje osobiste, społeczne i w zakresie umiejętności uczenia się;

kompetencje matematyczne oraz kompetencje w zakresie nauk przyrodniczych, technologii i inżynierii.

Cele operacyjne (językiem ucznia):

Dowiesz się, jak zmierzyć temperaturę za pomocą czujnika TMP36.

Poznasz możliwości złącza analogowego.

Wyświetlisz na ekranie temperaturę zmierzoną za pomocą czujnika.

Strategie nauczania:

konstruktywizm;

konektywizm.

Metody i techniki nauczania:

dyskusja;

rozmowa nauczająca z wykorzystaniem multimedium i ćwiczeń interaktywnych.

Formy pracy:

praca indywidualna;

praca w parach;

praca w grupach;

praca całego zespołu klasowego.

Środki dydaktyczne:

komputery z głośnikami, słuchawkami i dostępem do internetu;

zasoby multimedialne zawarte w e‑materiale;

tablica interaktywna/tablica, pisak/kreda;

oprogramowanie Arduino IDE 1.8.12 (lub nowszej wersji);

moduł Arduino UNO Rev3 lub wybrany odpowiednik;

płytka Arduino Uno;

płytka stykowa;

kabel USB typu A‑B;

czujnik TMP36;

przewody i zworki połączeniowe.

Przebieg lekcji Przed lekcją:

(10)

1. Przygotowanie do zajęć. Nauczyciel loguje się na platformie i udostępnia e‑materiał: „Arduino – termometr”. Nauczyciel prosi uczniów o zapoznanie się z multimedium w sekcji „Prezentacja multimedialna”.

Faza wstępna:

1. Wyświetlenie przez nauczyciela tematu i celów lekcji. Określenie wiążących dla uczniów kryteriów sukcesu.

Faza realizacyjna:

1. Praca z tekstem. Nauczyciel ocenia, na podstawie informacji na platformie, stan przygotowania uczniów do zajęć. Jeżeli jest ono niewystarczające prosi o ciche zapoznanie się z treścią w sekcji „Przeczytaj”.

2. Praca z multimedium. Nauczyciel wyświetla zawartość sekcji „Prezentacja multimedialna”, czyta treść polecenia nr 1: „Zbuduj oraz zaprogramuj układ z dwoma czujnikami DS18B20 podłączonymi do jednego pinu płytki Arduino” i omawia kolejne kroki rozwiązania.

3. Ćwiczenie umiejętności. Nauczyciel przechodzi do sekcji „Sprawdź się”. Uczniowie indywidualnie rozwiązują ćwiczenia nr 1‑8 na czas. Osoba, która poprawnie rozwiąże zadania jako pierwsza, wygrywa, a nauczyciel może nagrodzić ją oceną za aktywność.

Faza podsumowująca:

1. Na koniec zajęć nauczyciel raz jeszcze wyświetla na tablicy temat lekcji i cele zawarte w sekcji „Wprowadzenie”. W odniesieniu do ich realizacji dokonuje szczegółowej oceny rozwiązania zastosowanego przez wybranego ucznia.

Praca domowa:

1. Uczniowie opracowują FAQ (minimum 3 pytania i odpowiedzi) do tematu lekcji („Arduino – termometr”).

Materiały pomocnicze:

Oficjalna dokumentacja techniczna dla projektu Arduino.

Wskazówki metodyczne:

Treści w sekcji „Prezentacja multimedialna” można wykorzystać jako materiał, służący powtórzeniu materiału.

Cytaty

Powiązane dokumenty

Rewolucja przemysłowa rozpoczęła się w Anglii. Nasuwa się pytanie, dlaczego właśnie tam, w jakich warunkach do tego doszło? Wielkie odkrycia geograficzne stały się bodźcem

Zapoznaj się ze sposobami doboru rezystora do diody LED, a następnie dobierz wartości rezystora dla diody żółtej oraz niebieskiej... Nagranie dostępne na portalu

Rzecznik Praw Dziecka stoi na straży praw dziecka, a szczególnie prawa do życia i ochrony zdrowia, prawa do wychowania w rodzinie, prawa do godziwych warunków socjalnych i prawa

Zabezpieczenie praw człowieka i obywatela stwarza potrzebę władzy publicznej (aparatu przymusu), władza ta zatem jest ustanowioną ku pożytkowi ogółu, nie zaś dla korzyści

Istnieje również jednoargumentowy operator negacji !.. Pierwsza pozwala wykonać alternatywny blok kodu, kiedy kryterium instrukcji warunkowej nie zostanie spełnione. Druga

Relewantność partii określana jest przez poziom poparcia wyborczego, potencjał koalicyjny (możliwość wchodzenia w koalicje rządowe) oraz potencjał szantażu

Warunek pętli sprawdzany jest na końcu, dlatego instrukcje zawarte w pętli wykonają się co najmniej jeden raz}.

Źródło: Vladimirov, Ivan Alekseevich, Stanford University, Hoover Ins tu on, Library&Archives.. Życie