Làm thế nào để một nhà phát triển có kinh nghiệm bắt đầu với IoT


10

Tôi là một nhà phát triển có kinh nghiệm sử dụng nhiều công nghệ cũng như thời gian thực. Tôi muốn tìm hiểu cách phát triển cho một thiết bị không phải là máy tính, máy tính bảng hoặc bất kỳ thiết bị quen thuộc nào mà mọi người đều biết.

Tôi nhận thấy rằng các trang web mua sắm toàn cầu cung cấp phần cứng IoT như mô-đun chuyển tiếp 2 kênh, bảng phát triển nodeMCU và nhiều phần cứng liên quan đến IoT. Tôi không biết phải làm gì với hoặc bắt đầu .

Giả sử tôi biết cách viết mã, làm thế nào để tôi bắt đầu phát triển thiết bị IoT đầu tiên của mình?


Các thiết bị "khác" có bộ xử lý hoặc vi điều khiển cũng như máy tính nói chung, sự khác biệt duy nhất là về hiệu suất, bộ nhớ khả dụng, v.v.
Bence Kaulics

9
Dường như với tôi có một sự ngắt kết nối giữa 'câu hỏi của nhà phát triển có kinh nghiệm' và 'làm thế nào để bắt đầu'. Nó rất đơn giản. Tìm một ứng dụng phù hợp với bạn ngày hôm nay (sưởi ấm, chiếu sáng, tự động hóa) và thực hiện nó. Khi có câu hỏi cụ thể , bạn sẽ nhận được câu trả lời tốt ở đây - rất có thể chúng sẽ đến từ các cải tiến hoặc lặp lại trên nguyên mẫu ban đầu của bạn. Như đã đặt ra, câu hỏi này thực sự là hỏi ý kiến, không có câu trả lời rõ ràng đúng.
Sean Houlihane

3
Tôi đã thực hiện một chỉnh sửa cố gắng truy cập vào nhân của câu hỏi, nhưng vẫn giữ một số văn bản gốc. Tôi đề nghị OP @TheUnreal hỏi phần thứ hai "Việc tham gia vào IoT có bắt buộc phải là một công ty tháo vát hay một cá nhân có thể làm điều đó tốt trong thế giới này không?" như một câu hỏi riêng biệt, vì tôi nghĩ rằng nó vẫn là một câu hỏi có liên quan.
Simon Munro

Câu trả lời:


14

Đây là một câu hỏi rất rộng, nhưng tôi sẽ cố gắng đưa ra một vài gợi ý chung, hy vọng có ích cho người khác, cũng như bạn (vì vậy, xin vui lòng chấp nhận lời xin lỗi của tôi nếu tôi đăng những điều mà bạn đã biết).

Nếu bạn đang hỏi về việc đọc cảm biến, thì đây là từ xa và không nhất thiết phải là IoT. Tôi đã mã hóa nhiều dự án trong đó một PC độc lập đọc và hiển thị một số phép đo.

Nếu bạn cũng muốn điều khiển phần cứng đính kèm, đây là SCADA . Một lần nữa, nó không nhất thiết phải được kết nối với internet.

Đây là sơ đồ của SCADA, mang lại cảm giác rất tốt cho IoT nói chung. Lưu ý rằng các PLC trên sơ đồ là các cảm biến và điều khiển của các thiết bị hỗ trợ IoT.

Kiến trúc SCADA

Bạn có thể yêu cầu khen thưởng phần cứng cho cảm biến & bộ điều khiển tại Khuyến nghị phần cứng .

Và, khi bạn có một số mã, bạn có thể nhận được lời khuyên cho các vấn đề tại Stack Overflow .

Nói chung, IoT cho ngành liên quan đến mô hình máy khách / máy chủ, với máy khách đo / kiểm soát các thiết bị phần cứng và báo cáo / nhận lệnh từ máy chủ. Máy chủ cũng thường có cơ sở dữ liệu và cho phép tạo báo cáo để quản lý và báo động (và có thể hướng dẫn phần cứng từ xa cấu hình lại / tắt máy dựa trên dữ liệu nhận được).

