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

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

3天內不再提示

利用BMP280制作一個氣象站

科技觀察員 ? 來源:Abid hossain ? 作者:Abid hossain ? 2022-09-19 16:15 ? 次閱讀

該項目是一個無需任何互聯網連接即可顯示當地大氣壓力、溫度濕度和紫外線指數的氣象站。

背景

之前很長一段時間,我想在不使用互聯網的情況下制作一個氣象站,測量周圍的天氣數據并在需要時查看數據。所以,如今我著手做了一個看起來很酷的當地氣象站,可以測量你周圍的氣壓、溫度、濕度和當天的紫外線指數(如果你把它放在窗戶附近)。它還有一個時鐘屏幕,用于顯示時間、日期和星期幾。

pYYBAGMoJMKAb63QAAGGM5n0tMk078.png

poYBAGMoJMiAPdOQAAG5ZjEm-nU261.png

pYYBAGMoJMyAQRnNAAJILOymKtg273.png

在本文中,我將向您展示如何通過這些步驟制作這個涼爽的氣象站。

第 1 步:構建外殼

我使用Autodesk fusion 360創建外殼并用綠色 PLA 打印。它需要支撐,我在我的 Ender 3 上以 70mm/s 的速度以 20% 的填充量打印它。

poYBAGMoJNKAVwAkAALwqEs8wfE804.png

第 2 步:BMP280

BMP280 是大氣壓力和溫度傳感器,它使用 I2C 或 SPI 協議與 Arduino 通信。這里我使用 SPI。要使用 SPI,請連接-

CS到D10

SDA 轉 D11

SDO 到 D12

SCK 到 D13

在代碼部分,要使用這個傳感器,我們需要一個庫。首先,我將庫包含在代碼中#include 《Adafruit_BMP280.h》。你可以在本文下方找到跳轉。

然后我定義傳感器的 SPI 引腳。在 setup 函數中,我初始化 BMP 傳感器,在 loop 函數中,我使用bmp.readPressure()andbmp.readTemperature()命令讀取壓力和溫度數據。我將壓力值除以 100 以測量以 hPa 為單位的壓力。要測量我使用bmp.readAltitude(1005.47)命令的高度。在這一步,您必須根據您所在地區的平均壓力更改值。(1005.47)

第 3 步:DS3231 RTC

這個氣象站還有一個時間屏幕,可以顯示當前時間、日期和星期的日子。為此,我使用了 DS231 RTC 模塊,它使用 I2C 協議進行通信。所以要使用這個,連接 -

SCL 到 A5

SDA 轉 A4

首先,您必須使用庫示例中的DS3231_set.ino程序在 RTC 上設置時間和日期。

在主程序中,我包含庫#include 《DS3231.h》并根據庫中的指令讀取時間數據。這里我使用庫中的示例作為代碼的參考。我為一周中的每一天創建了一個案例來查找當前日期。

第 4 步:DHT11

我用這個傳感器來測量濕度。為此,我將其數據連接到 Arduino D2 。在程序中,我包含 DHT 庫,#include 《DHT.h》然后在設置中初始化傳感器,在循環中,我使用dht.readHumidity()命令讀取濕度值。

第 5 步:GUVA-S12SD 紫外線傳感器

GUVA-S12SD是基于氮化鎵肖特基光電二極管。它具有240-370nm的典型UV檢測波長(覆蓋UVB和大部分UVA光譜)。它輸出一個校準的模擬電壓,該電壓隨紫外光強度而變化。因此,我們可以通過 Arduino ADC 讀取模擬值。

在循環功能中,我模擬讀取傳感器值并計算紫外線指數

float sensorValue = analogRead(A0);

float sensorVoltage = sensorValue / 1024 * 5.0;

int UV_index = sensorVoltage / 0.1;

第 6 步:OLED 顯示屏

我在這個項目中使用 0.96“ 128*64 OLED 顯示器,它使用 I2C 協議,所以我將它連接到 Arduino,如下所示 -

