Agendan nrf52832 mikrokontrolagailurako komunikazio protokolo bat garatzea zegoen zubi erdiko Txinako bi tensiometroekin.
Eginkizuna ez zen erraza izan, informazio ulergarririk ezaren aurrean nengoen eta. Litekeena da "gaizkiaren erroa" Nordic Semiconductor beraren SDK-an egotea - etengabeko bertsioen eguneraketak, erredundantzia batzuk eta funtzionaltasun nahasia. Dena hutsetik idatzi behar izan nuen.
Uste dut gai hau nahiko garrantzitsua dela txip honek BLE pila bat eta energia aurrezteko modurako "goodies" multzo oso bat dituelako. Baina ez naiz zati teknikoan gehiegi sakonduko, gai honi buruz artikulu asko idatzi baitira.
2. Proiektuaren deskribapena
Plantxa:
Adafruit Feather nRF52 Bluefruit LE (eskura zegoena)
ADC HX711
Txinako tensioneurgailuak 2 pcs. (50x2 kg)
ST-LINK V2 programatzailea
Softwarea:
IDE VSCODE
NRF SDK 16
OpenOCD
ST-LINK V2 programatzailea
Dena proiektu bakarrean dago, Makefile-a moldatu besterik ez duzu egin behar (zehaztu zure SDK-aren kokapena).
3. Kodearen deskribapena
GPIOTE modulua periferikoekin lan egiteko erabiliko dugu zereginen eta gertaeren loturan oinarrituta, baita PPI modulua periferiko batetik bestera datuak prozesadore baten parte-hartzerik gabe transferitzeko.
DOUT datu-lerroa konfiguratzen dugu HX711-aren prestasun-egoera irakurtzeko; maila baxua badago, kudeatzaile bat abiarazten da eta bertan etenaldia desgaitu eta tenporizadore bat abiarazten dugu PD_SCL irteeran erloju-pultsuak sortzeko.
Horren ostean, PPI modulua hasieratzen dugu eta gure tenporizadorea PD_SCL irteerara konektatzen dugu, konparazio gertaera bat gertatzen denean 10 ΞΌs-ko iraupena duten pultsuak sortzeko, eta GPIOTE modulua ere pizten dugu.
Gauzarik interesgarriena tenporizadorearen kudeatzailean gertatzen da. Pultsuaren periodoa 20 ΞΌs-koa da. Pultsu bakoitiak interesatzen zaizkigu (goranzko ertzean) eta haien kopurua 24 baino gehiago ez bada eta 48 gertaera badaude. Gertaera bakoiti bakoitzeko, DOUT irakurtzen da.
Datu-orritik ondorioztatzen da pultsu kopurua gutxienez 25 izan behar dela, hau da, 128ko irabaziari dagokiona (25 pultsu erabili ditudan kodean), hau 50 tenporizadore-gertaeraren baliokidea da, eta horrek datu-markoaren amaiera adierazten du.
RTC tenporizadoretik gertaerak espero ditugu 10 s-ko tartearekin (zure erabakian dago) eta HX711 abiarazi kudeatzailean, DOUT lerroan eten bat eraginez.
Puntu bat gehiago dago, erregistroak UART bidez ateratzen dira (baud-tasa 115200, TX - 6 pin, RX - 8 pin) ezarpen guztiak sdk_config.h-n daude
Findings
Eskerrik asko guztioi arretagatik, espero dut artikulu hau erabilgarria izatea eta garatzaileek irtenbide bat bilatzeko denbora baliotsua murriztea. Esan nahi dut Nordic-ek bere plataformetan erabiltzen duen ikuspegi teknikoa nahiko interesgarria dela energia-eraginkortasunaren ikuspuntutik.
PS
Proiektua oraindik garatzen ari da, beraz, gai hau interesgarria bada, hurrengo artikuluan pisu-sentsoreak kalibratzeko algoritmoa deskribatzen saiatuko naiz, baita BLE pila konektatzen ere.