到這時(shí),我們算搭建了一個(gè)簡(jiǎn)單的REST服務(wù)了。接著我們可以簡(jiǎn)單的做一個(gè)最小的物聯(lián)網(wǎng)系統(tǒng),將我們的單片機(jī)、MCU等等連上網(wǎng)。
考慮到如果我們只是單一連接各個(gè)節(jié)點(diǎn),那么系統(tǒng)的結(jié)構(gòu)圖,同下所示
下面的星形結(jié)構(gòu)圖類似于我們?cè)诮酉聛?lái)所要構(gòu)建的系統(tǒng)
一個(gè)用于控制真實(shí)電器的硬件實(shí)物圖
Arduino與Raspberry Pi通過(guò)串口通信的方式實(shí)現(xiàn)通信,相互傳輸所需要的數(shù)據(jù),Raspberry Pi將資源傳于互聯(lián)網(wǎng)上對(duì)應(yīng)的接口,接口可以在互聯(lián)網(wǎng)上被訪問(wèn)。Laravel框架構(gòu)架于服務(wù)器之上,將Raspbery Pi獲取過(guò)來(lái)的數(shù)據(jù)存儲(chǔ)于MySQL數(shù)據(jù),再以REST服務(wù)的方式共享數(shù)據(jù),互聯(lián)網(wǎng)上的其他設(shè)備便可以通過(guò)網(wǎng)絡(luò)來(lái)訪問(wèn)這些設(shè)備。Ajax用于將后臺(tái)的數(shù)據(jù)以不需要刷新的方式傳遞到網(wǎng)站前臺(tái),通過(guò)HighCharts框架顯示給終端用戶。
1.在Windows中的串口通常是COM1
,COM0
等等
ser=serial.Serial("COM0",9600)
2.Mac OS系統(tǒng)中位于/dev目錄下,名字類似于tty.usbmodem1451
。
serial.Serial("/dev/tty.usbmodem1451",9600)
3.在Linux內(nèi)核的系統(tǒng)中虛擬串口用的節(jié)點(diǎn)是ttyACM,位于/dev目錄下。
serial.Serial("/dev/ttyACM0",9600)
串行接口是一種可以將接受來(lái)自CPU的并行數(shù)據(jù)字符轉(zhuǎn)換為連續(xù)的串行數(shù)據(jù)流發(fā)送出去,同時(shí)可將接受的串行數(shù)據(jù)流轉(zhuǎn)換為并行的數(shù)據(jù)字符供給CPU的器件。一般完成這種功能 的電路,我們稱為串行接口電路。
便是打開這個(gè)設(shè)備,以9600的速率傳輸數(shù)據(jù)。
import json
import urllib2
import serial
import time
url="http://www.xianuniversity.com/athome/1"
while 1:
try:
date=urllib2.urlopen(url)
result=json.load(date)
status=result[0]["led1"]
ser=serial.Serial("/dev/ttyACM0",9600)
if status==1 :
ser.write("1")
elif status==0:
ser.write("0")
time.sleep(1)
except urllib2.URLError:
print "Bad URL or timeout"
系統(tǒng)還需要對(duì)上面的數(shù)據(jù)進(jìn)行處理,只拿其中的結(jié)果
當(dāng)改變led的狀態(tài)后,便可以得到下面的結(jié)果
如果你用的是Ruby的話,可以嘗試使用serialport
安裝
sudo gem install serialport
代碼大致如下
require 'serialport'
sp = SerialPort.new "/dev/ACM0", 9600
sp.write "1"
注意: 根據(jù)相關(guān)的系統(tǒng)修改相關(guān)的代碼。
51單片機(jī)是對(duì)所有兼容Intel 8031指令系統(tǒng)的單片機(jī)的統(tǒng)稱。該系列單片機(jī)的始祖是Intel的8031單片機(jī),后來(lái)隨著Flash rom技術(shù)的發(fā)展,8031單片機(jī)取得了長(zhǎng)足的進(jìn)展,成為應(yīng)用最廣泛的8位單片機(jī)之一,其代表型號(hào)是ATMEL公司的AT89系列,它廣泛應(yīng)用于工業(yè)測(cè)控系統(tǒng)之中。
這里以51單片機(jī)為例的原因是,多數(shù)大學(xué)課程都是以51單片機(jī)為主。
對(duì)于搭載GNU/Linux系統(tǒng)的RPi來(lái)說(shuō),這活就比較輕松了。
LwIP是Light Weight (輕型)IP協(xié)議,有無(wú)操作系統(tǒng)的支持都可以運(yùn)行。LwIP實(shí)現(xiàn)的重點(diǎn)是在保持TCP協(xié)議主要功能的基礎(chǔ)上減少對(duì)RAM 的占用,它只需十幾KB的RAM和40K左右的ROM就可以運(yùn)行,這使LwIP協(xié)議棧適合在低端的嵌入式系統(tǒng)中使用。
git clone git@gitorious.org:coap-lwip/coap-lwip.git
繼電器(英文名稱:relay)是一種電控制器件,是當(dāng)輸入量(激勵(lì)量)的變化達(dá)到規(guī)定要求時(shí),在電氣輸出電路中使被控量發(fā)生預(yù)定的階躍變化的一種電器。它具有控制系統(tǒng)(又稱輸入回路)和被控制系統(tǒng)(又稱輸出回路)之間的互動(dòng)關(guān)系。通常應(yīng)用于自動(dòng)化的控制電路中,它實(shí)際上是用小電流去控制大電流運(yùn)作的一種“自動(dòng)開關(guān)”。故在電路中起著自動(dòng)調(diào)節(jié)、安全保護(hù)、轉(zhuǎn)換電路等作用。
當(dāng)我們有使用CoAP協(xié)議的A設(shè)備,以及HTTP協(xié)議的B設(shè)備。這時(shí),就變成一個(gè)有意思的話題了。
更多建議: