对于启用 Internet 的天气显示,我应该使用哪种微控制器和编程语言?

物联网 微控制器 硬件
2021-06-03 23:36:44

我是物联网的新手,想在物联网领域开始我的职业生涯。当我在 Google 上搜索物联网初创公司时,我发现了很多博客。我发现物联网中使用的语言如 C#、Java、Node.js,以及微控制器如 Arduino、Raspberry Pi、英特尔、Netduino 等。

由于我是物联网的新手,我不知道哪种语言最好,以及我在启动时使用哪种微控制器?

对于我所说的基本启动,我想创建一个设备,该设备的显示器可以显示我的手机给定位置的天气。所以它可能是一个很好的例子,涵盖了硬件、互联网和软件。

设备将由电池供电、小型数字显示器和成本限制。

我应该使用哪种微控制器和语言来满足我显示天气的要求?

4个回答

洋葱欧米茄2号称是最小的Linux计算机世界。这种说法可能并不完全正确(例如,请参见下面的 vocore2),但根据我的经验,它必须是最小的 3。成本仅为 5 美元,内置 wifi,专为物联网而设计。他们的网站上有一些可用的盾牌全新的产品,似乎拥有强大而活跃的社区。Kickstarter 支持者获得该设备。值得一试。

此外,正如评论中所指出的,请查看vocore2,它实际上似乎比 Onion 小,而且便宜 4 美元。它目前由 IndieGoGo 资助,预计发货日期为 2017 年 2 月(撰写本文时为下个月)。看起来也有各种各样的码头可用,并且有一个内置的 wifi 路由器,这有点酷。

我前几天刚遇到那些,对他们没有经验。但是请注意,由于其新颖性,一些你可以用来使用可能无法使用的Linux软件包的尚未(例如,我知道一个事实,在这写的GStreamer包的时间是不可用的洋葱但是,您必须从源代码构建,尽管 gstreamer 与您无关)。

除此之外,就像另一个答案所说的那样,Pi 是一款出色的低成本设备。不要忘记 Raspberry Pi Zero,这是另一台与 Onion 类似的小型 5 美元计算机。它没有较大的 Pi 所具有的所有端口,但如果您不介意,或者如果您只想在开发中使用 3,而在最终产品中使用 0 作为其大小,这是另一个值得考虑的选择。

其他设备(有些昂贵)包括:

  • BeagleBone Black(这是我认真考虑的唯一 Pi 替代品,因为它的成本低)。
  • Gumstix($$$,但我们一直在项目中使用它们以适应它们的大小)
  • Udoo($$$ 但打了一拳)
  • Toradex Colibri(有点难以使用,但我们也经常使用这些,比 Gumstix 更好的规格,如果您更喜欢 Windows 工具链和几乎零启动时间,可以选择运行具有即时启动功能的 Windows CE )。

另请注意,Vilros 制作了一些很棒的Pi 入门套件(在亚马逊上更便宜),预装了操作系统、可用的 Wifi、散热器、外壳,开箱即用,并节省了大量繁琐的设置工作。如果你走 Pi 路线,也值得一试。Vilros 还曾经制作过 Beaglebone 入门套件,但如果您搜索 Newegg/Amazon/等,它们似乎不再在他们的网站上提供。你仍然可以找到可用的库存。


顺便说一句,Arduino(或其他微控制器,与上面列出的成熟的单板计算机形成对比)本身可能不是您想要的。Arduino 只是一个 Atmel ATmega168/328。它不运行操作系统,除了您告诉它做什么之外,它实际上并没有做任何事情。因此,例如,对于网络,您需要以太网屏蔽,它附带一个完整的以太网控制库,我相信它提供了 TCP 和 UDP 堆栈(我从未使用过它,只是浏览了他们的网站)当然占用了很多有限的代码空间。

然后你必须构建你的天气客户端以及在此之上的所有内容,并且你必须在 32KB 或更少的时间内完成所有工作。与在 Pi/Beaglebone/Gumstix/Colibri/等上进行 Linux/Windows 开发相比,这是一种不同的开发风格。有点超出这个答案的范围。

什么是Arduino的好这里是作为一个附加到主系统做硬件接口的东西,喜欢读的压力传感器,按钮,控制基本的电子元件,那种事。

嵌入式系统开发与您在 Pi 上进行的桌面开发完全不同,我真的不建议尝试单独使用 Arduino 来完成这项工作,尤其是在没有经验的情况下。

