STM32教学——JQ8900语音模块+光照传感器+4G模块数据上传阿里云物联网

这篇具有很好参考价值的文章主要介绍了STM32教学——JQ8900语音模块+光照传感器+4G模块数据上传阿里云物联网。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

硬件设计

原理图
jq8900,STM32从基础到项目,stm32,阿里云,物联网,嵌入式硬件,c语言
PCB
jq8900,STM32从基础到项目,stm32,阿里云,物联网,嵌入式硬件,c语言
实物图
jq8900,STM32从基础到项目,stm32,阿里云,物联网,嵌入式硬件,c语言
jq8900,STM32从基础到项目,stm32,阿里云,物联网,嵌入式硬件,c语言

4G模块

选用EC200U模块,集成4g和GPS以及蓝牙功能
通过串口2与4G模块串口连接,串口传输数据指令。

第一个命令
 Uart2_SendStr("ATE1\r\n"); 

获取模块的版本
 Uart2_SendStr("ATI\r\n");

获取卡号,类似是否存在卡的意思
 Uart2_SendStr("AT+CIMI\r\n");

查询激活状态
 Uart2_SendStr("AT+CGATT?\r\n");

查看获取CSQ值
 Uart2_SendStr("AT+CSQ\r\n");

这个时候4g模块已经成功启动,下一步注册进阿里云物联网平台

关闭当前的连接,保证这次的使用
 Uart2_SendStr("AT+QMTDISC=0\r\n");

发送阿里云的配置参数(设备三要素)
 sprintf(ATSTR,"AT+QMTCFG=\"ALIAUTH\",0,\"%s\",\"%s\",\"%s\"\r\n"
,PRODUCEKEY,DEVICENAME,DEVICESECRET);

登录阿里云平台
 Uart2_SendStr("AT+QMTOPEN=0,
\"iot-as-mqtt.cn-shanghai.aliyuncs.com\",1883\r\n");

发送链接到阿里云
 sprintf(ATSTR,"AT+QMTCONN=0,\"%s\"\r\n",DEVICENAME);
 Uart2_SendStr(ATSTR);

然后就是上发数据给阿里云平台

发送命令
sprintf(ATSTR,"AT+QMTPUB=0,0,0,0,\"/sys/%s/%s/thing/event/property/post\"\r\n",PRODUCEKEY,DEVICENAME);    
Uart2_SendStr(ATSTR);

