Ich plane, den Wasserstand in einem ca. 10 m tiefen Brunnen mit einem maximalen Wasserstand von bis zu 5 m zu messen. Mein Plan ist es, mit dem Ultraschallsensor HC SR04 die Tiefe zu messen und über ZigBee an einen Himbeer-Pi in meinem Haus zu senden.
Wie in meiner vorherigen Frage erläutert , muss ich einen Mikrocontroller auswählen, um den Ultraschallsensor und das ZigBee-Modul miteinander zu verbinden.
Die Parameter für die Auswahl sind:
Geringer Stromverbrauch: Ich plane, dies mit Batterie zu betreiben, daher ist ein geringer Stromverbrauch eine Priorität. Ab sofort habe ich kein Ziel für den Stromverbrauch oder die Tage zwischen den Batteriewechseln oder sogar die zu verwendende Batterie. Da dies eher ein Lernprojekt ist und sich in meinem Zuhause befindet, bin ich flexibel, aber ein geringerer Stromverbrauch ist besser.
Niedrige Kosten: Dies ist ein Lernprojekt für mich, und ich möchte keine ungeheure Menge Geld dafür ausgeben, also sind niedrigere Kosten besser.
Arbeiten in einem Brunnen: Das gesamte Projekt wird von einem Brunnen aus durchgeführt und ist starkem Sonnenlicht und Regen ausgesetzt. Ich werde aber einen guten Fall und Schutz bieten.
Einfach zu programmieren.
Ich habe mich für ZigBee entschieden, da es einfach ist, meinen Anwendungsfall erfüllt und wenig Strom verbraucht. Meine Anforderung ist jedoch, die Sensordaten zu transportieren, und ich bin offen für andere Transporte. Die Entfernung von meinem Brunnen zu Raspberry Pi beträgt ungefähr 6 Meter mit einer Mauer dazwischen. Ich plane, die Wassertiefe alle 10 Minuten und zweimal pro Minute zu messen, wenn die Wasserpumpe läuft (ca. 20 Minuten täglich).
Antworten:
Ein allgemeiner Prozess zur Auswahl von Mikrocontrollern.
Fassen Sie Ihre Anforderungen an den Mikrocontroller zusammen. Zum Beispiel in diesem Fall:
Sie können mit einem 8-Pin-Controller auskommen, der möglicherweise auch die Verwendung der Programmer-Pins für allgemeine Zwecke erfordert.
Entscheiden Sie, welche CPU-Leistung und welche Speicheranforderungen erforderlich sind . Reicht es aus, eine 8-Bit-MCU zu verwenden, oder benötigen Sie stattdessen eine 32-Bit-MCU? Welche CPU-Taktraten sind akzeptabel, Dutzende von MHz oder 1 MHz reichen aus? Wie viel Programmspeicher, RAM und ROM werden benötigt?
Bei der beschriebenen Anwendung benötigen Sie keine hohe Rechenleistung. Wahrscheinlich wird ein 8-Bit-Controller ausreichen (obwohl er nicht viel billiger sein wird als ein 32-Bit-Controller, so dass Sie sich hier vielleicht nach dem Preis entscheiden können).
Geringer Stromverbrauch . Wenn es nicht entscheidend ist, kommen Sie wahrscheinlich mit fast jeder Art von Steuerung aus, die ihren Stromsparmodus mit der niedrigsten Versorgungsspannung und Systemtaktfrequenz verwendet. Wenn es wichtiger ist, können Sie Ihre Suchliste eingrenzen, indem Sie mit dedizierten Low-Power-MCU-Kernen wie (ARM® Cortex®-M0- oder M0 + -CPU-Kernen) beginnen. In der Regel enthalten die Datenblätter Tabellen für die meisten Stromsparmodi / VCC / SysClk-Frequenzen . Bessere Tabellen listen auch den Verbrauch der einzelnen Peripheriegeräte auf.
Entwicklertools . Ich betrachte es als einen sehr wichtigen Aspekt. Engagierte Hardware-Programmier-Tools können Vermögen kosten, daher halte ich mich normalerweise an MCUs, für die ich bereits Programmierer hatte. Wenn Sie zu einer anderen Familie oder Marke wechseln, empfiehlt es sich, in ein Entwicklungsboard mit integriertem Programmierer zu investieren, mit dem Sie später Ihre benutzerdefinierten Boards programmieren können. Überprüfen Sie im Allgemeinen immer zuerst, wie viel es kostet, Programme auf einen Mikrocontroller herunterzuladen.
Wie @Sean in den Kommentaren ausgeführt hat, besteht eine mögliche und kostengünstige Lösung darin, nach solchen HF-Modulen zu suchen, die mit einer integrierten, programmierbaren Anwendungs-MCU ausgestattet sind, mit der Ihre Firmware ausgeführt werden kann, während auch der HF-Kommunikationsteil behandelt wird. Solche Module gibt es für BLE, WiFi und ZigBee und möglicherweise für viele andere Technologien.
Darüber hinaus, wie eine MCU im Bohrloch überleben wird. Alles hängt von dem Gehäuse ab, das Sie für das Gerät bereitstellen. Zum Beispiel spielt es keine Rolle, für welche MCU Sie sich entscheiden, wenn das Gehäuse nicht 100% wasserdicht ist.
TL; DR; Hier kommt der produktspezifische Teil.
Sie können den ATtiny25 wählen, der bei Farnell 0,87 $ / 1 Stück kostet . 8-Bit, 8-Pin, nimmt also nicht viel Platz in Anspruch. Im Power-Down-Modus verbraucht es bei deaktiviertem Watchdog 0,2 μA, bei aktiviertem Watchdog 3 V. 2-4 μA. Es ist Arduino-kompatibel, so dass die Programmierung nicht viel kostet (USBasp oder AVRdude-Programmierer kosten bei eBay etwa 2 $). ( Beachten Sie: Sie sollten die serielle Arduino-Software-Bibliothek verwenden, um ein HF-Kommunikationsmodul anzuschließen, da diese MCU nur über Hardware-SPI verfügt.) Alles in allem ist sie klein, billig und weist einen relativ geringen Stromverbrauch auf, der Bit-Banged-UART jedoch möglicherweise erschwert es allerdings. Es hat 2 kB Programmspeicher, der für Sie ausreichen sollte.
Oder gehen Sie mit einem ARM Cortex M0, der im Standby-Modus 2 μA und im Stopp-Modus 5 μA verbraucht. Eine solche MCU ist beispielsweise STM32F030F4, die 1,09 $ / 1 Stück kostet . Es ist ein leistungsstärkerer 32-Bit-Controller mit einer maximalen Systemtaktfrequenz von 48 MHz, aber wie Sie sehen können, nur für +0,2 $. Es kommt mit 16 kB Programmspeicher, weit genug für diese einfache Aufgabe. Es verfügt über SPI, UART, I2C und viele andere Peripheriegeräte. Das Programmieren kostet mehr, der Programmierer kostet 20 $ bei Farnell. Meiner Meinung nach nicht wert. Stattdessen können Sie in ein Entwicklungsboard für die F0-Familie investieren, das über einen integrierten Programmierer (ST-LINK) verfügt . STM32F0Discovery Board kostet ~ 10 $. Sie können mit diesem Board mit dem Prototyping beginnen und es später als Programmierer verwenden.
quelle
Mit Blick auf einfache Programmierung und niedrige Kosten würde ich wahrscheinlich mit einer Art Arduino-Modul (oder einem kostengünstigen Klon) beginnen. Code für Ihren Ultraschallsensor ist bereits vorhanden, ebenso wie Beispielcode für ZigBee, beispielsweise mit den Digi XBee-Modulen. Bei letzterem schließen Sie den XBee an eine serielle Schnittstelle an, und nachdem Sie die Verbindung mit der ehrwürdigen alten "AT" -Befehlsschnittstelle hergestellt haben, verfügen Sie über einen Punkt-zu-Punkt-Kanal, über den Sie beliebigen Text senden können (an Ihren Raspberry Pi) ). ZigBee ist nicht die billigste Art der Nahbereichskommunikation, aber die XBee-Module sind in den letzten 5 Jahren real im Preis gefallen.
Ich weiß, dass einige Leute ein Problem mit der C / C ++ - basierten Sprache haben, die auf Arduino verwendet wird, aber in diesem Fall würden Sie größtenteils bereits vorhandene Skripte anderer Benutzer zusammenführen.
Wenn Sie nach "Arduino-Schlafmodus" googeln, finden Sie Beispiele dafür, wie Sie den Arduino in den Energiesparmodus versetzen und sporadisch aufwachen, um eine Messung vorzunehmen, sie zu kommunizieren und dann wieder in den Schlafmodus zu wechseln.
quelle