Wie fängt ein erfahrener Entwickler mit IoT an?


10

Ich bin ein erfahrener Entwickler, der verschiedene Technologien sowie Echtzeit verwendet. Ich möchte lernen, wie man für ein Gerät entwickelt, das kein Computer, Tablet oder eines der bekannten Geräte ist, die jeder kennt.

Mir ist aufgefallen, dass globale Einkaufsseiten IoT-Hardware wie 2-Kanal-Relay-Modul, NodeMCU-Entwicklungsboard und mehr Hardware im Zusammenhang mit IoT anbieten. Ich habe keine Ahnung, was ich tun oder anfangen soll .

Angenommen, ich weiß, wie man programmiert, wie beginne ich mit der Entwicklung meines ersten IoT-Geräts?


Die "anderen" Geräte haben einen Prozessor oder Mikrocontroller sowie einen allgemeinen Computer. Der einzige Unterschied besteht in der Leistung, dem verfügbaren Speicher usw.
Bence Kaulics,

9
Es scheint mir eine Trennung zwischen "erfahrenen Entwicklern" und "wie man anfängt" -Fragen zu geben. Es ist sehr einfach. Finden Sie eine Anwendung, die für Sie heute relevant ist (Heizung, Beleuchtung, Automatisierung) und implementieren Sie sie. Sobald es bestimmte Fragen gibt, sollten Sie hier gute Antworten erhalten - höchstwahrscheinlich stammen sie aus Verbesserungen oder Iterationen Ihres ursprünglichen Prototyps. Wie gestellt, fragt diese Frage wirklich nach Meinungen, es gibt keine klar richtige Antwort.
Sean Houlihane

3
Ich habe eine Bearbeitung vorgenommen, die versucht, zum Kern der Frage zu gelangen, aber einen Teil des Originaltextes beibehält. Ich schlage vor, dass OP @TheUnreal den zweiten Teil fragt: "Erfordert der Einstieg in das Internet der Dinge ein einfallsreiches Unternehmen, oder kann es auch eine Einzelperson in dieser Welt tun?" als separate Frage, da ich denke, dass es immer noch eine relevante Frage ist.
Simon Munro

Antworten:


14

Dies ist eine sehr weit gefasste Frage, aber ich werde versuchen, einige allgemeine Hinweise zu geben, die hoffentlich sowohl für andere als auch für Sie nützlich sind (bitte nehmen Sie meine Entschuldigung an, wenn ich Dinge poste, die Sie bereits kennen).

Wenn Sie nach Lesesensoren fragen, ist dies Telemetrie und nicht unbedingt IoT. Ich habe viele Projekte codiert, bei denen ein eigenständiger PC einige Messwerte liest und anzeigt.

Wenn Sie auch die angeschlossene Hardware steuern möchten, ist dies SCADA . Auch hier muss es nicht unbedingt mit dem Internet verbunden sein.

Hier ist ein Diagramm von SCADA, das ein sehr gutes Gefühl für das IoT im Allgemeinen vermittelt. Beachten Sie, dass die SPS im Diagramm Sensoren und Steuerungen von IoT-fähigen Geräten sind.

SCADA-Architektur

Unter Hardware-Empfehlungen können Sie Hardware-Empfehlungen für Sensoren und Controller anfordern .

Sobald Sie Code haben, können Sie sich bei Stack Overflow über Probleme beraten lassen .

Im Allgemeinen umfasst IoT für die Industrie das Client / Server-Modell, wobei der Client Hardwaregeräte misst / steuert und Befehle an den Server meldet / von diesem empfängt. Der Server verfügt im Allgemeinen auch über eine Datenbank und ermöglicht die Erstellung von Berichten für Verwaltung und Alarme (und weist die Remote-Hardware möglicherweise an, basierend auf den empfangenen Daten eine Neukonfiguration / ein Herunterfahren durchzuführen).

Puh! Das ist das Intro aus dem Weg. Nun, um uns die Hände schmutzig zu machen.

Wenn Sie sich mit dem Codieren befassen möchten, schauen Sie sich die Sockets an und verstehen Sie den Unterschied zwischen TCP und UDP .

Glücklicherweise haben die Jahrzehnte die meisten kniffligen Dinge in Bibliotheken verpackt, und Sie sollten sich am besten über RESTful-Services informieren. Abhängig von Ihrer Sprache gibt es zahlreiche kostenlose Online-Tutorials, Kurse und Videos. C ist eine traditionelle eingebettete Sprache, einige verwenden C ++, aber verwenden Sie natürlich alles, was Sie kennen / sich wohl fühlen. Python ist sehr beliebt und einfach zu erlernen sowie die empfohlene Sprache für den Raspberry Pi.

