Tôi nên sử dụng ngôn ngữ lập trình và vi điều khiển nào cho màn hình thời tiết có kết nối Internet?


11

Tôi là người mới làm việc trong IoT và muốn bắt đầu sự nghiệp của mình trong IoT. Khi tôi tìm kiếm trên Google cho các phần khởi động trong IoT, tôi đã tìm thấy nhiều blog. Và tôi đã tìm thấy các ngôn ngữ được sử dụng trong IoT như C #, Java, Node.js và các bộ vi điều khiển như Arduino, Raspberry Pi, Intel, Netduino, v.v.

Vì tôi chưa quen với IoT nên tôi không biết ngôn ngữ nào là tốt nhất và vi điều khiển nào tôi sử dụng để khởi nghiệp?

Đối với khởi động cơ bản tôi nói, tôi muốn tạo một thiết bị có màn hình hiển thị thời tiết cho vị trí được cung cấp từ điện thoại di động của tôi. Vì vậy, nó có thể là một ví dụ tốt cho khởi động bao gồm phần cứng, Internet và phần mềm.

Thiết bị sẽ là một pin, màn hình kỹ thuật số nhỏ và hạn chế chi phí.

Tôi nên sử dụng vi điều khiển và ngôn ngữ nào đáp ứng yêu cầu của tôi để hiển thị thời tiết?


1
Đây có vẻ như là một câu hỏi tốt hơn nhiều so với câu hỏi trước đó của bạn; tập trung hơn nhiều vào một trường hợp sử dụng cụ thể. Vì vậy, chúng tôi có thể cung cấp cho bạn một câu trả lời tốt, đây là một vài câu hỏi: thiết bị của bạn sẽ được cung cấp năng lượng chính hay chạy bằng pin? Bạn muốn màn hình hiển thị lớn đến mức nào? Có hạn chế chi phí?
Aurora0001

2
Ngoài ra, để chọn vi điều khiển, câu trả lời này thực sự tuyệt vời.
Aurora0001

1
Cảm ơn bạn @ Aurora0001 Tôi đã thêm chi tiết như bạn đã nhận xét, vui lòng kiểm tra.
Jigarb1992

1
Chọn nits: Arduino là một vi điều khiển. Pi là một máy tính đầy đủ, những thứ như Pis và Beaglebones và Gumstix thường được gọi là "máy tính bảng đơn" (SBC) hoặc "máy tính trên mô-đun" (COM). Không giống như Pi, Arduino không chạy HĐH - Arduino chỉ là một Atm ATmega ?? 8 trên một bo mạch nhỏ dễ sử dụng, đi kèm với một IDE tiện lợi. Pi là một máy tính thực tế với lõi vi xử lý ARM Cortex-A53. Bạn có thể sử dụng Pi để thực hiện tất cả kết nối đầu ra và hiển thị và điều khiển phức tạp với Arduino để thực hiện các công việc đơn giản như nút đọc, thẻ RFID hoặc một cái gì đó.
Jason C

1
Các thiết bị chạy bằng pin: bạn có nghĩa là như điện thoại thông minh / đồng hồ thông minh (pin Li, tuổi thọ vài ngày giữa các lần sạc) hoặc giống như đồng hồ (AA không sạc được, tuổi thọ vài tháng)? Điều đó sẽ thúc đẩy thiết kế của bạn và hạn chế nghiêm ngặt các tùy chọn của bạn nếu bạn chọn cái sau.
pjc50

Câu trả lời:


5

Cá nhân, tôi sẽ chọn Raspberry Pi 3B cho việc này, mặc dù nó có thể mạnh hơn nhiều so với bạn thực sự cần. Những lý do cho tôi đề nghị này là:

  • Nó có mạng LAN không dây 802.11 b / g / n tích hợp, vì vậy bạn sẽ có thể kết nối nó với mạng Wi-Fi thay vì cáp Ethernet

  • Nó cũng hỗ trợ Bluetooth, vì vậy bạn có thể kết nối với điện thoại thông qua đó.

