Uzaktan yazılım gücelleme?

Endorfin35+

Kayıtsız Üye
Katılım
1 Mayıs 2020
Mesajlar
4,193
Bugunlerde hiç tecrubem olmayan işlere bulaştım. (Gerçi hep öyle oluyor :))

Amac arduino mega ve yardımcı bir donanımı daha uzktan gucellemek. Yardımcı donanım arduinoya rx tx üzerinden bagli ve güncelleme datasını arduino nun göndermesi gerekli. 2560 da birkaç tane uart var burda sıkıntı yok.

Şimdi şöyle bir düşüncem var. İki adet hex dosyam olcak biri ardu diğeri yrdımcı donanım için. İnternet üzerinden arduino ftp server a bağlanacak ve iki dosyayıda sd karta indirecek. Dosyalar sd karta yüklenince ardu diğer elemana ben güncelleniyorum sen bekle kardeş diyip sd karttan güncelleme yapacak. Sonrasında arduino sd kartta ikinci dosyayı okuyup yardımcı donanıma kardeş senin sıran geldi diyecek. El sıkışma tamamlandığında eproma versiyon vs yazılacak...

Bu senaryoda bir sıkıntı görüyor musunuz? Daha kolayı olabilir mi?

Birde nasıl olur tam bakamadım bu sistem ftp servera bağlanamaz ise sd karta bilgisayar üzerinden yine arduino vasıtasıyla yazmayı deneyeceğim. (Sd kart içeride sabit olacak kullanıcı kartı söküp takmayacak)
 
Ftp olur http olur önemli değil, intetnet üzerinden olması önemli.

Ethernet ile olur. Çalışma ortamında wifi olmayacak. ama çözemez isem kullanıcıya aç acces point telefonundan diyecem :katil2:
 
Yüksek lisans tezimde Arduino Uno üzerindeki ATmega328P mikrodenetleyicisi için Ethernet'ten HTTP üzerinden yazılım güncelleme işini gerçekleştirmiştim. Wiznet 5100 Ethernet denetleyicisi barındıran Ethernet shield kullanmıştım. Söz konusu yazılan önyükleyici, yardımcı bir yazılım olmadan ağ tarayıcısından HTTP üzerinden program kodunu yüklemeye yarıyor.

Tezimin adı "Atmel AVR mikrodenetleyicileri için yeni bir önyükleyici"'dir. YÖK'ün Ulusal Tez Merkezi veritabanından aratarak bulabilir ve indirebilirsiniz. Söz konusu yazılım LGPLv3 lisanslıdır.
 
Önce yardımcı donanımı güncelleyip sonra arduinoyu güncellemek daha mantıklı geldi bana.
Önce arduinoyu güncelleyip olası bir aksaklıkta yardımcı donanıma erişimi kaybedebilirsin. Ama hazır arduino çalışır durumdayken yardımcı donanımı güncellersen olası bir hata da zaten arduino çalışıyor durumda olduğundan tekrar tekrar dener ve yardımcı donanımı çalışır hale getirirsin. En sonda arduinoyu güncellersin olur biter.
 
Güncelleme desteği ekliyorsan, fabrika ayarlarına dönme özelliği de eklemek lazım, yoksa bir sorun çıktığında bilinen bir duruma dönmek imkansız hale gelir. Bir de güncelleme sırasında enerji kesilirse veya başka bir olumsuzluk çıkarsa, bu durum cihazı tamamen çalışmaz hale getirmemeli, istendiği kadar tekrar deneme imkanı olmalı.

İki ayrı MCU olması işi daha da karıştırıyor. Yukarıdakiler her iki MCU için de geçerli olacak bu durumda. Bunlara ilave olarak, iki MCU'da da birbiri ile uyumlu yazılımların çalıştığı garanti edilmeli. Güncellemeyi yapan MEGA, diğer MCU yu sorgulamalı ve eğer orada beklediği sürüm yoksa, o beklediği sürümü MCU'ya yüklemeli. Bunun için de o sürümü kendi hafızasında tutuyor olması lazım.

İşin içinde baya ayrıntı var, olabildiğince tüm senaryoları belirleyip iyi bir şekilde test edilmesi lazım.
 
