İçindekiler:

Arduino Bölüm 3'te Kolay Çok Düşük Güç BLE - Nano V2 Değiştirme - Rev 3: 7 Adım (Resimlerle)
Arduino Bölüm 3'te Kolay Çok Düşük Güç BLE - Nano V2 Değiştirme - Rev 3: 7 Adım (Resimlerle)

Video: Arduino Bölüm 3'te Kolay Çok Düşük Güç BLE - Nano V2 Değiştirme - Rev 3: 7 Adım (Resimlerle)

Video: Arduino Bölüm 3'te Kolay Çok Düşük Güç BLE - Nano V2 Değiştirme - Rev 3: 7 Adım (Resimlerle)
Video: prototip-LE Arduino (Bölüm 1) 2024, Kasım
Anonim
Arduino Bölüm 3'te Kolay Çok Düşük Güç BLE - Nano V2 Değiştirme - Rev 3
Arduino Bölüm 3'te Kolay Çok Düşük Güç BLE - Nano V2 Değiştirme - Rev 3
Arduino Bölüm 3'te Kolay Çok Düşük Güç BLE - Nano V2 Değiştirme - Rev 3
Arduino Bölüm 3'te Kolay Çok Düşük Güç BLE - Nano V2 Değiştirme - Rev 3
Arduino Bölüm 3'te Kolay Çok Düşük Güç BLE - Nano V2 Değiştirme - Rev 3
Arduino Bölüm 3'te Kolay Çok Düşük Güç BLE - Nano V2 Değiştirme - Rev 3

Güncelleme: 7 Nisan 2019 – lp_BLE_TempHumidity Rev 3, pfodApp V3.0.362+ kullanarak Tarih/Saat grafikleri ekler ve veri gönderirken otomatik kısma

Güncelleme: 24 Mart 2019 – lp_BLE_TempHumidity Rev 2, daha fazla çizim seçeneği ve i2c_ClearBus ekler, GT832E_01 desteği ekler

>

Tanıtım

Bu öğretici, A Redbear Nano V2 Değiştirme, 3. Bölüm'ün 3. Bölümüdür. Bu, bu projenin 2. Sürümüdür. Revizyon 2 PCB, madeni para hücresi ve sensör için montaj içerir, yapıyı basitleştirir ve doğrudan güneş ışığından korurken sensörün etrafındaki hava akışını iyileştirir. Revizyon 1 burada.

Bölüm 1 – Çok Düşük Güçlü BLE cihazlarının Arduino ile Oluşturulması, Arduino'yu nRF52 düşük güçlü cihazları kodlamak için ayarlamayı, programlama modülünü ve besleme akımının ölçülmesini kapsar. Ayrıca, özel düşük güçlü zamanlayıcılar ve karşılaştırıcılar ile geri dönen girişleri ve nRF52 cihazına bağlanmak ve cihazı kontrol etmek için pfodApp kullanımını da kapsar.

Bölüm 2 – Çok Düşük Güç Sıcaklığı Nem Monitörü, düşük güçlü pil / güneş monitörü oluşturmak için Redbear Nano V2 modülü ve Si7021 sıcaklık/nem sensörünün kullanımını kapsar. Ayrıca, Si7021 kitaplığının düşük güç olacak şekilde değiştirilmesini, mevcut tüketimini <29uA'ya düşürmek için BLE cihazının ayarlanmasını ve cep telefonunuz için özel bir sıcaklık/nem ekranı tasarlamayı da kapsar.

Bölüm 3 – Redbear Nano V2 Değiştirme, bu, Nano V2 yerine diğer nRF52 tabanlı modüllerin kullanımını kapsar. Tedarik bileşenlerinin seçilmesini, yapımını, nRF52 çip programlama korumasını kaldırmayı, NFC pinlerini normal GPIO olarak kullanmayı ve Arduino'da yeni bir nRF52 kartı tanımlamayı kapsar.

Bu talimat, Nano V2 yedeği olarak bir SKYLAB SBK369 kartı kullanarak Çok Düşük Güçlü BLE Sıcaklık ve Nem Monitörü oluşturarak Arduino ile Kolaylaştırılan Bölüm 1 Çok Düşük Güçlü BLE cihazlarının pratik bir uygulamasıdır. Bu öğretici, yeni bir kart tanımının nasıl oluşturulacağını ve yeniden programlanmasına izin vermek için nRF52 programlama korumasının nasıl kaldırılacağını kapsar. Bu öğretici, düşük güç tüketimi için aynı ayarlanmış BLE parametreleriyle Bölüm 2 ile aynı taslağı kullanır ve pil VEYA pil + güneş VEYA yalnızca güneş enerjisiyle çalıştırılabilir. Düşük güç için BLE parametrelerinin ayarlanması Bölüm 2'de ele alındı

lp_BLE_TempHumidity'nin Rev 3'ü, yalnızca Arduino millis() kullanarak verileri tarih ve saate göre çizer. millis() ve pfodApp kullanarak Arduino Tarih ve Saatine bakın ve pfodApp'ın en son sürümünü (V3.0.362+) kullanın.

