Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Europejski lider sprzedaży techniki i elektroniki.
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Arduino nano - pierwsze uruchomienie, test, opinia.

TechEkspert 19 Wrz 2017 00:21 3441 18
  • Arduino nano - pierwsze uruchomienie, test, opinia.
    Niebawem na elektroda.pl pojawi się moduł Arduino nano wyposażony w mikrokontroler ATMega328P taktowany rezonatorem kwarcowym 16MHz, zasilanie napięciem 5V z portu USB. Płytka wyposażona jest w konwerter USB<->UART co ułatwia umieszczanie programu ze środowiska Arduino. 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 zasilany jest napięciem 5V i na takich poziomach logicznych pracują porty płytki, należy o tym pamiętać gdyż niektóre moduły tolerują na interfejsach wyłącznie napięcia 0-3.3V. Na płytce Arduino nano znajduje się także stabilizator 5V (wejście zasilania >5V na pinie VIN), dostępny jest też przycisk reset. Złącze ISP pozwala na umieszczenie programu z wykorzystaniem programatora, wykorzystując ISP można nawet zrezygnować z bootloadera lub środowiska Arduino i przesłać skompilowany kod napisany w np. w Atmel Studio 7.0. Poprzez złącze ISP możemy zmienić ustawienia mikrokontrolera (fusebits). Konwerter USB<->UART to 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.

    Integrację z płytką rozpoczynamy od pobrania środowiska Arduino, aktualna wersja to 1.8.4
    Tworzymy nowy program (szkic) i wybieramy płytkę Arduino nano:
    Narzędzia-> Płytka->Arduino nano
    Następnie:
    Narzędzia-> Port-> i wybieramy port COM na którym znajduje się podłączona do USB płytka.

    W ramach przykładu przejdziemy od banalnego migania LED do sterowania LED w rytm muzyki.

    Miganie diodą.
    Aby sprawdzić czy wszystko działa poprawnie, uruchomimy program który będzie migał LED na płytce (D13) oraz LED podłączonym anodą do wyprowadzenia D2, katoda LED poprzez rezystor 220R do masy (GND) na płytce stykowej. Stan diody zmienimy przy pomocy digitalWrite(numer_pinu, LOW/HIGH)




    Arduino nano - pierwsze uruchomienie, test, opinia.
    Kompilujemy i wgrywamy program:
    Kod: c
    Zaloguj się, aby zobaczyć kod


    W efekcie mamy migające diody a szybkość migania możemy zmienić poprzez modyfikację wartości opóźnienia:
    delay(1000);


    Migająca LED ze zmianą jasności świecenia.
    Aby zmienić jasność świecenia LED podczas migania możemy wykorzystać PWM przy pomocy analogWrite(numer_pinu, wartość 0-255).

    Podłączamy LED do D3 oraz poprzez rezystor 220R do masy, kompilujemy i wgrywamy prosty program:
    Kod: c
    Zaloguj się, aby zobaczyć kod


    W efekcie uzyskujemy płynne zmiany jasności świecenia LED.


    Migająca LED RGB.
    Do D3, D5, D6 podłączmy poprzez rezystory 220R katody LED GRB, a wspólną anodę do +5V i przy pomocy PWM możemy płynnie mieszać barwy światła. Ponieważ LED podłączona jest anodą do +5V wypełnienie PWM 255 będzie oznaczało wygaszenie LED.
    Arduino nano - pierwsze uruchomienie, test, opinia.
    Kod: c
    Zaloguj się, aby zobaczyć kod




    LED RGB migająca w rytm muzyki.
    W dość popularnym temacie o LED migającym w rytm muzyki: FAQ LED migająca w rytm muzyki można znaleźć wiele pomysłów na układy analogowe, korzystając z Arduino możemy eksperymentować zmieniając kod programu aby uzyskać układ reagujący na dźwięk. Możemy też wykorzystać wiedzę z tematu o LED migającym w rytm muzyki i zastosować wzmacniacz mikrofonowy, który zwiększy czułość i poda sygnał na wejście ADC na płytce Arduino nano. Wykorzystajmy analogRead(A0) i odczytajmy wartość sygnału podanego z mikrofonu na wejście ADC A0. Dioda zielona (D3) będzie migała w rytm muzyki a dla najgłośniejszych fragmentów zaświeci się dioda czerwona (D5). Wykorzystamy bufor w pamięci RAM do przechowywania poprzednich próbek, ustalania maksimum i minimów głośności oraz dostosowywania czułości reakcji do aktualnego głośności dźwięku. do testu wykorzystamy przykładową muzykę:Link
    Arduino nano - pierwsze uruchomienie, test, opinia.
    Kod: c
    Zaloguj się, aby zobaczyć kod




    Linijka LED reagująca na dźwięk.
    Tym razem do wyprowadzeń D2, D3, D4, D5, D6, D7, D8, D9 podłączymy LEDy poprzez rezystory do GND i zasymulujemy działanie linijki LED reagującej na sygnał podany na wejście A0. Do przetestowania programu wykorzystamy przykładową muzykę: Link
    Arduino nano - pierwsze uruchomienie, test, opinia.
    Kod: c
    Zaloguj się, aby zobaczyć kod




    Miniaturowy moduł Arduino nano może przydać się do wielu układów eksperymentalnych, prototypowych natomiast liczne przykłady i biblioteki ułatwią realizację swoich pomysłów. Tutaj dwa przykłady wykorzystania Arduino do rejestrowania danych na karcie SD oraz we wbudowanej pamięci EEPROM:
    Tygodniowy pomiar częstotliwości napięcia sieciowego - eksperyment.
    Rejestracja tętna podczas snu - Arduino nano.

    Zachęcam do eksperymentów z przykładowymi kodami programów, dość ciekawym narzędziem w wizualizacji dźwięku może być FFT szczególnie na platformie ESP8266 lub ESP32 wspierającej Arduino i wyposażonej w szybszy procesor oraz więcej pamięci RAM, warto zajrzeć do: FFT w praktyce z wykorzystaniem ESP32 i Arduino. Moduły z ESP8266 pojawiały się już w gadżetach elektroda.pl warto sprawdzić czy może pojawiły się ponownie.

    Jaki masz pomysł na wykorzystanie Arduino nano?

    Arduino nano - pierwsze uruchomienie, test, opinia.


    Fajne!
  • #2 19 Wrz 2017 03:58
    pawelr98
    Poziom 34  

    Jeszcze jedna przydatna informacja.

    Płytkę można zasilać napięciem do 15V.

    Jak widać na pokładzie mamy AMS1117-5.0 który to jest stabilizatorem LDO 5V.

    Wejście tego stabilizatora jest wyprowadzone na jeden z pinów oznaczony jako Vin(tuż koło ISP).

    Mam identycznego Nano z chin. Koszt 10.5 zł.

  • #3 19 Wrz 2017 11:08
    lukaszd82
    Poziom 17  

    Witam,
    AMS1117-5.0 ma zasilanie do 15V wg noty katalogowej. Dodatkowo ja takie nano z Chin ściągałem po 6,5-7zł przy zakupie pojedynczych sztuk. (1,93$ Link. Ja kupowałem po 1,78$...

  • #4 19 Wrz 2017 11:55
    TechEkspert
    Redaktor

    Dziękuję za podpowiedź, dodałem informację o wejściu VIN umożliwiającym zasilanie napięciem >5V.

  • #5 19 Wrz 2017 12:03
    lukaszd82
    Poziom 17  

    jak dobrze pamiętam to tą płytkę należy zasilić napięciem Vin 6,5-15V by ten stabilizator dawał 5V.

  • #6 19 Wrz 2017 18:51
    pawelr98
    Poziom 34  

    lukaszd82 napisał:
    Witam,
    AMS1117-5.0 ma zasilanie do 15V wg noty katalogowej.


    Już poprawiłem w swoim poście aby nie było zamieszania.Pomyliłem z LM1117 który ma 20V.

    A co do zastosowań to Arduino można nawet zastosować jako prymitywny oscyloskop.Projekt do znalezienia w google.

    Pasmo bardzo ubogie i wejście maksymalnie 5V ale za kilka zł nic lepszego się nie dostanie.

    Ja zamierzam swoje arduino wykorzystać jako sterownik tyrystora.

    Wyliczanie punktu zapłonu za pomocą metod numerycznych.

    Projekt bardziej jako praktyczne wykorzystanie wiedzy ze studiów.

  • #7 19 Wrz 2017 19:00
    rafcio_21
    Poziom 26  

    Ja zamierzam wykorzystać nano w połączeniu z modemem M590 zrobić sterowanie za pomocą sms i dodatkowo powiadomienie sms z alarmu satel ca10 . Obecnie testuje i dopracowywuję kod .

  • #8 19 Wrz 2017 19:46
    lukaszd82
    Poziom 17  

    Można dostać coś lepszego: STM32F103C8T6. Wydajność i możliwości o wiele większe. Cena ok 6,50zł. na Ali, można programować z Arduino IDE. Właśnie testuję. Zamówiłem 2 sztuki. Wydajność nawet do 10x większa niż Arduino nano na Atmega32. Niekiedy minusem jest logika na 3,3v oraz trochę mniej bibliotek, ale trzeba się uczyć nowości. Tym bardziej przy porównywalnej cenie.

  • #9 19 Wrz 2017 22:07
    tronics
    Poziom 35  

    U mnie węzeł MySensors z NRF24L01+ (i HC-SR501 + dimmer pasków led 5050 żeby zrealizować fade in i fade out by nie oślepiać w nocy, inny węzeł z RGB i MFRC522). Na STM32F103 może też po jakiś przeróbkach biblioteki by ruszyły więc jest to warte sprawdzenia jeśli znajdę jakieś dobrej jakości źródło takich modułów.

  • #10 19 Wrz 2017 22:59
    TechEkspert
    Redaktor

    @pawelr98 efekty eksperymentów z wyzwalaniem tyrystora warto wrzucić do DIY lub artykułów.

    @lukaszd82 dobrze byłoby zaprezentować osiągnięte rezultaty na STM, dobre urozmaicenie od Microchipowych ARM i AVR, logika 3.3 np. dla mnie jest zaletą - łatwe podłączenie karty SD, wyświetlaczy TFT/OLED/LCD oraz wielu czujników.

    @tronics ten dimer LED to jakiś specjalizowany PWM sterowany po np. SPI czy wykorzystałeś wyjścia PWM ATMega?

  • #11 19 Wrz 2017 23:14
    tronics
    Poziom 35  

    @TechEkspert - to już jest kwestia jak się skonfiguruje, jeśli chcemy sprzętowy ładny PWM to wyjścia PWM, jeśli nie przeszkadza nam, że czasem coś nie do końca tak płynnie będzie działać to na dowolnym pinie można w Arduino mieć programowy PWM. Element wykonawczy to IRLZ44N więc można nawet dość długie paski stosować. Jest to do nocnego/zimowego oświetlenia korytarza i schodów - nagłe załączenie na 100% gdy oczy są zaadaptowane do ciemności miłe nie jest, a metrowe kawałki taśmy za mleczną osłoną ładnie się zapalają stopniowo w sekwencji (zależnie czy wchodzimy czy schodzimy).

  • #12 21 Wrz 2017 03:34
    pawelr98
    Poziom 34  

    TechEkspert napisał:
    @pawelr98 efekty eksperymentów z wyzwalaniem tyrystora warto wrzucić do DIY lub artykułów.


    Jak dostanę płytkę stykową to sprawdzę. Oscyloskop mam więc dokumentacja działania obwodu nie nastręczy problemów. Ot pomiar napięcia z dzielnika napięcia a następnie na tej podstawie wyliczanie punktu zapłonu w celu uzyskania odpowiedniego napięcia szczytowego/mocy. Zapłon przy podanym napięciu szczytowym pozwoli zaoszczędzić trochę na transformatorach.

    Mam jeszcze Raspberry Pi3 ale kupiłem arduino ze względu na wbudowany przetwornik analogowo-cyfrowy oraz możliwość programowania z pominięciem systemu operacyjnego.

    Na Raspberry Pi 3 pisałem już proste programy w C ale mimo wszystko trzeba to uruchamiać w systemie operacyjnym.
    Zazwyczaj poprzez Wi-Fi łączę się przez SSH i za pomocą komputera PC wyzwalam programy.

    A tak mogę to zrobić autonomicznie.

    Do tego ewentualny "wypadek" nie będzie tak bolał(finansowo). Arduino kosztuje 10zł lub mniej, Raspberry Pi3 w okolicach 160zł.

    Dla mnie konwersja logiki z 5V na 3.3V nie jest dużym problemem. 3 diody 1N4148 lub inne krzemowe impulsowe(4 jeśli spadek napięcia na diodzie jest za mały) w obu kierunkach i nie ma problemu.

  • #13 21 Wrz 2017 22:26
    krzbor
    Poziom 14  

    Myślę, że lepszym rozwiązaniem jest Arduino Pro Mini. Na Ali za $1.45. Są wersje 16MHz 5V i 8MHz 3.3V. To Arduino nie posiada USB, można go wygodniej programować poprzez konwerter oparty o FTDI (ft232). Jest też oczywiście mniejszy.

  • #14 21 Wrz 2017 23:09
    TechEkspert
    Redaktor

    @krzbor Arduino mini pro jest bardzo dobre do pewnych zastosowań, łatwo uzyskać niski pobór prądu (dodatkowo likwidując LED power), w wersji 8MHz pracuje z 3.3V co umożliwia podłączanie bezpośrednio urządzeń z logiką 3.3V dla mnie to uproszczenie podłączenia np. karty SD, OLED itp.
    Natomiast każde rozwiązanie ma swoje zastosowanie, np. Arduino nano posiada wbudowany konwerter USB<->UART co niweluje konieczność podłączania dodatkowych urządzeń zewnętrznych, wystarczy zwykły kabel USB i już mamy zasilanie i komunikację, do przenośnych układów testowych zasilanie z USB / power bank to zaleta. Wadą może być taktowanie 16MHz gdyż oficjalnie dla stabilnej pracy wymaga zasilania 5V, oczywiście można zasilić 3.3V i np. zmienić taktowanie na wewntrzny generator RC 8MHz podłączając się pod złącze ISP, ale wygodniej do eksperymentów mieć Arduino nano 5V 16MHz i mini pro 3.3V 8MHz.

  • #15 23 Wrz 2017 09:50
    TechEkspert
    Redaktor
  • #16 28 Wrz 2017 05:23
    pawelr98
    Poziom 34  

    Jedna mała porada dla tych co mają zamiar korzystać z ADC wbudowanego w płytkę.

    Jest tam kilka trybów pracy.

    Domyślny- wpisujemy analogReference(DEFAULT) albo nic nie wpisujemy
    W tym trybie za napięcie odniesienia służy szyna zasilająca +5V.

    Przy zasilaniu przez USB napięcie potrafiło mi spaść do jakichś 4.7V. Same arduino działa wciąż normalnie ale pływanie szyny nie pozwalało na żaden stabilny pomiar.
    Jeżeli mamy w miarę stabilne zasilanie +5V (choćby użycie wlutowanego AMS1117) to można od biedy skorzystać.

    Na szczęście Atmega 328P posiada wbudowane napięcie odniesienia.
    Wynosi ono 1.1V i aktywowane jest komendą analogReference(INTERNAL).

    W tym wypadku NIE NALEŻY podłączać żadnego innego napięcia na ten pin bo zwarcie uszkodzi układ.

    Ostatnią opcją jest analogReference(EXTERNAL). W tym wypadku podajemy napięcie odniesienia na pin REF. Napięcie musi być w widełkach 0-5V.

    I ostatnia rada. Do testowania kupiłem za parę zł płytkę stykową.

    Jeżeli ktoś ma zamiar robić na niej pomiary to odradzam.

    1.1V było jak dla mnie za niskie więc zastosowałem układ 1431 (2.5V ±0.4%, takie bardziej precyzyjne TL431). Przy płytce napięcie odniesienia pływało skokowo o nawet 100mV.

    Jako rozwiązanie zastosowałem przylutowanie rezystora 300Ω między +5V a pinem REF na stałe.
    Dzięki temu zasilanie układu odniesienia jest stabilne. Wciąż pływa minimalnie ale odczyt napięcia przykładowej baterii AA zmienia się maksymalnie o jedną jednostkę(napięcie odniesienia podzielone przez 1024).
    Do tego wpiąć kondensator pomiędzy masę a pin REF.

    Samo ADC wydaje się być dosyć dokładne.

    Dla tych co nie lubią modyfikować zdecydowanie polecam użycie wewnętrznego źródła napięcia.Mniej roboty ale za to zakres wejściowy ADC jest ograniczony do 1.1V.

  • #17 29 Wrz 2017 20:23
    TechEkspert
    Redaktor

    Dzięki za podpowiedź, analogReference(INTERNAL) wykorzystałem w przykładach sygnałem z mikrofonu, zakres pracy ADC 0-1.1V pozwolił na większą czułość układu, a w układzie testowym ew. przesterowaniem nie musiałem się przejmować.
    Ale np. w przykładzie z czujnikiem tętna mimo że amplituda sygnału użytecznego była niewielka to składowa stała zawierała się od 0V do + zasilania... Wprawdzie rozdzielczość przy Vref 5V okazała się wystarczająca, ale prosta sztuczka z usunięciem składowej stałej i wykorzystaniem Vref 1.1V mogłaby polepszyć czułość układu.

  • #18 30 Wrz 2017 13:55
    piotr_wik
    Poziom 9  

    Potrzebuję coś jeszcze do zaprogramowania tego czy zestaw ze sklepiku to wszystko co jest niezbędne?

  • #19 30 Wrz 2017 15:27
    pawelr98
    Poziom 34  

    piotr_wik napisał:
    Potrzebuję coś jeszcze do zaprogramowania tego czy zestaw ze sklepiku to wszystko co jest niezbędne?

    Zestaw zawiera wszystko co potrzebne.

    Podpinasz Arduino do komputera za pomocą dołączonego kabla USB.
    Potem instalujesz sterownik (podany w pierwszym poście tego tematu).
    Uruchamiasz Arduino IDE, wybierasz stosowny port COM (numer portu można odczytać w menadżerze urządzeń) i możesz programować.

TME logo Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME
TME Logo