如何用DockerPi series SensorHub来远程监控家庭环境参数

DockerPi SensorHub相信已经有很多小伙伴入手了,还没入手的小伙伴可以看看就是下图的样子奥。是不是感觉有超多的功能呢?实际也确实如此。它有检测环境温度,大气湿度,板载温度等功能。通过编写小程序,可以实现很多功能呢。今天我就来教大家通过IOT平台使用它来监控家庭环境的参数。

IOT环境

上篇中已经讲述了如何搭建IOT环境,在这里我就不再赘述了,还不明白的小伙伴可以去看看我们的文章奥。

硬件组装

请断开电源状态下把继电器板子安装到树莓派上,DockerPi板子不支持热插拔

硬件需求

1.RaspberryPi 3B/3B+/4B

2.16GB TF 卡

3. 5V/2.5A电源或者4B的5V/3A电源

4.DockerPi SensorHub

软件环境

1.打开RaspberryPi 的I2C

如何打开树莓派的I2C功能,我相信大家都会操作,我在这里就不再赘述了

2.检查Python3的版本,必须是3.7或以上,是python3的版本奥

python3 –version

3.先安装Azure IOT的环境

pip3 install azure-iot-device

然后git clone Python3的SDK

git clone https://github.com/Azure/azure-iot-sdk-python --depth=1

编写程序

1.首先进入到 azure-iot-sdk-python/tree/master/azure-iot-device/samples/advanced-hub-scenarios目录,打开文件update_twin_reported_properties.py

把con_str的值换成我们在上文提到你自己获取的HostName的值,这个是怎么获取的呢?请看我们的前面的文章是怎么讲述的

同样打开get_twin.py文件然后做相同的操作。

2.然后再次打开 update_twin_reported_properties.py 文件开始加入下图红框里面的代码:

复制出来的格式可能是错的呦,请参考图片的格式添加!

bus = smbus.SMBus(1)
await device_client.connect()
aReceiveBuf = []
aReceiveBuf.append(0x00) # 占位符
for i in range(0x01,0x0D + 1):
    aReceiveBuf.append(bus.read_byte_data(0X17, i))
if aReceiveBuf[0X01] & 0x01 :
    state0 = "Off-chip temperature sensor overrange!"
elif aReceiveBuf[0X01] & 0x02 :
    state0 = "No external temperature sensor!"
else :
    state0 = "Current off-chip sensor temperature = %d Celsius" % aReceiveBuf[0x01]

light = (bus.read_byte_data(0x17,0x03) << 8) | (bus.read_byte_data(0x17,0x02))
temp = bus.read_byte_data(0x17,0x05)
humidity = bus.read_byte_data(0x17,0x06)
temp1 = bus.read_byte_data(0x17,0x08)
pressure = (bus.read_byte_data(0x17,0x0B) << 16) | ((bus.read_byte_data(0x17,0x0A) << 8)) | ((bus.read_byte_data(0x17,0x09)))
    
state = bus.read_byte_data(0x17,0x0C)
if (state == 0):
    state = "the sensor of BMP280 is ok"
else:
    state = "the sensor of BMP280 is bad"
    human = bus.read_byte_data(0x17,0x0D)
if (human == 1):
    human = "live body has been detected"
else:
    human = "no live body"

然后保存运行,如果没有错误的话,你会看到显示图片上的信息:

然后再打开get_twin.py文件,添加如图所示代码:

print("{}".format(twin["reported"]["state0"]))
print("Reported light is: {}".format(twin["reported"]["light"]),"Lux")
print("Reported temperature of board is: {}".format(twin["reported"]["temperature"]),"degC")
print("Reported humidity is: {}".format(twin["reported"]["humidity"]),"%")
print("Reported temperature of sensor is: {}".format(twin["reported"]["temperature1"]),"degC")
print("Reported pressure of air is: {}".format(twin["reported"]["pressure"]),"Pa")
print("Reported {}".format(twin["reported"]["state"]))
print("Reported whether detect live body is: {}".format(twin["reported"]["human"]))

保存以后运行get_twin.py文件,没问题的话,你会看到下面的效果:

兼容树莓派4B的好产品

最近树莓派4B像一颗重磅炸弹投入了平静的湖面, 一石激起千层浪的感觉,树莓派4B以其大内存,双4k60fps的HMDI,千兆网卡,usb3.0 , 蓝牙5.0 BLE的强大特性让很多小伙伴趋之若鹜。

大部分的朋友还在疯狂测试性能,做评测的时候,我们的NightLight板和4路继电器板已经可以完美兼容树莓派4B的主板了!

给大家看看这些产品的样子:


这个小夜灯的灯板制作非常精美,通过GPIO引脚进行控制,代码非常简单,并且随机赠送的亚克力板也可以进行自行DIY,12颗高品质ws2812灯珠光线耀眼,通过程序控制RGB三种颜色的变化随心所欲,由于结合了树莓派,还可以联网进行远程控制,如果熟悉阿里云,腾讯云,百度云这些云平台的小伙伴们,就更加得心应手了,可以完美打造自己的IoT应用。
再看看4路继电器板:




这款继电器板既能够支持堆叠,又能够像Nightlight板一样接入云平台,高精度的继电器模块是你智能家居的好伙伴,同样也是能够无缝支持树莓派4B主板,通过I2C即可进行控制,如果堆叠4层继电器板就可以管理16路电路的通断,非常适合办公,工厂,学校等场景的灯路控制,通过部署到云平台,还可以实现虚拟化按钮控制, 是开关型产品的智能家居产品不二之选。
为了能够更好的供电,我们还推出了为这些板子供电的供电板,能够提供5v/4A的大电流供电,确保树莓派正常工作的同时,还能够为堆叠的开发板进行供电,非常强大!

淘宝链接: https://item.taobao.com/item.htm?spm=a1z10.3-c.w4002-4076757772.9.2a7c25a2dgUxjI&id=596936971926


支持远程安全开关机,支持12v电源输入,提供5v/4A的供电,同时还具有独特的超静音风扇进行散热,让你的一体化部署成为可能!
喜欢的小伙伴,快去官方淘宝店咨询:

52pi.taobao.com

Docker Pi系列之智能家居硬件装备

# 现在看电子产品,如果不带点儿智能二字都不好意思出来跟人打招呼~

今天就来给大家安利一款52Pi团队出品的Docker Pi系列产品之智能家居雏形硬件- 4路继电器板, 大家知道继电器的作用是用低电压控制高电压设备。 而这也是制作家庭级别的智能设备的最廉价和最安全的方式之一。

首先给大家看看设备的样子:

Relay DDL 就是继电器叠叠乐的简写

同事比较皮,所以丝印里面有个DDL,就是叠叠乐的简称。

这个能够和树莓派怎么结合在一起呢?

如果只需要控制四路电路开关,就只需要一个叠叠乐就可以搞定了,安装简单到没有朋友,直接扣在树莓派上,用螺丝铜柱锁死就好了,如果有产品洁癖,就可以自行设计一个外壳,将其包裹起来,就更加帅气了,切忌用金属外壳,因为会屏蔽树莓派的wifi信号的哟~

如果觉得一层不够用,我们推荐最多可以堆叠4层,就是所谓的叠叠乐电源控制中心了, 16路继电器每个都有自己独立的地址,通过程序可以精准控制每个继电器的开合。

每个板子上都有一个拨码开关,可以调试继电器的基地址:


四路继电器可以同时控制也可以分开控制就看你怎么去调试拨码开关了。当然为了让大家找到入门的方法,我们专门提供了多种编程语言的支持,C, python, java, shell 也可以。

接驳高压电路的方法:

要注意,由于继电器NC 就是Normal Close 常闭, NO是 Normal Open,常开, Common就是接零线的部分,类似右图, 接线的时候注意关闭总电源,避免触电。切记切记! 安全第一。

上面演示的是一路继电器的接驳方式,想象一下,家里的电箱里面如果有了这个设备,就完全可以在不关闭电箱的情况下轻松通过网络来进行控制了?

接驳好了以后我们看看树莓派上要做些什么吧?

树莓派需要安装Raspbian 系统,并且连入网络,打开ssh服务(sudo raspi-config)

然后利用 i2cdetect -y 1 检查当前设备的基地址: 一般是0x10

如果你的树莓派没有这条命令,也不要慌:

sudo apt-get update 
sudo apt-get -y install i2c-tools

通过上面的命令就可以安装i2c工具组件,就可以检测了。
然后我们就可以通过命令行输入:
i2cset -y 1 0x10  0x01  0xff
来打开第一个继电器了。
这里解释一下: -y 1 是定义i2c总线,意思是:bus 1 
0x10 是基地址就是设备在树莓派上识别出来的地址。
0x01 是第一个继电器,0x02 , 0x03, 0x04 就分别是第二个继电器,第三个,第四个。。
0xff 是开启继电器,相反,0x00 就是关闭继电器。 

如果你写个shell脚本:


然后执行, chmod +x relay.sh && ./relay.sh

就会发现四个继电器来回开合,当然我建议继电器的开关不要这么玩儿,实际上我们不会让大家这样开灯关灯折磨它对吗?我们需要它更智能一些,例如,当房间温度超过25°的时候,打开风扇的开关,自动来完成,就可以将风扇的电缆接入继电器,然后再找一个DHT11的温湿度传感器,用程序读取温度信息,然后做判断,当温度大于25°就执行 i2cset -y 1 0x10 0x01 0xff这样的命令。。

当然,树莓派可以支持的语言非常多,大家可以用自己熟悉的语言来做开发。

例如:用C:

编译执行:

gcc relay.c -lwiringPi -o relay && ./relay

或者是python, 当然使用python的时候要注意安装一个库:

sudo pip3 install smbus2

执行:

chmod +x relay.py 
./relay.py 

如果侥幸你还有腾讯云,阿里云,或者机智云的云平台,那么更加棒的事情就是通过这些云平台来对你的设备进行控制,将树莓派接入云平台请访问我们的公众号,获取最新的一期推送,就可以看到详细福利了,这里我就不赘述了!

听说有人要用这个板子接四路激光头,让家里的喵星人活动活动筋骨, 有人要用这个板子来控制家里鱼缸的灯光,加温棒和加氧泵, 还有人要用来控制教室里面的日光灯管,节约能源, 甚至还有人想用来给家里的4块移动硬盘做电源开关, 脑洞真是无限大~

欢迎大家前往52pi.taobao.com进行咨询和选购。 期待大家更好的玩儿法!