pfod_lp_nrf52.zip'in Rev 4'ü ayrıca GT832E_01 modülünü destekler ve bu eğitim, standart GPIO'lar olarak NFC nRF52 pinlerinin kullanımını kapsar.

Burada inşa edilen monitör, Coin Cell veya 2 x AAA pille yıllarca, güneş enerjisiyle daha da uzun süre çalışacak. Mevcut sıcaklık ve nemi görüntülemenin yanı sıra monitör, son 36 Saatlik 10 dakikalık okumaları ve son 10 günlük saatlik okumaları saklar. Bunlar, Android mobil cihazınızda çizelgelenebilir ve bir günlük dosyasına kaydedilen değerler. Android Programlaması gerekmez, pfodApp bunların hepsini halleder. Android ekranı ve grafiği tamamen Arduino çiziminiz tarafından kontrol edilir, böylece gerektiği gibi özelleştirebilirsiniz.

Bölüm 2, nRF52832 BLE bileşeni için bir Redbear Nano V2 kartı kullandı. Bu proje, bunu daha ucuz bir SKYLAB SKB369 kartıyla değiştiriyor. Bölüm 2'de olduğu gibi, Sıcaklık / Nem Sensörü için bir Sparkfun Si7021 devre kartı kullanılır. Si7021 ile değiştirilmiş bir düşük güçlü kitaplık kullanılır.

Adım 1: Neden Nano V2 Değişimi?

i) Nano V2 birkaç aydır üretim dışıydı ve Particle.io serisine uymuyor gibi görünüyor, bu nedenle ne kadar süreyle mevcut olacağı belli değil.

ii) Nano V2 daha pahalıdır. Bununla birlikte ekstra özelliklere de sahiptir. Aşağıya bakınız.

iii) Nano V2'nin her iki tarafında, ona daha yüksek bir profil veren ve montajı zorlaştıran bileşenler bulunur.

iv) Nano V2'nin sınırlı G/Ç pinleri vardır ve D6 ila D10'u kullanmak, uçabilen kablolar gerektirir.

Nano V2 kartı SKYLAB SKB369 kartından daha pahalı olsa da, ~US17'ye karşı ~US5'e göre Nano V2'nin daha fazla özelliği var. Nano V2, bir 3.3V regülatör ve besleme kapasitörleri, nRF52 DC/DC dönüştürücü seçeneğini kullanmak için ekstra bileşenler, bir çip anten ve bir uFL SMT anten konektörü içerir.

Diğer bir alternatif ise www.homesmartmesh.com tarafından kullanılan GT832E_01 modülüdür. pfod_lp_nrf52.zip'in Rev 4'ü ayrıca GT832E_01 modülünün programlanmasını da destekler. SKYLAB SKB369 ve GT832E_01, https://www.aliexpress.com adresinde mevcuttur.

Redbear (Particle.io) ayrıca 3V3 regülatör, DC/DC bileşenleri veya 32Khz kristal bileşenleri olmayan çıplak bir modüle sahiptir.

anahat

Bu projenin 4 göreceli bağımsız bölümü vardır: -

Bileşen Seçimi ve Yapısı nRF52 kodlama koruma bayrağını kaldırma ve çizimi programlama Yeni Arduino nRF52 Kart Tanımı Oluşturma nRF52 NFC pinlerini GPIO'lar olarak yeniden yapılandırma

Adım 2: Bileşen Seçimi ve Yapımı

Bileşen Seçimi

Bölüm 2'de seçilen nRF52832 ve Si7021 bileşenlerine ek olarak, bu projeye bir 3.3V regülatör ve besleme kapasitörleri eklenir.

Voltaj Regülatörü bileşeni

Burada kullanılan regülatör MC87LC33-NRT'dir. 12V'a kadar girişleri işleyebilir ve <3.6uA, tipik olarak 1.1uA'lık bir hareketsiz akıma sahiptir. TLV704 regülatör kullanılan Nano V2, biraz daha yüksek sessiz akıma, tipik olarak 3.4uA'ya sahiptir ve 24V'a kadar daha yüksek giriş voltajlarını işleyebilir. Bunun yerine MC87LC33-NRT seçildi, çünkü veri sayfası, TLV704 veri sayfasının vermediği halde, giriş voltajı 3,3V'nin altına düştüğünde nasıl tepki vereceğini belirtir.

TLV704, minimum 2.5V'luk bir giriş voltajı belirtir ve bunun altında ne olacağı veri sayfasından net değildir. nRF52832 1,7V'a, Si7023 ise 1,9V'a düşecek. MC87LC33-NRT ise düşük akımlar için 0V'a kadar giriş/çıkış voltajı farklarını belirtir (veri sayfasında Şekil 18). Bileşen seçimi göz önüne alındığında, belirtilen performansa sahip olduğu için MC87LC33-NRT seçildi.

Tedarik Kapasitörleri

