{"id":22,"date":"2021-12-07T22:18:26","date_gmt":"2021-12-07T14:18:26","guid":{"rendered":"http:\/\/www.heene.tech\/?p=22"},"modified":"2021-12-07T22:18:26","modified_gmt":"2021-12-07T14:18:26","slug":"%e7%89%a9%e8%81%94%e7%bd%91%e6%99%ba%e8%83%bd%e8%a7%86%e9%a2%91%e5%b0%8f%e8%bd%a6","status":"publish","type":"post","link":"https:\/\/blog.heene.tech\/index.php\/2021\/12\/07\/%e7%89%a9%e8%81%94%e7%bd%91%e6%99%ba%e8%83%bd%e8%a7%86%e9%a2%91%e5%b0%8f%e8%bd%a6\/","title":{"rendered":"\u7269\u8054\u7f51\u667a\u80fd\u89c6\u9891\u5c0f\u8f66"},"content":{"rendered":"\n<h1 class=\"wp-block-heading\">\u5199\u5728\u524d\u9762<\/h1>\n\n\n\n<p>\u672c\u9879\u76ee\u5386\u65f6\u4e00\u4e2a\u591a\u6708\uff0c\u662f\u6211\u7684\u7b2c\u4e00\u4e2a\u57fa\u4e8e\u673a\u5668\u89c6\u89c9\u68c0\u6d4b\u7684\u9879\u76ee\u4e5f\u662f\u6211\u7b2c\u4e00\u4e2a\u5d4c\u5165\u5f0f\u9879\u76ee\uff0c\u5728\u5236\u4f5c\u8fd9\u4e2a\u9879\u76ee\u8fc7\u7a0b\u4e2d\u6211\u9047\u5230\u4e86\u5f88\u591a\u56f0\u96be\uff0c\u66fe\u7ecf\u4e00\u5ea6\u60f3\u8fc7\u653e\u5f03\uff0c\u4f46\u662f\u6700\u540e\u8fd8\u662f\u575a\u6301\u4e0b\u6765\u4e86\uff0c\u611f\u89c9\u5bf9\u4e8e\u6240\u5b66\u7684\u77e5\u8bc6\u6709\u4e86\u66f4\u6df1\u7684\u7406\u89e3\uff0c\u611f\u89c9\u6210\u957f\u4e86\u8bb8\u591a\u3002<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\u529f\u80fd\u9700\u6c42<\/h1>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/image.jpg'><img class=\"lazyload lazyload-style-8\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1920\" height=\"1547\" data-original=\"http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/image.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-28\"  sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><\/div><figcaption>\u5c0f\u8f66\u5f00\u53d1\u8111\u56fe<\/figcaption><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\">\u786c\u4ef6\u8bbe\u8ba1<\/h1>\n\n\n\n<div class=\"wp-block-argon-alert alert\" style=\"background-color:#7889e8\"><span class=\"alert-inner--icon\"><i class=\"fa fa-info-circle\"><\/i><\/span><span class=\"alert-inner--text\">\u4ee5\u4e0b\u662f\u5236\u4f5c\u8fd9\u8f86\u5c0f\u8f66\u9700\u8981\u7528\u5230\u7684\u6240\u6709\u96f6\u4ef6\uff0c\u5982\u679c\u7ec6\u5fc3\u5bfb\u627e\u5e94\u8be5\u53ef\u4ee5\u627e\u5230\u66f4\u52a0\u4fbf\u5b9c\u7684\uff0c\u8fd9\u91cc\u7684\u4ef7\u683c\u4ec5\u4f5c\u4e3a\u53c2\u8003<\/span><\/div>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><thead><tr><th>\u540d\u5b57<\/th><th>\u4ef7\u683c<\/th><th>\u7f51\u5740<\/th><\/tr><\/thead><tbody><tr><td>Ai-Thinker\u5b89\u4fe1\u53ef ESP32-CAM<\/td><td>36.5<\/td><td><a href=\"https:\/\/detail.tmall.com\/item.htm?id=620304307591\">https:\/\/detail.tmall.com\/item.htm?id=620304307591<\/a><\/td><\/tr><tr><td>STC\u4e0b\u8f7d\u5668CP2102<\/td><td>7.9<\/td><td><a href=\"https:\/\/item.taobao.com\/item.htm?spm=a1z09.2.0.0.14cd2e8d2dXj5N&amp;id=522573365635&amp;_u=42af8lfjbfd9\">https:\/\/item.taobao.com\/item.htm?spm=a1z09.2.0.0.14cd2e8d2dXj5N&amp;id=522573365635&amp;_u=42af8lfjbfd9<\/a><\/td><\/tr><tr><td>\u667a\u80fd\u8f66\u96f6\u4ef6\u5305 M3 \u94dc\u67f1+\u87ba\u6bcd<\/td><td>13<\/td><td><a href=\"https:\/\/item.taobao.com\/item.htm?spm=a1z09.2.0.0.14cd2e8d2dXj5N&amp;id=525712240039&amp;_u=42af8lfj1022\">https:\/\/item.taobao.com\/item.htm?spm=a1z09.2.0.0.14cd2e8d2dXj5N&amp;id=525712240039&amp;_u=42af8lfj1022<\/a><\/td><\/tr><tr><td>\u667a\u80fd\u5c0f\u8f66\u5e95\u76d8(\u5355\u5c424WD)<\/td><td>21.6<\/td><td><a href=\"https:\/\/item.taobao.com\/item.htm?spm=a1z09.2.0.0.14cd2e8d2dXj5N&amp;id=40240470673&amp;_u=42af8lfj5a9e\">https:\/\/item.taobao.com\/item.htm?spm=a1z09.2.0.0.14cd2e8d2dXj5N&amp;id=40240470673&amp;_u=42af8lfj5a9e<\/a><\/td><\/tr><tr><td>L298N\u7535\u673a\u9a71\u52a8\u677fx2<\/td><td>4.92*2<\/td><td><a href=\"https:\/\/item.taobao.com\/item.htm?spm=a1z09.2.0.0.14cd2e8d2dXj5N&amp;id=40142079797&amp;_u=42af8lfjfdd5\">https:\/\/item.taobao.com\/item.htm?spm=a1z09.2.0.0.14cd2e8d2dXj5N&amp;id=40142079797&amp;_u=42af8lfjfdd5<\/a><\/td><\/tr><tr><td>LM2596 DC-DC\u53ef\u8c03\u964d\u538b\u6a21\u5757<\/td><td>5.01<\/td><td><a href=\"https:\/\/item.taobao.com\/item.htm?spm=a1z09.2.0.0.14cd2e8d2dXj5N&amp;id=39838607222&amp;_u=42af8lfj45ed\">https:\/\/item.taobao.com\/item.htm?spm=a1z09.2.0.0.14cd2e8d2dXj5N&amp;id=39838607222&amp;_u=42af8lfj45ed<\/a><\/td><\/tr><tr><td>\u4f3a\u670d\u8235\u673a SG90<\/td><td>5.2<\/td><td><a href=\"https:\/\/item.taobao.com\/item.htm?spm=a1z09.2.0.0.14cd2e8d2dXj5N&amp;id=584046299400&amp;_u=42af8lfj4d0d\">https:\/\/item.taobao.com\/item.htm?spm=a1z09.2.0.0.14cd2e8d2dXj5N&amp;id=584046299400&amp;_u=42af8lfj4d0d<\/a><\/td><\/tr><tr><td>18650\u9502\u7535\u6c6012V<\/td><td>30<\/td><td><a href=\"https:\/\/item.taobao.com\/item.htm?spm=a1z09.2.0.0.14cd2e8d2dXj5N&amp;id=573013194357&amp;_u=42af8lfjf66c\">https:\/\/item.taobao.com\/item.htm?spm=a1z09.2.0.0.14cd2e8d2dXj5N&amp;id=573013194357&amp;_u=42af8lfjf66c<\/a><\/td><\/tr><\/tbody><\/table><figcaption>\u9700\u8981\u7528\u5230\u7684\u96f6\u4ef6<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">ESP32\u4ecb\u7ecd<\/h2>\n\n\n\n<p>ESP32\u662fEspressif\u4e50\u946b\u4fe1\u606f\u79d1\u6280\u63a8\u51fa\u7684\u4e00\u5757WiFi\u82af\u7247\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>\u62e5\u670940nm\u5de5\u827a\u3001\u53cc\u683832\u4f4dMCU\u30012.4GHz\u53cc\u6a21<strong><span class=\"has-inline-color has-luminous-vivid-amber-color\">Wi-Fi<\/span><\/strong>\u548c<strong><span class=\"has-inline-color has-luminous-vivid-amber-color\">\u84dd\u7259<\/span><\/strong>\u82af\u7247\u3001\u4e3b\u9891\u9ad8\u8fbe<strong><span class=\"has-inline-color has-luminous-vivid-amber-color\">240MHz<\/span><\/strong>,\u8ba1\u7b97\u80fd\u529b\u53ef\u8fbe600DMIPS\u3002\u200b<\/li><li>\u6db5\u76d6\u7cbe\u7ec6\u5206\u8fa8\u65f6\u949f\u95e8\u63a7\u3001\u7701\u7535\u6a21\u5f0f\u548c\u52a8\u6001\u7535\u538b\u8c03\u6574\u7b49\u7279\u5f81\u3002<\/li><li>\u5b83\u96c6\u6210\u4e86\u5929\u7ebf\u548c\u5c04\u9891\u5df4\u4f26\uff0c\u529f\u7387\u653e\u5927\u5668\uff0c\u4f4e\u566a\u58f0\u653e\u5927\u5668\uff0c\u6ee4\u6ce2\u5668\u548c\u7535\u6e90\u7ba1\u7406\u6a21\u5757\u7b49\u5143\u5668\u4ef6\uff0c\u6027\u80fd\u7a33\u5b9a\uff0c\u6613\u4e8e\u5236\u9020\uff0c\u5de5\u4f5c\u6e29\u5ea6\u8303\u56f4\u4ece-40\u2103\u5230125\u2103<\/li><li>\u652f\u6301\u591a\u79cd\u901a\u4fe1\u534f\u8bae\uff0c\u5982\uff1aI2C. I2S. SPI. UART. CA<\/li><li>\u591a\u79cd\u8c03\u8282\u7ba1\u7406\u6a21\u5f0f\uff1aActive\u6a21\u5f0f\u3001Modem-sleep\u6a21\u5f0f\u3001Light-sleep\u6a21\u5f0f\u3001Deep-sleep\u6a21\u5f0f\u3001Hibernation\u6a21\u5f0f\u3002\u53ef\u6839\u636e\u4e0d\u540c\u9700\u6c42\uff0c\u8c03\u8282\u6240\u9700\u65b9\u6848\u3002<\/li><li>\u6027\u4ef7\u6bd4\u9ad8\uff0c\u4f53\u79ef\u5c0f\u3002\u65b9\u4fbf\u5d4c\u5165\u5230\u4efb\u4f55\u4ea7\u54c1\uff0c\u529f\u80fd\u5f3a\u5927\uff0c\u652f\u6301LWIP\u534f\u8bae\uff0cfreertos\uff0c\u652f\u6301\u4e09\u79cd\u6a21\u5f0f\uff1a<span class=\"has-inline-color has-luminous-vivid-amber-color\">AP,STA,AP+STA \u5171\u5b58<\/span>\u6a21<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/image.png'><img class=\"lazyload lazyload-style-8\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" data-original=\"http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/image.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-67\" width=\"496\" height=\"425\"  sizes=\"auto, (max-width: 496px) 100vw, 496px\" \/><\/div><\/figure>\n\n\n\n<div class=\"wp-block-argon-alert alert\" style=\"background-color:#7889e8\"><span class=\"alert-inner--icon\"><i class=\"fa fa-info-circle\"><\/i><\/span><span class=\"alert-inner--text\">esp32\u4f7f\u7528\u7684<strong>Xtensa<\/strong>\u00ae 32\u4f4dLX7\u5904\u7406\u5668\u662f\u4e00\u4e2a\u53cc\u6838\u7684\u5904\u7406\u5668\uff0c\u540e\u9762\u6211\u4f1a\u4f7f\u7528freeRTOS\u8c03\u5ea6\u53cc\u6838\u5b9e\u73b0\u591a\u7ebf\u7a0b\u7684\u529f\u80fd\u3002\u200b<\/span><\/div>\n\n\n\n<div class=\"wp-block-media-text alignwide is-stacked-on-mobile\" style=\"grid-template-columns:51% auto\"><figure class=\"wp-block-media-text__media\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/image-1-876x1024.png'><img class=\"lazyload lazyload-style-8\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"876\" height=\"1024\" data-original=\"http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/image-1-876x1024.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-68 size-full\"  sizes=\"auto, (max-width: 876px) 100vw, 876px\" \/><\/div><\/figure><div class=\"wp-block-media-text__content\">\n<p class=\"has-normal-font-size\">esp32\u4f7f\u7528\u7684<strong>Xtensa<\/strong>\u00ae 32\u4f4dLX7\u5904\u7406\u5668\u662f\u4e00\u4e2a\u53cc\u6838\u7684\u5904\u7406\u5668\uff0c\u540e\u9762\u6211\u4f1a\u4f7f\u7528freeRTOS\u8c03\u5ea6\u53cc\u6838\u5b9e\u73b0\u591a\u7ebf\u7a0b\u7684\u529f\u80fd\u3002\u200b<\/p>\n\n\n\n<p>\u7814\u53d1esp32\u7684\u516c\u53f8\u4e50\u946b\u63d0\u4f9b\u4e86\u4e24\u79cdesp32\u5f00\u53d1\u73af\u5883\uff0c\u5206\u522b\u662f<a href=\"https:\/\/github.com\/espressif\/esp-idf\" data-type=\"URL\" data-id=\"https:\/\/github.com\/espressif\/esp-idf\" target=\"_blank\" rel=\"noreferrer noopener\">esp-idf<\/a>\u548c<a href=\"https:\/\/github.com\/espressif\/arduino-esp32\" target=\"_blank\" rel=\"noreferrer noopener\">arduino-<em>esp32<\/em><\/a>\u4e24\u79cd\u5f00\u53d1\u73af\u5883\u3002\u4f7f\u7528espif\u5f00\u53d1\u5c06\u83b7\u5f97\u5bf9esp32\u66f4\u52a0\u5168\u9762\u7684\u63a7\u5236\uff0c\u4e0d\u8fc7\u7f3a\u70b9\u662f\u73af\u5883\u914d\u7f6e\u8d77\u6765\u590d\u6742\uff08\u9700\u8981\u914d\u7f6eLinux\u73af\u5883\uff09\uff0c\u800c\u4e14\u4ee3\u7801\u91cf\u5927\uff0c\u5f00\u53d1\u6548\u7387\u4e0d\u9ad8\u3002\u4f7f\u7528esp32\u5c01\u88c5\u7684Arduino core\u5c06\u80fd\u63d0\u9ad8\u5f00\u53d1\u6548\u7387\uff0c\u6240\u4ee5\u6700\u540e\u6211\u4f7f\u7528\u7684\u662f\u57fa\u4e8earduino\u7684\u5f00\u53d1\u6a21\u5f0f\u3002\u200b<\/p>\n<\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">ESP32-CAM \u4ecb\u7ecd<\/h2>\n\n\n\n<p>esp32-cam\u662f\u5b89\u4fe1\u53ef\u79d1\u6280(<a rel=\"noreferrer noopener\" href=\"https:\/\/www.ai-thinker.com\/\" data-type=\"URL\" data-id=\"https:\/\/www.ai-thinker.com\/\" target=\"_blank\">ai-thinker<\/a>)\u5f00\u53d1\u7684\u4e00\u6b3e\u57fa\u4e8eesp32\u7684\u6444\u50cf\u5934\u6a21\u7ec4\u200b\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/image-6-1024x502.png'><img class=\"lazyload lazyload-style-8\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" data-original=\"http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/image-6-1024x502.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-78\" width=\"841\" height=\"411\"  sizes=\"auto, (max-width: 841px) 100vw, 841px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/image-8-1024x740.png'><img class=\"lazyload lazyload-style-8\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"740\" data-original=\"http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/image-8-1024x740.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-80\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u8fd9\u4e2a\u6a21\u5757\u4f7f\u7528\u7684\u6444\u50cf\u5934\u662f<a rel=\"noreferrer noopener\" href=\"https:\/\/www.arducam.com\/ov2640\/\" data-type=\"URL\" data-id=\"https:\/\/www.arducam.com\/ov2640\/\" target=\"_blank\">OV2640<\/a>\uff0cOV2640\u662f\u4e00\u6b3e200\u4e07\u50cf\u7d20\u7684\u6444\u50cf\u5934\u6a21\u5757\uff0c\u914d\u5408\u4e0aesp32\u5b98\u65b9\u7684<a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/espressif\/arduino-esp32\/tree\/master\/libraries\/WebServer\" data-type=\"URL\" data-id=\"https:\/\/github.com\/espressif\/arduino-esp32\/tree\/master\/libraries\/WebServer\" target=\"_blank\">webserver<\/a>WebServer\u6848\u4f8b\u53ef\u4ee5\u8f7b\u677e\u5b9e\u73b0\u5c40\u57df\u7f51\u7684\u89c6\u9891\u4f20\u8f93\uff0c\u4f46\u662f\u5728\u9ad8\u50cf\u7d20\u4e0b\u5e27\u7387\u611f\u4eba\uff08\u6211\u67e5\u770b\u4e86\u4e00\u4e0bOV2640\u7684API\uff0c\u5b83\u662f\u53ef\u4ee5\u6700\u9ad8\u652f\u6301\u768460fps\u7684\uff0c\u7406\u8bba\u4e0a\u5728SVGA(800*600)\u5206\u8fa8\u7387\u4e0b\u4e5f\u670930\u5e27\u7684\u901f\u7387\uff09\uff0c\u5728SVGA\u4e0b\u53ea\u670920\u5e27\u5de6\u53f3\uff0c\u800c\u4e14\u4e0d\u80fd\u901a\u8fc7<strong>max_framerate<\/strong>\u6765\u8c03\u8282\u5e27\u7387\uff0c\u5e94\u8be5\u662f\u5b98\u65b9\u4e3a\u4e86\u9650\u5236\u5b83\u7684\u53d1\u70ed\u800c\u505a\u4e86\u9501\u5e27\u3002\u200b<\/p>\n\n\n\n<div class=\"wp-block-argon-admonition admonition shadow-sm\" style=\"border-left-color:#fc7c5f\"><div class=\"admonition-title\" style=\"background-color:#fc7c5f33\"><span>\u6ce8\u610f<\/span><\/div><div class=\"admonition-body\">\u4f7f\u7528\u6444\u50cf\u5934\u6a21\u5757\u7684\u65f6\u5019\u4e00\u5b9a\u8981\u63a5\u4e0a<strong>5V 2A<\/strong>\u7684\u7535\u6e90\uff0c\u5426\u5219\u4f20\u8f93\u7684\u89c6\u9891\u5c06\u4f1a\u6709<strong>\u6c34\u7eb9<\/strong>\u200b <\/div><\/div>\n\n\n\n<p>\u4f7f\u7528\u7684\u5b98\u65b9\u7684webserver\u5386\u7a0b\uff0c\u53d1\u73b0esp32CAM\u5185\u90e8\u5176\u5b9e\u70e7\u5f55\u4e86\u4e00\u4e2a\u975e\u5e38tiny\u7684\u4eba\u8138\u8bc6\u522b\u7f51\u7edc\uff0c\u4f46\u662f\u5176\u53ea\u80fd\u5728\u8d85\u4f4e\u5206\u8fa8\u7387\u4e0b\u8fd0\u884c\uff0c\u800c\u4e14\u5e27\u7387\u6781\u4f4e\uff0c\u6ca1\u4ec0\u4e48\u7528\u3002\u5b98\u65b9\u8ba9\u5b83\u51fa\u73b0\u5728\u4e00\u4e2a\u5c0f\u5355\u7247\u673a\u4e0a\u6211\u611f\u89c9\u66f4\u591a\u7684\u662f\u4e00\u79cd\u8425\u9500\u624b\u6bb5\uff0c\u6839\u672c\u4e0d\u80fd\u5728\u5b9e\u9645\u9879\u76ee\u4e2d\u4f7f\u7528\u3002<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\u786c\u4ef6\u548c\u7535\u8def\u642d\u5efa<\/h1>\n\n\n\n<p>\u642d\u5efa\uff08\u5176\u5b9e\u5c31\u662f\u8fde\u7ebf\uff09\u7535\u8def\u53ea\u9700\u8981\u628a\u5404\u4e2a\u6a21\u5757\u7528\u675c\u90a6\u7ebf\u8fde\u8d77\u6765\u5373\u53ef\u3002\u5728\u8fd9\u4e4b\u524d\u6211\u8fd8\u8bbe\u8ba1\u4e86\u4e00\u4e2aPCB\u677f\u5b50\uff0c\u96c6\u6210\u4e86\u81ea\u52a8\u4e0b\u8f7d\u7535\u8def\uff0c\u964d\u538b\u7535\u8def\uff0c\u7535\u673a\u9a71\u52a8\u7535\u8def\u3002\u4f46\u662f\u81ea\u5df1\u53bb\u6253\u51fa\u6765\u81ea\u5df1\u8d34\u7247\u6bd4\u76f4\u63a5\u4e70\u96f6\u4ef6\u9ebb\u70e6\u591a\u4e86\uff0c\u6240\u4ee5\u8fd9\u4e2aPCB\u677f\u5b50\u5c31\u5f53\u505a\u7ec3\u4e60\u597d\u4e86\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u63a5\u7ebf<\/h2>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p><span class=\"has-inline-color has-luminous-vivid-amber-color\"><strong>TXD<\/strong>\uff1a<\/span>\u53d1\u9001\u7aef\uff0c\u4e00\u822c\u8868\u793a\u4e3a\u81ea\u5df1\u7684\u53d1\u9001\u7aef\uff0c\u6b63\u5e38\u901a\u4fe1\u5fc5\u987b\u63a5\u53e6\u4e00\u4e2a\u8bbe\u5907\u7684RXD\u3002 <\/p><p><span class=\"has-inline-color has-luminous-vivid-amber-color\"><strong>RXD<\/strong>\uff1a<\/span>\u63a5\u6536\u7aef\uff0c\u4e00\u822c\u8868\u793a\u4e3a\u81ea\u5df1\u7684\u63a5\u6536\u7aef\uff0c\u6b63\u5e38\u901a\u4fe1\u5fc5\u987b\u63a5\u53e6\u4e00\u4e2a\u8bbe\u5907\u7684TXD\u3002<\/p><p><strong><span class=\"has-inline-color has-luminous-vivid-orange-color\">\u6b63\u5e38\u901a\u4fe1\u65f6\u5019\u81ea\u8eab\u7684TXD\u6c38\u8fdc\u63a5\u8bbe\u5907\u7684RXD\uff01<\/span><\/strong>\u200b<\/p><\/blockquote>\n\n\n\n<figure class=\"wp-block-gallery columns-3 is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\"><ul class=\"blocks-gallery-grid\"><li class=\"blocks-gallery-item\"><figure><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/image-10-1024x954.png'><img class=\"lazyload lazyload-style-8\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"954\" data-original=\"http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/image-10-1024x954.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" data-id=\"84\" data-full-url=\"http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/image-10.png\" data-original=\"http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/image-10.png\" data-link=\"https:\/\/www.heene.tech\/index.php\/2021\/12\/07\/%e7%89%a9%e8%81%94%e7%bd%91%e6%99%ba%e8%83%bd%e8%a7%86%e9%a2%91%e5%b0%8f%e8%bd%a6\/image-10\/\" class=\"wp-image-84\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/\u4e91\u53f01-20211204152159-9ln8dy1-1024x864.jpg'><img class=\"lazyload lazyload-style-8\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"864\" data-original=\"http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/\u4e91\u53f01-20211204152159-9ln8dy1-1024x864.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" data-id=\"85\" data-full-url=\"http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/\u4e91\u53f01-20211204152159-9ln8dy1.jpg\" data-link=\"https:\/\/www.heene.tech\/index.php\/2021\/12\/07\/%e7%89%a9%e8%81%94%e7%bd%91%e6%99%ba%e8%83%bd%e8%a7%86%e9%a2%91%e5%b0%8f%e8%bd%a6\/%e4%ba%91%e5%8f%b01-20211204152159-9ln8dy1\/\" class=\"wp-image-85\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.heene.tech\/wp-content\/uploads\/2021\/12\/IMG_20211120_123252-20211204152341-nfhpgpo-1024x461.jpg'><img class=\"lazyload lazyload-style-8\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/www.heene.tech\/wp-content\/uploads\/2021\/12\/IMG_20211120_123252-20211204152341-nfhpgpo-1024x461.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" data-id=\"87\" data-full-url=\"http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/IMG_20211120_123252-20211204152341-nfhpgpo-scaled-1.jpg\" data-link=\"https:\/\/www.heene.tech\/index.php\/2021\/12\/07\/%e7%89%a9%e8%81%94%e7%bd%91%e6%99%ba%e8%83%bd%e8%a7%86%e9%a2%91%e5%b0%8f%e8%bd%a6\/img_20211120_123252-20211204152341-nfhpgpo\/\" class=\"wp-image-87\"\/><\/div><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.heene.tech\/wp-content\/uploads\/2021\/12\/IMG_20211120_123224-20211204152324-d27dl5g-1024x461.jpg'><img class=\"lazyload lazyload-style-8\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/www.heene.tech\/wp-content\/uploads\/2021\/12\/IMG_20211120_123224-20211204152324-d27dl5g-1024x461.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" data-id=\"86\" data-full-url=\"http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/IMG_20211120_123224-20211204152324-d27dl5g-scaled-1.jpg\" data-link=\"https:\/\/www.heene.tech\/index.php\/2021\/12\/07\/%e7%89%a9%e8%81%94%e7%bd%91%e6%99%ba%e8%83%bd%e8%a7%86%e9%a2%91%e5%b0%8f%e8%bd%a6\/img_20211120_123224-20211204152324-d27dl5g\/\" class=\"wp-image-86\"\/><\/div><\/figure><\/li><\/ul><\/figure>\n\n\n\n<div class=\"wp-block-argon-alert alert\" style=\"background-color:#7889e8\"><span class=\"alert-inner--icon\"><i class=\"fa fa-info-circle\"><\/i><\/span><span class=\"alert-inner--text\">\u8981\u4f7fesp32\u8fdb\u5165\u4e0b\u8f7d\u6a21\u5f0f\uff0c\u5fc5\u987b\u8981\u5c06<strong>IO0<\/strong>\u548c<strong>GND<\/strong>\u63a5\u4e0a\uff08IO0\u63a5\u4f4e\u7535\u5e73\uff09\uff0c\u7136\u540e\u6309\u4e0b<strong>RST<\/strong>\u952e\u5373\u53ef\u8fdb\u5165\u4e0b\u8f7d\u6a21\u5f0f\u200b<\/span><\/div>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/image-9-1024x434.png'><img class=\"lazyload lazyload-style-8\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"434\" data-original=\"http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/image-9-1024x434.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-83\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><figcaption>\u63a5\u7ebf\u793a\u610f\u56fe<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">\u6444\u50cf\u5934\u5c0f\u4e91\u53f0<\/h2>\n\n\n\n<p>\u4e3a\u4e86\u80fd\u8ba9\u6444\u50cf\u5934\u65cb\u8f6c\uff0c\u6211\u4f7f\u7528solidworks\u5236\u4f5c\u4e86\u4e00\u4e2a\u5c0f\u4e91\u53f0\uff0c\u4e4b\u540e3D\u6253\u5370\u51fa\u6765\u5b89\u4e0a\u53bb\u3002<br><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u6709\u5173SG90 \u4e0e L298N\u7684\u8d44\u6599<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">SG90<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li>\u5c3a\u5bf8\uff1a21.5mmX11.8mmX22.7mm<\/li><li>\u91cd\u91cf\uff1a9\u514b \uff081kg=1\u516c\u65a4=2\u65a4\uff09<\/li><li>\u65e0\u8d1f\u8f7d\u901f\u5ea6\uff1a0.12\u79d2\/60\u5ea6(4.8V) 0.002s\/\u5ea6<\/li><li>\u5835\u8f6c\u626d\u77e9\uff1a1.2-1.4\u516c\u65a4\/\u5398\u7c73(4.8V)<\/li><li>\u4f7f\u7528\u6e29\u5ea6\uff1a-30~~+60\u6444\u6c0f\u5ea6<\/li><li>\u6b7b\u533a\u8bbe\u5b9a\uff1a7us (7MHZ)<\/li><li>\u5de5\u4f5c\u7535\u538b\uff1a4.8V-6V<\/li><li>\u4f4d\u7f6e\u7b49\u7ea7:1024\u7ea7<\/li><li>\u8109\u51b2\u63a7\u5236\u7cbe\u5ea6\u4e3a<strong>2us<\/strong>\u200b<\/li><\/ul>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>\u505a\u5230\u540e\u671f\u624d\u53d1\u73b0\u6211\u8fd9\u4e2a\u9879\u76ee\u4f7f\u7528SG90\u63a7\u5236\u89d2\u5ea6\u6839\u672c\u4e0d\u884c\uff0c\u5b9e\u9645\u63a7\u5236\u7cbe\u5ea6\u5728<strong><span class=\"has-inline-color has-luminous-vivid-orange-color\">7\u00b0<\/span><\/strong>\u5de6\u53f3\uff0c\u5bf9\u4e8e\u6211\u8fd9\u4e2a\u9879\u76ee\u6765\u8bf4\u662f\u4e0d\u884c\u7684\uff0c\u8fd9\u91cc\u63a8\u8350\u4f7f\u7528\u66f4\u9ad8\u7cbe\u5ea6\u7684\u6b65\u8fdb\u7535\u673a\u6216\u8005\u4f3a\u670d\u7535\u673a\u200b<\/p><\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>SG90\u901a\u8fc7PWM\u63a7\u5236\u65cb\u8f6c\u89d2\u5ea6\uff0c\u8235\u673a\u9700\u8981\u4e00\u4e2a20ms\u5468\u671f\u7684\u8109\u51b2\uff0c\u4ee50.5ms\u52302.5ms\u7684\u9ad8\u7535\u5e73\u6765\u63a7\u5236\u8235\u673a\u65cb\u8f6c\u7684\u89d2\u5ea6<\/p><cite><span class=\"has-inline-color has-vivid-cyan-blue-color\">0.5ms&#8212;&#8212;&#8212;&#8212;-0\u5ea6\uff1b<br>1.0ms&#8212;&#8212;&#8212;&#8212;45\u5ea6\uff1b<br>1.5ms&#8212;&#8212;&#8212;&#8212;90\u5ea6\uff1b<br>2.0ms&#8212;&#8212;&#8212;&#8211;135\u5ea6\uff1b<br>2.5ms&#8212;&#8212;&#8212;&#8211;180\u5ea6\uff1b<\/span><\/cite><\/blockquote>\n\n\n\n<p>\u6211\u7684\u63a7\u5236\u7b97\u6cd5\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>int calculatePWM(int degree)\n{\n    \/\/0-180\u5ea6\n    \/\/20ms\u5468\u671f\uff0c\u9ad8\u7535\u5e730.5-2.5ms\uff0c\u5bf9\u5e940-180\u5ea6\u89d2\u5ea6\n  const float deadZone = 6.4;\/\/\u5bf9\u5e940.5ms\uff080.5ms\/(20ms\/256\uff09)\n  const float max = 32;\/\/\u5bf9\u5e942.5ms\n  if(degree &lt; 0){degree = 0;}\n  if(degree &gt; 180){degree = 180;}\n  return(int)((max-de\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">L298N<\/h3>\n\n\n\n<p><a href=\"https:\/\/blog.csdn.net\/ling3ye\/article\/details\/51351115?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163859832516780366588023%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&amp;request_id=163859832516780366588023&amp;biz_id=0&amp;utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-2-51351115.first_rank_v2_pc_rank_v29&amp;utm_term=l298n&amp;spm=1018.2226.3001.4187\" data-type=\"URL\" data-id=\"https:\/\/blog.csdn.net\/ling3ye\/article\/details\/51351115?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163859832516780366588023%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&amp;request_id=163859832516780366588023&amp;biz_id=0&amp;utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-2-51351115.first_rank_v2_pc_rank_v29&amp;utm_term=l298n&amp;spm=1018.2226.3001.4187\" target=\"_blank\" rel=\"noreferrer noopener\">\u4f7f\u7528Arduino\u4e0e L298N (\u7ea2\u677f) \u9a71\u52a8\u76f4\u6d41\u7535\u673a<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/image-11.png'><img class=\"lazyload lazyload-style-8\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"961\" height=\"605\" data-original=\"http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/image-11.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-97\"  sizes=\"auto, (max-width: 961px) 100vw, 961px\" \/><\/div><\/figure>\n\n\n\n<p>\u63a7\u5236\u7535\u673a\u65f6\u7684\u903b\u8f91\u56fe\ud83e\uddd0<\/p>\n\n\n\n<figure class=\"wp-block-image\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/img-blog.csdnimg.cn\/20210130120027898.png?x-oss-process=image\/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2Rpbmd4aWFuZzE5ODc4MjQ=,size_16,color_FFFFFF,t_70'><img class=\"lazyload lazyload-style-8\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/img-blog.csdnimg.cn\/20210130120027898.png?x-oss-process=image\/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2Rpbmd4aWFuZzE5ODc4MjQ=,size_16,color_FFFFFF,t_70\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\"\/><\/div><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\">\u8f6f\u4ef6\u8bbe\u8ba1<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">\u76ee\u6807\u68c0\u6d4b\u6a21\u5757<\/h2>\n\n\n\n<p>\u76ee\u6807\u68c0\u6d4b\u6a21\u5757\u6211\u662f\u7528\u7684\u662fyolov5\u6a21\u5757\u7684\u7b2c\u516d\u7248v6.0 &#8211; <a href=\"https:\/\/github.com\/ultralytics\/yolov5\/releases\/tag\/v6.0\" data-type=\"URL\" data-id=\"https:\/\/github.com\/ultralytics\/yolov5\/releases\/tag\/v6.0\" target=\"_blank\" rel=\"noreferrer noopener\">YOLOv5n &#8216;Nano&#8217; models<\/a>\uff0c\u6211\u4f7f\u7528\u7684\u65f6\u5019\u8fd9\u4e2a\u7248\u672c\u7684\u6a21\u578b\u624d\u53d1\u5e03\u4e86\u4e24\u4e2a\u661f\u671f\uff0c\u7f51\u4e0a\u57fa\u672c\u6ca1\u4ec0\u4e48\u8d44\u6599\uff0c\u6211\u5c31\u53ea\u80fd\u81ea\u5df1\u901a\u8fc7\u770b\u6e90\u7801\u6765\u5b66\u4e60\u3002\u200b<\/p>\n\n\n\n<p>\u5148\u6765\u770b\u4e00\u4e0b\u5e38\u89c1\u7684\u76ee\u6807\u68c0\u6d4b\u7b97\u6cd5\uff1a<a href=\"https:\/\/zhuanlan.zhihu.com\/p\/370557679\" data-type=\"URL\" data-id=\"https:\/\/zhuanlan.zhihu.com\/p\/370557679\" target=\"_blank\" rel=\"noreferrer noopener\">\u7ecf\u5178\u7684<em>\u76ee\u6807\u68c0\u6d4b\u7b97\u6cd5<\/em>\u6c47\u603b<\/a><\/p>\n\n\n\n<p>\u200b\u9664\u6b64\u4e4b\u5916\uff0c\u6211\u8fd8\u67e5\u4e86\u4e00\u4e0b\u6bd4\u8f83\u65b0\u7684\u7b97\u6cd5\uff0c\u6bd4\u5982\u8bf4\u65f7\u89c6\u79d1\u6280\u63d0\u51fa\u7684<a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/Megvii-BaseDetection\/YOLOX\" data-type=\"URL\" data-id=\"https:\/\/github.com\/Megvii-BaseDetection\/YOLOX\" target=\"_blank\"> YOLOX<\/a> : <a rel=\"noreferrer noopener\" href=\"https:\/\/arxiv.org\/abs\/2107.08430\" data-type=\"URL\" data-id=\"https:\/\/arxiv.org\/abs\/2107.08430\" target=\"_blank\">Exceeding YOLO Series in 2021<\/a> <a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/WongKinYiu\/yolor\" data-type=\"URL\" data-id=\"https:\/\/github.com\/WongKinYiu\/yolor\" target=\"_blank\">WongKinYiu\/<em>yolor<\/em><\/a> \u4ee5\u53ca\u6700\u8fd1\u767e\u5ea6\u98de\u6868\u53d1\u5e03\u7684<a href=\"https:\/\/github.com\/PaddlePaddle\/PaddleDetection\" target=\"_blank\" rel=\"noreferrer noopener\">PaddleDetection\u200b<\/a><\/p>\n\n\n\n<p>\u867d\u7136\u4e0a\u8ff0\u7b97\u6cd5\u5728\u5f88\u591a\u65b9\u9762\u90fd\u8d85\u8d8a\u4e86\u6211\u4f7f\u7528\u7684yolov5\u7b97\u6cd5\uff0c\u4f46\u662f\u56e0\u4e3a\u5b83\u7684\u8bba\u6587\u592a\u96be\u8bfb\u61c2\u4e86\uff0c\u6211\u8fd8\u662f\u7528\u56de\u719f\u6089\u7684\u6a21\u578b\u5427\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">YOLOv5<\/h2>\n\n\n\n<p>YOLOv5\u6a21\u578b\u66f4\u65b0\u5230\u4e86\u7b2c\u516d\u7248\uff0c\u65b0\u52a0\u5165\u4e86\u9488\u5bf9\u5355\u7247\u673a\u6216\u8005\u540c\u7ea7\u7b97\u529b\u7684Nano\u6a21\u578b\uff0c\u8fd9\u4e2a\u65b0\u6a21\u578b\u7684\u6743\u91cd\u6587\u4ef6\u53f2\u65e0\u524d\u4f8b\u5730\u5c0f\uff0c\u8fbe\u5230\u4e861.9MB\u3002\u6b64\u5916\u6211\u6700\u770b\u91cd\u7684\u662f\u6539\u8fdb\u4e86\u9488\u5bf9OpenCV DNN\u7684\u652f\u6301\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/image-12-1024x512.png'><img class=\"lazyload lazyload-style-8\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"512\" data-original=\"http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/image-12-1024x512.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-99\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><figcaption>yolo\u7b97\u6cd5\u6027\u80fd\u5bf9\u6bd4\u56fe<\/figcaption><\/figure>\n\n\n\n<p>\u901a\u8fc7\u4e0a\u56fe\u53ef\u4ee5\u770b\u51fayolov5\u7684\u6027\u80fd\u5df2\u7ecf\u6253\u5230\u4e86\u4e27\u5fc3\u75c5\u72c2\u7684\u5730\u6b65\uff0c\u5c31\u7b97\u4f7f\u7528m6\u7ea7\u522b\u7684\u6743\u91cd\u6587\u4ef6GPU\u65f6\u95f4\u4e5f\u80fd\u8fdb10ms\u3002\u6709\u5173Yolov5\u7684\u66f4\u8be6\u7ec6\u4ecb\u7ecd\u8bf7\u770b\uff1a<a rel=\"noreferrer noopener\" href=\"https:\/\/zhuanlan.zhihu.com\/p\/172121380\" data-type=\"URL\" data-id=\"https:\/\/zhuanlan.zhihu.com\/p\/172121380\" target=\"_blank\">\u6df1\u5165\u6d45\u51faYolo\u7cfb\u5217\u4e4bYolov5\u6838\u5fc3\u57fa\u7840\u77e5\u8bc6\u5b8c\u6574\u8bb2\u89e3<\/a><a rel=\"noreferrer noopener\" href=\"https:\/\/blog.csdn.net\/qq_40356092\/article\/details\/116496606?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163860493816780274117967%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&amp;request_id=163860493816780274117967&amp;biz_id=0&amp;utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-116496606.first_rank_v2_pc_rank_v29&amp;utm_term=yolov5%E7%BD%91%E7%BB%9C%E7%BB%93%E6%9E%84%E5%AD%A6%E4%B9%A0&amp;spm=1018.2226.3001.4187\" target=\"_blank\">       YOLOv5\u7f51\u7edc\u7ed3\u6784\u5b66\u4e60<\/a><a rel=\"noreferrer noopener\" href=\"https:\/\/blog.csdn.net\/qq_39542170\/article\/details\/109856001?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163860493816780274117967%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&amp;request_id=163860493816780274117967&amp;biz_id=0&amp;utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-2-109856001.first_rank_v2_pc_rank_v29&amp;utm_term=yolov5%E7%BD%91%E7%BB%9C%E7%BB%93%E6%9E%84%E5%AD%A6%E4%B9%A0&amp;spm=1018.2226.3001.4187\" target=\"_blank\">      yolov5\u7406\u8bba<em>\u5b66\u4e60<\/em>\u7b14\u8bb0\u200b<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/image-13-1024x432.png'><img class=\"lazyload lazyload-style-8\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"432\" data-original=\"http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/image-13-1024x432.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-100\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u56e0\u4e3aopencv \u76ee\u524d\u53ea\u652f\u6301onnx12\u7248\u672c\uff0c\u8fd9\u4e2aonnx\u7248\u672c\u662f\u4e0d\u652f\u6301yolov5 focus\u7ed3\u6784\u4e2d\u7684slice\u64cd\u4f5c\u7684\uff0c\u6240\u4ee5\u9700\u8981\u8f6c\u6362\uff0c\u5177\u4f53\u7684\u64cd\u4f5c\u53ef\u4ee5\u53c2\u8003<a href=\"https:\/\/blog.csdn.net\/qq_34124780\/article\/details\/116464727\" target=\"_blank\" rel=\"noreferrer noopener\">2021.09.02\u66f4\u65b0\u8bf4\u660e c++\u4e0b\u4f7f\u7528opencv\u90e8\u7f72yolov5\u6a21\u578b\u7cfb\u5217\u6587\u7ae0<\/a>\u3002\u57286.0\u7248\u672c\u4e4b\u524d\uff0c\u5728prediction\u9700\u8981\u5c06\u4e09\u4e2a\u5c3a\u5ea6\u7684\u8f93\u51fa\u5408\u5e76\u6210\u4e00\u4e2a\uff0c\u6a21\u578b\u7684\u8f6c\u6362\u9700\u8981\u989d\u5916\u5199\u4ee3\u7801\u8f6c\u6362\uff0c\u57286.0\u7248\u672c\u4e2d\u5df2\u7ecf\u96c6\u6210\u4e86\u4e00\u4e2aoutput\u53ef\u4ee5\u76f4\u63a5\u62ff\u6765\u7528\uff08\u6211\u4e4b\u524d\u6ca1\u6709\u4ed4\u7ec6\u770b\u6e90\u7801\u8fd9\u91cc\u5361\u4e86\u597d\u4e45\uff09\uff0c6.0\u7248\u672c\u6a21\u578b\u53d8\u6210\u56db\u4e2a\u8f93\u51fa\uff0c\u6211\u4eec\u4f7f\u7528\u7b2c\u56db\u4e2a\uff08\u6700\u5927\u7684\uff09\u5c31\u884c\uff0c\u5176\u4ed6\u4e09\u4e2a\u662f\u7528\u6765\u8fd0\u7b97\u4e0d\u540c\u5c3a\u5ea6\u7684\uff0c\u4e00\u822c\u6548\u679c\u4e0d\u600e\u4e48\u597d\u3002\u6211\u4f7f\u7528\u4e00\u53f0\u88c5\u6709GTX 1660Ti\u663e\u5361\u5728\u5b98\u65b9\u7684\u6570\u636e\u96c6\u4e0a\u8fdb\u884c\u8bad\u7ec3\uff0c\u5948\u4f55coco2017\u6570\u636e\u96c6\u89c4\u6a21\u592a\u5927\u5e26\u4e0d\u52a8\u3002\u4e0b\u9762\u662f\u4f7f\u7528coco108\u8fdb\u884c\u7684\u8bad\u7ec3\u7ed3\u679c\uff1a\u200b<\/p>\n\n\n\n<figure class=\"wp-block-gallery columns-3 is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex\"><ul class=\"blocks-gallery-grid\"><li class=\"blocks-gallery-item\"><figure><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/labels-20211205002122-1d0egg1-1024x1024.jpg'><img class=\"lazyload lazyload-style-8\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"1024\" data-original=\"http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/labels-20211205002122-1d0egg1-1024x1024.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" data-id=\"101\" data-full-url=\"http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/labels-20211205002122-1d0egg1.jpg\" data-original=\"http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/labels-20211205002122-1d0egg1.jpg\" data-link=\"https:\/\/www.heene.tech\/index.php\/2021\/12\/07\/%e7%89%a9%e8%81%94%e7%bd%91%e6%99%ba%e8%83%bd%e8%a7%86%e9%a2%91%e5%b0%8f%e8%bd%a6\/labels-20211205002122-1d0egg1\/\" class=\"wp-image-101\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/labelscorrelogram-20211205002133-vct0sz6-1024x1024.jpg'><img class=\"lazyload lazyload-style-8\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"1024\" data-original=\"http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/labelscorrelogram-20211205002133-vct0sz6-1024x1024.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" data-id=\"102\" data-full-url=\"http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/labelscorrelogram-20211205002133-vct0sz6.jpg\" data-link=\"https:\/\/www.heene.tech\/index.php\/2021\/12\/07\/%e7%89%a9%e8%81%94%e7%bd%91%e6%99%ba%e8%83%bd%e8%a7%86%e9%a2%91%e5%b0%8f%e8%bd%a6\/labelscorrelogram-20211205002133-vct0sz6\/\" class=\"wp-image-102\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/trainbatch0-20211205002202-1ttuolh-1024x1024.jpg'><img class=\"lazyload lazyload-style-8\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"1024\" data-original=\"http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/trainbatch0-20211205002202-1ttuolh-1024x1024.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" data-id=\"103\" data-full-url=\"http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/trainbatch0-20211205002202-1ttuolh.jpg\" data-link=\"https:\/\/www.heene.tech\/index.php\/2021\/12\/07\/%e7%89%a9%e8%81%94%e7%bd%91%e6%99%ba%e8%83%bd%e8%a7%86%e9%a2%91%e5%b0%8f%e8%bd%a6\/trainbatch0-20211205002202-1ttuolh\/\" class=\"wp-image-103\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/trainbatch1-20211205002212-ybp40fb-1024x1024.jpg'><img class=\"lazyload lazyload-style-8\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"1024\" data-original=\"http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/trainbatch1-20211205002212-ybp40fb-1024x1024.jpg\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" data-id=\"104\" data-full-url=\"http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/trainbatch1-20211205002212-ybp40fb.jpg\" data-link=\"https:\/\/www.heene.tech\/index.php\/2021\/12\/07\/%e7%89%a9%e8%81%94%e7%bd%91%e6%99%ba%e8%83%bd%e8%a7%86%e9%a2%91%e5%b0%8f%e8%bd%a6\/trainbatch1-20211205002212-ybp40fb\/\" class=\"wp-image-104\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure><\/li><\/ul><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">\u5bf9yolov5\u6a21\u578b\u7684\u68c0\u6d4b\u5934\u8fdb\u884c\u6539\u8fdb<\/h3>\n\n\n\n<p>yolov5 6.0\u7248\u672c\u8fd8\u662f\u6cbf\u7528\u4e4b\u524d\u7684GIOU\u7b97\u6cd5\uff0c\u8be5\u7b97\u6cd5\u662f2019\u5e74\u53d1\u5e03\u7684\uff0c\u57282020\u5e74\u7684<a href=\"https:\/\/bbs.cvmart.net\/articles\/1396\" target=\"_blank\" rel=\"noreferrer noopener\">AAAI<\/a>\u4e0a\u53d1\u5e03\u4e86D-IOU\u7b97\u6cd5\uff1a<a href=\"https:\/\/arxiv.org\/abs\/1911.08287\" target=\"_blank\" rel=\"noreferrer noopener\">Distance-IoU Loss: Faster and Better Learning for Bounding Box Regression<\/a> <strong><a href=\"https:\/\/github.com\/Zzh-tju\/DIoU\" data-type=\"URL\" data-id=\"https:\/\/github.com\/Zzh-tju\/DIoU\">DIoU<\/a><\/strong> \u8be5\u7b97\u6cd5\u5728\u68c0\u6d4b\u6709\u906e\u6321\u7684\u7269\u4f53\u90e8\u5206\u88ab\u8bc1\u660e\u6bd4GIOU\u66f4\u6709\u6548\uff0c\u6240\u4ee5\u6211\u5c31\u4f7f\u7528D-IOU\u66ff\u6362\u4e86\u539f\u6765\u7684GIOU\u671f\u671b\u62e5\u6709\u66f4\u597d\u7684\u68c0\u6d4b\u6548\u679c\u3002\u200b<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/image-20211204162417-wk5gigs.png'><img class=\"lazyload lazyload-style-8\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"332\" data-original=\"http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/image-20211204162417-wk5gigs.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-105\"  sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/image-14.png'><img class=\"lazyload lazyload-style-8\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"402\" data-original=\"http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/image-14.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-106\"  sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/div><\/figure>\n\n\n\n<p>\u4ee5D-IOU\u4e3a\u4f30\u4ef7\u51fd\u6570\u52a0\u5165\u5230NMS\u7b97\u6cd5\u4e2d\u80fd\u591f\u5e26\u6765\u66f4\u597d\u7684\u68c0\u6d4b\u6548\u679c\u3002\u6709\u5173NMS\u7b97\u6cd5\u53ef\u4ee5\u53c2\u8003 <a href=\"https:\/\/blog.csdn.net\/zouxiaolv\/article\/details\/107400193?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163860429316780366556302%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&amp;request_id=163860429316780366556302&amp;biz_id=0&amp;utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_click~default-3-107400193.first_rank_v2_pc_rank_v29&amp;utm_term=NMS&amp;spm=1018.2226.3001.4187\" target=\"_blank\" rel=\"noreferrer noopener\"><em>NMS<\/em> (\u975e\u6781\u5927\u503c\u6291\u5236)\u200b<\/a><\/p>\n\n\n\n<p>\u4f7f\u7528\u795e\u7ecf\u7f51\u7edc\u8fdb\u884c\u76ee\u6807\u68c0\u6d4b\u7684\u524d\u5411\u4f20\u64ad\u6700\u540e\u5f97\u5230\u7684\u7ed3\u679c\u5f80\u5f80\u6709\u591a\u4e2a\u65b9\u6846\uff0cNMS\u7b97\u6cd5\u5229\u7528IOU\u4e3a\u4f30\u4ef7\u51fd\u6570\u5bf9\u8fd9\u4e9b\u65b9\u6846\u8fdb\u884c\u5220\u51cf\uff0c\u6700\u540e\u7559\u4e0b\u9884\u6d4b\u6700\u51c6\u786e\u7684\u65b9\u6846\u3002<\/p>\n\n\n\n<figure class=\"wp-block-gallery columns-2 is-cropped wp-block-gallery-3 is-layout-flex wp-block-gallery-is-layout-flex\"><ul class=\"blocks-gallery-grid\"><li class=\"blocks-gallery-item\"><figure><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/image-20211204162958-tv5ao18.png'><img class=\"lazyload lazyload-style-8\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"600\" height=\"347\" data-original=\"http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/image-20211204162958-tv5ao18.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" data-id=\"107\" data-full-url=\"http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/image-20211204162958-tv5ao18.png\" data-original=\"http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/image-20211204162958-tv5ao18.png\" data-link=\"https:\/\/www.heene.tech\/index.php\/2021\/12\/07\/%e7%89%a9%e8%81%94%e7%bd%91%e6%99%ba%e8%83%bd%e8%a7%86%e9%a2%91%e5%b0%8f%e8%bd%a6\/image-20211204162958-tv5ao18\/\" class=\"wp-image-107\"  sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/div><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/image-20211204163005-1lv5an9.png'><img class=\"lazyload lazyload-style-8\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"807\" height=\"572\" data-original=\"http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/image-20211204163005-1lv5an9.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" data-id=\"109\" data-full-url=\"http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/image-20211204163005-1lv5an9.png\" data-link=\"https:\/\/www.heene.tech\/index.php\/2021\/12\/07\/%e7%89%a9%e8%81%94%e7%bd%91%e6%99%ba%e8%83%bd%e8%a7%86%e9%a2%91%e5%b0%8f%e8%bd%a6\/image-20211204163005-1lv5an9\/\" class=\"wp-image-109\"  sizes=\"auto, (max-width: 807px) 100vw, 807px\" \/><\/div><\/figure><\/li><\/ul><\/figure>\n\n\n\n<p>\u4e0b\u9762\u662fDIOU-NMS\u7b97\u6cd5\u7684\u6846\u67b6\uff1a<\/p>\n\n\n\n<p><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/image-20211204163353-pm6js4i.png'><img class=\"lazyload lazyload-style-8\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"578\" height=\"640\" data-original=\"http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/image-20211204163353-pm6js4i.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-110\"  sizes=\"auto, (max-width: 578px) 100vw, 578px\" \/><\/div><\/figure>\n\n\n\n<p>\u4e0b\u9762\u7684\u6211\u5199\u7684\u5b9e\u73b0\u4ee3\u7801\uff0c\u4ec5\u4f9b\u53c2\u8003\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ nms\nvoid nms_boxes(vector&lt;Rect&gt;&amp; boxes, vector&lt;float&gt;&amp; confidences, float confThreshold, float nmsThreshold, vector&lt;int&gt;&amp; indices)\n{\n\tOutput bbox;\n\tvector&lt;Output&gt; bboxes;\n\tint i, j;\n\tfor (i = 0; i &lt; boxes.size(); i++)\n\t{\n\t\tbbox.box = boxes&#91;i];\n\t\tbbox.confidence = confidences&#91;i];\n\t\tbbox.id = i;\n\t\tbboxes.push_back(bbox);\n\t}\n\tsort(bboxes.begin(), bboxes.end(), comp);\n\n\tint updated_size = bboxes.size();\n\tfor (i = 0; i &lt; updated_size; i++)\n\t{\n\t\tif (bboxes&#91;i].confidence &lt; confThreshold)\n\t\t\tcontinue;\n\t\tindices.push_back(bboxes&#91;i].id);\n\t\tfor (j = i + 1; j &lt; updated_size; j++)\n\t\t{\n\t\t\tfloat iou = get_iou_value(bboxes&#91;i].box, bboxes&#91;j].box);\n\t\t\tif (iou &gt; nmsThreshold)\n\t\t\t{\n\t\t\t\tbboxes.erase(bboxes.begin() + j); j = j - 1;\n\t\t\t\tupdated_size = bboxes.size();\n\t\t\t}\n\t\t}\n\t}\n}\n\n\/\/ diou\nstatic float get_iou_value(Rect rect1, Rect rect2)\n{\n\tint xx1, yy1, xx2, yy2, c, d;\n\txx1 = max(rect1.x, rect2.x);\n\tyy1 = max(rect1.y, rect2.y);\n\txx2 = min(rect1.x + rect1.width - 1, rect2.x + rect2.width - 1);\n\tyy2 = min(rect1.y + rect1.height - 1, rect2.y + rect2.height - 1);\n\tint a&#91;4] = { rect1.x, rect1.x + rect1.width, rect2.x, rect2.x + rect2.width };\n\tint b&#91;4] = { rect1.y, rect1.y + rect1.height, rect2.y, rect2.y + rect2.height };\n\tc = pow(pow((bigest_smallest(a, 1) - bigest_smallest(a, 0)), 2) + pow((bigest_smallest(b, 1) - bigest_smallest(b, 0)), 2), 0.5);\n\tint insection_width, insection_height;\n\tinsection_width = max(0, xx2 - xx1 + 1);\n\tinsection_height = max(0, yy2 - yy1 + 1);\n\td = Euclidean_distance(Point((rect1.x + rect1.width) \/ 2, (rect1.y + rect1.height) \/ 2), Point((rect2.x + rect2.width) \/ 2, (rect2.y + rect2.height) \/ 2));\n\tfloat insection_area, union_area, iou, end_area, diou;\n\tinsection_area = float(insection_width) * insection_height;\n\tunion_area = float(rect1.width * rect1.height + rect2.width * rect2.height - insection_area);\n\tiou = insection_area \/ union_area;\n\tdiou = iou - pow(d, 2) \/ pow(c, 2);\n\treturn diou;\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u5bf9\u8c61\u8ddf\u8e2a<\/h2>\n\n\n\n<p>\u5bf9\u8c61\u8ddf\u8e2a\u6211\u4f7f\u7528\u7684\u662fFDSST\u7b97\u6cd5\uff0c\u5176\u4e3b\u8981\u539f\u7406\u662f\u4f7f\u7528\u76f8\u5173\u6ee4\u6ce2\u5668\u4ece\u524d\u4e00\u5f20\u56fe\u50cf\u4e2d\u63d0\u53d6\u7279\u5f81\uff0c\u5728\u540e\u4e00\u5f20\u56fe\u7247\u8fdb\u884c\u76f8\u5173\u6027\u5206\u6790\u67e5\u627e\u76f8\u5173\u5ea6\u6700\u5927\u7684\u533a\u57df\u4f5c\u4e3a\u4e0b\u4e00\u6b21\u8fed\u4ee3\u7684\u521d\u59cb\u56fe\u50cf\u3002\u5176\u5b9eYOLOv5\u4e5f\u53ef\u4ee5\u505a\u591a\u76ee\u6807\u7684\u8ddf\u8e2a\uff0c\u867d\u7136\u5176\u6297\u5e72\u6270\u80fd\u529b\u975e\u5e38\u597d\uff0c\u4f46\u662f\u6027\u80fd\u8fdc\u4e0d\u53caFDSST\u7b97\u6cd5\uff0c\u6240\u4ee5\u6211\u6700\u7ec8\u91c7\u7528\u7684\u662fFDSST\u7b97\u6cd5\u3002\u6709\u5173\u76f8\u5173\u6ee4\u6ce2\u8ddf\u8e2a\u7b97\u6cd5\u7684\u5386\u53f2\uff0c\u53ef\u4ee5\u53c2\u8003\u4ee5\u4e0b\u6587\u7ae0\uff1a<a href=\"https:\/\/zhuanlan.zhihu.com\/p\/27549763\" data-type=\"URL\" data-id=\"https:\/\/zhuanlan.zhihu.com\/p\/27549763\" target=\"_blank\" rel=\"noreferrer noopener\">\u5c06\u76f8\u5173\u6ee4\u6ce2\u8ddf\u8e2a\u7b97\u6cd5\u7684\u901f\u5ea6\u505a\u5230\u6781\u81f4\u200b<\/a><\/p>\n\n\n\n<p>\u672c\u6587\u4e0d\u7ec6\u8bb2\u5176\u76f8\u5173\u539f\u7406\uff0c\u4ec5\u7ed9\u51fa\u5927\u81f4\u7684\u601d\u8def\uff1a<\/p>\n\n\n\n<p>\u8bba\u6587\u4e2d\u4e3b\u8981\u63cf\u8ff0\u4e86\u4e00\u79cd\u5728\u89c6\u89c9\u8ddf\u8e2a\u4e2d\u7cbe\u51c6\u7684\u5c3a\u5ea6\u4f30\u8ba1\u7684\u65b9\u6cd5\uff0c\u57fa\u4e8e\u6b64\u5c3a\u5ea6\u4f30\u8ba1\u65b9\u6cd5\u63d0\u51fa\u4e86DSST\uff08Discriminatiive Scale Space Tracker\uff09\u7b97\u6cd5\u3002\u8be5\u7b97\u6cd5\u5206\u4e3a\u4f4d\u7f6e\u6ee4\u6ce2\u5668\uff08Translation Filter\uff09\u548c\u5c3a\u5ea6\u6ee4\u6ce2\u5668\uff08Scale Filter\uff09\u3002\u8fd9\u79cd\u7cbe\u51c6\u7684\u5c3a\u5ea6\u4f30\u8ba1\u65b9\u6cd5\u53ef\u4ee5\u548c\u4efb\u610f\u5176\u4ed6\u7684\u6ca1\u6709\u5c3a\u5ea6\u4f30\u8ba1\u7684\u8ddf\u8e2a\u7b97\u6cd5\u7ed3\u5408\u3002\u4e0b\u56fe\u662f\u4f5c\u8005\u7ed9\u51fa\u7684\u7b97\u6cd5\u7684\u6548\u679c\u3002DSST\u7b97\u6cd5\u91c7\u7528\u5224\u522b\u76f8\u5173\u6ee4\u6ce2\u5668\uff08discriminative correlation filters\uff09\u6765\u786e\u5b9a\u4f4d\u7f6e\u4fe1\u606f\uff0c\u4f7f\u7528\u6587\u4e2d\u63d0\u51fa\u7684\u5c3a\u5ea6\u4f30\u8ba1\u65b9\u6cd5\u786e\u5b9a\u5c3a\u5ea6\u4fe1\u606f\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/image-15-1024x612.png'><img class=\"lazyload lazyload-style-8\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"612\" data-original=\"http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/image-15-1024x612.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-113\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><figcaption>Danelljan M, Hager G, Khan F S, et al. <strong>Discriminative Scale Space Tracking<\/strong> [J]. IEEE TPAMI, 2017.<\/figcaption><\/figure>\n\n\n\n<p>\u8be5\u7b97\u6cd5\u76f8\u6bd4\u4e8e\u5176\u4ed6\u7b97\u6cd5\u6700\u5927\u7684\u4f18\u70b9\u662f\u652f\u6301\u5c3a\u5ea6\u53d8\u6362\u68c0\u6d4b\u5e76\u4e14\u5c3a\u5ea6\u4f30\u8ba1\u51c6\u786e\u7387\u9ad8\u3002\u8be5\u8bba\u6587\u4f5c\u8005Martin Danelljan\u5c06\u7b97\u6cd5\u53d1\u5e03\u5230github\u4e0a\uff1a<strong><a href=\"https:\/\/github.com\/laeklee\/fDSST_cpp\">fDSST_cpp<\/a><\/strong> \u6211\u4fee\u6539\u4e86\u91cc\u9762\u7684\u5c3a\u5ea6\u56e0\u5b50\uff0c\u4f7f\u5b83\u5bf9\u5c3a\u5ea6\u53d8\u5316\u66f4\u52a0\u654f\u611f\u3002\u200b<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u7f51\u7edc\u901a\u4fe1\u2014\u2014\u57fa\u4e8eMQTT\u534f\u8bae\u7684\u63a7\u5236\u7cfb\u7edf<\/h2>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>MQTT\uff08Message Queuing Telemetry Transport\uff0c\u6d88\u606f\u961f\u5217\u9065\u6d4b\u4f20\u8f93\u534f\u8bae\uff09\uff0c\u662f\u4e00\u79cd\u57fa\u4e8e<code>\u53d1\u5e03\/\u8ba2\u9605<\/code>\uff08<code>publish\/subscribe<\/code>\uff09\u6a21\u5f0f\u7684\u201c\u8f7b\u91cf\u7ea7\u201d\u901a\u8baf\u534f\u8bae\uff0c\u6784\u5efa\u4e8eTCP\/IP\u534f\u8bae\u4e0a\uff0c\u7531IBM\u57281999\u5e74\u53d1\u5e03\u3002\u200b<\/p><\/blockquote>\n\n\n\n<p>MQTT\u6700\u5927\u4f18\u70b9\u5728\u4e8e\uff0c <strong><span class=\"has-inline-color has-light-green-cyan-color\">\u7528\u6781\u5c11\u7684\u4ee3\u7801<\/span>\u548c\u6709\u9650\u7684\u5e26\u5bbd\uff0c\u4e3a\u8fde\u63a5\u8fdc\u7a0b\u8bbe\u5907\u63d0\u4f9b\u5b9e\u65f6\u53ef\u9760\u7684\u6d88\u606f\u670d\u52a1<\/strong> \u3002<\/p>\n\n\n\n<p>MQTT \u534f\u8bae\u7684\u7279\u70b9\uff1a\u200b<\/p>\n\n\n\n<div class=\"list\" data-subtype=\"u\" data-node-id=\"20211204165614-12qms45\" data-node-index=\"1189\" data-type=\"NodeList\">\n<div class=\"li protyle-wysiwyg--select\" data-marker=\"*\" data-subtype=\"u\" data-node-id=\"20211204165614-xr9drvn\" data-type=\"NodeListItem\">\n<div class=\"protyle-action\" draggable=\"true\">&nbsp;<\/div>\n<div class=\"p\" data-node-id=\"20211204165608-r5z2s2k\" data-type=\"NodeParagraph\">\n<div contenteditable=\"true\" spellcheck=\"false\">\n<ul>\n<li>MQTT\u662f\u4e00\u4e2a\u57fa\u4e8e<strong>\u5ba2\u6237\u7aef-\u670d\u52a1\u5668<\/strong>\u7684\u6d88\u606f\u53d1\u5e03\/\u8ba2\u9605\u4f20\u8f93\u534f\u8bae\u3002<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"li protyle-wysiwyg--select\" data-marker=\"*\" data-subtype=\"u\" data-node-id=\"20211204165614-hpe0ik1\" data-type=\"NodeListItem\">\n<div class=\"p\" data-node-id=\"20211204165608-q8nn8du\" data-type=\"NodeParagraph\">\n<div contenteditable=\"true\" spellcheck=\"false\">\n<ul>\n<li>MQTT\u534f\u8bae\u662f\u8f7b\u91cf\u3001\u7b80\u5355\u3001\u5f00\u653e\u548c\u6613\u4e8e\u5b9e\u73b0\u7684\uff0c\u8fd9\u4e9b\u7279\u70b9\u4f7f\u5b83\u9002\u7528\u8303\u56f4\u975e\u5e38\u5e7f\u6cdb\u3002\u5728\u5f88\u591a\u60c5\u51b5\u4e0b\uff0c\u5305\u62ec\u53d7\u9650\u7684\u73af\u5883\u5982\uff1a\u673a\u5668\u4e0e\u673a\u5668\uff08M2M\uff09\u901a\u4fe1\u548c\u7269\u8054\u7f51\uff08IoT\uff09\u3002<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"li protyle-wysiwyg--select\" data-marker=\"*\" data-subtype=\"u\" data-node-id=\"20211204165614-7mikfiw\" data-type=\"NodeListItem\">\n<div class=\"p\" data-node-id=\"20211204165608-vjcagdz\" data-type=\"NodeParagraph\">\n<div contenteditable=\"true\" spellcheck=\"false\">\n<ul>\n<li>\u5176\u5728\uff0c\u901a\u8fc7\u536b\u661f\u94fe\u8def\u901a\u4fe1\u4f20\u611f\u5668\u3001\u5076\u5c14\u62e8\u53f7\u7684\u533b\u7597\u8bbe\u5907\u3001\u667a\u80fd\u5bb6\u5c45\u3001\u53ca\u4e00\u4e9b\u5c0f\u578b\u5316\u8bbe\u5907\u4e2d\u5df2\u5e7f\u6cdb\u4f7f\u7528\u3002<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"li protyle-wysiwyg--select\" data-marker=\"*\" data-subtype=\"u\" data-node-id=\"20211204165614-xiusf7u\" data-type=\"NodeListItem\">\n<div class=\"p\" data-node-id=\"20211204165608-lkm6014\" data-type=\"NodeParagraph\">\n<div contenteditable=\"true\" spellcheck=\"false\">\n<ul>\n<li>MQTT\u534f\u8bae\u5f53\u524d\u7248\u672c\u4e3a\uff0c2014\u5e74\u53d1\u5e03\u7684MQTT v3.1.1\u3002\u9664\u6807\u51c6\u7248\u5916\uff0c\u8fd8\u6709\u4e00\u4e2a\u7b80\u5316\u7248<code>MQTT-SN<\/code>\uff0c\u8be5\u534f\u8bae\u4e3b\u8981\u9488\u5bf9\u5d4c\u5165\u8bbe\u5907\uff0c\u8fd9\u4e9b\u8bbe\u5907\u4e00\u822c\u5de5\u4f5c\u4e8eTCP\/IP\u7f51\u7edc\uff0c\u5982\uff1aZigBee\u3002<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"li protyle-wysiwyg--select\" data-marker=\"*\" data-subtype=\"u\" data-node-id=\"20211204165614-ioed4lt\" data-type=\"NodeListItem\">\n<div class=\"p\" data-node-id=\"20211204165608-htfvr3i\" data-type=\"NodeParagraph\">\n<ul>\n<li contenteditable=\"true\" spellcheck=\"false\">MQTT \u4e0e HTTP \u4e00\u6837\uff0cMQTT \u8fd0\u884c\u5728\u4f20\u8f93\u63a7\u5236\u534f\u8bae\/\u4e92\u8054\u7f51\u534f\u8bae (TCP\/IP) \u5806\u6808\u4e4b\u4e0a\u3002<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<figure class=\"wp-block-gallery columns-2 is-cropped wp-block-gallery-4 is-layout-flex wp-block-gallery-is-layout-flex\"><ul class=\"blocks-gallery-grid\"><li class=\"blocks-gallery-item\"><figure><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/image-20211204165646-zfvss0i.png'><img class=\"lazyload lazyload-style-8\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"757\" height=\"578\" data-original=\"http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/image-20211204165646-zfvss0i.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" data-id=\"117\" data-full-url=\"http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/image-20211204165646-zfvss0i.png\" data-original=\"http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/image-20211204165646-zfvss0i.png\" data-link=\"https:\/\/www.heene.tech\/index.php\/2021\/12\/07\/%e7%89%a9%e8%81%94%e7%bd%91%e6%99%ba%e8%83%bd%e8%a7%86%e9%a2%91%e5%b0%8f%e8%bd%a6\/image-20211204165646-zfvss0i\/\" class=\"wp-image-117\"  sizes=\"auto, (max-width: 757px) 100vw, 757px\" \/><\/div><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/image-20211204165624-vdpv94l.png'><img class=\"lazyload lazyload-style-8\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"533\" height=\"490\" data-original=\"http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/image-20211204165624-vdpv94l.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" data-id=\"116\" data-full-url=\"http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/image-20211204165624-vdpv94l.png\" data-link=\"https:\/\/www.heene.tech\/index.php\/2021\/12\/07\/%e7%89%a9%e8%81%94%e7%bd%91%e6%99%ba%e8%83%bd%e8%a7%86%e9%a2%91%e5%b0%8f%e8%bd%a6\/image-20211204165624-vdpv94l\/\" class=\"wp-image-116\"  sizes=\"auto, (max-width: 533px) 100vw, 533px\" \/><\/div><\/figure><\/li><\/ul><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">QoS\uff08Quality of Service levels\uff09<\/h3>\n\n\n\n<p>\u670d\u52a1\u8d28\u91cf\u662f MQTT \u7684\u4e00\u4e2a\u91cd\u8981\u7279\u6027\u3002\u5f53\u6211\u4eec\u4f7f\u7528 TCP\/IP \u65f6\uff0c\u8fde\u63a5\u5df2\u7ecf\u5728\u4e00\u5b9a\u7a0b\u5ea6\u4e0a\u53d7\u5230\u4fdd\u62a4\u3002\u4f46\u662f\u5728\u65e0\u7ebf\u7f51\u7edc\u4e2d\uff0c\u4e2d\u65ad\u548c\u5e72\u6270\u5f88\u9891\u7e41\uff0cMQTT \u5728\u8fd9\u91cc\u5e2e\u52a9\u907f\u514d\u4fe1\u606f\u4e22\u5931\u53ca\u5176\u670d\u52a1\u8d28\u91cf\u6c34\u5e73\u3002\u8fd9\u4e9b\u7ea7\u522b\u5728\u53d1\u5e03\u65f6\u4f7f\u7528\u3002\u5982\u679c\u5ba2\u6237\u7aef\u53d1\u5e03\u5230 MQTT \u670d\u52a1\u5668\uff0c\u5219\u5ba2\u6237\u7aef\u5c06\u662f\u53d1\u9001\u8005\uff0cMQTT \u670d\u52a1\u5668\u5c06\u662f\u63a5\u6536\u8005\u3002\u5f53MQTT\u670d\u52a1\u5668\u5411\u5ba2\u6237\u7aef\u53d1\u5e03\u6d88\u606f\u65f6\uff0c\u670d\u52a1\u5668\u662f\u53d1\u9001\u8005\uff0c\u5ba2\u6237\u7aef\u662f\u63a5\u6536\u8005\u3002<\/p>\n\n\n\n<p><strong>QoS 0<\/strong> \u8fd9\u4e00\u7ea7\u522b\u4f1a\u53d1\u751f\u6d88\u606f\u4e22\u5931\u6216\u91cd\u590d\uff0c\u6d88\u606f\u53d1\u5e03\u4f9d\u8d56\u4e8e\u5e95\u5c42TCP\/IP\u7f51\u7edc\u3002\u5373\uff1a&lt;=1<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/image-16.png'><img class=\"lazyload lazyload-style-8\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"388\" height=\"204\" data-original=\"http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/image-16.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-118\"  sizes=\"auto, (max-width: 388px) 100vw, 388px\" \/><\/div><\/figure>\n\n\n\n<p><strong>QoS 1<\/strong> \u627f\u8bfa\u6d88\u606f\u5c06\u81f3\u5c11\u4f20\u9001\u4e00\u6b21\u7ed9\u8ba2\u9605\u8005\u3002\u200b<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/image-17.png'><img class=\"lazyload lazyload-style-8\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"388\" height=\"204\" data-original=\"http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/image-17.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-119\"  sizes=\"auto, (max-width: 388px) 100vw, 388px\" \/><\/div><\/figure>\n\n\n\n<p>QoS 2\uff0c\u6211\u4eec\u4fdd\u8bc1\u6d88\u606f\u4ec5\u4f20\u9001\u5230\u76ee\u7684\u5730\u4e00\u6b21\u3002\u4e3a\u6b64\uff0c\u5e26\u6709\u552f\u4e00\u6d88\u606f ID \u7684\u6d88\u606f\u4f1a\u5b58\u50a8\u4e24\u6b21\uff0c\u9996\u5148\u6765\u81ea\u53d1\u9001\u8005\uff0c\u7136\u540e\u662f\u63a5\u6536\u8005\u3002QoS \u7ea7\u522b 2 \u5728\u7f51\u7edc\u4e2d\u5177\u6709\u6700\u9ad8\u7684\u5f00\u9500\uff0c\u56e0\u4e3a\u5728\u53d1\u9001\u65b9\u548c\u63a5\u6536\u65b9\u4e4b\u95f4\u9700\u8981\u4e24\u4e2a\u6d41\u3002<\/p>\n\n\n\n<p>\u200b<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/image-18.png'><img class=\"lazyload lazyload-style-8\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"388\" height=\"204\" data-original=\"http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/image-18.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-120\"  sizes=\"auto, (max-width: 388px) 100vw, 388px\" \/><\/div><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">2 MQTT \u6570\u636e\u5305\u7ed3\u6784\u200b<\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p><code><span class=\"has-inline-color has-luminous-vivid-amber-color\">\u56fa\u5b9a\u5934\uff08Fixed header\uff09<\/span><\/code>\uff0c\u5b58\u5728\u4e8e\u6240\u6709<code>MQTT<\/code>\u6570\u636e\u5305\u4e2d\uff0c\u8868\u793a\u6570\u636e\u5305\u7c7b\u578b\u53ca\u6570\u636e\u5305\u7684\u5206\u7ec4\u7c7b\u6807\u8bc6\uff1b<\/p><p><code><span class=\"has-inline-color has-luminous-vivid-amber-color\">\u53ef\u53d8\u5934\uff08Variable header\uff09<\/span><\/code>\uff0c\u5b58\u5728\u4e8e\u90e8\u5206<code>MQTT<\/code>\u6570\u636e\u5305\u4e2d\uff0c\u6570\u636e\u5305\u7c7b\u578b\u51b3\u5b9a\u4e86\u53ef\u53d8\u5934\u662f\u5426\u5b58\u5728\u53ca\u5176\u5177\u4f53\u5185\u5bb9\uff1b<\/p><p><code><span class=\"has-inline-color has-luminous-vivid-amber-color\">\u6d88\u606f\u4f53\uff08Payload\uff09<\/span><\/code>\uff0c\u5b58\u5728\u4e8e\u90e8\u5206<code>MQTT<\/code>\u6570\u636e\u5305\u4e2d\uff0c\u8868\u793a\u5ba2\u6237\u7aef\u6536\u5230\u7684\u5177\u4f53\u5185\u5bb9\uff1b\u200b<\/p><\/blockquote>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/image-19.png'><img class=\"lazyload lazyload-style-8\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"932\" height=\"414\" data-original=\"http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/image-19.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-121\"  sizes=\"auto, (max-width: 932px) 100vw, 932px\" \/><\/div><\/figure>\n\n\n\n<p>\u5728\u642d\u5efaMQTT\u670d\u52a1\u65f6\uff0c\u5148\u662f\u4f7f\u7528\u4e86\u817e\u8baf\u4e91\u7684\u7269\u8054\u7f51\u5e73\u53f0\u6765\u4f5c\u4e3aMQTT\u670d\u52a1\u5668\uff0c\u540e\u6765\u89c9\u5f97\u7528\u5f97\u4e0d\u987a\u624b\u5c31\u7528\u81ea\u5df1\u7684\u670d\u52a1\u5668\uff0c\u4f7f\u7528\u5f00\u6e90\u9879\u76ee<a href=\"https:\/\/github.com\/emqx\/emqx\" target=\"_blank\" rel=\"noreferrer noopener\">emqx\/<em>emqx<\/em><\/a>\u4f5c\u4e3aMQTT\u670d\u52a1\u5668\u7aef\u5b9e\u73b0\u901a\u8baf\u200b<\/p>\n\n\n\n<p>\u5728\u5ba2\u6237\u7aef\u65b9\u9762\uff0c\u6211\u7684esp32cam\u5f00\u53d1\u677f\u53ea\u9700\u5f15\u8fdb<code><strong><span class=\"has-inline-color has-vivid-green-cyan-color\">PubSubClient<\/span><\/strong><\/code> \u8fd9\u4e2a\u5e93\u5c31\u53ef\u4ee5\u8f7b\u677e\u521b\u5efaMQTT\u8fde\u63a5\u3002\u5728PC\u7aef\uff0c\u4f7f\u7528QT\u505a\u5f00\u53d1\u65f6\u9700\u8981\u624b\u52a8\u6839\u636eemqx\/<em>qmqtt<\/em>\u7f16\u8bd1\u5b89\u88c5MQTT\u63d2\u4ef6\u624d\u80fd\u8fdb\u884c\u901a\u8baf\u3002\u5728\u901a\u8baf\u8fc7\u7a0b\u4e2d\u4f7f\u7528\u7684\u4e00\u822c\u662fJSon\u4f5c\u4e3a\u6570\u636e\u4ea4\u6362\u7684\u683c\u5f0f\u3002\u5355\u7247\u673a\u4e0a\u9700\u8981\u5f15\u5165<code><span class=\"has-inline-color has-vivid-green-cyan-color\"><strong>ArduinoJson<\/strong><\/span><\/code>\u8fd9\u4e2a\u5e93\u5bf9JSon\u6570\u636e\u8fdb\u884c\u5c01\u88c5\u548c\u89e3\u6790\uff0cPC\u673a\u4e0a\u6211\u4f7f\u7528\u7684\u662f<strong><span class=\"has-inline-color has-vivid-green-cyan-color\">QJsonObject<\/span><\/strong>\u548c<strong><span class=\"has-inline-color has-vivid-green-cyan-color\">QJsonDocumen<\/span>t<\/strong>\u4e24\u4e2a\u5e93\u3002\u5bf9\u4e8e\u6211\u7684\u8fd9\u4e2a\u9879\u76ee\u6211\u7528\u5230\u7684Json\u6570\u636e\u683c\u5f0f\u5982\u4e0b\u200b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ \u4e0a\u4f4d\u673a\u53d1\u51fa\u7684\n{\n\t\"Config\": {\t\/\/ \u8fd9\u91cc\u7684\u6570\u636e\u4e0d\u4e00\u5b9a\u6bcf\u6b21\u90fd\u4f1a\u53d1\u51fa\uff0cPConline\u53ea\u4f1a\u5728\u8fde\u63a5\u4e0aMQTT\u670d\u52a1\u5668\u4e4b\u540e\u53d1\u51fa\uff0cjpeg_quality \u53ea\u4f1a\u5728\u9700\u8981\u66f4\u6539\u56fe\u7247\u8d28\u91cf\u65f6\u53d1\u51fa\n\t\t\"PConline\": 1,\n\t\t\"jpeg_quality\": 12\n\t},\n\t\"Control\": {\n\t\t\"leftWheels\": 0.00,\n\t\t\"rightWheels\": 0.00,\n\t\t\"servoAngle\": 90\n\t}\n}\n\n\/\/ esp32\u53d1\u51fa\u7684\n{\n\t\"State\": {\n\t\t\"InitState\": \"ESP32CAMOK!\", \/\/ \u8fd9\u91cc\u7684\u6570\u636e\u4e0d\u4e00\u5b9a\u6bcf\u6b21\u90fd\u4f1a\u53d1\u51fa\n\t\t\"IPAddress\": \"192.168.137.27\",\n\t\t\"StreamUrl\": \"http:\/\/192.168.137.27\/mjpeg\/1\"\n\t}\n}<\/code><\/pre>\n\n\n\n<p>\u4e0b\u9762\u662f\u6211\u7684\u5b9e\u73b0\u4ee3\u7801\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ MQTT\u53d1\u5e03\u51fd\u6570\nvoid publisher()\n{\n   StaticJsonDocument&lt;250&gt; doc;\n  JsonObject State = doc.createNestedObject(\"State\"); \/\/\u6dfb\u52a0\u4e00\u4e2a\u5bf9\u8c61\u8282\u70b9\n  State&#91;\"InitState\"] = \"ESP32CAMOK!\";\n  State&#91;\"IPAddress\"] =ip.toString();\n  State&#91;\"StreamUrl\"] =\"http:\/\/\"+ip.toString()+\"\/mjpeg\/1\";\n  String msg;\n  serializeJson(doc, msg);\n  char sendmsg&#91;250];\n  msg.toCharArray(sendmsg,250);\n  pclient.publish(TOPIC_PUBLIHER,sendmsg);\n}\n\n\/\/ MQTT \u6307\u4ee4\u89e3\u6790\nvoid commandHandle(String recivemsg)\n{\n  StaticJsonDocument&lt;200&gt; doc;\n  DeserializationError error = deserializeJson(doc, recivemsg); \/\/\u53cd\u5e8f\u5217\u5316JSON\u6570\u636e\n  if (!error) \/\/\u68c0\u67e5\u53cd\u5e8f\u5217\u5316\u662f\u5426\u6210\u529f\n    {\n      if (doc.containsKey(\"State\"))\n      {\n        if (doc&#91;\"State\"]&#91;\"runningState\"] == 0)\n      {\n        Motor_Control(0,0,90);\n      }\n      }\n      if (doc.containsKey(\"Control\"))\n      {\n        float Cnt_L_temp = doc&#91;\"Control\"]&#91;\"leftWheels\"]; \n        float Cnt_R_temp = doc&#91;\"Control\"]&#91;\"rightWheels\"]; \n        int SG = doc&#91;\"Control\"]&#91;\"servoAngle\"]; \n        Motor_Control(Cnt_L_temp*1024,Cnt_R_temp*1024,SG);\n      }\n      if (doc.containsKey(\"Config\"))\n      {\n        if (doc&#91;\"Config\"].containsKey(\"jpeg_quality\"))\n        {\n          config.jpeg_quality = doc&#91;\"Config\"]&#91;\"jpeg_quality\"];\n        }\n        if (doc&#91;\"Config\"].containsKey(\"PConline\"))\n      {\n        Serial.println(\"\u8fde\u63a5\u5230PC\uff01\");\n        delay(2000);\/\/ \u5ef6\u8fdf2s\u4e4b\u540e\u628a\u7f51\u5173\u4fe1\u606f\u53d1\u7ed9PC\n        publisher();\n      }\n      }\n    }\n}<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ \u6d88\u606f\u53d1\u5e03\u51fd\u6570\nvoid ControlProcessThread::published(float leftWheel,float rightWhell,int servoAngle, int imageQuality,bool sendPConline)\n{\n    if(m_client-&gt;state() == QMqttClient::Connected)\n    {\n        leftWheel *= m_velocityC;\n        rightWhell *= m_velocityC;\n        QString L=QString::number(leftWheel,'f',2);\n        QString R=QString::number(rightWhell,'f',2);\n        QJsonObject json;\n        QJsonObject Config;\n        QJsonObject Control;\n        static int servo=90;\n        if(servoAngle!=90){servo = servoAngle;}\n        QJsonDocument document;\n        if(imageQuality!=12)\n        {\n\n            Config.insert(\"jpeg_quality\",imageQuality);\n            document.setObject(Config);\n        }\n        if(sendPConline){Config.insert(\"PConline\",1);json.insert(\"Config\",QJsonValue(Config));}\n\n        Control.insert(\"leftWheels\",L);\n        Control.insert(\"rightWheels\",R);\n        Control.insert(\"servoAngle\",servo);\n        json.insert(\"Control\",QJsonValue(Control));\n        document.setObject(json);\n        QByteArray messagePub = document.toJson(QJsonDocument::Compact);\n\t\/\/ \u4ee5\u4e0b\u4ee3\u7801\u7684\u4f5c\u7528\u662f\u5c06\u6d6e\u70b9\u6570\u622a\u65ad\u6210\u4e24\u4f4d\uff0cQJsonDocument \u5bf9\u4e8eQt float \u8fd9\u79cd\u6570\u636e\u683c\u5f0f\u4f1a\u8f6c\u6362\u621016\u4f4d\n        messagePub.remove(messagePub.indexOf(\"leftWheels\",0)+12,L.length()+2);\n        messagePub.insert(messagePub.indexOf(\"leftWheels\",0)+12,L);\n        messagePub.remove(messagePub.indexOf(\"rightWheels\",0)+13,R.length()+2);\n        messagePub.insert(messagePub.indexOf(\"rightWheels\",0)+13,R);\n        m_client-&gt;publish(m_PublishTopic, messagePub, 0);\n        return;\n    }\n    emit sigSendControlInfo(QString::fromLocal8Bit(\"\u8bf7\u8fde\u63a5\u540e\u91cd\u65b0\u64cd\u4f5c\"));\n}\n\n\/\/ \u6d88\u606f\u63a5\u6536\u51fd\u6570\nvoid ControlProcessThread::topicMessageReceived(QByteArray message, QMqttTopicName topic)\n{\n    emit sigSendControlInfo(QString::fromLocal8Bit(\"\u6536\u5230\u6d88\u606f\"));\n    QString content;\n    QDateTime Time = QDateTime::currentDateTime();\n    content = Time.toString(\"hh:mm:ss\") + QLatin1Char(' ');\n    content += QLatin1String(\" Received Topic:\\n &#91; \") + topic.name() +QLatin1String(\"]\")+ QLatin1Char('\\n');\n    content += QLatin1String(\" Message: \\n \") + message + QLatin1Char('\\n');\n    emit sigSendControlInfo(content);\n    QJsonParseError jsonError;\n    QJsonDocument doucment = QJsonDocument::fromJson(message, &amp;jsonError);  \/\/ \u8f6c\u5316\u4e3a JSON \u6587\u6863\n    if (!doucment.isNull() &amp;&amp; (jsonError.error == QJsonParseError::NoError))\n    {\n        QJsonObject object = doucment.object();\n        if(object.contains(\"State\"))\n        {\n            QJsonValue state = object.value(\"State\");\n            QJsonObject obj = state.toObject();\n            if(obj.value(\"InitState\").toString()==\"ESP32CAMOK!\"){emit sigSendControlInfo(QString::fromLocal8Bit(\"\u4e0eESP32\u6210\u529f\u901a\u4fe1\uff01\"));}\n            QJsonValue IP = obj.value(\"IPAddress\");\n            QJsonValue streamURL = obj.value(\"StreamUrl\");\n            published(0,0,90,12);\n            emit sigGetStreamAddress(streamURL.toString());\n            emit sigSendControlInfo(QString::fromLocal8Bit(\"\u6210\u529f\u83b7\u5f97ESP32\u5c0f\u8f66IP\u5730\u5740\")+IP.toString());\n        }\n\n    }\n}<\/code><\/pre>\n\n\n\n<p>\u901a\u8fc7\u4ee5\u4e0a\u4ee3\u7801\u5c31\u53ef\u4ee5\u5b9e\u73b0\u65e0\u8bba\u54ea\u4e2a\u5ba2\u6237\u7aef\u5148\u4e0a\u7ebf\uff0c\u6700\u540e\u90fd\u53ef\u4ee5\u5b9e\u73b0\u4e24\u4e2a\u5ba2\u6237\u7aef\u90fd\u77e5\u9053\u5bf9\u65b9\u7684\u72b6\u6001\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u7f51\u7edc\u901a\u8baf\u2014\u2014\u89c6\u9891\u4f20\u8f93\u200b<\/h2>\n\n\n\n<p>\u89c6\u9891\u4f20\u8f93\u6211\u4e00\u5f00\u59cb\u662f\u51c6\u5907\u4f7f\u7528Socket\u8fdb\u884c\u4f20\u8f93\u7684\uff0c\u4f46\u662f\u63a5\u6536\u5230\u7684\u6570\u636e\u9700\u8981\u8fdb\u884c\u56fe\u50cf\u89e3\u7801\uff0c\u8fc7\u7a0b\u6709\u4e9b\u590d\u6742\uff0c\u6700\u540e\u8fd8\u662f\u901a\u8fc7webserver\u7684\u65b9\u5f0f\u8fdb\u884c\u56fe\u7247\u6570\u636e\u7684\u4f20\u8f93\uff0cOpenCV\u7684videocapture\u7c7b\u80fd\u591f\u76f4\u63a5\u901a\u8fc7\u4e32\u6d41\u5730\u5740\u89e3\u6790\u89c6\u9891\u6d41\uff0c\u6bd4\u8f83\u7701\u4e8b\u3002\u4f46\u662f\u6211\u4e4b\u524d\u8fd8\u662f\u6536\u96c6\u4e86\u4e00\u4e9b\u6709\u5173mjpeg\u56fe\u50cf\u89e3\u7801\u7684\u8d44\u6599\uff0c\u5728\u8fd9\u91cc\u4e5f\u4e00\u5e76\u8bb0\u5f55\u4e00\u4e0b\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">mjpeg\u89e3\u7801\u200b<\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p><strong>Motion JPEG(M-JPEG<\/strong> <strong>\u6216MJPEG<\/strong> <strong>\uff0cMotion Joint Photographic Experts Group<\/strong> <strong>\uff0cFourCC:MJPG)<\/strong> <strong>\u662f\u4e00\u79cd\u5f71\u50cf\u538b\u7f29\u683c\u5f0f\uff0c\u5176\u4e2d\u6bcf\u4e00\u5e27\u56fe\u50cf\u90fd\u5206\u522b\u4f7f\u7528JPEG<\/strong> <strong>\u7f16\u7801<\/strong> \u3002\u200b<\/p><\/blockquote>\n\n\n\n<p>M-JPEG\u5e38\u7528\u5728\u6570\u5b57\u76f8\u673a\u548c\u6444\u50cf\u5934\u4e4b\u7c7b\u7684\u56fe\u50cf\u91c7\u96c6\u8bbe\u5907\u4e0a\u3002MJPEG\u5373\u52a8\u6001JPEG\uff0c\u6309\u7167\u81f3\u5c11\u8fbe\u523025\u5e27\/\u79d2\u901f\u5ea6\u4f7f\u7528JPEG\u538b\u7f29\u7b97\u6cd5\u538b\u7f29\u89c6\u9891\u4fe1\u53f7\uff0c\u5b8c\u6210\u52a8\u6001\u89c6\u9891\u7684\u538b\u7f29\u3002MJPEG\u538b\u7f29\u6807\u51c6\u662f\u7531JPEG\u4e13\u5bb6\u7ec4\u5236\u5b9a\u7684\uff0c\u5176\u56fe\u50cf\u683c\u5f0f\u662f\u5bf9\u6bcf\u4e00\u5e27JPEG\u56fe\u50cf\u8fdb\u884c\u538b\u7f29\u3002MJPEG\u662f\u4e00\u79cd\u57fa\u4e8e\u9759\u6001\u56fe\u50cf\u538b\u7f29\u6280\u672fJPEG\u53d1\u5c55\u8d77\u6765\u7684\u52a8\u6001\u56fe\u50cf\u538b\u7f29\u6280\u672f\uff0c\u53ef\u4ee5\u751f\u6210\u5e8f\u5217\u5316\u7684\u8fd0\u52a8\u56fe\u50cf\u3002<strong>\u5b9e\u9645\u4e0a<strong>MJPEG<\/strong>\u56fe\u50cf\u6570\u636e\u6d41\u5c31\u662f\u4e00\u5e27\u4e00\u5e27\u7684JPEG<\/strong> <strong>\u683c\u5f0f\u56fe\u7247<\/strong> \u3002\u200b<\/p>\n\n\n\n<p>M-JPEG\u53ea\u4f7f\u7528<a rel=\"noreferrer noopener\" href=\"https:\/\/zh.wikipedia.org\/w\/index.php?title=%E5%B8%A7%E5%86%85%E5%8E%8B%E7%BC%A9&amp;action=edit&amp;redlink=1\" target=\"_blank\">\u5e27\u5185\u538b\u7f29<\/a>\uff08\u533a\u522b\u4e8e\u7b97\u6cd5\u66f4\u590d\u6742\u7684<a rel=\"noreferrer noopener\" href=\"https:\/\/zh.wikipedia.org\/wiki\/%E8%BF%90%E5%8A%A8%E8%A1%A5%E5%81%BF\" target=\"_blank\">\u5e27\u95f4\u538b\u7f29<\/a>\uff09\uff0c<strong><span class=\"has-inline-color has-vivid-green-cyan-color\">\u53ea\u5355\u72ec\u7684\u5bf9\u67d0\u4e00\u5e27\u8fdb\u884c\u538b\u7f29<\/span><\/strong>\uff0c\u800c\u4e0d\u8003\u8651\u5f71\u50cf\u756b\u9762\u4e2d\u4e0d\u540c\u5e27\u4e4b\u95f4\u7684\u53d8\u5316\u3002\u56e0\u6b64<strong><span class=\"has-inline-color has-vivid-green-cyan-color\">\u538b\u7f29\u6548\u7387\u6bd4\u8f83\u4f4e<\/span><\/strong>\uff0c\u4e00\u822c\u4f4e\u4e8e1:20\uff0c\u800c\u4f7f\u7528\u4e86\u5e27\u95f4\u538b\u7f29\u7684\u73b0\u4ee3\u5f71\u50cf\u538b\u7f29\u683c\u5f0f\uff08\u5982<a href=\"https:\/\/zh.wikipedia.org\/wiki\/MPEG1\" target=\"_blank\" rel=\"noreferrer noopener\">MPEG1<\/a>\u3001<a href=\"https:\/\/zh.wikipedia.org\/wiki\/MPEG2\" target=\"_blank\" rel=\"noreferrer noopener\">MPEG2<\/a>\u548c<a href=\"https:\/\/zh.wikipedia.org\/wiki\/H.264\/MPEG-4_AVC\" target=\"_blank\" rel=\"noreferrer noopener\">H.264\/MPEG-4 AVC<\/a>\uff09\u4e00\u822c\u80fd\u8d85\u8fc71:50.\u7531\u4e8e\u5404\u5e27\u76f4\u63a5\u662f\u76f8\u4e92\u72ec\u7acb\u7684\uff0cM-JPEG\u7684\u7f16\u89e3\u7801\u5728\u5bf9\u8fd0\u7b97\u80fd\u529b\u548c\u5185\u5b58\u7684\u8981\u6c42\u8f83\u4f4e\u3002\u200b<\/p>\n\n\n\n<p>JFIF \u662f JPEG File Interchange Format \u7684\u7f29\u5199\uff0c\u4e5f\u5373 JPEG \u6587\u4ef6\u4ea4\u6362\u683c\u5f0f\u3002JFIF \u662f\u4e00\u4e2a\u56fe\u7247\u6587\u4ef6\u683c\u5f0f\u6807\u51c6\uff0c\u5b83\u662f\u4e00\u79cd\u4f7f\u7528 JPEG \u56fe\u50cf\u538b\u7f29\u6280\u672f\u5b58\u50a8\u6444\u5f71\u56fe\u50cf\u7684\u65b9\u6cd5\u3002JFIF \u4ee3\u8868\u4e86\u4e00\u79cd&#8221;\u901a\u7528\u8bed\u8a00&#8221;\u6587\u4ef6\u683c\u5f0f\uff0c\u5b83\u662f\u4e13\u95e8\u4e3a\u65b9\u4fbf\u7528\u6237\u5728\u4e0d\u540c\u7684\u8ba1\u7b97\u673a\u548c\u5e94\u7528\u7a0b\u5e8f\u95f4\u4f20\u8f93 JPEG \u56fe\u50cf\u800c\u8bbe\u8ba1\u7684\u8bed\u8a00\u3002 JPEG\u59d4\u5458\u4f1a\u5728\u5236\u5b9aJPEG\u6807\u51c6\u65f6\uff0c\u5b9a\u4e49\u4e86\u8bb8\u591a\u6807\u8bb0\u7801(marker)\u6216\u6807\u8bb0\u6bb5(marker segments)\u7ec4\u6210\uff0c\u7528\u6765\u533a\u5206\u548c\u8bc6\u522b\u56fe\u50cf\u6570\u636e\u53ca\u5176\u76f8\u5173\u4fe1\u606f\u3002\u76ee\u524d\uff0c\u4f7f\u7528\u6bd4\u8f83\u5e7f\u6cdb\u7684\u662f\u5176\u4ea4\u6362\u683c\u5f0fJFIF(Jpeg File Interchange Format)\u3002JPEG\u7684\u6bcf\u4e2a\u6807\u8bb0\u7801\u90fd\u662f\u75312 \u4e2a\u5b57\u8282\u7ec4\u6210\uff0c\u5176\u524d\u4e00\u4e2a\u5b57\u8282\u662f\u56fa\u5b9a\u503c<strong><span class=\"has-inline-color has-luminous-vivid-orange-color\">0xFF<\/span><\/strong> \uff0c\u6bcf\u4e2a\u6807\u8bb0\u7801\u4e4b\u524d\u8fd8\u53ef\u4ee5\u6dfb\u52a0\u6570\u76ee\u4e0d\u9650\u76840xFF\u586b\u5145\u5b57\u8282\u3002<strong>JPEG\u6587\u4ef6\u4e2d\u7684\u5b57\u8282\u662f\u6309\u7167\u6b63\u5e8f\u6392\u5217\u7684\uff0c\u5373\u9ad8\u4f4d\u5b57\u8282\u5728\u524d\uff0c\u4f4e\u4f4d\u5b57\u8282\u5728\u540e<\/strong> \u3002<\/p>\n\n\n\n<p>\u200b<\/p>\n\n\n\n<p>\u53c2\u8003\u6587\u7ae0\uff1a<em><a href=\"https:\/\/blog.csdn.net\/htjx99\/article\/details\/12440513?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163863603316780255270541%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&amp;request_id=163863603316780255270541&amp;biz_id=0&amp;utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-12440513.first_rank_v2_pc_rank_v29&amp;utm_term=MJPEG%E6%A0%BC%E5%BC%8F%E5%92%8C%E7%A0%81%E6%B5%81%E5%88%86%E6%9E%90\">MJPEG\u683c\u5f0f\u548c\u7801\u6d41\u5206\u6790<\/a>   <a href=\"https:\/\/blog.csdn.net\/fengbingchun\/article\/details\/103528160?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163863607816780357225996%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&amp;request_id=163863607816780357225996&amp;biz_id=0&amp;utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-103528160.first_rank_v2_pc_rank_v29&amp;utm_term=%E8%A7%86%E9%A2%91%E7%BC%96%E8%A7%A3%E7%A0%81%E7%B1%BB%E5%9E%8BMJPEG%E6%95%B0%E6%8D%AE%E6%A0%BC%E5%BC%8F%E4%BB%8B%E7%BB%8D\" target=\"_blank\" rel=\"noreferrer noopener\">\u89c6\u9891\u7f16\u89e3\u7801\u7c7b\u578bMJPEG\u6570\u636e\u683c\u5f0f\u4ecb\u7ecd<\/a><\/em>\u6211\u4eec\u89e3\u7801\u4e3b\u8981\u662f\u4e3a\u4e86\u5c06mjpeg\u56fe\u50cf\u89e3\u7801\u4e3a\u539f\u59cb\u7684<strong><span class=\"has-inline-color has-vivid-green-cyan-color\">RGB\\YUV<\/span><\/strong>\u6570\u636e\uff0c\u53ef\u4ee5\u4f7f\u7528libjpeg\uff0cmjpegtools\uff0cnvjpeg\u7b49\u5e93\u6765\u89e3\u7801\u89e3\u7801\u53ef\u4ee5\u53c2\u8003\uff1a<a href=\"https:\/\/github.com\/fengbingchun\/OpenCV_Test\" target=\"_blank\" rel=\"noreferrer noopener\">OpenCV_Test<\/a><\/p>\n\n\n\n<p>\u5177\u4f53\u6d41\u7a0b\u662f\u5728Socket\u4e2d\u8bfb\u51fa\u5168\u90e8\u6570\u636e\uff0c\u4e4b\u540e\u9700\u8981\u627e\u5230\u56fe\u7247\u5f00\u5934\u4f4d\u7f6e\u5e76\u8bfb\u51fa\u5934\u4fe1\u606f\uff08\u6570\u636e\u6d41\u957f\u5ea6\u7b49\u4fe1\u606f\uff09\uff0c\u4e4b\u540e\u4ece<span class=\"has-inline-color has-luminous-vivid-orange-color\"><strong>(byte)0xFF<\/strong>, <strong>(byte)0xD8<\/strong><\/span> \u5f00\u59cb\u8bfb\u4e00\u5b9a\u7684\u6570\u636e\uff0c\u76f8\u5173\u7684\u4ee3\u7801\u53c2\u8003\u4e86<a href=\"https:\/\/blog.csdn.net\/ruoke00\/article\/details\/104855581?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163863628716780366531352%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&amp;request_id=163863628716780366531352&amp;biz_id=0&amp;utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-2-104855581.first_rank_v2_pc_rank_v29&amp;utm_term=esp32cam+%E8%A7%86%E9%A2%91%E6%B5%81&amp;spm=1018.2226.3001.4187\" target=\"_blank\" rel=\"noreferrer noopener\">opencv\u8bfb\u53d6<em>esp32cam<\/em>\u6444\u50cf\u5934<em>\u89c6\u9891\u6d41<\/em><\/a> \u8fd9\u7bc7\u6587\u7ae0\uff0c\u91cc\u9762\u8bb2\u4e86\u4f7f\u7528VS studio\u8fdb\u884c\u89c6\u9891\u6d41\u7684\u8bfb\u53d6\u3002\u200b<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u4f7f\u7528webserver \u4f20\u8f93\u89c6\u9891\u6d41<\/h3>\n\n\n\n<p>\u5177\u4f53\u6d41\u7a0b\u4e0d\u5728\u7ec6\u8bb2\uff0c\u4e3b\u8981\u601d\u8def\u662f\u5728esp32\u4e2d\u5efa\u7acb\u4e00\u4e2awebserver\uff0c\u4e4b\u540e\u8bfb\u53d6\u89c6\u9891\u5e27\uff0c\u5728\u5ba2\u6237\u7aef\u901a\u8fc7get\u65b9\u6cd5\u83b7\u53d6\u5230\u89c6\u9891\u6d41\u3002\u5ba2\u6237\u7aef\u5c31\u662f\u4e0a\u4f4d\u673a\uff0c\u5229\u7528OpenCV\u7684openCapture\u7c7b\u5c31\u53ef\u4ee5\u76f4\u63a5\u901a\u8fc7\u7f51\u5740\u62ff\u5230\u6d41\u3002esp32cam\u4e2d\u5efa\u7acbwebserver\u7684\u4ee3\u7801\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ \u89c6\u9891\u4f20\u8f93\nOV2640 cam;\nWebServer server(80);\ncamera_config_t config;\nconst char HEADER&#91;] = \"HTTP\/1.1 200 OK\\r\\n\" \\\n                      \"Access-Control-Allow-Origin: *\\r\\n\" \\\n                      \"Content-Type: multipart\/x-mixed-replace; boundary=123456789000000000000987654321\\r\\n\";\nconst char BOUNDARY&#91;] = \"\\r\\n--123456789000000000000987654321\\r\\n\";\nconst char CTNTTYPE&#91;] = \"Content-Type: image\/jpeg\\r\\nContent-Length: \";\nconst int hdrLen = strlen(HEADER);\nconst int bdrLen = strlen(BOUNDARY);\nconst int cntLen = strlen(CTNTTYPE);\nconst char JHEADER&#91;] = \"HTTP\/1.1 200 OK\\r\\n\" \\\n                       \"Content-disposition: inline; filename=capture.jpg\\r\\n\" \\\n                       \"Content-type: image\/jpeg\\r\\n\\r\\n\";\nconst int jhdLen = strlen(JHEADER);\n\nvoid handle_jpg_stream(void)\n{\n  char buf&#91;32];\n  int s;\n\n  WiFiClient client = server.client();\n\n  client.write(HEADER, hdrLen);\n  client.write(BOUNDARY, bdrLen);\n\n  while (true)\n  {\n    if (!client.connected()) break;\n    cam.run();\n    s = cam.getSize();\n    client.write(CTNTTYPE, cntLen);\n    sprintf( buf, \"%d\\r\\n\\r\\n\", s );\n    client.write(buf, strlen(buf));\n    client.write((char *)cam.getfb(), s);\n    client.write(BOUNDARY, bdrLen);\n  }\n}\n\nvoid handle_jpg(void)\n{\n  WiFiClient client = server.client();\n\n  if (!client.connected()) return;\n  cam.run();\n  client.write(JHEADER, jhdLen);\n  client.write((char *)cam.getfb(), cam.getSize());\n}\n\nvoid handleNotFound()\n{\n  String message = \"Server is running!\\n\\n\";\n  message += \"URI: \";\n  message += server.uri();\n  message += \"\\nMethod: \";\n  message += (server.method() == HTTP_GET) ? \"GET\" : \"POST\";\n  message += \"\\nArguments: \";\n  message += server.args();\n  message += \"\\n\";\n  server.send(200, \"text \/ plain\", message);\n}\n\n\/\/ setup \u51fd\u6570\u9700\u8981\u5bf9\u76f8\u673a\u53c2\u6570\u8fdb\u884c\u521d\u59cb\u5316\n\n\/\/ \u7a0b\u5e8f\u4e3b\u5faa\u73af:\u6838\u5fc31\nvoid loop()\n{\n    server.handleClient();\n}<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">\u603b\u4f53\u8f6f\u4ef6\u6846\u67b6\u8bbe\u8ba1<\/h1>\n\n\n\n<p>\u6700\u540e\u653e\u4e00\u5f20\u8f6f\u4ef6\u6846\u67b6\u56fe\u7ed3\u675f\u6211\u7684\u7b14\u8bb0\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/image-20-904x1024.png'><img class=\"lazyload lazyload-style-8\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"904\" height=\"1024\" data-original=\"http:\/\/blog.heene.tech\/wp-content\/uploads\/2021\/12\/image-20-904x1024.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-129\"  sizes=\"auto, (max-width: 904px) 100vw, 904px\" \/><\/div><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>\u5199\u5728\u524d\u9762 \u672c\u9879\u76ee\u5386\u65f6\u4e00\u4e2a\u591a\u6708\uff0c\u662f\u6211\u7684\u7b2c\u4e00\u4e2a\u57fa\u4e8e\u673a\u5668\u89c6\u89c9\u68c0\u6d4b\u7684\u9879\u76ee\u4e5f\u662f\u6211\u7b2c\u4e00\u4e2a\u5d4c\u5165\u5f0f\u9879\u76ee\uff0c\u5728\u5236\u4f5c\u8fd9\u4e2a\u9879\u76ee\u8fc7\u7a0b\u4e2d\u6211 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":27,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[2,4,5],"class_list":["post-22","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-embedded","tag-gui","tag-4","tag-5"],"_links":{"self":[{"href":"https:\/\/blog.heene.tech\/index.php\/wp-json\/wp\/v2\/posts\/22","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.heene.tech\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.heene.tech\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.heene.tech\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.heene.tech\/index.php\/wp-json\/wp\/v2\/comments?post=22"}],"version-history":[{"count":0,"href":"https:\/\/blog.heene.tech\/index.php\/wp-json\/wp\/v2\/posts\/22\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.heene.tech\/index.php\/wp-json\/wp\/v2\/media\/27"}],"wp:attachment":[{"href":"https:\/\/blog.heene.tech\/index.php\/wp-json\/wp\/v2\/media?parent=22"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.heene.tech\/index.php\/wp-json\/wp\/v2\/categories?post=22"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.heene.tech\/index.php\/wp-json\/wp\/v2\/tags?post=22"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}