在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

用Raspberry Pi和傳感器制作“可自動營造舒適空間的裝置” 第三部分

山中老虎 ? 來源:羅姆 ? 作者:羅姆 ? 2023-02-24 10:43 ? 次閱讀

大家好,我是吉田!
我們這次要創作一款讓家中更舒適、讓在家辦公更高效的設備,本文是第三部分。
在第二部分中,我們用BLE連接了羅姆SensorMedal并測量了各種數據。在第三部分,我希望通過安裝人體傳感器等器件,實現檢查主人是否久坐不動或過度工作的功能!
pYYBAGPzGsOARb7TAAOuAwphA1Y168.jpg

本部分所需部件

Raspberry Pi 3 B+ 或 Raspberry Pi 4 Model B

poYBAGPzGsaAP1GPAACgjfKDWVg250.jpg

Raspberry Pi 3 B+

poYBAGPzGsmAPwNLAACvO9u33bY417.jpg

Raspberry Pi 4 Model B

羅姆SensorMedal(SensorMedal-EVK-002)

poYBAGPzGsyAZvoKAAB6V-XqblY393.jpg

熱釋電紅外線傳感器 (SB412A)

pYYBAGPzGpOAGUeFAAEoTKKM1CM773.jpg

Raspberry Pi用液晶顯示器

pYYBAGPzGomATcCzAAFYik0A-9Q075.jpg

本部分的流程

給Raspberry Pi連接人體傳感器

添加液晶顯示器

總結

1. 給Raspberry Pi連接人體傳感器

第二部分中,我們通過羅姆SensorMedal測量了亮度,并根據亮度值成功控制了USB燈。在第二部分的基礎上,還可以檢測溫度和濕度,當檢測到室溫過高時,可以通過同樣的方法讓風扇轉起來。

但是,僅僅這樣的功能可能還不夠,我還希望它只在裝有這款Raspberry Pi設備的工作臺周圍有人時才工作!

另外,正如我在第一部分中提到的,我還希望它能起到防止主人在家辦公期間因久坐不動而過于疲勞的作用。

編號 檢測功能 檢測后希望具備的功能
5 檢測坐在椅子上的時間 檢測到坐的時間太久(久坐不動),督促主人站起來活動活動

所以,這次我們來實現上述功能,這也是第一部分中列舉的“要是有這樣的功能就好了”的項目之一。具體來講,需要添加一個能夠讓Raspberry Pi知道是否有人的傳感器,以便確認工作臺周圍的活動狀態。為此,我們將在Raspberry Pi上安裝下面這種熱釋電紅外線傳感器。

poYBAGPzGtmAOkGgAADmme5olx4698.jpg

傳感器側(從照片左邊開始) Raspberry Pi側
+(黃色) 5V
OUT(紅色) GPIO13
ー(黑色) GND

與Raspberry Pi的連接如表中所示。實際安裝的照片如下所示:

pYYBAGPzGtyACCHQAAGonCx6UTE000.jpg

在這里,需要創建一個簡單的程序human.py,來確認人體傳感器是否正常發揮作用,在運行該程序時,如果周圍有人,將顯示為“1”,否則顯示為“0”。

[human.py]

import RPi.GPIO as GPIO
from time import sleep

human_pin = 13
GPIO.setmode(GPIO.BCM)
GPIO.setup(human_pin, GPIO.IN)

try:
    while True:
        human = GPIO.input(human_pin)
        print(human)
        sleep(1)

except KeyboardInterrupt:
    pass

GPIO.cleanup()

運行human.py。僅當您坐在Raspberry Pi前面或將手靠近它時才會顯示“1”。

pYYBAGPzGt6AJ4drAAA6hlqB3Us500.png

poYBAGPzGuGAMmFyAAE1dfAGGOA792.jpg

2. 添加液晶顯示器

現在,我們來給Raspberry Pi加一個液晶顯示器,使之能夠顯示前面添加的SensorMedal和人體傳感器的值。

市場上有很多種液晶顯示器,我選用的是只需將其插入Raspberry Pi的GPIO引腳即可使用的DISPLAYOTRON HAT,它也有一個可以連接人體傳感器的GPIO引腳。

pYYBAGPzGomATcCzAAFYik0A-9Q075.jpg

如照片所示,將顯示器插入Raspberry Pi的 GPIO引腳。

poYBAGPzGueAF5a9AAFQEBsisOQ621.jpg

這個顯示器的庫來自 Adafruit,所以可以參考其Github頁面:
https://github.com/pimoroni/displayotron

運行頁面中的安裝腳本。這樣將會在Home下創建一個名為“pimoroni”的目錄,并在其中的下述位置保存示例程序。

