. : New eShop! - Mobilní verze - Pandatron.cz - Pandatron.sk - Diskuzní fórum - Zakázkový vývoj : .
 
Projekt WiFi rádia VII - LCD displej
19. listopadu 2010 - 9:16 | Pandatron | Projekt WiFi rádia VII - LCD displej | Komentářů: 8  

Projekt WiFi rádia VII - LCD displej

Dnes se podíváme na zapojení obvodu s LCD displejem, naprogramování zvoleného mikrokontroléru a připojení v routeru pomocí připraveného sériového portu.

V současné době máme sestaveno kompaktní síťové zařízení, které umožňuje bezdrátové připojení k síti WiFi a přehrávání 16-bit 44kHz stereo streamu na sluchátka nebo externí reproduktory (po doplnění o zesilovač). V sedmém pokračování seriálu o konstrukci levného, open source internetového rádia, se zaměříme na připojení LCD displeje. Pokud jste tak ještě neučinili, podívejte se na předchozí části seriálu (viz odkazy na konci tohoto článku) pro více informací o projektu.

V minulé části jsme použili OpenWrt jako UNIX-styl shell pro komunikaci s MPD, přehrávačem hudby, a informace o aktuální skladbě jsme přesměrovali na sériový port ASUS WL-520gU. Dnes použijeme klasický displej LCD 16 × 2 s řadičem HD44780 a několik dalších součástek a zajistíme si tak obrazový výstup internetového rádia.

Atmel AVR mikrokontroléry:
Po dlouhém přemýšlení jsem se rozhodl použít obvody z řady Atmel AVR mikrokontrolérů, konkrétně typ ATmega168. Je mi jasné, že se tím zvyšuje technická náročnost tohoto projektu, ale použití malého mikrokontroléru přináší celou řadu výhod. V úvahu rovněž přicházela i platforma Arduino, která by pracovala stejně dobře, ovšem její použití a zároveň i dostupnost je náročnější, než použití samotného mikrokontroléru (základní Arduino je postaven rovněž na obvodu ATmega168). Zájemci mohou využít možnosti naprogramování mikrokontrolérů samotnými prodejci.

Pokud pro vás obvody typu AVR nejsou žádnou novinkou, můžete následující část klidně přeskočit.

Pokud však s obvody AVR začínáte, nenechte se odradit hned v úvodu. Na internetu existuje celá řada výukových seriálů a programů, které vám pomohou snadno zvládnout tuto levnou, avšak velmi výkonnou architekturu. Doporučuji Vám podívat se například na AVR Tutorial nebo Beginning Embedded Electronics - 2, jinak viz moje poznámka o AVR MacPack níže, pokud používáte Mac. Pokud jste ještě nikdy neprogramovali v jazyce C, bude i toto pro vás další překážkou, avšak v tomto projektu nejsou žádné velké znalosti programování potřeba.

Na svůj počítač si pouze musíte nainstalovat příslušný software pro práci s AVR, doporučuji vám:

  • WinAVR pro Windows
  • AVR MacPack pro OS X (Adafruit doporučuje OSX-AVR, použijte však raději tento)

Pro začátek si postavte něco velmi jednoduchého, například blikač s LED, než se pustíte do stavby LCD displeje, popsaného níže. Tímto způsobem si můžete být alespoň jisti, že váš programátor, vývojové prostředí, zkušební deska, atd. pracují jak mají.

Konstrukce displeje:
Pro konstrukci displeje budeme především potřebovat:

  • Jeden USB kabel typu AB (čtvercový konektor na konci)
  • Programátor s podporou obvodů AVR, jako je například Adafruit USBTinyISP nebo český produkt Presto
  • AVR mikrokontrolér ATmega168
  • Pracovní vývojové prostředí pro AVR, nebo alespoň způsob, jak dostat .hex soubor do AVR
  • LCD displej s LED podsvětlením typu 16×2 Character STN LCD s řadičem kompatibilním s HD44780 (což jsou téměř všechny)
  • Nepájivé kontaktní pole, například toto je dodáváno i s drátky
  • 4-pinový konektor – samici se standardním rozestupem pinů 2,54 mm.
  • Krystal 16 MHz
  • Dva 22pF keramické kondenzátory pro napětí alespoň 6 V
  • Jeden 100 n keramický kondenzátor, rovněž pro napětí alespoň 6 V
  • Jeden 10 ohmový rezistor
  • Pro ideální nastavení kontrastu displeje je vhodný malý 1k nebo 10k odporový trimr
  • Kousek 20- nebo 24-žilového plochého datového kabelu
  • Případně ještě libovolné spínací tlačítko na pin RESET mikrokontroléru

Schéma konstrukce LCD displeje:
Na následujícím obrázku je uvedeno schéma zapojení obvodu s LCD displejem (klikněte pro zvětšení):


Obr. 1: Schéma zapojení

Firmware:
Zdrojový soubor a výsledný soubor .HEX si můžete stáhnout na konci článku, nebo na webových stránkách autora.

Sestavení obvodu:
Sestavení obvodu na kontaktním poli je velice jednoduché. Na následujících fotografiích jsou všechny součástky dobře vidět. S routerem je obvod displeje spojen prostřednictvím sériového portu, jak jsme si ho připravili již dříve (pin RX je ponechán nezapojen, zatím jsme ho nepoužili). USB AVR programátor je připojen na pravé straně a funguje zároveň jako 5V napájecí zdroj. Pokud používáte USBTinyISP, nezapomeňte se ujistit, že je 2-pinový Jumper propojen, tím se do obvodu přivádí +5V napájení. Pokud je vše v pořádku, je na LCD displeji zobrazen název aktuálního streamu (DI.fm).


Obr. 2: Wifi Rádio a LCD displej

