Welchen Mikrocontroller und welche Programmiersprache sollte ich für eine internetfähige Wetteranzeige verwenden?


11

Ich bin ein Neuling im IoT und möchte meine Karriere im IoT beginnen. Als ich bei Google nach Startups im IoT suchte, fand ich viele Blogs. Und ich fand die im IoT verwendeten Sprachen wie C #, Java, Node.js und die Mikrocontroller wie Arduino, Raspberry Pi, Intel, Netduino usw.

Da ich neu im IoT bin, weiß ich nicht, welche Sprache die beste ist und welchen Mikrocontroller ich für ein Startup verwende?

Für den Basisstart möchte ich ein Gerät erstellen, dessen Anzeige das Wetter für den von meinem Handy angegebenen Standort anzeigt. Es kann also ein gutes Beispiel für einen Start sein, der die Hardware, das Internet und die Software abdeckt.

Das Gerät wird batteriebetrieben sein, eine kleine Digitalanzeige und ja Kostenbeschränkung.

Welchen Mikrocontroller und welche Sprache sollte ich verwenden, um meine Anforderungen für die Anzeige des Wetters zu erfüllen?


1
Dies scheint eine viel bessere Frage zu sein als Ihre vorherige; viel mehr auf einen bestimmten Anwendungsfall konzentriert. Damit wir Ihnen eine gute Antwort geben können, sind hier einige Fragen: Wird Ihr Gerät netz- oder batteriebetrieben sein? Wie groß soll das Display sein? Gibt es eine Kostenbeschränkung?
Aurora0001

2
Auch für die Auswahl des Mikrocontrollers ist diese Antwort wirklich fantastisch.
Aurora0001

1
Vielen Dank @ Aurora0001 Ich habe mehr Details hinzugefügt, als Sie kommentierten, bitte überprüfen.
Jigarb1992

1
Nissen pflücken: Der Arduino ist ein Mikrocontroller. Der Pi ist ein Vollcomputer. Dinge wie Pis und Beaglebones und Gumstix werden normalerweise als "Single-Board-Computer" (SBCs) oder "Computer-on-Module" (COMs) bezeichnet. Im Gegensatz zum Pi läuft auf dem Arduino kein Betriebssystem - der Arduino ist nur ein Atmel ATmega 8 auf einem netten, einfach zu bedienenden Board, das mit einer praktischen IDE geliefert wird. Der Pi ist ein tatsächlicher Computer mit einem ARM Cortex-A53-Mikroprozessorkern. Sie können beispielsweise einen Pi verwenden, um die gesamte Netzwerk- und Anzeigeausgabe sowie die komplexe Steuerung mit einem Arduino durchzuführen, um einfache Arbeiten wie Lesetasten, RFID-Tags oder ähnliches auszuführen.
Jason C

1
Batteriebetriebene Geräte: Meinen Sie wie ein Smartphone / eine Smartwatch (Li-Akku, Lebensdauer einige Tage zwischen den Ladevorgängen) oder wie eine Uhr (AA nicht wiederaufladbar, Lebensdauer einige Monate)? Das wird Ihr Design vorantreiben und Ihre Optionen stark einschränken, wenn Sie sich für Letzteres entscheiden.
pjc50

Antworten:


5

Persönlich würde ich dafür einen Raspberry Pi 3B auswählen , obwohl er wahrscheinlich weitaus leistungsstärker ist, als Sie wirklich brauchen. Die Gründe, warum ich dies vorschlage, sind:

  • Es verfügt über ein integriertes 802.11 b / g / n-WLAN, sodass Sie es nicht über ein Ethernet-Kabel, sondern mit einem Wi-Fi-Netzwerk verbinden können

  • Es unterstützt auch Bluetooth, sodass Sie möglicherweise eine Verbindung zum Telefon herstellen können.

Sie benötigen außerdem eine Anzeigeeinheit, und bequemerweise gibt es mehrere Anzeigen, die für den Raspberry Pi entwickelt wurden, wie diesen 4DPI-32-Touchscreen . Sie sollten nur in der Lage sein, das Display direkt in den 40-poligen Header einzustecken:

40 Pin Raspberry Pi Foundation , CC BY-SA 4.0 . Ich bin mir bewusst, dass dies technisch gesehen ein Pi 2B ist, aber der GPIO ist auf dem 3B der gleiche.

