first commit

This commit is contained in:
pandacraft 2025-03-21 16:04:17 +01:00
commit a5a0434432
1126 changed files with 439481 additions and 0 deletions

View file

@ -0,0 +1,61 @@
#!/usr/bin/env python
######################################################################## # GrovePi Library for using the Grove - CO2 Sensor(http://www.seeedstudio.com/depot/Grove-CO2-Sensor-p-1863.html)
#
# The GrovePi connects the Raspberry Pi and Grove sensors. You can learn more about GrovePi here: http://www.dexterindustries.com/GrovePi
#
# Have a question about this library? Ask on the forums here: http://forum.dexterindustries.com/c/grovepi
#
#
# NOTES:
# * Calibration and read of the CO2 sensor MH-Z16 according to the datasheet : http://www.seeedstudio.com/wiki/images/c/ca/MH-Z16_CO2_datasheet_EN.pdf
# * output value directly in ppm
# * Library derived from the inital controbution by Doms Genoud (@domsgen) here: http://www.dexterindustries.com/topic/how-to-use-co2-grove-sensor-with-serial-grovepi/
#
# History
# ------------------------------------------------
# Author Date Comments
# Doms Genoud 13 Apr 15 Initial Authoring
# Karan 07 Jan 16 Code cleanup and added to main Github repo
#
# These files have been made available online through a Creative Commons Attribution-ShareAlike 3.0 license.
# (http://creativecommons.org/licenses/by-sa/3.0/)
#
########################################################################
import serial, time
class CO2:
#inspired from c code of http://www.seeedstudio.com/wiki/Grove_-_CO2_Sensor
#Gas concentration= high level *256+low level
inp = []
cmd_zero_sensor = b'\xff\x87\x87\x00\x00\x00\x00\x00\xf2'
cmd_span_sensor = b'\xff\x87\x87\x00\x00\x00\x00\x00\xf2'
cmd_get_sensor = b'\xff\x01\x86\x00\x00\x00\x00\x00\x79'
def __init__(self):
#To open the raspberry serial port
ser = serial.Serial('/dev/serial0', 9600, timeout = 1) #Open the serial port at 9600 baud
#init serial
ser.flush()
def read(self):
try:
ser.write(self.cmd_get_sensor)
self.inp = ser.read(9)
high_level = self.inp[2]
low_level = self.inp[3]
temp_co2 = self.inp[4] - 40
#output in ppm, temp
conc = high_level*256+low_level
return [conc,temp_co2]
except IOError:
return [-1,-1]
if __name__ == "__main__":
c = CO2()
while True:
print(c.read())
time.sleep(1)