MC87LC33-NRT regülatörü, kararlılık ve yanıt için bazı besleme kapasitörlerine ihtiyaç duyar. Veri sayfasında > 0.1 uF'lik bir çıkış kapasitörü önerilir. SKYLAB SBK369, karta yakın beslemede 10uF/0.1uF kapasitörler de belirtir. Daha büyük kapasitörler, nRF52 TX akım artışlarını sağlamaya yardımcı olur. Burada 4 adet 22uF 25V ve 3 adet 0.1uF 50V Seramik kapasitör kullanılmıştır. SKYLAB SBK369'un yakınına bir 22uF ve bir 0.1uF kondansatör yerleştirildi, stabiliteyi sağlamak için MC87LC33-NRT'nin çıkışına bir 0.1uF yerleştirildi ve MC87LC33-NRT'nin girişine bir 22uF ve 0.1uF yerleştirildi ve bir Başka bir akım deposu olarak Vin/GND pinleri boyunca lehimlenen 2 x 22uF kapasitör. Karşılaştırma için NanoV2 kartının TLV704 regülatörünün girişinde 22uF / 0.1uF ve çıkışında 0.1uF vardır.

Ekstra akım rezervuar kapasitörleri, güneş pilleri ile çalışırken daha yüksek bir voltaja şarj olmaları için 3.3V regülatörün girişine yerleştirildi. Daha yüksek voltaja şarj etmek, Tx artışlarını sağlamak için daha fazla akım depolamaya eşittir.

Seramik X5R kapasitörler düşük seri direnç ve düşük kaçak akıma sahip oldukları için kullanılmaktadır. Direnç tipik olarak 100, 000MΩ veya 1000MΩ – µF hangisi daha azsa. Yani 22uF için 22000MΩ, yani dört 22uF kapasitör için 3.3V veya 0.6nA'da 0.15nA sızıntı var. Bu ihmal edilebilir. Karşılaştırma için Düşük ESR, Düşük Sızıntılı Panasonic Elektrolitik kapasitörler <0.01CV kaçak akımlara sahiptir. Yani 22uF 16V kapasitör için kaçak <10uA'dır. Not: Bu, bu durumda 16V olan anma gerilimindeki kaçaktır. Düşük voltajlarda kaçak daha düşüktür, yani 3.3V'de <2.2uA.

Parça listesi

Aralık 2018 itibarıyla birim başına yaklaşık maliyet, ~61 ABD Doları, nakliye ve Bölüm 1'deki programcı hariç

  • SKYLAB SKB369 ~US$5 örn. Aliexpress
  • Sparkfun Si7021 koparma tahtası ~8 ABD Doları
  • 2 x 53mm x 30mm 0.15W 5V güneş pilleri örn. Aşırı Uçuş ~ 1,10 ABD Doları
  • 1 x PCB SKYLAB_TempHumiditySensor_R2.zip 5 indirim için ~25 ABD Doları www.pcbcart.com
  • 1 x MC78LC33 3.3V regülatör, ör. Digikey MC78LC33NTRGOSCT-ND ~1 ABD Doları
  • 2 x 0.1uF 50V seramik C1608X5R1H104K080A ör. Digikey 445-7456-1-ND ~0,3 ABD Doları
  • 4 x 22uF 16V seramik GRM21BR61C226ME44L ör. Digikey 490-10747-1-ND ~2 ABD Doları
  • 1 x BAT54CW, ör. Digikey 497-12749-1-ND ~0,5 ABD Doları
  • 1 x 470R 0,5W %1 direnç ör. Digikey 541-470TCT-ND ~0,25 ABD Doları
  • 1 x 10V 1W zener SMAZ10-13-F ör. Digikey SMAZ10-FDICT-ND ~0,5 ABD Doları
  • 3 mm x 12 mm naylon vidalar, örn. Jaycar HP0140 ~3 AUD
  • 3mm x 12mm naylon somunlar, örn. Jaycar HP0146 ~3 AUD
  • Scotch Kalıcı Montaj Bandı Cat 4010 ör. Amazon'dan ~6,6 ABD doları
  • CR2032 pil tutucu, örn. HU2032-LF ~1.5 ABD Doları
  • CR2032 pil ~1 ABD Doları
  • Perspex levha, 3,5 mm ve 8 mm
  • pfodApp ~10 ABD Doları
  • Lehim Pastası örn. Jaycar NS-3046 ~13 ABD Doları

Adım 3: İnşaat

Yapı
Yapı
Yapı
Yapı
Yapı
Yapı

Proje küçük bir PCB üzerine inşa edilmiştir. PCB, pcbcart.com tarafından bu Gerber dosyalarından üretilmiştir, SKYLAB_TempHumiditySensor_R2.zip PCB, Nano V2 pinini taklit eder ve diğer BLE projeleri için kullanılmak için yeterince genel amaçlıdır.

Bu şematik (pdf versiyonu)

Önce SMD bileşenlerini lehimleyin, ardından SKYLAB SKB369 kartını monte edin

