W ramach trwającego konkursu konkursu na elektroda.pl jest szansa na zdobycie modułu Arduino Uno, moduł wyposażony jest w mikrokontroler ATMega328P taktowany rezonatorem kwarcowym 16MHz, zasilanie 5V. Na płytce znajduje się gniazdo USB-B pozwalające na zasilanie oraz komunikację (przesłanie programu ze środowiska Arduino, lub komunikacja z działającym programem). Gniazdo DC pozwala na zasilanie napięciem wyższym niż 5V (stabilizator AMS1117). Płytka wyposażona jest w konwerter USB<->UART co ułatwia integrację ze środowiskiem Arduino. Złącza na płytce pozwalają na podłączenie modułów rozszerzeń (shield). Na płytce znajdują się LEDy informujące o obecności zasilania, aktywności na liniach RX/TX interfejsu UART oraz LED połączona z wyprowadzeniem D13. Mikrokontroler i jego porty I/O pracują z napięciem 5V, dodatkowo wyprowadzone jest napięcie zasilające 3.3V jednak należy zadbać o konwersję poziomów logicznych dla układów zasilanych napięciem innym niż 5V. Na płytce Arduino Uno znajduje się przycisk reset, złącze ISP pozwala na umieszczenie programu z wykorzystaniem programatora, wykorzystując ISP można zmienić ustawienia fusebit mikrokontrolera (np. zmiana źródła taktowania na wewnętrzny generator RC) a nawet zrezygnować z bootloadera lub środowiska Arduino i przesłać skompilowany kod napisany w np. w Atmel Studio 7.0. Zastosowano konwerter USB<->UART CH340 i jeżeli nie posiadamy w systemie sterownika, to są one dostępne na stronie producenta:
informacje o CH340
dokumentacja
sterowniki Windows
Sterowniki Linux
Jeżeli sterownik zostanie zainstalowany prawidłowo to po podłączeniu modułu w systemie pojawi się nowy szeregowy port COM.
Pobieramy aktualną wersję środowiska Arduino, (obecnie 1.8.4),
następnie tworzymy nowy program (szkic) i wybieramy płytkę Arduino/Genuino Uno:
Narzędzia-> Płytka->Arduino/Genuino Uno
Następnie:
Narzędzia-> Port-> i wybieramy port COM na którym znajduje się podłączona do USB płytka.
Schemat Arduino Uno - źródło.
Do pierwszych prób migania diodą można wykorzystać programy przykładowe z materiału o Arduino nano. znajdziecie tam przykłady jak migać LED, jak płynnie zmieniać jasność LED oraz jak migać LED RGB w rytm muzyki.
Czujnik wilgotności i temperatury AM2302 (DHT22)
Czujnik AM2302 może pracować z napięciami 3.3-5.5V posiada 4 wyprowadzenia (jedno niewykorzystywane). Trzy wyprowadzenia wykorzystane są jako zasilanie (1), transmisja danych (2), oraz masa (4), więcej znajdziecie w nocie katalogowej: AM2302.
Pin wykorzystywany do transmisji danych należy połączyć z zasilaniem poprzez rezystor 5.1kom, DHT22 często występuje jako moduł zamontowany na płytce z trzema wyprowadzeniami, zwykle na płytce znajduje się rezystor podciągający pin "data" do "+" dlatego w przypadku modułu do połączenia z Arduino wystarczą tylko trzy przewody (zasilanie, dane, masa).
Długość przewodów połączeniowych może sięgać nawet do 20 metrów. Pomiar wilgotności względnej w zakresie 0-99.9% wykonywany jest z rozdzielczością 0.1% i dokładnością +-2% w temperaturze 25 stopni C (błąd rośnie przy niskiej i wysokiej wilgotności). Pomiar temperatury w zakresie -40 do 80 stopni z rozdzielczością 0.1 stopnia C i dokładnością +-0.5 stopnia.
W przykładzie wykorzystamy wyprowadzenie cyfrowe "2" Arduino do podłączenia linii danych DHT22.
Aby ułatwić sobie pracę wykorzystamy bibliotekę do obsługi czujnika:
Szkic->Zarządzaj bibliotekami->Menadżer bibliotek
Wyszukujemy frazę "dht" i wybieramy "SimpleDHT by Winlin"
Więcej informacji o bibliotece tutaj: https://github.com/winlinvip/SimpleDHT
Poniżej przykładowy kod pobierający dane z czujnika, po jego uruchomieniu w monitorze portu szeregowego zobaczymy informacje o temperaturze i wilgotności:

