物联网创业指南:从概念到产品

物联网(IoT)技术的发展正在以前所未有的速度增长,预计到2020年之前,连接到互联网的设备数量将翻一番,这代表着未来几年内将开发出一个价值6万亿美元的市场。物联网的发展无疑对行为方式提出了新的挑战,与当前基于屏幕、触摸、键盘和鼠标的计算环境相比,物联网设备需要直接与自然交互,实时处理数据。

开发过程预计将变得更加复杂,可能需要为开发者提供合适的工具。为了加快物联网开发,本文介绍了一个物联网入门套件,可以帮助加速物联网项目的启动。

假设正尝试成为一名物联网企业家,如何最小化物联网项目的启动风险?如何满足用户、投资者和决策者对“物联网项目”想法的支持?众所周知,一些明智的步骤可以降低风险:

  • 商业计划
  • 团队
  • 方法论
  • 概念验证
  • 入门套件
  • 试点
  • 商业化

假设原始的“想法”已经足够成熟,可以适应一个盈利的商业计划,并且已经被投资者接受。之后,一位执行经理介入,召集了一个训练有素的开发团队,他们熟练地应用敏捷方法论,确保流程顺畅且持续。太好了!现在在哪里?

自从投资者介入以来已经过去了一段时间,他们已经在推动结果。他们说,应该加快开发过程,尽快推出产品。刚刚开始概念验证,期望构建一个符合用户和投资者需求的初步版本。这是第一个版本,它不应该处理最终产品所需的所有复杂性。目标是生成一个健康的胚胎。由于方法论和团队不断发展,可以从小开始,每个版本都会增加功能和新的测试,直到达到试点原型

在这个时候,一个入门套件可以帮助团队专注于物联网计划背后的主要概念,并使其真正盈利。更好的是,到目前为止获得的资源——领导团队的经理,应用方法论以确保流程顺畅,所有这些都是完全运行的,准备好立即在安装入门套件后运行。

构建入门套件

由于物联网需要连接到互联网的智能设备,应该选择产品平台,这意味着一个CPU和一个网络接口。今天有很多不错的ARM平台,包括Arduino、Netduino和Raspberry PI等。最新的型号在处理器板上增加了有线和/或无线网络接口,同时保持低成本。自然地,应该选择最适合项目和预算的最佳平台。

还应该考虑到产品平台的硬件和软件应该保持最小,以适应物联网计划。大多数情况下包括定制硬件,可能是一个附加板或添加到Arduino总线上的屏蔽。模拟团队的工作流程,得出结论,他们大部分时间将用于编程和测试在目标平台上执行的软件应用程序,与定制硬件交互。

然后,需要一个外部开发系统,安装在微型计算机上,以便有:

  • 一种编程语言及其编译器,为产品生成代码;
  • 实用程序,用于在目标平台上加载可执行代码并进行调试;
  • 包含通信软件的库,提供基本的互联网服务;
  • 包含其他实用程序的库,例如磁盘存储;
  • 物联网开发的软件库模块,如红外编解码器或传感器/电机驱动程序。

选择构建入门套件的第一个平台是Netduino Plus 2,这是一个使用.NET Micro Framework运行在168 MHz、1 MB闪存和192 KB RAM的开源电子平台。请查看Guruprasad详细介绍Netduino Plus 2的文章。

选择Netduino的主要原因是MS Visual Studio作为开发工具的可用性。还应该提到C#编程语言,它的编译器和相应的加载器/调试器,使生活变得更加轻松。.NET软件库还提供了需要处理磁盘和其他外围设备的工具。

要使用Netduino,建议按照以下顺序安装开发环境:

  1. Microsoft Visual Studio Express 2013
  2. .NET Micro Framework SDK v4.3
  3. .NET MF插件for VS2013
  4. Netduino SDK v4.3.2.1

要使用入门套件,请从Github下载IoT.Starter.Np2.Core。在Starter文件夹中可以找到三个VS项目:

  • Controller:包含下面描述的主要应用程序;
  • FileServer:Oneleggedredcow的Netduino文件服务器的修改版本,用于处理存储在micro SD卡上的文件;
  • HttpLibraryV3:Nart Schinackow的HTTPLibrary V3的修改版本,包括HttpServer和相应的HttpRequest和HttpResponse。

文件服务器能够执行以下命令:

  • List:列出Netduino SD卡上的文件;
  • Get:将文件从Netduino传输到PC;
  • Put:将文件从PC传输到Netduino;
  • Delete:从Netduino SD卡中删除文件。

HttpLibrary V3支持简单的认证方法,还有一个NtpClient实用程序,用于直接从互联网初始化日期和时间。

控制器

入门套件的预期行为是一个监听端口80的Web服务器,并用从SD卡加载的home.html文件回答。它还接受来自浏览器的HTTP命令来打开和关闭板上的OnboardLed。浏览器的响应包括当前的日期/时间,以检查NtpClient是否在初始化时正确运行。然后,有三个命令进行测试,假设IP地址如下:

Main()程序负责入门核心功能。首先,它尝试使用NtpClient.GetNetworkTime()设置本地时间。由Http命令使用的onBoardLed也声明了。

public class Program { static HttpServer Server; // server object static Credential ServerCredential; // server security static Configuration ServerConfiguration; // configuration settings static bool status = false; // on board led status public static void Main() { TimeSpan elapsed = TimeSpan.Zero; // Try to get clock at system start try { var time = NtpClient.GetNetworkTime(); Utility.SetLocalTime(time); } catch (Exception ex) { // Don't depend on time Debug.Print("Error setting clock: " + ex.Message); } // On board led OutputPort onBoardLed = new OutputPort(Pins.ONBOARD_LED, false); Thread.Sleep(1000); // Web Server ServerConfiguration = new Configuration(80); ServerCredential = new Credential("Administrator", "admin", "admin"); Server = new HttpServer(ServerConfiguration, ServerCredential, @"\SD\"); Server.OnServerError += new OnServerErrorDelegate(Server_OnServerError); Server.OnRequestReceived += new OnRequestReceivedDelegate(Server_OnRequestReceived); Server.Start(); // File Server FileServer server = new FileServer(@"\SD\", 1554); while (true) { // null task onBoardLed.Write(status); Thread.Sleep(500); } } }

使用预初始化的管理员凭据启动Web服务器,当浏览器请求数据时,将需要这些凭据。文件服务器也在端口1554上启动,以处理micro SD卡。最后,一个空任务循环根据HTTP命令status不断更新onBoardLed。

static void Server_OnRequestReceived(HttpRequest Request, HttpResponse Response) { if (Request.RequestedCommand != null) { switch (Request.RequestedCommand.ToLower()) { case "on": status = true; // on board led ON break; case "off": status = false; // on board led OFF break; } Response.WriteFilesList( "" + "Comando " + Request.RequestedCommand.ToLower() + ": Status = " + status.ToString()); } else if (Request.RequestedFile != null) { string FullFileName = Request.FilesPath + Request.RequestedFile; if (File.Exists(FullFileName)) { Response.WriteFile(FullFileName); } else { Response.WriteNotFound(); } } else { Response.WriteFile(Request.FilesPath + "home.html"); // TODO: product page } }
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485