色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

電子發燒友App

硬聲App

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
電子發燒友網>電子資料下載>電子資料>移動電話開源分享

移動電話開源分享

2022-11-03 | zip | 0.67 MB | 次下載 | 免費

資料介紹

描述

介紹

世界某些地區的學校資源非常有限,健康問題并未優先考慮地方預算決定。

這些學校的孩子可能正在處理由病毒感染引發的發燒,并且在與其他孩子分享病毒后無法被識別。

該設備是一種廉價、移動、節能的方式,可以獲取兒童的生命體征并將重要信息傳輸到中央指揮部健康中心以采取進一步行動。

動機

從更國際化的角度來看,“無國界醫生”是緊急情況、流行病和自然災害的全球第一響應者。他們可以受益于可以鏈接到網絡的設備,該設備可以像 SigFox 這樣快速、輕松地部署。對流行病爆發的信息的快速共享可能是在當地遏制或更廣泛傳播疾病方面的區別。

我們希望該設備的簡單性能夠收集空間、時間和生命體征數據,以便在受影響的學校迅速部署醫療資源。

請注意,我們使用手指溫度來識別發燒的兒童。這可能很棘手,我們還沒有找到正確的參數來自信地觸發發燒警報。我們希望進一步的研究和與社區的互動可以使我們的設置更接近可靠的系統。

材料

以下是我們用于設備的材料的快照。考慮到我們使用 MikroE 板時沒有合適的接口平臺板。電路板的緊湊格式和 I2C 接口便于連接。

SIGFOX 網絡

對于無法建設大規?;A設施的地區,SigFox 網絡是明智的選擇。使用 SigFox Access Station Micro SMBS-T4 可以輕松實現網絡部署。

我們使用 PyCom LoPy 4 板與 SigFox 網絡連接。首先,我們必須按照此處的說明在網絡上注冊設備。

注冊后,您必須將第一個有效負載發送到網絡才能激活設備。在我們的案例中很困難,因為我們當地的城鎮沒有 SigFox 網關。必須開車 80 英里才能到達最近的網關服務區。

現在設備已被激活,您可以使用 SigFox 后端服務器訪問消息和設置。

為了通過 REST Api 訪問您的設備組,您需要設置適當的權限以允許訪問,您可以通過在后端服務器界面中選擇組來執行此操作。

pYYBAGNiBdqAaPGuAABAGp-NSfs165.png
?

在左右菜單中選擇 API 訪問選項。

poYBAGNiBd2ADsL6AAAzfg3chs8805.png
SigFox 后端服務器菜單
?

該頁面將更新并在右上角顯示一個新鏈接。點擊它。

poYBAGNiBd-ASQYvAAA-E5uGCbg941.png
?

Api 訪問創建表單將顯示您可以授予應用程序訪問權限的配置文件。我們允許通過 REST API 訪問設備和消息。

pYYBAGNiBeGAXUAxAABEvmw_wTQ103.png
?

按確定后,表單將刷新并顯示訪問組設置。在里面,您將看到分配的登錄名和密碼,這與您的后端服務器不同。使用 SigFoxApi 函數時將需要這些憑據。

pYYBAGNiBeaATSitAAA6l19ZMU0192.png
?

我們可以在 SigFox -- 訪問數據部分訪問我們的設備消息。

我們都準備好了,現在讓我們開發我們的設備和前端接入點。

設備

該設備將體溫讀取為心率,將數據保存在 SD 卡中,顯示數據并將信息發送到 SigFox 網絡,安裝在一個緊湊的移動外殼中。目前,我們使用來自 5 折扣店的 USB 充電電池為設備供電

洛皮 4

Pycom LoPy 4是一款支持四重承載 MicroPython 的開發板,支持 SigFox 網絡。

使用 SigFox 網絡需要按照 SigFox 網絡部分中的說明注冊設備。激活后,您可以使用以下類創建通信套接字。

下面的類使用適當的區域和頻率初始化 SigFox 無線電,然后創建通信套接字,最后將傳輸方向設置為上行鏈路。該類包括用于發送數據和關閉通信套接字的函數。

from network import Sigfox
import socket
import pycom
import time