Dot3000和DotHat都有類似的功能,但是這次我使用的是DotHat,所以我們會使用DotHat對應的庫。這里有一些示例程序,您可以嘗試運行一下。

$ curl -sS get.pimoroni.com/displayotron | bash
$ cd /home/pi/Pimoroni/displayotron/dothat
$ python3 basic/hello_world.py
$ python3 basic/backlight.py 

下面,讓我們修改一下連接SensorMedal和Raspberry Pi的程序,以實現在這個液晶顯示器上顯示測量值。下面的第4行、第22?27行、第45?50行和第91?115行是對第二部分中ble程序的補充。

[ble_lcd.py]

#!/usr/bin/env python3
# coding: utf-8

import dothat.lcd as lcd

from datetime import datetime
from bluepy import btle
from sys import argv
import getpass
from time import sleep

def payval(num, bytes=1, sign=False):
    global val
    a = 0
    for i in range(0, bytes):
        a += (256 ** i) * int(val[(num - 2 + i) * 2 : (num - 1 + i) * 2],16)
    if sign:
        if a >= 2 ** (bytes * 8 - 1):
            a -= 2 ** (bytes * 8)
    return a

import RPi.GPIO as GPIO
human_pin = 13
GPIO.setmode(GPIO.BCM)
GPIO.setup(human_pin, GPIO.IN)
human_count = 0
human_check = 3

interval = 10 # 工作間隔
scanner = btle.Scanner()

while True:
  
    now = datetime.now()
    d = '{0:0>4d}/{1:0>2d}/{2:0>2d}({3})'.format(now.year, now.month, now.day, now.strftime('%a'))
    t = '{0:0>2d}:{1:0>2d}:{2:0>2d}'.format(now.hour, now.minute, now.second)
    lcd.clear()
    lcd.set_cursor_position(0, 0)
    lcd.write('PiRemote')
    lcd.set_cursor_position(0, 1)
    lcd.write('{}'.format(d))
    lcd.set_cursor_position(2, 2)
    lcd.write('{}'.format(t))

    human = GPIO.input(human_pin)
    print(human)
    if human == 1:
      human_count+=1
    else:
      human_count=0
    
    try:
        devices = scanner.scan(interval)
    except Exception as e:
        print("ERROR",e)
        if getpass.getuser() != 'root':
            print('使用方法: sudo', argv[0])
            exit()
        sleep(interval)
        continue

    for dev in devices:
        print("nDevice %s (%s), RSSI=%d dB" % (dev.addr, dev.addrType, dev.rssi))
        isRohmMedal = False
        sensors = dict()
        for (adtype, desc, val) in dev.getScanData():
            print("  %s = %s" % (desc, val))
            if desc == 'Short Local Name' and val[0:10] == 'ROHMMedal2':
                isRohmMedal = True
            if isRohmMedal and desc == 'Manufacturer':

                sensors['ID'] = hex(payval(2,2))
                sensors['Temperature'] = -45 + 175 * payval(4,2) / 65536
                sensors['Humidity'] = 100 * payval(6,2) / 65536
                sensors['Illuminance'] = payval(25,2) / 1.2
                sensors['Battery Level'] = payval(30)
                sensors['RSSI'] = dev.rssi

                print('    ID            =',sensors['ID'])
                print('    Temperature   =',round(sensors['Temperature'],2),'℃')
                print('    Humidity      =',round(sensors['Humidity'],2),'%')
                print('    Illuminance   =',round(sensors['Illuminance'],1),'lx')
                print('    Battery Level =',sensors['Battery Level'],'%')
                print('    RSSI          =',sensors['RSSI'],'dB')

                '''
                for key, value in sorted(sensors.items(), key=lambda x:x[0]):
                    print('    ',key,'=',value)
                '''

                temp  = sensors['Temperature']
                humid = sensors['Humidity']
                if temp > 26 or humid > 60:
                    temp_msg = "Hot!"
                else:
                    temp_msg = "Not bad"

                illum = sensors['Illuminance']
                if illum < 200:
                    illum_msg = "Dark!"
                else:
                    illum_msg = "Bright"

                if human_count > human_check:
                    human_msg = "Take Rest"
                else:
                    human_msg = "Work Hard!"

                lcd.clear()
                lcd.set_cursor_position(0, 0)
                lcd.write('Temp: {0:1.0f}C {1:1.0f}% {2}'.format(temp, humid, temp_msg))
                lcd.set_cursor_position(0, 1)
                lcd.write('Illum: {0:1.0f}Lx {1}'.format(illum,illum_msg))
                lcd.set_cursor_position(0, 2)
                lcd.write('{0:1.0f} Cnt {1}'.format(human_count, human_msg))

                sleep(interval)