Was den Programmieraspekt in diesem Fall betrifft, müssen Sie lediglich das Wetter von einer API irgendwo abrufen und als GUI-Programm auf dem Bildschirm anzeigen. Das Display funktioniert wie jeder HDMI-Ausgang für den Pi, sodass Sie nichts Besonderes tun müssen. Für Python können Sie Tkinter verwenden, um eine grundlegende Benutzeroberfläche zu erstellen, oder Sie können sogar eine Webanwendung in HTML / CSS / JS schreiben, je nachdem, was Sie möchten. Sie können die OpenWeatherMap-API kostenlos verwenden. Die Dokumentation ist für jeden API-Endpunkt verknüpft.

An diesem Punkt liegt es wirklich an Ihnen. Die beste Sprache hier ist die Sprache, mit der Sie sich am wohlsten fühlen. Wenn Sie AngularJS mögen, erstellen Sie einfach eine HTML-Seite, rufen Sie das Wetter mit Angular ab (oder verwenden Sie eine Bibliothek wie diese , um Ihnen zu helfen) und zeigen Sie sie mit CSS an, damit sie gut aussieht.

Ich vermute, es wäre einfacher , dem Benutzer zu erlauben, seinen Standort auf dem Touchscreen des Pi einzugeben, um den Standort tatsächlich zu ermitteln . Das Senden des Standorts Ihres Telefons ist wahrscheinlich etwas schwieriger, obwohl Sie möglicherweise etwas finden können, wenn Sie viel recherchieren.

Für den Batterieverbrauch ist diese Frage zu Raspberry Pi Stack Exchange lesenswert.


1
Ich muss die Vilros Pi Kits anschließen , die sofort funktionieren und eine Menge lästiger Ersteinrichtung sparen. Auch außerhalb des Themas, aber zum Debuggen habe ich festgestellt, dass dies (und seine robuste Version, wenn Sie die Site durchsuchen) unglaublich nützlich ist. Teuer für den einmaligen Gebrauch, aber es lohnt sich, wenn Sie es die ganze Zeit verwenden. Funktioniert gut mit einem HDMI -> VGA Adapter.
Jason C

1
Nein, erstens, weil Sie auf eine zerbrechliche SD-Karte angewiesen sind, zweitens, weil Sie nicht wirklich in moderaten Mengen produzieren können. Mit einem Pi erhalten Sie möglicherweise einen Proof of Concept, aber dann müssen Sie etwas neu gestalten, das Sie tatsächlich in einem Produkt verwenden können. Darüber hinaus handelt es sich im Grunde genommen um einen vollständigen Nichtstarter für die Batterieleistung bei jeder ernsthaften Verwendung.
Chris Stratton

@ChrisStratton: Für einen Anfänger wie das OP scheint ein RPi meiner Meinung nach eine praktikable Option zu sein. Ja, für die Produktion in großem Maßstab wäre dies nicht ideal, aber ich habe mich darauf konzentriert, eine zugängliche , leicht zu modifizierende Idee bereitzustellen. Ein POC ist genau das, was hier benötigt wird. Ich denke nicht, dass die SD-Karte wirklich ein großes Problem für ein Hobby-Setup ist. In der Massenproduktion ist die Geschichte anders, aber als Ausgangspunkt denke ich, dass dies gut genug funktionieren sollte. Ich bin jedoch offen für Vorschläge für einen besseren Ansatz.
Aurora0001

Abgesehen von der Art und Weise, wie diese Probleme dazu führen, dass ein Produkt nicht mehr funktionsfähig ist, schließt der Batteriestrombedarf des Posters dies von Anfang an aus. Da es sich bei dem pi um eine Set-to-Box-Architektur ohne die Energieverwaltung eines Mobilgeräts handelt, werden Sie mit einem vernünftigen Akku nicht mehr als ein paar Stunden Zeit haben.
Chris Stratton

10

Der Onion Omega 2 behauptet, der kleinste Linux-Computer der Welt zu sein. Diese Behauptung mag nicht ganz zutreffen (siehe zum Beispiel Vocore2 unten), aber meiner Erfahrung nach muss es sich um die kleinste 3 handeln. Kostet nur 5 US-Dollar, integriertes WLAN, das speziell für das Internet der Dinge entwickelt wurde. Hat ein paar Schilde auf ihrer Website zur Verfügung . Brandneues Produkt, scheint eine starke und aktive Community zu haben. Kickstarter-Unterstützer erhalten das Gerät. Ein Besuch lohnt sich.