SCK 到 A5

SDA 轉 A4

在程序中,我首先涵蓋了Adafruit_SSD1306和Adafruit_GFX庫

#include 《Adafruit_GFX.h》

#include 《Adafruit_SSD1306.h》

然后我創建顯示變量并添加一些位圖來顯示一些圖像。在設置中,我初始化了顯示。然后在循環中,我使用該display.print()函數顯示每個數據。我在四個頁面上顯示數據,時間、壓力、溫度和濕度以及 UV_index。每頁之間有 5 秒的延遲。

Local weather station code:

#include

#include

然后我創建顯示變量并添加一些位圖來顯示一些圖像。在設置中,我初始化了顯示。然后在循環中,我使用該display.print()函數顯示每個數據。我在四個頁面上顯示數據,時間、壓力、溫度和濕度以及 UV_index。每頁之間有 5 秒的延遲。

Local weather station code:

#include
#include
#include
#include
#include

#include
#include
#include
#include
//#include

#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET 4
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

#define BMP_SCK (13)
#define BMP_MISO (12)
#define BMP_MOSI (11)
#define BMP_CS (10)

DS3231 clock;
bool century = false;
bool h12Flag;
bool pmFlag;

Adafruit_BMP280 bmp(BMP_CS, BMP_MOSI, BMP_MISO, BMP_SCK);

#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);