Bir de güncellemenin başarılı olup olmadığı, flash'a yazma sırasında bir hata meydana gelip gelmediğine göre karar verilmemeli. Güncellenen programın bir çeşit "checksum" değeri hesaplanmalı ve olması gereken değer ile uyuşuyorsa başarılı kabul edilmeli. Uyuşmuyorsa bir önceki kod çalışmaya devam etmeli.
 
Evreka evreka,sol taraftaki kırmızı rakama çift tıklayınca tez açılıyor .Tez numarasının üzerine gelince iconu parmak şekline getirmeyi düşünebilselerdi oraya buraya tıklamazdık.
 
Bu konuyu açan @Endorfin35+ olsada önemli bir konu olduğundan ben de tam olarak anlamak istiyorum.

Örneğin Kars da çalışan bir tane nano var, üstünde çalışan programda 2 saniyede bir göz kırpan blink programı .Ben Ankaradayım Kars daki bu Nanonun programını 5 saniye bir yanıp sönecek şekilde güncelleyeceğim .Bunu nasıl yapabilirim.

Başlangıçta Kars ta çalışan Nano nun beraberinde hangi kartlar /donanımlar olması gerektiğinden başlayarak izah edebilirmisiniz?
 
Son düzenleme:
Nano üzerinde direkt olarak web server çalıştırmak kolay değildir, harici bir shield gerekir diye düşünüyorum. Böyle bir uygulamayı doğrudan ESP modülü üzerinde yapmak daha mantıklı. Böylece ağ bağlantısı zaten modüle dahil olmuş oluyor.

Mesela esp3-wroom-32u kullanırsan, bundaki işlemci hem senin algoritmayı çalıştırır hem de bir web arayüzü ile güncelleme desteği sağlar.
 
@Omega bende konuyu henüz net kavrayabilmiş değilim :)

Güncelleme desteği ekliyorsan, fabrika ayarlarına dönme özelliği de eklemek lazım, yoksa bir sorun çıktığında bilinen bir duruma dönmek imkansız hale gelir. Bir de güncelleme sırasında enerji kesilirse veya başka bir olumsuzluk çıkarsa, bu durum cihazı tamamen çalışmaz hale getirmemeli, istendiği kadar tekrar deneme imkanı olmalı.

İki ayrı MCU olması işi daha da karıştırıyor. Yukarıdakiler her iki MCU için de geçerli olacak bu durumda. Bunlara ilave olarak, iki MCU'da da birbiri ile uyumlu yazılımların çalıştığı garanti edilmeli. Güncellemeyi yapan MEGA, diğer MCU yu sorgulamalı ve eğer orada beklediği sürüm yoksa, o beklediği sürümü MCU'ya yüklemeli. Bunun için de o sürümü kendi hafızasında tutuyor olması lazım.

İşin içinde baya ayrıntı var, olabildiğince tüm senaryoları belirleyip iyi bir şekilde test edilmesi lazım.

son 24 saattir kafamda bu olayı kurguluyorum ve henüz bir çıkış bulamadım. Yardımcı donanım dediğim nextion lcd ekran. Proje şu an atmega2560 ve nextiondan oluşuyor. Henüz 1 satır kod yazmış değilim algoritmalar üzerinde çalışıyorum. atmega ile tft lcd yi direkt sürmek için bir sürü kod yazacam ve hafıza işgal edeceğim birazda bundan kaçmak ve zaman kazanmak zaman kazanmak için nextion kullandım ama bana kolaylık mı sağlıyor zorluk mu çıkartıyor emin değilim...

Nextion sd kart veya uart üzerinden güncelleniyor. Güncelleme dosyası tft uzantılı kendine münhasır bir dosya. Sd kart ile güncelleme benim için söz konusu olamaz. Uart ile güncelleme için gerekli protokol yayınlanmış. burdan yürümem lazım.

Normalde uart ile güncelleme için bilgisayar com bağlantısı yapınca editor üzerinden dosyayı yüklüyebiliyorsun. Bende uart atmega2560 a bağlı. bunun için bir çalışma yapılmış ve atmega pc den aldığı veriyi nextion a yönlendirerek güncelleme yapıyormuş...


Şimdi biraz toparlayayım arduino mega pro var elimde bir miktar bu ürünleri kullanmak istiyorum. projede web arayüzü olacağı için ethernet modulu olacak yani ağa bağlı olacağım. lcd ekranımız var. uart üzerinden kardeş kardeş çalışıyorlar. birde aynı ağa bağlı uzaktan erişebileceğim bir windows pc de var bunların yanında.