Hemen hemen tüm bileşenler yüzeye monte cihazlardır (SMD). Kondansatörlerin ve IC'lerin elle lehimlenmesi zor olabilir. Önerilen yöntem, PCB'yi bir mengene içinde tutmak ve pedlere az miktarda lehim pastası uygulamak ve SKB369 kartı hariç SMD bileşenlerini PCB üzerine yerleştirmektir. Daha sonra bir ısı tabancası kullanarak lehim pastası eriyene kadar PCB'nin alt tarafına ısı uygulayın ve ardından bileşenleri üflememeye dikkat ederek kartın üstünden hızlı bir geçiş yapın. Son olarak, bileşenleri küçük uçlu bir havya ile rötuşlayın. Her iki ucu da eritmek ve bir ucu lehimlerken bileşenin gevşemesini sağlamak kolay olduğundan, kapasitörlere ve rezistöre dikkat edin.

Bu revizyon, ekstra 22uF 16V seramik kapasitörler ekler. Bu ekstra kapasitörler, pilden çekilen akım artışlarını ve ayrıca güneş pillerinden güç verildiğinde voltaj düşüşlerini azaltır. Güneş pillerinden gelen voltaj akü voltajının üzerinde kaldığı sürece aküden akım çekilmez.

SMD bileşenleri monte edildikten sonra SKYLAB SKB369 kartına lehimleyebilirsiniz. SKB369 tırnaklarının bir tarafında iki test noktası deliği vardır. SKB369 kartını konumlandırmak için bir karton tabanda iki pim kullanın ve pimleri dikkatlice hizalayın. (Revizyon 1 PCB'yi kullanarak yukarıdaki örnek fotoğrafa bakın) Ardından, diğer pimleri lehimlemeden önce kartı yerinde tutmak için karşı taraftaki bir pimi lehimleyin.

Bitmiş kısımda CLK'dan GND'ye giden Gnd bağlantı kablosunu not edin. Bu, CLK girişindeki gürültünün nRF52 yongasını yüksek akım hata ayıklama moduna tetiklemesini önlemek için programlamadan SONRA kurulur

Montaj Kutusu

Montaj kasası, 110mm x 35mm, 3mm kalınlığında iki parça perspeksten yapılmıştır. Güneş pillerinin altındaki 3,5 mm'lik parça, 3 mm'lik naylon vidaları almak için vuruldu. Bu revize edilmiş yapı, Rev 1'den daha basitleştirilmiştir ve sensör etrafındaki hava akışını iyileştirir. Her iki uçtaki ekstra delikler, örneğin kablo bağları kullanılarak montaj içindir.

Adım 4: NRF52 Kodlama Koruma Bayrağını Kaldırma

NRF52 Kodlama Koruma Bayrağını Kaldırma
NRF52 Kodlama Koruma Bayrağını Kaldırma
NRF52 Kodlama Koruma Bayrağını Kaldırma
NRF52 Kodlama Koruma Bayrağını Kaldırma
NRF52 Kodlama Koruma Bayrağını Kaldırma
NRF52 Kodlama Koruma Bayrağını Kaldırma

Sıcaklık/Nem kartını yukarıda gösterildiği gibi Bölüm 1'de açıklanan Programcıya bağlayın.

Güneş pilleri ve piller takılı değilken, Vin ve Gnd programcının Vdd ve Gnd'sine (Sarı ve Yeşil uçlar) bağlanır ve SWCLK ve SWDIO, programlayıcı başlık panosunun Clk ve SIO'suna (Beyaz ve Gri uçlar) bağlanır.

nRF52 program korumasını kaldırma

Nordic Semi – Hata Ayıklama ve İzleme sayfasından DAP - Hata Ayıklama Erişim Bağlantı Noktası. Harici bir hata ayıklayıcı cihaza DAP aracılığıyla erişebilir. DAP, standart bir ARM® CoreSight™ Seri Kablo Hata Ayıklama Bağlantı Noktası (SW-DP) uygular. SW-DP, iki pinli bir seri arabirim olan SWDCLK ve SWDIO olan Seri Kablo Hata Ayıklama protokolünü (SWD) uygular.

Önemli: SWDIO hattında dahili bir çekme direnci vardır. SWDCLK hattında dahili bir aşağı çekme direnci vardır.

CTRL-AP - Erişim Bağlantı Noktasını Kontrol Et. Kontrol Erişim Bağlantı Noktası (CTRL-AP), DAP'deki diğer erişim bağlantı noktaları erişim bağlantı noktası koruması tarafından devre dışı bırakılsa bile aygıtın kontrolünü sağlayan özel bir erişim bağlantı noktasıdır. Erişim bağlantı noktası koruması, hata ayıklayıcının tüm CPU kayıtlarına ve bellek eşlemeli adreslere okuma ve yazma erişimini engeller. Erişim bağlantı noktası korumasını devre dışı bırakın. Erişim bağlantı noktası koruması, yalnızca CTRL-AP aracılığıyla bir ERASEALL komutu verilerek devre dışı bırakılabilir. Bu komut Flash, UICR ve RAM'i siler.

Particle's Debugger için programlayıcı olarak CMSIS-DAP'yi seçin ve nRF5 Flash SoftDevice'i seçin

Flaş çalışıyorsa, sorun değil, ancak genellikle modüller yeniden programlamaya karşı korunmuş olacak ve bu hata çıktısını Arduino penceresinde alacaksınız.

Çip Üzerinde Hata Ayıklayıcıyı Aç 0.10.0-dev-00254-g696fc0a (2016-04-10-10:13)GNU GPL v2 kapsamında lisanslanmıştır Hata raporları için https://openocd.org/doc/doxygen/bugs.html adresini okuyun debug_level: 2 Bilgi: yalnızca bir taşıma seçeneği; otomatik seçim 'swd' adaptör hızı: 10000 kHz cortex_m reset_config sysresetreq Bilgi: CMSIS-DAP: SWD Desteklenen Bilgi: CMSIS-DAP: Arayüz Başlatıldı (SWD) Bilgi: CMSIS-DAP: FW Sürüm = 1.10 Bilgi: SWCLK/TCK = 1 SWDIO/ TMS = 1 TDI = 0 TDO = 0 nTRST = 0 nRESET = 1 Bilgi: CMSIS-DAP: Arayüz hazır Bilgi: hız düşürme talebi: 10000 kHz - 5000 kHz maksimum Bilgi: saat hızı 10000 kHz Bilgi: SWD IDCODE 0x2ba01477 Hata: MEM bulunamadı -AP çekirdeği kontrol etmek için Hata: Hedef henüz incelenmedi SoftDevice yanıp sönerken hata.

Bu durumda, hafızayı temizlemek ve cihazı tekrar programlanabilir hale getirmek için nRF52'deki ERASEALL komut kaydını ayarlamanız gerekir. sandeepmistry nRF52 ile sağlanan openOCD sürümü, ERASEALL komut kaydına yazmak için gereken apreg komutunu içermez, bu nedenle daha sonraki bir sürümü yüklemeniz gerekir.

OpenOCD sürüm OpenOCD-20181130 veya üzerini yükleyin. Windows'un önceden derlenmiş sürümü https://gnutoolchains.com/arm-eabi/openocd/ adresinde mevcuttur. En son kod https://gnutoolchains.com/arm-eabi/openocd/ adresinde mevcuttur.

Bir komut istemi açın ve dir'yi OpenOCD kurulum dizinine değiştirin ve komutu girin

bin\openocd.exe -d2 -f arabirimi/cmsis-dap.cfg -f hedef/nrf52.cfg

cevap

Çip Üzerinde Hata Ayıklayıcıyı Aç 0.10.0 (2018-11-30) [https://github.com/sysprogs/openocd]GNU GPL v2 kapsamında lisanslanmıştır Hata raporları için https://openocd.org/doc/doxygen/ adresini okuyun bugs.html debug_level: 2 Bilgi: ilk kullanılabilir oturum aktarımı "swd"yi otomatik seçme. Geçersiz kılmak için 'taşıma seçimini' kullanın. adaptör hızı: 1000 kHz cortex_m reset_config sysresetreq Bilgi: tcl bağlantıları için 6666 numaralı bağlantı noktasında dinleme Bilgi: Telnet bağlantıları için 4444 numaralı bağlantı noktasında dinleme Bilgi: CMSIS-DAP: SWD Desteklenen Bilgi: CMSIS-DAP: FW Sürüm = 1.10 Bilgi: CMSIS-DAP: Arayüz Başlatıldı (SWD) Bilgisi: SWCLK/TCK = 1 SWDIO/TMS = 1 TDI = 0 TDO = 0 nTRST = 0 nRESET = 1 Bilgi: CMSIS-DAP: Arayüze hazır Bilgi: saat hızı 1000 kHz Bilgi: SWD DPIDR 0x2ba01477 Hata: Çekirdek Bilgiyi kontrol etmek için MEM-AP bulunamadı: gdb bağlantıları için 3333 numaralı bağlantı noktasında dinleme

Ardından bir terminal penceresi açın, örn. TeraTerm (Windows) veya CoolTerm (Mac) ve 127.0.0.1 bağlantı noktası 4444'e bağlanın

Telnet penceresi bir > gösterecek ve komut istemi Bilgi gösterecektir: tcp/4444'te 'telnet' bağlantısını kabul ediyor

Telnet penceresinde (yani TeraTerm) yazınnrf52.dap apreg 1 0x04bu, çipin korunduğunu gösteren 0x00000000 değerini döndürür. Ardından, nrf52.dap apreg 1 0x04 0x01 ve ardından nrf52.dap apreg 1 0x04 yazın, bu, çipin bir sonraki yeniden başlatmada ERASEALL olarak ayarlandığını gösteren 0x00000001 değerini döndürür.

Telnet bağlantısını kapatın ve komut isteminde openOCD programından çıkmak için Ctrl-C'yi kullanın ve ardından nRF52 modülünü kapatıp açın ve artık programlamaya hazır olacaktır.

Şimdi softdevice yanıp sönmeyi yeniden deneyin.

Artık nRF52 modülünü Arduino'dan programlayabilirsiniz.

Adım 5: SKYLAB SKB369'un Programlanması

SKYLAB SKB369'un Programlanması
SKYLAB SKB369'un Programlanması
SKYLAB SKB369'un Programlanması
SKYLAB SKB369'un Programlanması
SKYLAB SKB369'un Programlanması
SKYLAB SKB369'un Programlanması

Arduino'yu kapatın ve pfod_lp_nrf52 donanım desteğini kurun yönergelerini izleyerek pfod_lp_nrf52 desteğinin en son sürümünü yeniden yükleyin. En son pfod_lp_nrf52, SKYLAB SKB369 Nano2 yedek kartını içerir. Bunu pano olarak seçin ve ardından Bölüm 2'de açıklandığı gibi lp_BLE_TempHumidity, lp_BLE_TempHumidity_R3.zip'in Revizyon 3'ü ile programlayabilirsiniz.

Programlama başarısız olursa. Tüm Arduino pencerelerini kapatın, USB kablolarını çıkarın, Arduino'yu yeniden başlatın ve programlayıcı USB kablosunu tekrar takın ve nRF52 modülünün USB kaynağını tekrar takın ve tekrar deneyin.

Ardından mevcut ve geçmiş sıcaklık ve nemi görüntülemek için pfodApp aracılığıyla bağlanın. Geçmiş grafiği görüntüledikten sonra, okumalar, milisaniyelik zaman damgalarıyla, cep telefonunuzdaki günlük dosyasına kaydedilir ve ayrıca ham veri ekranında da bulunur.

Günlük dosyası ayrıca bir elektronik tabloda tarih ve saat grafiklerini yeniden oluşturmak için gerekli olan fazladan verileri de içerir. Ayrıntılar için millis() ve pfodApp kullanarak Arduino Tarih ve Saatine bakın.

Adım 6: Yeni Bir Arduino NRF52 Board Tanımı Oluşturma

Yeni Arduino NRF52 Board Tanımı Oluşturma
Yeni Arduino NRF52 Board Tanımı Oluşturma
Yeni Arduino NRF52 Board Tanımı Oluşturma
Yeni Arduino NRF52 Board Tanımı Oluşturma
Yeni Arduino NRF52 Board Tanımı Oluşturma
Yeni Arduino NRF52 Board Tanımı Oluşturma
Yeni Arduino NRF52 Board Tanımı Oluşturma
Yeni Arduino NRF52 Board Tanımı Oluşturma

Yeni bir nRF52 panosunu desteklemek için a) pano dosyalarıyla varyantlar dizini altına yeni bir dizin eklemeniz ve b) yeni panoyu Arduino'ya eklemek için boards.txt dosyasını düzenlemeniz gerekir.