Bạn cũng sẽ cần một đơn vị hiển thị và, một cách thuận tiện, có một số màn hình được thiết kế cho Raspberry Pi, như màn hình cảm ứng 4DPI-32 này . Bạn chỉ có thể đặt khe hiển thị trực tiếp vào tiêu đề 40 chân:

40 Pin Quỹ Raspberry Pi , CC BY-SA 4.0 . Tôi biết rằng về mặt kỹ thuật đây là Pi 2B, nhưng GPIO giống với 3B.

Đối với khía cạnh lập trình trong trường hợp này, tất cả những gì bạn cần làm là tìm nạp thời tiết từ một API ở đâu đó và hiển thị nó trên màn hình dưới dạng chương trình GUI. Màn hình chỉ hoạt động giống như bất kỳ đầu ra HDMI nào cho Pi, vì vậy bạn không cần phải làm gì đặc biệt. Đối với Python, bạn có thể sử dụng Tkinter để tạo giao diện người dùng cơ bản hoặc thậm chí bạn có thể chọn viết một ứng dụng web bằng HTML / CSS / JS, tùy thuộc vào những gì bạn cảm thấy thoải mái. Bạn có thể sử dụng API OpenWeatherMap miễn phí; tài liệu được liên kết cho từng điểm cuối API.

Tại thời điểm này, nó thực sự tùy thuộc vào bạn. Các tốt nhất ngôn ngữ ở đây là ngôn ngữ mà bạn cảm thấy thoải mái nhất. Nếu bạn thích AngularJS, chỉ cần tạo một trang HTML, tìm nạp thời tiết bằng Angular (hoặc sử dụng một thư viện như thế này để giúp bạn) và hiển thị nó bằng một số CSS để làm cho nó trông đẹp hơn.

Để thực sự có được vị trí, tôi nghi ngờ sẽ dễ dàng hơn khi chỉ cho phép người dùng nhập vị trí của họ trên màn hình cảm ứng của Pi. Gửi vị trí của điện thoại của bạn có lẽ khó khăn hơn một chút, mặc dù bạn có thể tìm thấy thứ gì đó nếu bạn nghiên cứu nhiều.

Đối với việc sử dụng pin, câu hỏi này trên Raspberry Pi Stack Exchange rất đáng đọc.


1
Phải cắm Bộ dụng cụ Vilros Pi , hoạt động ngay lập tức và tiết kiệm được rất nhiều thiết lập ban đầu khó chịu. Cũng ngoài chủ đề nhưng để gỡ lỗi tôi đã thấy điều này (và phiên bản chắc chắn của nó nếu bạn tìm kiếm trang web) cực kỳ hữu ích. Đắt tiền cho một lần sử dụng nhưng đáng giá nếu bạn sử dụng nó mọi lúc. Hoạt động tốt với bộ chuyển đổi HDMI -> VGA.
Jason C

1
Thứ nhất vì sự phụ thuộc vào thẻ SD dễ vỡ, thứ hai vì bạn không thể thực sự sản xuất với số lượng vừa phải. Một pi có thể giúp bạn có bằng chứng về khái niệm, nhưng sau đó bạn sẽ phải thiết kế lại xung quanh một cái gì đó bạn thực sự có thể sử dụng trong một sản phẩm. Hơn nữa, về cơ bản, nó không phải là bộ khởi động hoàn chỉnh cho năng lượng pin trong bất kỳ việc sử dụng nghiêm trọng nào.
Chris Stratton

