小白从零开始:小程序阿里云平台控制stm32温湿度光照强度(软件篇)

文章目录

  • 前言
  • 一、Keil5+FLYMCU(软件烧录)
  • 二、DHT11温湿度模块驱动代码
  • 三、BH1750光照强度驱动代码
  • 四、代码资料包获取方式
  • 总结

前言

小白从零开始:小程序阿里云平台控制stm32温湿度光照强度(软件篇)

【DIY】stm32f103c8t6+mqtt阿里云+小程序+n多外设

使用工具:
硬件:
PCB设计: 立创EDA+嘉立创
硬件外设:stm32f103c8t6最小系统+dht11+bh1750+mq2+mq7+gps+0.96oled+蓝牙hc06+esp8266-01s
设计出来的总体是这样

软件:
代码编译:KEIL5、
代码烧录:FLYMCU


提示:以下是本篇文章正文内容,下面案例可供参考

一、Keil5+FLYMCU(软件烧录)

首先在写入代码之前,把KEIL5配置好



其次在烧录代码之前,把FLYMCU配置好

二、DHT11温湿度模块驱动代码

DHT11温湿度模块驱动代码

#include "dht11.h"
#include "delay.h"
void DHT11_Rst(void)
{                 DHT11_IO_OUT();   //SET OUTPUTDHT11_DQ_OUT=0;     //À­µÍDQDelay_Ms(20);     //À­µÍÖÁÉÙ18msDHT11_DQ_OUT=1;   //DQ=1Delay_Us(30);      //Ö÷»úÀ­¸ß20~40us
}
u8 DHT11_Check(void)
{   u8 retry=0;DHT11_IO_IN();//SET INPUTwhile (DHT11_DQ_IN&&retry<100)//DHT11»áÀ­µÍ40~80us{retry++;Delay_Us(1);};    if(retry>=100)return 1;else retry=0;while (!DHT11_DQ_IN&&retry<100)//DHT11À­µÍºó»áÔÙ´ÎÀ­¸ß40~80us{retry++;Delay_Us(1);};if(retry>=100)return 1;        return 0;
}
//´ÓDHT11¶ÁÈ¡Ò»¸öλ
//·µ»ØÖµ£º1/0
u8 DHT11_Read_Bit(void)
{u8 retry=0;while(DHT11_DQ_IN&&retry<100)//µÈ´ý±äΪµÍµçƽ{retry++;Delay_Us(1);}retry=0;while(!DHT11_DQ_IN&&retry<100)//µÈ´ý±ä¸ßµçƽ{retry++;Delay_Us(1);}Delay_Us(40);//µÈ´ý40usif(DHT11_DQ_IN)return 1;else return 0;
}u8 DHT11_Read_Data(u8 *temp,u8 *humi)
{        u8 buf[5];u8 i;DHT11_Rst();if(DHT11_Check()==0){for(i=0;i<5;i++)//¶ÁÈ¡40λÊý¾Ý{buf[i]=DHT11_Read_Byte();}if((buf[0]+buf[1]+buf[2]+buf[3])==buf[4]){*humi=buf[0];*temp=buf[2];}}else return 1;return 0;
}
//³õʼ»¯DHT11µÄIO¿Ú DQ ͬʱ¼ì²âDHT11µÄ´æÔÚ
//·µ»Ø1:²»´æÔÚ
//·µ»Ø0:´æÔÚ
u8 DHT11_Init(void)
{     GPIO_InitTypeDef  GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);   //ʹÄÜPG¶Ë¿ÚʱÖÓGPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;                 //PB11¶Ë¿ÚÅäÖÃGPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;         //ÍÆÍìÊä³öGPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStructure);              //³õʼ»¯IO¿ÚGPIO_SetBits(GPIOB,GPIO_Pin_11);                         //PG11 Êä³ö¸ßDHT11_Rst();  //¸´Î»DHT11return DHT11_Check();//µÈ´ýDHT11µÄ»ØÓ¦
}

三、BH1750光照强度驱动代码

BH1750光照强度驱动代码

