Skip to content
Alexandre Bevington edited this page Nov 27, 2024 · 31 revisions

Welcome to the RemoteLogger wiki!

Project Overview

RemoteLogger was borne out of a need for a low cost data logger with satellite telemetry capabilities for environmental monitoring in Northern British Columbia. We have had many prototypes, each with pros and cons. Our team consists of hydrologists and geographers, not electrical engineers or software developpers. The project is a working prototype and seeks to become scallable with custom chip printing and simplified designs in the future.

Build a RemoteLogger

To build a RemoteLogger, you will need to source multiple off-the-shelf components from websites like Digikey or Mouser, then solder and assemble the loggers following our wiring diagrams, and decide on where the data will be sent and how it will be presented. There are currently a few different version of the data logger, each with their pros and cons and individual parts lists.

Versions

We have many versions of the data logger. They mix and match the following three options:

  1. RemoteLogger version:
  • Non-TPL Version
    • Versatile timing controlled by code
    • Able to sample exactly on specific intervals, e.g. 10:10:00 AM, 10:20:00 AM, 10:30:00 AM
    • Uses deep sleep and watchdog timers to manage intervals and resets
    • Prone to hang ups!
  • TPL Chip Version
    • Less versatile timing (controlled mechanically using switches)
    • Extremely low power consumption between samples!
    • Resets logger from scratch at every sample (avoids hang ups)
    • Turns back on if battery dies and charges back up.
  1. Telemetry options:
  • No telemetry
  • RockBlock 9603 (Iridium)
  • Particle Boron (LTE) (coming soon)
  1. Sensors options:

Parts List

Item Number $CAD Link Comment
Feather M0 1 29$ Digikey Micro controller unit
Featherwing 1 22$ Digikey Screw terminals for Feather M0
RTC PCF8523 1 10$ Digikey Clock
CR1220 3V 1 1$ Amazon Clock battery
Micro SD 1 5$ Amazon >8GB
3.7V LiPo 10,000 mAh 1 30$ Adafruit High capacity battery with JST connection
LiPo Fire Bag (optional) 1 15$ Amazon Fire proof bag for lipo
Charge Controller 1 15$ Adafruit For lithium battery
JST-JST Jumper 1 2$ Digikey Easy connection between charge controller and TPL 5110 or Feather M0
Solar Panel 1 120$ Mouser There are a lot of options for panels
Solar Panel Cable 1 6$ Digikey
Solar Panel Adapter 1 3$ Digikey
TPL 5110 1 11$ Digikey Timer that controls power for entire unit
Micro-USB 5-pin 1 10$ Digikey Required because TPL will be fried if connected to 3V pin and computer is plugged into the MCU
RockBlock 9603 1 405$ Adafruit or SparkFun or Ground Control or DigiKey
RockBlock Antennae Optional 127$ Digikey
RockBlock Metal Plate Optional 5$ Hardware Store Optional to help boost signal from Antennae, need to cut to fit inside data logger
RockBlock - Option 1 10 pin picoblade 1 2$ AdafruitDigikey
Case 1 70$ Digikey Note iridium messages don't travel through metal.
Cable Gland 6-12mm PG13.5 2 5$ Digikey

Other supplies:

Item Number $CAD Link Comment
Bulk 24 AWG Hookup Wire 1 pack for many loggers $ Digikey
Bulk Desicants 2 per logger, replace frequently $ Amazon
Bulk Shrink Wrap Optional for splicing wires etc. $ Amazon
Nylon mounting screws Optional for mounting boards. Other option is velcro. $ Digikey
Wood to mount boards to For mounting the boards. $ Home depot
Cable extension with shield (5 x 24AWG) 1M Optional, for extending sensor wires. $ Digikey

Wiring Diagrams

Static link here.

Assembly

  • Order equipment
  • Set-up work station
  • Solder components that require it
  • Assemble using wiring diagram
  • RockBlock 9603: Two LEDs to indicate power status. The Red LED indicates the presence of a DC power supply. The Green LED indicates that the super capacitor has sufficient charge to switch on the Iridium module, and successfully transmit. If the Green LED is flashing, this can indicate the modem is drawing too much current from the supply. Try connecting the unit to another supply ie a USB power supply instead of a computer. If it is still flashing, this can indicate a faulty modem or cable. Wiring. Ensure RockBlock is wired for the internal (Patch) or external (SMA) antennae See here
  • TPL 5110 switches - Set timer at 15 min (D+E)



  • Charge controller
    • Charge controller: Cut 'therm' trace if thermistor is connected, cut 1.0A trace and solder 1.5A trace for faster charging, test charge rate by connecting multimeter (10A to OUT, COM to GRD) and set multimeter to 200mA, should read 1.5A (Data sheet)

Code

Arduino

  1. Install Arduino IDE
  2. Add Adafruit board library: Since we use the Adafruit M0, follow https://learn.adafruit.com/adafruit-feather-m0-basic-proto/setup

Libraries

Pushing Code

RockBlock

  • Error codes
    • 0 = ISBD_SUCCESS
    • 1 = ISBD_ALREADY_AWAKE
    • 2 = ISBD_SERIAL_FAILURE
    • 3 = ISBD_PROTOCOL_ERROR
    • 4 = ISBD_CANCELLED
    • 5 = ISBD_NO_MODEM_DETECTED
    • 6 = ISBD_SBDIX_FATAL_ERROR
    • 7 = ISBD_SENDRECEIVE_TIMEOUT
    • 8 = ISBD_RX_OVERFLOW
    • 9 = ISBD_REENTRANT
    • 10 = ISBD_IS_ASLEEP
    • 11 = ISBD_NO_SLEEP_PIN

Server and Database

Apache2

CGI Script

Postgres

R Shiny

  • Estimate battery life

    • Connect a multimeter in serial to the JST power cable in (need to cut it and add aligator clips on positive lead). Change multimeter to A. Change red terminal to A, and black to COM.

    • On the hydros-21 setup, we measured: sleep as 30 milliamps, measurements as 90 milliamps, and iridium transmissions as 245 milliamps.

      sleep <- 30
      msmt <- 90
      irid <- 245
      
      Load_current_avgH = 
        (
          (irid * (5/60) * 12) + # 5 min, 12 times per day
          (msmt * (1/60)/4 * 24 * 6) + # 25 seconds every 10 min
          (sleep * (58/60) * 24) # roughly 58 minutes per hour
        )/24 # Average hourly
      
      # Battery capacity in milliamphours
      mAmp_hour_rating = 10000 
      
      # Hours_running
      mAmp_hour_rating / Load_current_avgH #= 241 hours
      
      # Days_running
      mAmp_hour_rating / Load_current_avgH / 24 #= 10 days
      

Extra ..

Setup PostgreSQL in the cloud

Setup CGI in the cloud

Send data to PostgreSQL database via CGI

Setup R Shiny App in the cloud

Reminders: Database commands

Linux commands

  1. Change directory: cd
  2. Copy file: cp source.py dest.py
  3. Edit file: vim cgi.py
  4. Vim edit: i
  5. Vim save: Esc :w
  6. Vim save and close: Esc :x
  7. CGI location: cd ../../var/www

Post data to

  1. http://IPADDRESS/CGI.py?data=HEX&imei=1