経験豊富な開発者はどのようにしてIoTを始めますか


10

私は、さまざまなテクノロジーとリアルタイムを使用する経験豊富な開発者です。コンピューター、タブレット、または誰もが知っている身近なデバイスではないデバイスの開発方法を学びたいです。

グローバルショッピングサイトでは、2チャネルリレーモジュール、nodeMCU開発ボード、およびIoTに関連するその他のハードウェアなどのIoTハードウェアを提供していることに気付きました。私は持っていないないアイデアをどうするか、何を始めるに

コーディング方法を知っているとしたら、最初のIoTデバイスの開発を開始するにはどうすればよいですか?


「他の」装置等、利用可能なメモリ、唯一の違いは、その性能にあり、プロセッサまたはマイクロコントローラ、ならびに一般的なコンピュータを持っている
ベンスKaulics

9
「経験豊富な開発者」の質問と「開始方法」の質問の間には、分断があります。とてもシンプルです。今日あなたに関連するアプリケーション(暖房、照明、自動化)を見つけて実装してください。そこに入ると、特定の質問には、あなたはここで良い回答を得る必要があります-ほとんどの場合、彼らはあなたのオリジナルのプロトタイプの改善または反復から来ます。提起されたように、この質問は本当に意見を求めているので、明確な正解はありません。
Sean Houlihane 2017

3
質問のカーネルに到達しようとする編集を行いましたが、元のテキストの一部は保持しています。OP @TheUnrealが2番目のパートに質問することをお勧めします。「IoTに入るには、機知に富んだ会社である必要がありますか、それとも個人がこの世界でそれを行うことはできますか?」別の質問として、それはまだ関連があると思うので。
Simon Munro 2017

回答:


14

これは非常に広い質問ですが、他の人やあなたにも役立つことを期待して、いくつかの一般的な指針を示します(したがって、すでに知っていることを投稿した場合は、私の謝罪を受け入れてください)。

センサーの読み取りについて質問している場合、これはテレメトリであり、必ずしもIoTではありません。スタンドアロンPCが測定値を読み取って表示する多くのプロジェクトをコーディングしました。

接続されたハードウェアも制御したい場合、これはSCADAです。ここでも、必ずしもインターネットに接続する必要はありません。

これは、一般的なIoTに非常に良い感触を与えるSCADAの図です。図のPLCは、IoT対応デバイスのセンサーと制御であることに注意してください。

SCADAアーキテクチャ

ハードウェアの推奨事項で、センサーとコントローラーのハードウェア表彰を依頼できます。

また、コードを取得すると、Stack Overflowで問題に関するアドバイスを得ることができます。

一般的に、業界向けのIoTにはクライアント/サーバーモデルが含まれ、クライアントはハードウェアデバイスを測定/制御し、サーバーにコマンドを報告/受信します。また、サーバーには通常データベースがあり、管理とアラームのレポートを生成できます(受信したデータに基づいてリモートハードウェアに再構成/シャットダウンを指示する場合もあります)。

ふew!それは邪魔にならないイントロです。次に、手を汚します。

コーディングの要点を知りたい場合は、ソケットを調べて、TCPUDPの違いを理解してください。

幸いなことに、何十年もの間、よりトリッキーなもののほとんどがライブラリにラップされており、RESTfulサービスについて読むことをお勧めします。言語に応じて、無料のオンラインチュートリアル、コース、ビデオが多数あります。Cは従来の埋め込み言語であり、一部はC ++を使用していますが、もちろん、知っている/使い慣れたものを使用してください。Pythonは非常に人気があり、習得が簡単であるだけでなく、Raspberry Piの推奨言語でもあります。

個人的には、バグを簡単に取り除くことができるため、コンパイルされた言語をインタープリターよりも優先しますが、選択は完全にあなた次第です。USB、イーサネット、および業界では非常に一般的なシリアルポートを介して周辺機器にアクセスできることを確認してください。

サーバー側では、世界のサーバーの90%以上がまだPHPで実行されています。ただし、NodeJSの使用は主にブラウザーアプリをコーディングする人々から取り入れられており、現在JavaScriptでしか実行できず、2つの言語を学習したくありません。ファイルシステムと周辺機器にアクセスするブラウザーコードに制限があるため、ブラウザーベースのIoTアプリの開発はお勧めしません(ただし、スマートフォン向けに開発する場合は、Cordovaのようなものについて言及します)。

開始するには、Raspberry Pi(PythonまたはCでコーディング)をお勧めします。

Raspberry Piボード

