亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運營的一線實戰(zhàn)洞察。

ESP32+JY61P姿態(tài)傳感器無線采集與UDP傳輸實戰(zhàn)

ESP32+JY61P姿態(tài)傳感器無線采集與UDP傳輸實戰(zhàn) 最近在給一臺小型機械臂做姿態(tài)反饋需要把JY61P姿態(tài)傳感器的角度數(shù)據(jù)實時送到電腦上畫曲線繞了一圈最后定了ESP32WiFi這套方案。這個項目一句話就能說清楚用ESP32讀取JY61P模塊的串口輸出解析出roll、pitch、yaw三個姿態(tài)角再通過WiFi把數(shù)據(jù)發(fā)到同一局域網(wǎng)內(nèi)的電腦上供上位機處理或顯示。整套東西做下來難度不大非常適合剛接觸物聯(lián)網(wǎng)的人練手也適合需要快速搭建無線姿態(tài)采集鏈路的機器人愛好者參考。先說結(jié)論這套方案的成本不到五十塊錢硬件連接只有四根線軟件部分核心就是串口解析和UDP發(fā)包兩個動作。如果之前玩過Arduino基本一個晚上就能跑通。下面我把完整的選型思路、接線方式、協(xié)議解析、代碼實現(xiàn)和踩坑記錄都寫出來照著做就行。1. 項目整體設(shè)計與方案選型1.1 為什么是ESP32JY61P這套組合先聊選型。姿態(tài)采集方案其實有很多種常見的有直接用MPU6050裸傳感器配STM32、用帶藍牙的模塊、用ESP32直接讀取MPU6050以及現(xiàn)在這套ESP32JY61P組合。我為什么最后選了后者ESP32的優(yōu)勢在于它天生就是為物聯(lián)網(wǎng)設(shè)計的雙核240MHz自帶WiFi和藍牙Arduino生態(tài)非常成熟一塊開發(fā)板二十幾塊錢資料多到看不完。更重要的是它自帶硬件UART接口讀串口傳感器非常方便根本不用外接USB轉(zhuǎn)TTL芯片。JY61P則是維特智能推出的一款六軸姿態(tài)傳感器模塊內(nèi)部已經(jīng)把MPU6050的原始數(shù)據(jù)做了姿態(tài)解算直接通過串口輸出歐拉角。換句話說你不需要自己去寫卡爾曼濾波或互補濾波不用跟四元數(shù)死磕插上電就能拿到穩(wěn)定的角度數(shù)據(jù)。這點在工程上太重要了因為姿態(tài)解算看著簡單實際調(diào)起來非常耗時間尤其是動態(tài)漂移的問題沒有點功底很難處理好。JY61P相當于把這塊最費腦子的部分封裝好了你花錢買時間劃算。對比一下直接讀MPU6050的方案雖然能省下模塊的錢但你要自己處理I2C時序、自己寫濾波算法、自己校準零漂。我早期做過一次光調(diào)試靜態(tài)穩(wěn)定性就花了兩天。如果項目重點是無線鏈路的搭建而不是姿態(tài)解算本身那直接用JY61P是更理性的選擇。1.2 通信鏈路串口采集、WiFi轉(zhuǎn)發(fā)整個數(shù)據(jù)流是這樣的JY61P通過UART串口把姿態(tài)數(shù)據(jù)實時輸出給ESP32ESP32在這里扮演的其實是網(wǎng)關(guān)的角色它先把串口數(shù)據(jù)解析成有意義的姿態(tài)角再打包成UDP數(shù)據(jù)包通過WiFi發(fā)到電腦上。為什么中間非要加一個ESP32而不是讓JY61P直接通過USB連電腦因為JY61P本身不具備聯(lián)網(wǎng)能力它的接口只有串口而且它的供電電壓是3.3V TTL電平插到電腦USB口上還得額外加轉(zhuǎn)換芯片。加了ESP32之后整個系統(tǒng)就完全無線化了傳感器可以裝在移動設(shè)備上、機械臂末端、小車底盤上數(shù)據(jù)照樣能回到電腦端。在傳輸層協(xié)議上我選的是UDP而不是TCP。原因很簡單傳感器數(shù)據(jù)是周期性的連續(xù)流每一幀數(shù)據(jù)之間有很強的時間相關(guān)性偶爾丟一兩個包完全不影響整體效果下一幀馬上就能補上。UDP是無連接的發(fā)送方只管把數(shù)據(jù)丟出去不需要握手、確認和重傳延遲低、開銷小。TCP雖然可靠但它的重傳機制在這種高頻數(shù)據(jù)流場景下反而是負擔一旦網(wǎng)絡(luò)抖動TCP會拼命重傳舊數(shù)據(jù)導致新數(shù)據(jù)排隊延遲越來越大。打個不嚴謹?shù)谋确絋CP像快遞簽收每一件都要確認收到UDP像廣播喇叭喊一嗓子就完事聽不聽得到看現(xiàn)場環(huán)境。姿態(tài)采集這種場景顯然廣播喇叭更合適。1.3 典型應(yīng)用場景這個項目本質(zhì)上是一條通用的“串口傳感器WiFi無線傳輸”鏈路所以可復用的場景非常多機械臂關(guān)節(jié)角度反饋實時監(jiān)控每個軸的轉(zhuǎn)動狀態(tài)自平衡小車/兩輪車的姿態(tài)環(huán)數(shù)據(jù)采集代替有線連接云臺角度閉環(huán)控制把傳感器裝在負載端通過WiFi把角度回傳主控人體姿態(tài)捕捉的簡易原型多個JY61P掛在四肢上數(shù)據(jù)匯集到PC端旋轉(zhuǎn)平臺、天線轉(zhuǎn)臺的遠程角度監(jiān)控。只要傳感器是串口輸出的這套代碼框架都能直接用改一下協(xié)議解析部分就行。2. 硬件準備與關(guān)鍵接線2.1 硬件清單先列一下需要的材料都很常見ESP32開發(fā)板一塊推薦DevKit V1這種30引腳的標準板某寶二十幾塊錢注意選帶USB轉(zhuǎn)串口芯片的版本用起來省心JY61P模塊一個維特智能出品搜索型號就能找到三四十塊錢杜邦線若干母對母的最方便建議準備四根面包板一塊可選方便固定和供電MicroUSB或Type-C數(shù)據(jù)線一根用于給ESP32供電和燒錄程序手機充電頭或充電寶一個5V/1A以上即可。2.2 引腳定義與接線表JY61P模塊常用的引腳有四個VCC、GND、TX、RX。其中VCC接電源正極GND接地TX是模塊的串口發(fā)送腳RX是接收腳。接線方式很簡單核心是“交叉連接共地供電”。我用的ESP32的UART2接口對應(yīng)GPIO16RX2和GPIO17TX2。接線表如下JY61P引腳接ESP32引腳說明VCC3.3V模塊供電3.3V更穩(wěn)妥GNDGND必須共地否則數(shù)據(jù)亂碼TXGPIO16RX2模塊發(fā)送ESP32接收交叉接RXGPIO17TX2模塊接收如果要配置模塊才需要接平時可懸空為什么選擇GPIO16和GPIO17因為這兩個引腳對應(yīng)的是ESP32的UART2和燒錄用的UART0互不干擾。ESP32的UART0默認接在USB轉(zhuǎn)串口芯片上用來和電腦通信和燒錄程序。如果我把JY61P接到UART0的TX/RX引腳上每次燒錄程序還要把線拔掉非常麻煩。UART2就是專門的通用串口留給外設(shè)正合適。2.3 接線注意事項與供電細節(jié)接線部分有幾個細節(jié)特別值得注意都是我用實踐換來的教訓。第一共地必須強調(diào)一萬遍。ESP32的GND和JY61P的GND一定要接在一起否則兩個模塊的電平基準不同串口數(shù)據(jù)必然亂碼或者完全沒反應(yīng)。很多人說“我接好了但收不到數(shù)據(jù)”十有八九是共地沒做好。第二電平匹配問題。JY61P支持3.3V~5V供電但它的串口電平是TTL 3.3V而ESP32的GPIO也是3.3V電平兩者直連沒有問題。我建議給模塊統(tǒng)一供3.3V這樣最安全。不要用5V去給JY61P供電然后直連ESP32雖然有些板子內(nèi)部有電平處理但跨壓操作始終不放心。第三注意上電順序。我習慣先把JY61P的供電接好然后再給ESP32上電燒錄。因為USB枚舉瞬間的電壓抖動可能導致模塊異常復位如果恰好卡在燒錄的時候會莫名其妙地出現(xiàn)連接失敗。第四千萬別把JY61P的TX接到GPIO0或者GPIO12這類啟動時有關(guān)鍵電平要求的引腳上。GPIO0在ESP32下載程序時要求是低電平如果這個引腳被外部設(shè)備拉高或拉低會造成燒錄失敗或者啟動異?,F(xiàn)象很詭異程序燒不進去或者燒進去跑不起來。所以老老實實用GPIO16和GPIO17最省事。3. 軟件環(huán)境準備Arduino IDE與ESP32支持包3.1 Arduino IDE安裝與ESP32開發(fā)板支持軟件部分我用的Arduino IDE因為ESP32的Arduino支持包非常成熟代碼寫起來直觀調(diào)試也方便。如果你還沒安裝Arduino IDE建議直接裝2.x版本界面和包管理比1.8好很多。安裝完IDE之后第一步是添加ESP32開發(fā)板支持包。打開“文件”-“首選項”在“附加開發(fā)板管理器網(wǎng)址”里添加以下地址https://dl.espressif.com/dl/package_esp32_index.json然后打開“工具”-“開發(fā)板”-“開發(fā)板管理器”搜索“esp32”找到“esp32 by Espressif Systems”安裝。這個包比較大下載時間取決于網(wǎng)絡(luò)情況耐心等待即可。安裝完成后在開發(fā)板列表里選擇“ESP32 Dev Module”就完成了基礎(chǔ)配置。有一個小坑剛安裝完支持包后編譯速度會偏慢因為第一次要編譯很多底層的庫后面就快了。如果編譯報錯提示找不到“WiFi.h”說明開發(fā)板支持包沒裝好重新在開發(fā)板管理器里檢查一下。3.2 燒錄與串口驗證在正式寫代碼之前建議先用一個最簡單的Blink程序驗證工具鏈是否正常。Arduino自帶的Blink示例就可以只是注意ESP32板載LED的引腳通常接在GPIO2上要把示例里的LED_BUILTIN換成2或者直接用LED_BUILTIN不同開發(fā)板定義不一樣看自己的板子說明書。編譯通過后連接ESP32到電腦在“工具”-“端口”里選擇對應(yīng)的COM口。點擊上傳按鈕如果出現(xiàn)連接失敗試著按住開發(fā)板上的BOOT鍵再點上傳等待出現(xiàn)“Connecting..._____”之后松手。燒錄完成后板載LED應(yīng)該開始閃爍這說明環(huán)境已經(jīng)OK了。4. JY61P數(shù)據(jù)協(xié)議解析與讀取代碼4.1 JY61P的輸出幀結(jié)構(gòu)JY61P默認波特率是115200數(shù)據(jù)位8停止位1無校驗也就是常說的115200 8N1。模塊上電后會主動向上位機發(fā)送數(shù)據(jù)包不需要發(fā)送任何配置指令。這點很方便特別是對新手來說少了一道交互流程。它的數(shù)據(jù)包以幀頭0x55起始第二個字節(jié)是數(shù)據(jù)類型標識常見的三種0x51加速度數(shù)據(jù)包0x52角速度數(shù)據(jù)包0x53角度數(shù)據(jù)包本項目只需要角度數(shù)據(jù)所以關(guān)注0x53這個類型即可。一個完整的角度數(shù)據(jù)包總長11字節(jié)結(jié)構(gòu)如下字節(jié)序號內(nèi)容說明00x55幀頭10x53數(shù)據(jù)類型角度包2RollLRoll角度低字節(jié)3RollHRoll角度高字節(jié)4PitchLPitch角度低字節(jié)5PitchHPitch角度高字節(jié)6YawLYaw角度低字節(jié)7YawHYaw角度高字節(jié)8TL溫度低字節(jié)9TH溫度高字節(jié)10SUM校驗和角度數(shù)據(jù)是int16類型小端序存儲實際角度值的換算公式是角度 原始值 / 32768 * 180度。因為模塊內(nèi)部的角度量程是±180度而int16的滿量程正好是±32768對應(yīng)關(guān)系非常直接。溫度值也是int16換算公式是 溫度 原始值 / 100攝氏度不過本項目的重點是姿態(tài)角溫度不處理也沒關(guān)系。校驗和的算法是從幀頭0x55開始一直到第9字節(jié)的TH所有字節(jié)累加取累加和的低8位結(jié)果等于第10字節(jié)的SUM。也就是說SUM (0x55 0x53 RollL RollH PitchL PitchH YawL YawH TL TH) 0xFF這個校驗非常重要因為串口通信在干擾環(huán)境下偶爾會出錯如果不對校驗和可能解析出完全離譜的角度值導致上位機數(shù)據(jù)亂跳。4.2 解析思路狀態(tài)機處理串口字節(jié)流串口的本質(zhì)是一個字節(jié)一個字節(jié)地往外吐數(shù)據(jù)中間沒有明顯的“幀”邊界。如果直接在循環(huán)里一個個找0x55非常容易出錯因為數(shù)據(jù)內(nèi)容里也可能出現(xiàn)0x55這個字節(jié)比如角度值恰好是0x55XX。這時候就需要用狀態(tài)機來切幀。狀態(tài)機的思路是定義一個狀態(tài)變量記錄當前解析到了幀的哪個位置。一開始處于“等待幀頭”狀態(tài)只有收到0x55才進入“等待類型”狀態(tài)收到合法的類型字節(jié)0x51/0x52/0x53后進入“接收數(shù)據(jù)”狀態(tài)連續(xù)接收8個數(shù)據(jù)字節(jié)后進入“等待校驗”狀態(tài)收到校驗字節(jié)后判斷是否正確然后無論對錯都回到“等待幀頭”狀態(tài)。這樣做的好處是嚴格的同步機制即使中間某一幀壞了下一幀的幀頭也能重新對齊不會導致后續(xù)所有數(shù)據(jù)全部錯位。這也是工業(yè)串口協(xié)議解析的標準做法。4.3 Arduino讀取代碼示例下面給出一段獨立的JY61P讀取代碼使用ESP32的UART2GPIO16接收把解析出的角度通過USB串口打印到Arduino IDE的串口監(jiān)視器上。先跑通這一步再上WiFi。// ESP32 JY61P 串口讀取和解析 // 使用 UART2: RXGPIO16, TXGPIO17 #define RXD2 16 #define TXD2 17 // 解析狀態(tài)機 enum State { WAIT_HEAD, WAIT_TYPE, WAIT_DATA, WAIT_CHECK }; State state WAIT_HEAD; uint8_t frameBuf[11]; int frameIndex 0; uint8_t frameType 0; uint8_t checkSum 0; void handleData(uint8_t *buf) { // 0x53 角度包 if (buf[1] 0x53) { int16_t rollRaw (buf[3] 8) | buf[2]; int16_t pitchRaw (buf[5] 8) | buf[4]; int16_t yawRaw (buf[7] 8) | buf[6]; float roll rollRaw / 32768.0 * 180.0; float pitch pitchRaw / 32768.0 * 180.0; float yaw yawRaw / 32768.0 * 180.0; Serial.printf(roll%.2f pitch%.2f yaw%.2f\n, roll, pitch, yaw); } } void parseByte(uint8_t c) { switch (state) { case WAIT_HEAD: if (c 0x55) { frameBuf[0] c; checkSum c; state WAIT_TYPE; } break; case WAIT_TYPE: if (c 0x51 || c 0x52 || c 0x53) { frameBuf[1] c; checkSum c; frameType c; frameIndex 2; state WAIT_DATA; } else { state WAIT_HEAD; // 類型不合法重新找?guī)^ } break; case WAIT_DATA: frameBuf[frameIndex] c; checkSum c; frameIndex; if (frameIndex 10) { state WAIT_CHECK; } break; case WAIT_CHECK: if (c (checkSum 0xFF)) { handleData(frameBuf); } state WAIT_HEAD; break; } } void setup() { Serial.begin(115200); Serial2.begin(115200, SERIAL_8N1, RXD2, TXD2); Serial.println(JY61P Test Start); } void loop() { while (Serial2.available()) { parseByte(Serial2.read()); } }燒錄到ESP32后打開串口監(jiān)視器波特率選115200如果接線沒問題可以看到不斷滾動的roll、pitch、yaw數(shù)據(jù)。這時候轉(zhuǎn)動JY61P對應(yīng)的角度值應(yīng)該跟著變化。如果這里能跑通說明整個鏈路的一半已經(jīng)完成了。4.4 備選方案使用WitMotion官方庫有朋友嫌自己寫狀態(tài)機麻煩其實維特智能官方也提供了Arduino庫名字叫“WitMotion”在Arduino庫管理器里可以直接搜到。使用官方庫的代碼如下#include WitMotion.h WitMotion jy61p; void setup() { Serial.begin(115200); jy61p.begin(Serial2); } void loop() { if (jy61p.update()) { Serial.printf(roll%.2f pitch%.2f yaw%.2f\n, jy61p.roll, jy61p.pitch, jy61p.yaw); } delay(10); }官方庫把協(xié)議解析封裝好了配置也簡單適合不想深入了解協(xié)議的人。不過我依然建議自己寫一遍解析代碼因為工業(yè)場景里串口傳感器種類很多幀格式各有不同掌握了狀態(tài)機拆幀的技能換任何傳感器都能應(yīng)對。官方庫是一個黑盒一旦出了問題不好排查。5. 連接WiFi并通過UDP發(fā)送數(shù)據(jù)到電腦5.1 WiFi連接流程串口數(shù)據(jù)解析通了接下來就是給ESP32聯(lián)網(wǎng)。ESP32連接WiFi的代碼很固定無非是這幾步設(shè)置工作模式為STA、調(diào)用begin傳入SSID和密碼、循環(huán)等待連接成功。#include WiFi.h const char* ssid your_wifi_name; const char* password your_wifi_password; void setup() { Serial.begin(115200); WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); Serial.print(Connecting to WiFi); while (WiFi.status() ! WL_CONNECTED) { delay(500); Serial.print(.); } Serial.println(); Serial.print(Connected, IP: ); Serial.println(WiFi.localIP()); }唯一需要特別注意的是頻段問題。ESP32只支持2.4GHz頻段的WiFi如果路由器開了5GHz或者“雙頻合一”模式ESP32很可能連不上或者連上后頻繁掉線。解決辦法是登錄路由器后臺把WiFi頻段固定為2.4GHz或者給ESP32單獨開一個訪客網(wǎng)絡(luò)。這個坑我踩過折騰了半天最后發(fā)現(xiàn)是路由器把2.4G和5G合并了。為了方便調(diào)試建議在路由器里給ESP32分配一個固定IP或者在代碼里手動配置靜態(tài)IP。這樣電腦端監(jiān)聽程序不用每次去查IP變化。但項目初步階段動態(tài)IP也沒問題ESP32上電后打印一下自己的IP就行。5.2 為什么推薦UDP而不是TCP前面提過UDP的優(yōu)勢這里再展開說一下。姿態(tài)數(shù)據(jù)的典型特征是高頻率、小數(shù)據(jù)包、允許少量丟失。JY61P默認輸出頻率是100Hz也就是每秒100幀數(shù)據(jù)。如果每幀都用TCP發(fā)送每包都要經(jīng)過三次握手建立的連接通道雖然連接是長連接但TCP的確認機制和擁塞控制還是會引入額外延遲尤其是WiFi環(huán)境本身就不穩(wěn)定TCP重傳會造成數(shù)據(jù)包的排隊和亂序。UDP則完全沒有這些負擔。數(shù)據(jù)包發(fā)出去就結(jié)束1對1也好1對多也好代碼實現(xiàn)都非常簡單。在局域網(wǎng)這種低延遲、低丟包的環(huán)境下UDP的可靠性其實相當高。實測下來100Hz的數(shù)據(jù)流丟包率遠低于千分之一對姿態(tài)顯示沒有任何影響。當然了如果后續(xù)要做的是指令下發(fā)、參數(shù)配置這類要求可靠傳輸?shù)墓δ苣蔷屠侠蠈崒嵱肨CP或者HTTP。UDP適合的是傳感器數(shù)據(jù)上行這種場景要區(qū)分清楚。5.3 UDP發(fā)送代碼與電腦端監(jiān)聽UDP發(fā)送用Arduino的WiFiUDP庫核心就三個方法beginPacket、print/printf、endPacket。示例代碼如下#include WiFiUdp.h WiFiUDP udp; const IPAddress pcIP(192, 168, 1, 100); // 改成你電腦的IP const unsigned int pcPort 8888; void setup() { Serial.begin(115200); WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); while (WiFi.status() ! WL_CONNECTED) { delay(500); } udp.begin(pcPort); // 本機綁定端口可選 } void loop() { udp.beginPacket(pcIP, pcPort); udp.printf(hello from esp32\n); udp.endPacket(); delay(100); }電腦端的IP地址查看方法Windows在命令行里輸入ipconfig找“無線局域網(wǎng)適配器”里的IPv4地址macOS或Linux在終端里輸入ifconfig找en0或wlan0的inet地址。電腦和ESP32必須在同一個網(wǎng)段下比如路由器分配的IP都是192.168.1.x。電腦端用Python寫一個最簡單的UDP監(jiān)聽腳本import socket sock socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.bind((0.0.0.0, 8888)) print(Listening on UDP port 8888...) while True: data, addr sock.recvfrom(1024) print(data.decode().strip())運行這個腳本后如果ESP32的WiFi連上了電腦端的防火墻也沒攔UDP包終端里應(yīng)該能不斷打印出ESP32發(fā)來的“hello”字符串。這一步通了說明“傳感器數(shù)據(jù)無線回傳”的核心鏈路已經(jīng)打通。6. 整體聯(lián)調(diào)JY61P數(shù)據(jù)經(jīng)WiFi回傳電腦6.1 完整代碼整合把前幾節(jié)的代碼整合起來就是一個完整的ESP32JY61PWiFi無線姿態(tài)采集程序。代碼里已經(jīng)包含了SSID、密碼、電腦IP和端口按自己的環(huán)境修改即可。#include WiFi.h #include WiFiUdp.h // WiFi配置 const char* ssid your_wifi_name; const char* password your_wifi_password; // 電腦端配置 const IPAddress pcIP(192, 168, 1, 100); const unsigned int pcPort 8888; WiFiUDP udp; // JY61P 串口引腳 #define RXD2 16 #define TXD2 17 // 解析狀態(tài)機 enum State { WAIT_HEAD, WAIT_TYPE, WAIT_DATA, WAIT_CHECK }; State state WAIT_HEAD; uint8_t frameBuf[11]; int frameIndex 0; uint8_t frameType 0; uint8_t checkSum 0; void sendAngleByUDP(uint8_t *buf) { int16_t rollRaw (buf[3] 8) | buf[2]; int16_t pitchRaw (buf[5] 8) | buf[4]; int16_t yawRaw (buf[7] 8) | buf[6]; float roll rollRaw / 32768.0 * 180.0; float pitch pitchRaw / 32768.0 * 180.0; float yaw yawRaw / 32768.0 * 180.0; // 數(shù)據(jù)格式: roll,pitch,yaw udp.beginPacket(pcIP, pcPort); udp.printf(%.2f,%.2f,%.2f\n, roll, pitch, yaw); udp.endPacket(); } void parseByte(uint8_t c) { switch (state) { case WAIT_HEAD: if (c 0x55) { frameBuf[0] c; checkSum c; state WAIT_TYPE; } break; case WAIT_TYPE: if (c 0x51 || c 0x52 || c 0x53) { frameBuf[1] c; checkSum c; frameType c; frameIndex 2; state WAIT_DATA; } else { state WAIT_HEAD; } break; case WAIT_DATA: frameBuf[frameIndex] c; checkSum c; frameIndex; if (frameIndex 10) { state WAIT_CHECK; } break; case WAIT_CHECK: if (c (checkSum 0xFF)) { if (frameType 0x53) { sendAngleByUDP(frameBuf); } } state WAIT_HEAD; break; } } void setup() { Serial.begin(115200); Serial2.begin(115200, SERIAL_8N1, RXD2, TXD2); // 連接WiFi WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); Serial.print(Connecting to WiFi); while (WiFi.status() ! WL_CONNECTED) { delay(500); Serial.print(.); } Serial.println(); Serial.print(ESP32 IP: ); Serial.println(WiFi.localIP()); udp.begin(pcPort); } void loop() { while (Serial2.available()) { parseByte(Serial2.read()); } }代碼邏輯并不復雜setup里完成串口、WiFi和UDP的初始化loop里持續(xù)從Serial2讀取JY61P發(fā)來的字節(jié)交給狀態(tài)機解析解析到合法的0x53角度包后計算三個歐拉角通過UDP發(fā)送到電腦端。Serial.printf打印調(diào)試信息依舊走USB串口完全不影響WiFi發(fā)送。6.2 電腦端接收與可視化測試電腦端運行前面那個Python監(jiān)聽腳本接收波特率匹配那次我們已經(jīng)確認了。如果一切正常終端里會出現(xiàn)類似下面的輸出12.34,5.67,-89.01 12.35,5.68,-89.02 12.36,5.69,-89.03三列數(shù)據(jù)分別對應(yīng)roll、pitch、yaw。物理上轉(zhuǎn)動JY61P對應(yīng)數(shù)值會實時變化響應(yīng)延遲在毫秒級肉眼幾乎感覺不到延遲。想看可視化的曲線可以用Python的matplotlib庫做一個簡單的實時繪圖窗口。這個屬于擴展內(nèi)容網(wǎng)上有很多現(xiàn)成的例子關(guān)鍵詞搜“matplotlib 實時繪圖 UDP”就能找到。如果想做更專業(yè)的上位機可以用pyqtgraph或Processing效果會好很多。6.3 發(fā)送頻率與數(shù)據(jù)包格式設(shè)計JY61P默認輸出頻率是100Hz但實際上并不是每個0x53角度包都干凈利落地被發(fā)送。串口中斷和WiFi發(fā)送都需要時間如果每收到一幀就立刻UDP發(fā)送可能會出現(xiàn)微小的節(jié)奏抖動。實測下來100Hz完全能扛住但如果電腦端的接收緩沖區(qū)不夠大長時間運行有掉包風險。我建議根據(jù)實際需求控制發(fā)送頻率。如果只是簡單監(jiān)控可以加一個簡單的節(jié)流判斷比如每50ms發(fā)送一次最新角度也就是20Hz。如果做機械臂姿態(tài)反饋或者自動控制那100Hz是底線建議保持全速發(fā)送。UDP包本身很小一個包不到30字節(jié)100包/秒也就是每秒3KB流量對WiFi來說九牛一毛。數(shù)據(jù)包格式建議用CSV也就是純文本加逗號分隔。因為UDP本身沒有規(guī)定格式用CSV最直觀電腦端一行split(,)就能解析成三個浮點數(shù)。如果以后要傳輸更多字段比如加速度、角速度、溫度可以繼續(xù)往后面追加格式保持兼容即可。7. 常見問題與排查技巧實錄做一個項目不踩坑是不可能的。我把實際過程中遇到的典型問題整理成了速查表方便大家對照排查?,F(xiàn)象可能原因解決辦法串口監(jiān)視器沒有任何輸出JY61P供電沒接好檢查VCC和GND確認共地串口輸出全是亂碼波特率不匹配確認JY61P是115200串口監(jiān)視器也選115200數(shù)據(jù)偶發(fā)跳變干擾或接線過長杜邦線盡量短避開電機等強干擾源校驗和頻繁錯誤供電不足導致模塊異常換優(yōu)質(zhì)電源不要用劣質(zhì)USB口供電WiFi連不上路由器開了5GHz或雙頻合一固定到2.4GHz頻段或開訪客網(wǎng)絡(luò)WiFi連上但收不到UDPWindows防火墻攔截在防火墻入站規(guī)則里放行UDP 8888端口燒錄程序失敗GPIO引腳沖突下載時按住BOOT鍵檢查外設(shè)是否占用GPIO0程序燒錄后反復重啟供電電流不夠換5V/2A電源避免電腦USB口供電不足7.1 串口調(diào)試通了再上WiFi這里分享一個我自己的實戰(zhàn)習慣永遠先串口后WiFi。也就是先把JY61P的數(shù)據(jù)通過USB串口打印在電腦上看確認硬件接線和解析邏輯完全正確再去連WiFi、寫UDP。這樣一旦出了問題排查范圍能縮小一半。很多新手一上來就把WiFi和UDP代碼全寫上結(jié)果收不到數(shù)據(jù)根本分不清到底是傳感器沒接好還是解析代碼有bug還是WiFi配置有問題。分層驗證是最穩(wěn)的方案雖然多花幾分鐘但能省下一個晚上的排查時間。7.2 供電不足引起的詭異問題ESP32的開發(fā)板在WiFi發(fā)射的時候瞬時電流可能到幾百毫安如果電源質(zhì)量不好電壓會被拉低導致JY61P也工作不穩(wěn)定。癥狀很典型上電時一切正常一旦WiFi連上開始發(fā)送數(shù)據(jù)板子就重啟或者數(shù)據(jù)開始出現(xiàn)校驗錯誤。解決辦法很簡單給ESP32用一個靠譜的5V電源比如手機充電頭或者大容量充電寶盡量不要用電腦前置USB口的供電。JY61P的VCC接在ESP32的3.3V引腳上所以ESP32的電源質(zhì)量直接決定JY61P的穩(wěn)定性。如果單獨給JY61P供3.3V記得GND還是要和ESP32連在一起。7.3 防火墻與端口設(shè)置電腦端收不到UDP數(shù)據(jù)排除WiFi問題后十有八九是防火墻攔截了入站UDP包。Windows的防火墻默認情況下會攔截陌生程序的入站流量尤其Python解釋器或者Java虛擬機這類沒有在允許列表里的程序。臨時解決辦法是關(guān)閉防火墻測試注意生產(chǎn)環(huán)境不建議這么干或者更規(guī)范的做法是在“Windows Defender防火墻”的“高級設(shè)置”里添加入站規(guī)則放行UDP協(xié)議、指定本地端口8888、允許所有程序。這樣既安全又能正常接收數(shù)據(jù)。8. 項目擴展思路8.1 數(shù)據(jù)記錄與回放如果要做數(shù)據(jù)分析或?qū)嶒瀼捅P可以在電腦端把接收到的數(shù)據(jù)實時寫入CSV文件。Python監(jiān)聽腳本里加幾行文件寫入代碼就行每收到一行數(shù)據(jù)就追加到文件末尾。這樣跑完一次實驗就能拿到一份完整的姿態(tài)數(shù)據(jù)導入Excel或者Matlab分析都很方便。8.2 多傳感器接入與多軸可視化一個ESP32的UART2只能接一個JY61P但ESP32其實有多個UART。比如UART1、UART2都可以接只是注意不要和Flash芯片占用的引腳沖突GPIO6~GPIO11默認給Flash用了盡量避開。如果你需要監(jiān)測多個姿態(tài)點比如人體四肢可以買多個JY61P模塊分別接到不同的UART上然后在ESP32上按端口區(qū)分數(shù)據(jù)來源統(tǒng)一通過UDP發(fā)到電腦。電腦端接收時可以根據(jù)數(shù)據(jù)包里的設(shè)備標識來區(qū)分不同的傳感器節(jié)點。這樣一套系統(tǒng)就能同時監(jiān)控多個姿態(tài)點做人體姿態(tài)捕捉的基礎(chǔ)原型完全夠用。8.3 與ROS 2/micro-ROS結(jié)合如果你做機器人開發(fā)可以把這套無線姿態(tài)采集方案接入ROS 2生態(tài)。ESP32上運行micro-ROS節(jié)點把roll、pitch、yaw發(fā)布為sensor_msgs/Imu或者自定義的Float32MultiArray話題上位機直接用ROS 2工具鏈訂閱數(shù)據(jù)。這個方向適合已經(jīng)接觸過ROS 2的朋友初期不建議直接上手先把基礎(chǔ)鏈路跑通再說。8.4 增加自動校準與交互功能JY61P出廠前已經(jīng)做了標定零點漂移很小直接可用。但如果你追求更高的精度可以加上電自校準邏輯在模塊靜止狀態(tài)下采集100幀數(shù)據(jù)求平均作為零偏然后在后續(xù)數(shù)據(jù)中扣除。這個校準邏輯放在ESP32解析代碼里實現(xiàn)即可不需要改模塊配置。另外如果想讓系統(tǒng)具備交互能力可以把ESP32的藍牙也打開通過手機App直接看角度。有了WiFi和藍牙雙重通道這套系統(tǒng)的應(yīng)用范圍會寬很多。這個項目看著簡單但真正動手做一遍串口協(xié)議解析、狀態(tài)機設(shè)計、WiFi通信這幾塊基本功都能得到實打?qū)嵉腻憻?。我做完之后的體會是任何一個環(huán)節(jié)不扎實都會出問題尤其是串口字節(jié)處理寫代碼時覺得思路很清晰一上板子各種邊角情況全冒出來了。建議你從串口讀數(shù)據(jù)開始一步一步往上加功能不要一口吃成胖子。無線數(shù)據(jù)傳輸這條鏈路打通之后后面想接什么傳感器、做什么應(yīng)用都只是換個協(xié)議解析的事。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
国产一级αv免费看片| 志村玲子视频一区二区| 啪啪自拍九九综合| 久久99久久99精品天美传媒棢·纸:.| 超碰中文字幕人妻草一区| 多毛小伙内射老太婆| 久久亚洲一区女同性恋中文字幕 | 日韩欧美天堂| 偷拍亚洲高清图片| 天天干美少妇一区| 午夜精品一区二区三区三上悠亚| 亚洲黄色a级片| 精品无吗m| 亚洲色图欧美色图综合| Aa东京男人的天堂| 青青草久久一区网| 久久精品人体| 超碰午夜在线| 国产污视频麻豆传媒一区二区| 欧美一区二区亚洲天堂| 韩国三级理论在线| 综合自拍| 日本在线播放不卡一区| 国产欧美精选激情视频| 日韩av性爱在线播放| 欧洲精品欧洲精品| 欧美手机在线综合| 日韩专区久久久| 久啪| 91欧美美女日韩国产婷婷| AV 少妇 人妻 偷拍| 亚洲精品a人片在线观看视| 99久久久久久亚洲精品不卡| 黑人白女精品一区| 波多野结衣被操50分钟免费视频 | 日本 欧美 国产一区| 天天插夜夜操| 亚欧日韩成人| 91精品啪在线观看国产城中村| 大香蕉乱级| 一级一性爱免费视频| 黑人娇小av在线播放| 在线二区不卡| 天天色欧美| 色与欲影视天天看综合网| 亚洲色图第一页| 精品无人区麻豆乱码1区2区图片| 人人妻人人爽一区二区三区| 欧美性爱18观看| 亚洲国产丝袜熟女av| 国产精品自拍视频| 亚洲影院365| 水多多映视AV| 国产强奸乱伦xd| 免费在线黄片视频| 伊人天堂在线| 欧美色天堂网在线视频| 日韩有码中文字幕女同性恋| 羞涩视频| 强奸乱伦大香蕉| 欧美一级国产一级| 久久99视频| 狠狠操夜夜操蜜桃视频三区| 青青草亚洲一区| 久久一本大香蕉 | 风间由美日韩欧美久久| 成人精品在线免费视频| 天天综合网日韩7799| 久久亚洲av成人无码国产| 久久精精区一区二区一蜜桃一区二区| 精爱久久| 日韩精品 欧美激情| 国产精品无码成人精品| 99热超碰在线| 中文字幕欧美日本乱码一线二线 | 美国一区二区免费视频| 男人的天堂,欧美亚洲另类国产日韩,日本高清一区二区 | 亚洲麻豆av一区二区| 色欲三区| 色五月婷婷麻豆在| 国产欧美后入| 亚洲巨爆乳一区二区三区四季网| 99人人干| 国产不卡中文字幕免费avi| 老熟妇一区二区三区| 影音先锋日本一区二区| 免费在线黄片视频| 在线A日本| 免费啪啪啪网站18岁| caorenqi shipin| 日本一二三高清| 欧美综合777| 亚洲**2021在线观看| 99精品久久久久久久婷婷| 屌色在线97视频| 亚州综合图片| 日本一区二区中文字幕久久| 午夜福利成人免费视频| 激情视频一二三| 999热这里只有精品| 国产成年精品高清在线观看91| 天堂九九九九九九九九九| 亚洲综合草草| 亚洲一欧洲中文字幕在线| 国产熟女少妇一区| 尤物网站91| av九九| 国产成人精品午夜福利| 日韩操p| 国产原创精品| 97AV在线观看| 婷婷中文字幕| 激情文学亚洲| 婷婷深爱五月| 高清有码一区二区| 北条麻妃99精品青青久久| 国产激情在线| 淮穴色AV| 爱妃国产亚洲视频中文字幕| 操学生天天| 美女黄网| 亚洲欧美天堂在线| 亚洲AV麻豆Aⅴ无码电影一 | 中文字幕制服诱惑| 99热成人| 一起草三级AV电影在线观看 | 精品国产乱码久久久久久蜜臀| 日韩免费a级毛片无码a∨| 强奸乱伦αv片| 亚洲 欧美 另类 日韩 人妻一区| 91精品女厕偷拍视频| 大香蕉中文aV在线| 先锋色眉乱伦资源| 99久久久| 大香蕉 222| 亚洲国产精品无码AV久久| 一区二区久久天天干狠狠| 91bbb| 超碰在线974| 国产精品人妻无码久久久老鸭窝| 97精品一二区| 亚洲AV无码翔田千里网站| 亚洲精品蜜桃久久久久久久| 亚洲最新a在线观看| 99日视频在线免费| 欧洲精品二区| 激情五月天插| 天天操天天干一区二区| 久久久久斤小| 欧美夜夜狠| 成人怡红院| 国产农村妇女精品一| 天天操天天射青青草| 日本乱人伦片中文三区| 91碰超| 欧美成人一区二区三区在线播放| 国产一国产一级毛片古装| 欧美综合区| 国产啊v在线免费播放| 人妻献身系列第54部| 欧美人人曰人人操人人射射 | 夜精品久无码| 91亚洲黑人| 天堂а√在线最新版在线| 久久亚洲天堂| 啊啊啊 在线观看| 成人性爱av| 蜜汁欧美| 日日噜噜夜夜久久亚洲一区二区| 丝袜大香蕉| 免费观看性欧美一级| 97av,com| 天天内射| 日韩天天本| 天天肏美女| 92人人操人人| 久久成人午夜精品影院| 麻豆视频国产一区二区| 九九99久久| 欧美精品23| 啊啊啊操死我| 日韩9区| 大香蕉琪琪日本女优不卡| 啪啪啪综合网| 色情五月丁香| 久久性爱城| 免费一级精品啪啪视频| 日韩福利综合一区| 思思久热在线精品66| 肉丝中文无码高清| 色综合99999| 亚洲精品欧美专业| 97久久精品亚洲中六字幕| 国产亚洲99久久精品| 操操逼操操逼操操逼逼| 国产日韩无码一区二区三区久久区| 限制级中的三级片中的黑粗大屌屌日人妻熟女 | 日韩乱码Av| 自拍鲍鱼一区在线高清观看免费| 伊人网综合在线视频| 高清无码久操视频| 在线a亚洲视频播放在线| 精品少妇高潮久久| 大香蕉伊然在亚洲91| 加勒比日本在线| 亚洲AO在线| 色哟哟国产精品免费网址| 婷婷激情四射| 丁香九月婷婷| 亚洲加勒比久久日本道| 国产色产精品在线观看 | 可以免费观看的AV| 五月婷婷激情| 性欧美另类高清| 欧美九9 9 9| 97人人操人人干| 俺去俺来也在线www| 午夜欧美女人操逼| 丁香婷婷九月| 青草视频在线看看看看看看看看看| 丁香五月色情| 99久久这里只有精品| 黄色污污污污污污网站| 久久蜜桃综合网| 色噜噜人妻丝袜AV资源| 日本三级精品| 日本在线观看网址| 国产高清精品一区二区三区毛片 | 中文伊人大香蕉视频| 久久婷婷色综合一区二区三区| 91亚洲人电影| 亚洲情色一区三区| 九九综合网| 欧美韩日精品99综合| 亚洲中文字幕一区二区| 成人精品在线免费视频| 久草视频在线视频在线视频在线观看| 久久久精品视频免费观看| 影音先锋国产精品| 久久一区,青青青青草视频在线播放| 一区 欧美 日韩 麻豆| 日噜夜夜夜夜夜夜夜夜夜夜爽爽爽爽爽爽爽爽爽爽爽爽 | 九九99精品视频在线观看| 蜜臀久久99精品久久综合| 国产亚卅97| 999九九精品| 葡萄牙性视频一二区| 人人看人人插| 99超级碰免费视频| 超碰97最新人妻| 夜夜嗨一区二区三区三州加勒比| 国产 日韩 欧美一区| 国产操逼视频在线观看| 91色艳| 日本一久是| henhen91| 国产精品女久久久久av爽| 天天日天天舔| 欧美人妻另类在线| 欧美精品久久96人妻无码| 亚洲成?V人片在线观看福利| 91精品成人| 骚货操死你| 影音先锋少妇| 欧州色图区| 大屁股国产在线视频| 96精品久久久久久久久| 在线观看综合精品亚洲| 人妻少妇精品久久久| 国产精品久久久久久久久久久久久久吹| 人人做,人人操,人人摸| 青娱乐亚洲热| 欧美少妇色图| 啪啪91| 91熟女少妇| 成人小说视频在线精品欧美| 免费看美国人人爽,人人操| 欧美性五月| 国内亚洲精彩视频在线| 成人老鸭窝人人在线视频| 日日骚中文字幕| 亚洲操人| 91久久精品美女高潮喷水| 午夜一级免费毛片| 好看的久久不射无码影视影院| 精品视频一区二区| 色色色色色色色色色色色色色色综合| 中文字幕一二三| 日韩成人精品中文字幕| 久久久999国产| 亚洲国产精品无码AV在线| 高树玛利亚无码流出| 国产97在线视频| 久久久久久久人妻| 天天综合~91| 伊人色综合网电影| 老熟乱一区二区三区四区| 中日韩久久久| 狠狠爱夜夜干| 欧美性爱十八禁| 精品久久艹| 乱伦1色页| 精品九九淫乱男| 日韩久久.一级黄色片| 天天碰操中国年青熟妇| 国产精品日韩在线一区| 中文字幕十五区| 熟女这里只有精品6| 夜夜狼人妻| 日本免费中文字幕在线| AV男人天堂网| 五月丁香啪啪啪| 蜜臀99久久精品久久久久| julia高潮后不停追击中出| 神马久久午夜| 女人的天堂大香蕉网| 亚洲熟女精品| 国内外激情在线| 亚洲综合五月天| 亚洲av青草久久一区二区| 国产嫩草精品A88AV在线| www.99中文字幕| 中出在线视频| 欧美老熟另类| 亚洲少妇中文字幕网址| 三男一女不戴套的A片| 一本大道综合伊人精品热热| 韩国一级婬片A片AAAAA| 神马久久久久久| 色综合99999| 久久九色| 亚洲无码超碰免费| 国产97综合| 日韩在线AB| 欧美精品99久久久**| 亚洲国产精品久久久久婷婷老年| 精品91摸| www.色五月| 一个人免费视频观看在线WWW | 日本欧美一区二区三区视频麻豆| 干美女人妻| 少妇蜜汁| 99热亚洲| 国语国产操逼伊人AV网| 女人天堂av在线播放| 男人的天堂2000| 视频二区美腿丝袜制服人妻欧美| www.久久最新地址| 日产操逼| 久九九九九九九九热| 成人在线视频一区| 日韩亚洲美女一区久久| 午夜精品久久久久久久99蜜桃一| 国产亚洲福利第一页丝袜| 久久久久96| 国产十八禁视频| 欧美成人9797| 欧美中文字幕男人天堂久久精品| A片 AV一级在线播放观看免费| 黄片www视频免费| 天堂av最新电影网| 亚洲AV不卡在线观看尤物| 女同在线视频一区| 久久露脸国产老熟女| 成人性爱av| 亚洲无992tv| 99在线观看视频在线高清| 麻豆一区在线| 亚洲熟女乱综合一区二区三区| 欧美嗯啊……在线观看视频免费| 日韩啪啪网| 两性综合网| xxx0国产在线播放| 上海一级黄片| 色呦呦呦在线观看视频| 国产成人午夜视频网址| 香伊人在线| 思思久热在线精品66| 国产精品乱码久久| 91丝袜美女视频| 亚洲色婷婷综合久久一区二区三区| 91影视亚洲| 伊人伊人LD| 亚洲码和欧洲精品激情系列| 国产有码一区| 99re69| 日夜干射色啊| 九七毛片九九毛片| 国产精品一区二区麻豆| 国产乱码久久久| 天堂av最新电影网| 日韩久射综合| 欧美性爱一区二区| 性饥渴少妇av无码毛片| 国产欧美日韩一区二区三区| 思思热国产在线视频| 国产精品干干干| xxx0国产在线播放| 四虎影院成年人片| 欧美拳交在线播放| 在线97在线| 日韩美女高潮喷水视频| 99re6国产精品99re| 久久久久久久久久久精| 无人区高清电影免费观看一区二区三 www.qmcai2.com | 殴美色网| 久久久久久久免费A片国产成a人亚洲精∨品无码| 亚洲色图图片| 一区操逼| 淮穴色AV| 亭亭在线资源| 亚洲国产天堂| 日韩激情毛片一级久久久| 久久91精品国产9丨久久分亭| 一级啊性爱在线视频| 99人人干| 人妻爽爽啪视频| 91色射| 国产老太乱伦一区| 欧美日韩国内不卡| 女色视频社区| 强奸乱伦日韩AV| 开心激情婷婷| 久久久久中出| 国产外初女出血视频| 偷偷人人精品女女久久| 国产精品人人爽人人做可爱福利| 伊人久久婷婷| 搞中出视频在线观看| 精品少妇一区二区三区| 女沟厕偷窥piss小便| 国产AV久久野战精品| www.夜夜| 美女网站黄页| 26uuu成人影片| 视频分类 国内精品| 91女在线观看| 99热这里只有精品1| 欧美97| 强奸乱伦αv片| 毛片17S| 91老妇女| 国人欧美精品一区二区| 青青草吊丝| 久久久久幕乱码| 欧美一区二区三区四区综合| 伊人综合色网| 人妻熟女一区二区在线视频| 探花在线免费观看视频国产一区| 厕所偷拍在线| 一本久道久久综合狠狠爱一密臀精| 91精品国产日韩欧美综合| 亚洲综合春色| 东京热男人天堂| 999国产精品999| 色超碰综合| 婷婷色综合欧美日韩| 人人透人人操| 妇女乱色二区| 一区二区三区视频在线观看免费| 躁躁日曰躁2020| 张柏芝国产一区在线观看| 综合色99| 九九九九九九综合| 97超碰天天| 爆乳免费黄网站| 亚洲一区中文字幕| 亚洲aV无码成人在线观看| 韩国国产欧美情侣视频在线| 日夜精品| 可以看的av| 亚洲第一二区另类图| 夜夜做夜夜爽精品视频| 凹凸久久人人| 噜噜噜亚洲精品| 日韩AV无码网站| 2025亚洲男人天堂| 四虎午夜影院| 欧美性爱网97| 成年人性爱日韩| 亚洲宗合网| 污污汅18禁网站在线永久免费观看 | 国产夫妻性生活视频| 99re公开精品免费视频| 操曰本熟女| 国产精品蜜乳AV| av日韩中文字幕| 久草视频分类在线| 青草精品视频日本久久久久网站在线| 蜜桃臀久久| 国产精品久久久久综合| 久久嫩草| 曰本精品久久久| 嗯啊视频免费在线观看| 欧美综合777| 91丨九色丨国产打屁股| 中文字幕丰满子伦无码专区在线视频最新| 天天日日舔舔| 美国一区二区三区视频| 欧美激情亚洲| 性色高清在线| 国产福利第一视频| 91福利网在线观看| 97精品在线| 久久综合九九| 成年人三级黄色片视频| 人人妻人人澡人人爽久久av| 日韩激情视频| 91色婷婷综合久久中文字幕二区| 可免费观看的av毛片中日美韩| 性色国产东北露脸精品视频| 怡红院一区二区熟女人妻| 亚洲国产精品无石码久久| 欧美熟女妇同| 亚洲欧美大香蕉| 久久性爱精品一区| 国产精品天堂| 超碰精品人妻狠狠干| 日本 欧美 亚中文字幕| 日韩国产乱子伦App| 久久啊啊| 亚洲情色综合网| 毛片视频白嫩| 五月丁香激情综合网| 国产日韩手机视频在线| 夜夜爽夜夜操| 成人资源中文字幕在线观看| 99xav| 国产原创自拍| 强免费黄色网址| 最新岛国大片| 一级AV性爱| 久9精品| 日韩电影免费网站麻豆视频| 蘋果手機免費看成人Av| 爆乳免费黄网站| 操美女高潮抽搐白浆| 性爱Av免费| 色屁屁影院www国产| 亚洲高清欧美总合| 国产视频97| 超碰97亚洲区| 久久国语| 国产女人9999| 欧美传媒一区| 日日夜夜模| 97国产亚洲中文在线| 99热97| 五月丁香啪啪| 日韩婷婷| 91精品久久久久久77777| 日操粉逼逼| 乱伦图av| 最新日产中文在线麻豆| 99久久久久久久久| 手机看av网站在线看| 秋霞无码av鲁丝片一区| 1禁看欧美黄片免费看| 亚洲免费在线探花| 美国aaaaa一级黄片| 欧美黑人精品在线播放| 亚洲成人无码影院| 91高清无码下载| 国产尤物AV尤物在线观看不卡| 久久久久久亚洲中文| 国产久久成人| 欧美性爱三区二区| 国产在线视视频有精品| 99热99在线| 午夜天堂精品久久久久91| 久久久久人妻| 欧美78p| 久久av网| 东京热大香焦| 天堂性色| 日本性感人妻91| 午夜亚洲国产理论秋霞| 夜嗨影院| 最新欧洲欧美日本激情网站| 人妻在线臀日韩| 青娱乐手机日韩在线视频| 欧美中字不卡| 福利视频网站| se01国产在线视频| 99久久久久| 肥臀熟女福利视频一区二区| 色天欧美| 欧美色院| 亚洲天堂中文字| 亚洲最大无码中文字幕网站| 中文字幕二区日韩天堂| 淫乱图区 | 在线a亚洲视频播放在线| 操操操五月天婷婷丁香影院| 自拍偷拍 日韩无码| 这里只有精品视频在线| 成人热久久精品| 一区二区三区男人的天堂| 国产区日韩区在线观看| 乱伦3P视频| 炮色五月| 亚洲久久天堂| 又大又长又粗又爽又黄| 久久精品人体AV| 强奸熟女一区二区三区| 蜜臀视频网站| 黄色高清无码无码破解免费暗网 | 伊人热综合| www.av在线观看| 久久久穴999| 久久女人| 色婷婷五月综合激情中文字幕| 亚洲免费精品一区| 日日摸日日弄日日拍| 国产成人亚洲精品无码最新在线| 婷婷丁香在线| 九九九九九九九九九九九蜜桃| 天天日天天操天天射河南省| 一区二区娱乐网站| 97视频在线视频| 另类图片欧美激情综合| 婷婷丁香六月天| 97综合久第一页| 狠狠中文字幕| 91成人在线| 精品无码久久久久久久久果冻糖心 | 99欧美| 人人摸人人舔一区二区| 亚洲,日韩,欧美,成人播放 | 北约熟女超碰| 九九久久国产精品| 久久婷婷电影网| 五月婷丁香| 91亚洲最新在线| 国产三级日产三级韩国三级| 99re这里| 亚洲91在线播放影院| 97硬碰| 欧洲黄色网| 97精品国产97久久久久久户外免费| 99热欧美| 五月天精品| 久久久啊啊啊| 婷婷午夜| 亚洲97超碰| 色999人与兽| 国产捆绑一区| 九一屌逼| 国产精品麻豆免费视频| 成人久久精品| 成人5码视频| 中国熟女91| www欧美性爱| 青青草综合在线| 99在线观看| 青青草好吊色| 91九九九馒头| 浓厚中出中文字幕在线| 久久大陆| 婷婷亚洲五月***久久| 久久婷婷苹果| 嗯嗯啊啊视频在线看| 日本精品五区| 男人久久精品| 日本性爱少妇| 久久9精品| 亚洲精品一区二区三区新线路| 久久精品国产精品一区| 97色视频在线| 久草福利在线资源站| 伊人网在线点播| 91狠婷| 精品国产一区二区三区四区在线看| 操少妞在线视频| 色五月婷婷色| 国产亚洲精品一区二区三区| 欧日韩在线观看| 爱我干综合| 天天干人人看综合| 97超碰这里只有精品| 国产又爽又黄| 欧美真人抽搐一进一出gif| 色网1| 亚洲性综合9| 国产欧美精选激情视频| 超碰97久| 1204av韩国| www.夜夜| 伊人久久大香线蕉无码| 亚洲成人ab| AV99热18这里只有精品| 99精品在线播放| 一个国产在线综合网站| 97色欧洲| 青娱乐手机日韩在线视频| 1024日韩| 国产精品制服丝袜清纯唯美| 亚洲欧美电影| 色欲久久99精品久久| 久久久久久久 九九九九九九九| 蜜乳av一区二区| 91亚洲综合在线| 亚洲色图综合网| 福利风月五月天影院| 3p国产欧美99热| 久久久久久一日韩字幕无码| 亚洲97精品| 夜色97| 四虎免费看黄| 久无码| 婷婷综合在线| 日本性爱少妇| 久久九九视频九九视频| 小说区 图片区色 综合区| 色区97| 91老熟女91老女人| 91高跟美女在线播放| 精品一区二区3区| 婷婷久久网| 夜色AV无码手机在线影院| 人妻无一区二区三区| 啊啊啊啊网站| 亚洲天堂男| 国产美女高潮视频| julia ann久久| 老熟妇一区二区三区啪啪| 超碰97色色| 欧美日韩黄色片一区二区三区四区人与兽做爱| 夜夜操狠狠操| 五月丁香| 免费夜夜爱黄色视频毛片| 色色婷婷丁香| 99人人干| 婷婷五月色| 亚洲AV成人在线| 中文字幕在线免费观看视频| 亚洲操逼视频网站| 婷婷AV一区二区三区| 国产精品爽爽va在线观看98| 免费强奸av| 操我无码| 91超级碰碰碰| 欧美亚洲综合色| 久7色| 久久久工口| 亚洲男人的天堂一区二区| 欧美在线官网| 国产精品。| s片在线观看| 夜夜免费视频| 亚洲丝袜二区在线| 国语精品对白| 精品一级毛片在线观看| 久久丁香久草综合网| 人人操人人操人人人操| 太久视频| www.婷婷| 美女黄页| 99黄页网站| 国产精品白丝AV| 久久久久夜夜夜夜| 日韩免费福利在线观看| 3028国产精品| 九九Av| 91暧暧| 国产成人精品午夜福利| 深喉吞精| 人人看人人插| 亚洲欧洲国产综合av| 插入综合网| 欧美大战久久久伊人| 亚洲色图 91| 久久伊人最新网址视频| 四虎国产精品永久地址入口| 中文字幕一区二区三区视频播放| 大稥蕉免费视频这里只有精品| 精品视频专区| 精品人妻久久久久一区二区三区| 亚洲国产另类在线中文| 久久亚洲AV无码专区国产精品| 色啪网| 久草色悠悠在线视频| 亚洲 欧美 综合 91| 中文久久久| 成人aⅴ一区二区三区| 另类小说五月天| 麻豆一区在线| 综合第一页| 黄片免费看的| 99久久这里只有精品| 欧美第一页| 人妻一区二区三区四区视频| 国产精品免费美女视频| 99爱久久视频频| 午夜噜噜噜| 国产精品一区午夜福利| 欧美日日网| 校园春色美腿丝袜| 2018天天干在线视频| 久久久久久亚洲精品不卡人乳| 不卡一区视频| 被窝影院午夜看片无码| 婷婷色综合| 无码九九九九| 超碰国产精品久| 91丝袜美腿网站| 啊啊啊慢点| 国产午夜无码片在线观看影视| 欧洲乱码一区二区| 欧美性暴力| 六十路日本| 91伊人久久在线| 中文色综合| 日韩天堂av电影在线观看| 91 天天综合| 天天干天天狼在线视频| julia中文字幕在线观看| 国产精品不卡一区二区电影| 国产剧情一区在线观看| 久久老熟女| 欧美视频边做饭边橾| 99re99视频在线免费观看| 国产91影院| 十八禁网站在线| 亚洲天堂资源网| 婷婷色网| 亚洲高清综合网| 色色丁香| 亚州性色| 国产免费一区二区三区最新不卡| 亚洲九九视频| 黑人黄片在线免费观看| 91热色| 一区二区三区欧美激情| 日本黄色天堂| 成人性爱电影一区二区| 曰本特级特黄特色黄色A级网站高清在线免费看 | 精品国产无码中文| laoshunv91| 老熟妇一区二区三区…| 自拍亚洲综合| 91干熟女| 亚洲女人91| 日韩精品99999| 亚洲天堂男人天堂网| 超碰日本97美女人妻人人玩人人爱| 日韩精品午夜操呦呦不卡影院| 九九激情网| 九九热九九| 韩国女主播青草福利视频| 天天看夜夜看日日干| 五月天伊人| 人妻81p| 人妻人久久精品中文字幕| 亚洲欧美中文日韩视频中国语| 97K超碰在线| 97视频网站在线观看| 久久久久久久免费A片国产成a人亚洲精∨品无码 | 国产亚洲福利第一页丝袜| 久久中文色图| 404操逼福利视频| 日本幼女18+| 欧美专区第一页| 国产成人精品必看 | 欧美特大黄一级片片免费| 亚洲Av诱惑| 日本中文字幕高跟| 首页中文字幕中文字幕免费| 一区二区三区麻豆| 中文字幕乱碼在线| 国产综合永久精品日韩鬼片| 日韩大香蕉AV影片| 超碰97资源中文字幕| 日本女优在线视频福利| 久久东京热久久| 最新av在线| 99久热| 国产特级毛片AAAAAA高潮流水| 中文字幕日韩情色| 青青草日逼视频| 欧美性爱www免费版| 人人操人人摸超碰| 91N综合在线| 67914亚洲精品| 3028国产精品| 新亚洲无码| 日本高清一本二本免费不卡| 麻豆黄色五月天| a级成人毛片免费视频高清| 亚洲丝袜综合| 亚洲综合草草| 加勒比综合九九99视频在线播放| 亚洲国产无码精品首页久久久| 国产欧美在线观看免费观看| 91麻豆天美国产欧美高潮| 日韩美女久久一区二区三区| 国产精品一区二区 尿失禁| 毛片一区二区| 天天操妹子| 东北操逼| 麻豆精品A片免费观看| 92福利社视频| 久久精品亚洲成a人天堂| 玖玖爱在线视频免费观看| 精品国产乱码久久久久久久| 麻豆 亚洲 97| 91在线免费观看处女| 亚洲高清在线| 国内毛片国产专区二| 精品国产91内射久久| 亚洲精品97| 91观看 国产白丝| 天天天操天天天爱| 日韩少妇在线视频| 裸体女人草逼视频播放一区,二区,三区,四区,五区 | 日本 欧美 国产一区| 精品国产91av一区二区三区| 日韩肏逼视频| 91狠狠综合网| 人妻精品一区二区| 中国韩国明星一极片一区乱码毛片人妻熟女一区二区三区 | 国产精品大屁股999| 久久日本熟女精品一区| 91精品人妻一区二区-全集完整版免费正片国语-B02AV | 久久 精品| 亚洲熟女人妻中文字幕一区二区| 日本97久久| 欧美日韩97在线| 99热大香蕉伊在线| 中文字幕精品久久久久人妻红杏ⅰ| 久久av色| 久久久久久久久久黄色网 | 囯戸精品高潮呻吟旡码| 日本精品中文字幕视频| 东北少妇高潮zzzz| 狠狠操,使劲操| 翔田千里无码一区| 亚洲成人黄色在线观看| 高清无码久操视频| 亚洲无码太久| 亚洲色图欧美色图日韩色图| 国产乱色国产精品免费视| 亚洲,日韩,欧美,成人播放| 人妻啪| 亚洲国产婷婷在线播放| 国产极品99热在线播放69| 色综合av男人天堂| 精品亚洲国产成人AV制服丝袜| 欧亚在线视频| 激情小说五月天| 久久国产三区| 情色五月天久久久| 国产视频第2页| 四虎影视 亚洲无码| 午夜传煤十二区精品| 91丨人妻丨国产丨丝袜| 国产精品直播在线观看直播| 亚洲天天做日日做天天谢日日| 国产毛片久久久久久久| 丰满少妇乱子伦精品无| 秋霞视频一区二区| 蜜桃久久综合视频| 蜜伊人色综合97| 欧美亚洲宗合色性图| 福利天天都操| 久草加勒比一区在线| 岛国在线免费视频| 入口操逼网站| 日本熟妇一区二区三区| 欧美色997| 综合大香蕉美。| 97香蕉网| 韩国午夜理伦三级好看| 婷婷综合| 色欲色香天天天综合网www-亚洲综合国| 激情小说亚洲视频| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 欧美少妇一区二区三区| 东京热熟女亚洲视频网站| 午夜福利 成人 91| 一区二区三区美女超清| 国产精品无码论坛| 久久9精品视频| 亚洲综合伊人| 在线日韩精品一区二区三区| 日韩欧美国产一区二区三区四区| www.99视频| 91天美传媒在线观看| 99999国产精品| 加勒比在线视频一区二区三区| 天天干少妇| 秋霞福利网| 中文乱码字字幕在线第5页| 久久91精品国产9丨久久分亭| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 亚洲国产一级中文综合久久天堂在线免费观看| 亚洲伊人久久精品影院| 97色网| 色爱综合网| 98精品国产乱码久久久久久| 亚洲熟女综合一区二区| 美中日韩无码| 日本一区99| 上特色A在线| 熟女视频久久| 天综合网欧美| 91一区二区三区蜜桃| 美女黄色一级A视频| 日日玩天天干| 色婷婷激一区二区三区| 熟妇一区二区三区| 久久久久久久9| 日韩999| 伊人午夜福利视频| 国产精品人妻熟女aⅴ| 国产av青草| 亚洲天堂欧美| 久久久人妻| 欧美小说区视频区| 久草网站免费在线观看| 欧美日韩婷婷中文| 国产无码三级视频在线观看| 另类图片五月| 色欧洲| 精品女人999| 日日不卡av| 五月丁香综合激情| 亚洲天在线| 欧洲熟妇xxXx欧美老妇裸体| 麻豆黄站| 欧美日韩性爱操大逼| 色麻豆AV| 伊人久久大香线蕉无码| 男人天堂综合| 91午夜无码| 国产乱人妻精品入口| 日韩性爱毛片操骚逼| 久久国模av| 青椒国产97在线熟女| 亚洲天堂美臀在线| 色色香蕉| 久9综合在线| 99热超碰在线| 中文字幕乱亚洲美女精品一区| 五月天激情婷婷| 精品福利| 国产高清不卡视频| 91人妻精华帖| 大屁股国产在线视频| 亚洲av淫乱| 欧美精品激情| 成人精品电影| 人妻一区二区三区视频 | 性爱免费视频成人| 少妇色综合| 亚洲Av无码成人精品国产| 99精品综合久久久久五月天| 久久精品性| 日韩在线电影| 熟妇视频一区二区三区在线观看| 日韩免费三级黄片电影| 亚洲日韩XXX| 五月丁香激情综合| 国产精品操| 国产青视频| 人人考人人摸人人干| 国产一二三在线视频五十路| 中文字幕丝袜美腿| 可以在线观看的黄色网址| 日本97久久| 亚洲熟妇乱女区二区三区| 国产精品蜜臀久久久久无码AV| 狠操91,com| www.色五月| 亚洲AV无码乱码| 99日视频在线免费| 夜夜夜久久| 无码免费精品高清| 欧美日韩传媒| 久久夜夜夜| 日韩久久三区| 萌白酱自拍视频| 精品九九九九九九| 欧美激情久久久久| 中文字幕五区| 免费看黄视频亚洲网站| 亚洲成人ab| 天海翼久久| 免费看美国人人爽,人人操 | 成人青青草原伊人| 久久久av爱| 色播丁香| 日本丝袜人妻内射| 麻豆久久一区二区三区| 舔舔啊| 啊啊啊97视频| 日韩乱码av| 国产 三级自拍| 天天懆天天日| 色欧美综合| 中出20p| 干B| 大香蕉手机在线视频| 亚洲熟女中文字幕在线| 伦激情人妻另类人妻| 色欧美综合| 亚洲图片视频小说| 日韩美女高潮喷水视频| 久久久精品视频免费观看| 九九热精品| 亚洲一级特黄大片在线播放91| 欧美在线91| 天天综合网~91| 亚洲凸凹超碰成人| 天色综合网| 久久久久久亚洲精品不卡人乳| 顶级丝袜熟女一区二区三区| 亚洲国产一级黄色视频| 久热热| 欧美最婬乱婬爆婬牲视频| 精品九九淫乱男| 岛国人妻少妇av在线观看| 久久欧美按摩999| 99久久久| 91站街按摩店老熟女熟女| 影音先锋视频在线| 日韩99精品视频综合区| 污色区网站| 国产农村妇女精品| 天堂性色| 日曰骚久久精品| 午夜九九| 婷婷探花久久精品一区| 91九九九吃| 大香蕉色欲AV| 精品国产乱码久久久兰草影视| 久久精品72| 九九成人精品| 91总综合网| 无码久| 一区二区亚州激情久婷婷欧美| av一区二区三区四区五区久草臀| 欧美日韩精品国产91| 超97在线精品视频| 第45页一区二区| 亚洲第一免费视频| 亚洲综合20p| 亚洲天天操| 久久中出| 思思久热在线精品66| 一区二区乱码福利| 青春草莓视频在线观看网址| 电家庭影院午夜69久久夜色精品国产69乱| 91岛国动作片| 九九AV| 欧美日本成人一区二区| 国产又粗又大硬免费色网视频| 欧美真人抽搐一进一出gif| 国产av激情无码久久天堂| 一级aaaaa欧美中文字幕录像片|