Forum: Mikrocontroller und Digitale Elektronik Energieeffizientes Bluetooth LE System für Arduino


von Pascal D. (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
ich möchte im Rahmen einer Arbeit einen extrem stromeffizienten und 
billigen Mikrocontroller bauen. Basis ist ein standalone ATmega Chip 
(vorerst 328, später vielleicht ein kleinerer wie der 48) mit Arduino 
Bootloader. Dieser soll Sensordaten nehmen (3 Floats + 1 Int sollten 
mindestens in ein Paket) und per BLE an ein Handy schicken. Das Handy 
kann wiederum kleinerer Befehle geben, zum Beispiel das nächste 
Sensorupdate auf einige Zeit verschieben und den uC damit Schlafen 
legen.
Von den uCs sollen viele gleichzeitig im Einsatz sein und per 
Knopfzellen laufen, weshalb das Ganze sehr stromsparend, klein und 
billig sein muss.
Der ATmega, sowie die Sensoren die ich ausgesucht habe, würde allesamt 
mit 1,8v laufen. Ich bin nun auf der Suche nach einer BLE Lösung die 
sich dafür eignet.

Das Erste, das ich gefunden habe, war der ESP32. Alleine weil der Chip 
von der Größe riesig ist und eigene Spannungsregler hat, passt er mir 
nicht. Dazu kommen noch zahlreiche GPIOs, die den ATmega überflüssig 
machen würden, und WLAN Funktionalität, die ich einfach nicht brauche.
Die nRF52 Serie von Nordic ist ähnlich: Ein kompletter uC eingebaut, der 
eigentlich den ATmega ersetzen könnte.
Der Nordic nRF8001 läuft mit 1,9v-3,6v und hat keinen unnötigen 
Schnickschnack. Der Chip selber kostet nur 3€/Stück, ist aber 5x5mm mit 
32 Pins, wovon ich eigentlich nur den SPI-Bus brauche und der Rest 
Spannungsversorgung ist (Figure 22 im Datenblatt. Figure ist im Anhang). 
Der Schaltkreis dürfte unmöglich von Hand zu Löten sein, richtig? Als 
PCB-Version habe ich nur das von Adafruit gefunden, dass mit 3-5v läuft, 
zusätzlich einen 3,3v-Spannungsregler und High-Low-Level-Shifter (was 
auch immer) eingebaut hat (Schematic im Anhang). Das Board kostet etwa 
20€, der China-Nachbau 14€. Umlöten wäre eine Option...
Die dritte Alternative, die ich gefunden habe, ist der nRF24L01+. Preis 
ist unter 2€/Stück für eine PCB-Version, die nichts weiter als 
Kondensatoren, Widerstände und Taktgeber hat. Hier sieht es aber mit der 
BLE Unterstützung mau aus. Mithilfe der nRF24/RF24- und 
floe/BTLE-Library müsste das BLE-Protokoll zusammengebastelt werden.

Habt ihr noch weitere interessante Chips, die sich Eignen könnten und 
bei welchem meiner Ansätze dürfte das Endergebnis besser ausfallen?

Bilder aus dem nRF8001 Datenblatt von Nordic und dem nRF8001 Tutorial 
von adafruit.com

von Johannes S. (Gast)


Lesenswert?

nRF51 oder nRF52 Serie und den schwachbrüstigen AVR weglassen. Warum 
baut man den ein wenn man BLE + Cortex-M0/4 für wenige € in einem 
bekommt?

von Olaf (Gast)


Lesenswert?

> Die nRF52 Serie von Nordic ist ähnlich: Ein kompletter uC eingebaut, der
> eigentlich den ATmega ersetzen könnte.

Den solltest du auch nehmen und den Avr kack weglassen. Der kann 
naemlich alles was du brauchst und wenn DU gut bist dann wirst du fuer 
das was du machen willst mit etwa 100uA mitteren Strom hinkommen.

> er Nordic nRF8001 läuft mit 1,9v-3,6v und hat keinen unnötigen
> Schnickschnack.

Das duerfte vermutlich derselbe Controller wie im nRF52 sein nur sagt 
dir Nordic da nicht was sie verbaut haben und du musst zwei Controller 
durchfuettern. Fuer jemanden der "extrem energiesparend" sein will ist 
das eine eher dumme Loesung.

Olaf

von Pascal D. (Gast)


Lesenswert?

Johannes S. schrieb:
> nRF51 oder nRF52 Serie und den schwachbrüstigen AVR weglassen. Warum
> baut man den ein wenn man BLE + Cortex-M0/4 für wenige € in einem
> bekommt?

Das Ganze soll modular sein. Bei Bedarf sollen andere Sensoren verwendet 
werden können oder ein stärkerer oder schwächerer uC. Mit dem Arduino 
SDK ist auch angenehm zu arbeiten, wegen der großen Community.

Es geht in der Arbeit um bestmögliche Optimierung. Von den nRF52 Chips 
gibt es 3 Varianten. Wenn die nicht mehr hergestellt werden oder man 
andere Leistung braucht, muss man komplett umsteigen. Dazu hat man 
keinen Einfluss, welche Komponenten im Detail auf dem Board sind.
Vielleicht sollen zukünftig Sensoren fusioniert oder gefiltert werden.

Mein Arduino Nano hat 9V-Block-Batterien in 3 Tagen geleert, nur mit 
einem Sensor angeschlossen. Das hier hat meine Beobachtung bestätigt: 
https://forum.arduino.cc/index.php?topic=418299.0
Deswegen möchte ich möglichst nur die Chips mit Minimalkonfiguration auf 
einem PCB haben. Um Spannungsversorgung etc möchte ich mich selber 
kümmern.

von Axel S. (a-za-z0-9)


Lesenswert?

Pascal D. schrieb:
> Johannes S. schrieb:
>> nRF51 oder nRF52 Serie und den schwachbrüstigen AVR weglassen. Warum
>> baut man den ein wenn man BLE + Cortex-M0/4 für wenige € in einem
>> bekommt?
>
> Das Ganze soll modular sein. Bei Bedarf sollen andere Sensoren verwendet
> werden können oder ein stärkerer oder schwächerer uC.

Im nRF52 tickt ein Cortex-M4. Das ist ein deutlich stärkerer µC als 
alles, was du an AVR überhaupt kriegen kannst. Es ergibt überhaupt gar 
keinen Sinn, da noch einen schwächeren µC daneben zu setzen.

Und modular? Die Firmware für den nRF52 kannst du doch nach Belieben 
ändern. GPIOs hat er auch im Überfluß.

> Es geht in der Arbeit um bestmögliche Optimierung. Von den nRF52 Chips
> gibt es 3 Varianten. Wenn die nicht mehr hergestellt werden oder man
> andere Leistung braucht, muss man komplett umsteigen.

So ein Quatsch. Nordic ist der Hersteller für µC + Funk SoC. Natürlich 
ändert sich bei denen das Portfolio auch ständig. Aber wenn du dich 
erstmal in eines deren SoC eingearbeitet hast, ist der Umstieg auf ein 
anderes auch nicht schwerer als der von einem AVR auf einen anderen.

> Dazu hat man
> keinen Einfluss, welche Komponenten im Detail auf dem Board sind.

Dann nimm halt kein Board.

> Mein Arduino Nano hat 9V-Block-Batterien in 3 Tagen geleert, nur mit
> einem Sensor angeschlossen.

Dann hast du noch eine Menge zu lernen, bis du ein wirklich 
stromsparendes Design (Hardware und Software) hinbekommst.

von Johannes S. (Gast)


Lesenswert?

Und Unterstützung für die Nordic gibt es auch, nur nicht Arduino sondern 
Mbed.

Pascal D. schrieb:
> Mein Arduino Nano hat 9V-Block-Batterien in 3 Tagen geleert, nur mit
> einem Sensor angeschlossen

9V Batterien für einen μC der 3V haben möchte?

von Pascal D. (Gast)


Lesenswert?

Johannes S. schrieb:
> Und Unterstützung für die Nordic gibt es auch, nur nicht Arduino sondern
> Mbed.
>
> Pascal D. schrieb:
>> Mein Arduino Nano hat 9V-Block-Batterien in 3 Tagen geleert, nur mit
>> einem Sensor angeschlossen
>
> 9V Batterien für einen μC der 3V haben möchte?

Der Nano hat entweder 5v regulated voltage input oder 7-20v unregulated. 
Bei jeder Spannung zieht er das Gleiche an Strom, weshalb mehr Spannung 
linear mehr Leistungsverbrauch bedeutet, die an dem wunderschönen 
Spannungsregler an Wärme anfällt. Ich bin eigentlich Informatiker und 
nicht Etechniker, aber ich finde das Thema interessant.

Ich werde mir mal ein nRF52810 pcb holen und mit einer ATmega Lösung 
vergleichen.

von Jim M. (turboj)


Lesenswert?

Pascal D. schrieb:
> Von den uCs sollen viele gleichzeitig im Einsatz sein und per
> Knopfzellen laufen, weshalb das Ganze sehr stromsparend, klein und
> billig sein muss.

Dann würde ich aber nicht auf 20 Jahre alte Atmega setzen, sondern auf 
die Modernen Cortex-M in den NRF5x Chips. Die können zum Beispiel den 
Quarz schnell ein- und ausschalten (<1ms), und so verdammt viel Strom im 
Vergleich zum AVR sparen.

Axel S. schrieb:
>> Dazu hat man
>> keinen Einfluss, welche Komponenten im Detail auf dem Board sind.

Man will 2,4 GHz Boards nicht selber designen - jedenfalls solage man 
kein HF Labor zur freien Verfügung hat. Das Zeuchs ist nicht-trivial.

Es gibt auch "quasi-nakte" Boards für NRF5x, wie N5 ANT SoC Serie oder 
die D52 Serie. Die sind mit 20x20mm auch noch einigermaßen von Hand 
lötbar. BTDT.


Wer NordicSemi aus irgendeinem Grund nicht mag: Es gäbe auch andere 
Hersteller. Zum Beispiel hat Silabs eigene BTLE µC Module.

von Pascal D. (pascal_d)


Lesenswert?

Es kommt also ein Laird bl561. Was brauche ich denn um den zu 
programmieren?
JTAG und swd hab ich öfters gelesen. Wie schließt man sowas an und gehen 
da die unter-10€ Dinger von zb Amazon? Doku hab ich da jetzt ziemlich 
wenig gefunden...

: Bearbeitet durch User
von Axel S. (a-za-z0-9)


Lesenswert?

Jim M. schrieb:
>
> Axel S. schrieb:
>>> Dazu hat man
>>> keinen Einfluss, welche Komponenten im Detail auf dem Board sind.

Nein, das schrieb ich nicht. Bitte zitiere korrekt!

von Frank K. (fchk)


Lesenswert?

Pascal D. schrieb:
> Es kommt also ein Laird bl561. Was brauche ich denn um den zu
> programmieren?
> JTAG und swd hab ich öfters gelesen. Wie schließt man sowas an und gehen
> da die unter-10€ Dinger von zb Amazon? Doku hab ich da jetzt ziemlich
> wenig gefunden...

Hast Du ein Datenblatt von dem Modul? Nein?
Dann ab zum Download:
https://connectivity.lairdtech.com/wireless-modules/bluetooth-modules/bluetooth-5-modules/bl651-series#documentation

Dann liest Du das und findest heraus, dass da ein nrf52810 drauf ist. 
Damit gehst Du dann zu Nordic, wählst Softwar&Tools und dort Development 
Tools und liest, was da steht. Dafür brauchst Du hier niemandem die Zeit 
zu stehen, Deine Optionen sind dort vollständig aufgelistet. Davon 
nimmst Du eine. Fertig.

Wenn Du schon mal da bist, ist es keine schlechte Idee, erstmal zu einem 
der angebotenen Development Kits zu greifen. Gerade für die ersten 
Schritte auf einer völlig neuen, unbekannten Hardware ist das hilfreich, 
denn damit kannst Du dann Deine Software entwickeln und hast eine 
Hardware, die 100% garantiert funktioniert, bei der alle Ports 
herausgeführt sind und wo teilweise auch gleich der passende Debugger 
mit drauf ist. Ja, ich weiß, das kostet alles Geld. Hättest Du 1-2 
Jahrzehnte Berufserfahrung, könntest Du Dir das sparen. Hast DU aber 
nicht, und deswegen musst Du Geld gegen Knowhow und Arbeitszeit 
tauschen. Daher nimm das nRF52 DK und mach damit Deine ersten Schritte. 
Die ganzen SDKs und SoftDevices findest Du da auch.

fchk

von Stefan F. (Gast)


Lesenswert?

Hast du das mit den 1,8V wirklich durchdacht? Ich kenne keine Batterie, 
die 1,8V liefert. Also willst du wohl einen Spannungsregler verwenden. 
Der Mikrocontroller wird aber unterm Strich mit Sicherheit effizienter 
arbeiten, wenn er ohne Spannungsregler direkt an der Batterie hängt.

Du könntest zum Beispiel eine LiIo Zelle zur Versorgung des 
Mikrocontrollers verwenden. Dieser schaltet die Stromversorgung der 
Sensoren nur bei Bedarf ein - dafür verwendest zu einen Spannungsregler 
mit Enable Eingang. 2,8V oder 3V sind hier wahrscheinlich einfacher, 
weil du dann keine Aufwändigen Pegelwandler brauchst (höchstens 
Spannungsteiler, wenn überhaupt).

von Doctor Snuggles (Gast)


Lesenswert?

Pascal D. schrieb:
> Von den uCs sollen viele gleichzeitig im Einsatz sein und per
> Knopfzellen laufen, weshalb das Ganze sehr stromsparend, klein und
> billig sein muss.


Da Du viele gleichzeitig einsetzen möchtest, musst Du aufpassen. Der 
nRF52810 kann kein Bluetooth5 Mesh, das können nur die nRF52832 und 
nRF52840.
Daher empfehle ich den 32er (da der 40er eine höhere Stromaufnahme hat).

von Pascal D. (pascal_d)


Lesenswert?

Stefanus F. schrieb:
> Hast du das mit den 1,8V wirklich durchdacht? Ich kenne keine Batterie,
> die 1,8V liefert. Also willst du wohl einen Spannungsregler verwenden.
> Der Mikrocontroller wird aber unterm Strich mit Sicherheit effizienter
> arbeiten, wenn er ohne Spannungsregler direkt an der Batterie hängt.

Genau das. Alle Module laufen bisher bei 1.8-3.5v. Ich würde testen, bei 
welcher Variante ich am Meisten aus den Batterien holen könnte:
Ein Spannungsregler, der 1.8v ausgibt, wenn die Batteriespannung weniger 
als 1.8v ausgibt. Damit kann ich mehr aus der Batterie ziehen, aber der 
zusätzliche Spannungsregler zieht auch etwas Strom extra. Wenn die 
durchschnittliche Entladekurve für den Typ Batterie, den ich auswählen 
werde, ermittelt ist, kann ich die bessere Alternative nehmen.
Ansonsten würde ich herausfinden, ob ich es hinbekomme, dass der 
Spannungsregler nur bei unter 1.8v arbeitet.
Wenn ich jetzt aber zum Beispiel ein ble-Modul hätte, dass z.B. bei 3-5v 
läuft, würde es das einschränken. Deswegen finde ich es ärgerlich, dass 
der nRF8001 mit 1.9-3.6v läuft, aber die Adafruit(-Klon) PCBs mit dem 
Chip von 3-5v, weil sie noch nen Spannungsregler verbaut haben.

Frank K. schrieb:
> Dann liest Du das und findest heraus, dass da ein nrf52810 drauf ist.
> Damit gehst Du dann zu Nordic, wählst Softwar&Tools und dort Development
> Tools und liest, was da steht. Dafür brauchst Du hier niemandem die Zeit
> zu stehen, Deine Optionen sind dort vollständig aufgelistet. Davon
> nimmst Du eine. Fertig.

Dass der nRF52810 drin ist, war der Grund, dass ich das PCB ausgewählt 
habe. Das Handbuch sagt im Text "Use the Nordic SDK & SoftDevice to 
deliver your BLE application". Nordic SDK ist die C++ Library und 
SoftDevice der BT-Stack, der vor dem Programmieren auf den Chip geladen 
werden muss. In der Tabelle steht dann bei programmability: SDK via JTAG 
und SoftDevice via 'Any exposed within the related Nordic Softdevice'. 
Abseits vom Laird PCB gibt es das Development Board von Nordic, das über 
40€ kostet. Und in einem Forumbeitrag wurde das SEGGER J-Link (Lite oder 
Edu) als JTAG Programmer empfohlen, das ähnlich viel kostet. Das alles 
habe ich aber schon gewusst, bevor ich Deinen Beitrag gelesen habe oder 
meinen Beitrag verfasst habe. Also, Danke fürs unhöflich werden. Und 
damit ist meine Frage nicht beantwortet, was ich mindestens brauche, um 
es zu programmieren.

Präziser hätte ich vielleicht auch fragen können: Kann man den nRF-Chip 
aus dem Laird-PCB rausnehmen und muss ihn zum Programmieren woanders 
z.B. ins DK-Board reinstecken? Oder gibt es auf dem Laird-PCB auf der 
Rückseite oder woanders eine standardisierte Schnittstelle? Es scheint 
da ja Stecker zu geben, vgl 'Adafruit JTAG (2x10 2.54mm) to SWD (2x5 
1.27mm) Cable Adapter Board [ADA2094]' auf Amazon.
Mittlerweile habe ich im module-pinout die Pins SWDCLK und SWDIO 
gefunden. Also muss ich von so einem USB-Modul die Pins immer manuell 
verdrahten? Was hat es denn mit den unter-10€ Modulen auf sich, z.B: 
https://www.amazon.de/dp/B012VR3PVA. Funktioniert sowas als billige 
Alternative? In der Beschreibung stehen zwar andere Chips, aber das 
scheint mir so wie die typischen 'micro usb kabel - funktioniert mit 
handy x, xy und xyz' Anzeigen.
@edit: gerade noch ein Laird dk-board für den bl652 für 80€ gefunden und 
den segger link edu mini für 20€. Zweiteres wäre die erste brauchbare 
option, aber auch besser als die unter-10€ Dinger?
Johannes S. schrieb:
> Und Unterstützung für die Nordic gibt es auch, nur nicht Arduino sondern
> Mbed.
Ich würde dann eben dieses Mbed versuchen zum Laufen zu bekommen.