Persönlich ziehe ich kompilierte Sprachen der Interpretation vor, da es einfacher ist, die Fehler zu beseitigen, aber die Wahl liegt ganz bei Ihnen. Stellen Sie nur sicher, dass der Zugriff auf Peripheriegeräte über USB, Ethernet und - in der Industrie immer noch sehr verbreitet - serielle Schnittstelle gut unterstützt wird.

Auf der Serverseite laufen immer noch 90% der Server der Welt auf PHP. Es gibt jedoch eine Akzeptanz bei der Verwendung von NodeJS, hauptsächlich von Leuten, die Browser-Apps codieren, was derzeit nur in JavaScript möglich ist und keine zwei Sprachen lernen möchte. Ich empfehle nicht, browserbasierte IoT-Apps zu entwickeln, da der Zugriff auf das Dateisystem und die Peripheriegeräte durch den Browsercode eingeschränkt ist (ich würde jedoch Cordova erwähnen , wenn Sie für Smartphones entwickeln möchten).

Zu Beginn würde ich einen Raspberry Pi empfehlen (Codierung in Python oder C).

Himbeer-Pi-Board

Und ich empfehle dringend einen Sensorhut. Dieser ist nur ein Beispiel, aber er ist nicht teuer und enthält

  • Gyroskop - Winkelgeschwindigkeitssensor: +/- 245/500 / 2000dps Beschleunigungsmesser
  • Linearbeschleunigungssensor: +/- 2/4/8/16 g
  • Magnetometer - Magnetsensor: +/- 4/8/12/16
  • Gauß-Barometer: 260 - 1260 hPa absoluter Bereich (Genauigkeit abhängig von Temperatur und Druck, +/- 0,1 hPa unter normalen Bedingungen)
  • Temperatursensor (Temperaturgenauigkeit auf +/- 2 ° C im Bereich von 0 bis 65 ° C)
  • Sensor für relative Luftfeuchtigkeit (genau auf +/- 4,5% im Bereich von 20-80% rH, genau auf +/- 0,5 ° C im Bereich von 15-40 ° C)
  • 8x8 RGB LED Matrix Anzeige
  • Kleiner 5-Tasten-Joystick

Sensorplatine

Auf diese Weise können Sie einige Daten sammeln und an Ihren Server melden. Möglicherweise finden Sie online einen kostenlosen Dienst zum Empfangen und Anzeigen Ihrer Daten. Ich habe einige auf einer anderen SO-Seite gesehen, aber vergiss wo.

Aber Sie möchten wahrscheinlich Ihren eigenen Server codieren. Ich würde PHP als Programmiersprache empfehlen. Für Linux sind Sie mit LAMP (Linux, Apache, MySQL & PHP) gut ausgestattet. Für Windows müssen Sie einen WAMP installieren (Windows usw.).

Sie können Ihre Wahl treffen. Ich benutze XAMPP seit über einem Jahrzehnt in industriellen Anwendungen. Sie müssen nicht haben zu Mysql verwenden, kann SQLite dienen genausogut (shaless Stecker für meine eigene Frage SO von 6 Jahren „ , SQLite oder MySQL? Wie entscheiden? „). Sie müssen auch etwas über CRUD lernen .

Basierend auf den vom Client / Sensor empfangenen Daten möchten Sie möglicherweise einen Befehl zurücksenden, auch nur einen einfachen (Anzeige: "Temperatur zu hoch", was möglicherweise zum Schließen eines Ventils in einem industriellen System führt).

Möglicherweise möchten Sie Alarme in Echtzeit auslösen (senden Sie eine E-Mail mit dem Hinweis, dass die Temperatur zu hoch ist).

Vielleicht möchten Sie auch über das Generieren von Berichten nachdenken. Beginnen Sie mit einer Tabelle mit den empfangenen Daten. Sie betrachten ein Diagramm oder etwas schickeres. Fügen Sie eine Option zum Exportieren in CSV ( Comma Separated Values ) hinzu, mit der der Endbenutzer die Daten zur weiteren Analyse und Bearbeitung in eine Tabelle importieren kann.

Wenn Sie sich für eine ausgefallene Berichterstellung entscheiden, können Sie dies in PHP tun, aber nach einigen Jahrzehnten bin ich nun dazu übergegangen, einen Großteil der Berichtsseite clientseitig im Browser auszuführen.

Verschaffen Sie sich einen Überblick über Single Page Applications und AJAX . Ich persönlich habe viel recherchiert und AngularJS von Google als meine Programmiersprache ausgewählt (es gibt viele Tutorials und großartige Unterstützung), aber Sie können einfach JS, Jquery usw. verwenden, wie Sie möchten.