@ChrisStratton: Đối với người mới bắt đầu như OP, theo tôi, RPi dường như là một lựa chọn khả thi. Vâng, đối với sản xuất quy mô lớn, điều này sẽ không lý tưởng, nhưng tôi tập trung vào việc cung cấp một ý tưởng dễ tiếp cận , dễ sửa đổi; một POC chính xác là những gì cần thiết ở đây. Tôi không nghĩ rằng thẻ SD thực sự là một mối quan tâm lớn đối với thiết lập sở thích; Trong sản xuất hàng loạt câu chuyện là khác nhau nhưng đối với một điểm khởi đầu, tôi nghĩ rằng điều này nên hoạt động đủ tốt. Tôi đang mở cho bất kỳ đề xuất cho một cách tiếp cận tốt hơn mặc dù.
Aurora0001

Ngay cả ngoài những cách mà những vấn đề đó làm cho nó không thể tồn tại trong một sản phẩm, yêu cầu về năng lượng pin của người đăng đã loại trừ nó ngay từ đầu. Vì pi là một kiến ​​trúc được thiết lập sẵn mà không có sự quản lý năng lượng của thiết bị di động, bạn sẽ không nhận được nhiều hơn một vài giờ so với bất kỳ pin hợp lý nào.
Chris Stratton

10

Các Onion Omega 2 tuyên bố là máy tính Linux nhỏ nhất trên thế giới. Khiếu nại đó có thể không hoàn toàn đúng (ví dụ, xem vocore2 bên dưới) nhưng theo kinh nghiệm của tôi, nó phải ở mức nhỏ nhất 3. Chỉ tốn 5 đô la, wifi tích hợp, được thiết kế dành riêng cho IoT. Có một vài lá chắn có sẵn trên trang web của họ . Sản phẩm hoàn toàn mới, dường như có một cộng đồng mạnh mẽ và tích cực. Những người ủng hộ Kickstarter có được thiết bị. Đáng để kiểm tra.

Ngoài ra, như đã chỉ ra trong các bình luận, hãy kiểm tra vocore2 , có vẻ như nhỏ hơn Onion và rẻ hơn ở mức 4 đô la. Nó hiện đang được tài trợ tại IndieGoGo và ngày giao hàng ước tính là tháng 2 năm 2017 (tháng tới tại thời điểm viết bài này). Cũng có vẻ có một loại bến cảng có sẵn, và có một bộ định tuyến wifi tích hợp, khá tuyệt.

Tôi chỉ tình cờ gặp những người khác và không có kinh nghiệm với họ. Lưu ý, tuy nhiên, do sự mới mẻ của họ, một số gói Linux bạn có thể được sử dụng để sử dụng có thể không có được nêu ra (ví dụ, tôi biết một thực tế rằng tại thời điểm này viết một gói GStreamer là không có sẵn trên Onion Tuy nhiên, bạn phải xây dựng từ nguồn, mặc dù trình điều khiển không phù hợp với bạn).

Nói ngắn gọn, giống như câu trả lời khác, Pi là một thiết bị giá rẻ tuyệt vời. Đừng quên Raspberry Pi Zero , một máy tính nhỏ 5 đô la khác dọc theo dòng Hành. Nó không có tất cả các cổng trên tàu mà Pi lớn hơn có nhưng nếu bạn không phiền, hoặc nếu bạn chỉ muốn sử dụng 3 để phát triển và Zero cho kích thước của nó trong các sản phẩm cuối cùng, thì đó là một lựa chọn khác đáng để xem xét.

Các thiết bị khác, một số đắt tiền, bao gồm:

  • BeagleBone Black (đây là lựa chọn thay thế Pi duy nhất tôi nghiêm túc xem xét vì chi phí thấp).
  • Gumstix ($$$, nhưng chúng tôi sử dụng tất cả thời gian trong các dự án cho kích thước của chúng)
  • Udoo ($$$ nhưng đóng gói một cú đấm)
  • Toradex Colibri (Hơi khó để làm việc nhưng chúng tôi cũng sử dụng rất nhiều thông số kỹ thuật tốt hơn Gumstix và có tùy chọn chạy Windows CE với tính năng khởi động tức thì nếu bạn thích công cụ Windows và thời gian khởi động gần như bằng không ).