Czujnik wilgotności w okresie grzewczym może pomóc w decyzji o uruchomieniu nawilżacza powietrza. Czujnik wystawiony na zewnątrz mieszkania może pomóc w prognozowaniu pogody, duży wzrost wilgotności przy spadku ciśnienia może oznaczać naciągającą burzę.
Czujnik temperatury i ciśnienia BMP180
Czujnik pozwala na pomiar temperatury i ciśnienia, wykorzystany interfejs I2C, napięcie zasilania 1.8-3.6V więcej w nocie aplikacyjnej: BMP180. Czujnik zamontowany na płytce GY-68 posiada dodatkowe elementy elektroniczne ułatwiające podłączenie czujnika z Arduino Uno. Wyprowadzenie GND łączymy z masą, VIN z wyjściem 3.3V płytki Arduino, linie magistrali I2C do odpowiednio SDA i SCL.
Dołączamy bibliotekę do obsługi czujnika BMP180:
Szkic->Zarządzaj bibliotekami->Menadżer bibliotek
Wyszukujemy frazę "BMP085" i wybieramy "Adafruit BMP085 Unified by Adafruit"
Więcej informacji o bibliotece tutaj: https://github.com/adafruit/Adafruit_BMP085_Unified
Przykładowy kod pozwalający na wyświetlenie danych z czujnika w monitorze portu szeregowego:
Obserwacja zmian ciśnienia może pomóc w prognozowaniu pogody, systematyczny spadek ciśnienia może świadczyć o nadchodzącym pogorszeniu pogody i opadach, systematyczny wzrost ciśnienia może prognozować pogodę słoneczną i brak opadów. Szybkie zmiany ciśnienia (od 4hPa w ciągu 3 godzin) mogą świadczyć o nachodzących wiatrach o sile zależnej od gwałtowności zmian ciśnienia. Jest też coś takiego jak ciśnienie "normalne" dla danej lokalizacji (zależy wysokości n.p.m), w oparciu o tą wartość można wykonać prosty sposób prognozowania jeżeli ciśnienie odczytane z czujnika oscyluje +-10hPa w okolicach ciśnienia "normalnego" to można spodziewać się zachmurzenia/umiarkowanej pogody, jeżeli ciśnienie odczytane jest wyższe o więcej niż 10hPa od "normalnego" to prognozujemy słoneczną pogodę, natomiast mniejsze o 10hPa od "normalnego" prognozuje opady deszczu/śniegu. Ciśnienie normalne wynosi 1013,25hPa na wysokości 0n.p.m dla swojej miejscowości możecie obliczyć ciśnienie "normalne" z wykorzystaniem wzoru barometrycznego tutaj online: http://www.altitude.org/air_pressure.php możecie policzyć ciśnienie "normalne" na określonej wysokości w warunkach normalnych.
Kolorofon LED RGB wykorzystanie FFT
Wykonajmy analizę FFT sygnału z mikrofonu dostarczonego na wejście ADC A0 Arduino. Wyniki transformacji FFT pozwolą na wysterowanie w rytm muzyki diody RGB z wykorzystaniem PWM (R-pin5, G-pin9, B-pin6). Dokładny opis FFT znajdziecie tutaj: FFT na ESP32 i Arduino.
Na Arduino uno będziemy próbkować sygnał wyjściowy z częstotliwością 8kHz co pozwoli na analizę częstotliwości do 4kHz, długość bufora próbek dla FFT będzie wynosić 32 co w wyniku da 16 punktów wyniku FFT. Do środowiska Arduino należy dodać bibliotekę "arduinoFFT". Na poniższym filmie widoczna jest reakcja na przykładową muzykę:Link
Poniżej testowy kod z którym możecie eksperymentować np. uzależniając stopień wypełnienia PWM od wybranych różnych częstotliwości:
R4-C2 tworzą filtr dolnoprzepustowy dostosowujący pasmo sygnału wejściowego do częstotliwości próbkowania 8kHz.
Jakie macie pomysły na wykorzystanie Arduino Uno?
informacje o CH340
dokumentacja
sterowniki Windows
Sterowniki Linux
Jeżeli sterownik zostanie zainstalowany prawidłowo to po podłączeniu modułu w systemie pojawi się nowy szeregowy port COM.
Pobieramy aktualną wersję środowiska Arduino, (obecnie 1.8.4),
następnie tworzymy nowy program (szkic) i wybieramy płytkę Arduino/Genuino Uno:
Narzędzia-> Płytka->Arduino/Genuino Uno
Następnie:
Narzędzia-> Port-> i wybieramy port COM na którym znajduje się podłączona do USB płytka.
Schemat Arduino Uno - źródło.
Do pierwszych prób migania diodą można wykorzystać programy przykładowe z materiału o Arduino nano. znajdziecie tam przykłady jak migać LED, jak płynnie zmieniać jasność LED oraz jak migać LED RGB w rytm muzyki.
Czujnik wilgotności i temperatury AM2302 (DHT22)
Czujnik AM2302 może pracować z napięciami 3.3-5.5V posiada 4 wyprowadzenia (jedno niewykorzystywane). Trzy wyprowadzenia wykorzystane są jako zasilanie (1), transmisja danych (2), oraz masa (4), więcej znajdziecie w nocie katalogowej: AM2302.
Pin wykorzystywany do transmisji danych należy połączyć z zasilaniem poprzez rezystor 5.1kom, DHT22 często występuje jako moduł zamontowany na płytce z trzema wyprowadzeniami, zwykle na płytce znajduje się rezystor podciągający pin "data" do "+" dlatego w przypadku modułu do połączenia z Arduino wystarczą tylko trzy przewody (zasilanie, dane, masa).