Yeni bir nRF52 kart çeşidi ekleme

Bölüm 1, pfod_lp_nrf52 donanım desteğinin kurulması bölümünde anlatıldığı gibi, pfod_lp_nrf52 desteği ile güncellediğiniz sandeepmistry paketinin donanım alt dizinini bulun. \hardware\nRF5\0.6.0\variants alt dizinini açın ve yeni anakartınız için yeni bir dizin oluşturun, örn. varyant.cpp ve pins_arduino.h Bunları diğer pano varyantları dizinlerinden kopyalayabilirsiniz. SKYLAB_SKB369_Nano2değiştirme için, dosyaları ilk olarak RedBear_BLENano2 varyantından kopyaladım.

pins_arduino.h dosyası

pins_arduino.h dosyasının değiştirilmesi gerekmez. Sadece varyant.h dosyasını içerir

varyant.h dosyası

Panonuzun sahip olacağı toplam pin sayısını tanımlamak için varyant.h dosyasını düzenleyin, PINS_COUNT

NOT: sandeepmistry paketinde NUM_DIGITAL_PINS, NUM_ANALOG_INPUTS ve NUM_ANALOG_OUTPUTS ayarları yok sayılır

Anakartınız daha fazla veya daha az analog pin sağlıyorsa, varyants.h dosyasının /* Analog Pins */ bölümünü güncelleyin.