そして、私は*非常に*センサーハットをお勧めします。これはほんの一例ですが、高価ではなく、

  • ジャイロスコープ–角速度センサー:+/- 245/500 / 2000dps加速度計
  • 線形加速度センサー:+/- 2/4/8/16 g
  • 磁力計-磁気センサー:+/- 4/8/12/16
  • ガウス気圧計:260〜1260 hPaの絶対範囲(精度は温度と圧力に依存し、通常の状態では+/- 0.1 hPa)
  • 温度センサー(0〜65℃の範囲で+/- 2℃まで正確な温度)
  • 相対湿度センサー(20-80%rH範囲で+/- 4.5%の精度、15-40 degC範囲で+/- 0.5 degCの精度)
  • 8x8 RGB LEDマトリクスディスプレイ
  • 小さな5ボタンジョイスティック

センサーボード

これにより、データを収集してサーバーに報告できます。データを受信して​​表示するための無料サービスをオンラインで見つけることができる場合があります。私は他のSOサイトでいくつか見ましたが、どこを忘れてしまいました。

しかし、おそらく独自のサーバーをコーディングする必要があります。プログラミング言語としてPHPをお勧めします。Linuxの場合、LAMP(Linux、Apache、Mysql、PHP)が十分に提供されています。Windowsの場合、WAMP(Windows…など)をインストールする必要があります。

あなたが選ぶことができます。私が使用しているXAMPPを 10年以上にわたって産業用アプリケーションで。Mysqlを使用する必要はありません。Sqliteも同様に機能します(6年前の私自身のSOの質問、「SqliteまたはMySql?どうやって決定するのですか?」)のシャレスプラグCRUDについても学ぶ必要があります。

クライアント/センサーから受信したデータに基づいて、単純なもの(表示:「温度が高すぎる」、これは産業システムのバルブを閉じることになるかもしれません)でも、コマンドを送り返すことができます。

アラームをリアルタイムで発生させたい場合があります(温度が高すぎることを知らせるメールを送信します)。

また、レポートの生成についても検討する必要があります。受信したデータを示す表から始めます。チャート、または何かより凝ったものを検討してください。カンマ区切り値(CSV)にエクスポートするオプションを追加して、エンドユーザーがデータをスプレッドシートにインポートして、さらに分析および操作できるようにします。

手の込んだレポートが必要だ判断した場合は、PHPでそれを行うことができますが、それから数十年後、私は今、クライアント側のレポートに関する多くのことをブラウザで行うようになりました。

一般的な原則については、単一ページアプリケーションAJAXの概要を理解して ください。私は個人的に多くの調査を行い、プログラミング言語としてGoogleのAngularJSを選択しました(多くのチュートリアルと優れたサポートがあります)が、プレーンなJS、Jqueryなどを自由に使用できます。

ブラウザーのものもコーディングすることに決めた場合、サーバー側でNodeJを使用することもできるので、新しいプログラミング言語を1つ習得するだけで済みます。

選択肢が多すぎますか?ごめんなさい :-(

これでアドバイスが得られたことを願っていますが、お気軽に質問して、ここに一般的なアドバイスがない場合はお知らせください。


1
Mawgに感謝します。あなたが言ったことのほとんどはすでに知っていて、問題の一部ではありませんでした。私は何年もPHPとJavascript、およびcorodvaで作業しています。私はUNO R3の購入を開始し、そこからどのように進めることができるか見ていきます。
TheUnreal 2017

1
私は書き始めました、そして、止めることができませんでした:-)私はそれが他の人を助けることを望みます。コルドバをよく知りません。「電話ハードウェア、ライムカメラ、SIM、傾斜センサーにアクセスするのに適していますが、シリアルポートにアクセスできますか?それは業界で多く使用されているため、USBからシリアルコンバーターで問題を解決できますが、これはラップトップで使用されていますが、CordovaはUSB経由でデータを送信できますか?そしてイーサネット?続き...
モーグはモニカを2017

1
... JSは知っていますが、エンベデッドプロセッサで使用することはお勧めしません。できます、それは確かに正常ではありません。たぶん、PythonやCを手に入れる時間でしょうか?あるいは、UNO R3 <->サーバー<->ブラウザを意味しているのでしょうか?すでに知っている場合は、Arduinoを使用してください。私はR Piに切り替えましたが、それは私の個人的な好みにすぎません。。学習プロジェクトを考えていますか?ヒント、ヒント… iot.stackexchange.com/questions/675/ … :-)
モーグはモニカを2017

9

経験豊富な開発者は、ロジックを理解し、コードを読み書きし、物事を理解し、その他の重要なスキルを身に付けることができます。あなたがおそらく持っていないのは、基本的な電子機器と、小さなデバイスで実行されているデスクトップからコードを取得する技術についての理解です。

間違ったレベルの複雑さで飛び込むことは困難な場合があり、あきらめすぎてしまう可能性があります。たとえば、人々はESP8266とNodeMCUをお勧めします。適切なものを入手する必要がある、開発ボードにチップをマウントする必要がある、ソフトウェアを入手する必要がある、何かに配線する必要がある、などとは思わないその後、JavaScriptを実行できますか。それはあなたが必要とする多くの異なるスキルであり、あなたはそれらのステージのどれかをあきらめることができます。

