娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

(3)ESP32 Python 制作一個(gè)辦公室溫度計(jì)

發(fā)布者:平和的心情最新更新時(shí)間:2025-06-09 來源: jianshu關(guān)鍵字:ESP32  Python  溫度計(jì) 手機(jī)看文章 掃描二維碼
隨時(shí)隨地手機(jī)看文章

因?yàn)榻?jīng)常在辦公室里面不知道實(shí)際室內(nèi)溫度是多少,所以用ESP32做了一個(gè)工具來進(jìn)行溫度&濕度的監(jiān)測。在之前的文章當(dāng)中,已經(jīng)完成了ESP32的數(shù)據(jù)上云工作,如果要進(jìn)行溫度/濕度的檢測。從原理上就是給ESP32連接對應(yīng)的傳感器,并把傳感器的數(shù)據(jù)上報(bào)到阿里云物聯(lián)網(wǎng)平臺(tái)


我們先來看看效果

這樣的話,每天上班前在家里可以先看看辦公室空調(diào)是否已經(jīng)把公司的溫度提升上去,如果沒有提升上去。那說明可能空調(diào)有問題,今日的取暖只能靠抖了。


下面我們說說,這個(gè)實(shí)現(xiàn)怎么搞。首先在阿里云IOT平臺(tái)上,對我們之前的產(chǎn)品添加2個(gè)功能分別為當(dāng)前濕度和當(dāng)前溫度。

實(shí)現(xiàn)步驟如下:


根據(jù)所使用的硬件,進(jìn)行board.json的配置。 因?yàn)槲覀兊?a href="http://www.nncyjs.com/zhuanti/eXbz50" style="color:#4595e6;" target="_blank">溫度傳感器使用的是sht3x, 使用I2C,在board.json的配置如下:


{

    'name': 'haasedu',

    'version': '1.0.0',

    'io': { 

      'sht3x': {

        'type': 'I2C',

        'port': 0,

        'addrWidth': 7,

        'freq': 400000,

        'mode': 'master',

        'devAddr': 68

      } 

    },

    'debugLevel': 'ERROR',

    'repl': 'disable'

  }

實(shí)現(xiàn)代碼


from driver import I2C   

import sht3x        

def report_iot_data(temperature, humidity ):

    upload_data = {'params': ujson.dumps({

        'CurrentHumidity': humidity, 'CurrentTemperature':temperature    })

    }  

    device.postProps(upload_data)

    print('UPDATE IOT SUCCESS!!!')

    def get_light_temp_humi():

    

    temperature = humitureDev.getTemperature()        

    humidity = humitureDev.getHumidity()    

    report_iot_data(temperature, humidity)

    return temperature, humidity

i2cObj = I2C() i2cObj.open('sht3x')   humitureDev = sht3x.SHT3X(i2cObj)    

    while True:

    data = get_light_temp_humi()    

    utime.sleep(3)

進(jìn)行燒錄就可以了。

獲取溫度濕潤還需要使用Haas團(tuán)隊(duì)寫的一個(gè)驅(qū)動(dòng),代碼如下

sht3x.py