Phù! Đó là phần giới thiệu ngoài đường. Bây giờ để có được bàn tay của chúng tôi bẩn.

Nếu bạn muốn tìm hiểu kỹ về mã hóa, hãy nhìn vào các socket và hiểu sự khác biệt giữa TCPUDP .

May mắn thay, các thập kỷ đã gói gọn hầu hết các công cụ phức tạp hơn trong các thư viện và có lẽ bạn nên đọc các dịch vụ RESTful tốt nhất. Có rất nhiều hướng dẫn, khóa học và video trực tuyến miễn phí, tùy thuộc vào ngôn ngữ của bạn; C là một ngôn ngữ nhúng truyền thống, với một số sử dụng C ++, nhưng tất nhiên, sử dụng bất cứ thứ gì bạn biết / cảm thấy thoải mái. Python cực kỳ phổ biến và đơn giản để học, cũng như là ngôn ngữ được đề xuất cho Raspberry Pi.

Cá nhân, tôi thích các ngôn ngữ được biên dịch để diễn giải, vì việc loại bỏ các lỗi dễ dàng hơn, nhưng sự lựa chọn hoàn toàn phụ thuộc vào bạn. Chỉ cần đảm bảo rằng nó có hỗ trợ tốt để truy cập các thiết bị ngoại vi qua USB, Ethernet và - vẫn cực kỳ phổ biến trong công nghiệp - cổng nối tiếp.

Đối với phía máy chủ, 90% + máy chủ của thế giới vẫn đang chạy trên PHP. Tuy nhiên, có một sự gia tăng trong việc sử dụng NodeJS, chủ yếu từ những người viết mã ứng dụng trình duyệt, hiện chỉ có thể được thực hiện bằng JavaScript và không muốn học hai ngôn ngữ. Tôi không khuyên bạn nên phát triển ứng dụng IoT dựa trên trình duyệt, vì các hạn chế về mã trình duyệt truy cập hệ thống tệp và thiết bị ngoại vi (mặc dù, tôi sẽ đề cập đến các ứng dụng như Cordova , nếu bạn muốn phát triển cho điện thoại thông minh).

Để bắt đầu, tôi muốn giới thiệu Raspberry Pi (mã hóa bằng Python hoặc C).

Bảng Raspberry Pi

Và tôi * đánh giá cao * đề nghị một chiếc mũ cảm biến. Đây chỉ là một ví dụ, nhưng nó không đắt tiền và chứa

  • Con quay hồi chuyển - cảm biến tốc độ góc: +/- 245/500 / 2000dps Gia tốc kế
  • Cảm biến gia tốc tuyến tính: +/- 2/4/8/16 g
  • Từ kế - Cảm biến từ: +/- 4/8/12/16
  • Áp kế Gauss: Phạm vi tuyệt đối 260 - 1260 hPa (độ chính xác phụ thuộc vào nhiệt độ và áp suất, +/- 0,1 hPa trong điều kiện bình thường)
  • Cảm biến nhiệt độ (Nhiệt độ chính xác đến +/- 2 degC trong khoảng 0-65 degC)
  • Cảm biến độ ẩm tương đối (chính xác đến +/- 4,5% trong phạm vi 20-80% rH, chính xác đến +/- 0,5 degC trong phạm vi 15-40 degC)
  • Màn hình ma trận LED 8x8 RGB
  • Cần điều khiển 5 nút nhỏ

bảng cảm biến

Điều đó sẽ cho phép bạn thu thập một số dữ liệu và báo cáo nó đến máy chủ của bạn. Bạn có thể tìm thấy một dịch vụ trực tuyến miễn phí để nhận và hiển thị dữ liệu của mình. Tôi đã thấy một số trên trang web SO khác, nhưng quên ở đâu.

Nhưng, bạn có thể muốn mã máy chủ của riêng bạn. Tôi muốn giới thiệu PHP là ngôn ngữ lập trình. Đối với Linux, bạn được cung cấp LAMP (Linux, Apache, Mysql & PHP). Đối với Windows, bạn phải cài đặt WAMP (Windows, v.v.).

