member-projects:m0jqq_-_bpq_for_beginners
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
member-projects:m0jqq_-_bpq_for_beginners [2024/02/17 09:29] – [BPQ for Beginners] m0jqq | member-projects:m0jqq_-_bpq_for_beginners [2024/12/15 12:44] (current) – [Monitoring a Remote Battery Voltage] section added m0jqq | ||
---|---|---|---|
Line 11: | Line 11: | ||
==== Things to check... ==== | ==== Things to check... ==== | ||
- What s the relationship between NODESINTERVAL within the port config and SIMPLE in the config header? | - What s the relationship between NODESINTERVAL within the port config and SIMPLE in the config header? | ||
- | - | + | - Found a new command to temporarily stop ports (needs SYSOP access) < |
+ | - Writeup Node Help: Create a NodeHelp.txt file in / | ||
+ | - Mine is | ||
+ | < | ||
+ | **************************** | ||
+ | * Ask Tom! * | ||
+ | * Always the best route :) * | ||
+ | **************************** | ||
+ | </ | ||
==== Configuring your node for mail ==== | ==== Configuring your node for mail ==== | ||
Line 401: | Line 409: | ||
+ | |||
+ | |||
+ | ==== Monitoring a Remote Battery Voltage ==== | ||
+ | |||
+ | GB7AAAX is powered via solar panels and we found there was a need to monitor the battery voltage. | ||
+ | |||
+ | I've elected to use the an ADC on an Arduino board to read the voltage from a divider circuit in order to reduce the input to no greater than 5 volts. The Arduino is powered and communicates via USB to the RPi. | ||
+ | |||
+ | === Arduino Nano === | ||
+ | |||
+ | == Wiring == | ||
+ | |||
+ | {{: | ||
+ | |||
+ | == Arduino code == | ||
+ | |||
+ | < | ||
+ | //To measure up to 15V dc | ||
+ | |||
+ | #define inputPin A0 | ||
+ | // mvpc is a measurement of actual millivolsts per count (5v ref/1064) | ||
+ | const float mvpc = 4.55; | ||
+ | //counts are the ouput of the adc | ||
+ | float counts = 0; | ||
+ | float mv = 0; | ||
+ | float multi = 3; | ||
+ | //multi depends on voltage divider setup (3 x 5k in series) | ||
+ | float output = 0; | ||
+ | |||
+ | void setup() { | ||
+ | // put your setup code here, to run once: | ||
+ | Serial.begin (115200); | ||
+ | } | ||
+ | |||
+ | void loop() { | ||
+ | // put your main code here, to run repeatedly: | ||
+ | counts = analogRead (inputPin); | ||
+ | mv = counts * mvpc; | ||
+ | output = (mv * multi) / 1000; | ||
+ | Serial.println(" | ||
+ | |||
+ | delay (5000); | ||
+ | } | ||
+ | |||
+ | </ | ||
+ | |||
+ | == Create python3 script – battMonitor.py== | ||
+ | Depending on RPI OS version, you may need to install Python and/or Python libraries | ||
+ | |||
+ | < | ||
+ | cd ~/ | ||
+ | nano battMonitor.py | ||
+ | #!/usr/bin python3 | ||
+ | import serial | ||
+ | import time | ||
+ | sdata = serial.Serial('/ | ||
+ | time.sleep(2) | ||
+ | sdata.reset_input_buffer() | ||
+ | print(" | ||
+ | try: | ||
+ | while True: | ||
+ | time.sleep(0.01) | ||
+ | if sdata.in_waiting >0: | ||
+ | file = open("/ | ||
+ | battState = sdata.readline().decode(' | ||
+ | file.write(f" | ||
+ | file.close() | ||
+ | print (battState) | ||
+ | except KeyboardInterrupt: | ||
+ | print(" | ||
+ | sdata.close() | ||
+ | file.close() | ||
+ | |||
+ | </ | ||
+ | Make it executable < | ||
+ | |||
+ | == Create bash startup script – getBattMonitor.sh == | ||
+ | < | ||
+ | nano getBattMonitor.sh | ||
+ | |||
+ | #!/bin/bash | ||
+ | sudo python3 / | ||
+ | sleep 1 | ||
+ | </ | ||
+ | |||
+ | Make it executable < | ||
+ | |||
+ | == Create beacon file == | ||
+ | |||
+ | < | ||
+ | |||
+ | Now is the time to test your work. Connect a variable power supply set to less tha 5 volts to the batt+ and Gnd connections of your Arduino and measure the voltage between GND & A0 It should be about one third of your variable power supply voltage. | ||
+ | Start the script with < | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | a < | ||
member-projects/m0jqq_-_bpq_for_beginners.1708162168.txt.gz · Last modified: 2024/02/17 09:29 by m0jqq