class mySigFox():

    def __init__(self):
        self.loadSocket = False

    def loadSigFox(self):
        try:
            # init Sigfox for RCZ1 (Europe) RCZ2 (America, Mexico and Brazil)
            self.sigfox = Sigfox(mode=Sigfox.SIGFOX, rcz=Sigfox.RCZ2)

            # create a Sigfox socket
            self.s = socket.socket(socket.AF_SIGFOX, socket.SOCK_RAW)

            # make the socket blocking
            self.s.setblocking(True)

            # configure it as uplink only
            self.s.setsockopt(socket.SOL_SIGFOX, socket.SO_RX, False)
            self.loadSocket = True

        except Exception as e:
            print(e)


    def sendMsg(self, data):
        self.s.send(data)

    def closeSigFox(self):
        self.s.close()
        self.loadSocket = False

TheSigFox 網絡每天允許 140 條 12 字節的消息。我們傳輸 GPS、患者人數、溫度、BPM、患者編號和消息塊代碼。數據被編碼在兩個連續的消息中,格式如下:

第 1 塊,PACKAGE_REPORT

緯度(浮點數:4 字節) 經度(浮點數:4 字節) 患者人數(短:2 字節) 塊碼(短:2 字節)

塊 2,PACKAGE_PATIENT:

我們使用 Python 的 struct 庫將數據格式化為要發送的字節數組,如下面的代碼所示。

#Encode GPS and number of patients
ba = bytearray(struct.pack('f',float(0.0)) + struct.pack('f',float(0.0)) + struct.pack('h',patCounter) + struct.pack('h',PACKAGE_REPORT))

#Encode patient temperature and BPM
ba = bytearray(struct.pack("f", max.hr_avg)+struct.pack("f", float(txtTemp))+struct.pack("h", patCheck)+ struct.pack('h',PACKAGE_PATIENT))

There根據 SigFox 的建議,發送消息之間有 30 秒的延遲。

PyTrack

PyTrack是Pycom多網絡模塊的擴展板,帶有 GPS、加速度計和 MicroSD 卡。

PyTrack 有一個 I2C 總線,可與支持的內部傳感器(GPS、加速度計、MicroSD)進行通信,還有一個使用引腳 9 和 10(P9、P10)在外部 IO 接頭中定義的 I2C 總線。下面的代碼將第二條 I2C 總線初始化為主機和 400k 的波特率(注意連接到此總線的傳感器支持此波特率速度)

#Initialize the I2C bus
i2c = I2C(2, I2C.MASTER, baudrate=400000,pins=('P9','P10'))

We通過允許參數使用活動 I2C 總線對象初始化內部屬性,更新了連接到電路板的傳感器的類。此外,還具有掃描 I2C 端口并確認設備已找到并連接的功能。在下面的代碼中,它恰好是顯示器。

def __init__(self, i2c):
    if (i2c != None):
       self.temperature = 0.00
       self.i2c = i2c
       self.isConnected()    

    def isConnected(self):
       if self.i2c != None:
           print("Scanning...")
           # Check I2C devices
           devices = self.i2c.scan() # returns list of slave addresses
           print(devices)
           for d in devices:
               print(d)
               if d == SSD1306_I2C_ADDRESS:
                   print("found display")
                   return True
           print("Not found")
           return False
       else:
           # No check for SPI
           return True

The擴展板管理 MicroSD 設備。我們初始化SD對象,掛載它并打開日志文件,如下圖。

#Initialize the SD card and file
sd = SD()
os.mount(sd, '/sd')
f = open('/sd/gps-record.txt', 'a')

最后,擴展板控制 GPS 傳感器。我們初始化傳感器,查詢坐標,格式化并將它們寫入日志文件,如下面的代碼所示。

l76 = L76GNSS(timeout=30)
coord = l76.coordinates()
f.write("{} - {}\n".format(coord, rtc.now()))

顯示的一些代碼發生在程序的不同部分,我們只是聚集在一起以了解每個傳感器的過程。

溫度

我們使用來自 Adafruit 的 python 驅動程序,它支持 MAX30205 溫度傳感器,并更新為使用來自 Pycom 的 I2C 功能。

更改如下所示。

readRaw = self.i2c.readfrom_mem(MAX30205_ADDRESS,MAX30205_TEMPERATURE,2)
#I2CreadBytes(MAX30205_ADDRESS,MAX30205_TEMPERATURE, &readRaw[0] ,2); //read two bytes