Doctor Snuggles schrieb:
> Da Du viele gleichzeitig einsetzen möchtest, musst Du aufpassen. Der
> nRF52810 kann kein Bluetooth5 Mesh, das können nur die nRF52832 und
> nRF52840.
> Daher empfehle ich den 32er (da der 40er eine höhere Stromaufnahme hat).
Ich habe gelesen, dass Android softwareseitig bis zu 7 BLE-Geräte 
gleichzeitig bedienen kann. Hardwareseitig sind es je nach Handy 
weniger. Das würde vorerst reichen, aber mehr wäre natürlich besser. Ich 
meinte mit dem Satz eigentlich, dass preislich die Hardware für ein 
fertiges Gerät nicht mehr als 10€ kosten sollte, damit eben 3/5/7 Stück 
bezahlbar bleiben. Von Bluetooth Mesh habe ich bisher noch nichts 
gehört. Ich werde mir angucken, wie das funktioniert und ob ich das 
integriert bekomme.

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Pascal D. schrieb:
> Ein Spannungsregler, der 1.8v ausgibt, wenn die Batteriespannung weniger
> als 1.8v ausgibt.

Das lohnt sich nicht. Primärzellen gelten bei 0,9V als verbraucht. Zum 
Ende hin steigt ihr Innenwiderstand, dadurch fällt die Spannung unter 
Last noch weiter ab. Ein Step-Up Wandlander zieht dann umso mehr Strom, 
macht es also noch schlimmer. Damit gewinnst du unterm Strich nichts. 
Die Idee, leere Batterien mit Step-Up Wandlern ganz leer zu saugen, geht 
nicht auf. Dazu kommt das stark erhöhte Auslaufrisiko.

