Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Тикер котировок Yahoo Finance на Arduino: живой дисплей рынка

Компоненты и материалы

Программное обеспечение (ПК)

Принцип работы

  1. Python-скрипт опрашивает Yahoo Finance API по списку тикеров.
  2. Получает цену открытия и текущую цену.
  3. Отправляет данные по Serial на Arduino (формат: TICKER*OPEN,CURRENT\n).
  4. Arduino выводит на LCD: тикер, открытие, текущую цену, изменение. Текст прокручивается.

Настройка Serial-порта

В Python-скрипте укажите правильный COM-порт:

ser = serial.Serial('COM3', 9600)  # замените на свой

Код Python (передача данных)

from yahoo_finance import Share
import time, serial

StockShares = ['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']

ser = serial.Serial('COM1', 9600)

def printShare(share, name):
    ser.write(name + ': *' + share.get_open() + ',' + share.get_price())
    print(name + ': *' + share.get_open() + ',' + share.get_price())
    time.sleep(0.1)

def mainProgram():
    for i in StockShares:
        s = Share(i)
        printShare(s, i)
        s.refresh()
        time.sleep(9.5)

while True:
    mainProgram()

Код Arduino (приём и вывод на LCD)

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
String ticker;
float openPrice, currentPrice;

void setup() {
  Serial.begin(9600);
  lcd.begin(16, 2);
  lcd.setCursor(0,0);
  delay(1000);
}

void loop() {
  if (Serial.available() > 0) {
    ticker = Serial.readStringUntil('*');
    openPrice = Serial.parseFloat();
    currentPrice = Serial.parseFloat();
  }
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print(ticker + " open:" + String(openPrice,2));
  lcd.setCursor(0,1);
  lcd.print("current:" + String(currentPrice,2));
  delay(2000);
  // Прокрутка
  for (int i=0; i<17; i++) { lcd.scrollDisplayLeft(); delay(200); }
  delay(500);
  lcd.clear();
  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();
}

Корпус для LCD

3D-модель: Thingiverse #614241

Схема подключения LCD

Стандартная схема 4-битного режима: RS→12, E→11, D4→5, D5→4, D6→3, D7→2, RW→GND, V0→потенциометр контраста.

Примечание

API Yahoo Finance устарело; для актуальных проектов рекомендуется использовать Alpha Vantage, Twelve Data или Finnhub с соответствующими правками в Python-коде.

Производственный процесс

  1. Эволюция, материалы и производство современных унитазов
  2. Револьвер: от истоков к современному производству
  3. Сборка Bluetooth-робота-шпиона на Arduino с управлением с телефона
  4. FlickMote: жестовое IR-пульт для умного дома на Arduino 101 и ультразвуковом датчике
  5. DIY Arduino TV-B-Gone: универсальный пульт для выключения любого телевизора
  6. Создание пользовательских LED-часов с будильником — видно с 12 метров
  7. Find Me: Умный поисковик вещей на Arduino и Bluetooth
  8. Оптимизированные решения питания для проектов на Arduino
  9. Крестики-нолики на Arduino с матрицей MAX7219 и картонным корпусом
  10. Пошаговое руководство: сборка умного четырёхногого робота на Arduino