久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2088|回復: 1
打印 上一主題 下一主題
收起左側

自研STM32+DHT22+BH1750+8266透傳數據到遠端網絡服務器

[復制鏈接]
跳轉到指定樓層
樓主
ID:740086 發表于 2020-4-28 14:36 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
最近在玩STM32,索性寫點筆記,加深印象,或者有助于新人摸索參考,不多說,進入正題。
單片機:STM32F407
模塊:8266
模塊:DHT22
模塊:BH1750
BH1750:I2C通訊,關于I2C通訊的過程,我這里就不多說,直接說驅動的步驟:
1、總線初始化;
2、向傳感器發送寫信號,然后配置分辨率;
3、向傳感器發送設備地址和讀信號;
4、讀數據;
很簡單,具體代碼見附件。

DHT22:這個用的是單總線的通訊方式,個人感覺最關鍵的點有2個:1、發送初始信號前要延時至少3S以上,等待電壓穩定,防止電壓抖動;2、器件手冊上的時序;

8266:這個比較簡單,采用的是AT指令的模式,光看代碼就能看懂。
上結果吧:
+-------------+----------+-----------------+---------+---------+------------------+------+------+
| 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 |
+-------------+----------+-----------------+---------+---------+------------------+------+------+

單片機源程序如下:
  1. //*******************************************************
  2. //BH1750FVI光照強度
  3. //時間: 2020.4
  4. //*******************************************************
  5. #include "myiic.h"
  6. #include "delay.h"
  7. #include "bh1750.h"
  8. #include "common.h"

  9. void Cmd_Send_BH1750(u8 cmd)
  10. {
  11.     IIC_Start();
  12.    
  13.   IIC_Send_Byte(BH1750_Addr_Write);   //發送設備地址+寫信號
  14.     while(IIC_Wait_Ack())
  15.     {;};
  16.    
  17.   IIC_Send_Byte(cmd);    //寫數據到內部寄存器地址
  18.     while(IIC_Wait_Ack())
  19.     {;};
  20.    
  21.     IIC_Stop();
  22. }

  23. void BH1750_Start(void)
  24. {

  25.     Cmd_Send_BH1750(BH1750_ON);
  26.     Cmd_Send_BH1750(BH1750_RSET);
  27.     Cmd_Send_BH1750(BH1750_OFF);
  28.    
  29. }

  30. u8 BH1750_RecvByte(void)
  31. {
  32.     u8 i;
  33.     u8 dat = 0;
  34.     SDA_IN();   
  35.     //使能內部上拉,準備讀取數據,
  36.     for (i=0; i<8; i++)         //8位計數器
  37.     {
  38.         dat <<= 1;
  39.         IIC_SCL = 1;                //拉高時鐘線
  40.         delay_us(5);             //延時
  41.         dat |= READ_SDA;             //讀數據               
  42.         IIC_SCL = 0;                //拉低時鐘線
  43.         delay_us(5);             //延時
  44.     }
  45.     return dat;
  46. }

  47. /**************************************
  48. 發送應答信號
  49. 入口參數:ack (0:ACK 1:NAK)
  50. **************************************/
  51. void BH1750_SendACK(u8 ack)
  52. {
  53.     SDA_OUT();
  54.   IIC_SDA = ACK;                  //寫應答信號
  55.   IIC_SCL = 1;                    //拉高時鐘線
  56.   delay_us(5);                 //延時
  57.   IIC_SCL = 0;                    //拉低時鐘線
  58.   delay_us(5);                 //延時
  59. }
  60. int BH1750_Read(void)
  61. {

  62.     u8 BUF[3]={0};
  63.     u16 result=0;
  64.     u8 i=0;
  65.    
  66.     //BH1750_Start();
  67.         
  68.     IIC_Start();
  69.    
  70.     IIC_Send_Byte(BH1750_Addr_Write);   //發送設備地址+寫信號
  71.     while(IIC_Wait_Ack())
  72.   {;};
  73.         
  74.     IIC_Send_Byte(BH1750_CON_1);
  75.     while(IIC_Wait_Ack())
  76.     {;};
  77.    
  78.     IIC_Stop();
  79.     delay_ms(180);
  80.         
  81.     IIC_Start();
  82.         
  83.     IIC_Send_Byte(BH1750_Addr_Read);        //發送設備地址+讀信號
  84.     while(IIC_Wait_Ack())
  85.     {;};

  86.     for (i=0; i<2; i++)                    //連續讀取6個地址數據,存儲中BUF
  87.   {
  88.         BUF[i] = BH1750_RecvByte();          //BUF[0]存儲0x32地址中的數據
  89.     if (i == 2)
  90.     {
  91.             BH1750_SendACK(1);                //最后一個數據需要回NOACK
  92.             IIC_Stop();
  93.             
  94.     }
  95.     else
  96.     {        
  97.             BH1750_SendACK(0);                //回應ACK
  98.     }
  99.     }
  100.    
  101.   delay_ms(5);
  102.     result = BUF[0];
  103.     light_intensity = ((result<<8)+BUF[1])/1.2;
  104.     light_intensity = light_intensity - (light_intensity%1);
  105.     return light_intensity;
  106. }

復制代碼

所有程序51hei提供下載:
代碼.rar (4.53 KB, 下載次數: 48)



評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:720649 發表于 2020-5-1 12:17 | 只看該作者
請問樓主有仿真圖嗎?
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 在线91 | 成人看片在线观看 | 91精品国产自产精品男人的天堂 | 四虎影院欧美 | 亚洲午夜精品一区二区三区他趣 | 视频在线观看亚洲 | 欧美精品一区在线 | 国产高清一区二区三区 | www天天操 | 亚洲成人久久久 | 精品国产黄a∨片高清在线 www.一级片 国产欧美日韩综合精品一区二区 | 欧美成人一区二区三区 | 久久国产精品免费一区二区三区 | 久久久久国产一区二区三区 | 在线视频a | 99久久精品国产一区二区三区 | 亚洲成人免费在线 | 成人精品国产 | 一区二区三区欧美 | 在线观看免费av网站 | 国产黄色在线观看 | 国产精品乱码一区二区三区 | 精品一区二区电影 | 日韩成人 | 久久久久久免费毛片精品 | 99视频在线播放 | 黄色一级网 | 成人精品一区二区三区中文字幕 | 欧美精品电影一区 | 久久久国产一区 | 亚洲 精品 综合 精品 自拍 | 国产精品三级久久久久久电影 | 一区二区三区欧美在线 | 五月天激情电影 | 日韩在线一区二区 | 人人干免费 | 国产高清在线 | 99免费看| 欧美一级免费看 | 日韩av中文 | 91久久精|