Gucke Dir mal den Spannungsregler LT1763 CS8-3.3 oder den LP38693 MP-3.3 
an, die kannst du prima mit einem Lithium Akku oder 3 Primärzellen 
verwenden. Diese haben einen Enable Eingang und wenn die 
Batteriespannung zu gering wird, leiten sie sie einfach (fast) 1:1: 
durch. Deine Funkmodule und Sensoren werden dann immer noch so lange 
funktionieren, bis die Batterien wirklich am Ende sind.

von Christopher J. (christopher_j23)


Lesenswert?

Wenn du aus einer Knopfzelle 1,8V holen willst, dann solltest du dich 
mal nach Schaltwandlern umsehen. Das Problem ist deren relativ hoher Iq 
wenn die Controller und Sensoren schlafen, weshalb die guten Wandler 
einen Bypass bieten. Die NRF52840 haben gleich zwei solcher Teile 
integriert (sogar jeweils noch mit LDO für den Bypass!) und können mit 
einem davon auch externe Peripherie, wie etwa deine nicht weiter 
spezifizierten Sensoren, versorgen. Einen ESP32 kannst du auch nehmen, 
wenn du denn unbedingt im Arduino-Universum bleiben möchtest. Ein 
TPS62730 wäre ein solcher Buck-Converter mit Bypass-Funktion. 
Vorausgesetzt deine Sensoren laufen auch mit den ungeregelten 3V der 
Knopfzelle ist das schonmal ein Schritt in die richtige Richtung.

Pascal D. schrieb:
> ich möchte im Rahmen einer Arbeit einen extrem stromeffizienten und
> billigen Mikrocontroller bauen.

Du meinst vielleicht ein Board?

Pascal D. schrieb:
> Das Erste, das ich gefunden habe, war der ESP32. Alleine weil der Chip
> von der Größe riesig ist und eigene Spannungsregler hat

Du meinst vielleicht ein Modul? Der eigentliche Chip im QFN-Gehäuse hat 
5x5mm! Den gibt es sogar schon mit einem SPI-Flash integriert.

von Brummbär (Gast)


Lesenswert?

Wenn alle Deine Komponenten mit  3,0 bis 3,6V arbeiten, könntest Du auch 
direkt eine Litium-Zelle verwenden und diese tatschlich leer nudeln.

Ich betreibe damit Umweltsensoren (Tempertur, Feuchte, Luftdruck) mit 
AVR und CC1001. Die Batterien halten knapp zwei Jahre bei einer 5 
Minütigen Datenübertragung.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.