#I2CwriteByte(MAX30205_ADDRESS, MAX30205_CONFIGURATION, reg | 0x80);
self.i2c.writeto_mem(MAX30205_ADDRESS, MAX30205_CONFIGURATION, bytearray([(reg | 0x80)]))

Adafruit 庫使用不同的函數來支持 I2C,我們更新調用以使用 Pycom I2C 實現,如上所示。該函數允許設置寄存器的基地址,然后從設備寄存器寫入或讀取偏移值。

然后我們使用下面的函數調用循環收集當前讀取的溫度。

txtTemp = temp.getTemperature()

心率

我們從https://github.com/zerynth/lib-maxim-max30101獲取 Python 庫并更新為使用 Pycom I2C。我們沒有更改對 I2C 庫上寫入和讀取函數的每次調用,而是重載這些函數并從內部調用活動的 I2C 庫。

def write_read(self, reg, nbytes):
   self.i2c.writeto(MAX30101_I2CADDR, bytearray([reg]))
   # data = self.i2c.readfrom_mem(MAX30101_I2CADDR, MAX30205_TEMPERATURE,1)
   data = self.i2c.readfrom(MAX30101_I2CADDR, nbytes)
   # write_read(MAX30101_REV_ID,1)
   return data


def write_bytes(self, addr, reg):
   self.i2c.writeto_mem(MAX30101_I2CADDR, addr, bytearray([reg]))

以下調用該函數來檢查脈搏信號并更新每分鐘節拍 (BPM) 值的類屬性。

detect_pulse(max)

展示

起始代碼取自 Adafruit python SSD1306,我們創建了一個類并更新了 128x64 像素案例的代碼。該類更新 I2C 調用以使用 Pycom 接口。我們還為原始驅動程序添加了大字體支持。

該類用作以下代碼。顯示數據的循環包括清除當前緩沖區、添加內容(addString、addString2),然后將緩沖區繪制到顯示器上。

lopyLCD.clearBuffer()
lopyLCD.addString(0, 0,  "GPS:{}    VisteliLabs".format(txtGPS))
lopyLCD.addString(0, 1,  "P Check {} P Count {}".format(patCheck,patCounter))
if (tryHeartRate):
    lopyLCD.addString2(0,2,"{:0.2f}  C".format(txtTemp))
    lopyLCD.addString2(0,5,"{:0.2f} BPM".format(max.hr_avg))
else:
    lopyLCD.addString2(0,3,"{:0.2f}  C".format(txtTemp)) #2
    lopyLCD.addString(0, 7,  "Package: {}".format(packageCounter))
lopyLCD.drawBuffer()

通過顯示來自心率傳感器的動畫圖標和其他信息,可以改進顯示格式。

外殼

附件取自 Thingiverse:Lopy 的簡單案例。從快照中可以看出,我們做了一些改動。外殼左上角的切口用于安裝顯示器,底座上的孔用于支撐 Pycom 板和 I2C 集線器。蓋子也被剪掉了,以便 MikroE 針穿過。使用高速鉆進行修改。

?
?
?
pYYBAGNiBfyAMYVgAAiDqsvpDWg579.jpg
?
1 / 4 ?正面
?

把它們放在一起。

現在有趣的部分開始了。下面的快照顯示了組裝 MoBitals 設備所采取的步驟。

步驟是

  • 使用外部 IO 接頭(P9、P10、3V3 Pymodule、GND)將電纜連接到 PyTrack 板,以啟用 I2C 總線 2 服務。
  • 將電路板和 I2C 集線器安裝到外殼中。
  • 連接 LoPy 4 板。確保正確對齊電路板。
  • 將溫度和心率 4 click 板連接到外殼蓋上。銷釘應該穿過切割。
  • 將原理圖所示的相應電纜連接到點擊板上。
  • 將 I2C Grove 電纜連接到集線器,
  • 用蓋子關閉外殼。在這個原型上,我們使用橡皮筋固定。外殼不夠深,無法處理我們獲得的 I2C Grove 電纜。這可以通過使用較短的電纜來解決。

您的機箱應該看起來像下面的最后兩個快照。

?
?
?
pYYBAGNiBgCAL59YAAIIIwOYSuY544.jpg
?
1 / 7 ? PyTrack I2C 連接
?