我建议逐步找出您应该使用的语言和控制器。您需要的微控制器将取决于您希望它执行的任务。从理论上讲,该任务将设置适当的微控制器将满足的一些要求,因此您应该根据这些要求选择微控制器。

  1. 为设备定义用户故事。你对它有什么期望?你希望它有什么能力?

    在您的情况下,它已经由您定义:

    一种电池供电的设备,应该能够接收来自智能手机的输入并在其自己的显示器上显示请求位置的天气信息。

  2. 现在步骤 1. 为您提供一些开始。您可以在框图级别决定所需的硬件。

    您肯定需要一个显示器,可能还需要一个 WiFi 或蓝牙模块来与您的手机通信。访问全球天气数据库可能需要互联网连接。您应该使用 MCU 或 WiFi 模块来控制这两者(您需要互联网,因此您可以排除蓝牙)应该能够控制显示器并运行您的软件。

  3. 您可以开始寻找特定的部分。您可以从决定使用哪种电池开始,这样您就可以考虑潜在部件的功耗。我在我之前的一个回答中总结了选择 MCU 的一般过程基本上应该在这里做同样的事情。找一个便宜的显示器,它可能会使用 SPI 或 I2C 接口进行通信。然后,您可以搜索带有 SPI/I2C 并具有集成 MCU 的 Wifi 模块或单独的 MCU 和 WiFi 模块。单个 WiFi 模块可能会使用 UART 进行通信,因此单个 MCU 应该沿 SPI/I2C 进行通信。

  4. 至于语言。大多数微控制器会限制您在该领域的可能性。在大多数情况下,您的选择将是 C、C++ 或汇编,严格来说这里是微控制器而不是单板计算机。

    如果您决定使用可以运行 Linux 或其他强大操作系统的 BeagleBone 或 Raspberry,那么我说最好的语言将是您最了解的语言,当然它应该能够处理任务。如果您愿意,您可以在 RPi 上运行 Java。

    也可以使用 C、C# 或 Python 来打开全球天气数据服务的套接字。用 C 处理 JSON 会有点困难,但肯定是可能的。

说到一般的成本。最好的选择是搜索支持 WiFi 的显示设备,会有很多结果,而且大多数会使用相同的硬件,这可能是最便宜的。


您可以使用与Arduino 兼容ESP8266 WiFi 模块连接到互联网并连接显示器。与 Raspberry Pi 相比,它需要更多的修补,但会更便宜。

这是一个关于 ESP8266 + OLED 显示器Hackaday 项目

创建一家初创公司与您可以用技术做什么无关,甚至与产品无关。对于一个能够吸引 VC 的成功创业公司,您应该首先考虑您将要服务的市场。但是仅仅考虑您将服务的市场是不够的。你需要有关于市场的真实数据。这不仅仅是关于对你有意义的事情。创建产品然后捆绑销售不是一种成功的方法,这是大多数不成功的初创公司结束的方式。市场是真正的需要。当你创建一个产品时,创建它来解决特定的市场。这就是成功的产品,一种能够自我推销的产品,因为人们已经在寻找它。VC 只投资于拥有此类产品的初创公司,尤其是如果它们已经开始销售。

要选择一种技术来开发您的产品,您首先需要知道您的产品需要做什么,这就是它如何解决所选市场中的问题。然后看看潜在客户愿意为此付出什么。然后选择了可在将成本保持在预算范围内的同时实现最快上市时间的技术。然后将开发外包,或者找一个可以做到并愿意与您合作的合作伙伴。与您的合作伙伴分享利润 50/50。然后,当您有了原型时,就开始制定您的商业计划,并记住只有向风险投资人展示他们如何赚钱才能吸引他们。

如果您需要降低批量生产产品的成本,您可以使用低级语言和资源较少的微控制器,如 Microchip PIC 或带有 ASM/C/C++ 的 Silicon Labs EFM。如果产品不打算批量生产(100k+),请使用更高级别的语言和资源更丰富的微控制器,例如 Micro Python 或带有 ARM32 MIPS 的 Lua,甚至带有 ARM32/64 的 Linux。这节省了开发成本,但增加了硬件的价格。请记住,产品的价格不仅仅是带有组件的 PCB;开发、住房、包装以及销售产品所需的一切都应计入成本。把它放在商业计划中。不要去带 Arduino 或 Raspberry pi 或 Onion 或任何看起来像爱好者小工具的 VC,

启动,而不是下降,祝你好运。

就我个人而言,我会为此选择Raspberry Pi 3B,尽管它可能比您真正需要的要强大得多。我提出这个建议的原因是:

  • 它内置 802.11 b/g/n 无线局域网,因此您可以将其连接到 Wi-Fi 网络,而不是通过以太网电缆

  • 它还支持蓝牙,因此您可以通过蓝牙连接到手机。

您还需要一个显示单元,而且方便的是,有几个专为 Raspberry Pi 设计的显示器,例如4DPI-32 触摸屏您应该能够将显示器直接插入到 40 针接头上:

40针
(来源:raspberrypi.org

树莓派基金会CC BY-SA 4.0我知道这在技术上是 Pi 2B,但 GPIO 在 3B 上是相同的。

至于在这种情况下的编程方面,您需要做的就是从某个地方的 API 获取天气,并将其作为 GUI 程序显示在屏幕上。显示器就像 Pi 的任何 HDMI 输出一样,所以你不需要做任何特别的事情。对于 Python,您可以使用 Tkinter 创建一个基本的 UI,或者您甚至可以选择用 HTML/CSS/JS 编写一个 Web 应用程序,这取决于您喜欢什么。您可以免费使用OpenWeatherMap API每个 API 端点都链接了文档。

在这一点上,这真的取决于你。这里最好的语言是您最熟悉的语言。如果你喜欢AngularJS,只需创建一个HTML页面,获取与棱角分明的天气(或使用图书馆像这样帮助你),并使用一些CSS来使它看起来不错显示。

为了实际获取位置,我怀疑只允许用户在 Pi 的触摸屏上输入他们的位置更容易发送手机的位置可能有点困难,但如果您进行大量研究,您可能会找到一些东西。

对于电池使用,Raspberry Pi Stack Exchange 上的这个问题值得一读。