Finished HDC1000 chip program
This commit is contained in:
BIN
modules/__pycache__/hdc1000.cpython-34.pyc
Normal file
BIN
modules/__pycache__/hdc1000.cpython-34.pyc
Normal file
Binary file not shown.
@@ -3,10 +3,7 @@
|
|||||||
|
|
||||||
import time
|
import time
|
||||||
from pprint import pprint
|
from pprint import pprint
|
||||||
try:
|
import i2c
|
||||||
import smbus2 as smbus
|
|
||||||
except ImportError:
|
|
||||||
import smbus
|
|
||||||
|
|
||||||
I2CADDR = 0x40
|
I2CADDR = 0x40
|
||||||
|
|
||||||
@@ -14,7 +11,7 @@ TEMP_REG = 0x00
|
|||||||
HUMID_REG = 0x01
|
HUMID_REG = 0x01
|
||||||
CONFIG_REG = 0x02
|
CONFIG_REG = 0x02
|
||||||
|
|
||||||
CONFIG_RST = (1 << 15)
|
CONFIG_RESET = (1 << 15)
|
||||||
CONFIG_HEAT = (1 << 13)
|
CONFIG_HEAT = (1 << 13)
|
||||||
CONFIG_MODE_SINGLE = 0
|
CONFIG_MODE_SINGLE = 0
|
||||||
CONFIG_MODE_BOTH = (1 << 12)
|
CONFIG_MODE_BOTH = (1 << 12)
|
||||||
@@ -31,74 +28,55 @@ SERIAL3 = 0xFD
|
|||||||
MANUFID = 0xFE
|
MANUFID = 0xFE
|
||||||
DEVICEID = 0xFF
|
DEVICEID = 0xFF
|
||||||
|
|
||||||
try:
|
bus = i2c.IIC(I2CADDR, 1)
|
||||||
bus = smbus.SMBus(1)
|
|
||||||
except:
|
|
||||||
print("No I2C bus found.")
|
|
||||||
|
|
||||||
def reset():
|
def reset(extra = 0):
|
||||||
config = (
|
config = (
|
||||||
CONFIG_RST |
|
CONFIG_RESET |
|
||||||
CONFIG_MODE_BOTH |
|
CONFIG_MODE_SINGLE |
|
||||||
CONFIG_TRES_14 |
|
CONFIG_TRES_14 |
|
||||||
CONFIG_HRES_14
|
CONFIG_HRES_14 |
|
||||||
|
extra
|
||||||
)
|
)
|
||||||
bus.write_word_data(I2CADDR, CONFIG_REG, config)
|
bus.i2c([CONFIG_REG, config >> 8], 0)
|
||||||
|
|
||||||
def readSensors():
|
def temperature():
|
||||||
bus.write_byte(I2CADDR, TEMP_REG)
|
# Request temperature measurement
|
||||||
|
bus.i2c([TEMP_REG], 0)
|
||||||
|
|
||||||
time.sleep(0.05)
|
time.sleep(0.2)
|
||||||
|
|
||||||
temp = bus.read_byte(I2CADDR)
|
data = bus.read(2)
|
||||||
temp << 8
|
temp = (data[0] << 8) | data[1]
|
||||||
temp |= bus.read_byte(I2CADDR)
|
#print(hex(temp))
|
||||||
|
return (temp / 65536.0) * 165.0 - 40
|
||||||
|
|
||||||
hum = bus.read_byte(I2CADDR)
|
def humidity():
|
||||||
hum << 8
|
# Request humidity measurement
|
||||||
hum |= bus.read_byte(I2CADDR)
|
bus.i2c([HUMID_REG], 0)
|
||||||
|
|
||||||
print(hex(temp))
|
time.sleep(0.2)
|
||||||
print(hex(hum))
|
|
||||||
|
|
||||||
#float temp = (read32(HDC1000_TEMP, 20) >> 16);
|
data = bus.read(2)
|
||||||
#temp /= 65536;
|
hum = (data[0] << 8) | data[1]
|
||||||
#temp *= 165;
|
#print(hex(hum))
|
||||||
#temp -= 40;
|
return (hum / 65536.0) * 100.0
|
||||||
|
|
||||||
#float hum = (read32(HDC1000_TEMP, 20) & 0xFFFF);
|
|
||||||
#hum /= 65536;
|
|
||||||
#hum *= 100;
|
|
||||||
|
|
||||||
#return hum;
|
|
||||||
|
|
||||||
def drySensor():
|
def drySensor():
|
||||||
origconfig = bus.read_word_data(I2CADDR, CONFIG_REG)
|
# Turn on the heater
|
||||||
newconfig = (
|
reset(CONFIG_HEAT)
|
||||||
CONFIG_RST |
|
|
||||||
CONFIG_HEAT |
|
|
||||||
CONFIG_MODE_BOTH |
|
|
||||||
CONFIG_TRES_14 |
|
|
||||||
CONFIG_HRES_14
|
|
||||||
)
|
|
||||||
|
|
||||||
bus.write_word_data(I2CADDR, CONFIG_REG, newconfig)
|
# Take 1000 reading as fast as possible
|
||||||
|
# (the heater is only activated when performing a reading)
|
||||||
|
for x in range(10000):
|
||||||
|
try:
|
||||||
|
temperature()
|
||||||
|
time.sleep(0.1)
|
||||||
|
except: pass
|
||||||
|
|
||||||
sleep(0.1)
|
# Turn off the heater
|
||||||
|
reset()
|
||||||
# Take 1000 readings
|
|
||||||
for x in range(0, 1000):
|
|
||||||
triggerMeasurements()
|
|
||||||
sleep(0.1)
|
|
||||||
|
|
||||||
sleep(0.1)
|
|
||||||
|
|
||||||
origconfig |= CONFIG_RST;
|
|
||||||
bus.write_word_data(I2CADDR, CONFIG_REG, origconfig)
|
|
||||||
|
|
||||||
def init():
|
def init():
|
||||||
reset()
|
reset()
|
||||||
manuf = bus.read_word_data(I2CADDR, MANUFID)
|
|
||||||
dev = bus.read_word_data(I2CADDR, DEVICEID)
|
|
||||||
print("Manufacturer:", manuf, "Device:", dev)
|
|
||||||
|
|
||||||
|
|||||||
62
modules/i2c.py
Normal file
62
modules/i2c.py
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
# Contributed by Raju and updated by Jim
|
||||||
|
#
|
||||||
|
# Use:
|
||||||
|
# import i2c
|
||||||
|
# device = i2c.IIC(<device i2c address 7 bit>,<Bus number>)
|
||||||
|
# example
|
||||||
|
# dev = i2c.IIC(0x32,1)
|
||||||
|
# dev.i2c([10,1,0,1],1) # sends bytes 10,1,0,1 and returns 1 byte
|
||||||
|
# dev.close()
|
||||||
|
#
|
||||||
|
import io
|
||||||
|
import fcntl
|
||||||
|
|
||||||
|
# i2c.py
|
||||||
|
# 2016-03-14
|
||||||
|
# Public Domain
|
||||||
|
|
||||||
|
I2C_SLAVE=0x0703
|
||||||
|
|
||||||
|
# Based on 'notSMB' for an easier way to access the i2c bus using just one
|
||||||
|
# function. The main difference between this and notSMB is that the bus
|
||||||
|
# here will be dedicated to 1 device address
|
||||||
|
class IIC:
|
||||||
|
def __init__(self, device, bus):
|
||||||
|
|
||||||
|
self.fr = io.open("/dev/i2c-"+str(bus), "rb", buffering=0)
|
||||||
|
self.fw = io.open("/dev/i2c-"+str(bus), "wb", buffering=0)
|
||||||
|
|
||||||
|
# set device address
|
||||||
|
|
||||||
|
fcntl.ioctl(self.fr, I2C_SLAVE, device)
|
||||||
|
fcntl.ioctl(self.fw, I2C_SLAVE, device)
|
||||||
|
|
||||||
|
def write(self, data):
|
||||||
|
if type(data) is list:
|
||||||
|
data = bytes(data)
|
||||||
|
self.fw.write(data)
|
||||||
|
|
||||||
|
def read(self, count):
|
||||||
|
s = ''
|
||||||
|
l = []
|
||||||
|
s = self.fr.read(count)
|
||||||
|
return s
|
||||||
|
#if len(s) != 0:
|
||||||
|
# for n in s:
|
||||||
|
# l.append(rd(n))
|
||||||
|
# return l
|
||||||
|
|
||||||
|
|
||||||
|
def close(self):
|
||||||
|
self.fw.close()
|
||||||
|
self.fr.close()
|
||||||
|
|
||||||
|
def i2c(self,listin,nout):
|
||||||
|
self.write(bytearray(listin))
|
||||||
|
rv = 0
|
||||||
|
if nout != 0:
|
||||||
|
rv = self.read(nout)
|
||||||
|
return rv
|
||||||
|
|
||||||
57
modules/testhdc1000.py
Normal file
57
modules/testhdc1000.py
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
#stributed with a free-will license.
|
||||||
|
# Use it any way you want, profit or free, provided it fits in the licenses of its associated works.
|
||||||
|
# HDC1000
|
||||||
|
# This code is designed to work with the HDC1000_I2CS I2C Mini Module available from ControlEverything.com.
|
||||||
|
# https://www.controleverything.com/content/Temperature?sku=HDC1000_I2CS#tabs-0-product_tabset-2
|
||||||
|
|
||||||
|
import smbus
|
||||||
|
import time
|
||||||
|
|
||||||
|
# Get I2C bus
|
||||||
|
bus = smbus.SMBus(1)
|
||||||
|
|
||||||
|
# HDC1000 address, 0x40(64)
|
||||||
|
# Select configuration register, 0x02(02)
|
||||||
|
# 0x30(48) Temperature, Humidity enabled, Resolultion = 14-bits, Heater on
|
||||||
|
bus.write_byte_data(0x40, 0x02, 0x30)
|
||||||
|
|
||||||
|
# HDC1000 address, 0x40(64)
|
||||||
|
# Send temp measurement command, 0x00(00)
|
||||||
|
bus.write_byte(0x40, 0x00)
|
||||||
|
|
||||||
|
time.sleep(0.5)
|
||||||
|
|
||||||
|
# HDC1000 address, 0x40(64)
|
||||||
|
# Read data back, 2 bytes
|
||||||
|
# temp MSB, temp LSB
|
||||||
|
data0 = bus.read_byte(0x40)
|
||||||
|
data1 = bus.read_byte(0x40)
|
||||||
|
|
||||||
|
# Convert the data
|
||||||
|
temp = (data0 * 256) + data1
|
||||||
|
print(hex(temp))
|
||||||
|
cTemp = (temp / 65536.0) * 165.0 - 40
|
||||||
|
fTemp = cTemp * 1.8 + 32
|
||||||
|
|
||||||
|
# HDC1000 address, 0x40(64)
|
||||||
|
# Send humidity measurement command, 0x01(01)
|
||||||
|
bus.write_byte(0x40, 0x01)
|
||||||
|
|
||||||
|
time.sleep(0.5)
|
||||||
|
|
||||||
|
# HDC1000 address, 0x40(64)
|
||||||
|
# Read data back, 2 bytes
|
||||||
|
# humidity MSB, humidity LSB
|
||||||
|
data0 = bus.read_byte(0x40)
|
||||||
|
data1 = bus.read_byte(0x40)
|
||||||
|
|
||||||
|
# Convert the data
|
||||||
|
humidity = (data0 * 256) + data1
|
||||||
|
print(hex(humidity))
|
||||||
|
humidity = (humidity / 65536.0) * 100.0
|
||||||
|
|
||||||
|
# Output data to screen
|
||||||
|
print "Relative Humidity : %.2f %%" %humidity
|
||||||
|
print "Temperature in Celsius : %.2f C" %cTemp
|
||||||
|
print "Temperature in Fahrenheit : %.2f F" %fTemp
|
||||||
|
|
||||||
11
testprograms/camera/oneshot
Executable file
11
testprograms/camera/oneshot
Executable file
@@ -0,0 +1,11 @@
|
|||||||
|
#!/usr/bin/python3
|
||||||
|
from picamera import PiCamera
|
||||||
|
from time import sleep
|
||||||
|
|
||||||
|
camera = PiCamera()
|
||||||
|
|
||||||
|
camera.start_preview()
|
||||||
|
sleep(5)
|
||||||
|
camera.capture('/home/pi/camera/pics/image.jpg')
|
||||||
|
camera.stop_preview()
|
||||||
|
|
||||||
11
testprograms/camera/preview
Executable file
11
testprograms/camera/preview
Executable file
@@ -0,0 +1,11 @@
|
|||||||
|
#!/usr/bin/python3
|
||||||
|
|
||||||
|
from picamera import PiCamera
|
||||||
|
from time import sleep
|
||||||
|
|
||||||
|
camera = PiCamera()
|
||||||
|
|
||||||
|
camera.start_preview()
|
||||||
|
sleep(10)
|
||||||
|
camera.stop_preview()
|
||||||
|
|
||||||
Reference in New Issue
Block a user