NOT: NanoV2 ve SKYLAB kartları için Analog pinler Dijital pinler A0 == D0 vs. ile eşleştirilir

Bu olmazsa olmaz değil. Analog Girişleri herhangi bir uygun Arduino pinine atayabilirsiniz. Örnek için blue/variant.h ve blue/variant.cpp dosyalarına bakın.

nRF52832 yongasında 8 analog giriş pimi bulunur, ancak SKYLAB_SKB369_Nano2 değiştirme kartı, Nano2 ile eşleşmesi için bunlardan yalnızca 6 tanesini kullanılabilir hale getirir.

Varyant.h dosyasındaki RESET_PIN dışındaki tüm pin numaraları Arduino pin numaralarıdır. Bu #define PIN_A0 (0), arduino çizimindeki D0'ın A0 ile aynı pin olduğu anlamına gelir. RESET_PIN istisnadır. Bu numara nRF52823 çip pin numarasıdır ve 21 geçerli tek seçimdir. Ancak pfod_lp_nrf52 desteği, nRF52832'deki sıfırlama pinini etkinleştirmez

varyant.cpp dosyası

Varyant.cpp dosyasında, Arduino pin numaralarını nRF52832 yongası P0.. pinlerine eşleyen g_ADigitalPinMap dizisi olan yalnızca bir giriş vardır.