const unsigned char PROGMEM frame0 [] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x0F, 0xFF, 0xF0, 0x00, 0x00, 0x3F, 0xFF, 0xFC, 0x00, 0x00, 0x7F, 0x81, 0xFE, 0x00, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x18, 0x07, 0xC0, 0x07, 0x86, 0x18, 0x61, 0xE0, 0x0F, 0x02, 0x00, 0x40, 0xF0, 0x0F, 0x02, 0x00, 0x40, 0xF0, 0x1E, 0x00, 0x00, 0x00, 0x78, 0x1C, 0x40, 0x00, 0x02, 0x38, 0x3C, 0x61, 0x00, 0x06, 0x3C, 0x3C, 0x01, 0x80, 0x00, 0x3C, 0x38, 0x00, 0x80, 0x00, 0x1C, 0x38, 0x00, 0xC0, 0x00, 0x1C, 0x78, 0x00, 0xE0, 0x00, 0x1E, 0x79, 0xC0, 0xF0, 0x03, 0x9E, 0x79, 0xC0, 0x7C, 0x03, 0x9E, 0x78, 0x00, 0x7E, 0x00, 0x1E, 0x38, 0x00, 0x7E, 0x00, 0x1C, 0x38, 0xFC, 0xFF, 0x3F, 0x1C, 0x3C, 0xFC, 0x7E, 0x3F, 0x3C, 0x3C, 0xFE, 0x7E, 0x7F, 0x3C, 0x1C, 0x7E, 0x18, 0x7E, 0x38, 0x1E, 0x3F, 0x00, 0xFC, 0x78, 0x0F, 0x3F, 0xC3, 0xFC, 0xF0, 0x0F, 0x0F, 0xFF, 0xF8, 0xF0, 0x07, 0x87, 0xFF, 0xE1, 0xE0, 0x03, 0xC1, 0xFF, 0x83, 0xC0, 0x03, 0xF0, 0x3C, 0x0F, 0xC0, 0x01, 0xFC, 0x00, 0x3F, 0x80, 0x00, 0x7F, 0x81, 0xFE, 0x00, 0x00, 0x3F, 0xFF, 0xFC, 0x00, 0x00, 0x0F, 0xFF, 0xF0, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
const unsigned char PROGMEM frame1 [] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0xC3, 0x00, 0x00, 0x01, 0x00, 0x9D, 0x80, 0x00, 0x03, 0x80, 0xB4, 0xE0, 0x00, 0x06, 0x80, 0xA6, 0x80, 0x00, 0x04, 0xC0, 0xA6, 0xE0, 0x00, 0x0C, 0x40, 0xA6, 0xE0, 0x00, 0x08, 0x60, 0xA6, 0x80, 0x00, 0x08, 0x20, 0xA6, 0xE0, 0x00, 0x08, 0x60, 0xA6, 0x80, 0x00, 0x0E, 0xC0, 0xA6, 0xE0, 0x00, 0x03, 0x80, 0xA6, 0x80, 0x00, 0x00, 0x10, 0xA6, 0xC0, 0x00, 0x00, 0x38, 0xA6, 0xE0, 0x00, 0x00, 0x38, 0xA6, 0x80, 0x00, 0x00, 0x6C, 0xA6, 0xE0, 0x00, 0x00, 0x44, 0xA6, 0x80, 0x00, 0x00, 0x6C, 0xA6, 0xE0, 0x00, 0x00, 0x38, 0xA6, 0x80, 0x00, 0x00, 0x00, 0xA6, 0x80, 0x00, 0x00, 0x00, 0xA4, 0xE0, 0x00, 0x00, 0x00, 0xA6, 0x80, 0x00, 0x00, 0x40, 0xA6, 0xE0, 0x00, 0x00, 0xC0, 0xA6, 0x80, 0x00, 0x01, 0xA0, 0xA6, 0xE0, 0x00, 0x01, 0x30, 0xA6, 0xE0, 0x00, 0x03, 0x10, 0xA6, 0x80, 0x00, 0x02, 0x18, 0xA6, 0xE0, 0x00, 0x06, 0x08, 0xA6, 0x80, 0x00, 0x06, 0x08, 0xA6, 0x80, 0x00, 0x02, 0x19, 0xA6, 0xC0, 0x00, 0x03, 0xF3, 0x26, 0x60, 0x00, 0x00, 0xC6, 0x26, 0x30, 0x00, 0x00, 0x0C, 0xE3, 0x10, 0x00, 0x00, 0x09, 0x80, 0x98, 0x00, 0x00, 0x19, 0x00, 0xC8, 0x00, 0x00, 0x13, 0x00, 0x6C, 0x00, 0x00, 0x12, 0x00, 0x6C, 0x00, 0x00, 0x12, 0x00, 0x6C, 0x00, 0x00, 0x12, 0x00, 0x6C, 0x00, 0x00, 0x1B, 0x00, 0x4C, 0x00, 0x00, 0x09, 0x80, 0xC8, 0x00, 0x00, 0x0C, 0xC1, 0x98, 0x00, 0x00, 0x04, 0x7F, 0x30, 0x00, 0x00, 0x06, 0x1C, 0x60, 0x00, 0x00, 0x03, 0x81, 0xC0, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
const unsigned char PROGMEM frame2 [] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80};

void setup() {
Serial.begin(57600);
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 failed"));
}
Wire.begin();
dht.begin();
if (!bmp.begin()) {
Serial.println(F("Problem.bmp"));
while (1) delay(10);
}
display.clearDisplay();
display.setTextColor(WHITE);
display.setTextSize(1);
display.setCursor(0, 9);
display.setFont(&FreeSans9pt7b);
display.println("**** LOCAL ****");
display.setCursor(0, 38);
display.setFont(&FreeMonoBoldOblique12pt7b);
display.println("wather");
display.setCursor(27, 58);
display.println("Station");
display.display();
delay(2000);


bmp.setSampling(Adafruit_BMP280::MODE_NORMAL, /* Operating Mode. */
Adafruit_BMP280::SAMPLING_X2, /* Temp. oversampling */
Adafruit_BMP280::SAMPLING_X16, /* Pressure oversampling */
Adafruit_BMP280::FILTER_X16, /* Filtering. */
Adafruit_BMP280::STANDBY_MS_500); /* Standby time. */

}


