Skip to content

Instantly share code, notes, and snippets.

Avatar

Frank Gould frankgould

  • Orlando, Florida
View GitHub Profile
@frankgould
frankgould / battery_log.txt
Created Aug 25, 2020
Geekworm UPS3 RPi HAT Battery Status Log
View battery_log.txt
INFO:root:==================== Rover UPS3 Battery Capacity Communications Client Logging Started 08-25-20 08:30:13
INFO:root:08:30:15 - Input: Connected, State: Charging, Voltage: 4.20, Capacity: 100%. Value max17048_soc = 50.39453125
INFO:root:08:30:22 - Input: Connected, State: Charging, Voltage: 4.20, Capacity: 100%. Value max17048_soc = 50.77734375
INFO:root:08:30:28 - Input: Connected, State: Charging, Voltage: 4.20, Capacity: 100%. Value max17048_soc = 50.77734375
INFO:root:08:30:34 - Input: Connected, State: Charging, Voltage: 4.20, Capacity: 100%. Value max17048_soc = 51.16015625
INFO:root:08:30:40 - Input: Connected, State: Charging, Voltage: 4.20, Capacity: 100%. Value max17048_soc = 51.16015625
INFO:root:08:30:46 - Input: Connected, State: Charging, Voltage: 3.80, Capacity: 44%. Value max17048_soc = 51.546875
INFO:root:***** Battery at 41%. Power Disconnected, system will shutdown in 31 minutes!
INFO:root:08:30:53 - Input: Disconnected, State: Discharging, Voltage: 3.78, max17048_soc: 51.546875, Ti
@frankgould
frankgould / smartups3.py
Created Aug 25, 2020
Geekworm UPS3 RPi HAT Modified Example Code
View smartups3.py
import os, smbus, time, logging, atexit
from datetime import datetime
log_file = '/home/rover_logs/rover-battery-log-' + datetime.now().strftime('%m-%d-%y') + '.txt'
logging.basicConfig(filename=log_file,level=logging.DEBUG)
logging.info('==================== Rover UPS3 Battery Capacity Communications Client Logging Started ' + datetime.now().strftime('%m-%d-%y %H:%M:%S'))
BYTE_CONV_ADC_START = 0b10011101
BYTE_CONV_ADC_STOP = 0b00011101
BYTE_WATCHDOG_STOP = 0b10001101 #Stop Watchdog timer
@frankgould
frankgould / rover-server.py
Created Dec 9, 2019
This is the original Goddard rover prototype 1 code that will be separated into device individual modules: Recorder, Gimbal, Battery, and Motors.
View rover-server.py
#!/usr/bin/python3
#app name: rover-server.py
from __future__ import division
from datetime import datetime
import time, curses
import PiMotor
import gimbal
import subprocess
import os, sys
View rover-gimbal-client.py
#!/usr/bin/env python3
# gimbal-client.py is the Rover client app to receive commands from Remote and respond with ACK/WAK
## attribution: https://realpython.com/python-sockets/
from __future__ import division
from Raspi_PWM_Servo_Driver import PWM
from datetime import datetime, timedelta
import sys, socket, selectors, traceback, time, atexit, logging
import configparser
@frankgould
frankgould / rover_client.py
Last active Nov 29, 2019
The primary app to handle the client socket interface to the rover server.
View rover_client.py
#!/usr/bin/env python3
# rover-client.py is the Rover client app to receive ping from Remote and respond with ACK
import sys, socket, selectors, traceback, time
import rover_libclient
from datetime import datetime
sel = selectors.DefaultSelector()
# Connection startup - Socket and Message Object Creation
@frankgould
frankgould / rover-libclient.py
Last active Nov 29, 2019
This is the local rover client's library.
View rover-libclient.py
#!/usr/bin/env python3
# rover_libclient.py is the REMOTE socket library and Message class
import sys, selectors, json, struct
class Message:
def __init__(self, selector, sock, addr, name, request):
self.selector = selector
self.sock = sock
self.addr = addr
@frankgould
frankgould / gimbal.py
Created Oct 9, 2019
Server for multithreaded (asynchronous) chat application
View gimbal.py
#!/usr/bin/env python3
"""Server for multithreaded (asynchronous) chat application."""
from socket import AF_INET, socket, SOCK_STREAM, SOL_SOCKET, SO_REUSEADDR
from threading import Thread
from datetime import datetime
import logging, atexit, time
log_file = '/home/rover_logs/comm_server-log-' + datetime.now().strftime("%m-%d-%y") + '.txt'
logging.basicConfig(filename=log_file,level=logging.DEBUG)
logging.info('===== Rover Gimbal Communications Server Logging Started ' + datetime.now().strftime("%m-%d-%y %H:%M:%S"))
@frankgould
frankgould / btuart
Last active Aug 18, 2020
RPi4B files for bluetooth headsets on Arch Linux ARM 4.19
View btuart
#!/bin/sh
HCIATTACH=/usr/bin/hciattach
if grep -q "Pi 4" /proc/device-tree/model; then
BDADDR=
else
SERIAL=`cat /proc/device-tree/serial-number | cut -c9-`
B1=`echo $SERIAL | cut -c3-4`
B2=`echo $SERIAL | cut -c5-6`
B3=`echo $SERIAL | cut -c7-8`
@frankgould
frankgould / screenmanagertest.py
Last active Aug 9, 2019
This is the test app used to test and report on memory usage. Due to previous versions of Raspbian releases with graphics driver memory leaks, this code has been tested successfully with the latest version 4.19 named Buster and only runs without lockup with screen resolution 800x600. Any higher resolution and fullscreen lock up.
View screenmanagertest.py
#!/usr/bin/env python3
import glob
import os
#os.environ['KIVY_GRAPHICS'] = 'gles'
#os.environ['KIVY_WINDOW'] = 'sdl2'
from datetime import datetime
import time, sys, signal
import atexit
@frankgould
frankgould / config.txt
Created Mar 1, 2019
Arch Linux ARM config.txt
View config.txt
# Uncomment some or all of these to enable the optional hardware interfaces
# Params:
# i2c_arm Set to "on" to enable the ARM's i2c interface
# (default "off")
# i2c_vc Set to "on" to enable the i2c interface
# usually reserved for the VideoCore processor
# (default "off")
# i2c_arm_baudrate Set the baudrate of the ARM's i2c interface
# (default "100000")
# i2c_vc_baudrate Set the baudrate of the VideoCore i2c interface