#+TITLE: Weather Station #+DATE: 2018-10-12 12:00:00 UTC #+DESCRIPTION: CNC cutting test code #+FILETAGS: cnc:gcode:draft #+CATEGORY: cnc, tech, draft #+SLUG: grbl-cnc-test-gcode Venus hottest planet in the solar system due to co2 docker run -it -p 1883:1883 -p 9001:9001 -v mosquitto.conf:/mosquitto/config/mosquitto.conf eclipse-mosquitto Amount of oxygen in the atmosphere 20.95% 😄, 😊, 😐, 😟, 😩 250-350 ppm | normal outdoor air level 350-1,000 ppm | Indoor good air exchange 1,000-2,000 ppm | Complaints of drowsiness and poor air 2,000-5,000 ppm | level associated with headaches, sleepiness, and stagnant, stale, stuffy air; poor concentration, loss of attention, increased heart rate and slight nausea may also be present. >5,000 ppm | This indicates unusual air conditions where high levels of other gases also could be present. Toxicity or oxygen deprivation could occur. This is the permissible exposure limit for daily workplace exposures. | Product Model | MH-Z19B | | Target Gas | CO2 | | Working voltage | 4.5~ 5.5 V DC | | Average current | < 60mA(@5V) | | Peak current | 150mA (@5V) | | Interface leve | l3.3 V(Compatiblewith 5V) | | Measuring range | refer to Table 2 | | Output signal | UART(TTL 3.3V) PWMDAC(default 0.4-2V) | | Preheat time | 3 min | | Response Time | T90< 120 s | | Working temperature | 0 ~ 50 °C | | Working humidity | 0~ 90% RH(No condensation) | | Dimension | 33 mm×20 mm×9 mm(L×W×H) | | Weight | 5g | | Lifespan | > 5years | | | | * Duty cycle The duty cycle is the length of the on in relation to the off percentage of on over off, * MQ135 Sensor https://www.engineeringtoolbox.com/co2-comfort-level-d_1024.html https://community.particle.io/t/mq135-and-spark-core/12657/23 * MHZ19 https://diyprojects.io/publish-co2-concentration-mh-z19-sensor-domoticz-arduino-code-compatible-esp32-esp8266/#.XG3HIKOnyV4 https://diyprojects.io/product/deal-self-calibrated-co2-sensor-mh-z19-uart-output-pwm-5000ppm/#.XG3HAaOnyV4 Static values used below instead of using magic numbers which mean nothing to some looking over the code. #+BEGIN_SRC C // Values from the dataheet const unsigned long mhz19_ppm_range = 5000; const unsigned long mhz19_pwm_cycle = 1000; const unsigned long mhz19_pwm_middle_cycle = 1004; #+END_SRC The below function will read a value from the MHZ19 sensor using pwm and calculate the CO2 based on the datasheet below. https://www.winsen-sensor.com/d/files/infrared-gas-sensor/mh-z19b-co2-ver1_0.pdf #+BEGIN_SRC C unsigned long mhz19_sensor() { // Wait for the next pulse In do { // Work out for how long the pulse was set high pin_high_time = pulseIn(D6, HIGH, 1004000) / mhz19_pwm_cycle; } while (pin_high_time == 0); // work out how long the pulse was set low, by taking high from total length pin_low_time = mhz19_pwm_middle_cycle - pin_high_time; // Calculate parts per million from formula in spec sheet // CO2level:ppm=2000×(time_high-2ms)/(time_high+time_low-4ms) ppm = mhz19_ppm_range * (pin_high_time-2)/(pin_high_time+pin_low_time-4); return ppm; } #+END_SRC * Mosquitto server #+BEGIN_SRC config #+END_SRC #+BEGIN_SRC shell docker run -d -it -p 1883:1883 -p 9001:9001 -v /var/www/mqtt:/mosqu/config/ eclipse-mosquitto #+END_SRC * SPS30 ** I2C connection Connect the SDA pin to D2 pin and SCL pin to d1 on the wemos to use I2C mode. ** UART connection Connect the RX and TX pins on the SPS30 to the RX TX pins on the wemos. The following UART settings haveto be used: Baud Rate: 115’200 bit/s Data Bits: 8 Parity: None Stop Bit: 1 * Further information https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=5&cad=rja&uact=8&ved=2ahUKEwj3i7CtjN_hAhXCMewKHS2iCb0Q0PADMAR6BAgAEAU&url=https%3A%2F%2Fvancouversun.com%2Fnews%2Flocal-news%2Frising-co2-on-declining-nutrition-in-food-is-big-issue-ted-talk-hears&usg=AOvVaw0GijmobCE9pyIRmQTWTLFe ** Sensors https://hackaday.com/2019/04/16/picking-the-right-sensors-for-home-automation/