Wenn Sie sich dazu entschließen, auch Browser- Inhalte zu codieren, und Sie möglicherweise auch NodeJs auf der Serverseite verwenden, müssen Sie nur eine neue Programmiersprache lernen.

Zu viele Möglichkeiten? Es tut uns leid :-(

Ich hoffe, dass dies Ihnen einige Ratschläge gegeben hat, aber Sie können gerne Fragen stellen und mich wissen lassen, ob hier allgemeine Ratschläge fehlen.


1
Vielen Dank, Mawg. Das meiste, was Sie gesagt haben, weiß ich bereits und war kein Problem. Ich arbeite seit Jahren mit PHP und Javascript sowie Corodva. Ich denke, ich werde anfangen, UNO R3 zu kaufen und sehen, wie ich von dort aus vorgehen kann.
TheUnreal

1
Ich habe angefangen zu schreiben und konnte einfach nicht aufhören :-) Ich hoffe, dass es anderen helfen wird. Ich kenne Cordova nicht gut genug. Es ist gut für den Zugriff auf Telefonhardware, Kalkkamera, SIM-Karte und Neigungssensor, aber kann es auf die serielle Schnittstelle zugreifen? Weil das in der Industrie viel genutzt wird; Sie können mit einem USB-zu-Seriell-Konverter auskommen, den wir für Laptops verwenden. Kann Cordova Daten über USB senden? Und Ethernet? Fortsetzung ...
Mawg sagt, Monica

1
... Sie kennen JS, aber ich würde es nicht empfehlen, es auf einem eingebetteten Prozessor zu verwenden. Sie können , aber es ist sicherlich nicht normal. Vielleicht ist es Zeit, Python oder C zu kaufen? Oder meinst du vielleicht UNO R3 <--> Server <--> Browser? Bleib auf jeden Fall bei Arduino, wenn du es bereits weißt. Ich wechsle zu R Pi, aber das ist nur meine persönliche Präferenz. . Haben Sie ein Lernprojekt im Sinn? Hinweis, Hinweis ... iot.stackexchange.com/questions/675/… :-)
Mawg sagt, Monica

9

Als erfahrener Entwickler haben Sie die Fähigkeit, Logik zu verstehen, Code zu lesen und zu schreiben, Dinge herauszufinden und einige andere wichtige Fähigkeiten. Was Sie wahrscheinlich nicht haben, ist ein Verständnis der grundlegenden Elektronik und der Kunst, Code von Ihrem Desktop auf einem kleinen Gerät auszuführen.

Ein Sprung in die falsche Komplexität kann entmutigend sein und dazu führen, dass Sie zu früh aufgeben. Zum Beispiel empfehlen die Leute den ESP8266 und die NodeMCU, ohne zu denken, dass Sie den richtigen benötigen, dass der Chip auf einer Entwicklungsplatine montiert ist, dass Sie Ihre Software darauf installieren müssen, dass Sie ihn mit etwas verbinden müssen und nur Dann können Sie JavaScript ausführen. Das sind viele verschiedene Fähigkeiten, die Sie benötigen, und Sie können jede dieser Stufen aufgeben.

Meine Empfehlung ist, mit einem Arduino zu beginnen. Arduino hat in der Maker-Community einen Unterschied gemacht, wie einfach es ist, ein Arduino an einen USB-Anschluss anzuschließen, und die Kette zum Kompilieren, Erstellen und Bereitstellen ist für Sie sortiert. Sie können Code schreiben und einige LEDs sehr schnell blinken lassen.

Ich schlage außerdem vor, dass Sie mit dem offiziellen Arduino-Starter-Kit beginnen . Obwohl es sehr einfach ist, sind die Anweisungen einfach und Sie erhalten eine Reihe nützlicher elektronischer Kleinigkeiten (Steckbrett, Überbrückungskabel, LEDs usw.), die nützlich bleiben.

Lassen Sie sich nicht davon abschrecken, wie einfach das Arduino ist. Lassen Sie sich zuerst für die Elektronik und den praktischen Teil begeistern, bevor Sie etwas zu Komplexes ausprobieren. Wenn Sie die Elektronik interessant finden und mehr tun möchten, bleiben Sie beim Arduino und erhalten Sie ein komplexeres Kit. Ich habe den BOE Shield-Bot Roboter gekauft . Es ist vielleicht nicht der beste oder billigste Roboter, hat aber ein wirklich gutes Tutorial, das detailliert beschreibt, wie Servos und dergleichen gesteuert werden. Sie landen auch mit viel mehr nützlichen Bits.

