Ana içeriğe git

Haberler

Konu: nRF24L01+ Kütüphanesi (STM32 HAL Lib. uyumlu ) (1561 Kez okunmuş) önceki konu - sonraki konu

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.
  • Cemre.
  • [*]
nRF24L01+ Kütüphanesi (STM32 HAL Lib. uyumlu )
Merhaba,

Birkaç gündür üzerinde çalıştığım kütüphane paylaşılacak olgunluğa erişmiştir. Katkıda bulunmak isteyen arkadaşlar için, test/geliştirme/hata giderme ve datasheet çevirisi konularında yardıma ihtiyacım olduğunu söyleyebilirim.

Umarım faydalı olur.

https://maviled.wordpress.com/2017/02/26/stm32-hal-nrf24l01-kutuphanesi/

Şuanda iki adet basit tx/rx örneği mevcut. Gerekli açıklamalar GitHub deposunda yapıldı.
Dökümantasyon klasörü içerisinde datasheet'in küçük bir kısmının Türkçe'ye çevirildiğini görebilirsiniz. Amacım 7. bölümün tamamını çevirebilmek. Bu amaç doğrultusunda küçük parçalar halinde çeviri yapabilecek arkadaşlar da belirtirlerse memnun olurum.

Herkese iyi çalışmalar.
no border, no nation, stop deportation.

  • ashes
  • [*][*][*][*][*]
Ynt: nRF24L01+ Kütüphanesi (STM32 HAL Lib. uyumlu )
Yanıt #1
nRF üzerinde koşacak bir protokol planlıyorum fakat değer mi emin olamıyorum. Xbee de ki gibi mesh network library si olayına girmeyi düşünüyorum nRF üzerinde koşacak. Alternatifi var mıdır aynı fiyatlarda stacki içinde taşıyan bilginiz var mı ?

  • Cemre.
  • [*]
Ynt: nRF24L01+ Kütüphanesi (STM32 HAL Lib. uyumlu )
Yanıt #2
@ashes hocam, nordicsemi.com'a bakabilirsiniz. nRF52 serisini öneriyorlar yeni ürünler için ve SoC olanları mevcut.
Misal, http://www.nordicsemi.com/eng/Products/nRF52840
Kullanma fırsatım olmadı yalnız tek başına uygulama geliştirecek kadar özellik mevcut çipte.
no border, no nation, stop deportation.

  • 1k
  • [*]
Ynt: nRF24L01+ Kütüphanesi (STM32 HAL Lib. uyumlu )
Yanıt #3
nRF24 sudan ucuz bulunabiliyor. Patatesler mi bilmiyorum ama.

nRF24 için Mesh, TCP/IP v.s v.s buyrun :)

https://tmrh20.github.io/

  • Cemre.
  • [*]
Ynt: nRF24L01+ Kütüphanesi (STM32 HAL Lib. uyumlu )
Yanıt #4
nRF24 sudan ucuz bulunabiliyor. Patatesler mi bilmiyorum ama.

nRF24 için Mesh, TCP/IP v.s v.s buyrun :)

https://tmrh20.github.io/
Söylediğiniz gibi sudan ucuz. Ben 5TL gibi bir fiyatla aldım ve genel manada datasheet ne diyorsa o şekilde çalıştı. Plus olmayan modeli nordic artık kullanmayın demiş. Ancak Plus için böyle bir ibare yok. Forumlarında soranlara ise genel olarak nRF52 serisini öneriyorlar gördüğüm kadarıyla. Ama söylediğiniz gibi erişmek bu kadar kolayken bir süre daha popüler kalacağa benziyor.
no border, no nation, stop deportation.

  • ashes
  • [*][*][*][*][*]
Ynt: nRF24L01+ Kütüphanesi (STM32 HAL Lib. uyumlu )
Yanıt #5
nRF24 sudan ucuz bulunabiliyor. Patatesler mi bilmiyorum ama.

nRF24 için Mesh, TCP/IP v.s v.s buyrun :)

https://tmrh20.github.io/
Hobi için güzel projelerde sahada denenmiş mi acaba bunlar, kurulan protokolün ve kodun saha tecrübesi önemli :)

  • ashes
  • [*][*][*][*][*]