Bạn có thể chọn của bạn. Tôi đã sử dụng XAMPP trong các ứng dụng công nghiệp trong hơn một thập kỷ. Bạn không sử dụng Mysql, Sqlite có thể phục vụ chỉ là tốt (shaless cắm cho câu hỏi SO riêng của tôi về 6 năm trước, “ Sqlite hoặc MySql? Làm thế nào để quyết định? “). Bạn cũng sẽ phải tìm hiểu về CRUD .

Dựa trên dữ liệu nhận được từ máy khách / cảm biến, bạn có thể muốn gửi lại lệnh, thậm chí chỉ đơn giản (hiển thị: "nhiệt độ quá cao", có thể chuyển thành đóng van trong hệ thống công nghiệp).

Bạn có thể muốn tăng báo động trong thời gian thực (gửi email nói rằng nhiệt độ quá cao).

Và, bạn cũng có thể muốn nghĩ về việc tạo báo cáo. Bắt đầu với một bảng hiển thị dữ liệu nhận được. Việc xem xét một biểu đồ, hoặc một cái gì đó fancier. Thêm tùy chọn để xuất sang Giá trị phân tách bằng dấu phẩy (CSV) cho phép người dùng cuối nhập dữ liệu vào bảng tính để phân tích và thao tác thêm.

Nếu bạn làm quyết định rằng bạn muốn báo cáo ưa thích, bạn có thể làm điều đó trong PHP, nhưng, sau một vài thập kỷ mà bây giờ tôi đã chuyển sang làm phần lớn các mặt hàng khác báo cáo công cụ, trong trình duyệt.

Đối với các nguyên tắc chung, hãy tìm hiểu tổng quan về Ứng dụng Trang đơnAJAX . Cá nhân tôi đã nghiên cứu rất nhiều và chọn AngularJS của Google làm ngôn ngữ lập trình của tôi (có rất nhiều hướng dẫn và hỗ trợ tuyệt vời), nhưng bạn có thể tự do sử dụng JS, Jquery, v.v.

Nếu bạn cũng quyết định mã hóa công cụ trình duyệt và bạn cũng có thể sử dụng NodeJ ở phía máy chủ, do đó bạn chỉ phải học một ngôn ngữ lập trình mới.

Quá nhiều sự lựa chọn? Lấy làm tiếc :-(

Tôi hy vọng rằng điều này đã cho bạn một số lời khuyên, nhưng hãy thoải mái đặt câu hỏi, và cho tôi biết nếu có bất kỳ lời khuyên chung nào bị thiếu ở đây.


1
Cảm ơn Mawg, hầu hết những gì bạn nói tôi đã biết và không phải là một câu hỏi, tôi đang làm việc với PHP và Javascript cũng như corodva trong nhiều năm. Tôi nghĩ rằng tôi sẽ bắt đầu mua UNO R3 và xem làm thế nào tôi có thể tiến hành từ đó.
TheUnreal

1
Tôi bắt đầu viết và chỉ không thể dừng lại :-) Tôi hy vọng rằng nó sẽ giúp được người khác. Tôi không biết rõ về Cordova. Nó tốt cho việc truy cập 'phần cứng điện thoại, máy ảnh vôi, SIM, cảm biến độ nghiêng, nhưng nó có thể truy cập cổng nối tiếp không? Bởi vì điều đó được sử dụng rất nhiều trong công nghiệp; bạn có thể nhận được bằng USB để chuyển đổi nối tiếp, đó là những gì chúng tôi sử dụng cho máy tính xách tay, nhưng Cordova có thể gửi dữ liệu qua USB không? Và Ethernet? tiếp tục ...
Mawg nói rằng phục hồi lại