'''

Copyright (C) 2015-2021 Alibaba Group Holding Limited

    MicroPython's driver for CHT8305

    Author: HaaS

    Date:   2021/09/14

'''from micropython import constimport utimefrom driver import I2C'''

# sht3x commands definations

# read serial number:                            CMD_READ_SERIALNBR  0x3780     

# read status register:                          CMD_READ_STATUS     0xF32D     

# clear status register:                         CMD_CLEAR_STATUS    0x3041  

# enabled heater:                                CMD_HEATER_ENABLE   0x306D   

# disable heater:                                CMD_HEATER_DISABLE  0x3066      

# soft reset:                                    CMD_SOFT_RESET      0x30A2      

# accelerated response time:                     CMD_ART             0x2B32

# break, stop periodic data acquisition mode:    CMD_BREAK           0x3093

# measurement: polling, high repeatability:      CMD_MEAS_POLLING_H  0x2400

# measurement: polling, medium repeatability:    CMD_MEAS_POLLING_M  0x240B

# measurement: polling, low repeatability:       CMD_MEAS_POLLING_L  0x2416

'''class SHT3X(object):

    # i2cDev should be an I2C object and it should be opened before __init__ is called

    def __init__(self, i2cDev):

        self._i2cDev = None

        if not isinstance(i2cDev, I2C):

            raise ValueError('parameter is not an I2C object')

        # make AHB21B's internal object points to _i2cDev

        self._i2cDev = i2cDev

        self.start()

    def start(self):

        # make sure AHB21B's internal object is valid before I2C operation

        if self._i2cDev is None:

            raise ValueError('invalid I2C object')

        # send clear status register command - 0x3041 - CMD_CLEAR_STATUS

        cmd = bytearray(2)

        cmd[0] = 0x30

        cmd[1] = 0x41

        self._i2cDev.write(cmd)

        # wait for 20ms

        utime.sleep_ms(20)

        return 0

    def getTempHumidity(self):

        if self._i2cDev is None:

            raise ValueError('invalid I2C object')

        tempHumidity = [-1, 2]

        

        # start measurement: polling, medium repeatability - 0x240B - CMD_MEAS_POLLING_M   

        # if you want to adjust measure repeatability, you can send the following commands:

        # high repeatability: 0x2400 - CMD_MEAS_POLLING_H

        # low repeatability: 0x2416  - CMD_MEAS_POLLING_L

        cmd = bytearray(2)

        cmd[0] = 0x24

        cmd[1] = 0x0b

        self._i2cDev.write(cmd)

        # must wait for a little before the measurement finished

        utime.sleep_ms(20)

        dataBuffer = bytearray(6)

        # read the measurement result

        self._i2cDev.read(dataBuffer)

        # print(dataBuffer)

        # calculate real temperature and humidity according to SHT3X-DIS' data sheet

        temp = (dataBuffer[0]<<8) | dataBuffer[1]

        humi = (dataBuffer[3]<<8) | dataBuffer[4]

        tempHumidity[1] = humi * 0.0015259022

        tempHumidity[0] = -45.0 + (temp) * 175.0 / (0xFFFF - 1)

        return tempHumidity    def getTemperature(self):

        data = self.getTempHumidity()

        return data[0]

    def getHumidity(self):

        data = self.getTempHumidity()

        return data[1]

    def stop(self):

        if self._i2cDev is None:

            raise ValueError('invalid I2C object')

        # stop periodic data acquisition mode

        cmd = bytearray(3)

        cmd[0] = 0x30

        cmd[1] = 0x93

        self._i2cDev.write(cmd)

        # wait for a little while

        utime.sleep_ms(20)

        self._i2cDev = None

        return 0

    def __del__(self):

        print('sht3x __del__')if __name__ == '__main__':

    '''

    The below i2c configuration is needed in your board.json.

    'sht3x': {

        'type': 'I2C',

        'port': 1,

        'addrWidth': 7,

        'freq': 400000,

        'mode': 'master',

        'devAddr': 68

    },

    '''

    print('Testing sht3x ...')

    i2cDev = I2C()

    i2cDev.open('sht3x')

    sht3xDev = SHT3X(i2cDev)

    '''

    # future usage:

    i2cDev = I2C('sht3x')

    sht3xDev = sht3x.SHT3X(i2cDev)

    '''

    temperature = sht3xDev.getTemperature()

    print('The temperature is: %f' % temperature)

    humidity = sht3xDev.getHumidity()

    print('The humidity is: %f' % humidity)

    print('Test sht3x done!')


將程序代碼燒錄到開發(fā)板后,設(shè)備會(huì)聯(lián)網(wǎng),并且每3秒上報(bào)一次數(shù)據(jù)。發(fā)布的數(shù)據(jù), 我們可以在阿里云物聯(lián)網(wǎng)平臺(tái)上的設(shè)備的物模型數(shù)據(jù)中看到。

關(guān)于board.json的部分,需要根據(jù)自己采用的溫度/濕度傳感器,調(diào)整對應(yīng)的GPIO的編號(hào)就行。

關(guān)鍵字:ESP32  Python  溫度計(jì) 引用地址:(3)ESP32 Python 制作一個(gè)辦公室溫度計(jì)

上一篇:ESP32 開發(fā)環(huán)境和基本使用
下一篇:最后一頁

推薦閱讀最新更新時(shí)間:2025-06-09 10:32