私の推奨は、Arduinoから始めることです。Arduinoがメーカーコミュニティに影響を与えたのは、ArduinoをUSBポートに接続するのがいかに簡単か、そしてコンパイル、ビルド、デプロイのチェーンがすべて自動的にソートされていることでした。コードを記述して、いくつかのLEDをすばやく点滅させることができます。

また、公式のArduinoスターターキットから始めることをお勧めします。非常にシンプルですが、手順は簡単で、有用な電子ビットや部品(ブレッドボード、ジャンパーワイヤ、LEDなど)がたくさんあります。

Arduinoがどれほど基本的なものであるかを気にしないでください。複雑すぎることをしようとする前に、電子機器と実践的な部分に最初に熱意を傾けてください。電子機器に興味があり、さらに多くのことをしたい場合は、Arduinoを使い続け、より複雑なキットを入手してください。BOEシールドボットロボットを購入しました。それは最良または最も安いロボットではないかもしれませんが、サーボなどを制御する方法について詳細に説明する本当に良いチュートリアルがあります。また、さらに多くの便利なビットが表示されます。

それを乗り越えた場合は、あきらめてサーバー側のソフトウェアに戻るか、ビット、はんだごて、ボードとコンポーネントをさらに購入します。すぐに、他の人と同じように、壊れた夢の引き出しが表示されます。

Piをすぐに使用することはお勧めしません。それはものというよりコンピュータのようなものであり、理解の旅の初めに必要な重要な機能(アナログ入力など)を備えていません。Arduinoよりもすぐに大きくなります(インターネットに接続しにくいためです)が、これが楽しいものかどうかを確認するには良い場所です。


1
これが私の質問に最も近い答えです。ありがとうございました。
TheUnreal

6

最初の質問にお答えします。

学習したいだけなら、IoTに関する本をいくつかお勧めしますが、自分で検索できると思います。それが明らかな場合は、自分の小さなプロジェクトに取り掛かることをお勧めします。つまり、実際の問題に直面して、最良の方法を学ぶことができます。

何を作成するかを決める必要があります。開始するためのいくつかのインスピレーションとクールなアイデアを以下に示します。

Arduinoプロジェクト ->マイクロコントローラー

Raspberry Piプロジェクト ->マイクロプロセッサー(より強力)

hackaday.com- >混合コンポーネント

何をしたいかがわかったら、プロジェクトの要件を考え出す必要があります。マイクロコントローラー、センサー、アクチュエーター、通信プロトコルなど

あなたが最も人気のあるデバイスを見ることができるように、ArduinoRaspberrypiおよび他のすべての親類、ビーグルボーンブラックタマネギなどです。さらに多くがあり、違いは価格、他のセンサーとの互換性、人気です。人気のあるものは互換性が高く、フォーラムでより多くのサポートがあります。

私たちはあなたのプロジェクトに基づいた要件であなたを助けます。幸運を!


私はすでにアイデアを持っていますが、これに飛び込む前にこの世界を体験したいと思います。Uno R3を購入し始めたらすぐに質問を投稿すると思います。
TheUnreal、2017

1
Arduino Unoは物理的なアイテムの制御には適していますが、基本的にはより優れたマイクロコントローラーまたはコンピューターを追加する必要があるため、ネットワークプロトコルに適応するにはコストがかかります。場合によっては、両方を実行する1つの部分を見つけることができます。また、電気制御タスクをArduinoのようなものに委任するネットワークに面したシステムがある場合もあります
Chris Stratton

2

他の人はあなたの質問の最初の面に焦点を合わせました。私は後者に焦点を当てます。誰でもIoTを利用できるのか、それとも多くのリソースを持つ大企業でなければならないのかと尋ねました。

あなたが閲覧した場合タグを、あなたはすべてサーバ側はすでにあなたのために行っているのIoTデバイスがあることがわかります。「誰でも」購入できるIoTデバイスはたくさんあります。これには、Nest cam、サーモスタットなど、Amazon Echo、Google Home、スマートオーブン、冷蔵庫などが含まれます。

多くの新しい車でさえ、リモートで感知または制御されるオブジェクトとして認められます...まだ制御されている部分ではないかもしれませんが。:)

これはあなたの最初の質問の答えにつながります:

最初のIoTデバイスの開発を始めるにはどうすればよいですか?

必ずしも開発から始める必要はありません。より単純なものから始めることができます。あなたはそれの開発側に取得したい場合、あなたは可能性があり、いくつかは示唆しているとして、単純に、思い切って、しかし、あなたは、単純な起動して、より複雑なの領域に徐々に移動する使用可能なオプションがあります。


1
そして、iot.stackexchange.com / questions / 675 /…よりもどこから始めるのが良いですか?
Mawgはモニカを2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.