#include "BH1750.h"
#include "delay.h"
//#include "oled.h"
//#include "oled_iic.h"
uchar    BUF[8];               //½ÓÊÕÊý¾Ý»º´æÇø
int   mcy;     //½øλ±êÖ¾/***¿ªÊ¼ÐźÅ***/
void BH1750_Start()
{SDA=1;                    //À­¸ßÊý¾ÝÏßSCL=1;                   //À­¸ßʱÖÓÏßDelay_Us(5);                 //ÑÓʱGPIO_ResetBits(bh1750_PORT, sda);                    //²úÉúϽµÑØDelay_Us(5);                 //ÑÓʱGPIO_ResetBits(bh1750_PORT, scl);                    //À­µÍʱÖÓÏß
}void BH1750_Stop()
{SDA=0;                   //À­µÍÊý¾ÝÏßSCL=1;                      //À­¸ßʱÖÓÏßDelay_Us(5);                 //ÑÓʱGPIO_SetBits(bh1750_PORT, sda);                    //²úÉúÉÏÉýÑØDelay_Us(5);                 //ÑÓʱ
}void BH1750_SendACK(int ack)
{GPIO_InitTypeDef GPIO_InitStruct;GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;  GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStruct.GPIO_Pin = sda;GPIO_Init(bh1750_PORT, &GPIO_InitStruct);  if(ack == 1)   //дӦ´ðÐźÅSDA=1; else if(ack == 0)SDA=0; elsereturn;           SCL=1;     //À­¸ßʱÖÓÏßDelay_Us(5);                 //ÑÓʱSCL=0;      //À­µÍʱÖÓÏßDelay_Us(5);                //ÑÓʱ
}
void BH1750_SendByte(uchar dat)
{uchar i;for (i=0; i<8; i++)         //8λ¼ÆÊýÆ÷{if( 0X80 & dat )GPIO_SetBits(bh1750_PORT,sda);elseGPIO_ResetBits(bh1750_PORT,sda);dat <<= 1;SCL=1;               //À­¸ßʱÖÓÏßDelay_Us(5);             //ÑÓʱSCL=0;                //À­µÍʱÖÓÏßDelay_Us(5);            //ÑÓʱ}BH1750_RecvACK();
}
uchar BH1750_RecvByte()
{uchar i;uchar dat = 0;uchar bit;GPIO_InitTypeDef GPIO_InitStruct;GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPU;   /*ÕâÀïÒ»¶¨ÒªÉè³ÉÊäÈëÉÏÀ­£¬·ñÔò²»ÄܶÁ³öÊý¾Ý*/GPIO_InitStruct.GPIO_Pin = sda;GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(bh1750_PORT,&GPIO_InitStruct );GPIO_SetBits(bh1750_PORT,sda);          //ʹÄÜÄÚ²¿ÉÏÀ­,×¼±¸¶ÁÈ¡Êý¾Ý,for (i=0; i<8; i++)         //8λ¼ÆÊýÆ÷{dat <<= 1;SCL=1;               //À­¸ßʱÖÓÏßDelay_Us(5);             //ÑÓʱif( SET == GPIO_ReadInputDataBit(bh1750_PORT,sda))bit = 0X01;elsebit = 0x00;  dat |= bit;             //¶ÁÊý¾ÝSCL=0;                //À­µÍʱÖÓÏßDelay_Us(5);            //ÑÓʱ}      GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_Init(bh1750_PORT, &GPIO_InitStruct );return dat;
}void Single_Write_BH1750(uchar REG_Address)
{BH1750_Start();                  //ÆðʼÐźÅBH1750_SendByte(SlaveAddress);   //·¢ËÍÉ豸µØÖ·+дÐźÅBH1750_SendByte(REG_Address);    //ÄÚ²¿¼Ä´æÆ÷µØÖ·£¬Çë²Î¿¼ÖÐÎÄpdf22Ò³
//  BH1750_SendByte(REG_data);       //ÄÚ²¿¼Ä´æÆ÷Êý¾Ý£¬Çë²Î¿¼ÖÐÎÄpdf22Ò³BH1750_Stop();                   //·¢ËÍÍ£Ö¹ÐźÅ
}//³õʼ»¯BH1750£¬¸ù¾ÝÐèÒªÇë²Î¿¼pdf½øÐÐÐÞ¸Ä****
void Init_BH1750()
{GPIO_InitTypeDef GPIO_InitStruct;/*¿ªÆôGPIOBµÄÍâÉèʱÖÓ*/ RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA, ENABLE); GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;  GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStruct.GPIO_Pin = sda | scl ;GPIO_Init(bh1750_PORT,&GPIO_InitStruct); Single_Write_BH1750(0x01);  Delay_Ms(180);            //ÑÓʱ180ms
}//Á¬Ðø¶Á³öBH1750ÄÚ²¿Êý¾Ý
void mread(void)
{   uchar i;  BH1750_Start();                          //ÆðʼÐźÅBH1750_SendByte(SlaveAddress+1);         //·¢ËÍÉ豸µØÖ·+¶ÁÐźÅfor (i=0; i<3; i++)                      //Á¬Ðø¶ÁÈ¡6¸öµØÖ·Êý¾Ý£¬´æ´¢ÖÐBUF{BUF[i] = BH1750_RecvByte();          //BUF[0]´æ´¢0x32µØÖ·ÖеÄÊý¾Ýif (i == 3){BH1750_SendACK(1);                //×îºóÒ»¸öÊý¾ÝÐèÒª»ØNOACK}else{      BH1750_SendACK(0);                //»ØÓ¦ACK}}BH1750_Stop();                          //Í£Ö¹ÐźÅDelay_Ms(5);
}
float read_BH1750(void)
{int dis_data;                       //±äÁ¿float temp1;float temp2;Single_Write_BH1750(0x01);   // power onSingle_Write_BH1750(0x10);   // H- resolution modeDelay_Ms(180);            //ÑÓʱ180msmread();       //Á¬Ðø¶Á³öÊý¾Ý£¬´æ´¢ÔÚBUFÖÐdis_data=BUF[0];dis_data=(dis_data<<8)+BUF[1]; //ºÏ³ÉÊý¾Ýtemp1=dis_data/1.2;temp2=10*dis_data/1.2;    temp2=(int)temp2%10;
//  OLED_ShowStr(87,2,".",12);
//  OLED_ShowNum(94,2,temp2,1,12);return temp1;
}

