18 簡單物聯(lián)網(wǎng)

2018-02-24 15:53 更新

簡單物聯(lián)網(wǎng)

到這時(shí),我們算搭建了一個(gè)簡單的REST服務(wù)了。接著我們可以簡單的做一個(gè)最小的物聯(lián)網(wǎng)系統(tǒng),將我們的單片機(jī)、MCU等等連上網(wǎng)。

圖像說明文字

考慮到如果我們只是單一連接各個(gè)節(jié)點(diǎn),那么系統(tǒng)的結(jié)構(gòu)圖,同下所示

圖像說明文字

下面的星形結(jié)構(gòu)圖類似于我們?cè)诮酉聛硭獦?gòu)建的系統(tǒng)

圖像說明文字

一個(gè)用于控制真實(shí)電器的硬件實(shí)物圖

圖像說明文字

硬件通信

串口通信

Arduino與Raspberry Pi通過串口通信的方式實(shí)現(xiàn)通信,相互傳輸所需要的數(shù)據(jù),Raspberry Pi將資源傳于互聯(lián)網(wǎng)上對(duì)應(yīng)的接口,接口可以在互聯(lián)網(wǎng)上被訪問。Laravel框架構(gòu)架于服務(wù)器之上,將Raspbery Pi獲取過來的數(shù)據(jù)存儲(chǔ)于MySQL數(shù)據(jù),再以REST服務(wù)的方式共享數(shù)據(jù),互聯(lián)網(wǎng)上的其他設(shè)備便可以通過網(wǎng)絡(luò)來訪問這些設(shè)備。Ajax用于將后臺(tái)的數(shù)據(jù)以不需要刷新的方式傳遞到網(wǎng)站前臺(tái),通過HighCharts框架顯示給終端用戶。

Python

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)

串行接口是一種可以將接受來自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

如果你用的是Ruby的話,可以嘗試使用serialport

安裝

sudo gem install serialport

代碼大致如下

require 'serialport'
sp = SerialPort.new "/dev/ACM0", 9600
sp.write "1"

注意: 根據(jù)相關(guān)的系統(tǒng)修改相關(guān)的代碼。

18.1.2 I2C通信

18.2 硬件

18.2.1 51單片機(jī)

51單片機(jī)是對(duì)所有兼容Intel 8031指令系統(tǒng)的單片機(jī)的統(tǒng)稱。該系列單片機(jī)的始祖是Intel的8031單片機(jī),后來隨著Flash rom技術(shù)的發(fā)展,8031單片機(jī)取得了長足的進(jìn)展,成為應(yīng)用最廣泛的8位單片機(jī)之一,其代表型號(hào)是ATMEL公司的AT89系列,它廣泛應(yīng)用于工業(yè)測控系統(tǒng)之中。

這里以51單片機(jī)為例的原因是,多數(shù)大學(xué)課程都是以51單片機(jī)為主。

18.2.2 Arduino

18.2.3 Raspberry Pi

對(duì)于搭載GNU/Linux系統(tǒng)的RPi來說,這活就比較輕松了。

18.2.4 ARM

LwIP是Light Weight (輕型)IP協(xié)議,有無操作系統(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

TinyOS CoAP

18.2.5 繼電器

繼電器(英文名稱: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)換電路等作用。

18.3 協(xié)議間通訊

當(dāng)我們有使用CoAP協(xié)議的A設(shè)備,以及HTTP協(xié)議的B設(shè)備。這時(shí),就變成一個(gè)有意思的話題了。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)