再组建CJSON数据,自己定义编写就行了
json[]="{\"id\":\"123\",\"version\":\"1.0\",\"params\":
{\"adc1\":{\"value\":%d},\"adc2\":
{\"value\":%d},\"GeoLocation\":{ \"value\":
{\"Latitude\":%s,\"Longitude\":%s,\"Altitude\":39.9935723,\"CoordinateSystem\":2}}},\"method\":\"thing.event.property.post\"}";

再发送
Uart2_SendStr((char *)send_json);

上发了之后阿里云就可以收到这些数据
jq8900,STM32从基础到项目,stm32,阿里云,物联网,嵌入式硬件,c语言

语音模块(JQ8900)

根据厂家提供的手册资料,可以知道这款芯片可以有多种触发方式。根据手册上的内容以及商家提供的语音合成软件,把语音载入进去,按照特定的方式播放出来。
jq8900,STM32从基础到项目,stm32,阿里云,物联网,嵌入式硬件,c语言
jq8900,STM32从基础到项目,stm32,阿里云,物联网,嵌入式硬件,c语言

用一线串口触发的方式就体现了读取芯片数据的协议
jq8900,STM32从基础到项目,stm32,阿里云,物联网,嵌入式硬件,c语言

/*******************************************************
功能描述: 单线控制单字节发送函数
入口参数: DATA:发送数据
返 回 值: none
其他说明: 将需要发送的数据作为形参传入
*******************************************************/
void OneLine_SendData(uint8_t DATA)
{
	uint8_t i;
	
	JQ8x00_VPP_Set();		//开始信号
	JQ8x00_us(100);
	JQ8x00_VPP_Clr();
	JQ8x00_ms(3);
	
	for(i=0;i<8;i++)
	{
		JQ8x00_VPP_Set();
		if(DATA & 0x01)
		{
			JQ8x00_us(1500);
			JQ8x00_VPP_Clr();
			JQ8x00_us(500);
		}
		else
		{
			JQ8x00_us(500);
			JQ8x00_VPP_Clr();
			JQ8x00_us(1500);
		}
		DATA >>= 1;
	} 
	
	JQ8x00_VPP_Set();
}

光照传感器和一氧化碳传感器

jq8900,STM32从基础到项目,stm32,阿里云,物联网,嵌入式硬件,c语言

jq8900,STM32从基础到项目,stm32,阿里云,物联网,嵌入式硬件,c语言

这两款传感器都是可以输出模拟信号,所以我们只需要用单片机的AD转换功能就可以读取到这些传感器的数据。

void  Adc_Init(void)
{ 	
	GPIO_InitTypeDef GPIO_InitStructure;
	ADC_InitTypeDef ADC_InitStructure;
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
		
	RCC_ADCCLKConfig(RCC_PCLK2_Div6);
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7 ;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOA, &GPIO_InitStructure);
		
	
	ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
	ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
	ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
	ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;
	ADC_InitStructure.ADC_ScanConvMode = DISABLE;
	ADC_InitStructure.ADC_NbrOfChannel = 1;
	ADC_Init(ADC1, &ADC_InitStructure);
	
	ADC_Cmd(ADC1, ENABLE);
	
	ADC_ResetCalibration(ADC1);
	while (ADC_GetResetCalibrationStatus(ADC1) == SET);
	ADC_StartCalibration(ADC1);
	while (ADC_GetCalibrationStatus(ADC1) == SET);

}


//获得ADC值
//ch:通道值 0~3
u16 Get_Adc(u8 ch)   
{
  	//设置指定ADC的规则组通道,一个序列,采样时间
	ADC_RegularChannelConfig(ADC1, ch, 1, ADC_SampleTime_239Cycles5 );	
	//使能
	ADC_SoftwareStartConvCmd(ADC1, ENABLE);		
	//等待转换结束 
	while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));
	//返回最近一次ADC1规则组的转换结果
	return ADC_GetConversionValue(ADC1);	
}

//计算ADC采集的数据 第二个参数是采集多少次 最后算平均值
u16 Get_Adc_Average(u8 ch,u8 times)
{
	u32 temp_val=0;
	u8 t;
	for(t=0;t<times;t++)
	{
		temp_val+=Get_Adc(ch);
		delay_ms(5);
	}
	return temp_val/times;
} 					  

阿里云物联网

根据阿里云物联网的教程,新建产品,绑定设备等等,可以自主设计网页和APP

jq8900,STM32从基础到项目,stm32,阿里云,物联网,嵌入式硬件,c语言

这个是网页网址,做好之后就可以发布,所有人都可以查看这个网址:
https://a120qy8usrcblfyf.vapp.cloudhost.link/page/1206305?token=d8d040b1de22d8fb881e858373a7ae3f

有问题可以加企鹅群 658476482 交流文章来源地址https://www.toymoban.com/news/detail-839947.html

