欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
自研STM32+DHT22+BH1750+8266透?jìng)鲾?shù)據(jù)到遠(yuǎn)端網(wǎng)絡(luò)服務(wù)器
[打印本頁]
作者:
獨(dú)角獸的仰望
時(shí)間:
2020-4-28 14:36
標(biāo)題:
自研STM32+DHT22+BH1750+8266透?jìng)鲾?shù)據(jù)到遠(yuǎn)端網(wǎng)絡(luò)服務(wù)器
最近在玩STM32,索性寫點(diǎn)筆記,加深印象,或者有助于新人摸索參考,不多說,進(jìn)入正題。
單片機(jī):STM32F407
模塊:8266
模塊:DHT22
模塊:BH1750
BH1750:I2C通訊,關(guān)于I2C通訊的過程,我這里就不多說,直接說驅(qū)動(dòng)的步驟:
1、總線初始化;
2、向傳感器發(fā)送寫信號(hào),然后配置分辨率;
3、向傳感器發(fā)送設(shè)備地址和讀信號(hào);
4、讀數(shù)據(jù);
很簡(jiǎn)單,具體代碼見附件。
DHT22:這個(gè)用的是單總線的通訊方式,個(gè)人感覺最關(guān)鍵的點(diǎn)有2個(gè):1、發(fā)送初始信號(hào)前要延時(shí)至少3S以上,等待電壓穩(wěn)定,防止電壓抖動(dòng);2、器件手冊(cè)上的時(shí)序;
8266:這個(gè)比較簡(jiǎn)單,采用的是AT指令的模式,光看代碼就能看懂。
上結(jié)果吧:
+-------------+----------+-----------------+---------+---------+------------------+------+------+
| temperature | humidity | light_intensity | current | voltage | time | id | date |
+-------------+----------+-----------------+---------+---------+------------------+------+------+
| 27.30 | 33.80 | 5759 | 0.00 | 0.00 | 2020-04-28 13:50 | 1 | NULL |
| 26.90 | 34.20 | 4294 | 0.00 | 0.00 | 2020-04-28 14:00 | 2 | NULL |
| 26.60 | 34.30 | 6185 | 0.00 | 0.00 | 2020-04-28 14:10 | 3 | NULL |
| 26.60 | 34.40 | 5759 | 0.00 | 0.00 | 2020-04-28 14:20 | 4 | NULL |
| 26.50 | 34.70 | 5376 | 0.00 | 0.00 | 2020-04-28 14:30 | 5 | NULL |
+-------------+----------+-----------------+---------+---------+------------------+------+------+
單片機(jī)源程序如下:
//*******************************************************
//BH1750FVI光照強(qiáng)度
//時(shí)間: 2020.4
//*******************************************************
#include "myiic.h"
#include "delay.h"
#include "bh1750.h"
#include "common.h"
void Cmd_Send_BH1750(u8 cmd)
{
IIC_Start();
IIC_Send_Byte(BH1750_Addr_Write); //發(fā)送設(shè)備地址+寫信號(hào)
while(IIC_Wait_Ack())
{;};
IIC_Send_Byte(cmd); //寫數(shù)據(jù)到內(nèi)部寄存器地址
while(IIC_Wait_Ack())
{;};
IIC_Stop();
}
void BH1750_Start(void)
{
Cmd_Send_BH1750(BH1750_ON);
Cmd_Send_BH1750(BH1750_RSET);
Cmd_Send_BH1750(BH1750_OFF);
}
u8 BH1750_RecvByte(void)
{
u8 i;
u8 dat = 0;
SDA_IN();
//使能內(nèi)部上拉,準(zhǔn)備讀取數(shù)據(jù),
for (i=0; i<8; i++) //8位計(jì)數(shù)器
{
dat <<= 1;
IIC_SCL = 1; //拉高時(shí)鐘線
delay_us(5); //延時(shí)
dat |= READ_SDA; //讀數(shù)據(jù)
IIC_SCL = 0; //拉低時(shí)鐘線
delay_us(5); //延時(shí)
}
return dat;
}
/**************************************
發(fā)送應(yīng)答信號(hào)
入口參數(shù):ack (0:ACK 1:NAK)
**************************************/
void BH1750_SendACK(u8 ack)
{
SDA_OUT();
IIC_SDA = ACK; //寫應(yīng)答信號(hào)
IIC_SCL = 1; //拉高時(shí)鐘線
delay_us(5); //延時(shí)
IIC_SCL = 0; //拉低時(shí)鐘線
delay_us(5); //延時(shí)
}
int BH1750_Read(void)
{
u8 BUF[3]={0};
u16 result=0;
u8 i=0;
//BH1750_Start();
IIC_Start();
IIC_Send_Byte(BH1750_Addr_Write); //發(fā)送設(shè)備地址+寫信號(hào)
while(IIC_Wait_Ack())
{;};
IIC_Send_Byte(BH1750_CON_1);
while(IIC_Wait_Ack())
{;};
IIC_Stop();
delay_ms(180);
IIC_Start();
IIC_Send_Byte(BH1750_Addr_Read); //發(fā)送設(shè)備地址+讀信號(hào)
while(IIC_Wait_Ack())
{;};
for (i=0; i<2; i++) //連續(xù)讀取6個(gè)地址數(shù)據(jù),存儲(chǔ)中BUF
{
BUF[i] = BH1750_RecvByte(); //BUF[0]存儲(chǔ)0x32地址中的數(shù)據(jù)
if (i == 2)
{
BH1750_SendACK(1); //最后一個(gè)數(shù)據(jù)需要回NOACK
IIC_Stop();
}
else
{
BH1750_SendACK(0); //回應(yīng)ACK
}
}
delay_ms(5);
result = BUF[0];
light_intensity = ((result<<8)+BUF[1])/1.2;
light_intensity = light_intensity - (light_intensity%1);
return light_intensity;
}
復(fù)制代碼
所有程序51hei提供下載:
代碼.rar
(4.53 KB, 下載次數(shù): 48)
2020-4-28 14:34 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者:
愛騫騫
時(shí)間:
2020-5-1 12:17
請(qǐng)問樓主有仿真圖嗎?
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1