void loop() {

//Time
display.clearDisplay();
display.setTextColor(WHITE);
display.setTextSize(1);
display.setCursor(13, 15);
display.setFont(&FreeMonoBoldOblique12pt7b);
display.print(clock.getHour(h12Flag, pmFlag));
display.setCursor(38, 15);
display.println(":");
display.setCursor(50, 15);
display.println(clock.getMinute());
display.setCursor(70, 15);
if (pmFlag) {
display.println(" PM");
} else {
display.println(" AM ");
}
display.setFont(&FreeSans9pt7b);

display.setCursor(20, 60);
display.println(clock.getDate());
display.setCursor(40, 60);
display.println("/");
display.setCursor(46, 60);
display.println(clock.getMonth(century));
display.setCursor(65, 60);
display.println("/");
display.setCursor(70, 60);
display.println("20");
display.setCursor(90, 60);
display.println(clock.getYear());
display.setCursor(30, 30);
display.setFont(&FreeSans9pt7b);
switch (clock.getDoW()) {
case 1:
display.println("Saturday");
break;
case 2:
display.println("Sunday");
break;
case 3:
display.println("Monday");
break;
case 4:
display.println("Tuesday");
break;
case 5:
display.println("Wednesday");
break;
case 6:
display.println("Thursday");
break;
case 7:
display.println("Friday");
break;
}


display.display();
delay(5000);
//P
display.clearDisplay();
display.drawBitmap(0, 0, frame0, 40, 40, 1);
display.setFont(&FreeSans9pt7b);
display.setCursor(41, 28);
display.println(bmp.readPressure() / 100);
display.setCursor(110, 28);
display.setFont();
display.println("hPa");
display.setCursor(0, 55);
display.setFont(&FreeSans9pt7b);
display.println("Altitude:");
display.setCursor(65, 62);
display.println(bmp.readAltitude(1005.47));
display.setCursor(113, 62);
display.println("m");
display.display();
delay(5000);
//T&RH
display.clearDisplay();
display.setFont(&FreeMonoBoldOblique12pt7b);
display.drawBitmap(0, 5, frame1, 40, 51, 1);
display.setCursor(35, 30);
display.print(bmp.readTemperature());
display.setFont(&FreeSans9pt7b);
display.setCursor(102, 28);
display.println(" *");
display.setCursor(110, 31);
display.println(" C");
display.setFont();
display.setCursor(66, 45);
display.println("RH :");
byte RH = dht.readHumidity();
display.setCursor(95, 45);
display.println(RH);
display.setCursor(110, 45);
display.println("%");
display.drawBitmap(0, 56, frame2, 135, 15, 1);
display.display();
delay(5000);
//UV
display.clearDisplay();
float sensorValue = analogRead(A0);
float sensorVoltage = sensorValue / 1024 * 5.0;
int UV_index = sensorVoltage / 0.1;
display.setFont(&FreeSans9pt7b);
display.setCursor(0, 15);
display.print(" UV INDEX ");
display.setCursor(58, 45);
display.println(UV_index);
display.display();
delay(5000);
}

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 氣象站
    +關注

    關注

    1

    文章

    708

    瀏覽量

    15404
  • DIY設計
    +關注

    關注

    2

    文章

    59

    瀏覽量

    19738
  • BMP280
    +關注

    關注

    1

    文章

    20

    瀏覽量

    5606