Wenn Sie das durchstehen, geben Sie entweder auf und kehren zur serverseitigen Software zurück, oder Sie kaufen mehr Bits, Lötkolben, mehr Platinen und Komponenten. Sehr bald landen Sie mit einer Schublade zerbrochener Träume wie der Rest von uns.

Ich würde nicht empfehlen, den Pi zu früh zu verwenden. Es ist eher ein Computer als eine Sache und verfügt nicht über wichtige Funktionen, die zu Beginn Ihrer Reise des Verstehens erforderlich sind (wie Analogeingänge). Sie werden dem Arduino sehr schnell entwachsen (es lässt sich nicht leicht mit dem Internet verbinden), aber es ist ein guter Ort, um zu sehen, ob dies etwas ist, das Ihnen Spaß macht.


1
Dies ist die naheliegendste Antwort auf meine Fragen. Vielen Dank.
TheUnreal

6

Ich werde Ihre erste Frage beantworten.

Wenn Sie nur lernen möchten, kann ich Ihnen einige Bücher über IoT empfehlen, aber ich denke, Sie können sie selbst suchen. Wenn das klar ist, würde ich Ihnen empfehlen, an Ihrem eigenen kleinen Projekt zu arbeiten. Auf diese Weise lernen Sie das Beste, wenn Sie mit realen Problemen konfrontiert sind.

Sie müssen entscheiden, was Sie erstellen möchten. Hier sind einige Inspirationen und coole Ideen für den Anfang:

Arduino-Projekte -> Mikrocontroller

Himbeer-Pi-Projekte -> Mikroprozessor (leistungsfähiger)

hackaday.com -> Gemischte Komponenten

Sobald Sie die Idee haben, was Sie tun möchten, müssen Sie die Anforderungen für Ihr Projekt festlegen. Der Mikrocontroller, Sensoren, Aktoren, Kommunikationsprotokolle usw.

Wie Sie sehen können, sind die beliebtesten Geräte Arduino , Raspberrypi und alle anderen Verwandten, Beaglebone Black , Zwiebel usw. Es gibt viele weitere, die Unterschiede sind der Preis, die Kompatibilität mit anderen Sensoren und die Beliebtheit. Die beliebtesten sind kompatibler und haben mehr Unterstützung in Foren.

Wir helfen Ihnen bei den Anforderungen, die auf Ihrem Projekt basieren. Viel Glück!


Ich habe bereits eine Idee, aber ich möchte diese Welt erleben, bevor ich mich darauf einlasse. Ich denke, ich werde Uno R3 kaufen und Fragen stellen, sobald ich gehe.
TheUnreal

1
Ein Arduino Uno eignet sich gut zur Steuerung physischer Elemente, die Anpassung an Netzwerkprotokolle ist jedoch teuer, da Sie dazu grundsätzlich einen weiteren besseren Mikrocontroller oder Computer hinzufügen müssen. Manchmal finden Sie einen Teil, der beides kann, manchmal haben Sie ein Netzwerk-System, das die elektrische Steuerungsaufgabe an so etwas wie einen Arduino delegiert
Chris Stratton

2

Andere haben sich auf die erste Facette Ihrer Frage konzentriert; Ich werde mich auf Letzteres konzentrieren. Sie haben gefragt, ob nur jemand in das Internet der Dinge einsteigen kann oder ob Sie ein großes Unternehmen mit vielen Ressourcen sein müssen.

Wenn Sie das Tag durchsuchen , werden Sie feststellen, dass es IoT-Geräte gibt, bei denen die gesamte Serverseite bereits für Sie erledigt ist. Es gibt viele IoT-Geräte, die "nur jeder" kaufen kann, darunter die Nest-Kamera, der Thermostat usw., das Amazon Echo, Google Home, intelligente Öfen, Kühlschränke usw.

Sogar viele neue Autos qualifizieren sich als Objekte, die ferngesteuert erfasst oder gesteuert werden müssen ... obwohl dies möglicherweise noch nicht der kontrollierte Teil ist. :) :)

Dies führt zur Antwort auf Ihre erste Frage:

Wie kann ich mit der Entwicklung meines ersten IoT-Geräts beginnen?

Sie müssen nicht unbedingt mit der Entwicklung beginnen: Sie können mit etwas Einfacherem beginnen. Wenn Sie in die Entwicklungs Seite davon bekommen wollen, Sie könnten einfach den Sprung zu wagen , wie einige vorgeschlagen haben, aber Sie haben die Möglichkeit zur Verfügung haben einfach zu beginnen und allmählich in den Bereich der komplexeren zu bewegen.


1
Und wo kann man besser anfangen als iot.stackexchange.com/questions/675/… ?
Mawg sagt, Monica
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.