STM32F407 您所在的位置:网站首页 edp存储 STM32F407

STM32F407

2024-02-16 14:38| 来源: 网络整理| 查看: 265

EDP协议

EDP协议文档说明:https://leoeinstein.lanzous.com/ifX1Ckfkaaf

服务器登录 登录流程:

(1)客户端发送连接请求(CONN_REQ) (2)服务器验证请求的合法性 (3)服务器发送一个回执(CONN_RESP)给客户端

Onenet 上的EDP、HTTP、MQTT服务器地址和端口号如下:

E D P: 183.230.40.39 PORT: 876 HTTP: 183.230.40.33 PORT: 80 MQTT: 183.230.40.39 PORT: 6002

在这里插入图片描述 其中请求包含三部分:消息头、选项和消息体。

1、消息头

包括消息的类型和剩余消息长度。

2、选项

包括协议名称、协议版本、连接标志、保持连接时间。

3、消息体

可能包含设备ID、用户ID(可选)、鉴权信息(看采取什么方式登录)。

设备ID、用户ID(可选)、鉴权信息,这三项内容都为长度+内容的字符串格式。

设备ID必须传递,若认证方式中不使用设备ID,应将设备ID长度设置为0;用户ID和鉴权信息,根据标志位若存在必须按顺序出现。

在这里插入图片描述

(绿色为消息头部分,黄色为可选的多个选项部分和蓝色为可选的消息体)

各部分具体如下图 在这里插入图片描述

登录方式

在这里插入图片描述

方式1: 设备ID+鉴权信息(api-key)

设备ID:申请设备时平台返回的ID; 鉴权信息:在平台申请的可以操作该设备的api-key字符串;

api-key: 在这里插入图片描述

方式2: 产品ID + 鉴权信息(auth_info)

产品ID:在平台添加产品时平台生成的ID;

鉴权信息:在平台申请设备时填写设备的auth_info属性(json对象字符串),该属性需要产品内具备唯一性

具体EDP协议解读可参考以下文章: https://open.iot.10086.cn/bbs/thread-632-1-1.html

onenet初始化程序

ONENET\EDP协议部分代码可参考onenet论坛的资料: https://open.iot.10086.cn/bbs/thread-863-1-1.html

论坛里面有很详细的资料哦,几乎都是稍微修改以下就可以用的了。

OV7670摄像头模块 引脚定义及连线 ov7670stm32f4VCC3.3VGNDGNDSCLPF10SDAPF9VSYNCPB7HREFPA4PCLKPA6XCLKPA8D7PE6D6PE5D5PB6D4PE4D3PC9D2PC8D1PC7D0PC6RETPG8PWDNPG9

OV7670中文资料手册: https://wenku.baidu.com/view/e60f19ea81c758f5f61f67df.html

OV7670初始化程序

ov7670.h

#ifndef _OV7670_H #define _OV7670_H #include "stm32f4xx.h" #define OV7670_RST_PW_RCC RCC_AHB1Periph_GPIOG #define OV7670_RST_PW_Pin GPIO_Pin_8|GPIO_Pin_9 #define OV7670_RST_PW_GPIO GPIOG #define OV7670_PWDN_H GPIO_SetBits(GPIOG,GPIO_Pin_9) //POWER DOWN控制信号 #define OV7670_PWDN_L GPIO_ResetBits(GPIOG,GPIO_Pin_9) //POWER DOWN控制信号 #define OV7670_RST_H GPIO_SetBits(GPIOG,GPIO_Pin_8) //复位控制信号 #define OV7670_RST_L GPIO_ResetBits(GPIOG,GPIO_Pin_8) //复位控制信号 #define PIC_START_X 0 //起始坐标x #define PIC_START_Y 0 //起始坐标y #define PIC_WIDTH 320 //照片长度 #define PIC_HEIGHT 200 //照片高度 extern uint16_t camera_buffer[PIC_WIDTH*PIC_HEIGHT+27]; // #define OV7670_MID 0X7FA2 #define OV7670_PID 0X7673 / u8 OV7670_Init(void); void OV7670_Light_Mode(u8 mode); void OV7670_Color_Saturation(u8 sat); void OV7670_Brightness(u8 bright); void OV7670_Contrast(u8 contrast); void OV7670_Special_Effects(u8 eft); void OV7670_Window_Set(u16 sx,u16 sy,u16 width,u16 height); void set_cif(void); #endif

ov7670.c部分函数

void OV7670_RST_PW_Init(void) { //设置IO GPIO_InitTypeDef GPIO_InitStructure; RCC_AHB1PeriphClockCmd(OV7670_RST_PW_RCC, ENABLE); //RESET,PWDN初始化设置 GPIO_InitStructure.GPIO_Pin = OV7670_RST_PW_Pin;//RESET,PWDN推挽输出 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; //推挽输出 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//100MHz GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉 GPIO_Init(OV7670_RST_PW_GPIO, &GPIO_InitStructure);//初始化 } //初始化OV7670 //返回0:成功 //返回其他值:错误代码 u8 OV7670_Init(void) { u16 i=0; u16 reg=0; OV7670_RST_PW_Init(); OV7670_PWDN_L; //POWER ON delay_ms(100); OV7670_RST_L; //复位OV7670 delay_ms(100); OV7670_RST_H; //结束复位 SCCB_Init(); //初始化SCCB 的IO口 SCCB_WR_Reg(0X12, 0x80); //软复位OV7670 delay_ms(50); reg=SCCB_RD_Reg(0X1c); //读取厂家ID 高八位 reg printf("HID:%d\r\n\r\n",reg); return 2; } //初始化 OV7670,采用QVGA分辨率(320*240) for(i=0;i GPIO_InitTypeDef GPIO_InitStructure; NVIC_InitTypeDef NVIC_InitStruct; USART_InitTypeDef USART_InitStructure; RCC_AHB1PeriphClockCmd(RCC_IO_WIFI,ENABLE); RCC_APB1PeriphClockCmd(RCC_USART_WIFI,ENABLE); NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); /* USART3 GPIO口配置 */ GPIO_InitStructure.GPIO_Pin=PIN_WIFI; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_Init(GPIO_WIFI, &GPIO_InitStructure); GPIO_PinAFConfig(GPIO_WIFI,AF_WIFI_TX,GPIO_AF_USART3); GPIO_PinAFConfig(GPIO_WIFI,AF_WIFI_RX,GPIO_AF_USART3); //USART3 IRQ NVIC_InitStruct.NVIC_IRQChannel = WIFI_IRQn; NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStruct.NVIC_IRQChannelSubPriority = 0; NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStruct); USART_InitStructure.USART_BaudRate = BAUDRATE_WIFI; USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_Init(WIFI_IO, &USART_InitStructure); USART_Cmd(WIFI_IO,ENABLE); USART_ITConfig(WIFI_IO, USART_IT_IDLE, ENABLE); USART_ITConfig(WIFI_IO, USART_IT_RXNE, ENABLE); } 项目 实物&效果图

在这里插入图片描述

工程文件

衷心感谢smitoo大佬的博文[抱拳]

https://blog.csdn.net/smitoo/article/details/108086791?ops_request_misc=&request_id=&biz_id=102&utm_term=stm32f4%25E4%25B8%258D%25E5%25B8%25A6fifo%25E7%259A%2584ov7670&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-0-108086791.first_rank_v2_pc_rank_v29

工程文件:https://download.csdn.net/download/LiangWF22/15052236

对了,下面的链接为CSDN图片大小设置教程:https://blog.csdn.net/weixin_44611096/article/details/105129215 不过表格的好像没找到怎么设置列宽。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有