收藏 人收藏

    評論

    相關推薦

    如何使用miniprog3設置氣象站

    你好,可以請人幫我,我想計劃的cy3271-exp1 PSoC氣象站板采用miniprog3這樣我可以把周圍的光強讀數然后發送閱讀通過串行命令我寫的應用程序并存儲的數據畫成了GR促性腺激素釋放
    發表于 04-15 08:32

    如何使用樹莓派制作氣象站

    自動氣象站可以實時探測氣溫、濕度、氣壓、風速、風向、降雨量、紫外線輻射等氣象信息,通過不同的傳感器采集地面氣象數據,數據采集完成后通過網絡統傳輸到
    發表于 05-19 07:59

    怎樣去設計基于ESP32的家庭氣象站系統

    或 畢業設計技術解答畢設幫助:7468760412 主要器件本項目學長將使用ESP32創建氣象站?;驹硎峭ㄟ^讀取DHT22和BMP180傳感器的數據,然后使用ESP32傳輸創
    發表于 12-13 07:38

    通過BMP280氣壓/溫度傳感器模塊測量大氣壓和溫度

    ()函數在電腦串口調試終端打印輸出。氣壓:氣壓是作用在單位面積上的大氣壓力。氣壓的國際制單位是帕斯卡,簡稱帕,符號是Pa。氣象學中,人們般用千帕(kPa)、或使用百帕(hpa)作為單位。二、 傳感器參數配置概述Core提供的庫函數默認將
    發表于 01-07 06:40

    分享太陽能WiFi氣象站的設計方案

    說明太陽能 WiFi 氣象站 V3.0這個氣象站如此緊湊的氣象站,由多個氣象傳感器組成,測
    發表于 06-20 07:58

    分享氣象站項目

    描述氣象站 | 風向
    發表于 07-11 07:16

    分享不錯的太陽能WiFi氣象站V2.0的項目

    新版本的氣象站。我還為這個項目制作定制的 PCB,所以任何對電子電路知之甚少的人都可以制作這個項目。我的 V-2.0 PCB 也可用于
    發表于 09-12 06:32

    BOSCH氣壓傳感器BMP280數據手冊

    BOSCH氣壓傳感器BMP280數據手冊
    發表于 01-19 10:38 ?0次下載

    氣壓傳感器bmp280與ms5611哪個好

    本文開始闡述了BMP280的定義與BMP280的應用程序,其次闡述了MS5611的定義、MS5611參數、MS5611的分類與典型應用,最后詳細分析了氣壓傳感器bmp280與ms5611哪個比較好。
    發表于 03-08 09:08 ?2.5w次閱讀

    BMP280氣壓傳感器的制作

    在此示例中,將以下BMP280引腳分別連接到Arduino,VCC到3.3V,GND到GND,SCL到A5,SDA到A4。
    的頭像 發表于 10-31 17:32 ?6739次閱讀

    使用BMP280測量溫度、壓力和高度

    電子發燒友網站提供《使用BMP280測量溫度、壓力和高度.zip》資料免費下載
    發表于 10-26 11:43 ?10次下載
    使用<b class='flag-5'>BMP280</b>測量溫度、壓力和高度

    BMP280氣壓傳感器使用指南

    博主最近在調試 bmp280 氣壓傳感器。
    的頭像 發表于 04-17 18:02 ?9984次閱讀
    <b class='flag-5'>BMP280</b>氣壓傳感器使用指南

    制作BMP280 ESP32天氣預報器

    電子發燒友網站提供《制作BMP280 ESP32天氣預報器.zip》資料免費下載
    發表于 06-08 10:33 ?0次下載
    <b class='flag-5'>制作</b><b class='flag-5'>BMP280</b> ESP32天氣預報器

    使用BMP280-DHT11的Arduino氣象站

    電子發燒友網站提供《使用BMP280-DHT11的Arduino氣象站.zip》資料免費下載
    發表于 07-06 14:48 ?2次下載
    使用<b class='flag-5'>BMP280</b>-DHT11的Arduino<b class='flag-5'>氣象站</b>

    bmp280氣壓傳感器模塊例程

    BMP280 氣壓傳感器是一種高精度的數字氣壓傳感器,可以用于測量大氣壓力、溫度和高度。它具有低功耗、高線性度和高分辨率的特點,適用于各種應用場景,如天氣站、室內氣壓監測、氣象預報和高度測量
    的頭像 發表于 12-18 13:51 ?1266次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>