ESP32學(xué)習(xí)筆記(51)——搭建環(huán)境、編譯燒寫(Windows+Espressif-IDE)
一、搭建環(huán)境 1.1 官方資料 ESP-IDF 編程指南 1.2 下載Espressif-IDE安裝器 官網(wǎng)下載:https://dl.espressif.cn/dl/esp-idf/?idf=4.4 百度網(wǎng)盤:https://pan.baidu.com/s/1cXP7lRmmohUu-PkNdxYHVw?pwd=g33x 提取碼:g33x 打開 espressif-ide-setup-espressif-ide-2.5.0-with-esp-idf-4.4.exe 安裝前系統(tǒng)檢測,如果需要應(yīng)用修復(fù),則點(diǎn)擊應(yīng)用修復(fù)完成后點(diǎn)擊下一步 選擇安裝目標(biāo)位置 不要安裝在帶有空格的路徑 選擇安裝組件 準(zhǔn)備安
[單片機(jī)]
stm32系列簡介與stm32 esp32性能比較
STM32應(yīng)該是比較熟悉的一個(gè)系列的單片機(jī),而ESP32相對陌生一些。但是從名字看,兩者應(yīng)該都是32位單片機(jī)。那么兩者之間到底有什么關(guān)聯(lián),或者性能哪個(gè)好一些,哪個(gè)差一些呢? STM32系列 意法半導(dǎo)體 (STMicroelectronics) 集團(tuán)于1987年6月成立,是由意大利的SGS 微電子公司和法國Thomson 半導(dǎo)體公司合并而成。1998年5月,SGS-THOMSON Microelectronics 將公司名稱改為意法半導(dǎo)體有限公司,意法半導(dǎo)體是世界最大的半導(dǎo)體公司之一。 STM32系列專為要求高性能、低成本、低功耗的嵌入式應(yīng)用設(shè)計(jì)的ARM Cortex?-M0,M0+,M3, M4和M7內(nèi)核(ST‘s produ
[單片機(jī)]
stm32系列簡介與stm32 <font color='red'>esp32</font>性能比較
8051與ESP32 CAM串行通訊
前面我們介紹了8051的串行通訊,對串行通訊有了一定的了解,現(xiàn)在通過實(shí)現(xiàn)8051與ESP32CAM通信。 首先了解下esp32 cam的引腳圖。 如上圖,我們看到ESP32 CAM的串口0引腳分別為GPIO 3(RxD)、GPIO 1(TxD),而GPIO 16引腳只是串口2的一個(gè)接收引腳。但是ESP32 CAM 有三個(gè)串口(Serial、Serial1、Serial2),可以軟件映射其TxD和RxD。 ESP32 測試代碼 在Arduino IDE中我們使用下面代碼測試ESP 32 CAM的串口,短接上板子上的GPIO 0和GPIO 16,給esp32 cam上電,打開Arduino IDE的串口監(jiān)視器,就可以看到數(shù)
[單片機(jī)]
8051與<font color='red'>ESP32</font> CAM串行通訊
PYTHON 480和AR0135兩款低成本全局快門CMOS圖像傳感器演示
安森美半導(dǎo)體推出的PYTHON480和AR0135兩款圖像傳感器在擁有小尺寸和低成本的基礎(chǔ)上,仍然保持了高性能和高質(zhì)量全局快門的圖像采集能力。 iframe height="498" width="510" src="http://player.youku.com/embed/XMjUxMTg2ODI4NA==" frameborder="0" /iframe
[傳感器]
小廣播
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號(hào)

 
EEWorld服務(wù)號(hào)

 
汽車開發(fā)圈

 
機(jī)器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號(hào) 京ICP備10001474號(hào)-1 電信業(yè)務(wù)審批[2006]字第258號(hào)函 京公網(wǎng)安備 11010802033920號(hào) Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 无极县| 九龙县| 云龙县| 桂东县| 阜宁县| 许昌县| 曲靖市| 健康| 舟曲县| 富裕县| 科技| 马山县| 临邑县| 时尚| 贞丰县| 万盛区| 静安区| 彭阳县| 新兴县| 教育| 平泉县| 密山市| 泰兴市| 道孚县| 曲水县| 普兰店市| 筠连县| 卢湾区| 梓潼县| 永济市| 汝南县| 克东县| 德化县| 普定县| 盐亭县| 苗栗县| 顺昌县| 剑河县| 新安县| 股票| 新昌县|