• 本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途。如有不对之处,请留言,本人及时更改。

1、 爬坑学习新旅程,虚拟机搭建esp32开发环境,打印 “Hellow World”。
2、 巧用eclipes编辑器,官方教程在在Windows下搭建esp32开发环境,打印 “Hellow World”。
3、 认识基本esp32的GPIO接口,开始点亮您的第一盏 LED和中断回调实现按键功能 。
4、体会esp32的强大的定时器功能, 实现定时2s闪烁一盏LED灯。
5、接触实践esp32的pwm宽度脉冲功能, 实现呼吸效果闪烁一盏LED灯。
6、smartConfig和微信airKiss在esp32的实现,一键配网轻松快捷连接路由器。
7、利用GPIO中断做一个按键的短按和长按的回调事件,再也无须担心触发源。
8、esp32上实现本地 UDP 客户端和服务端角色,在局域网内实现通讯。
9、esp32上实现本地 TCP 客户端和服务端角色,可断线重连原路返回数据。
10、乐鑫esp32 SDK编程利用rmt驱动ws2812七彩灯,实现彩虹渐变效果。
11、入门 乐鑫esp-adf 音频框架开发,esp32造一个蓝牙耳机,实现切换歌曲,获取歌曲信息等功能。
12、开源一个微信公众号airkiss配网esp32以及局域网发现功能的工程,分享一个airkiss配网小工具。
13、esp32 内置 dns 服务器,无需外网访问域名返回指定网页。
14、esp32 sdk编程实现门户强制认证,连接esp32热点之后,自动强制弹出指定的登录界面。
15、认识本地离线语音唤醒识别框架 esp-skainet ,实现较低成本的硬件语音本地识别控制。
16、学习本地语音唤醒离线识别框架 esp-skainet ,如何修改唤醒词? 如何自定义命令词?如何做意图动作?
17、全网首发,乐鑫esp32 sdk直连京东微联·小京鱼 · IoT开放平台,实现叮咚音响语音智能控制。
18、入门京东微联·小京鱼的控制面板H5开发,读懂vue语法,做自己的控制页面。
19、重磅开源,如何在微信小程序上ble蓝牙配网esp32,blufi的那些事!
20、一篇好文,开发过程中编译esp32固件太大,无法正常启动?教你如何自定义分区表partitions.csv。
21、 esp32蓝牙配网blufi的高度封装,集成简单、使用简单、容易上手,提高开发效率!
22、讨论下程序员 “青春饭” 那些事,分享在esp32实现多种加密算法md5 |AES CBC-ECB| Sha1 | Sha256 等!
23、安信可 esp32-a1s 音频开发板移植最新 esp-adf 音频框架,小试牛刀如何实现在线文字转语音播放。
25、分享在 esp32 SDK实现冷暖光色温平滑调节的封装,轻松集成到您的项目去。
26、分享下如何在window下使用CMake编译,编译速度提高传统 make 编译一个档次。
27、windows10平台下自带的Linux安装 ESP8266/ESP32 环境,再无需额外安装虚拟机了。
28、安信可 ESP32-Cam 摄像头开发板二次开发 C SDK编程,实现MQTT远程拍照传输到私有服务器。

文章目录

  • 一、前言
  • 二、准备
    • 硬件
    • 软件
  • 三、服务器准备
  • 四、嵌入式代码详解
  • 五、私有云看到的效果
    • 另外,不要把我的博客作为学习标准,我的只是笔记,难有疏忽之处,如果有,请指出来,也欢迎留言哈!

一、前言

今天凌晨,乐鑫微信公众号发布了一篇文章,正式发布 ESP32-S3的芯片,与ESP32-S2对比,主要多了一个蓝牙协议栈。而与ESP32芯片对比,增强了很多;

ESP32-S3 拥有 44 个可编程 GPIO(比 ESP32 多 10 个),支持所有常用外设接口,如 SPI、I2S、I2C、PWM、RMT、ADC、DAC、UART、SD/MMC 主机控制器和 TWAI 控制器等。用户可将其中的 14 个 GPIO 配置为用于 HMI 交互的电容触摸输入端。此外,ESP32-S3 搭载了超低功耗协处理器 (ULP),支持多种低功耗模式,广泛适用于各类低功耗应用场景。

不过令我失望的是,依然不支持 5G WiFi 频段。


今天给大家带来东家的摄像头开发板,自己学习的方向多种多样,整理之前的项目,给大家做下参考,挺好玩的,特别是一些很常见的需求,比如今天给大家带来的是:摄像头开发板实现MQTT远程拍照传输到私有服务器

二、准备

硬件

  • 安信可 ESP32-Cam 开发板。

  • TTL-USB 调试工具(推荐使用 CP2102串口芯片的 ,保证足够的电压电流)。

