Nextion HMI Kripto Takip Uygulaması C#
Nextion HMI ekran, akıllı evlerden, hastanelere, seri üretim bantlarına kadar oldukça popüler ve yaygın kullanım alanlarına sahiptir. Kripto takip için Nextion HMI ekranı doğrudan seri haberleşme ile kullanacağız, bu sayede bir mikro denetleyiciye gerek duymadan bilgisayar üzerinden kontrol edebileceğiz.
Nextion HMI ekrana veri gönderebilmek için USB-Serial dönüştürücüye ihtiyacımız var, dönüştürücüyü bağladıktan sonra doğrudan ilgili COM Port üzerinden haberleşmeye başlayabilirsiniz.
Sol üstten aşağıya:
- Bitcoin logosu
- Bitcoin fiyatı(15 dakika gecikmeli)
- 24 saatlik fiyat
- 24 saatlik hacim
- Tarih damgası
Sağ alt köşe:
- Bağlantı indikatörü, eğer iletişimde ve bağlantılarda sorun yoksa yeşil yanar. Eğer bağlantı koparsa, doğrudan çevrimdışı ekranına aktarma sağlanır.
Yasal Uyarı
Bu programı kullanmadan önce mutlaka “Sermaye Piyasası Kurulunun Seri:V, No:55 Yatırım Danışmanlığı Faaliyetine ve Bu Faaliyette Bulunacak Kurumlara İlişkin Esaslar Hakkında Tebliğ’i Uyarınca Yayımlanan Uyarı Notu”nu okumanız gerekmektedir.
Kullanıcının verecekleri yatırım kararları ile bu proje ve sitede bulunan veriler, görüş ve bilgi arasında bir bağlantı kurulamayacağı gibi, söz konusu yorum/görüş/bilgilere daynılarak alınacak kararların neticesinde oluşabilecek yanlışlık veya zararlardan devreyakan.com ve repo sahibi sorumlu tutulamaz.
Burada yer alan yatırım bilgi, yorum ve tavsiyeleri yatırım danışmanlığı kapsamında değildir. Yatırım danışmanlığı hizmeti, aracı kurumlar, portföy yönetim şirketleri, mevduat kabul etmeyen bankalar ile müşteri arasında imzalanacak yatırım danışmanlığı sözleşmesi çerçevesinde sunulmaktadır. Burada yer alan yorum ve tavsiyeler, yorum ve tavsiyede bulunanların kişisel görüşlerine dayanmaktadır. Bu görüşler, mali durumunuz ile risk ve getiri tercihlerinize uygun olmayabilir. Bu nedenle, sadece burada yer alan bilgilere dayanılarak yatırım kararı verilmesi, beklentilerinize uygun sonuçlar doğurmayabilir.
Piyasa verileri blockchain.info tarafından sağlanmaktadır ve 15 dakika gecikmeli olarak yayınlanır. Kullanacağınız API’ye göre bu veriler değişmektedir.
https://devreyakan.com/yasal-uyari/
Bağlantı Şeması
USB-Serial Dönüştürücü | Nextion HMI |
VCC | VCC |
GND | GND |
TX | RX |
RX | TX |
Nextion HMI Arayüzü
Temel olarak sadece iki sayfa ve 6 objeyi içeren bu ekran ile, güncel fiyat, 24 saatlik fiyat, 24 saatlik hacim, bağlantı durumu ve zaman damgasını anlık olarak takip edebilirsiniz. Kaynak kodlarını açık bir şekilde paylaştığımız için istediğiniz düzenleme ve eklemeleri gönül rahatlığıyla yapabilirsiniz.
Not: Model olarak NX3224T028, kısacası 2.8″ ekran boyutuna sahip model kullanılmıştır, fakat elinizde bulunan ekrana göre objeleri kolay bir şekilde kopyalayabilirsiniz.
Tanımlanan objelerin isimleri C# üzerinden kontrol etmek için oldukça önemlidir, daha önce paylaştığımız Nextion Komutları ve Fonksiyonları içeriğimizde bir çok farklı komut ve fonksiyonu anlatmıştık, temel olarak C# ile hazırladığımız programı seri haberleşme yöntemiyle ekrana bağlayıp, seri haberleşme üzerinden komutları gönderebiliyoruz.
Göndermek istediğiniz komutları isterseniz ekrana uygun “STRING” istersenizde “HEX” olarak gönderebilirsiniz. Örnek olması açısından windows form uygulamasında doğrudan HEX ve STRING’ı HEX’e çevirip göndermeyi ayrıca gösterdik.
C# Windows Form
Form kısmında, bağlı cihazların COM adreslerini hızlı bir şekilde listBox’a ekleyen bir döngü koyduk, bu sayede cihazınıza hızlı bir şekilde bağlanabilirsiniz. Bağlan butonuna bastıktan sonra fonksiyonların başlatılması ve blockchain.info’dan veri çekmek için “Başlat” butonuna basmanız yeterli. Bu kısımda da istediğiniz değişiklikleri ve düzenlemeleri yapabilirsiniz.
Veriler Nextion HMI ekrana gönderilirken HEX’ olarak gönderilmesi gerekir, bütün veriler tek seferde HEX’e çevrilir veri sonuna bitirme byteları yani FF FF FF’ler eklenir ver gönderilir.
Veri gönderirken byteları birleştirmek için “Concat” yöntemini kullandık, eğer göndermeniz gereken byte dizileri artarsa “Concat” kullanım performans sorunları yaratabilir.
Program temelinde verileri alıp, Nextion HMI ekranın anlayacağı bir vaziyette HEX formatında seri iletişim ile gönderme yapmaktadır. Kodu detaylı incelemden önce mutlaka Nextion Komutları ve Fonksiyonlarına göz atmanızı öneririz.
Blockchain Verilerinin Çekilmesi
Verilerin çekilmesi için ayrı ayrı sınıflar oluşturduk, isterseniz kod kısmında bu alanları yorum halinden kaldırıp kullanabilirsiniz. Kodun çalışan kısmında bu sınıfların küçültüşmüş halleri kullanıldı.
static class BTC_Blockchain
{
static WebClient wb = new WebClient();
//static WebClient.CachePolicy = new System.Net.Cache.RequestCachePolicy(RequestCacheLevel.NoCacheNoStore);
public static string sjveri = wb.DownloadString("https://api.blockchain.com/v3/exchange/tickers/BTC-USD" + "?nocache=" + DateTime.Now.Ticks.ToString());
static JObject json = JObject.Parse(sjveri);
public static string symbol = json["symbol"].ToString();
public static string price_24h = json["price_24h"].ToString();
public static string volume_24h = json["volume_24h"].ToString();
public static string last_trade_price = json["last_trade_price"].ToString();
}
Zaman Damgası
Zaman damgasına farklı API’ler kullanırsanız ihtiyaç duymayabilirsiniz. Fakat biz bu kısımda NIST, Google ve doğrudan bilgisayar üzerinden saat bilgisini eklemek istedik.
NIST
NIST yani Ulusal Standartlar ve Teknoloji Enstitüsü, Amerika Birleşik Devletleri federal devletinin standart enstitüsüdür. Endüstriyel standartlardan ziyade ölçüm metot ve standartları yayınlar. NIST, ağırlık ve zaman referanslarını da bünyesinde barındırır. Saat kısmında yüksek doğruluğa sahip olduğu için NIST kullanabilirsiniz. Fakat belirtmekte fayda var yalnızca dört saniyede bir veri almanız gerekmekte aksi taktirde sunucular sizi geçici kara listeye alacaktır.
public string nist_tarih()
{
var client = new TcpClient("time.nist.gov", 13);
using (var streamReader = new StreamReader(client.GetStream()))
{
var response = streamReader.ReadToEnd();
var utcDateTimeString = response.Substring(7, 17);
var localDateTime = DateTime.ParseExact(utcDateTimeString, "yy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal);
return localDateTime.ToString();
}
}
Doğrudan Google üzerinden zaman verisi almak için bu sınıfı kullanabilirsiniz.
public string google_tarih()
{
var httpWebGoogle = (HttpWebRequest)WebRequest.Create("http://google.com");
var cevap = httpWebGoogle.GetResponse();
string bugunTarih = cevap.Headers["date"];
return DateTime.ParseExact(bugunTarih, "ddd, dd MMM yyyy HH:mm:ss 'GMT'", CultureInfo.InvariantCulture.DateTimeFormat, DateTimeStyles.AssumeUniversal).ToString();
}
Yukarıda bahsettiğimiz sınıfları kullanırken, her hangi bir sorun yaşamamak için belirli kısımları try-catch bloğuna alarak programın işleyişini garanti altına alabilirsiniz.
Bilgisayar
Bu kısa kısım ile doğrudan sistem saatini alabilirsiniz, diğer saat damgalarına göre daha pratiktir fakat bilgisayarınız saati ne ise onu alırsınız yani burada doğruluk sorgulanabilir.
var pc_tarihi = DateTime.Now;
GitHub Reposu
C# windows form dosyalarına ve ekran için gereken .HMI dosyasına doğrudan GitHub reposu üzerinden erişebilirsiniz. Ayrıca ekleme ve düzenlemeleri aynı repo’da yaparak diğer kullanıcıların erişmesini sağlayabilirsiniz.
Ekstra: Ekrana Uygun 3D Kılıf
Ekran boyutunuza uygun ekran kabını Resmi Nextion web sayfasından indirebilirsiniz.
Yorum yapma özelliği, forum tarafından gelen istek sebebiyle kapatılmıştır. Lütfen tartışmalar ve sorularınız için topluluk forumumuza katılın.