Yahoo Finance Aktien-Ticker: Live-Marktdaten auf LCD mit Arduino & Python
Komponenten & Materialien
| Adafruit Standard LCD 16×2 (Weiß auf Blau) | ×1 |
| Arduino Mega 2560 (UNO funktioniert auch) | ×1 |
| Jumper-Wires (m/w) | ×12 |
| Jumper-Wires (m/m) | ×5 |
Werkzeuge (Optional)
- 3D-Drucker für LCD-Gehäuse (Thingiverse: Thing 614241)
Software-Voraussetzungen (PC-Seite)
- Python 2.7 (Empfehlung: Enthought Canopy)
pip install yahoo_finance(Yahoo Finance API Wrapper)pip install pyserial(Serielle Kommunikation)
Projektbeschreibung
Ein Python-Skript ruft cyclisch Aktienkurse über die Yahoo Finance API ab und sendet sie über die serielle Schnittstelle an den Arduino. Dieser zeigt auf dem 16×2 LCD: Aktienkürzel, Eröffnungs- & aktuellen Kurs, sowie die Änderung. Der Text scrollt für Lesbarkeit.
Python-Code (PC)
from yahoo_finance import Share
import time
import serial
# Liste der zu überwachenden Aktien
stock_shares = [
'DOW','YHOO','BAC','F','JPM','TWTR','CHK','PBR','FIT','COG',
'ABX','FCX','GE','TRGP','CNX','BSX','MRC','NKE','NEM','PBRA',
'HST','BP','MRK','HON','MET','CLR','WPX','EXC','JCP','YELP',
'GNC','TSLA','VRX','P','NFLX','CMG','SM','WYNN','SHAK','ICON'
]
# Serieller Port anpassen!
ser = serial.Serial('COM1', 9600) # Windows: COMx, Linux/Mac: /dev/ttyUSBx
def print_share(share, name):
open_price = share.get_open()
current_price = share.get_price()
msg = name + ': *' + open_price + ',' + current_price
ser.write(msg.encode())
print(msg)
time.sleep(0.1)
def main():
while True:
for symbol in stock_shares:
try:
s = Share(symbol)
print_share(s, symbol)
s.refresh()
except Exception as e:
print(f"Fehler bei {symbol}: {e}")
time.sleep(9.5) # API-Rate-Limit beachten
if __name__ == '__main__':
main()
Arduino-Code (LCD-Anzeige)
#include
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // RS, EN, D4, D5, D6, D7
String symbol = "";
float openPrice = 0, currentPrice = 0;
void setup() {
Serial.begin(9600);
lcd.begin(16, 2);
lcd.setCursor(0, 0);
delay(1000);
}
void loop() {
if (Serial.available() > 0) {
// Format: "SYMBOL*OPEN,PRICE"
symbol = Serial.readStringUntil('*');
openPrice = Serial.parseFloat();
currentPrice = Serial.parseFloat();
}
// Zeile 1: Symbol + Open
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(symbol + " open:" + String(openPrice, 2));
// Zeile 2: Current
lcd.setCursor(0, 1);
lcd.print("current:" + String(currentPrice, 2));
delay(2000);
// Scrollen
for (int i = 0; i < 17; i++) {
lcd.scrollDisplayLeft();
delay(200);
}
delay(500);
lcd.clear();
// Änderung anzeigen
lcd.setCursor(0, 0);
lcd.print("change: " + String(currentPrice - openPrice, 2));
delay(2000);
for (int i = 0; i < 17; i++) {
lcd.scrollDisplayLeft();
delay(200);
}
lcd.clear();
}
Schaltung
Standard LCD-Anschluss (4-Bit-Modus):
- LCD RS → D12, EN → D11, D4→D5, D5→D4, D6→D3, D7→D2
- VSS → GND, VDD → 5V, VO → Potentiometer (Kontrast), RW → GND
- LED+ → 5V (via 220Ω), LED- → GND
Schaltplan im Artikel (Bild).
Wichtige Hinweise
- Yahoo Finance API: Die Bibliothek
yahoo_financeist veraltet/inoffiziell. Yahoo hat die öffentliche API 2017 abgeschaltet. Alternative:yfinance(Python), Alpha Vantage, Twelve Data, oder Web-Scraping. - Serieller Port: Im Python-Code
'COM1'durch tatsächlichen Port ersetzen (Arduino IDE: Tools → Port). - Rate Limiting:
time.sleep(9.5)zwischen Zyklen – Yahoo blockiert bei zu vielen Requests. - Python 3: Code anpassen:
print()Funktion,ser.write(bytes),yahoo_financeevtl. nicht kompatibel.
Erweiterungsideen
- Mehrere LCDs (I2C-Expander) für parallele Anzeige
- Farbiges TFT-Display (ST7735) mit Grafiken (Kerzencharts)
- ESP8266/ESP32 statt PC – direkter WLAN-Zugriff auf API
- Mehrere Währungen / Krypto-Paare
- Alarm bei Kursschwellen (Piezo, LED)
Fazit
Ein klassisches "Physical Computing" Projekt, das Finanzdaten greifbar macht. Die Python-Seite ist flexibel für beliebige Datenquellen, die Arduino-Seite demonstriert serielle Kommunikation & LCD-Handling. Aufgrund der Yahoo-API-Änderungen ist die Python-Seite anzupassen – das Prinzip bleibt identisch.
Herstellungsprozess
- Die Evolution, Materialien und Fertigung moderner Toiletten
- Revolver: Von den Ursprüngen zur modernen Fertigung
- Bluetooth-gesteuerter Arduino-Spybot bauen – Überwachungsroboter mit IP-Kamera
- FlickMote: Gestensteuerung per Ultraschall & IR für Smart Home (Arduino 101)
- DIY Arduino TV-B-Gone: Universelle TV-Aus-Fernbedienung
- Einen eigenen LED-Master-Clock mit Alarm bauen – aus 12 Metern Entfernung ablesbar
- Find Me: Smarter Gegenstands-Finder mit Arduino und Bluetooth
- Optimierte Stromversorgungslösungen für Arduino-Projekte
- Arduino Tic Tac Toe mit MAX7219 LED-Matrix und Karton-Gehäuse
- Intelligenten Arduino-Vierbeiner-Roboter bauen: Schritt-für-Schritt-Anleitung