Cũng lưu ý rằng Vilros làm cho một số bộ khởi động Pi tuyệt vời (rẻ hơn trên Amazon) được đóng gói sẵn với hệ điều hành, Wifi hoạt động, tản nhiệt, vỏ, hoạt động ngay lập tức và tiết kiệm rất nhiều công việc thiết lập lẩm cẩm. Cũng đáng kiểm tra nếu bạn đi tuyến đường Pi. Vilros cũng được sử dụng để tạo bộ dụng cụ khởi động Beaglebone, dường như không còn có sẵn trên trang web của họ nhưng nếu bạn tìm kiếm Newegg / Amazon / vv. bạn vẫn có thể tìm thấy cổ phiếu có sẵn.


Nhân tiện, một Arduino (hoặc một vi điều khiển khác, tương phản với các máy tính bảng đơn đầy đủ được liệt kê ở trên) có thể không phải là thứ bạn muốn ở đây. Arduino chỉ là một Atmel ATmega168 / 328. Nó không chạy HĐH và không thực sự làm gì ngoài chính xác những gì bạn bảo nó làm. Vì vậy, ví dụ, để kết nối mạng, bạn cần có lá chắn ethernet, cung cấp thư viện điều khiển ethernet đầy đủ mà tôi tin rằng cung cấp ngăn xếp TCP và UDP (tôi chưa bao giờ sử dụng nó, chỉ duyệt trang web của họ) và dĩ nhiên chiếm một rất nhiều không gian mã hạn chế.

Sau đó, bạn phải xây dựng ứng dụng khách thời tiết của mình và mọi thứ trên hết, và bạn phải làm tất cả trong 32KB trở xuống. Đó là một hương vị phát triển khác với phát triển Linux / Windows trên Pi / Beaglebone / Gumstix / Colibri / vv. Một chút ngoài phạm vi của câu trả lời này.

Có gì Arduino tốt cho đây là như là một add-on vào hệ thống chính của bạn để làm giao diện phần cứng công cụ, như cảm biến đọc áp lực, các nút, kiểm soát các yếu tố điện tử cơ bản, mà loại điều.

Phát triển hệ thống nhúng là một con quái vật hoàn toàn khác với phát triển máy tính để bàn mà bạn đang thực hiện trên Pi và tôi thực sự không khuyên bạn nên thử làm điều này với một mình Arduino, đặc biệt là không có kinh nghiệm.


1
vocore2 nhỏ hơn và rẻ hơn vào lúc này ($ 4) khi vẫn chạy OpenWRT (Linux)
Matija Nalis

2
Câu chuyện nguồn mở với cái này là gì?
Sean Houlihane

@SeanHoulihane Câu hỏi tuyệt vời. Tôi sẽ xem nếu tôi có thể tìm ra, trang Kickstarter và trang chủ của họ đang thiếu về vấn đề này. Tôi thực sự có chút lúng túng trước yêu sách "nhỏ nhất thế giới" của Onion folks sau lời bình luận vocore2 của Matija ở trên, nhưng có lẽ họ có thể chuộc lại chính mình (trong đôi mắt khiêm tốn của tôi) bằng một kiến ​​trúc mở.
Jason C

3
Hãy nhớ rằng, mọi người có thể yêu cầu bất cứ điều gì trên Kickstarter ...
Sean Houlihane

@SeanHoulihane Ôi trời, làm không làm cho tôi bắt đầu trên rant Kickstarter ghét tôi, heh. Chống lại, chống lại ... Tuy nhiên, Kickstarter tuyên bố và Open-ness sang một bên, cả Omega và giọng hát đều là những thiết bị mới trông khá tuyệt. Và chúng tôi cũng đã có RPi Zero trên mặt trận chi phí thấp.
Jason C

6

