Úvod
1. Moduly Arduino Nano jsou
laciné desky, které jsou osazené procesorem AVR ATmega328p.
2. Deska je konstruována tak, že má v rastru 2.54 mm vyvedenou ve dvou
řadách většinu pinů procesoru.
3. Na desce je převodník USB/USART s rozhraním USB mini. K připojení
do PC tedy stačí jen kabel USB - USB mini.
4. Procesor arduino nano je vybaven bootloaderem, který nám zavede
vytvořený kód (ve fomátu .hex) do procesoru pomocí Windows programu
AVRDUDESS.
5. Po resetu (tlačítko na desce) nebo po připojení napájecího
napětí bootloader spustí námi vytvořený kód a procesor dělá to, co
jsme naprogramovali. Např. komunikuje pomocí sériové linky s modulem
Elfin, přijímá povely z naší řídící aplikace a vykonává je. Tj. spíná,
měří, komunikuje.
|
 |
Moduly Arduino Nano jsem schopen nahradit
kontrolér, který byl původně vytvořen pomocí čipů PICAXE.
|
Programování
Pro arduino nano si musíme v něčem napsat program, který přeložíme
(zkompilujeme) a uložíme do flash paměti procesoru ATmega328P.
Běžně uživatelé používají program Wiring a kompilátor gcc. Program
Wiring je součástí programovacího prostředí ARDUINO IDE. Použitý jazyk
(Wiring) je podobný jazyku C++
Použití Wiring (Arduino IDE) není podmínkou pro použití HW desky
označené Arduino Nano. Vpodstatě nám funguje hexadecimální program,
který byl napsán v jazyce, se kterým umí náš kompilátor dělat. Program
musí být zkompilovaný v kompilátoru určeném pro procesory
ATmega328.
Arduino IDE a Wiring jsou komunitní otevřené produkty a je k
dispozici mnoho užitečných a odladěných algoritmů. Předmětem tohoto
článku NENÍ algoritmizace úlohy, ale popis postupu, jak program dostat
do Arduina nano. |
 |
|
|
Kontrola kompilace
Pokud jakýkoliv program napíšeme v prostředí Arduino IDE (Wiring),
provedeme kontrolu kompilace - viz foto dole vlevo.
Proběhne-li kontrola bez chybových hlášení, provedeme export
kompilovaného binárního souboru - viz foto dole - vpravo. |
 |
 |
Nahrání
zkompilovaného kódu do procesoru ATmega328p desky Arduino nano
Zkompilovaný binární kód, který jsme obdrželi exportem z Arduino
IDE (předchozí odstavce) nebo z jiného námi preferovaného editoru -
kompilátoru nahrajeme do procesoru pomocí programu AVRDUDESS (je
zdarma ke stažení na Internetu) pomocí pěti po sobě jdoucích krocích:
1. Nastavíme typ MCU, tedy ATmega328p.
2. Nastavíme port COM6, kde naše PC vidí Arduino - zde COM6.
3. Nastavíme Baud rate bootloaderu (zavaděče) pro arduino nano je br =
57600 baudů.
4. Nastavíme cestu ke zkompilovanému souboru s programem, na obrázku
jde o ok1ufc_sample_1.ino.standard.hex
5. Klikneme na Go.
6. V černém okně si zkontrolujeme výsledek - viz obrázek.
Zkouška programu
Pokud jsme použili nějaké komfortní vývojové prostředí, zpravidla jsme
si výsledek ověřili na simulátoru nebo emulátoru. Pokud jsme pracovali
jen s Arduino IDE, které není příliš komfortní a začínáme s jazykem
C++, který není jednoduchý, možná budeme překvapeni. Nicméně, vybral
jsem zde příklad Arduino nano, které nahrazuje mnou používané a velice
oblíbené kontroléry PICAXE. Např. v anténním přepínači přijímá povely
ze sériové linky a spíná na výstupech relé. Komunikaci po sériové
lince ověříme např. pomocí Herkules terminálu. O tom je obrázek vpravo
dole. Herkules terminál připojíme k našemu arduinu nano. Otevřeme v
terminálu COM6 a provedeme reset ATmega 328p. Vidíme, že program se
rozběhl a:
- odeslal na terminál zprávu, která začíná mojí značkou ok1ufc:
- následuje algoritmus několka kontrol (že relé jsou pod napětím) a je
odeslán status hláškou: Status Arduino = OK!, což znamená, že arduino
je schopné přijímat povely.
- přijaté povely (ty které jsme odeslali z PC do arduina, tedy
protokol, který obsahuje preambuli, povel a data ...) nám arduino
zopakuje jako echo na sériovou linku,
- povel (jeho provedení) si můžeme ověřit sondou na pinech arduina
|
 |
 |