NOT: NanoV2 ve SKYLAB kartlarında, Arduino analog pinleri A0, A1 …, Arduino dijital pinleri D0, D1 … ile aynıdır, bu nedenle g_ADigitalPinMap içindeki ilk girişler nRF52832 yongasındaki AINx pin numaralarıyla eşleşmelidir

Anakartınızın kullanıma sunduğu Analog Girişler için, g_ADigitalPinMap içindeki bu girişler nRF52832 AIN0, AIN1, AIN2, vb. pin numaralarını eşlemelidir. yani AIN0 çip pini P0.02'dir, AIN1 çip pini P0.03'tür vs. yukarıdaki nRF52832 pin düzenine bakın.

Geçersiz eşlemeler için (uint32_t)-1 kullanın. Örneğin, SKYLAB_SKB369_Nano2 değiştirme kartında yerleşik bir LED, D13 yoktur, bu nedenle konumu (uint32_t)-1 ile eşlenir.

pfod_lp_nrf52.zip içinde Redbear NanoV2, SKYLAB SKB369 ve GT832E_01 varyantları alt dizinleri, varyant.cpp tarafından ayarlanan eşlemeleri gösteren resimlere sahiptir. (Yukarıdaki resimlere bakın)

SKYLAB SKB369 söz konusu olduğunda, aralarından seçim yapabileceğiniz çok sayıda pin vardır. NanoV2 ile eşleşmek için yalnızca yeterli sayıda eşlenir. GT832E_01 durumunda, mevcut tüm pinlerin eşlenmesi gerekir. O zaman bile NanoV2'deki altı (6) yerine yalnızca üç (3) analog giriş mevcuttur. Bunun yanı sıra iki NFC pini, P0.09 ve P0.10, GPIO'lar olarak yeniden yapılandırılmalıdır. Aşağıdaki nRF52 NFC pinlerini GPIO'lar olarak yeniden yapılandırma konusuna bakın.

boards.txt dosyasını güncelleme

İşte boards.txt dosyasındaki SKYLAB_SKB369_Nano2replacement girişi.

## SKYLAB_SKB369 Nano2 DeğiştirmeSKYLAB_SKB369_NANO2_REPLACEMENT.name=*SKYLAB SKB369 Nano2 Değiştirme

SKYLAB_SKB369_NANO2_REPLACEMENT.upload.tool=sandeepmistry:openocd

SKYLAB_SKB369_NANO2_REPLACEMENT.upload.protocol=cmsis-dap SKYLAB_SKB369_NANO2_REPLACEMENT.upload.target=nrf52 SKYLAB_SKB369_NANO2_REPLACEMENT.upload.maximum_size=5242KB SKYLAB_Supload.com SKYLAB_SKB369_NANO2_REPLACEMENT.upload.use_1200bps_touch=yanlış SKYLAB_SKB369_NANO2_REPLACEMENT.upload.wait_for_upload_port=yanlış SKYLAB_SKB369_NANO2_REPLACEMENT.upload.native_usb=yanlış

SKYLAB_SKB369_NANO2_REPLACEMENT.bootloader.tool=sandeepmistry:openocd

SKYLAB_SKB369_NANO2_REPLACEMENT.build.mcu=korteks-m4

SKYLAB_SKB369_NANO2_REPLACEMENT.build.f_cpu = 16000000 SKYLAB_SKB369_NANO2_REPLACEMENT.build.board = SKYLAB_SKB369_Nano2replacement SKYLAB_SKB369_NANO2_REPLACEMENT.build.core = nRF5 SKYLAB_SKB369_NANO2_REPLACEMENT.build.variant = SKYLAB_SKB369_Nano2replacement SKYLAB_SKB369_NANO2_REPLACEMENT.build.variant_system_lib = SKYLAB_SKB369_NANO2_REPLACEMENT.build.extra_flags = -DNRF52 SKYLAB_SKB369_NANO2_REPLACEMENT.build.float_flags = -mfloat -abi=zor -mfpu=fpv4-sp-d16 SKYLAB_SKB369_NANO2_REPLACEMENT.build.ldscript=nrf52_xxaa.ld

SKYLAB_SKB369_NANO2_REPLACEMENT.menu.lfclk.lfrc.build.lfclk_flags=-DUSE_LFXO

SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132=S132

SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132.softdevice = S132 SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132.softdeviceversion = 2.0.1 SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132.upload.maximum_size = 409600 SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132.build.extra_flags = - DNRF52 -DS132 -DNRF51_S132 SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132.build.ldscript=armgcc_s132_nrf52832_xxaa.ld