Tôi đề nghị một cách tiếp cận từng bước để tìm ra ngôn ngữ và bộ điều khiển nào bạn nên sử dụng. Bộ vi điều khiển bạn cần sẽ phụ thuộc vào các tác vụ bạn muốn nó thực hiện. Về mặt lý thuyết, tác vụ sẽ thiết lập một số yêu cầu mà một vi điều khiển thích hợp sẽ đáp ứng, vì vậy bạn nên chọn vi điều khiển theo các yêu cầu này.

  1. Xác định một câu chuyện người dùng cho thiết bị. Bạn mong đợi gì từ nó? Bạn muốn nó có khả năng gì?

    Trong trường hợp của bạn, nó đã được xác định bởi bạn:

    Một thiết bị chạy bằng pin có khả năng nhận đầu vào từ điện thoại thông minh và hiển thị thông tin thời tiết của các vị trí được yêu cầu trên màn hình của chính nó.

  2. Bây giờ bước 1. cung cấp cho bạn một cái gì đó để bắt đầu. Bạn có thể quyết định phần cứng nào bạn cần ở cấp sơ đồ khối.

    Bạn chắc chắn sẽ cần một màn hình và có thể là một mô-đun WiFi hoặc Bluetooth để giao tiếp với điện thoại di động của bạn. Truy cập cơ sở dữ liệu thời tiết toàn cầu sẽ có thể yêu cầu kết nối Internet. Bạn nên điều khiển cả hai điều này bằng MCU hoặc mô-đun WiFi (bạn cần Internet để có thể loại trừ Bluetooth) để có thể điều khiển màn hình và chạy phần mềm của bạn.

  3. Bạn có thể bắt đầu tìm kiếm các bộ phận cụ thể. Bạn có thể bắt đầu với việc quyết định loại pin nào bạn sẽ sử dụng, do đó bạn có thể cân nhắc mức tiêu thụ năng lượng của các bộ phận tiềm năng của mình. Tôi đã tóm tắt một quy trình chung để chọn MCU trong một trong những câu trả lời trước đây của tôi . Về cơ bản giống nhau nên được thực hiện ở đây. Tìm một màn hình giá rẻ, nó có thể sẽ sử dụng giao diện SPI hoặc I2C để liên lạc. Sau đó, bạn có thể tìm kiếm mô-đun Wifi với SPI / I2C và có MCU tích hợp hoặc MCU riêng và mô-đun WiFi. Mô-đun WiFi riêng lẻ có thể sẽ sử dụng UART để liên lạc, vì vậy MCU cá nhân nên có điều đó dọc theo SPI / I2C.

  4. Đối với ngôn ngữ. Hầu hết các vi điều khiển sẽ giới hạn khả năng của bạn trong lĩnh vực này. Trong hầu hết các trường hợp, các lựa chọn của bạn sẽ là C, C ++ hoặc hội, nói đúng về vi điều khiển ở đây chứ không phải máy tính bảng đơn.

    Nếu bạn quyết định sử dụng BeagleBone hoặc Raspberry có thể chạy Linux hoặc HĐH mạnh mẽ khác thì tôi nói rằng ngôn ngữ tốt nhất sẽ là ngôn ngữ mà bạn biết rõ nhất, tất nhiên nó sẽ có thể xử lý tác vụ. ( Bạn có thể chạy Java trên RPi nếu muốn. )

    Việc mở một ổ cắm cho dịch vụ dữ liệu thời tiết toàn cầu cũng có thể được thực hiện bằng C, C # hoặc Python. Sẽ khó khăn hơn một chút khi xử lý JSON bằng C nhưng chắc chắn là có thể.

Nói về chi phí nói chung. Tùy chọn tốt nhất là tìm kiếm các thiết bị hiển thị hỗ trợ WiFi, sẽ có rất nhiều kết quả và hầu hết chúng sẽ sử dụng cùng một phần cứng và có lẽ đây sẽ là mức giá rẻ nhất.


Bạn có thể sử dụng mô-đun WiFi ESP8266 tương thích với Arduino để kết nối với internet và giao diện hiển thị. Nó sẽ đòi hỏi nhiều tiếng leng keng hơn Raspberry Pi nhưng sẽ rẻ hơn.