如果您像“sudo python3 ble_lcd.py”一樣運行這個程序,那么將會首先獲取并顯示當前的日期和時間等信息

pYYBAGPzGuqAS0CTAAEnwLO1CGs213.jpg

一段時間后,即可通過BLE獲得SensorMedal的測量值。然后將會顯示溫度、濕度和亮度等信息。通過人體傳感器,您還可以查看人在那里呆了多少秒。

poYBAGPzGu2AeE1WAAEpkXS24ls611.jpg

如果室溫高于26℃、濕度高于 60%,它會發出警告。另外,在亮度為200Lx以下時,顯示消息也會發生變化。
而當人體傳感器檢測到人在那里的停留時間超過一定時間時(為便于測試,這里設置為30秒左右),顯示信息就會變為“該休息了!”

您可以根據房間情況和工作情況嘗試更改每種傳感器的閾值。根據番茄工作法,采用工作25分鐘休息5分鐘的時間安排,工作效率會比較好,您也可以根據這類方法來設置數值。

3. 總結

這次我們在SensorMedal基礎上又添加了一個人體傳感器,這樣就可以檢測桌子周圍是否有人了。在我們在家辦公過程中,很容易坐的時間過長,擁有一個能夠在這種情況下關心我們、提醒我們的設備,真是一個不錯的選擇。

另外,我們還添加了一個液晶顯示器,用來顯示來自傳感器的值。如果是HAT型顯示器,您可以使用現有的庫文件輕松實現數據顯示。當然,您也可以自己連接液晶顯示器并自己嘗試使用。

在第四部分,我們將會嘗試實現能夠從互聯網獲取信息、并通過各種數值提醒主人行動的機制,并最終完成整個舒適環境營造設備。
敬請期待!

審核編輯黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 傳感器
    +關注

    關注

    2551

    文章

    51147

    瀏覽量

    753998
  • Raspberry Pi
    +關注

    關注

    2

    文章

    559

    瀏覽量

    22281