Schauen Sie sich auch, wie in den Kommentaren erwähnt, den vocore2 an , der tatsächlich kleiner als der Onion zu sein scheint und mit 4 US-Dollar billiger ist. Es wird derzeit bei IndieGoGo finanziert und die voraussichtlichen Versanddaten sind Februar 2017 (nächster Monat zum Zeitpunkt dieses Schreibens). Scheint auch eine Auswahl an Docks zur Verfügung zu haben, und hat einen eingebauten WLAN-Router, was irgendwie cool ist.

Ich bin neulich auf diese gestoßen und habe keine Erfahrung mit ihnen. Beachten Sie jedoch, aufgrund ihrer Neuartigkeit, einige der Linux - Pakete , die Sie verwenden verwendet werden , möglicherweise nicht verfügbar sein kann , noch (zum Beispiel, ich weiß für eine Tatsache , dass ein gstreamer Paket zum Zeitpunkt dieses Schreibens auf der Zwiebel nicht verfügbar ist Sie müssen jedoch aus dem Quellcode erstellen, obwohl gstreamer für Sie nicht relevant ist.

Kurz gesagt, wie die andere Antwort sagt, ist der Pi ein großartiges, kostengünstiges Gerät. Vergessen Sie nicht den Raspberry Pi Zero , einen weiteren winzigen 5-Dollar-Computer nach dem Vorbild der Onion. Es sind nicht alle Ports an Bord, die die größeren Pi haben, aber wenn es Ihnen nichts ausmacht oder wenn Sie nur eine 3 für die Entwicklung und eine Null für die Größe in Endprodukten verwenden möchten, ist dies eine weitere erwägenswerte Wahl.

Andere Geräte, einige teuer, umfassen:

  • BeagleBone Black (dies ist die einzige Pi-Alternative, die ich wegen ihrer geringen Kosten ernsthaft in Betracht ziehen würde).
  • Gumstix ($$$, aber wir verwenden diese ständig in Projekten für ihre Größe)
  • Udoo ($$$ aber packt einen Schlag)
  • Toradex Colibri (Etwas schwierig zu bearbeiten, aber wir verwenden auch häufig bessere Spezifikationen als Gumstix und haben die Möglichkeit, Windows CE mit einer Sofortstartfunktion auszuführen, wenn Sie eine Windows-Toolchain und praktisch keine Startzeit bevorzugen ).

Beachten Sie auch, dass Vilros einige fantastische Pi-Starter-Kits (billiger bei Amazon) herstellt, die mit einem Betriebssystem, funktionierendem WLAN, Kühlkörpern und einem Gehäuse vorverpackt sind, sofort funktionieren und eine Menge Grunz-Setup-Arbeit sparen. Auch einen Besuch wert, wenn Sie die Pi-Route gehen. Vilros stellte auch Beaglebone-Starter-Kits her, die auf ihrer Website nicht mehr verfügbar zu sein scheinen, aber wenn Sie nach Newegg / Amazon / etc. Suchen. Sie können immer noch verfügbaren Bestand finden.


Übrigens ist ein Arduino (oder ein anderer Mikrocontroller im Gegensatz zu den oben aufgeführten vollwertigen Einplatinencomputern) für sich genommen wahrscheinlich nicht das, was Sie hier wollen. Der Arduino ist nur ein Atmel ATmega168 / 328. Es läuft kein Betriebssystem und macht nichts anderes als genau das, was Sie ihm sagen. Für das Netzwerk benötigen Sie beispielsweise das Ethernet-Schutzschild, das mit einer vollständigen Ethernet-Steuerungsbibliothek geliefert wird, von der ich glaube, dass sie einen TCP- und UDP-Stack bietet (ich habe ihn nie verwendet, nur auf ihrer Website zu surfen) und natürlich einen viel begrenzter Code-Platz.

Dann müssten Sie Ihren Wetter-Client und alles darüber aufbauen, und Sie müssen alles in 32 KB oder weniger erledigen. Es ist eine andere Art der Entwicklung als die Linux / Windows-Entwicklung auf dem Pi / Beaglebone / Gumstix / Colibri / etc. Ein bisschen außerhalb des Rahmens dieser Antwort.

Der Arduino ist hier als Add-On für Ihr Hauptsystem geeignet, um Hardware-Schnittstellen wie Lesedrucksensoren, Tasten, die Steuerung grundlegender elektronischer Elemente usw. auszuführen.

Die Entwicklung eingebetteter Systeme ist eine ganz andere Sache als die Desktop-Entwicklung, die Sie auf dem Pi durchführen würden, und ich würde wirklich nicht empfehlen, dies mit einem Arduino allein zu versuchen, insbesondere ohne Erfahrung.


1
vocore2 ist im Moment kleiner und billiger (4 US-Dollar), läuft noch OpenWRT (Linux)
Matija Nalis

2
Was ist die Open-Source-Geschichte mit dieser?
Sean Houlihane

@ SeanHoulihane Gute Frage. Ich werde sehen, ob ich herausfinden kann, dass ihre Kickstarter-Seite und ihre Homepage in dieser Angelegenheit fehlen. Ich bin tatsächlich ein wenig verärgert über die "kleinste" Behauptung der Zwiebelmenschen nach Matijas Vocore2-Kommentar oben, aber vielleicht können sie sich (in meinen bescheidenen Augen) mit einer offenen Architektur wieder gut machen.
Jason C

3
Denken Sie daran, die Leute können alles auf Kickstarter beanspruchen ...
Sean Houlihane

@SeanHoulihane Oh Mann, ich nicht bekommen mich auf Kickstarter Hass schimpfen begann, heh. Widerstehen, widerstehen ... Trotzdem, abgesehen von Kickstarter-Behauptungen und Offenheit, sind sowohl der Omega als auch der Vocore ziemlich cool aussehende neue Geräte. Und wir haben den RPi Zero auch im Low-Cost-Bereich.
Jason C

6

Ich schlage einen schrittweisen Ansatz vor, um herauszufinden, welche Sprache und welchen Controller Sie verwenden sollten. Der Mikrocontroller, den Sie benötigen, hängt von den Aufgaben ab, die Sie ausführen möchten. Theoretisch werden durch die Aufgabe einige Anforderungen festgelegt, die ein geeigneter Mikrocontroller erfüllen wird. Daher sollten Sie den Mikrocontroller anhand dieser Anforderungen auswählen.

  1. Definieren Sie eine User Story für das Gerät. Was erwartest du davon? Was soll es können?

    In Ihrem Fall ist es bereits von Ihnen definiert:

    Ein batteriebetriebenes Gerät, das Eingaben von einem Smartphone empfangen und Wetterinformationen der angeforderten Standorte auf einem eigenen Display anzeigen kann.

  2. Jetzt gibt Ihnen Schritt 1 etwas, mit dem Sie beginnen können. Sie können auf Blockdiagrammebene entscheiden, welche Hardware Sie benötigen.

    Sie benötigen auf jeden Fall ein Display und möglicherweise ein WLAN- oder Bluetooth-Modul, um mit Ihrem Handy zu kommunizieren. Für den Zugriff auf globale Wetterdatenbanken ist möglicherweise eine Internetverbindung erforderlich. Sie sollten beide mit einer MCU oder dem WiFi-Modul steuern (Sie benötigen Internet, um Bluetooth auszuschließen), um die Anzeige steuern und Ihre Software ausführen zu können.

  3. Sie können nach bestimmten Teilen suchen. Sie können zunächst entscheiden, welche Batterie Sie verwenden möchten, damit Sie den Stromverbrauch Ihrer potenziellen Teile berücksichtigen können. Ich habe in einer meiner vorherigen Antworten einen allgemeinen Prozess zur Auswahl von MCUs zusammengefasst . Grundsätzlich sollte hier das gleiche gemacht werden. Wenn Sie ein billiges Display finden, wird es wahrscheinlich eine SPI- oder I2C-Schnittstelle für die Kommunikation verwenden. Dann können Sie entweder nach einem Wifi-Modul mit SPI / I2C suchen, das über eine integrierte MCU verfügt, oder nach einer separaten MCU und einem WiFi-Modul. Das einzelne WiFi-Modul wird wahrscheinlich UART für die Kommunikation verwenden, sodass die einzelne MCU dies entlang des SPI / I2C haben sollte.

  4. Wie für die Sprache. Die meisten Mikrocontroller schränken Ihre Möglichkeiten in diesem Bereich ein. In den meisten Fällen haben Sie die Wahl zwischen C, C ++ oder Assembly. Hier handelt es sich streng genommen um Mikrocontroller und nicht um Einplatinencomputer.

    Wenn Sie sich für ein BeagleBone oder Raspberry entscheiden, auf dem Linux oder ein anderes leistungsstarkes Betriebssystem ausgeführt werden kann, ist die beste Sprache diejenige, die Sie am besten kennen. Natürlich sollte sie die Aufgabe bewältigen können. ( Sie können Java auf dem RPi ausführen, wenn Sie möchten. )

    Das Öffnen eines Sockets für einen globalen Wetterdatendienst kann auch in C, C # oder Python erfolgen. Es wäre etwas schwieriger, JSON mit C zu verarbeiten, aber sicherlich möglich.

Apropos Kosten im Allgemeinen. Die beste Option ist die Suche nach WiFi-fähigen Anzeigegeräten. Es wird viele Ergebnisse geben und die meisten von ihnen verwenden dieselbe Hardware, und dies ist wahrscheinlich die billigste.


Sie können ein ESP8266- WLAN-Modul verwenden, das Arduino-kompatibel ist, um eine Verbindung zum Internet herzustellen und eine Anzeige anzuschließen. Es erfordert viel Basteln als ein Raspberry Pi, ist aber billiger.

Hier ist ein Hackaday-Projekt zum ESP8266 + OLED-Display .


2
Gute Aufschlüsselung des Prozesses. Micropython ist für viele kleine Boards verfügbar. Ein zu berücksichtigender Faktor ist möglicherweise das Ökosystem des Boards und ob es Open-Source-Bibliotheken gibt (obwohl MCU-Anbieter häufig auch gute Bibliotheken bereitstellen).
Sean Houlihane

6

Beim Erstellen eines Startups geht es nicht darum, was Sie mit der Technologie tun können, und nicht einmal um das Produkt. Für ein erfolgreiches Startup, das VCs fesseln kann, sollten Sie zuerst über den Markt nachdenken, den Sie bedienen werden. Aber über den Markt nachzudenken, den Sie bedienen werden, reicht nicht aus. Sie benötigen echte Daten über den Markt. Es geht nicht nur um etwas, das für Sie Sinn macht. Ein Produkt zu erstellen und es dann zu verkaufen, ist kein erfolgreicher Ansatz, und so enden die meisten erfolglosen Startups. Ein Markt ist eine echte Notwendigkeit. Wenn Sie ein Produkt in eine Kiste legen, erstellen Sie es, um einen bestimmten Markt anzusprechen. Dies macht ein erfolgreiches Produkt aus, ein Produkt, das sich selbst verkauft, weil die Leute bereits danach suchen. VCs investieren nur in Startups, die solche Produkte haben, insbesondere wenn sie bereits verkaufen.

Um eine Technologie für die Entwicklung Ihres Produkts zu wählen, müssen Sie zunächst wissen, was Ihr Produkt tun muss. So wird das Problem auf dem ausgewählten Markt gelöst. Dann schauen Sie sich an, was die potenziellen Kunden bereit sind, dafür zu bezahlen. Wählen Sie dann die Technologie, die die schnellste Markteinführung ermöglicht und gleichzeitig die Kosten innerhalb des Budgets hält. Dann lagern Sie die Entwicklung aus oder suchen Sie sich einen Partner, der dies kann und bereit ist, mit Ihnen zusammenzuarbeiten. Teilen Sie den Gewinn 50/50 mit Ihrem Partner. Wenn Sie dann einen Prototyp haben, legen Sie Ihren Geschäftsplan an und denken Sie daran, dass Sie VCs nur dann fesseln können, wenn Sie ihnen zeigen, wie sie Geld verdienen können.

Wenn Sie die Kosten Ihres Produkts für die Massenproduktion senken müssen, können Sie niedrigere Sprachen und weniger einfallsreiche Mikrocontroller wie Microchip PIC oder Silicon Labs EFM mit ASM / C / C ++ verwenden. Wenn das Produkt nicht für die Massenproduktion (über 100.000) vorgesehen ist, verwenden Sie eine höhere Sprache und einfallsreichere Mikrocontroller wie Micro Python oder Lua mit ARM32 MIPS oder sogar Linux mit ARM32 / 64. Dies spart Entwicklungskosten, erhöht aber den Preis der Hardware. Denken Sie daran, dass der Preis des Produkts nicht nur eine Leiterplatte mit Komponenten ist. Entwicklung, Unterbringung, Verpackung und alles andere, was zum Verkauf des Produkts erforderlich ist, sollten in die Kosten gehen. Setzen Sie das in den Geschäftsplan ein. Und gehen Sie nicht mit einem Arduino oder einem Himbeer-Pi oder einer Zwiebel oder etwas anderem, das wie ein Hobby-Gerät aussieht, zu einem VC.

Starten Sie hoch, nicht runter und viel Glück.


Es macht wirklich einen vollständigen Sinn für Marketing. Vielen Dank :)
Jigarb1992
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.