|
|
Závěr
1. V článku jsem chtěl začátečníkům ukázat, jak si naprogramují
procesor ATMEGA jednoduchého kontroléru, který komunikuje po sériovém
rozhraní se síťovým komunikačním modulem Elfin. Jednoduchý kontrolér
např. ovládá relé, čte hodnoty napětí va vstupech.
2. V článku jsem chtěl zdůraznit, že hardware Arduino nano není svázán
s prostředím Arduino IDE a pokud máme lepší programátor s
kompilátorem, není důvod ho neopužívat.
Poznámky
1. Pro zavádění programu a pro ladění použijeme vestavěný
konvertor USB-RS232. Na mém laciném arduino nano byl s čipem
CH-340.
2. Pro připojení k reálnému rozhraní RS232 musíme použít převodník
úrovní. Pro procesory Atmega používám mnoho let toto zapojení,
které jsem převzal z výborných
stránek pana Jaroslava Kutěje: http://www.mp222.wz.cz/
 |
Zapojení pinů desky Arduino nano
V provozu je deska připojená k modulu Elfin EW10
pomocí špiček TX, RX, GND a +5 V a přenos dat se provádí s
převodníkem podle obrázku vlevo. Tranzistory jsou napájené z
napětí desky. Převodník mám ze součástí SMD přímo v pouzdře
konektoru.
 |
3. Přidávám poznámku k převodníku úrovní od Hanuše, OK1THC v
původním znění: Ahoj Miro! Koukal jsem na
http://ok1ufc.nagano.cz/…htm a mam poznamku k tomu prevodniku na
232 - on nejspis funguje, ale je hrube nekorektni. Smer 232->nano
je OK, tam problem nevidim, ale opacne je to blbe. Log 0 na 232
bude cca +4V, coz je korektni, ale log 1 bude cca 0.5V a to je v
zakazanem pasmu, protoze v tomhle stavu tam ma byt -3 az -15V. Jak
rikam, spousta obvodu na druhy strane to asi zchroupne, ale
korektni to neni a muze se vyskytnout obvod, kterej rekne NE.
Minimalne za poznamku by to stalo. Hezky den a 73! de OK1THC
4. Uvádím ještě standardní řešení
převodníku TTL na RS-232, které je realizované s pomocí obvodu
MAX232 (Maxim). Datasheet (pdf) je ke
stažení zde. Na obrázcích níže je zapojení, ve kterém jsou
použité keramické kondenzátory 1M (4ks, blokovací je na desce
arduino nano) a doporučené zapojení
podle datasheetu. Uvedené zapojení jsem kdysi vyzkoušel
s procesory ATmega a modulem Elfin EW10, nepoužívám ho.
|
 |
 |
5. Deska Arduino nano, kterou jsem pořídil k základním
experimentům je tzv. klon, tedy neznačková, kterou jsem pořídil od
číňana na ebay.com a originální desku jsem nikdy neměl.
6. Komunikaci po sériovém portu často používám. Na mém webu je
několik článků k tématu:
http://ok1ufc.nagano.cz/Desktopy/RS232/RS232.htm
http://ok1ufc.nagano.cz/Desktopy/RS232_USB/RS232_USB_konvertor.htm
http://ok1ufc.nagano.cz/Desktopy/virtual_serial/virtual_serial.htm
Proto uvádím ještě skutečnost, že přenos přes všechny převodníky
si vždycky u zařízení otestuji a v popsaných konstrukcích mě
zajímá, že funguje přenos bajt po bajtu a že je přenesen každý
bajt. Pokud přenos končí v mikrokontroléru, jako např. v Arduino
nano, používám místo propojení RX a TX na konektoru jednoduchý
program, který dělá pouze tzv. "echo", tj. přijme jeden bajt a
tentýž bajt odešle. Vyvedení mého testovacího programu je na
stránce v prvním odkazu. Z této stránky je rovněž zřejmé, jaké
převodníky, ať USB na RS232 nebo LAN (WiFi) na RS232 používám.
Opět nic značkového, vše levné, od číňana.
7. Na výše uvedených stránkách
http://www.mp222.wz.cz/ pan Kutěj napsal výbornou školu
programování procesorů ATmega s použitím Bascom. Pan Kutěj své
stránky už od roku 2019 neaktualizoval a ani nereagoval na mail,
který jsem mu napsal. Chci mu touto cestou svého webu poděkovat.
Bohužel, s ATmega328p a s použitím Windows 10 mi prostředí
nefunguje dobře a Bascom nadále nepoužívám. |
|
|