Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Arduino Uno test, opinia, pierwsze uruchomienie. DHT22, BMP180, FFT LED RGB.

TechEkspert 16 Oct 2017 17:45 11151 18
phoenixcontact
  • Arduino Uno test, opinia, pierwsze uruchomienie. DHT22, BMP180, FFT LED RGB.
    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).
    Arduino Uno test, opinia, pierwsze uruchomienie. DHT22, BMP180, FFT LED RGB.
    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
    Log in, to see the code


    Arduino Uno test, opinia, pierwsze uruchomienie. DHT22, BMP180, FFT LED RGB.Arduino Uno test, opinia, pierwsze uruchomienie. DHT22, BMP180, FFT LED RGB.

    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.

    Arduino Uno test, opinia, pierwsze uruchomienie. DHT22, BMP180, FFT LED RGB.

    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
    Log in, to see the code


    Arduino Uno test, opinia, pierwsze uruchomienie. DHT22, BMP180, FFT LED RGB.

    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
    Log in, to see the code


    R4-C2 tworzą filtr dolnoprzepustowy dostosowujący pasmo sygnału wejściowego do częstotliwości próbkowania 8kHz.
    Arduino Uno test, opinia, pierwsze uruchomienie. DHT22, BMP180, FFT LED RGB.

    Jakie macie pomysły na wykorzystanie Arduino Uno?

    Cool? Ranking DIY
    Do you have a problem with Arduino? Ask question. Visit our forum Arduino.
    About Author
    TechEkspert
    Editor
    Offline 
    W moich materiałach znajdziecie testy i prezentacje sprzętu elektronicznego, modułów, sprzętu pomiarowego, eksperymenty. Interesuje mnie elektronika cyfrowa, cyfrowe przetwarzanie sygnałów, transmisje cyfrowe przewodowe i bezprzewodowe, kryptografia, IT a szczególnie LAN/WAN i systemy przechowywania i przetwarzania danych.
    Has specialization in: mikrokontrolery, rozwiązania it
    TechEkspert wrote 4916 posts with rating 3997, helped 12 times. Been with us since 2014 year.
  • phoenixcontact
  • #3
    siewcu
    Level 34  
    Pomysły takie jak na wszystkim innym, tu się ameryki nie odkryje ;) W zależności od potrzeb, choć to i tak raczej do zabaw hobbystycznych, albo jakichś prototypowych urządzeń. Ja bym chętnie na tym zrobił sterownik do ciśnieniowego ekspresu do kawy, przy odrobinie szczęścia można by było uczynić go dosyć mocno regulowanym - choć nie wszystkie tematy da się przeskoczyć.
  • phoenixcontact
  • #4
    TechEkspert
    Editor
    @piotr_go schemat typowy dla Arduino UNO, jedynie jako konwerter USB<->UART został zastosowany CH340,
    nie jestem fanem tego konwertera ale pewnie jego zastosowanie korzystnie wpływa na cenę, ja wolę np. CP2102 który można znaleźć np. w NodeMCU Amica z ESP8266.

    @siewcu do prototypowania, szybkich testów i eksperymentów te moduły nadają się bardzo dobrze, do użytkowników elektrody trafiło już trochę różnych modułów z gadżetów i różnych konkursów, później można spodziewać się różnych ciekawych materiałów w DIY i artykułach.
  • #5
    Mikroprocesorowiec
    Level 12  
    TechEkspert wrote:
    @piotr_go schemat typowy dla Arduino UNO, jedynie jako konwerter USB<->UART został zastosowany CH340,
    nie jestem fanem tego konwertera ale pewnie jego zastosowanie korzystnie wpływa na cenę, ja wolę np. CP2102

    Ja wole FTDI. Nigdy nie miałem z nimi problemu (od strony systemu) co w przypadku innych konwerterów nie jest takie oczywiste (zwłaszcza popularny PLxxxx). No i do FTDI moge dobrac sie przez biblioteki D2XX. Nie muszę znac nr wirtualnego COM, mało tego, wogóle taki COM może się nie pojawiać. Na i mam dostęp (nie we wszystkich FTDI) do pamięci EEPROM tego układu. Są wersje FTDI z IIC/SPI. No i VNC2. 2xUSB (także 2xHOST). Na VNC mozna pisac własne programy jak na ESP, więc w wielu przypadkach nie potrzeba mikrokontrolera.
  • #7
    piotr_go
    DIY electronics designer
    TechEkspert wrote:
    @piotr_go schemat typowy dla Arduino UNO, jedynie jako konwerter USB<->UART został zastosowany CH340,

    Schemat dla ludzi nie korzystających ze środowiska arduino, żeby pinout był pod ręką.
    Poza tym zastanawiałem się po co LM358? (już znalazłem)
  • #8
    Mikroprocesorowiec
    Level 12  
    Tomq wrote:
    CH340G jest mega tani i co ciekawe działa "od kopa". Kiedyś się bałem takich tanich modułów, ale skoro są popularne, to znaczy, że działają:) Konwertery oparte o FTDI mają dużo często niewykorzystywanych funkcji

    W rodzinie konwerterów należących do CH340, sa układy z SPI,IIC. Co prawda nie można dobrać sie do konfiguracji układu od strony mikrokontrolera jak w FTDI, ale szkoda, że nie użyto konwertera z SPI. Dzięki temu, cenny USART byłby do wykorzystania w dowolny sposób.
  • #9
    TechEkspert
    Editor
    @Mikroprocesorowiec zraziłem się do FTDI gdy uruchomili akcję psucia urządzeń opartych o podróbki FTDI,
    https://www.theregister.co.uk/2016/01/31/ftdi_accused_of_bricking_counterfeits_again/

    @piotr_go czy mógłbyś zalinkować jakiś czytelny i otwarty schemat arduino uno?
  • #10
    Mikroprocesorowiec
    Level 12  
    TechEkspert wrote:
    @Mikroprocesorowiec zraziłem się do FTDI gdy uruchomili akcję psucia urządzeń opartych o podróbki FTDI,
    https://www.theregister.co.uk/2016/01/31/ftdi_accused_of_bricking_counterfeits_again/

    Nie słyszałem o tym a to ciekawa informacja. Podobnie robi oprogramowanie SaleAE, ale jest na to sposób. Co do FTDI to na szczęście podrabiane są USB-USART, a ja używam USB-IIC/SPI i VNC2.
  • #13
    siewcu
    Level 34  
    Ja miałem kilka urządzeń z FT232, wszystkie z ChRL - a tam ponoć same podróbki. Sterowniki tylko i wyłącznie ze strony FTDI, nie miałem nigdy żadnych problemów, żadne urządzenie nie padło.
  • #14
    Mikroprocesorowiec
    Level 12  
    siewcu wrote:
    Ja miałem kilka urządzeń z FT232, wszystkie z ChRL - a tam ponoć same podróbki. Sterowniki tylko i wyłącznie ze strony FTDI, nie miałem nigdy żadnych problemów, żadne urządzenie nie padło.

    Ale jaki FT232? Może byc BL (tego jak nie podłączysz zewnętrznego eeprom to raczej nie da sie "zepsuć"), FT232RL ma eeprom wewnątrz, więc to już inna bajka. Nie sadzę, aby modyfikowany był sam program w FTDI (czy producent przewidział taka opcję, jeśli tak to nie koniecznie zadziała ona na podróbce), raczej modyfikowana zawartość eeprom (obszar MTP).
    Pytanie jakie dokładnie układy sa podrabiane? Czy najnowsze też? Jeśli już używam USB-UART to najczęściej FT230.
  • #15
    siewcu
    Level 34  
    RL. W większości właśnie w EEPROM grzebałem, z ciekawości ;)
  • #16
    Mikroprocesorowiec
    Level 12  
    siewcu wrote:
    RL. W większości właśnie w EEPROM grzebałem, z ciekawości ;)

    Znasz mapę pamięci?
    Możesz tam zmienić VID, PID, funkcje CBUS, itp. Obszar konfiguracji zabezpiecza CRC i w razie jest złe przywraca standard, ale jest blisko 1kB do dowolnego wykorzystania. Można tam trzymać informacje typu kod licencji, czas pracy itp. Część tego obszaru można zobaczyć w FT_PROG.
  • #17
    siewcu
    Level 34  
    Tylko mprog używałem, nic więcej mnie nie interesowało. Jakieś pierdoły z ciekawości jak coś potrzebowałem, tylko tyle.