Długość przewodów połączeniowych może sięgać nawet do 20 metrów. Pomiar wilgotności względnej w zakresie 0-99.9% wykonywany jest z rozdzielczością 0.1% i dokładnością +-2% w temperaturze 25 stopni C (błąd rośnie przy niskiej i wysokiej wilgotności). Pomiar temperatury w zakresie -40 do 80 stopni z rozdzielczością 0.1 stopnia C i dokładnością +-0.5 stopnia.
W przykładzie wykorzystamy wyprowadzenie cyfrowe "2" Arduino do podłączenia linii danych DHT22.
Aby ułatwić sobie pracę wykorzystamy bibliotekę do obsługi czujnika:
Szkic->Zarządzaj bibliotekami->Menadżer bibliotek
Wyszukujemy frazę "dht" i wybieramy "SimpleDHT by Winlin"
Więcej informacji o bibliotece tutaj: https://github.com/winlinvip/SimpleDHT
Poniżej przykładowy kod pobierający dane z czujnika, po jego uruchomieniu w monitorze portu szeregowego zobaczymy informacje o temperaturze i wilgotności:
Code: c


Czujnik wilgotności w okresie grzewczym może pomóc w decyzji o uruchomieniu nawilżacza powietrza. Czujnik wystawiony na zewnątrz mieszkania może pomóc w prognozowaniu pogody, duży wzrost wilgotności przy spadku ciśnienia może oznaczać naciągającą burzę.
Czujnik temperatury i ciśnienia BMP180
Czujnik pozwala na pomiar temperatury i ciśnienia, wykorzystany interfejs I2C, napięcie zasilania 1.8-3.6V więcej w nocie aplikacyjnej: BMP180. Czujnik zamontowany na płytce GY-68 posiada dodatkowe elementy elektroniczne ułatwiające podłączenie czujnika z Arduino Uno. Wyprowadzenie GND łączymy z masą, VIN z wyjściem 3.3V płytki Arduino, linie magistrali I2C do odpowiednio SDA i SCL.

Dołączamy bibliotekę do obsługi czujnika BMP180:
Szkic->Zarządzaj bibliotekami->Menadżer bibliotek
Wyszukujemy frazę "BMP085" i wybieramy "Adafruit BMP085 Unified by Adafruit"
Więcej informacji o bibliotece tutaj: https://github.com/adafruit/Adafruit_BMP085_Unified
Przykładowy kod pozwalający na wyświetlenie danych z czujnika w monitorze portu szeregowego:
Code: c

Obserwacja zmian ciśnienia może pomóc w prognozowaniu pogody, systematyczny spadek ciśnienia może świadczyć o nadchodzącym pogorszeniu pogody i opadach, systematyczny wzrost ciśnienia może prognozować pogodę słoneczną i brak opadów. Szybkie zmiany ciśnienia (od 4hPa w ciągu 3 godzin) mogą świadczyć o nachodzących wiatrach o sile zależnej od gwałtowności zmian ciśnienia. Jest też coś takiego jak ciśnienie "normalne" dla danej lokalizacji (zależy wysokości n.p.m), w oparciu o tą wartość można wykonać prosty sposób prognozowania jeżeli ciśnienie odczytane z czujnika oscyluje +-10hPa w okolicach ciśnienia "normalnego" to można spodziewać się zachmurzenia/umiarkowanej pogody, jeżeli ciśnienie odczytane jest wyższe o więcej niż 10hPa od "normalnego" to prognozujemy słoneczną pogodę, natomiast mniejsze o 10hPa od "normalnego" prognozuje opady deszczu/śniegu. Ciśnienie normalne wynosi 1013,25hPa na wysokości 0n.p.m dla swojej miejscowości możecie obliczyć ciśnienie "normalne" z wykorzystaniem wzoru barometrycznego tutaj online: http://www.altitude.org/air_pressure.php możecie policzyć ciśnienie "normalne" na określonej wysokości w warunkach normalnych.
Kolorofon LED RGB wykorzystanie FFT
Wykonajmy analizę FFT sygnału z mikrofonu dostarczonego na wejście ADC A0 Arduino. Wyniki transformacji FFT pozwolą na wysterowanie w rytm muzyki diody RGB z wykorzystaniem PWM (R-pin5, G-pin9, B-pin6). Dokładny opis FFT znajdziecie tutaj: FFT na ESP32 i Arduino.
Na Arduino uno będziemy próbkować sygnał wyjściowy z częstotliwością 8kHz co pozwoli na analizę częstotliwości do 4kHz, długość bufora próbek dla FFT będzie wynosić 32 co w wyniku da 16 punktów wyniku FFT. Do środowiska Arduino należy dodać bibliotekę "arduinoFFT". Na poniższym filmie widoczna jest reakcja na przykładową muzykę:Link
Poniżej testowy kod z którym możecie eksperymentować np. uzależniając stopień wypełnienia PWM od wybranych różnych częstotliwości:
Code: c
R4-C2 tworzą filtr dolnoprzepustowy dostosowujący pasmo sygnału wejściowego do częstotliwości próbkowania 8kHz.

Jakie macie pomysły na wykorzystanie Arduino Uno?
Cool? Ranking DIY