Dưới đây là một dự án Hackaday về màn hình OLED ESP8266 + .


2
Sự cố tốt của quá trình. Micropython có sẵn cho nhiều bảng nhỏ, có thể một yếu tố cần xem xét là hệ sinh thái của bảng và nếu có bất kỳ thư viện nguồn mở nào (mặc dù các nhà cung cấp MCU cũng thường cung cấp các thư viện tốt).
Sean Houlihane

6

Tạo một startup không phải là về những gì bạn có thể làm với công nghệ và thậm chí không phải về sản phẩm. Để một startup thành công có thể quyến rũ VC, trước tiên bạn nên nghĩ về thị trường mà bạn sẽ phục vụ. Nhưng nghĩ về thị trường bạn sẽ phục vụ là không đủ. Bạn cần phải có dữ liệu thực về thị trường. Nó không chỉ là về một cái gì đó có ý nghĩa với bạn. Tạo ra một sản phẩm và sau đó buộc phải bán nó không phải là một cách tiếp cận thành công và đó là cách mà hầu hết các công ty khởi nghiệp không thành công kết thúc. Một thị trường là một CẦN THỰC SỰ. Khi bạn đặt một sản phẩm, hãy tạo một sản phẩm để giải quyết một Thị trường cụ thể. Đây là những gì làm nên một sản phẩm thành công, một sản phẩm tự bán vì mọi người đang tìm kiếm nó. VC chỉ đầu tư vào các công ty mới thành lập có sản phẩm như vậy đặc biệt là nếu họ đã bán.

Để chọn một công nghệ để phát triển sản phẩm của bạn trước tiên, bạn cần biết sản phẩm của mình cần làm gì, đây là cách giải quyết vấn đề trong Thị trường đã chọn. Sau đó nhìn vào những gì khách hàng tiềm năng sẵn sàng trả cho nó. Sau đó chọn công nghệ cho phép thời gian tiếp thị nhanh nhất trong khi vẫn giữ chi phí trong ngân sách. Sau đó thuê ngoài phát triển hoặc có được một đối tác có thể làm điều đó và sẵn sàng làm việc với bạn. Chia sẻ lợi nhuận 50/50 với đối tác của bạn. Sau đó, khi bạn có một nguyên mẫu, hãy bắt đầu vạch ra kế hoạch kinh doanh của bạn và hãy nhớ rằng bạn chỉ có thể quyến rũ VC nếu bạn chỉ cho họ cách họ có thể kiếm tiền.

Nếu bạn cần hạ giá thành sản phẩm để sản xuất hàng loạt, bạn có thể sử dụng các ngôn ngữ cấp thấp hơn và các bộ điều khiển vi mô ít tài nguyên hơn như Microchip PIC hoặc Silicon Labs EFM với ASM / C / C ++. Nếu sản phẩm không được sản xuất hàng loạt (100k +), hãy sử dụng ngôn ngữ cấp cao hơn và bộ điều khiển vi mô tài nguyên hơn, như Micro Python hoặc Lua với ARM32 MIPS hoặc thậm chí Linux với ARM32 / 64. Điều này tiết kiệm chi phí phát triển nhưng làm tăng giá của phần cứng. Hãy nhớ rằng, giá của sản phẩm không chỉ là PCB với các thành phần; phát triển, nhà ở, đóng gói và mọi thứ cần thiết để bán sản phẩm nên đi vào chi phí. Đặt nó trong kế hoạch kinh doanh. Và đừng đi đến một VC với Arduino hoặc Raspberry pi hoặc Onion hoặc bất kỳ thứ gì trông giống như một tiện ích sở thích,

Bắt đầu, không xuống, và tốt nhất của lucks.


Nó thực sự làm cho một ý nghĩa hoàn toàn của tiếp thị. Cảm ơn bạn :)
Jigarb1992
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.