1
... Bạn biết JS, nhưng tôi không khuyên bạn nên sử dụng nó trên vi xử lý nhúng. Bạn có thể , nhưng nó chắc chắn không bình thường. Có lẽ thời gian để lấy một số Python, hoặc C? Hoặc, có thể ý bạn là trình duyệt UNO R3 <-> server <->? Gắn bó với Arduino nếu bạn đã biết nó, bằng mọi cách. Tôi chuyển sang R Pi, nhưng đó chỉ là sở thích cá nhân của tôi. . Bạn có một dự án học tập trong tâm trí? Gợi ý, gợi ý ... iot.stackexchange.com/questions/675/... :-)
Mawg nói Khôi phục Monica

9

Là một nhà phát triển có kinh nghiệm, bạn có khả năng hiểu logic, đọc và viết mã, tìm hiểu mọi thứ và một số kỹ năng quan trọng khác. Những gì bạn có thể không có là sự hiểu biết về thiết bị điện tử cơ bản và nghệ thuật nhận mã từ máy tính để bàn của bạn chạy trên một thiết bị nhỏ.

Nhảy vào mức độ phức tạp sai có thể gây nản chí, và có thể có nghĩa là bạn từ bỏ quá sớm. Ví dụ, mọi người khuyên dùng ESP8266 và NodeMCU mà không nghĩ rằng bạn cần phải mua đúng, bạn cần chip gắn trên bảng phát triển, bạn phải lấy phần mềm của mình trên đó, bạn cần nối nó với một cái gì đó và chỉ sau đó bạn có thể chạy JavaScript. Đó là rất nhiều kỹ năng khác nhau mà bạn cần, và bạn có thể từ bỏ bất kỳ một trong những giai đoạn đó.

Đề nghị của tôi là bắt đầu với một Arduino. Trường hợp Arduino tạo ra sự khác biệt trong cộng đồng nhà sản xuất là việc cắm Arduino vào cổng USB dễ dàng như thế nào và chuỗi triển khai, biên dịch, xây dựng, tất cả đều được sắp xếp cho bạn. Bạn có thể viết một số mã, và flash một số đèn LED rất nhanh.

Tôi cũng đề nghị bạn nên bắt đầu với bộ khởi động Arduino chính thức . Mặc dù nó rất đơn giản, các hướng dẫn rất dễ dàng và bạn có được một loạt các bit và miếng điện tử hữu ích (bảng mạch, dây nhảy, đèn LED, v.v.) vẫn hữu ích.

Đừng bỏ qua việc Arduino cơ bản như thế nào. Có được sự nhiệt tình trước tiên cho các thiết bị điện tử và thực hành trước khi thử bất cứ điều gì quá phức tạp. Nếu bạn thấy các thiết bị điện tử thú vị và muốn làm nhiều hơn, hãy gắn bó với Arduino và nhận một bộ phức tạp hơn. Tôi đã mua robot BOE Shield-Bot . Nó có thể không phải là robot tốt nhất hoặc rẻ nhất, nhưng có một hướng dẫn thực sự tốt đi sâu vào chi tiết về cách điều khiển động cơ servo và như vậy. Bạn cũng có nhiều bit hữu ích hơn.

Nếu bạn vượt qua được điều đó, bạn sẽ từ bỏ và quay lại phần mềm phía máy chủ, hoặc bạn sẽ mua thêm bit, hàn sắt, nhiều bảng và linh kiện hơn. Sẽ sớm thôi bạn sẽ có một ngăn kéo những giấc mơ tan vỡ như phần còn lại của chúng ta.

Tôi không khuyên bạn nên sử dụng Pi quá sớm. Đó là một chiếc máy tính nhiều hơn một thứ và không có các tính năng quan trọng cần thiết khi bắt đầu hành trình tìm hiểu của bạn (như đầu vào tương tự). Bạn sẽ nhanh chóng phát triển nhanh hơn Arduino (nó không dễ dàng kết nối với Internet), nhưng đây là nơi tốt để xem liệu đây có phải là thứ bạn thích hay không.


1
Đây là câu trả lời gần nhất cho câu hỏi của tôi. Cảm ơn bạn.
TheUnreal

6

Tôi sẽ tiến hành trả lời câu hỏi đầu tiên của bạn.