1. Yöntem olarak Pc ye uzaktan erişip arduinoya hex upload ederim. Kolayca güncellerim. Ardından arduino üzerinde bypass yolu ile ekranı güncellerim. Ekranı güncellemek için pc üzerinden tft doyasını göndren basit bit program yok yada ben bulamadım. Herhangi bir terminal programı ile de olmaz. Uplaod protokolüne göre parçalayıp göndermek gerekiyor... Bunun içinde program yazmak lazım.... Bir dez avantaj daha var nextionun uart üzerinden güncellenmesi uzun sürüyor. 1 saat sürse uzaktan 1 saat bağlı kalacağım veya pc yi 1 saat meşgül edeceğim...

2. Yöntem konuyu açma nedenim zaten dosyaları kendi server ım üzerinden doğrudan donanıma ulaştıracak bir yol bulmak.

Aslında bütün sıkıntı nextionu güncellemek. Birde şöyle bir saçmalık var. ekran üzerinde bir logo resim var ve yanında da bir kaç buton ile ilgili biraz kod... ben resmi güncellemeyeceğim halde her güncellemede resimler tekrar tekrar hafızaya yeniden atılacak. cunkü tek bir dosya içinde gömülü hepsi. Halbuki normal bir lcd ekran shield kullansam resimleri sd karta atacam ömürbillah duracak orada...

Acaba bu nextion ekrandan vazgeçsem mi...

Güncelleme işi baya bir ortalığı karıştırmış durumda :)

Şu konuda da fikrinizi almak istiyorum. Şu an arduino ile kodlamaya aşınayım. nextion kullanmadım normal lcd kullamdım diyelim. projeyi yazmaya başladım sona doğru 2560 ın program hafızası yetmez ise ne yaparım?
 
@taydin hakılısın hocam ,ama sanırım dört beş yıl önce ESP8266 ile (ilk versiyonuydu sanırım ) neredeyse 10 gün uğraşmama rağmen ne networke bağlanabildi nede doğru dürüst çalıştı.
Burada linkler veriliyor çok sağolun ama önemli olan sistemin tam olarak düzgün çalıştığı örnekler /ayarlar ve kodlar önemli bence
 
Bir dez avantaj daha var nextionun uart üzerinden güncellenmesi uzun sürüyor. 1 saat sürse uzaktan 1 saat bağlı kalacağım veya pc yi 1 saat meşgül edeceğim...

Bir güncellemenin 1 saat sürüyor olması bence UART'ı elemek için kendi başına yeterli bir sebep. O bir saat içinde herşey olabilir. Birisi gelir bilgisayarı kurcalar, elektrik kesilir, millet öğlen tatiline çıkar muhatap alacak adam bulamazsın falan filan.

SDCARD ile güncellemeyi niye baştan eliyorsun? Böyle sistemlerin neredeyse tamamında bu özellik var. Benim 3d yazıcının kontrol kartında güncelleme bu şekilde. Eğer müşteriler tamamen teknoloji cahili son kullanıcılar ise, bu metot olmaz tabi. Ama müşteriler bir fabrikada çalışan personel ise, herhalde bir sdcard yuvasına sdcard takabilecek beceriye sahiptir.
 
@taydin hakılısın hocam ,ama sanırım dört beş yıl önce ESP8266 ile (ilk versiyonuydu sanırım ) neredeyse 10 gün uğraşmama rağmen ne networke bağlanabildi nede doğru dürüst çalıştı.
Burada linkler veriliyor çok sağolun ama önemli olan sistemin tam olarak düzgün çalıştığı örnekler /ayarlar ve kodlar önemli bence

Hazır kodla bir yere varmak çok zor. O kodu yazan kişi tam olarak kendi işini görecek şekilde birşey yazmıştır, ama birebir senin ihtiyaçlarını karşılayacağının garantisi yok. Olayı anlayarak kendin yapman en doğrusu. Sen bir başla, gerekirse biz de destek veririz. Aslında ben de bu modüllerden alayım bakalım, bazı temel projeler yapalım.
 
UART ın hızı için 5 Mbps diyor normale 2-3 saniye sürecek işlem gibi görülüyor hadi handshake için 2-3 saniye ayır desen ençok 10 saniyede bitecek iş gibi duruyor
 