收藏 人收藏

    評論

    相關推薦

    獨特的51單片機教程第三部分上—牛人經驗,論壇獨家奉獻

    本帖最后由 eehome 于 2013-1-5 10:01 編輯 獨特的51單片機教程第三部分—牛人經驗,論壇獨家奉獻指令系統 與 尋址方式 按照順序,今天該到說指令系統的時候了,要說指令系統
    發表于 11-17 11:18

    LabVIEW開發者必備技巧寶典第三部分

    LabVIEW開發者必備技巧寶典第三部分分享給大家,請叫我雷鋒。
    發表于 12-05 11:40

    找不到任何基于PSoC4或Pro的第三部分模塊

    大家好,我似乎找不到任何基于PSoC4或Pro的第三部分模塊。例如,對話框的DA14580來自松下的PAN1740模塊。塞浦路斯IC有第三方供應商嗎?提前感謝!克里斯托弗
    發表于 09-17 14:18

    接收機晶體變換設計及制作第三部分

    接收機晶體變換設計及制作第三部分 晶體變換的印刷電路基板的制作與調整 圖26晶體變換
    發表于 05-15 10:58 ?1009次閱讀
    接收機<b class='flag-5'>用</b>晶體變換<b class='flag-5'>器</b>設計及<b class='flag-5'>制作</b><b class='flag-5'>第三部分</b>

    開關電源設計(第3版)第三部分

    電子發燒友網站提供《開關電源設計(第3版)第三部分.txt》資料免費下載
    發表于 09-12 15:04 ?0次下載

    2012年PSoC數模混合設計培訓_第三部分

    2012年PSoC數模混合設計培訓_第三部分
    發表于 10-27 09:30 ?8次下載
    2012年PSoC數模混合設計培訓_<b class='flag-5'>第三部分</b>

    LTC2387驅動程序第三部分

    LTC2387驅動程序第三部分
    發表于 05-16 15:23 ?5次下載
    LTC2387驅動程序<b class='flag-5'>第三部分</b>

    用于激活設備的可編程定時-第三部分

    電子發燒友網站提供《用于激活設備的可編程定時-第三部分.zip》資料免費下載
    發表于 12-16 10:28 ?0次下載
    用于激活設備的可編程定時<b class='flag-5'>器</b>-<b class='flag-5'>第三部分</b>

    Raspberry Pi和SensorMedal制作IoT跳繩設備 第四部分:在設備上安裝顯示以增加動力

    第一部分跳繩測試儀解決運動不足問題!第二部分SensorMedal檢測跳躍次數并在顯示上顯示
    的頭像 發表于 03-23 15:18 ?830次閱讀
    <b class='flag-5'>用</b><b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>和SensorMedal<b class='flag-5'>制作</b>IoT跳繩設備 第四<b class='flag-5'>部分</b>:在設備上安裝顯示<b class='flag-5'>器</b>以增加動力

    一款Raspberry Pi傳感器制作的可穿戴式小型健康管理設備!第四部分?劇終篇

    第1部分Raspberry Pi Zero和羅姆SensorMedal制作健康管理設備!第2部分
    的頭像 發表于 02-24 10:06 ?2238次閱讀
    一款<b class='flag-5'>用</b><b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>和<b class='flag-5'>傳感器</b><b class='flag-5'>制作</b>的可穿戴式小型健康管理設備!第四<b class='flag-5'>部分</b>?劇終篇

    Raspberry Pi傳感器制作自動營造舒適空間裝置” 第四部分?劇終篇

    第1回:Raspberry Pi傳感器制作自動
    的頭像 發表于 02-24 10:17 ?775次閱讀
    <b class='flag-5'>用</b><b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>和<b class='flag-5'>傳感器</b><b class='flag-5'>制作</b>“<b class='flag-5'>可</b><b class='flag-5'>自動</b><b class='flag-5'>營造</b><b class='flag-5'>舒適</b><b class='flag-5'>空間</b>的<b class='flag-5'>裝置</b>” 第四<b class='flag-5'>部分</b>?劇終篇

    Raspberry Pi傳感器制作自動營造舒適空間裝置” 第二部分

    大家好,我是吉田!我們這次要創作一款讓家中更舒適、讓在家辦公更高效的設備,本文是第二部分。第一部分介紹了制作綱要和所需部件。這次我們將實際連接Bluetooth
    的頭像 發表于 03-01 11:15 ?569次閱讀
    <b class='flag-5'>用</b><b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>和<b class='flag-5'>傳感器</b><b class='flag-5'>制作</b>“<b class='flag-5'>可</b><b class='flag-5'>自動</b><b class='flag-5'>營造</b><b class='flag-5'>舒適</b><b class='flag-5'>空間</b>的<b class='flag-5'>裝置</b>” 第二<b class='flag-5'>部分</b>

    硬件即代碼第三部分空間與時間

    電子發燒友網站提供《硬件即代碼第三部分空間與時間.zip》資料免費下載
    發表于 06-14 15:12 ?0次下載
    硬件即代碼<b class='flag-5'>第三部分</b>:<b class='flag-5'>空間</b>與時間

    SensorTile.box第三部分:編程模式(Pro mode)介紹

    電子發燒友網站提供《SensorTile.box第三部分:編程模式(Pro mode)介紹.pdf》資料免費下載
    發表于 07-29 16:19 ?0次下載
    SensorTile.box<b class='flag-5'>第三部分</b>:編程模式(Pro mode)介紹

    用于高頻接收和發射的鎖相環——第三部分

    電子發燒友網站提供《用于高頻接收和發射的鎖相環——第三部分.pdf》資料免費下載
    發表于 11-23 10:18 ?0次下載
    用于高頻接收<b class='flag-5'>器</b>和發射<b class='flag-5'>器</b>的鎖相環——<b class='flag-5'>第三部分</b>
    主站蜘蛛池模板: 免费观看在线视频| 在线99热| 天天爽夜夜爽视频| 成人伊在线影院| 九九99视频在线观看视频观看| 日本色黄视频| 色停停| 四虎网址在线观看| 亚洲爽爽网站| 午夜性影院| 天天看片中文字幕| 日韩色网| 欧美在线一级视频| 免费一级毛片无毒不卡| 色激情网| 美女天天色| 国产亚洲综合精品一区二区三区| 欧美精品专区55页| 免费一级成人毛片| 成人18视频拍拍拍拍拍拍| 99日精品欧美国产| 天天干b| 干一干操一操| 午夜视频在线网站| 亚洲免费三级| 日韩三| 国产一区二区高清在线| 夜夜操操操| 国产精品福利午夜h视频| 91午夜在线观看| 永久精品免费影院在线观看网站| 特黄特色三级在线播放| 欧美日韩色综合网站| 成人狠狠色综合| 国语对白老女人8av| 亚洲美女黄视频| 天天碰人人| 成人欧美一区二区三区黑人免费| 色依依视频视频在线观看| 国产老肥熟xxxx| 特级毛片aaaa级毛片免费|