四、代码资料包获取方式

其他获取方式
1.公众号:万物汇联,关键词回复:阿里云代码。
2.CSDN:点击这里:代码资源
3.关注B站:Kisorge
UID:29599216

总结

本文仅仅简单介绍了软件驱动方面的配置,评论区欢迎讨论。

小白从零开始:小程序阿里云平台控制stm32温湿度光照强度(软件篇)相关推荐

  1. 小白从零开始:小程序阿里云平台控制stm32(小程序篇)

    小白从零开始:小程序阿里云平台控制stm32(小程序篇) 文章目录 前言 一.准备:小程序注册+开发者工具 二.小程序开发者工具配置 三.小程序 js代码更改位置 四.小程序 wxml代码更改位置 五 ...

  2. 微信小程序 阿里云服务器 非物联网平台自建MQTT代理服务器控制树莓派LED

    微信小程序 阿里云服务器 非物联网平台自建MQTT代理服务器控制树莓派LED 本人大三,临近毕业季,日后希望从事物联网和嵌入式相关工作,所以自己构想了一个项目来练手,之前做大创的时候学了一点微信小程序 ...

  3. 微信小程序+阿里云+stm32f407的一个项目

    ** 微信小程序+阿里云+stm32f407的一个项目## 小程序参考了大神半颗心脏的博客和资料, 小程序多个页面推送数据 因为自己做小程序是类似商城的一个demo, 其中数据需要与单片机进行交互,而 ...

  4. 最详细的【微信小程序+阿里云Web服务】开发部署指引(八):开发小程序卡片类型呈现功能

    文章目录 前言 一.功能说明 二.代码实现 1.创建主界面Page 2.WXML 2.JS 3.WXSS 4.合法域名校验 5.图片缓存刷新问题的解决 小结 专题文章链接 前言 本篇文章,将对照专题案 ...

  5. 最详细的【微信小程序+阿里云Web服务】开发部署指引(十一):开发小程序设置功能

    文章目录 前言 一.功能说明 二.设置界面代码实现 1.创建界面Page 2.WXML 3.JS 4.WXSS 三.参数控制逻辑代码实现 1.自动跳转卡片 2.自动播放声音 专题文章链接 前言 案例的 ...

  6. 最详细的【微信小程序+阿里云Web服务】开发部署指引(一):准备开始

    文章目录 前言 案例说明 专题文章链接 前言 作为一个程序开发的老鸟,有时候想使用微信小程序,开发实现一些实用的小功能.由于小程序往往需要有后台数据的支持,所以一般还需要搭建一个Server服务器,来 ...

  7. 最详细的【微信小程序+阿里云Web服务】开发部署指引(十二):开发小程序用户反馈功能

    文章目录 前言 一.功能说明 二.代码实现 1.创建界面Page 2.WXML 3.JS 4.WXSS 专题文章链接 前言 案例的运行效果,可以扫码观看: 本篇文章,我们将实现应用的用户反馈功能. 一 ...

  8. 最详细的【微信小程序+阿里云Web服务】开发部署指引(四):搭建服务端数据库

    文章目录 前言 一.连接主机数据库 二.创建数据表结构 三.准备测试数据 专题文章链接 前言 做完了前面的注册申请工作,今天我们开始进行程序的开发. 这篇文章,我们要完成的是服务端数据库表的创建. 一 ...

  9. 【TB-02模组专题⑤】微信小程序通讯TB02 模块控制 STM32 单片机LED灯

    本<安信可ble mesh蓝牙模组TB-02模组专题>系列博客学习由官方博客 CSDN安信可博客 潜心所力所写.如有不对之处,请留言,我们及时更改. 1.BLE MESH开发环境linux ...