Hazır kodla bir yere varmak çok zor. O kodu yazan kişi tam olarak kendi işini görecek şekilde birşey yazmıştır, ama birebir senin ihtiyaçlarını karşılayacağının garantisi yok. Olayı anlayarak kendin yapman en doğrusu. Sen bir başla, gerekirse biz de destek veririz. Aslında ben de bu modüllerden alayım bakalım, bazı temel projeler yapalım.

Yav anlıyorum benimde kimsenin kütüphanesine ihtiyacım yok ama hardware de bazı şeyleri izah etmiyorlar .O dört yıl önceki ESP8266 için bu donanımı çıkaran Çinli firmanın elemanına skype da soruyorum şu pinin görevi nedir diye abla hiçbirşey yazmıyor.
Aradan zaman geçince anlıyorsun ki açılışta bazı pinlerin özel konfigrasyonları var öğreniyorsun ama sende de heves kalmıyor
 
Bir güncellemenin 1 saat sürüyor olması bence UART'ı elemek için kendi başına yeterli bir sebep. O bir saat içinde herşey olabilir. Birisi gelir bilgisayarı kurcalar, elektrik kesilir, millet öğlen tatiline çıkar muhatap alacak adam bulamazsın falan filan.

SDCARD ile güncellemeyi niye baştan eliyorsun? Böyle sistemlerin neredeyse tamamında bu özellik var. Benim 3d yazıcının kontrol kartında güncelleme bu şekilde. Eğer müşteriler tamamen teknoloji cahili son kullanıcılar ise, bu metot olmaz tabi. Ama müşteriler bir fabrikada çalışan personel ise, herhalde bir sdcard yuvasına sdcard takabilecek beceriye sahiptir.

Sd kart yuvası içerde kalıyor ve ulaşması çok zor. Sd kartı bir şekilde dışarıdan ulaşılacak panel tipi bir yuvaya dönüştürmek gerekir. Nextion un üzerindeki yuvayı söküp kablo lehimlemek veya ucu sd kart gibi olan uzatma kablosu varmıdır bilmiyroum. Gerçi sd kartı takınca devreye giren bir switch var ise uzatma olmaz kablo lehimlemek gerekir oda şık olmaz...


@Omega nextion resimleride güncelleme dosyası içerisine gömdüğü için boyut büyük oluyor. Bu nedenle uzun sürüyor... dosya 16Mbyte a kadar çıkabiliyor. Çalışmayı bitirdin tek bir harf değiştirecen tekrar 16mb doysa atıyorsun...
 
@Omega nextion resimleride güncelleme dosyası içerisine gömdüğü için boyut büyük oluyor. Bu nedenle uzun sürüyor... dosya 16Mbyte a kadar çıkabiliyor. Çalışmayı bitirdin tek bir harf değiştirecen tekrar 16mb doysa atıyorsun...

Şimdilik çok önemli bir ayrıntı değil ama 16 mb da olsa UART saniyede 5 MB gönderebiliyorsa, yani süre asla 5 saniyeden fazla olmaz gibi .
 

Forum istatistikleri

Konular
5,790
Mesajlar
99,026
Üyeler
2,464
Son üye
s4met

Son kaynaklar

Son profil mesajları

cemalettin keçeci wrote on HaydarBaris's profile.
barış kardeşim bende bu sene akıllı denizaltı projesine girdim ve sensörleri arastırıyorum tam olarak hangi sensör ve markaları kullandınız yardımcı olabilir misin?
m.white wrote on Altair's profile.
İyi akşamlar.Arabanız ne marka ve sorunu nedir.Ben araba tamircisi değilim ama tamirden anlarım.
* En mühim ve feyizli vazifelerimiz millî eğitim işleridir. Millî eğitim işlerinde mutlaka muzaffer olmak lâzımdır. Bir milletin hakikî kurtuluşu ancak bu suretle olur. (1922)
Kesici/Spindle hızı hesaplamak için SpreadSheet UDF'leri kullanın, hesap makinesi çok eski kalan bir yöntem :)
Dr. Bülent Başaran,
Elektrik ve Elektronik Mühendisi
Yonga Tasarım Özdevinimcisi
Üç güzel "çocuk" babası
Ortahisar/Ürgüp/Konya/Ankara/Pittsburgh/San Francisco/Atlanta/Alaçatı/Taşucu...

Back
Top