物聯網資料收集
物聯網
物聯網是新一代信息技術的重要組成部分,其英文名稱是:“The Internet of things”。顧名思義,物聯網就是物物相連的互聯網。這有兩層意思:其一,物聯網的核心和基礎仍然是互聯網,是在互聯網基礎上的延伸和擴展的網絡;其 二,其用戶端延伸和擴展到了任何物品與物品之間,進行信息交換和通信 也就是物物相息。物聯網就是“物物相連的互聯網”。
物聯網協議
Protocol | CoAP | XMPP | RESTful HTTP | MQTT |
---|---|---|---|---|
Transport | UDP | TCP | TCP | TCP |
Messaging | Request/Response | Publish/Subscribe Request/Response | Request/Response | Publish/Subscribe Request/Response |
2G, 3G, 4G Suitability (1000s nodes) | Excellent | Excellent | Excellent | Excellent |
LLN Suitability (1000s nodes) | Excellent | Fair | Fair | Fair |
Compute Resources | 10Ks RAM/Flash | 10Ks RAM/Flash | 10Ks RAM/Flash | 10Ks RAM/Flash |
Success Storied | Utility Field Area Networks | Remote management of consumer white goods | Smart Energy Profile 2 (premise energy management/home services) | Extending enterprise messaging into IoT applications |
XMPP
XMPP是一種基于標準通用標記語言的子集XML的協議,它繼承了在XML環境中靈活的發展性。因此,基于XMPP的應用具有超強的可擴展性。經過 擴展以后的XMPP可以通過發送擴展的信息來處理用戶的需求,以及在XMPP的頂端建立如內容發布系統和基于地址的服務等應用程 序。而且,XMPP包含了針對服務器端的軟件協議,使之能與另一個進行通話,這使得開發者更容易建立客戶應用程序或給一個配好系統添加功能。
MQTT
MQTT(Message Queuing Telemetry Transport,消息隊列遙測傳輸)是IBM開發的一個即時通訊協議,有可能成為物聯網的重要組成部分。該協議支持所有平臺,幾乎可以把所有聯網物品 和外部連接起來,被用來當做傳感器和致動器(比如通過推ter讓房屋聯網)的通信協議。
CoAP
CoAP是受限制的應用協議(Constrained Application Protocol)的代名詞。在最近幾年的時間中,專家們預測會有更多的設備相互連接,而這些設備的數量將遠超人類的數量。在這種大背景下,物聯網和 M2M技術應運而生。雖然對人而言,連接入互聯網顯得方便容易,但是對于那些微型設備而言接入互聯網非常困難。在當前由PC機組成的世界,信息交換是通過 TCP和應用層協議HTTP實現的。但是對于小型設備而言,實現TCP和HTTP協議顯然是一個過分的要求。為了讓小設備可以接入互聯網,CoAP協議被 設計出來。CoAP是一種應用層協議,它運行于UDP協議之上而不是像HTTP那樣運行于TCP之上。CoAP協議非常的小巧,最小的數據包僅為4字節。
RESTful HTTP
REST 指的是一組架構約束條件和原則。滿足這些約束條件和原則的應用程序或設計就是 RESTful。
Web 應用程序最重要的 REST 原則是,客戶端和服務器之間的交互在請求之間是無狀態的。從客戶端到服務器的每個請求都必須包含理解請求所必需的信息。如果服務器在請求之間的任何時間點 重啟,客戶端不會得到通知。此外,無狀態請求可以由任何可用服務器回答,這十分適合云計算之類的環境。客戶端可以緩存數據以改進性能。
Thread
Thread是一種基于簡化版IPv6的網狀網絡協議,該協議由行業領先的多家技術公司聯合開發,旨在實現家庭中各種產品間的互聯,以及與互聯網和 云的連接。Thread易于安裝、高度安全,并且可擴展到數百臺設備。Thread基于低成本、低功耗的802.15.4芯片組開發。目前正在使用的大量 產品,只需一次簡單的軟件升級,便可支持Thread。
相關Web技術
Z-Wave
Z-Wave是由丹麥公司Zensys所一手主導的無線組網規格,Z-wave聯盟(Z-wave Alliance)雖然沒有ZigBee聯盟強大,但是Z-wave聯盟的成員均是已經在智能家居領域有現行產品的廠商,該聯盟已經具有160多家國際知 名公司,范圍基本覆蓋全球各個國家和地區。
Z-Wave是一種新興的基于射頻的、低成本、低功耗、高可靠、適于網絡的短距離無線通信技術。工作頻帶為908.42MHz(美 國)~868.42MHz(歐洲),采用FSK(BFSK/GFSK)調制方式,數據傳輸速率為9.6 kbps,信號的有效覆蓋范圍在室內是30m,室外可超過100m,適合于窄帶寬應用場合。隨著通信距離的增大,設備的復雜度、功耗以及系統成本都在增 加,相對于現有的各種無線通信技術,Z-Wave技術將是最低功耗和最低成本的技術,有力地推動著低速率無線個人區域網。
Zigbee
ZigBee是基于IEEE802.15.4標準的低功耗局域網協議。根據國際標準規定,ZigBee技術是一種短距離、低功耗的無線通信技術。這 一名稱(又稱紫蜂協議)來源于蜜蜂的八字舞,由于蜜蜂(bee)是靠飛翔和“嗡嗡”(zig)地抖動翅膀的“舞蹈”來與同伴傳遞花粉所在方位信息,也就是 說蜜蜂依靠這樣的方式構成了群體中的通信網絡。其特點是近距離、低復雜度、自組織、低功耗、低數據速率。主要適合用于自動控制和遠程控制領域,可以嵌入各 種設備。簡而言之,ZigBee就是一種便宜的,低功耗的近距離無線組網通訊技術。
Websocket
WebSocket protocol 是HTML5一種新的協議。它是實現了瀏覽器與服務器全雙工通信(full-duplex)。
SOAP
簡單對象訪問協議是交換數據的一種協議規范,是一種輕量的、簡單的、基于XML(標準通用標記語言下的一個子集)的協議,它被設計成在WEB上交換結構化的和固化的信息。
REST
表述性狀態轉移是一組架構約束條件和原則。滿足這些約束條件和原則的應用程序或設計就是RESTful。需要注意的是,REST是設計風格而不是標 準。REST通常基于使用HTTP,URI,和XML(標準通用標記語言下的一個子集)以及HTML(標準通用標記語言下的一個應用)這些現有的廣泛流行 的協議和標準。
IPv6
IPv6是Internet Protocol Version 6的縮寫,其中Internet Protocol譯為“互聯網協議”。IPv6是IETF(互聯網工程任務組,Internet Engineering Task Force)設計的用于替代現行版本IP協議(IPv4)的下一代IP協議。目前IP協議的版本號是4(簡稱為IPv4),它的下一個版本就是IPv6。
6LoWPAN
IETF 6LoWPAN取得的突破是得到一種非常緊湊、高效的IP實現,消除了以前造成各種專門標準和專有協議的因素。這在工業協議(BACNet、 LonWorks、通用工業協議和監控與數據采集)領域具有特別的價值。這些協議最初開發是為了提供特殊的行業特有的總線和鏈路(從控制器區域網總線到 AC電源線)上的互操作性。
UDP
UDP協議的全稱是用戶數據報協議,在網絡中它與TCP協議一樣用于處理數據包,是一種無連接的協議。在OSI模型中,在第四層——傳輸層,處于 IP協議的上一層。UDP有不提供數據包分組、組裝和不能對數據包進行排序的缺點,也就是說,當報文發送之后,是無法得知其是否安全完整到達的。UDP用 來支持那些需要在計算機之間傳輸數據的網絡應用。包括網絡視頻會議系統在內的眾多的客戶/服務器模式的網絡應用都需要使用UDP協議。UDP協議從問世至 今已經被使用了很多年,雖然其最初的光彩已經被一些類似協議所掩蓋,但是即使是在今天UDP仍然不失為一項非常實用和可行的網絡傳輸層協議。
uIP
uIP 由瑞典計算機科學學院(網絡嵌入式系統小組)的Adam Dunkels 開發。其源代碼由C 語言編寫,并完全公開。
uIP 協議棧去掉了完整的 TCP/IP 中不常用的功能,簡化了通訊流程,但保留了網絡通信必須使用的協議,設計重點放在了 IP/TCP/ICMP/UDP/ARP 這些網絡層和傳輸層協議上,保證了其代碼的通用性和結構的穩定性。
DTLS
DTLS(Datagram Transport Layer Security)即數據包傳輸層安全性協議。TLS不能用來保證UDP上傳輸的數據的安全,因此Datagram TLS試圖在現存的TLS協議架構上提出擴展,使之支持UDP,即成為TLS的一個支持數據報傳輸的版本。DTLS 1.0 基于 TLS 1.1, DTLS 1.2 基于TLS 1.2。
NFC
NFC近場通信技術是由非接觸式射頻識別(RFID)及互聯互通技術整合演變而來,在單一芯片上結合感應式讀卡器、感應式卡片和點對點的功能,能在 短距離內與兼容設備進行識別和數據交換。工作頻率為13.56MHz.但是使用這種手機支付方案的用戶必須更換特制的手機。目前這項技術在日韓被廣泛應 用。手機用戶憑著配置了支付功能的手機就可以行遍全國:他們的手機可以用作機場登機驗證、大廈的門禁鑰匙、交通一卡通、信用卡、支付卡等等。
WiFi
Wi-Fi是一種可以將個人電腦、手持設備(如pad、手機)等終端以無線方式互相連接的技術,事實上它是一個高頻無線電信號。[1] 無線保真是一個無線網絡通信技術的品牌,由Wi-Fi聯盟所持有。目的是改善基于IEEE 802.11標準的無線網路產品之間的互通性。有人把使用IEEE 802.11系列協議的局域網就稱為無線保真。甚至把無線保真等同于無線網際網路(Wi-Fi是WLAN的重要組成部分)
物聯網相關平臺
Yeelink
Yeelink團隊介紹
我們是一群熱愛互聯網, 創意設計與電子產品的年輕人, 主要成員曾經在國際知名的電信, 家電和互聯網公司工作, 2012年5月正式離職開始Yeelink的創辦和研發.
我們是一群熱愛生活,憧憬美好未來的年輕人,我們用自己的激情去打造服務生活的聯網電子產品及物聯網服務. 相信我們在APP, 互聯網, 通信和硬件全面的研發能力, 能夠為用戶帶來更加貼心的智能生活方式.
SiteWhere
The Open Platform for the Internet of Things ?
這個項目提供了一個完整的平臺,來管理物聯網設備、收集數據并用外部系統進行數據整合。SiteWhere發行版本可以下載或在亞馬遜云中使用。它還集成了多個大數據工具,包括MongoDB和ApacheHBase。
DeviceHive
該項目提供一個支持連接設備到物聯網的機器對機器通信框架。它包括支持創建網絡易于使用基于web的管理軟件、應用安全規則和監控設備。該網站提供 內置有DeviceHub的樣本項目,而且它也有一個“游樂場”部分,允許用戶使用DeviceHub在線去看它是如何工作的。
主頁: http://www.devicehive.com/
Devicehub.net
Devicehub.net描述自己為“物聯網的開源支柱”。它是一個基于云的服務,存儲物聯網相關的數據,提供數據的可視化并允許用戶在網頁上控制物聯網設備。開發者使用該服務創建跟蹤健康信息的應用程序,監視孩子的位置,自動化家電,跟蹤車輛數據,監測天氣等等。
IoT Toolkit
這個項目背后的組織正使用各種工具工作,來集成多個物聯網相關的傳感器網絡和協議。雖然主要的項目時一個智能對象應用程序,但該組織也工作在一個 HTTP對Coap的情景下,一個帶有嵌入式軟件代理的應用程序框架等等。在硅谷,他們也發起了一個“遇見”組織,面向對物聯網開發有情趣的人。
Mango(芒果)
“芒果”自稱是“世界上最流行的開源的機器對機器軟件”。基于網絡的它支持多個平臺。它的主要功能包括支持多協議和數據庫、元點、用戶自定義事件、導入/導出等等。
Nimbits
Nimbits可以存儲和處理特定的數據類型,數據可以是時間標記的或地理標記的。作為服務的公用平臺是可用的,或者你也可以下載這個軟件并部署它 到谷歌應用引擎、或亞馬遜EC2上的J2EE服務器上、或一個樹莓派上。它支持多種編程語言,包括Arduino、JavaScript、HTML或 Nimbits.io Java庫。
OpenRemote
OpenRemote為基于家居的愛好者、集成商、分銷商和制造商提供了四種不同的集成工具。它支持十幾種不同的現有協議,允許用戶創建幾乎任何類 型的智能設備(他們能夠想到和使用任何支持java的設備來控制它)。該平臺是開源的,但在設計和產品開發過程中,該公司也出售各種支持、電子書等工具來 進行幫助。
ThingSpeak
ThingSpeak可以處理HTTP請求,并存儲和處理數據。這個開放數據平臺的主要功能包括開放應用程序、實時數據收集、地理位置數據、數據處 理和可視化、設備狀態信息和插件。它可以集成多個硬件和軟件平臺,包括Arduino、樹莓派、ioBridge/RealTime.io、 Electic lmp、移動和網絡應用、社會網絡和MATLAB數據分析。除了開源版本,還提供托管服務。
物聯網相關嵌入式操作系統
實時系統(Real-time operating system,RTOS)的正確性不僅依賴系統計算的邏輯結果,還依賴于產生這個結果的時間。實時系統能夠在指定或者確定的時間內完成系統功能和外部或內 部、同步或異步時間做出響應的系統。因此實時系統應該在事先先定義的時間范圍內識別和處理離散事件的能力;系統能夠處理和儲存控制系統所需要的大量數據。
Contiki
相關支持:CoAP,TCP/IP網絡支持,RPL路由,6Lowpan 報文壓縮,Rime無線協議棧
Contiki是一個適用于有內存的嵌入式系統的開源的、高可移植的、支持網絡的多任務操作系統。包括一個多任務核心、TCP/IP 堆棧、程序集以及低能耗的無線通訊堆棧。Contiki 采用 C 語言開發的非常小型的嵌入式操作系統,運行只需要幾K的內存。
Contiki 是一個小型的,開源的,極易移植的多任務電腦操作系統。它專門設計以適用于一系列的內存受限的網絡系統,包括從8位電腦到微型控制器的嵌入系統。它的名字來自于托爾·海爾達爾的康提基號。
Contiki只需幾kilobyte的代碼和幾百字節的內存就能提供多任務環境和內建TCP/IP支持。
LwIP
LwIP是Light Weight (輕型)IP協議,有無操作系統的支持都可以運行。LwIP實現的重點是在保持TCP協議主要功能的基礎上減少對RAM 的占用,它只需十幾KB的RAM和40K左右的ROM就可以運行,這使LwIP協議棧適合在低端的嵌入式系統中使用。
lwIP協議棧主要關注的是怎么樣減少內存的使用和代碼的大小,這樣就可以讓lwIP適用于資源有限的小型平臺例如嵌入式系統。為了簡化處理過程和內存要求,lwIP對API進行了裁減,可以不需要復制一些數據。
FREERTOS
FreeRTOS是一個迷你操作系統內核的小型嵌入式系統。作為一個輕量級的操作系統,功能包括:任務管理、時間管理、信號量、消息隊列、內存管理、記錄功能等,可基本滿足較小系統的需要。
由于RTOS需占用一定的系統資源(尤其是RAM資源),只有μC/OS-II、embOS、salvo、FreeRTOS等少數實時操作系統能在 小RAM單片機上運行。相對μC/OS-II、embOS等商業操作系統,FreeRTOS操作系統是完全免費的操作系統,具有源碼公開、可移植、可裁 減、調度策略靈活的特點,可以方便地移植到各種單片機上運行,其最新版本為8.0.0版。
mbed OS
相關支持:BLE,Celluar,WIFI,Zigbee,6LoWPAN
一款基于ARM Cortex-M處理器的設備所設計的免費操作系統,配有安全、通訊和設備管理模塊,支持低功率智能藍牙標準、2G、3G與CDMA通信技術、 Thread、Wi-Fi、802.15.4/6LoWPAN、TLS/DTLS、CoAP、HTTP、MQTT以及輕量級的M2M。而只需 32-64kbRAM和256 kb閃存的配置,適合在小設備上運行。
mbed? OS is an operating system for IoT devices and is especially well-suited to run in energy constrained environments. The OS includes the connectivity, security and device management functionalities required in every IoT device.
- Connectivity protocol stack support for Bluetooth? low energy, Cellular, Ethernet, Thread, Wi-fi?, Zigbee IP, Zigbee NAN, 6LoWPAN
- Automation of power management
- Software asset protection and secure firmware updates for device security & management
- Supports a wide range of ARM Cortex-M based hardware platforms from major MCU vendors
- Support for OMA Lightweight M2M protocol for device management
- Updatable and secure devices at the edge capable of additional processing and functionality
- Banking-class end-to-end IP security across the communication channels through TLS & DTLS
- Future proof designs by supporting all the key open standards for connectivity and device management
emOS
embOS是一個優先級控制的多任務系統,是專門為各種微控制器應用于實時系統應用的嵌入式操作系統.是一個具有最小RAM和ROM占用的、高速的、多功能的高性能工具。
貫穿embOS的整個開發過程,微控制器有限的資源一直是開發者所顧忌的。五年來,該RTOS的內部結構已經被優化為不同客戶的不同應用中,以滿足 工業需要。對不同微控制器的完全源碼,使開發者很方便用實時操作系統構建實時程序。embOS是高度模塊化的,只有需要的函數才被調用,占用的ROM非常 小。 最小的內存占用:1kb ROM,30字節 RAM;由于提供源碼文件,你可以用embOS靈活定制系統以滿足實際需求。 任務之間可以通過旗語、郵箱和事件安全便利地通訊。
Salvo
Salvo? is the first Real-Time Operating System (RTOS) designed expressly for very-low-cost embedded systems with severely limited program and data memory. With Salvo, you can quickly create low-cost, smart and sophisticated embedded products. Pumpkin? has currently certified Salvo for use with:
- 8051 family and its derivatives
- ARM? ARM7TDMI? and Cortex?-M3
- Atmel? AVR? and MegaAVR?
- Epson S1C17 family
- Motorola M68HC11
- TI's MSP430 Ultra-Low Power Microcontroller
- Microchip PIC12|14000|16|17|18 PICmicro? MCUs
- Microchip PIC24 MCUs and dsPIC? DSCs
- Microchip PIC32? MCUs
- TI's TMS320C2000 DSPs
μC/OS-II
uC/OS II(Micro Control Operation System Two) 是一個可以基于ROM運行的、可裁減的、搶占式、實時多任務內核,具有高度可移植性,特別適合于微處理器和控制器,是和很多商業操作系統性能相當的實時操作系統(RTOS)。
為了提供最好的移植性能,uC/OS II最大程度上使用ANSI C語言進行開發,并且已經移植到近40多種處理器體系上,涵蓋了從8位到64位各種CPU(包括DSP)。 uC/OS II可以簡單的視為一個多任務調度器,在這個任務調度器之上完善并添加了和多任務操作系統相關的系統服務,如信號量、郵箱等。其主要特點有公開源代碼,代 碼結構清晰、明了,注釋詳盡,組織有條理,可移植性好,可裁剪,可固化。內核屬于搶占式,最多可以管理60個任務。從1992年開始,由于高度可靠性、移 植性和安全性,uC/OS II已經廣泛使用在從照相機到航空電子產品的各種應用中。
TinyOS
協議支持:CoAP
TinyOS是UC Berkeley(加州大學伯克利分校)開發的開放源代碼操作系統,專為嵌入式無線傳感網絡設計,操作系統基于構件(component-based)的架構使得快速的更新成為可能,而這又減小了受傳感網絡存儲器限制的代碼長度。
TinyOS的構件包括網絡協議、分布式服務器、傳感器驅動及數據識別工具。其良好的電源管理源于事件驅動執行模型,該模型也允許時序安排具有靈活性。TinyOS已被應用于多個平臺和感應板中。
支持硬件
- Atmel ATmega128, a 8-bit RISC microcontroller.
- Texas Instruments MSP430 a 16-bit low power microcontroller.
- Intel XScale PXA271 a 32-bit RISC microcontroller.
MQX
Freescale MQX? RTOS a full-featured complimentary real-time operating system including the MQX? Kernel, TCP/IP stack (RTCS), embedded MS-DOS file system (MFS), USB host/device stack, and more. The MQX? multitasking kernel provides pre-emptive scheduling, fast interrupt response, extensive inter-process communication and synchronization facilities. MQX RTOS includes its own peripheral drivers.
QNX
QNX是由加拿大QSSL公司(QNX Software System Ltd.)開發的分布式實時操作系統。該操作系統既能運行于以Intel X86、Pentium等CPU為核心硬件環境下,也能運行于以PowerPC、MIPS等CPU為核心的硬件環境。QNX操作系統符合POSIX基本標 準和實時標準,使其應用可以方便的進行移植。
openWRT
OpenWrt 可以被描述為一個嵌入式的 Linux 發行版,(主流路由器固件有 dd-wrt,tomato,openwrt三類)而不是試圖建立一個單一的、靜態的系統。OpenWrt的包管理提供了一個完全可寫的文件系統,從應用 程序供應商提供的選擇和配置,并允許您自定義的設備,以適應任何應用程序。
對于開發人員,OpenWrt 是使用框架來構建應用程序,而無需建立一個完整的固件來支持;對于用戶來說,這意味著其擁有完全定制的能力,可以用前所未有的方式使用該設備。
RIOT
項目首頁: http://riot-os.org/ 平臺:MSP430,ARM7,Cortex-M0,Cortex-M3,Cortex-M4,x86
RIOT自稱為“友好的物聯網操作系統”。RIOT是FeuerWhere項目的分支,首次亮相在2013年。它的目的是既開發者友好又資源友好。 它支持多種架構,包括MSP430、ARM7、Cortex-M0、Cortex-M3、Cortex-M4和標準的x86電腦。
- Arduino Due
- UDOO Board (Cortex-M3 part)
- Nordic nrf51822 (DevKit)
- mbed NXP LPC1768
- TelosB
- Zolertia Z1
- Texas Instruments EZ430-Chronos
- STM32F4DISCOVERY
- STM32F3DISCOVERY
- STM32F0DISCOVERY
- WSN 430 (v1.3b and v1.4)
- HiKoB FOX
- ScatterWeb MSB-A2
- ScatterWeb MSB-430H
物聯網相關博客集
徐凱
嵌入式基礎
物聯網應用離不開嵌入式以太網、無線傳感網。
嵌入式以太網
【ENC28J60學習筆記——索引】
STM32NET學習筆記
【STM32NET學習筆記——ARP和Ethernet部分】
【uIP學習筆記】
【LwIP學習筆記——STM32ENC28J60移植與入門】
【contiki相關】
【Instant Contiki安裝筆記——SDCC和CC2530】
【contiki學習筆記——cc2530dk例程實踐和UDP重啟問題解決】
協議與標準
【JSON】
【REST】
【樹莓派學習筆記——Restful服務 采用slim php apache】
【CoAP】
【CoAP學習筆記——nodeJS node-coap安裝和使用(Linux平臺)】
【CoAP學習筆記——nodeJS node-coap安裝和使用(windows平臺)】
【CoAP學習筆記——nodeJS node-coap返回JSON數據包】
【MQTT】
【MQTT學習筆記——MQTT協議體驗 Mosquitto安裝和使用】
【MQTT學習筆記——樹莓派MQTT客戶端 使用Mosquitto和paho-python】
【MQTT學習筆記——Yeelink MQTT服務 使用mqtt.js和paho-mqtt】
【WebSocket】
【cURL】
【yeelink】
【Yeelink平臺查詢開關量——套接字編程 Windows平臺 】
【Yeelink平臺推送傳感器結果——套接字編程 Windows平臺】
【Yeelink平臺使用——遠程控制 RT Thread + LwIP+ STM32 】
【云平臺】
Phodal
最小物聯網系統(五)——Laravel RESTful模板化
CoAP
構建基于CoAP SQLite Nodejs的物聯網之查詢數據
構建基于CoAP SQLite Nodejs的物聯網之數據庫