Zde je detailní pohled na nepájivé kontaktní pole, kde je dobře vidět rozmístění jednotlivých součástek, které však samozřejmě není nutné bezpodmínečně dodržet. Pokud budete při sestavování postupovat podle schématu, musí vám obvod pracovat správně.


Obr. 3: Detailní pohled na kontaktní pole a sestavené zapojení

Na následujícím obrázku je naopak uveden detailní pohled na sériový port na routeru, včetně 4-pinového konektoru.


Obr. 4: Sériový port na routeru

Na následujícím obrázku je naopak detailní pohled na AVR, krystal a SparkFun ISP programovací konektor.


Obr. 5: AVR, krystal a programovací konektor

Programování AVR:
Jakmile je obvod na kontaktním poli sestaven, je potřeba do mikrokontroléru naprogramovat soubor main.hex, dostupný ke stažení pod článkem. Pokud používáte AVR MacPack a OS X, neměl by v tom být žádný problém (neboť ho používám i já). Na PC je nejjednodušší použít programátor Presto a případně mírně upravený Makefile.

Poté stačí již jen programátor připojit k počítači pomocí USB kabelu a ISP kabelem s programovaným procesorem. Pokud na programátoru svítí zelené LED, je vše v pořádku a počítači se programátor podařilo enumerovat.

Otevřete okno terminálu a vytvořte nový adresář. Já jsem zvolil ~/temp. Stažený firmware rozbalte do tohoto adresáře a spusťte 'make flash', jak je uvedeno zde:

  macbook:temp jkeyzer$ unzip ./AVR_wifiradio_display.zip
  Archive:  ./AVR_wifiradio_display.zip
    inflating: lcd.c
    inflating: lcd.h
    inflating: main.c
    inflating: main.hex
    inflating: Makefile
  macbook:temp jkeyzer$ make flash
  avr-gcc -Wall -Os -DF_CPU=16000000 -mmcu=atmega168  -c main.c -o main.o

o několik varování později ...

  avr-gcc -Wall -Os -DF_CPU=16000000 -mmcu=atmega168  -c lcd.c -o lcd.o
  avr-gcc -Wall -Os -DF_CPU=16000000 -mmcu=atmega168  -o main.elf main.o lcd.o
  rm -f main.hex
  avr-objcopy -j .text -j .data -O ihex main.elf main.hex
  avrdude -c usbtiny -p atmega168 -U flash:w:main.hex:i

  avrdude: AVR device initialized and ready to accept instructions

  Reading | ################################################## | 100% 0.01s

  avrdude: Device signature = 0x1e9406
  avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
           To disable this feature, specify the -D option.
  avrdude: erasing chip
  avrdude: reading input file "main.hex"
  avrdude: writing flash (1326 bytes):

  Writing | ################################################## | 100% 3.32s

  avrdude: 1326 bytes of flash written
  avrdude: verifying flash memory against main.hex:
  avrdude: load data flash data from input file main.hex:
  avrdude: input file main.hex contains 1326 bytes
  avrdude: reading on-chip flash data:

  Reading | ################################################## | 100% 0.68s

  avrdude: verifying ...
  avrdude: 1326 bytes of flash verified

  avrdude: safemode: Fuses OK

  avrdude done.  Thank you.

Pokud vše dopadne dobře, firmware se bez problémů přenese do mikrokontroléru ATmega168 a obvod je připraven k provozu. Pokud se tak nestane, je třeba zkontrolovat nastavení připojení, nebo se obrátit na zákaznickou technickou podporu programátoru.

Testování displeje:
Telnetem nebo ssh se připojte k routeru. Spusťte MPD a pomocí mpc se připojte ke streamu (více informací je uvedeno v předchozích dílech seriálu).

Jakmile se stream začne přehrávat, spusťte skript display.sh, který jsme si vytvořili v minulém díle. Během několika vteřin, pokud vše pracuje jak má, se na displeji zobrazí jméno streamu, následované interpretem a názvem aktuální skladby. V tom případě vám blahopřeji!

Na následujícím videoklipu je vidět LCD displej v akci i včetně funkce horizontálního posuvu při zobrazení informací, které jsou příliš široké:

Stáhněte si prosím Flash Player pro přehrávání videí.

Tím máme displej plně funkční a můžeme postoupit dál. V příštím pokračování se zaměříme naopak na uživatelský vstup - uživatelské rozhraní.

Odkazy & Download:
Domovská stránka autora
Building a Wifi Radio
Wifi Radio Discussion Forum

Asus WL-520GU
OpenWrt
FTDI 232 - 3V3
Firmware pro AVR







GooglePlus1 FaceBook Twitter del.icio.us DiGG Google StumbleUpon Google Buzz Email RSS PDF Tisk

Komentáře (8):

Zobrazit starší 30 dnů (8)...

host
8. Dne 30. 07. 2013 v 16:05 zaslal host
materiál dodám
Najde se někdo, kdo by mi to za 500Kč sestavil a naprogramoval - když dodám vše potřebné? berros@seznam.cz


Název příspěvku: Vaše jméno: host
                 
  Zakázat formátování [Zakáže kódování a nahrazování smajlíky.]
Připojit soubory
reklama:
XPort XE
Síťový převodník řady Xport, integrovaný do konektoru RJ45
Skladem od 850 Kč

Informace uvedené v článcích jsou platné v době jejich vydání a samotné články jsou určeny pouze jako zdroj informací. Autor článku ani správce webu nenesou žádnou zodpovědnost za případné újmy na majetku a zdraví. Názvy společností a výrobků, loga a další multimediální materiál mohou být ochrannými známkami příslušných společností.
RSS kanály: | |
+420 723 846 377
info@pandatron.cz
Všechna práva vyhrazena | mobilní verze | © Copyright 2000 - 2016 ISSN 1803-6007