code.py
 1  # SPDX-FileCopyrightText: 2018 Kattni Rembor for Adafruit Industries
 2  #
 3  # SPDX-License-Identifier: MIT
 4  
 5  import time
 6  
 7  import analogio
 8  import board
 9  import storage
10  import adafruit_am2320
11  
12  vbat_voltage = analogio.AnalogIn(board.D9)
13  
14  i2c = board.I2C()  # uses board.SCL and board.SDA
15  am2320 = adafruit_am2320.AM2320(i2c)
16  
17  SD_CS = board.D10
18  spi = board.SPI()
19  
20  try:
21      import sdcardio
22  
23      sd_card = sdcardio.SDCard(spi, SD_CS)
24  except ImportError:
25      import adafruit_sdcard
26      import digitalio
27  
28      cs = digitalio.DigitalInOut(SD_CS)
29      sd_card = adafruit_sdcard.SDCard(spi, cs)
30  
31  vfs = storage.VfsFat(sd_card)
32  storage.mount(vfs, "/sd_card")
33  
34  
35  def get_voltage(pin):
36      return (pin.value * 3.3) / 65536 * 2
37  
38  
39  print("Logging temperature and humidity to log file")
40  
41  initial_time = time.monotonic()
42  
43  while True:
44      try:
45          with open("/sd_card/log.txt", "a") as sdc:
46              temperature = am2320.temperature
47              humidity = am2320.relative_humidity
48              battery_voltage = get_voltage(vbat_voltage)
49              current_time = time.monotonic()
50              time_stamp = current_time - initial_time
51              print("Seconds since current data log started:", int(time_stamp))
52              print("Temperature:", temperature)
53              print("Humidity:", humidity)
54              print("VBat voltage: {:.2f}".format(battery_voltage))
55              print()
56              sdc.write(
57                  "{}, {}, {}, {:.2f}\n".format(
58                      int(time_stamp), temperature, humidity, battery_voltage
59                  )
60              )
61          time.sleep(3)
62      except OSError:
63          pass
64      except RuntimeError:
65          pass