软件

  • 环境搭建:Linux环境搭建 /relese/v3.3.2 分支
  • 工具链设置:下载 toolchain,博主使用的版本是:gcc version 5.2.0 (crosstool-NG crosstool-ng-1.22.0-97-gc752ad5)
  • Python版本:Python 2.7.17

三、服务器准备

本代码以HTTP 协议POST提交 ,二进制形式把图片上传到服务器。其格式如下:

POST /index.php HTTP/1.1
Host: www.domain.com
Content-Type: image/jpeg
Content-Length: 12540"<file contents here>"

因此,服务器要以数据流接收,以 PHP语言为例:

//接受数据流
$stream = file_get_contents('php://input');
//数据流转化为png格式,并保存在指定的位置
$len = file_put_contents('/www/wwwroot/static/' . time() . ".png", $stream);

四、嵌入式代码详解

文件目录说明:

├─1_take_pic_http_to_cloud
│ ├─components 摄像头驱动代码组件
│ ├─main 用户程序
│ │ ├─app_wifi.c/h 连接路由器的逻辑实现
│ │ ├─main.c 主文件程序入口

这里主要熟悉下 HTTP请求,我以最简单的形式上传,设置 headerimage/jpeg,把图片buff放在body里面即可;

主文件逻辑代码协议详解:

static void http_test_task(void *pvParameters)
{//等待Wi-Fi连接成功app_wifi_wait_connected();ESP_LOGI(TAG, "Http Start");size_t _jpg_buf_len;uint8_t *_jpg_buf;camera_fb_t *pic = NULL;esp_err_t res = ESP_OK;size_t fb_len = 0;//配置服务器相关信息esp_http_client_config_t config = {.url = "http://www.domain.com/index.php",.method = HTTP_METHOD_POST,.event_handler = _http_event_handler,.buffer_size = 4096,.timeout_ms = 10000,};esp_http_client_handle_t client = esp_http_client_init(&config);//开始拍照pic = esp_camera_fb_get();if (!pic){ESP_LOGE(TAG, "Camera capture failed");}else{//拍照成功,获取其大小、尺寸等信息ESP_LOGI(TAG, "Camera capture OK , Its size was: %zu bytes", pic->len);ESP_LOGI(TAG, "Camera capture OK , Its width was: %d", pic->width);ESP_LOGI(TAG, "Camera capture OK , Its height was: %d ", pic->height);//设置HTTP请求头为image/jpg表示图片类型res = esp_http_client_set_header(client, "Content-Type", "image/jpg");if (res != ESP_OK){ESP_LOGE(TAG, "esp_http_client_set_header result code : [%s]", esp_err_to_name(res));goto end;}//把图片放在body里面res = esp_http_client_set_post_field(client, (const char *)pic->buf, pic->len);if (res != ESP_OK){ESP_LOGE(TAG, "esp_http_client_set_post_field result  code : [%s]", esp_err_to_name(res));goto end;}vTaskDelay(1000 / portTICK_RATE_MS);//开始执行请求服务器res = esp_http_client_perform(client);//判断是否请求成功if (res == ESP_OK){ESP_LOGI(TAG, "HTTPS Status = %d, content_length = %d", esp_http_client_get_status_code(client), esp_http_client_get_content_length(client));}else{ESP_LOGE(TAG, "perform http request %s", esp_err_to_name(res));}}end:
{esp_camera_fb_return(pic);esp_http_client_cleanup(client);free(buffer);
}ESP_LOGI(TAG, "Http End");vTaskDelete(NULL);
}
  • 收到MQTT信息后,立刻拍照上传;
 case MQTT_EVENT_DATA:ESP_LOGI(TAG, "MQTT_EVENT_DATA");printf("TOPIC=%.*s\r\n", event->topic_len, event->topic);printf("DATA=%.*s\r\n", event->data_len, event->data);//开始拍照上传xTaskCreate(&http_test_task, "http_test_task", 8192, NULL, 5, NULL);printf("     esp_get_free_heap_size : %d  \n", esp_get_free_heap_size());
break;

五、私有云看到的效果

  • 拍照之后,图片大小 15KB 左右
  • 分辨率:640 x 480
  • 宽度:640像素
  • 高度:480像素

  • 关注本人微信公众号 “徐宏blog” ,发送 210101 获取源码!

另外,不要把我的博客作为学习标准,我的只是笔记,难有疏忽之处,如果有,请指出来,也欢迎留言哈!

  • 玩转esp8266带你飞、加群QQ群,不喜的朋友勿喷勿加:434878850
  • 个人邮箱:xuhongv@yeah.net 24小时在线,有发必回复!
  • esp8266源代码学习汇总(持续更新,欢迎star):https://github.com/xuhongv/StudyInEsp8266
  • esp32源代码学习汇总(持续更新,欢迎star):https://github.com/xuhongv/StudyInEsp32
  • 关注下面微信公众号二维码,干货多多,第一时间推送!

