Skip to content

Commit 8629690

Browse files
authored
Merge pull request #23 from mcci-catena/TMM-catena4460-aqi
Add Catena 4460 AQI sketch
2 parents b6a9822 + 50454f7 commit 8629690

9 files changed

Lines changed: 1347 additions & 411 deletions

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,3 +45,6 @@ __vm
4545

4646
# VS Code things
4747
.vscode
48+
49+
# the build directory
50+
build

README.md

Lines changed: 48 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,15 @@ This repository is the top-level repository for the software. In order to build,
1010
<!-- TOC depthFrom:2 -->
1111

1212
- [Sketch Overview](#sketch-overview)
13-
- [catena4450m101_sensor1](#catena4450m101_sensor1)
14-
- [catena4410_sensor1](#catena4410_sensor1)
15-
- [catena4410_test3](#catena4410_test3)
16-
- [catena4410_test1, catena4410_test2](#catena4410_test1-catena4410_test2)
17-
- [catena4450_test01](#catena4450_test01)
18-
- [catena4450m101_sensor](#catena4450m101_sensor)
19-
- [catena4450m102_pond](#catena4450m102_pond)
13+
- [Full Sensor Programs](#full-sensor-programs)
14+
- [catena4450m101_sensor1](#catena4450m101_sensor1)
15+
- [catena4450m102_pond](#catena4450m102_pond)
16+
- [catena4460_aqi](#catena4460_aqi)
17+
- [catena4410_sensor1](#catena4410_sensor1)
18+
- [Test programs](#test-programs)
19+
- [catena4410_test3](#catena4410_test3)
20+
- [catena4410_test1, catena4410_test2](#catena4410_test1-catena4410_test2)
21+
- [catena4450_test01](#catena4450_test01)
2022
- [Extras](#extras)
2123
- [Required Board-Support Packages](#required-board-support-packages)
2224
- [Required Libraries](#required-libraries)
@@ -29,79 +31,87 @@ This repository is the top-level repository for the software. In order to build,
2931

3032
## Sketch Overview
3133

32-
There are two kinds of sketches here: test programs (catena4410_test1, catene4410_test2, catena4410_test3, catena4450_test1), and full sensor programs (catena4410_sensor1, catena4420_test1, catena4450_sensor1).
34+
There are two kinds of sketches here: test programs (catena4410_test1, catene4410_test2, catena4410_test3, catena4420_test1,catena4450_test1), and full sensor programs (catena4410_sensor1, catena4450m101_sensor1, catena4450m102_pond, catena4460_aqi).
3335

3436
The sketches that use LoRaWAN take advantage of the [MCCI](http://www.mcci.com) [arduino-lorawan](https://github.com/mcci-catena/arduino-lorawan) library to cleanly separate the application from the network transport.
3537

3638
The sensor sketches also use the RTCZero library to sleep the CPU.
3739

38-
### catena4450m101_sensor1
40+
### Full Sensor Programs
41+
42+
#### catena4450m101_sensor1
3943

4044
This is the application written for the Catena 4450 power monitoring node used in the [Ithaca Power Project](https://ithaca-power.mcci.com). It uses FRAM-based provisioning (so there is no need to edit code to change LoRaWAN keys or other settings).
4145

42-
### catena4410_sensor1
46+
#### catena4450m102_pond
47+
48+
This is the Tzu Chi University / Asolar Hualian research farm project sketch, upgraded for use with the Catena 4450. It uses the integrated FRAM for provisioning, auto-detects the attached sensors, and transmits data in format 0x15.
49+
50+
#### catena4460_aqi
51+
52+
This sketch collects and transmits air-quality information using the Bosch BME680 sensor on the MCCI Catena 4460. It transmits data in format 0x17.
53+
54+
#### catena4410_sensor1
4355

4456
This sketch is the application written for the Tzu Chi University / Asolar Hualian research farm project. One firmware image is used for a variety of sensors. You can configure a given sensor as a general purpose device or as a specific subset, referencing back to the Atmel SAMD21 CPU's unique identifier. All provisioning is done at compile time, but the network keys and other sensitive information is placed in a special library that is outside the normal set of repositories.
4557

4658
The sketch transmits data in format 0x11.
4759

48-
### catena4410_test3
60+
### Test programs
61+
62+
#### catena4410_test3
4963

5064
This is the primary test app used when bringing up and provisioning Catena 4410 units for use with The Things Network.
5165

52-
### catena4410_test1, catena4410_test2
66+
#### catena4410_test1, catena4410_test2
5367

5468
These are simpler test programs. They were rarely used after test3 was ready, but they may be useful for test of future Catena 441x variants
5569
with different sensor configurations.
5670

57-
### catena4450_test01
71+
#### catena4450_test01
5872

5973
This is the primary (non-LoRaWAN) test sketch for the Catena 4450.
6074

61-
### catena4450m101_sensor
62-
63-
This is the sketch used with the Catena 4450 for power sensing for the Ithaca Power project. It uses the integrated FRAM for provisioning, and transmits data in format 0x14.
64-
65-
### catena4450m102_pond
66-
67-
This is the Tzu Chi University / Asolar Hualian research farm project sketch, upgraded for use with the Catena 4450. It uses the integrated FRAM for provisioning, auto-detects the attached sensors, and transmits data in format 0x15.
68-
6975
## Extras
7076

71-
The directory `extras` contains documenation and sample scripts for decoding the various formats.
77+
The directory `extras` contains documentation and sample scripts for decoding the various formats.
7278

7379
## Required Board-Support Packages
7480

75-
All board support packages are maintained by MCCI. You should add the path to the reference Json file in your Arduino preferences. As of this writing, the file name to add to the list is:
76-
77-
```
78-
https://github.com/mcci-catena/arduino-boards/raw/master/BoardManagerFiles/package_mcci_index.json
79-
```
80-
81-
Check the [MCCI board support repository](https://github.com/mcci-catena/arduino-boards) for the latest information.
81+
All board support packages are maintained by MCCI. You should add the path to the reference Json file in your Arduino preferences. See the README for [arduino-boards](https://github.com/mcci-catena/arduino-boards) for more informatin.
8282

8383
## Required Libraries
8484

8585
A number of libraries are required by this code. `catena4450m101_sensor1` contains a Bash script [`git-boot.sh`](https://github.com/mcci-catena/Catena-Sketches/blob/master/catena4450m101_sensor/git-boot.sh) that can be used to download all the libraries, using a simple database stored in [`git-repos.dat`](https://github.com/mcci-catena/Catena-Sketches/blob/master/catena4450m101_sensor/git-repos.dat).
8686

87-
* [MCCI's Catena Platform library](https://github.com/mcci-catena/CatenaArduinoPlatform) provides an enhanced environment for portable sketch development. It includes an command-processing framework, an elaborate persistant storage framework, encoding libraries, support for storing the persistent data from the `arduino-lorawan` library, and so forth.
88-
* [MCCI's Arduino-LoRaWAN library](https://github.com/mcci-catena/arduino-lorawan) is a structured wrapper for the Arduino LMIC library, with the neccessary hooks for interfacing to persistent storage.
87+
* [MCCI's Catena Platform library](https://github.com/mcci-catena/Catena-Arduino-Platform) provides an enhanced environment for portable sketch development. It includes an command-processing framework, an elaborate persistent storage framework, encoding libraries, support for storing the persistent data from the `arduino-lorawan` library, and so forth.
88+
89+
* [MCCI's Arduino-LoRaWAN library](https://github.com/mcci-catena/arduino-lorawan) is a structured wrapper for the Arduino LMIC library, with the necessary hooks for interfacing to persistent storage.
90+
8991
* [MCCI's Ardino LMIC library](https://github.com/mcci-catena/arduino-lmic) is MCCI's fork of [The Things Network New York Arduino LMIC code](https://github.com/things-nyc/arduino-lmic).
92+
9093
* [MCCI's ADK](https://github.com/mcci-catena/Catena-mcciadk) is MCCI's general-purpose cross-platform "XDK" library, ported to the Arduino environment.
94+
9195
* [MCCI's Fork of the SAMD RTCZero library](https://github.com/mcci-catena/RTCZero) has the somewhat more substantial changes needed to allow the various processor sleep modes to be accessed, and to allow for some debuggging of the sleep mode chosen.
9296

9397
## Libraries for sensor work
9498

9599
* [MCCI's Adafruit BME280 library](https://github.com/mcci-catena/Adafruit_BME280_Library) is used to make temperature, humidity and barometric pressure measurements using the [Adafruit BME280 breakout board](https://www.adafruit.com/products/2652), which we connect via I2C. It's based on the Adafruit library, but updated so that temperature, humidity and pressure are all read at the same time, to avoid data instability.
100+
96101
* The [OneWire](https://github.com/mcci-catena/OneWire) and [Arduino Temperature Control Library](https://github.com/mcci-catena/Arduino-Temperature-Control-Library) are used for making measurements from Dallas-Semiconductor-based temperature sensors such as the [immersible sensor](https://www.adafruit.com/products/381) from Adafruit.
102+
97103
* The [Adafruit Sensor Library](https://github.com/mcci-catena/Adafruit_Sensor) and the [Adafruit TSL2561 Lux Sensor Library](https://github.com/mcci-catena/Adafruit_TSL2561) are used for making ambient light measurements with the Adafruit [TSL2561 Lux Sensor](https://www.adafruit.com/products/439)
104+
98105
* The [SHT1x library](https://github.com/mcci-catena/SHT1x) is used for measuring soil temperature and humidity using the Adafruit [SHT10 sensor](https://www.adafruit.com/products/1298).
99106

100107
## Related Work
108+
101109
* [MCCI's Fork of the Map The Things Arduino Sketch](https://github.com/mcci-catena/mapthethings-arduino) contains, on the MCCI-Catena branch, a port of that app supporting OTAA, using the Catena libraries.
110+
102111
* [MCCI's Catena Hardware Repository](https://github.com/mcci-catena/HW-Designs) contains hardware design information and schematics.
103112

104113
## Boilerplate
114+
105115
MCCI work is released under the MIT public license. All other work from contributors (repositories forked to the MCCI Catena [github page](https://github.com/mcci-catena/)) are licensed according to the terms of those modules.
106116

107117
Support inquiries may be filed at [https:://portal.mcci.com](https:://portal.mcci.com) or as tickets on [github](https://github.com/mcci-catena). We are very busy, so we can't promise to help; but we'll do our best.
@@ -114,4 +124,10 @@ Thanks to Amy Chen of Asolar, Josh Yu, and to Tzu-Chih University for funding th
114124

115125
Further thanks to [Adafruit](https://www.adafruit.com/) for the wonderful Feather M0 LoRa platform, to [The Things Network](https://www.thethingsnetwork.org) for the LoRaWAN-based infrastructure, to [The Things Network New York](https://thethings.nyc) and [TTN Ithaca](https://ttni.tech) for the inspiration and support, and to the myriad people who have contributed to the Arduino and LoRaWAN infrastructure.
116126

117-
**MCCI** and **Catena** are registered trademarks of MCCI Corporation.
127+
MCCI and MCCI Catena are registered trademarks of MCCI Corporation.
128+
129+
LoRa is a registered trademark of Semtech Corporation.
130+
131+
LoRaWAN is a trademark of the LoRa Alliance.
132+
133+
All other trademarks are the property of their respective owners.

catena4450m101_sensor/git-boot.sh

Lines changed: 33 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@
55
# Module: gitboot.sh
66
#
77
# Function:
8-
# Load the repositories for building this sketch
8+
# Install the libraries needed for building a given sketch.
99
#
1010
# Copyright notice:
11-
# This file copyright (C) 2017 by
11+
# This file copyright (C) 2017-2018 by
1212
#
1313
# MCCI Corporation
1414
# 3520 Krums Corners Road
@@ -72,26 +72,12 @@ else
7272
exit 1
7373
fi
7474

75-
##############################################################################
76-
# load the list of repos
77-
##############################################################################
78-
79-
### use a long quoted string to get the repositories
80-
### into LIBRARY_REPOS. Multiple lines for readabilty.
81-
LIBRARY_REPOS_DAT="${PDIR}/git-repos.dat"
82-
if [ ! -f "${LIBRARY_REPOS_DAT}" ]; then
83-
_fatal "can't find suitable git-repos.dat:" "${LIBRARY_REPOS_DAT}"
84-
fi
85-
86-
# parse the repo file, deleting comments
87-
LIBRARY_REPOS=$(sed -e 's/#.*$//' ${PDIR}/git-repos.dat)
88-
8975
##############################################################################
9076
# Scan the options
9177
##############################################################################
9278

9379
LIBRARY_ROOT="${LIBRARY_ROOT_DEFAULT}"
94-
USAGE="${PNAME} -[D l* T u v]; ${PNAME} -H for help"
80+
USAGE="${PNAME} -[D l* T u v] [datafile...]; ${PNAME} -H for help"
9581

9682
#OPTDEBUG and OPTVERBOS are above
9783
OPTDRYRUN=0
@@ -130,15 +116,20 @@ Switches:
130116
Default is $LIBRARY_ROOT_DEFAULT.
131117
-S Skip repos that already exist; -nS means
132118
don't run if any repo already exist.
133-
Only consulted if -nu.
134-
-T Do a trial run (go through the motions
119+
Only consulted if -nu.
120+
-T Do a trial run (go through the motions
135121
but don't do anything).
136122
-u Do a git pull if repo already is found.
137123
-nu just skips the repository if it already
138124
exists. -nu is the default.
139125
-v turns on verbose mode; -nv is the default.
140126
-H prints this help message.
141127
128+
Data files:
129+
The arguments specify repositories to be fetched, one repository
130+
per line, in the form https://github.com/orgname/repo.git (or
131+
similar). Blank lines and comments beginning with '#' are ignored.
132+
142133
.
143134
exit 0;;
144135
\?) echo "$USAGE" 1>&2
@@ -149,10 +140,31 @@ done
149140
#### get rid of scanned options ####
150141
shift `expr $OPTIND - 1`
151142

152-
if [ $# -ne 0 ]; then
153-
_error "extra arguments: $@"
143+
if [ $# -eq 0 ]; then
144+
if [ -f "${PWD}/git-repos.dat" ]; then
145+
LIBRARY_REPOS_DAT="${PWD}/git-repos.dat"
146+
else
147+
LIBRARY_REPOS_DAT="${PDIR}/git-repos.dat"
148+
fi
149+
_verbose "setting LIBRARY_REPOS_DAT to ${LIBRARY_REPOS_DAT}"
150+
set -- "${LIBRARY_REPOS_DAT}"
154151
fi
155152

153+
##############################################################################
154+
# load the list of repos
155+
##############################################################################
156+
157+
### use a long quoted string to get the repositories
158+
### into LIBRARY_REPOS. Multiple lines for readabilty.
159+
for LIBRARY_REPOS_DAT in "$@" ; do
160+
if [ ! -f "${LIBRARY_REPOS_DAT}" ]; then
161+
_fatal "can't find git-repos data file:" "${LIBRARY_REPOS_DAT}"
162+
fi
163+
done
164+
165+
# parse the repo file, deleting comments and eliminating duplicates
166+
LIBRARY_REPOS=$(sed -e 's/#.*$//' "$@" | LC_ALL=C sort -u)
167+
156168
#### make sure LIBRARY_ROOT is really a directory
157169
if [ ! -d "$LIBRARY_ROOT" ]; then
158170
_fatal "LIBRARY_ROOT: Can't find Arduino libraries:" "$LIBRARY_ROOT"

0 commit comments

Comments
 (0)