Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial Internet of Things >> Internet of Things-technologie

Microchip RN487x Bluetooth-modules beheersen voor low-power perferieën

Leer hoe u Microchip's RN487x-familie Bluetooth-modules configureert voor uw low-power perferie-projecten.

Als u een compact, energie-efficiënt apparaat bouwt, is Bluetooth bijna altijd de communicatiekeuze van record. De standaard is de afgelopen jaren gerijpt, en vandaag biedt een wijd bereik aan kant-en-klaar modules een complete system-on-chip (SoC) die aan de behoeften van veel perferieën voldoet. Een populair voorbeeld is Nordic's nrf52840, die een 32-bit processor, een multi-protocol Bluetooth-radio en een volledige complement aan I/O-interfaces combineert zoals GPIO, PWM, USB, SPI en I²S.

Hoewel krachtig, kunnen deze SoCs intimiderend zijn: de leercurve en ontwikkeltijd vereist om de embedded firmware te integreren, zijn significant. Voor veel veelvoorkomende use cases – remote sensing of besturing met slechts een handvol analoge of digitale kanalen – is een simpeler, meer gefocuste oplossing vaak te prefereren.

Hier komen de RN487x-familie van Microchip. De twee modules in deze familie – RN4870 en RN4871 – bieden meerdere gelijktijdige bi-directionele digitale en analoge kanalen terwijl het ontwerp-footprint en firmware-inspanning minimaal blijft. Elke module slaat een compacte configuratie op in zijn non-volatile RAM, wat u in staat stelt de functionaliteit van de perferie af te stemmen op uw exacte vereisten. Belangrijk is dat de modules volledig compliant blijven met de Bluetooth Low Energy (BLE)-standaard, wat naadloze pairing met moderne smartphones en andere BLE-clients garandeert.

In deze driedelige serie lopen we door het maken van een volledig functionele Bluetooth-ingeschakelde perferie voor vier typische taken: een digitale sensor, een digitale besturing, een analoge sensor en een analoge besturing. Elk voorbeeld bevat een referentie-circuit, de precieze RN487x-configuratiestappen en een eenvoudig Python-script dat demonstreert hoe u met de perferie kunt interacteren vanaf een Linux-host. De scripts zijn grondig gedocumenteerd zodat u de perferie eenvoudig als subsysteem in grotere ontwerpen kunt embedden.

Ontwerp-overzicht

Hieronder is een grafische illustratie van het "analoge sensor" voorbeeld, met de belangrijkste interfaces in rood gemarkeerd.

 

Microchip RN487x Bluetooth-modules beheersen voor low-power perferieën

Een representatie van een Linux-systeem dat communiceert met een perferie

 

We bouwen drie kerncomponenten voor dit voorbeeld:

  • De perferie-hardware die het sensor-signaal levert – een analoge transducer in dit geval, die een varierende spanning genereert.
  • De host-applicatie die de data aan de gebruiker presenteert – ons Python-script.
  • RN487x-configuratie die het fysieke signaal mapt naar de GATT-database die door de host gebruikt wordt.

Componentselectie

De RN487x-familie biedt twee varianten: RN4870 en RN4871. Ze verschillen voornamelijk in pincount en beschikbare I/O-typen. Hieronder is een gereorganiseerde pin-budget-tabel om u te helpen bepalen welke chip het beste bij uw project past.

Er zijn drie I/O-pincategorieën op de modules:

Type Beschrijving
ADC Analoge input: converteert een spanning naar een numerieke waarde.
PWM Analoge output: genereert een blokgolf wiens frequentie en duty-cycle ingesteld worden door twee getallen.
DIO Digitale input of output: een hoog of laag niveau stelt logica 1 of 0 voor.

 

RN4870

Microchip RN487x Bluetooth-modules beheersen voor low-power perferieën

Afbeelding uit de RN487x-datasheet

 

Pin Naam/Capability P1_0 P1_1 P1_2 P1_3 P2_2 P2_3 P2_4 P2_5
ADC x x x x
PWM x x
DIO x x x x x

 

RN4871

Microchip RN487x Bluetooth-modules beheersen voor low-power perferieën

Afbeelding uit de RN487x-datasheet

 

Pin Naam/Capability P1_2 P1_3
ADC x
PWM
DIO x x

 

Deze tabellen verduidelijken dat als uw ontwerp slechts een enkele analoge input en geen PWM-outputs nodig heeft, de RN4871 de meest zuinige keuze is. Voor projecten die meerdere signalen of PWM vereisen, is de RN4870 de geschikte selectie. In het analoge-sensor-voorbeeld gebruiken we de RN4871 en verbinden de sensor met pin P1_2.

GATT (Generic Attribute) Profiel-laag van de BLE-protocolstack

Voordat u de host-applicatie schrijft, is het essentieel om de GATT-API te begrijpen die de communicatie tussen de host en de perferie medieert.

Alle BLE-apparaten blootstellen een GATT-database die de perferie (server) vult. De host (client) gebruikt GATT-calls om waarden te lezen of te schrijven geïdentificeerd door handles of namen. Typische Python GATT-operaties zien er zo uit:

gatt_rq.connect() # Waarde schrijven naar een karakteristiek-handle gatt_rq.write_by_handle(vh_light, str(bytearray([8])))

De eerste call stelt een verbinding vast; de tweede schrijft data die direct gereflecteerd wordt op de perferie's outputs. De GATT-API wordt ondersteund door iOS, Android, Windows en Linux. Onze voorbeelden gebruiken Python op Linux voor brede compatibiliteit.

Module-configuratie

Om het fysieke signaal te bruggen naar de GATT-database, moet u de RN487x's NVRAM programmeren met twee cruciale configuratieblokken:

  • Karakteristiek-definitie: Wijst databasesruimte toe en kent unieke identificatoren toe voor elke waarde.
  • Pin-binding: Map fysieke I/O-pins naar database-karakteristieken, wat automatische dataconversie mogelijk maakt.