一旦設備連接到電源(我們使用 USB 充電電池),心率傳感器中的 LED 燈就會將一根手指放在 LED 上方,另一根手指放在溫度傳感器上方(黑色小方塊)。

pYYBAGNiBiGAZqimAAvH2AbPYCQ986.jpg
將手指放在傳感器上
?

顯示屏將顯示以下格式:

pYYBAGNiBiiAEWLuAACmRmDMB4Q918.png
格式顯示
?

顯示屏顯示

  • 左上角第一行:GPS傳感器狀態;如果傳感器鎖定在某個位置,它將顯示 OK,如果它沒有顯示 NG(不好)。
  • 右上角第一行:商標 VisteliLabs :)
  • 左上角第二行:檢查的患者人數(有無發熱的總和)。
  • 右上角第二行:檢測到發燒或出現疾病跡象的患者人數。
  • 中央第一行:當前讀取的攝氏溫度
  • 中央第二行:當前每分鐘節拍讀數。
  • 右下角:發送的包裹數量。此屏幕中的一個包意味著發送了兩個有效負載(報告和患者)

每次讀取心率傳感器時屏幕都會刷新。

?
?
?
poYBAGNiBiuACrBTAABxdBSgLSw761.png
?
1 / 2 ?發送包裹 1
?

一旦達到發燒條件(在我們的例子中為 29 攝氏度),就會開始向 SigFox 網絡傳輸有效載荷。傳輸由兩個包(每個 12 字節)組成,它們之間有 30 秒的等待時間。第一個有效載荷包含 GPS 坐標和病人計數器;第二個有效載荷包含當前患者的體溫和心跳率。

該設備將繼續測量生命體征,直到手指從傳感器上移開;等待下一位患者的到來。

SigFoxApi——訪問數據

第一步是安裝 SigFox 庫以訪問 REST API 接口。使用以下命令

pip install sigfoxapi

您可以在此處找到文檔。

我們使用 sigfoxapi 與 REST API 服務器進行通信,使用 Tk API 作為用戶界面,使用 tkinterTable 顯示消息數據,使用 webbrowser 鏈接到用于 GPSlocation 的 Google 地圖服務。

import tkinter as tk
from tkinter.ttk import *
from sigfoxapi import Sigfox
from webbrowser import *
from tkintertable.Tables import TableCanvas
from tkintertable.TableModels import TableModel

然后我們使用在 SigFox 網絡部分獲得的登錄名和密碼連接到 SigFox 后端服務器。該函數返回一個用作連接器的對象。使用此對象,我們查詢后端以向組返回已注冊設備的列表。

#Connect to sigfox backend server
s = Sigfox('login', 'password')
#get a list of the available devices
listDevices = s.devicetype_list()

然后,我們使用列出的設備的 id 元素來獲取已注冊設備的設備唯一名稱。

devices = {}
devCounter =0
#Extract the device id
for dev in listDevices:
   devices[devCounter] = s.device_list(dev['id'])
   devCounter+=1

然后我們檢索第一個注冊設備收到的所有消息。我們的程序只支持兩個設備,因為這就是我們所有的項目預算。如有必要,該程序可以適應更多適配器。

#Get the messages from first device
mes=s.device_messages(devices[0][0]['id'])
data,data1 = createDataSigFox(mes)

The以下代碼不是完整版本。為了顯示接收數據的解碼,它已被最小化。

此函數接收來自已注冊設備的消息并解碼有效負載。我們使用 struct 包來幫助解碼。接收到的數據為字符串格式,使用bytearray.fromhex函數轉換為字節數組。然后我們使用 LoPy 4 部分中解釋的數據格式。

# PACKAGE_REPORT  = 1
# PACKAGE_PATIENT = 2

def createDataSigFox(sfData):
   data = {}
   data1 = {}


         b = bytearray.fromhex(c['data'])
         dataCode = struct.unpack_from('h', b[10:12], 0)
         if (dataCode[0] != 0):

            for key, value in c.items():
               if (key == 'data'):
                  a = bytearray.fromhex(value)
                  if (dataCode[0] == 1):

                     data[rowName]['Latitude']=struct.unpack_from('f', a[0:4], 0)
                     data[rowName]['Longitude'] = struct.unpack_from('f', a[4:8], 0)

                     data[rowName]['NumPat'] = struct.unpack_from('h', a[8:10], 0)

                  elif (dataCode[0] == 2):
                     data1[rowName]['BPM'] = struct.unpack_from('f', a[0:4], 0)
                     data1[rowName]['Temperature'] = struct.unpack_from('f', a[4:8],0)
                     data1[rowName]['Patient'] = struct.unpack_from('h', a[8:10], 0)

