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

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

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

3天內(nèi)不再提示

基于XIAO ESP32C6的HA空氣質(zhì)量檢測儀設(shè)計

柴火創(chuàng)客空間 ? 來源:柴火創(chuàng)客空間 ? 2025-03-21 14:09 ? 次閱讀

今天小編給大家?guī)淼氖莵碜訫IT的Jason的基于XIAO ESP32C6的HA空氣質(zhì)量檢測儀項目,作為一名程序員,Jason經(jīng)常自己連續(xù)幾個小時坐在辦公桌前,沉浸在一行行代碼中。后來意識到周圍的空氣質(zhì)量,尤其是二氧化碳水平不斷上升。

制作背景

保持健康的工作空間至關(guān)重要,但我們需要一個既實用又美觀的解決方案。如果有一種緊湊型設(shè)備,不僅可以監(jiān)測空氣質(zhì)量,還可以作為美觀的辦公桌裝飾品,那不是很棒嗎?有了這個想法,Jason就開始著手實現(xiàn)它。Zigbee 是一種出色的智能家居低功耗通信協(xié)議。

使用 Seeed Studio 的 XIAO ESP32 C6 模塊作為主控。它擁有小巧的外形和全面的 Arduino Zigbee 教程開發(fā)者節(jié)省了大量開發(fā)時間。此外,還增加了 XIAO 擴展板和 Grove VOC 和 eCO2 氣體傳感器 (SGP30) 以獲得準確的讀數(shù)。

由于不喜歡傳統(tǒng)的方形桌面擺件,所以Jason設(shè)計了一個小型站立機器人造型。至于細節(jié),對 XIAO 擴展板的引腳排列進行了布線,以便在 XIAO 系列內(nèi)的不同 MCU 之間輕松切換。這讓Jason在組件選擇上有了更大的靈活性。在結(jié)構(gòu)件內(nèi),我將傳感器放在右側(cè),用打印材料與MCU 隔開,確保最佳性能和時尚的設(shè)計。

材料清單

硬件列表

Grove-VOC and CO2 Gas Sensor SGP30

Seeed Studio XIAO ESP32C6Seeed Studio

XIAO Expansion Board

軟件列表

Arduino IDE

Autodesk Fusion

Home Assistant

項目演示

1.連接帶 OLED 顯示屏的設(shè)備

在 OLED 屏幕上,我們將顯示連接狀態(tài),可以輕松查看 Zigbee 與 Home Assistant 的連接是否成功。此外,UI 設(shè)計中還會有一些小驚喜!

OLED 顯示屏將包含三個內(nèi)容區(qū)域:

啟動 Zigbee 連接

連接成功狀態(tài)

CO2 和 eVOC 數(shù)據(jù)

我們還可以通過打開 Arduino 串行監(jiān)視器來監(jiān)視 XIAO ESP32 C6 的 Zigbee 連接狀態(tài)和數(shù)據(jù)輸出。

2cdaff5c-0573-11f0-9310-92fbcf53809c.png

Arduino 串行監(jiān)視器

2.HomeAssistant 帶二氧化碳傳感器界面效果截圖

將購買的 Home Assistant Connect ZBT-1 插入我的 HA 設(shè)置后,我通過 Zigbee Home Automation 添加了我們的 Zigbee 終端設(shè)備。隨后,在對 XIAO ESP32 C6 進行編程后,設(shè)備名稱出現(xiàn)在 OLED 顯示屏上。

2cf1ad4c-0573-11f0-9310-92fbcf53809c.png

HomeAssistant 查找 Zigbee 集成

2d0553e2-0573-11f0-9310-92fbcf53809c.png

HomeAssistant 連接 Zigbee 設(shè)備

訪問 Homeassistant 后,我們可以看到顯示的數(shù)據(jù)隨時間的變化

成功連接到 HomeAssistant 后,我們在 Zigbee 中找到了我們的設(shè)備,它提供了兩個主要功能:

實時數(shù)據(jù)顯示

2d243e9c-0573-11f0-9310-92fbcf53809c.png

查看歷史二氧化碳趨勢。值得注意的是,我的設(shè)備在此期間并未持續(xù)運行。

