Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Arduino nano - pierwsze uruchomienie, test, opinia.

TechEkspert 19 Sep 2017 00:21 12642 24
Optex
  • 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:
    Code: c
    Log in, to see the code


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


    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.
    Code: c
    Log in, to see the code




    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.
    Code: c
    Log in, to see the code




    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.
    Code: c
    Log in, to see the code




    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.

    Cool? Ranking DIY
    Can you write similar article? Send message to me and you will get SD card 64GB.
    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: elektronika, mikrokontrolery, rozwiązania it
    TechEkspert wrote 3867 posts with rating 3282, helped 12 times. Been with us since 2014 year.
  • Optex
  • #2
    pawelr98
    Level 39  
    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
    lukaszd82
    Level 30  
    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
    TechEkspert
    Editor
    Dziękuję za podpowiedź, dodałem informację o wejściu VIN umożliwiającym zasilanie napięciem >5V.
  • #5
    lukaszd82
    Level 30  
    jak dobrze pamiętam to tą płytkę należy zasilić napięciem Vin 6,5-15V by ten stabilizator dawał 5V.
  • #6
    pawelr98
    Level 39  
    lukaszd82 wrote:
    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.
  • Optex
  • #8
    lukaszd82
    Level 30  
    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
    tronics
    Level 38  
    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
    TechEkspert
    Editor
    @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
    tronics
    Level 38  
    @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
    pawelr98
    Level 39  
    TechEkspert wrote:
    @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
    krzbor
    Level 23  
    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
    TechEkspert
    Editor
    @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.
  • #16
    pawelr98
    Level 39  
    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
    TechEkspert
    Editor
    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
    piotr_wik
    Level 10  
    Potrzebuję coś jeszcze do zaprogramowania tego czy zestaw ze sklepiku to wszystko co jest niezbędne?
  • #19
    pawelr98
    Level 39  
    piotr_wik wrote:
    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ć.
  • #20
    pikarel
    Level 35  
    Przy obecnej wersji Arduino 1.8.9 aby załadować kompilację do Nano należy wybrać procesor:
    ATmega328P (OldBootloader).
  • #21
    dany1002
    Level 10  
    Witam. Wiem że pewnie głupie pytanie ale stawiam pierwsze kroki ;-) czy jest możliwość przerobienia szkicu z arduino uno do arduino nano? Konkretnie chodzi mi o przxeróbkę szkicu ambilighta do TV na ledach 2812b szkic mam pod UNO a chiałem przerobić pod nano. Czy ktoś coś? Dzięki i sory za pewnie głupie pytanie. A konkretnie z tego linku https://drive.google.com/file/d/0BxKP...
  • #22
    Karaczan
    Level 41  
    Nic nie musisz przerabiać. Obie płytki mają ten sam procesor.
  • #23
    pustan
    Level 19  
    Koledzy pomóżcie.

    Arduino nano. Pobrane środowisko arduino. Zainstalowane. Wybrana płytka, procesor, port. Wybrany program pierwszy, czyli miganie diody LED. Skompilowany, wgrany do uno. Błędów brak. I co dalej ? Programowałem i programuje AVRy, PICe tu zaczynam z płytką nano. Tam był jakiś zawsze przycisk start, run lub podanie napięcia zasilania.
    Przeglądałem wiele opisów jak zaprogramować uno. Brakuje wszędzie jednego zdania.
    Procesor zaprogramowany i co dalej. W tym momencie dioda ma mrugać, czy trzeba jeszcze coś zrobić by to ruszyło. Mogę wyjść ze środowiska a dioda będzie mrugać. Czy jak podam zasilanie nie po USB a do schelda zasilaczem zewnętrznym to ruszy i dioda będzie mrugać?
    Moja płytka dla nano.

    Arduino nano - pierwsze uruchomienie, test, opinia.


    Pozdrawiam.
  • #24
    tronics
    Level 38  
    Jak wiesz jak działa mikrokontroler to jest to co najmniej dziwne pytanie. Środowisko Arduino łączy się z płytką w 2 celach, gdy wykorzystuje bootloader do załadowania programu (czyli po załadowaniu JUŻ NIE i niczym nie steruje) oraz gdy załączymy terminal na wybranym porcie COM (a mikrokontroler jest zaprogramowany by coś nadawać lub coś odbierać i to interpretować). Co za tym idzie po zaprogramowaniu możesz wyłączyć IDE i będzie działać. Możesz odłączyć zasilanie usb, podłączyć i nadal będzie działać. Możesz dać zewnętrzne zasilanie na VIN i też będzie działać. Byłoby praktycznie bezsensowne gdyby zachowywało się inaczej.
  • #25
    pustan
    Level 19  
    Dzięki za odpowiedź.

    Mimo że jak pisałem znam zasady co do AVRów i PICów, to środowisko aurdino dla mnie nowość. Mimo to sprawa jest bardzo fajna. Na pytania które zadałem zdążyłem już sobie odpowiedzieć. Post pisałem w nocy. Po napisaniu dalej zgłębiałem magię programowania i opisu co do pierwszego uruchomienia. Nad ranem dopiero zakumałem o co w tym chodzi. Aeduino DZIAŁA!!!.
    Sugerowałem się diodą dołączoną do pinów płytki. Ona nadal nie świeci mimo że jest sprawna. Ale dioda wlutowana w NANO działa i daje się programowo nią sterować. Teraz tylko jeszcze muszę znaleźć w necie rozpiskę dla tej płytki rozszerzeń.