The收到的時間戳也具有挑戰性。時間戳作為包含在字符串中的長整數接收。我們將字符串值轉換為整數,并使用datetime.fromtimestamp函數來獲取時間戳對象。然后為了將值顯示為正常的日期/時間格式,我們使用 strftime 函數。

elif (key =='time'):
    mydate = datetime.fromtimestamp(int(value))
    if (dataCode[0] == 1):
       data[rowName]['TImestamp'] = mydate.strftime("%Y-%m-%d %H:%M:%S")

    elif (dataCode[0] == 2):
       data1[rowName]['TImestamp'] = mydate.strftime("%Y-%m-%d %H:%M:%S")

最后,我們使用 tkinterTable 庫來顯示表格上的數據。

一個挑戰是添加一個鏈接以在地圖中顯示來自設備的 GPS 坐標。我們使用谷歌地圖來顯示位置。

以下代碼顯示了如何將按鈕附加到表格單元格以執行 Web 鏈接并顯示地圖。

x1, y1, x2, y2 = table.getCellCoords(counter, 5)  
btnText = "Btn{}".format(counter)
print(btnText)
linkGMaps[btnText] = tk.Button(table,,,cursor="hand2")
linkGMaps[btnText].pack()
print(linkGMaps)
linkText = "https://www.google.com/maps/?q="+mydata[c]['GPS']
print(linkText)
linkGMaps[btnText].bind("<Button-1>", lambda e,a=linkText: callback(a))
table.create_window(((x1 + x2) // 2, (y1 + y2) // 2), window=linkGMaps[btnText])

真正的時候到了,在執行程序時,我們會為每個設備獲得一個帶有兩個數據表的單獨窗口。設備名稱顯示在窗口標題中。

第一個數據表顯示時間戳、GPS 坐標(請注意,出于隱私目的,我們已刪除坐標)、有效載荷時記錄的發燒患者數量、接收到的原始數據(有效載荷)和一個按鈕觸發網絡瀏覽器會話并在 Google 地圖上顯示位置。

第二個表顯示了時間戳、每分鐘的心跳次數、測量時記錄的溫度和患者人數,以及接收到的原始數據。

?
?
?
pYYBAGNiBi6ABw96AAF1Hi95dn4896.png
?
1 / 2 ?數據表第一設備
?

下面的快照顯示了 Google 地圖上位置 0.0、0.0(緯度、經度)的示例。

poYBAGNiBjOAb3CfAAJyL_VphmE042.png
映射
?

得到教訓。意識到!

雖然我們希望有一條清晰的發展道路,但我們沒有那么幸運。這是我們必須處理的幾件事。

pymakr.conf上,我們有時在將腳本上傳到 LoPy 4 板時遇到超時錯誤。我們發現將 safe_boot_on_upload 設置更改為 true。

{
    "address": "COM26",
    "username": "",
    "password": "",
    "sync_folder": "",
    "open_on_start": true,
    "safe_boot_on_upload": true,
    "py_ignore": [],
    "fast_upload": false
}

我們最初的設計包括 LED 燈和可愛的熊爪,以吸引孩子們的注意力,同時檢查他們的生命體征。但是,LED 所需功率的增加會在 LoPy 設備上產生反饋,從而觸發 I2C 總線嚴重錯誤。我們發現不僅是功耗,而且我們使用 RMT 庫來控制 LED 的脈沖會干擾 I2C 時序,或者至少我們是這么認為的。

pYYBAGNiBkyAFsAaAArgpHulo7Q374.jpg
LED熊掌
?

最后,點擊板需要特殊的連接才能正常工作。Fever click 要求接地引腳連接到與 I2C 連接相同的原始引腳上。而且,Heart Rate 4 Click 板需要連接 5 V 和 3V3 電源引腳,否則 LED 將不亮,這就是我們使用 I2C 電源連接器添加滿足額外需求的原因。

未來的工作

添加壓力按鈕以允許進行個人設置、實時溫度閾值和 BPM 刷新率。

通過這個項目,我們學到了很多東西。從需要像無國界醫生這樣的第一響應者到將 MikroE 板連接到不合規板的復雜性。

我們希望這個項目可以激發更多應急人員和當地學??梢杂脕韼椭鷥和脑O備。

謝謝閱讀。


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1明緯S-50-24開關電源電路圖.pdf
  2. 0.10 MB   |  3次下載  |  5 積分
  3. 2如何正確測試電源的紋波
  4. 0.36 MB   |  2次下載  |  免費
  5. 3Modbus測試工具
  6. 0.72 MB   |  1次下載  |  2 積分
  7. 4550W充電機原理圖
  8. 0.13 MB   |  1次下載  |  6 積分
  9. 5TMS320C54x DSP代數指令集參考集,第3卷
  10. 1.09MB   |  次下載  |  免費
  11. 6TPS7H4010EVM用戶指南
  12. 4.02MB   |  次下載  |  免費
  13. 7LMR23630DRREVM用戶指南
  14. 431.44KB   |  次下載  |  免費
  15. 8意大利薩頓高頻電刀輸出功率偏小分析與處理
  16. 0.09 MB   |  次下載  |  5 積分

本月

  1. 1使用單片機實現七人表決器的程序和仿真資料免費下載
  2. 2.96 MB   |  44次下載  |  免費
  3. 2美的電磁爐維修手冊大全
  4. 1.56 MB   |  22次下載  |  5 積分
  5. 33314A函數發生器維修手冊
  6. 16.30 MB   |  13次下載  |  免費
  7. 4使用TL431設計電源
  8. 0.67 MB   |  8次下載  |  免費
  9. 5感應筆電路圖
  10. 0.06 MB   |  8次下載  |  免費
  11. 6LZC3106G高性能諧振控制器中文手冊
  12. 1.29 MB   |  7次下載  |  1 積分
  13. 7SMD LED選型手冊 貼片燈珠
  14. 5.47 MB   |  5次下載  |  免費
  15. 8萬用表UT58A原理圖
  16. 0.09 MB   |  4次下載  |  5 積分

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935119次下載  |  10 積分
  3. 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉換器 PCB layout 設計
  4. 1.48MB  |  420062次下載  |  10 積分
  5. 3Altium DXP2002下載入口
  6. 未知  |  233084次下載  |  10 積分
  7. 4電路仿真軟件multisim 10.0免費下載
  8. 340992  |  191367次下載  |  10 積分
  9. 5十天學會AVR單片機與C語言視頻教程 下載
  10. 158M  |  183335次下載  |  10 積分
  11. 6labview8.5下載
  12. 未知  |  81581次下載  |  10 積分
  13. 7Keil工具MDK-Arm免費下載
  14. 0.02 MB  |  73807次下載  |  10 積分
  15. 8LabVIEW 8.6下載
  16. 未知  |  65987次下載  |  10 積分
主站蜘蛛池模板: 受喷汁红肿抽搐磨NP双性| 亚洲最大日夜无码中文字幕| 做你的爱人BD日本| 免费啪视频观试看视频| ewp绞死vk失禁编| 十次啦中文网| 久久艹伊人| 99视频国产在线| 甜宠溺H宝贝嗯撞PLAY啊| 国内外成人免费在线视频| 2019午夜福合集不打码| 三级电影免费看| 精品四虎国产在免费观看| 99热精品在线av播放| 午夜理论电影在线观看亚洲| 久久伊人影院| 国产69精品久久久久乱码韩国| 亚洲精品在线网址| 欧美激情视频一区| 国产一浮力影院| www.狠狠色| 亚洲午夜精品A片久久软件| 欧美日韩看看2015永久免费| 国产亚洲视频在线| oldgrand欧洲老妇人| 亚洲日本国产综合高清| 琪琪午夜福利免费院| 久久国产欧美| 国产精品99久久久久久人韩国| 中文字幕亚洲第一| 无限好资源免费观看| 摸老师丝袜小内内摸出水| 国产在线观看免费观看| xxx69欧美| 最近的2019中文字幕国语HD| 无限资源在线观看完整版免费下载| 美美哒免费影视8| 含羞草完整视频在线播放免费 | 国产高清视频a在线大全| 4虎最新网址| 亚洲视频在线观看免费|