De RN487x gebruikt een lichtgewicht commandotaal voor configuratie. Verwijs naar de appendix voor details over het vestigen van een console-verbinding en het uitgeven van configuratie-commando's. Na programmeren, kan de module's NVRAM er zo uitzien:

 

Microchip RN487x Bluetooth-modules beheersen voor low-power perferieën

 

Alle configuratiewaarden bevinden zich binnen een twee-niveau hiërarchie van services en karakteristieken – nuttig bij het schalen naar multi-sensor of multi-besturing ontwerpen.


 

Dit concludeert deel één van onze driedelige RN487x-tutorialserie. Delen 2 en 3 zullen digitale input, digitale besturing, analoge sensor en analoge besturing implementaties dekken. Deel 4 zal geavanceerde onderwerpen bespreken toepasbaar op alle voorbeelden.

Hieronder volgt een appendix die uitlegt hoe u de modules configureert voordat we in de gedetailleerde projecten duiken.

Een console-verbinding gebruiken om de RN487x te configureren

Voed de module en vestig een seriële link naar uw workstation. Elk demo-circuit bevat een 3-pin "prog" jumper die RX, TX en GND blootstelt. Als u begeleiding nodig heeft, is een uitstekende gids beschikbaar hier.

Start een terminal-emulator. De miniterm utility (gebundeld met veel Python-distributies) is een goede keuze. In een shell, start het als volgt:

python -m serial.tools.miniterm --eol LF /dev/ttyUSB0 115200

De standaard baudrate van 115200 is geschikt voor de RN487x.

Schakel van DATA naar COMMAND-mode door drie dollartekens ("$$$") te typen – u ziet de karakters niet, maar de prompt verandert in:

CMD>

Probeer d te drukken gevolgd door Enter; de module echo't zijn status:

CMD> BTA=D88039F80080 Name=RN_BLE Connected=no Authen=2 Features=0000 Services=00 CMD>

Schakel echo in als u de getypte toets wilt zien: druk + en Enter:

CMD> ECHO ON CMD>

Een nieuwe GATT-service aanmaken is zo simpel als een enkel PS-commando uitgeven, bijvoorbeeld:

CMD> PS,59c88760536411e7b114b2f933d5fe66 AOK

Projectconfiguraties vereisen ook multi-line scripts. Begin een script met WW, voer elke regel in, en eindig met Esc om te committen:

CMD> ww @CONN |O,08,72 AOK CMD>

Algemene initialisatie van de module

Bij hergebruik van een RN487x-module over projecten, kan eerdere configuratie interfereren met nieuwe uses. Voer de volgende cleanup-stappen uit voor elk voorbeeld:

  • Wis elk bestaand script.
  • Schakel script-verwerking in.
  • Wis bestaande service/karakteristiek-definities.
  • Verwijder speciale functies van de pin die u gaat gebruiken (bijv. P1_2).
  • Herstart de module.

Voer de onderstaande commando-sequentie uit:

CMD> WC AOK CMD> SR,0040 AOK CMD> PZ AOK CMD> SW,0A,00 AOK CMD> R,1 Rebooting

Linux-setup vereist voor het draaien van voorbeeld-Python-scripts

Hardware

Zorg dat uw host-systeem BLE-hardware heeft (Bluetooth 4.0 of nieuwer). Als u een USB-adapter nodig heeft, raden we een aan gebaseerd op de Qualcomm CSR8510, beschikbaar hier.

 

Software

De voorbeeldscripts zijn getest op Debian 10 en zouden moeten werken op andere Debian-gebaseerde distributies zoals Ubuntu. Twee Python-pakketten zijn vereist die niet standaard geïnstalleerd zijn:

  • python-bluez – biedt toegang tot de Bluetooth-stack.
  • gattlib – biedt Python-bindings voor GATT-operaties (installeer via pip).

Het installeren van gattlib bouwt een ELF-bibliotheek, dus u hebt build-tools en bibliotheken nodig. Een helper-script dat alle dependencies installeert, is beschikbaar hier. Na downloaden, maak het script uitvoerbaar en draai het.

Referenties

  • RN487x Datasheet
  • RN487x User Guide
  • GATT API in Windows
  • GATT API in iOS
  • GATT API in Python

Blijf op de hoogte voor de volgende delen van deze serie, waar we de complete digitale input en digitale besturing voorbeelden bouwen.

Spring naar projecten 1 en 2: een digitale input en digitale besturing bouwen.

Internet of Things-technologie

  1. Analoge Sensoren Meten op Raspberry Pi Zonder Native ADC
  2. Analoge Sensoren Uitlezen met Raspberry Pi en Zabbix: Een Stapsgewijze Handleiding
  3. Bluetooth Mesh-ontwerpkeuzes: Module vs. discreet apparaat
  4. Contrinex 2020: cloud-klaar sensoren & Bluetooth lichtgordijnen voor veiligheid
  5. ADLINK implementeert AI van edge naar cloud met NVIDIA EGX-platform: versnelde edge-computing-oplossingen
  6. Cellulaire IoT en Bluetooth LE combineren: een synergistische benadering voor next-gen connectiviteit
  7. Data benutten in het Internet of Reliability: Strategieën voor effectief beheer
  8. Van Edge Naar Cloud: IoT Datapijplijnen Beheersen
  9. Digitalisering in Voedsel & Dranken: Veiligheid, traceerbaarheid en efficiëntie verbeteren
  10. Edge Computing & IoT Strategie Inzichten van IoT World 2019
  11. Hoe Een Geünificeerd IIoT-platform Digitale Productiesucces Drijft