到了这里,关于STM32教学——JQ8900语音模块+光照传感器+4G模块数据上传阿里云物联网的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32使用HAL库BH1750光照度传感器

    单片机:STM32F103C8T6 光照度传感器:BH1750 IDE:KEIL+STM32CUBEMX 1、STM32CUBEMX 1、头文件 2、C文件 3、主函数操作BH1750

    2024年02月14日
    浏览(40)
  • STM32外设芯片驱动学习记录 —— (一) BH1750光照传感器驱动开发

    一、芯片介绍 二、Datasheet解读 1.硬件说明 2.寄存器说明 3.通信过程 三、驱动代码编写 1.软件I2C驱动 2. BH1750芯片驱动函数 总结             BH1750是16位数字输出型,环境光强度传感器集成电路,使用I2C接口通信,工作电压:VCC(2.4~3.6V),I2C电平(1.65~VCC),用于各类消费类LCD屏

    2024年02月02日
    浏览(87)
  • Stm32_标准库_8_ADC_光敏传感器_测量具体光照强度

    ADC简介 测量方式 采用二分法比较数据 IO通道 ADC基本结构及配置路线 获取数字变量需要用到用到光敏电阻的AO口,AO端口接在PA0引脚即可 测得的模拟数据与实际光照强度之间的关系为 代码: 完整朴素代码: 效果: 此代码的不足之处在于每次写入数字都会提前占据固定位置,

    2024年02月04日
    浏览(46)
  • STM32控制JQ8400语音播报模块

    时间记录:2024/2/7 标示 说明 ONE LINE 一线操作引脚 BUSY 忙信号引脚,正在播放语音时输出高电平 RX 串口两线操作接收引脚 TX 串口两线操作发送引脚 GND 电源地引脚 DC-5V 电源引脚,3.3-5V DAC-R DAC输出右声道引脚 DAC-L DAC输出左声道引脚 SPK- 喇叭-引脚 SPK+ 喇叭+引脚 (1)时序图 (

    2024年04月11日
    浏览(43)
  • MQ-2烟雾传感器模块功能实现(STM32)

            MQ-2型烟雾传感器属于二氧化锡半导体气敏材料,属于表面离子式N型半导体。当处于200~300摄氏度时,二氧化锡吸附空气中的氧,形成氧的负离子吸附,使半导体中的电子密度减少,从而使其电阻值增加。当与烟雾接触时,如果晶粒间界处的势垒收到烟雾的调至而变

    2023年04月09日
    浏览(48)
  • STM32传感器外设集--心率模块(MAX30102)

    目录 ​​​​​​​ 一、模块介绍 二、资料获取连接  欢迎关注微信公众号--星之援工作室 发送(MAX30102) 三、接线方式 四、代码编写 main.c max30102.c max30102.h myiic.c myiic.h algorithm.c algorithm.h 五 、参考 MAX30102模块是一种集成了光学传感器和信号处理器的模块,广泛应用

    2024年01月22日
    浏览(52)
  • STM32 手势识别传感器模块(PAJ7620)学习

    目录 模块介绍: 基本部分: 引脚配置: 工作原理: 展示部分: 代码部分展示(在正点的基础上加了一个读手势去控制舵机): 视频展示: 基本部分: 手势模块搭载的芯片是PAJ7620,无论是正点原子的还是别的手势模块的底层是一致的,甚至代码也是通用的。 芯片内部集成了

    2024年02月07日
    浏览(48)
  • 基于STM32的双轴XY摇杆传感器模块使用

    本文主要介绍的是如何通过STM32核心板 控制 双轴XY摇杆传感器模块 以及将传感信息打印到串口调试助手 提示:以下是本篇文章正文内容,下面案例可供参考 外形如图所示,共五个引脚 分别是VCC GND X轴传感模拟量输出 以及 Y轴传感模拟量输出 以及一个SW按键数字量输出 摇杆

    2024年02月03日
    浏览(45)
  • STM32+Zigbee模块实现串口通信获取传感器数据

    1.两个Zigbee透传模块 2.两块32板(我手上的是VET6和RCT6的两块板子),其它的板子也可以,不过注意一下启动文件对应 3.颗粒物传感器 DL-22无线串口模块 1.工作模式分为点对点和广播模式 点对点模式,要设置一个发送端,一个接收端,根据它说明书进行设置就好,还需要设置相

    2023年04月08日
    浏览(49)
  • JQ8400语音模块-stm32f103c8t6(内含全代码)-亲测有效

    一.模块介绍 1.常见的JQ8400-FL语音模块有两种,一种是带3W功放,有4M的存储空间,可通过USB拷贝声音文件,通过单片机串口控制;另外一种是附有SD卡槽,用SD卡存储文件的文件(MP3格式)进行语音播报,也是通过单片机串口控制 2.我用的是二线串口通信,一线的没试过 3.程序

    2023年04月26日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包