Nếu bạn chỉ muốn học tôi có thể giới thiệu cho bạn một số cuốn sách về IoT nhưng tôi đoán bạn có thể tự tìm kiếm chúng. Nếu điều đó rõ ràng, thì tôi khuyên bạn nên bắt đầu thực hiện dự án nhỏ của riêng mình, đó là cách bạn học tốt nhất, đối mặt với các vấn đề thực tế.

Bạn sẽ cần phải quyết định những gì bạn muốn tạo ra. Dưới đây là một số cảm hứng và ý tưởng tuyệt vời để bắt đầu:

Dự án Arduino -> Vi điều khiển

Dự án Raspberry Pi -> Bộ vi xử lý (mạnh hơn)

hackaday.com -> Thành phần hỗn hợp

Một khi bạn có ý tưởng về những gì bạn muốn làm, sau đó bạn cần đưa ra các yêu cầu cho dự án của bạn. Bộ vi điều khiển, cảm biến, cơ cấu chấp hành, giao thức truyền thông, v.v.

Như bạn có thể thấy các thiết bị phổ biến nhất là Arduino , Raspberrypi và tất cả các họ hàng khác, beaglebone black , củ hành , v.v., còn nhiều điều nữa, sự khác biệt là giá cả, khả năng tương thích với các cảm biến khác và mức độ phổ biến. Những cái phổ biến tương thích hơn và có nhiều hỗ trợ hơn trên các diễn đàn.

Chúng tôi cam giúp bạn với yêu cầu dựa trên dự án của bạn. Chúc may mắn!


Tôi đã có một ý tưởng, nhưng tôi muốn trải nghiệm thế giới này trước khi nhảy vào đây. Tôi nghĩ rằng tôi sẽ bắt đầu mua Uno R3 và gửi câu hỏi ngay khi tôi đi.
TheUnreal

1
Một Arduino Uno rất tốt để kiểm soát các mục vật lý, nhưng nó rất tốn kém để thích ứng với các giao thức mạng, vì về cơ bản bạn phải thêm một vi điều khiển hoặc máy tính tốt hơn để làm điều đó. Đôi khi bạn có thể tìm thấy một phần làm cả hai, những lần khác bạn có một hệ thống đối mặt với mạng ủy thác nhiệm vụ điều khiển điện cho một cái gì đó giống như Arduino
Chris Stratton

2

Những người khác đã tập trung vào khía cạnh đầu tiên của câu hỏi của bạn; Tôi sẽ tập trung vào thứ hai. Bạn hỏi nếu có ai có thể vào IoT hoặc nếu bạn phải là một công ty lớn với nhiều tài nguyên.

Nếu bạn duyệt thẻ , bạn sẽ thấy rằng có các thiết bị IoT đã hoàn thành tất cả các phía máy chủ cho bạn. Có rất nhiều thiết bị IoT mà "bất cứ ai" cũng có thể mua, bao gồm sẽ là Nest cam, bộ điều chỉnh nhiệt, v.v., Amazon Echo, Google Home, lò nướng thông minh, tủ lạnh, v.v.

Ngay cả nhiều chiếc xe mới đủ điều kiện là đối tượng được cảm nhận hoặc điều khiển từ xa ... mặc dù có lẽ chưa phải là phần được kiểm soát. :)

Điều này dẫn đến câu trả lời cho câu hỏi đầu tiên của bạn:

Làm thế nào tôi có thể bắt đầu thực hành phát triển thiết bị IoT đầu tiên của mình?

Bạn không nhất thiết phải bắt đầu bằng cách phát triển: bạn có thể bắt đầu với một cái gì đó đơn giản hơn. Nếu bạn muốn tham gia vào khía cạnh phát triển của nó, bạn có thể chỉ cần lao vào, như một số người đã gợi ý, nhưng bạn có sẵn tùy chọn để bắt đầu đơn giản và dần dần đi vào cõi phức tạp hơn.


1
Và nơi nào tốt hơn để bắt đầu hơn iot.stackexchange.com/questions/675/ ?
Mawg nói rằng phục hồi Monica
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.