3.桌面上的最終設(shè)置

最后,我們可以看到 OLED 屏幕上顯示的傳感器數(shù)據(jù),以及 Home Assistant 儀表板上的數(shù)據(jù)。

2d3e33d8-0573-11f0-9310-92fbcf53809c.png

最終展示效果

程序代碼

#ifndef ZIGBEE_MODE_ED
#error "Zigbee end device mode is not selected in Tools->Zigbee mode"
#endif
#include "Zigbee.h"
#include "sensirion_common.h"
#include "sgp30.h"
#include 
#include 
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE);
uint8_t HugoUI_Animation_EasyOut(float *a, float *a_trg, uint16_t n) {
if (*a == *a_trg)
return 0;
float cz = fabs(*a - *a_trg);
if (cz <= 1)
*a = *a_trg;
else {
if (cz < 10)
n = n * cz * 0.1f;
if (n < 10)
n = 10;
*a += (*a_trg - *a) / (n * 0.1f);
}
return 1;
}
uint8_t HugoUI_Animation_EasyIn(float *a, float *a_trg, uint16_t n) {
if (*a == *a_trg)
return 0;
float cz = fabs(*a - *a_trg);
if (cz <= 1)
*a = *a_trg;
else if (cz > 20)
n = n * 3;
else if (cz > 15)
n = n * 2;
else if (cz > 5)
n = n * 1;
if (*a != *a_trg)
*a += (*a_trg - *a) / (n * 0.1f);
else
return 0;
return 1;
}
void Oled_DrawSlowBitmapResize(int x, int y, const uint8_t *bitmap, int w1, int h1, int w2, int h2) {
uint8_t color = u8g2.getDrawColor();
float mw = (float)w2 / w1;
float mh = (float)h2 / h1;
uint8_t cmw = ceil(mw);
uint8_t cmh = ceil(mh);
int xi, yi, byteWidth = (w1 + 7) / 8;
for (yi = 0; yi < h1; yi++) {
for (xi = 0; xi < w1; xi++) {
if (*(uint8_t *)(bitmap + yi * byteWidth + xi / 8) & (1 << (xi & 7)))
{
u8g2.drawBox(x + xi * mw, y + yi * mh, cmw, cmh);
} else if (color != 2) {
u8g2.setDrawColor(0);
u8g2.drawBox(x + xi * mw, y + yi * mh, cmw, cmh);
u8g2.setDrawColor(color);
}
}
}
}
const unsigned char gImage_humidity[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x03, 0x00, 0x00, 0xF0,
0x07, 0x00, 0x00, 0xF8, 0x1F, 0x00, 0x00, 0x7C, 0x3F, 0x00, 0x00, 0x3E, 0x7C, 0x00,
0x00, 0x1F, 0xF8, 0x00, 0x80, 0x07, 0xF0, 0x01, 0xC0, 0x07, 0xE0, 0x01, 0xC0, 0x03,
0xC0, 0x03, 0xE0, 0x81, 0x81, 0x07, 0xE0, 0xC1, 0x83, 0x07, 0xE0, 0xD0, 0x03, 0x07,
0xF0, 0xF8, 0x03, 0x0F, 0xF0, 0xF8, 0x0B, 0x0F, 0xF0, 0xF0, 0x1F, 0x0F, 0xF0, 0xE0,
0x1F, 0x0F, 0xE0, 0xC0, 0x0F, 0x07, 0xE0, 0xC0, 0x07, 0x07, 0xE0, 0xC1, 0x83, 0x07,
0xC0, 0xC3, 0xC3, 0x03, 0xC0, 0xC7, 0xE3, 0x03, 0x80, 0x8F, 0xF3, 0x01, 0x00, 0xFF,
0xFF, 0x00, 0x00, 0xFE, 0x7F, 0x00, 0x00, 0xF8, 0x1F, 0x00, 0x00, 0xC0, 0x03, 0x00,
0x00, 0xC0, 0x03, 0x00, 0x00, 0xC0, 0x03, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00
};
const unsigned char gImage_homeassistant[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0xC0, 0x03, 0x00, 0x00, 0xE0, 0x07, 0x00,
0x00, 0xF0, 0x0F, 0x00, 0x00, 0xF8, 0x1F, 0x00, 0x00, 0xFC, 0xBF, 0x07, 0x00, 0xFE, 0xFF, 0x07,
0x00, 0xFF, 0xFF, 0x07, 0x80, 0xFF, 0xFF, 0x07, 0xC0, 0xFF, 0xFF, 0x07, 0xE0, 0xFF, 0xFF, 0x07,
0xF0, 0xFF, 0xFF, 0x0F, 0xF8, 0xFF, 0xFF, 0x1F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFE, 0xF8, 0x1F, 0x7F,
0x7F, 0xF7, 0xEF, 0xFE, 0x7F, 0xF7, 0xEF, 0xFE, 0xF8, 0xFF, 0xFF, 0x1F, 0xF8, 0xFF, 0xFF, 0x1F,
0xF8, 0xEF, 0xF7, 0x1F, 0xF8, 0xCF, 0xF3, 0x1F, 0xF8, 0x9F, 0xF9, 0x1F, 0xF8, 0x7F, 0xFE, 0x1F,
0xF8, 0xFF, 0xFF, 0x1F, 0xF8, 0xFF, 0xFF, 0x1F, 0xF8, 0xFF, 0xFF, 0x1F, 0xF8, 0xFF, 0xFF, 0x1F,
0xF8, 0xFF, 0xFF, 0x1F, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};  // 32x32
#define CARBON_DIOXIDE_SENSOR_ENDPOINT_NUMBER 10
uint8_t button = BOOT_PIN;
ZigbeeCarbonDioxideSensor zbCarbonDioxideSensor = ZigbeeCarbonDioxideSensor(CARBON_DIOXIDE_SENSOR_ENDPOINT_NUMBER);
int16_t err = 0;
uint16_t tvoc_ppb, co2_eq_ppm;
uint16_t carbon_dioxide_value;
static uint32_t timeCounter = 0;
static float img_a = 4, img_a_trg = 24;
static float img_b = -2, img_b_trg = 24;
static float img_c = -10, img_c_trg = 13;
static float img_d = 5, img_d_trg = 90;
static void carbon_sensor_update(void *arg) {
for (;;) {
if (!(timeCounter++ % 20)) {
err = sgp_measure_iaq_blocking_read(&tvoc_ppb, &co2_eq_ppm);
if (err == STATUS_OK) {
Serial.printf("tVOC Concentration: %d ppb
", tvoc_ppb);
Serial.printf("CO2eq Concentration: %d ppm
", co2_eq_ppm);
carbon_dioxide_value = co2_eq_ppm;
zbCarbonDioxideSensor.setCarbonDioxide(carbon_dioxide_value);
} else {
Serial.println("Error reading IAQ values
");
}
zbCarbonDioxideSensor.report();
delay(6000);
}
}
}
void setup() {
int16_t err;
uint16_t scaled_ethanol_signal, scaled_h2_signal;
Serial.begin(115200);
u8g2.begin();
// Init RF
pinMode(WIFI_ENABLE, OUTPUT);
digitalWrite(WIFI_ENABLE, LOW);
delay(100);
pinMode(WIFI_ANT_CONFIG, OUTPUT);
digitalWrite(WIFI_ANT_CONFIG, LOW);
// Init button switch
pinMode(button, INPUT_PULLUP);
// Init SGP30
while (sgp_probe() != STATUS_OK) {
Serial.println("SGP failed");
while (1)
;
}
err = sgp_measure_signals_blocking_read(&scaled_ethanol_signal, &scaled_h2_signal);
if (err == STATUS_OK) {
Serial.println("get ram signal!");
} else {
Serial.println("error reading signals");
}
err = sgp_iaq_init();
zbCarbonDioxideSensor.setManufacturerAndModel("Espressif", "ZigbeeCarbonDioxideSensor");
zbCarbonDioxideSensor.setMinMaxValue(0, 1500);
Zigbee.addEndpoint(&zbCarbonDioxideSensor);
Serial.println("Starting Zigbee...");
u8g2.clearBuffer();
u8g2.setFont(u8g2_font_ncenB08_tr);
u8g2.drawStr(0, 30, "Connecting to Zigbee...");
u8g2.sendBuffer();
if (!Zigbee.begin()) {
Serial.println("Zigbee failed to start!");
Serial.println("Rebooting...");
ESP.restart();
} else {
Serial.println("Zigbee started successfully!");
}
Serial.println("Connecting to network");
while (!Zigbee.connected()) {
Serial.print(".");
delay(100);
}
u8g2.clearBuffer();
u8g2.drawStr(0, 30, "Successfully connect");
u8g2.drawStr(0, 50, "Zigbee network!");
u8g2.sendBuffer();
Serial.println();
delay(5000);
// Start carbon sensor reading task
xTaskCreate(carbon_sensor_update, "carbon_sensor_update", 2048, NULL, 10, NULL);
zbCarbonDioxideSensor.setReporting(0, 30, 0);
}
void loop() {
u8g2.clearBuffer();
u8g2.setFont(u8g2_font_ncenB08_tr);
u8g2.drawXBM(0, 0, 32, 32, gImage_homeassistant);
u8g2.drawStr(43, img_b, " Air  Monitor");
u8g2.setDrawColor(2);
u8g2.drawRBox(36, img_c, img_d, 15, 1);
u8g2.setDrawColor(1);
u8g2.drawStr(0, 45, "CO2: ");
u8g2.setCursor(30, 45);
u8g2.print(carbon_dioxide_value);
u8g2.drawStr(55, 45, "ppb");
u8g2.drawStr(0, 60, "TVOC: ");
u8g2.setCursor(38, 60);
u8g2.print(tvoc_ppb);
u8g2.drawStr(55, 60, "ppm");
if (img_a == img_a_trg) {
if (img_a == 4) {
img_a_trg = 24;
} else if (img_a == 24)
img_a_trg = 4;
}
HugoUI_Animation_EasyOut(&img_b, &img_b_trg, 100);
HugoUI_Animation_EasyIn(&img_a, &img_a_trg, 115);
HugoUI_Animation_EasyOut(&img_c, &img_c_trg, 100);
HugoUI_Animation_EasyOut(&img_d, &img_d_trg, 100);
Oled_DrawSlowBitmapResize(118 - img_a / 2, 50 - img_a / 4, gImage_humidity, 32, 32, img_a, img_a);
u8g2.sendBuffer();
if (digitalRead(button) == LOW) {
delay(100);
int startTime = millis();
while (digitalRead(button) == LOW) {
delay(50);
if ((millis() - startTime) > 3000) {
Serial.println("Resetting Zigbee to factory and rebooting in 1s.");
delay(1000);
Zigbee.factoryReset();
}
}
}
}

改進計劃

得益于 Seeed Studio XIAO 擴展板提供的眾多 Grove 接口,Jason計劃將其他傳感器集成到這個機器人中來收集更多數(shù)據(jù)。這將可以通過自動化設(shè)備來控制其他的智能家居設(shè)備,例如當空氣太干燥時啟動除濕機,或者當二氧化碳水平上升時運行空氣循環(huán)裝置。總而言之,Jason說這個智能二氧化碳監(jiān)測器項目是一次受益匪淺的創(chuàng)新和學習之旅。通過將技術(shù)與設(shè)計相結(jié)合,他創(chuàng)造了一種不僅可以跟蹤空氣質(zhì)量還可以增強工作空間美感的設(shè)備。接下來他會逐步利用 Zigbee 連接不同的傳感器,打造智能家居生態(tài)系統(tǒng)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 傳感器
    +關(guān)注

    關(guān)注

    2557

    文章

    51812

    瀏覽量

    759416
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    17521

    瀏覽量

    355234
  • 機器人
    +關(guān)注

    關(guān)注

    212

    文章

    28990

    瀏覽量

    209920
  • 空氣質(zhì)量檢測儀

    關(guān)注

    0

    文章

    11

    瀏覽量

    1271

原文標題:創(chuàng)客項目秀|基于XIAO ESP32C6的HA空氣質(zhì)量檢測儀

文章出處:【微信號:ChaiHuoMakerSpace,微信公眾號:柴火創(chuàng)客空間】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 0人收藏

    評論

    相關(guān)推薦

    【GoKit申請】空氣質(zhì)量檢測儀

    申請理由:開發(fā)使用,公司正在做一個空氣質(zhì)量檢測儀,需要一個平臺項目描述:1.需要wifi模塊,與手機直連,并且也要發(fā)送數(shù)據(jù)到互聯(lián)網(wǎng)。2.檢測參數(shù)有溫度,濕度,TVOC,CH2O,CO3.手機端可以用app查看數(shù)據(jù)。4.有l(wèi)cd直
    發(fā)表于 11-02 10:48

    Pm2.5空氣質(zhì)量檢測的小問題

    畢業(yè)設(shè)計需要用stm32做個PM2.5空氣質(zhì)量檢測儀,打算用夏普gp2y1010au0f的傳感器,可是stm32io口輸入電壓標準為3.3v,傳感器輸出的電壓可能超過3.3v,我該咋辦,各位大神幫幫忙!!
    發(fā)表于 01-18 17:14

    空氣質(zhì)量測試的原理

    32位高精度CPU處理計算,然后轉(zhuǎn)化為污染物濃度值,并在液晶屏上加以顯示。空氣質(zhì)量測試可同時檢測儀裝修污染所產(chǎn)生的有害氣體,被很多家庭所采用。那么你了解空氣質(zhì)量測試
    發(fā)表于 03-07 16:04

    什么是壓縮空氣質(zhì)量檢測儀

    壓縮空氣檢測儀最早起源于歐洲EN12021標準中對于呼吸壓縮空氣的要求,目前壓縮空氣質(zhì)量檢測儀最好品牌是德國德爾格,也是壓縮
    發(fā)表于 09-10 10:42

    基于STM32空氣質(zhì)量檢測儀原理圖

    STM32空氣質(zhì)量檢測儀原理圖STM32空氣質(zhì)量檢測儀原理圖STM32空氣質(zhì)量檢測儀原理圖
    發(fā)表于 10-29 18:22 ?355次下載

    德爾格壓縮空氣質(zhì)量檢測儀6種型號的詳細介紹

    在武漢聚舟科技供應的德爾格氣體檢測儀器里面,有6款德爾格壓縮空氣質(zhì)量檢測儀,其主要對場景中各種壓縮空氣中的
    發(fā)表于 06-07 16:51 ?3303次閱讀

    空氣質(zhì)量檢測儀的簡單介紹

    空氣質(zhì)量狀況是目前人們最為關(guān)注的話題,空氣質(zhì)量檢測儀【恒美 HM-Q06】是構(gòu)成環(huán)境空氣質(zhì)量監(jiān)測網(wǎng)絡(luò)系統(tǒng)的基本要素,只有有效的環(huán)境監(jiān)測,才能夠切實認識和把握當下的環(huán)境
    發(fā)表于 06-30 09:24 ?1154次閱讀

    空氣質(zhì)量檢測儀的特點介紹

    空氣質(zhì)量檢測儀【恒美 HM-Q06】是我公司生產(chǎn)的新型空氣質(zhì)量在線多參數(shù)監(jiān)測系統(tǒng),空氣質(zhì)量檢測儀【恒美 HM-Q06】主要監(jiān)測PM2.5、P
    發(fā)表于 07-13 09:54 ?737次閱讀

    網(wǎng)格化空氣質(zhì)量監(jiān)測站的特點

    網(wǎng)格化空氣質(zhì)量監(jiān)測站【霍爾德儀器HED-AQ1】空氣質(zhì)量檢測儀有哪些強大功能呢?以前我們只顧及科技的快速進步,工業(yè)生產(chǎn)的加快發(fā)展,往往忽視了我們的生活環(huán)境,很多地方的空氣質(zhì)量并不好,我
    發(fā)表于 08-11 16:12 ?493次閱讀

    空氣質(zhì)量檢測儀使用方法是怎樣的

    空氣質(zhì)量對我們的生活影響是非常大的,當我們需要測量某個環(huán)境的空氣質(zhì)量時,就需要采用到空氣質(zhì)量檢測儀,為了可以保證測量的準確性,在使用這款裝置之前就應該先了解它的使用方法是哪些,今天就一
    的頭像 發(fā)表于 01-31 15:58 ?3127次閱讀

    空氣質(zhì)量檢測儀優(yōu)勢特點介紹

    當我們需要測量某個環(huán)境的空氣質(zhì)量時,可以借助空氣質(zhì)量檢測儀,而我們在使用這款儀器過程中,它可以表現(xiàn)出一定的優(yōu)勢特點,我們可以通過這些優(yōu)勢來更好的使用它。但是大部分人員在使用這款儀器時對它的了解可能
    發(fā)表于 02-01 16:12 ?866次閱讀

    空氣質(zhì)量檢測儀原理與應用介紹

    我們都知道,不同類型的儀器所采用的原理是不同的,所以它們可以應用在不同的環(huán)境中。我們常說的空氣質(zhì)量檢測儀是屬于一款檢測環(huán)境空氣質(zhì)量的設(shè)備,并且具有較快的響應速度,對于我們分析某地的
    發(fā)表于 02-03 16:09 ?1022次閱讀

    ONETEST-100AQL空氣質(zhì)量檢測儀工作原理介紹

    空氣質(zhì)量對我們的生活會造成一定的影響,通常需要借助一些專業(yè)的檢測儀器,而我們在使用一款儀器之前,需正確了解它采用的嚴原理是什么。ONETEST-100AQL空氣質(zhì)量檢測儀是一種用于分析
    的頭像 發(fā)表于 05-17 16:42 ?916次閱讀
    ONETEST-100AQL<b class='flag-5'>空氣質(zhì)量</b><b class='flag-5'>檢測儀</b>工作原理介紹

    空氣質(zhì)量監(jiān)測:了解您周圍空氣質(zhì)量的最佳選擇

    監(jiān)測的種類 空氣質(zhì)量監(jiān)測有多種類型,包括室內(nèi)空氣質(zhì)量監(jiān)測、室外空氣質(zhì)量監(jiān)測儀和移動
    的頭像 發(fā)表于 06-21 11:15 ?922次閱讀

    室內(nèi)空氣質(zhì)量檢測儀的工作原理與應用

    隨著人們對健康的關(guān)注度日益提高,室內(nèi)空氣質(zhì)量檢測儀已成為越來越多家庭和企業(yè)關(guān)注的焦點。本文將介紹室內(nèi)空氣質(zhì)量檢測儀的工作原理和應用場景。 一、室內(nèi)
    的頭像 發(fā)表于 06-30 13:39 ?3165次閱讀
    主站蜘蛛池模板: 一亲二脱三插 | 光棍天堂在线a | 春水福利app导航 | 快播欧美大片 | 在线免费视频a | 一区二区三区无码被窝影院 | 四虎亚洲中文字幕永久在线 | 老太脱裤子让老头玩xxxxx | 女性私密五月天 | 亚洲综合色在线视频久 | 二级毛片在线观看 | 亚洲视频中文字幕在线 | 午夜电影三级还珠格格 | 成人啪啪色婷婷久色社区 | 亚洲 日韩经典 中文字幕 | 美女一级毛片免费不卡视频 | 又爽又黄又粗又大免费视频 | 撕烂衣服扒开胸罩揉爆胸 | 恋夜影院支持安卓视频美女 | 99久久精品国产亚洲AV | 黑人寄宿羽月希产后奶水 | 亚洲精品国产高清不卡在线 | 免费观看亚洲视频 | 日韩娇小性hd| 37大但人文艺术A级都市天气 | 摸老师丝袜小内内摸出水 | 亚洲精品国产高清嫩草影院 | 亚洲精品青青草原avav久久qv | 亚洲不卡一卡2卡三卡4卡5卡 | 午夜福利理论片在线播放 | 色内射无码AV | 有码 亚洲 制服 国产 在线 | 久久er国产精品免费观看2 | 成人精品视频 | 羞羞影院午夜男女爽爽免费 | 芭乐视频免费资源在线观看 | 嗯啊好爽视频 | 中文字幕国产在线观看 | 3dbdsm变态videos高清 | 乌克兰内射私拍 | 免费啪视频观试看视频 |

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術(shù)信息
    • 參加活動獲取豐厚的禮品