board.txt Ayarları

Yorumlar – # ile başlayan satırlar yorumlardır.

Önek – her kartın değerlerini tanımlamak için benzersiz bir ön eke ihtiyacı vardır. Burada önek SKYLAB_SKB369_NANO2_REPLACEMENT'dir.

Ad – SKYLAB_SKB369_NANO2_REPLACEMENT.name satırı, Arduino'nun pano menüsünde gösterilecek bu panonun adını belirtir.

Yükleme aracı – SKYLAB_SKB369_NANO2_REPLACEMENT.upload bloğu, yükleme için hangi aracın kullanılacağını belirtir. Parçacık Hata Ayıklayıcı kullanıyorsanız, yukarıda gösterildiği gibi Protocol=cmsis-dap kullanın.

Bootloader – Bu satır, bu boards.txt dosyasındaki tüm panolar için aynıdır.

Oluştur – Bu blokta yalnızca iki satırın güncellenmesi gerekir. SKYLAB_SKB369_NANO2_REPLACEMENT.build.variant satırı, bu panonun varyant alt dizinindeki dizin adını belirtir. SKYLAB_SKB369_NANO2_REPLACEMENT.build.board, ARDUINO_'ya eklenen ve ardından kod derlenirken tanımlanan değerdir. Örneğin. -DARDUINO_SKYLAB_SKB369_Nano2replacement Bu, belirli panolar için kodun bölümlerini etkinleştirmenizi/devre dışı bırakmanızı sağlar.

Low Freq Clock – Bu satır, SKYLAB_SKB369_NANO2_REPLACEMENT.menu.lfclk.lfrc.build.lfclk_flags, lp_timer için kullanılan düşük frekanslı saatin kaynağını belirtir. -DUSE_LFXO, -DUSE_LFRC ve -DUSE_LFSYNT olmak üzere üç seçenek vardır. Kartta harici bir 32Khz kristal varsa en iyi seçim -DUSE_LFXO'dur. Değilse, dahili bir RC osilatörü kullanan ve biraz daha fazla akım çeken, ~10uA daha fazla ve çok daha az doğru olan -DUSE_LFRC kullanın. -DUSE_LFSYNT'yi kullanmayın çünkü bu, çipin sürekli çalışmasını sağlayarak mAs akım çekişine neden olur.

Softdevice – pfod_lp_nrf52 yalnızca nRF52 yongalarını ve softdevice s132'yi destekler, bu nedenle bu blok için önek dışında herhangi bir değişiklik gerekmez.

nRF52 NFC pinlerini GPIO'lar olarak yeniden yapılandırma

nRF52 pinlerinde varsayılan olun, P0.09 ve P0.10, NFC olarak kullanılmak üzere yapılandırılmıştır ve bir NFC antenine bağlanmayı bekler. Bunları genel amaçlı G/Ç pinleri (GPIO'lar) olarak kullanmanız gerekiyorsa, o zaman boards.txt dosyasındaki bu kartın …menu.softdevice.s132.build.extra_flags derleme ayarlarına bir -DCONFIG_NFCT_PINS_AS_GPIOS tanımlaması eklemeniz gerekir.

Örneğin pfod_lp_nrf52.zip, GT832E_01 pinlerini I/O olarak kullanılmak üzere yeniden yapılandırır. Bu anakartın GT832E_01 bölümüne, boards.txt dosyasında aşağıdaki tanımlama eklenmiştir.

GT832E_01.menu.softdevice.s132.build.extra_flags=-DNRF52 -DS132 -DNRF51_S132 -DCONFIG_NFCT_PINS_AS_GPIOS

pfod_lp_nrf52.zip içindeki bağlayıcı komut dosyası da bu ayarı korumak için değiştirildi ve değiştirilmesi gerekmiyor.

7. Adım: Sonuç

Bu eğitim, bir SKYLAB SKB369 modülü kullanan Redbear NanoV2'nin yerini almıştır. SKYLAB modülü için Arduino'da çok düşük güçlü BLE projesine örnek olarak pil/güneş enerjili Sıcaklık Nem Monitörü kullanılmıştır. Bağlantı parametrelerinin ayarlanmasıyla elde edilen ~29uA besleme akımları. Bu, CR2032 düğme pil ömrü ~10 ay ile sonuçlandı. Daha yüksek kapasiteli madeni para hücreleri ve piller için daha uzun. İki ucuz güneş pili eklemek, pil ömrünü kolayca %50 veya daha fazla uzattı. Monitöre güneş pillerinden güç sağlamak için parlak bir oda ışığı veya bir masa lambası yeterlidir.

Bu eğitim ayrıca önceden programlanmış bir nRF52'den talaş korumasının kaldırılmasını ve kendi PCB/devrenize uyacak yeni bir kart tanımının nasıl kurulacağını da kapsıyordu.

Android programlama gerekmez. pfodApp bunların hepsini halleder.

Önerilen: