Stap 10: RSS-lezer met behulp van seriële aansluiting en LCD
Hardware
We zijn met behulp van de Dragon Rider 500 als een ontwikkeling boord. Dit biedt alle hardware u nodig (ervan uitgaande dat u al de add-on kits). Dat gezegd zijnde dat zeker hiervoor kunt u met uw eigen installatie van de hardware:
- ATmega8 microcontroller (of om het even welk die een USART heeft en genoeg pinnen voor alle verbindingen
- Een manier om te programmeren van de microcontroller (ik gebruik de AVR Dragon)
- MAX232-chip voor de seriële communicatie
- DB9 connector
- HD44780 LCD-scherm
- Crystal (ik gebruikte een 8MHz kristal)
- Geassorteerde condensatoren en weerstanden
Hieronder vindt u een schematische voorstelling.
Op de Dragon Rider zullen we wat creativiteit gebruiken voor het routeren van de verbindingen. Normaal kan Port D rechtstreeks worden aangesloten op de LCD-header. Dit is niet het geval hier, omdat de USART die nodig zijn voor de seriële aansluiting PD0 en PD1 gebruikt. Bovendien kan poort B kan niet worden gebruikt omdat PB6 en PB7 gebruikt voor de externe crystal worden.
Hieronder is mijn oplossing voor dit probleem. Ik sluit de lintkabel van een aan de headers voor de LCD, poort B en Port D, dan jumper draden gebruik te maken van de juiste routes. Vergeet niet om de spanning haak en grond aan de LCD-header.
Software
De software voor dit project komt in twee delen, de firmware voor de microcontroller en de python-script voor het schrapen van de RSS-feeds en verzenden hen via de seriële verbinding.
AVR-Firmware
Ik ben met behulp van Peter Fleury van LCD-bibliotheek opnieuw (http://jump.to/fleury). Het is krachtig en beknopt, veelzijdig en eenvoudig te wijzigen voor uw installatie van de hardware. Als je kijkt naar het headerbestand aangesloten (lcd.h) dat u zien zult dat ik ben uitgevoerd in 4-bits modus met poort D als data-bits en de poort B als de controle-bits.
Het concept van deze firmware is vrij eenvoudig:
- Eenmaal ingeschakeld de microcontroller worden weergegeven "RSS-lezer" en vervolgens wacht tot seriële data.
- Elke byte van seriële data ontvangen oorzaken een buffer van 16 tekens tot verschuiving links en de byte toevoegen aan de buffer, dan weer de buffer.
- Drie speciale opdrachten worden geaccepteerd door de microcontroller: 0x00, 0x01 en 0x02. Dit zijn duidelijk scherm, zet voor naar de lijn van 0 en verplaats naar lijn 1 respectievelijk.
Python Scrypt
Ik schreef een script pyton schrapen van de RSS-gegevens te verzenden via de seriële verbinding. Dit vereist de python module "pyserial" die u waarschijnlijk installeren op uw systeem moeten zult te halen zulks voor werkzaamheden.
De RSS-feed kan worden geconfigureerd op de top van het bestand pyton. Bericht dat u wilt invoeren van een naam voor de feed, alsmede de feed url. Er zijn drie voorbeelden er, ik ben er zeker van u kunt volgen die voor de juiste syntx.
Waardoor het alle werk
- Assembleer de hardware
- Program van de microcontroller (dragon_rss.hex kan worden gebruikt als u niet wilt compileren dit zelf). Zekering van instellingen voor ATmega8 met behulp van een 8 MHz kristal: lfuse = 0xEF hfuse = 0xD9
- De macht omhoog de Dragon Rider en zorg ervoor dat de seriële kabel goed is aangesloten (LCD moet lezen: "RSS-lezer")
- Het python programma (python serial_rss.py) uitvoeren
- Geniet van