乐鑫Esp32学习之旅28 安信可 ESP32-Cam 摄像头开发板二次开发 C SDK编程,实现MQTT远程拍照传输到私有服务器。(附带源码)相关推荐

  1. 乐鑫Esp32学习之旅29 安信可 ESP32-Cam 摄像头开发板二次开发 C SDK编程,实现本地视频流监控。(附带源码)

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. 爬坑学习新旅程,虚拟机搭建esp32开发环境,打印 " ...

  2. 乐鑫Esp32学习之旅 23 安信可 esp32-a1s 音频开发板移植最新 esp-adf 音频框架,小试牛刀如何实现在线文字转语音播放。

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. 爬坑学习新旅程,虚拟机搭建esp32开发环境,打印 " ...

  3. 乐鑫esp8266学习rtos3.0笔记第7篇:我又来了,基于rtos3.0版本 SDK编程 SPI 驱动 ws2812b 七彩灯,代码全部开源奉献给你们!

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,不做开发板.仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 序号 SDK版本 内容 链接 1 nonos2.0 搭建 ...

  4. 乐鑫Esp32学习之旅28 分享在 esp32 SDK实现驱动 Flash W25Q32 的封装,扩大容量存储更多的资源。(开源源码工程)。

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 系列一:ESP32系列模组基础学习系列笔记 1. 爬坑学习新旅程,虚 ...

  5. 乐鑫Esp32学习之旅 安信可 ESP32-Cam 摄像头开发板二次开发 C SDK编程,拍照图片通过有线串口传到上位机PC端。(附带设备端+PC端源码)

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 系列一:ESP32系列模组基础学习系列笔记 1. 爬坑学习新旅程,虚 ...

  6. 乐鑫Esp32学习之旅 18 入门京东微联·小京鱼的控制面板H5开发,读懂vue语法,做自己的控制页面。

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. 爬坑学习新旅程,虚拟机搭建esp32开发环境,打印 " ...

  7. 乐鑫Esp32-S2学习之旅① 入门 ESP32-S2 环境搭建 ,分享如何直连苹果智能家居 HomeKit 平台,轻松语音 Siri 控制!

    本系列博客学习由非乐鑫官方人员 半颗心脏 潜心所力所写,不做开发板.仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 基于乐鑫ESP32 芯片模组 C SDK二次开发的技 ...

  8. 乐鑫Esp32-S2学习之旅② ESP32-S2 控制 ws2812b 实现五彩斑斓的效果,代码开源!

    本系列博客学习由非乐鑫官方人员 半颗心脏 潜心所力所写,不做开发板.仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 基于乐鑫ESP32 芯片模组 C SDK二次开发的技 ...

  9. 【离线语音专题④】安信可VC离线语音开发板二次开发语音控制LED灯

    系列文章目录 [离线语音专题①]安信可最新离线语音模组VC系列出厂固件使用教程--SDK开源? [离线语音专题②]安信可语音开放平台的使用--VC系列SDK的获取 [离线语音专题③]安信可VC系列离线 ...

最新文章

  1. oracle对某两列求和再求和_函数实战:多列条件求和
  2. sox处理mp3_SoX 音频处理工具使用方法
  3. 家用计算机来源,美计算机专家称BBS才是博客真正起源
  4. 利用用户级线程提高多线程应用的性能
  5. 优秀软件架构师成长之路
  6. 分布式服务框架XXL-RPC
  7. notes java api_如何使用Java来调用Notes API发送邮件(包括附件)
  8. macos下如何配置ssh无密码登录
  9. 【实战分享】js生成word(docx),以及将word转成pdf解决方案分享
  10. Mac OS X 10.13.6升级到更高版本的方法
  11. IT猎头之挖角与反挖角
  12. ​巴比特发布2020年数据报告:平台年度阅读量突破16亿,活跃作者超500名
  13. vs c语言打印心形情书,最美C语言情书(输出心形图案).doc
  14. 如何成为一名大数据开发工程师
  15. oracle 幻影读,索引+事务
  16. Error: mkl-service + Intel(R) MKL: MKL_THREADING_LAYER=INTEL is incompatible with libgomp.so.1 libra
  17. 光眼图和电眼图_直调光模块中ER和OMA
  18. git push命令详解
  19. ceph基础架构详解
  20. MD5 hash碰撞实现解密

热门文章

  1. 试题 算法训练 逗志芃的危机 java实现
  2. Linux平台屏幕录像工具RecordMyDesktop
  3. Laravel路由中不固定数量的参数如何实现?
  4. spring boot配置mysql
  5. Find命令示例(第二部分)----15个极好的Linux find命令示例
  6. 工具模版 | 如何制定产品路线图?
  7. HashTable和HashMap
  8. python 单下划线及双下划线使用方法
  9. 【石头和爸爸】第三篇:下棋
  10. canvas初探实践-第二篇