最新文章

  1. Transformer LambdaNetworks
  2. 网络推广——网络推广如何安排网站关键词的布局策略?
  3. html grid插件,miniGrid:轻量级流布局JS插件
  4. 1Nginx+fastdfs分布式文件存储
  5. 嗅探(被动嗅探)与ARP欺骗(主动嗅探)详解
  6. python学习-综合练习六(列表翻转、变量交换、复制列表、元素求和(lambda和递归)、字典排序、字典pop)
  7. Pytorch入门-2
  8. 年度加密漏洞提前锁定:Java JDK 加密实现漏洞可用于伪造凭据
  9. python 数据挖掘与分析实战
  10. 三阶龙格库塔matlab,三阶、四阶龙格库塔函数matlab代码.doc
  11. Arango db 快速入门
  12. 奥西750服务器系统,奥西TDS750驱动
  13. 独家访谈N位品牌操盘手:深度揭秘品牌自播方法论
  14. 周一清晨的管理课-全球第一畅销领导力培训手册
  15. 【IoT】战略:BEM 战略解码 - 好的战略需要好的执行
  16. 家到学校路线图怎么画_PPT绘制家到学校路线图教程
  17. 微信二次分享解决图标文案失效方案
  18. 酷我音乐盒去广告(续)
  19. 把服务器sql数据库导出excel文件,将mysql数据库数据以Excel文件的形式导出
  20. 洛谷P3336 [ZJOI2013]话旧 题解

热门文章

  1. python调用inca_INCA二次开发-INCACOM
  2. python异步执行
  3. Springboot楼盘销售系统hze57计算机毕业设计-课程设计-期末作业-毕设程序代做
  4. 假如被公司辞退,你知道该做什么吗
  5. 盈建科内楼板局部荷载的导荷计算
  6. 如何用计算机算10的-5次方,在excel中如何计算10的几次方呢
  7. 2023年工程师职称申报条件
  8. MELSEC-Q QD77MS定位
  9. Ghost XP SP3 电脑城 2011 元旦装机版v18.2
  10. 怎样提高顾客的体验感?