物联网(internet of things,iot)一词,是由美国麻省理工学院auto-id中心主任kevin ashton,于1999年进行rfid研究时所提出的概念。物联网是指为每个东西,包括一般物品(例如:超商以及它所贩售的所有商品)、传感器,甚至人类和动物,都标上唯一识别码(unique identifier,如:条形码、ip地址、身份证号码等),彼此之间通过约定好的通信协议,利用互联网相连、分享数据。
物联网不仅是两个设备之间的互相连接,它们通常也连接到负责收集数据,以及协调这些设备运作的(云)服务器。此外,控制器、传感器等物联网设备,通常也都要具备让用户操作和监控的界面,无论是网页还是app形式。下面是物联网的基本架构:
可连接互联网设备的数量,在2011年时超越地球总人口数。这些设备包含消费性电子产品、工厂机器、家电、医疗器材、传感器等。以往,数据通过人力输入到计算机(例如,抄录水、电、燃气用量),现在多半则是由设备直接提供数据给另一个设备。
举例而言,你的手机认得“你”和“家人”,当你的小孩抵达校园时,“学校”会自动发送短信通知;手机可以记录你的运动习惯并协调智能型温控器,在你到家之前调整好室温:若是下班快抵达家门时,手机可以自动过滤公司电话,并通知住家的房子自动打开车库门。宅配的货车可实时更新网购商品位置和预计送达时间,也能读取送货路线的交通状况,并适时提醒或规划避开车流量大的路线。
所以,机器和机器相互连接、协同合作(machine to machine, m2m),就能完成代理人或者贴身秘书的工作。随着宽带网络基础建设的普及、各式云服务推陈出新,加上传感器、通信芯片和单片机技术的提升与价格下降,使得“物联网”从概念融入真实的日常生活中。
0.1 javascript与物联网许多嵌入式系统采用的是运算性能、存储器容量相对较低的8位单片机,它们也通常采用专属的库和开发工具,并且多采用c/c++语言开发。就像电视机、空调等家电,逐渐脱离“单独”运作的时代,为了抢食物联网市场大饼,原本软硬件较为封闭的嵌入式控制器,也开始拥抱开放的互联网和web标准。
这股风潮,也将原本称霸web前台技术的javascript(注:在网页上提供交互功能的编程语言)顺势带入物联网。例如,pebble智能表提供的开发工具pebblekit和pebble.js,让你用javascript来开发手表的app。又如,2014年被google收购的nest labs公司推出的nest温度控制器,也有供javascript代码使用的api(application interface,应用程序接口,也就是提供让外部程序控制的渠道),因此,程序员可用javascript读取或调控nest温控器的状态。基本上,凡具备web浏览器的设备,就能运行javascript。
在浏览器内操作的应用(像youtube, google docs和office 365),叫作web应用。web应用分成前台和后台(服务器端)两大部分,以电子邮件服务网站(如:qq和gmail)为例,显示在浏览器里电子邮件操作的界面(网页)是前台,提供用户填写信件的界面,负责发送邮件的则是后台。网页界面的架构通过html定义,外观样式由css定义,动态改变字体样式、大小、插入表情图案等交互功能则是用javascript写成的。
javascript语言具有下列几个特色:
所有浏览器都支持,也是网页的标准语言。
语法简单,学习门槛低,容易入门。
不需要特殊的开发工具,在计算机、平板电脑或手机上,用文本编辑软件和浏览器就能开发和调试javascript代码。
有为数众多的开发者,以及书籍、网络等参考资源和示例。
用于服务器和单片机的javascript
当qq用户单击“发送”按钮之后,信件内容会从浏览器传给qq服务器,而在服务器上运行的代码,将负责寄送信件和保存邮件等功能。不像浏览器,在服务器端运行的编程语言并没有统一,常见的语言和运行环境有php、asp.net、ruby等。
其实,服务器端程序也能用javascript语言开发。可在浏览器之外独立运行ja¬vascript代码的node.js于2009年问世,并相继被沃尔玛、paypal(在线支付款项系统)和netflix(网飞,在线电视)等大型企业所采纳,用来建置可应付购物旺季高流量的高性能网站后台程序。
node.js并不是第一个可在浏览器外运行的javascript环境,但它是最成功的一个。
node.js能够在windows、mac os x以及linux系统中运行;不只是个人计算机,风靡创客的raspberry pi(以下称“树莓派”)、beaglebone black(http://beagleboard.org/black),以及9美元的开源微电脑c.h.i.p.(https://getchip.com/),还有基于x86处理器架构的intel galileo控制板也都能运行node.js。
某些采用32位处理器的控制板,更直接把javascript语言当作“母语”,例如espruino(http://espruino.com/)和tessel 2(http://tessel.io/),而三星电子公司在2015年5月发表了一个“瘦身”版的javascript语言,叫作jerryscript(https://samsung.github.io/jerryscript/),可运用在仅有64kb内存的单片机上。换句话说,在这些控制板上读取和设置i/o脚,都用javascript。因此,从前台网页、后台服务器,到单片机和传感器终端,都能用相同的javascript语言编写;学习javascript,也就能同时掌控前台、后台和感测端的软硬件!
0.2 mpu、mcu与soc介绍处理器芯片依照功能来区分,大致分成如下三种类型。
mpu:全名是microprocessor unit(微处理器单元),其实就是cpu(中央处理器),可运行指令,进行运算和逻辑处理。
mcu:全名是microcontroller unit(单片机),把微处理器(mpu)和快闪存储器、主存储器(内存)包在同一个芯片里,相当于一台微型计算机,耗电量低,但是处理器的性能不高(时钟频率在200mhz以内),而且存储器容量不大(以kb为单位)。
当今的mcu通常也会集成模拟-数字转换器(模数转换)、usb和其他外围界面控制器。arduino uno的atmega328芯片属于mcu。
soc:全称为system on a chip(系统芯片),集成微处理器和特定功能,例如,图像处理单元(显示卡)、wifi网络、蓝牙、音效处理等。智能手机以及某些个人计算机的处理器,都属于soc。采用这类处理器的设备,通常需要较高速的运算性能(时钟频率达数百mhz至数ghz)以及较大的存储器容量(单位是mb或gb),所以存储器不在同一个芯片上,耗电量也较大。
树莓派的处理器芯片属于soc。就功能而言,soc大于mcu:
以穿戴设备应用来说,mcu足以胜任普通数字手环所需,而且能长时间运作;具备多媒体功能的智能手表,就必须采用soc。某些智能手表甚至同时搭载soc和mcu,前者处理复杂的多媒体运算,后者用于连接传感器以及电源管理。
0.3 章节导读第1章javascript入门:介绍javascript的由来、基础语法、浏览器的dom(文档对象模型)、事件处理程序、使用chrome浏览器调试javascript代码、在网页中嵌入javascript代码等主题。
第2章 认识jquery库:jquery是当今使用最广泛的javascript库,主要作用是让动态网页开发变得更简单。本章将通过集成arduino以太网络与jqueryui(交互界面)程序,带领读者认识jquery语法、网页信息交换格式(csv、xml和json)和“不刷新网页,动态更新内容”的ajax技术。
第3章node.js入门:node.js是一个独立的javascript运行环境,可以让我们使用javascript开发应用,在浏览器之外运行。本章将介绍windows、mac os x和linux(树莓派)系统的node.js安装方式,并通过非阻塞i/o读取文件、自定义与引用程序模块、使用npm工具管理模块、使用express框架开发网站应用、从arduino传递温湿度值给node网站等数个实例认识node.js。
第4章node.js串口通信与树莓派gpio控制:串口是连接arduino与个人计算机和linux微电脑控制板最常用的界面。gpio则是树莓派控制板的标准外围界面,本章除了介绍如何使用node.js连接与控制串口和gpio界面,也将介绍gpio界面集成自制arduino控制板的方法,还有mosfet电子元器件,以及通过mosfet组成5v和3.3v的电压转换板。
第5章 使用霹雳五号操控arduino:johnny-five(霹雳五号)是一个node.js库,让计算机(或linux微电脑控制板)以javascript程序操控连接在usb接口的arduino。本章将比较“霹雳五号”与arduino的c语法异同,并且通过读取开关(数字)信号、模拟输入和pwm输出、lm35温度传感器、舵机控制,还有浏览器与矩阵led作画等实例,让读者了解“霹雳五号”和网页实时通信程序(socket.io)。
第6章 电子邮件、串流视频、计算机视觉与操控舵机:本章的示例以树莓派摄像头为主,第一个示例搭配pir人体红外传感器,在侦测到入侵者时,自动拍照并发送e-mail。第二个示例介绍使用socket.io和m-jpeg压缩程序,在网页上显示串流视频。第三个示例介绍简易的摄像头+diy舵机云台,并通过触控屏、键盘和电玩把手控制云台。最后一个例子是在计算机的浏览器上,通过javascript撷取摄像头的视频,并侦测其中是否有人类脸孔,若有的话,控制舵机跟着脸孔转动。
第7章 使用mongodb数据库以及ejs模板引擎创建动态网页:mongodb是一款适合处理大数据与物联网数据的免费、开源数据库,本章将介绍mongodb的安装方式、基本架构以及数据的添加、撷取(筛选)、修改和删除等基本操作,并通过node.js的mongoose包(package)连接数据库,存储arduino上传的数据。
第8章 数据可视化——使用c3.js与d3.js绘制图表:若只在网页上用文、数字列举数据,未免太乏味,本章将介绍如何采用知名的c3.js和d3.js库,以活泼生动的量表(gague)和图表(chart)形式呈现存储在mongodb数据库里的数据,以及arduino传入的实时数据,并且通过简易的数字滤波手法过滤噪声。
谈及德诺迈斯未来的发展规划
老旧普通路灯杆改造成智慧太阳能路灯系统解决方案
智慧工地管理系统解决方案应用价值
DocumentAI的模型、任务和基准数据集
Neocis正在推进牙科手术机器人Yomi的研发
JavaScript与物联网
工业互联网可以和互联网采取一样的模式吗
磁环电感与一体成型电感哪个比较好
多级分层分区和建模方案中涉及的主要时序和实现挑战
区块链并不适合用于医疗信息技术
智慧路灯多合一传感器价格
美国或提供300亿美元来提振芯片制造业
ST的STM8产品线新动作 增添新产品并扩大产能
Supermicro在SNW上展示全球唯一一款双处理器存储桥
汽车OS也成为了万亿美金市场的入口之争
PCSEL的优势和结构
PC显示器受影响量估23% 两大厂转移产线规划
最有效的去耦电容器放置指南
18种电动机降压启动接线方法
硬件设计检查 电解电容