Ynt: nRF24L01+ Kütüphanesi (STM32 HAL Lib. uyumlu )
Yanıt #6
nRF24 sudan ucuz bulunabiliyor. Patatesler mi bilmiyorum ama.

nRF24 için Mesh, TCP/IP v.s v.s buyrun :)

https://tmrh20.github.io/
Söylediğiniz gibi sudan ucuz. Ben 5TL gibi bir fiyatla aldım ve genel manada datasheet ne diyorsa o şekilde çalıştı. Plus olmayan modeli nordic artık kullanmayın demiş. Ancak Plus için böyle bir ibare yok. Forumlarında soranlara ise genel olarak nRF52 serisini öneriyorlar gördüğüm kadarıyla. Ama söylediğiniz gibi erişmek bu kadar kolayken bir süre daha popüler kalacağa benziyor.
Çin'den aldığım bir nrf kartında saçma sapan hareketler oluyordu. Anlamsız interruptlar çıkıyordu interrupt regi boştu vs. Sonra değiştirince boardu herşey düzeldi. Çinli gardaşlarda arada çakıyorlar patatesleri bize :)

  • Cemre.
  • [*]
Ynt: nRF24L01+ Kütüphanesi (STM32 HAL Lib. uyumlu )
Yanıt #7
Kütüphanenin geliştirilmesi ile ilgili bir yardım isteyeyim o zaman sizden.

https://github.com/hcemreyilmaz/STM32_HAL_nRF24L01P/blob/master/STM32F1xx_nRF24L01P_Driver/Src/nRF24L01P.c
Kaynak koda bakarsanız satır 128 dolaylarında üç adet veri almak ve göndermek için kullanılan fonksiyon mevcut.

Kod: [Seç]
HAL_StatusTypeDef HAL_nRF24L01P_ReceivePacket(nRF24L01P *nRF, uint8_t *Data);
HAL_StatusTypeDef HAL_nRF24L01P_TransmitPacket(nRF24L01P *nRF, uint8_t *Data);
HAL_StatusTypeDef HAL_nRF24L01P_TransmitPacketACK(nRF24L01P *nRF, uint8_t *Data, nRF_DATA_PIPE Pipe);

Burada Interrupt gelsin ve işlemin tamamlanıldığından emin olunsun diye nRF->Busy bayrağının indirilmesi bekleniyor. Tabiki herhangi bir bağlantı kopması vs durumunda işlemci burada çakılıp kalacak. Bu noktada Timeout gibi veya farklı bir fonksiyonel yaklaşım geliştirmemde yardımcı olabilir misiniz?

Timeout yapmak istesem nasıl yapmalıyım mesela? İlk aklıma gelen while'a girmeden önce GetTick ile SysTickTimer değerini kaydedip while içerisinde geçen süreyi bir Timeout değeri ile karşılaştırmak olabilir.
Ya da farklı bir yaklaşım?
no border, no nation, stop deportation.

  • ashes
  • [*][*][*][*][*]
Ynt: nRF24L01+ Kütüphanesi (STM32 HAL Lib. uyumlu )
Yanıt #8
Kendi kullandığım kütüphanede atışı yapıp IRQ ucunu dinleme yolunu seçmişim. Yani şöyle bir paket atılıyor bu paketin sonucu state machine yardımıyla taranıyor. Eğer IRQ ucundan alınan uyarı da TX fail veya success dönmüşse tx izni boşa bırakılıyor. Bir sonraki paketin atışı gerçekleştiriliyor. Tabii bunun için atış isteklerini bir queue ya koymak gerekebilir.

  • Cemre.
  • [*]
Ynt: nRF24L01+ Kütüphanesi (STM32 HAL Lib. uyumlu )
Yanıt #9
Kendi kullandığım kütüphanede atışı yapıp IRQ ucunu dinleme yolunu seçmişim. Yani şöyle bir paket atılıyor bu paketin sonucu state machine yardımıyla taranıyor. Eğer IRQ ucundan alınan uyarı da TX fail veya success dönmüşse tx izni boşa bırakılıyor. Bir sonraki paketin atışı gerçekleştiriliyor. Tabii bunun için atış isteklerini bir queue ya koymak gerekebilir.

Yani aslında buradaki while'ı kaldırıp tekrar gönderme yapacağım zaman Busy bayrağını kontrol etsem yeterli olur mu diyorsunuz?
no border, no nation, stop deportation.