Compare commits
39 Commits
crawler-so
...
7ea7f13e9b
| Author | SHA1 | Date | |
|---|---|---|---|
| 7ea7f13e9b | |||
| 9bb1cf2055 | |||
| 151853b1d3 | |||
| 6106c46bd8 | |||
| 5062ada35a | |||
| c2d9fb20d7 | |||
| cadc2b0c6a | |||
| a234275422 | |||
| c67bcdc484 | |||
| 61d77870a0 | |||
| ea5978f4e4 | |||
| 942809c95a | |||
| 598e84603f | |||
| c2695e1971 | |||
| af4c8f978b | |||
| 046c1f7846 | |||
| 03564ed485 | |||
| 19acde6d43 | |||
| d2f85f6aad | |||
| 779127ff73 | |||
| 9e58b2b1af | |||
| b902f8a500 | |||
| f38f1ab8ba | |||
| e092a570d1 | |||
| 3c0ecdd98c | |||
| 041bde458c | |||
| db52dbff47 | |||
| 9f0fb82831 | |||
| 049b1a7c5c | |||
| d12c7b64ed | |||
| f1696dd006 | |||
| 6fd0c249a0 | |||
| 66dfa763d2 | |||
| 218626d316 | |||
| f9a47e8891 | |||
| e414f63425 | |||
| 513fe74228 | |||
| 1e98970dc3 | |||
| d13b74ed47 |
3
.gitignore
vendored
3
.gitignore
vendored
@@ -1,5 +1,7 @@
|
||||
# Python
|
||||
__pycache__
|
||||
Pipfile
|
||||
Pipfile.lock
|
||||
|
||||
# CAD
|
||||
*.stl
|
||||
@@ -9,3 +11,4 @@ __pycache__
|
||||
*.png
|
||||
*.jpg
|
||||
*.wav
|
||||
*.pdf
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
13
README.md
13
README.md
@@ -1,7 +1,14 @@
|
||||
# To install on robot
|
||||
|
||||
```
|
||||
git clone <url>
|
||||
cd lewis-crawler/crawler_software/raspberry_pi
|
||||
make install?
|
||||
git clone https://kitsunehosting.net/gitea/Kenwood/lewis-crawler /srv/crawler
|
||||
cd /srv/crawler/crawler_software/raspberry_pi
|
||||
make install
|
||||
```
|
||||
|
||||
# Updating
|
||||
|
||||
```
|
||||
cd /srv/crawler
|
||||
git pull
|
||||
```
|
||||
|
||||
23
companion_software/BasicBot.py
Normal file
23
companion_software/BasicBot.py
Normal file
@@ -0,0 +1,23 @@
|
||||
from discord_webhook import DiscordWebhook
|
||||
from picamera import PiCamera
|
||||
from time import sleep
|
||||
|
||||
|
||||
def get_uptime():
|
||||
with open('/proc/uptime', 'r') as f:
|
||||
uptime_seconds = float(f.readline().split()[0])
|
||||
|
||||
return uptime_seconds
|
||||
|
||||
webhookURL = "https://discord.com/api/webhooks/856609966404534272/TR9tnLq2sIGZoOeADNswmGRNlzBcqM5aKihfU6snVTP9WhSSoVVvi7nT6i-ZfZS7Hcqm"
|
||||
|
||||
webhook = DiscordWebhook(url=webhookURL, content="Uptime: " + str( round( ((get_uptime() / 60) / 60 ), 2 )) + " hours")
|
||||
|
||||
camera = PiCamera()
|
||||
sleep(3) # let iso settle out
|
||||
camera.capture('still.jpg')
|
||||
|
||||
with open("still.jpg", "rb") as f:
|
||||
webhook.add_file(file=f.read(), filename='still.jpg')
|
||||
response = webhook.execute() # Hit send
|
||||
|
||||
BIN
crawler_cad/DigiCase/Digi Case Base.FCStd
Normal file
BIN
crawler_cad/DigiCase/Digi Case Base.FCStd
Normal file
Binary file not shown.
BIN
crawler_cad/DigiCase/Digi Case Lid.FCStd
Normal file
BIN
crawler_cad/DigiCase/Digi Case Lid.FCStd
Normal file
Binary file not shown.
BIN
crawler_cad/Frame.FCStd
Normal file
BIN
crawler_cad/Frame.FCStd
Normal file
Binary file not shown.
BIN
crawler_cad/MastCam/9gServo.FCStd
Normal file
BIN
crawler_cad/MastCam/9gServo.FCStd
Normal file
Binary file not shown.
BIN
crawler_cad/MastCam/MastCamFace.FCStd
Normal file
BIN
crawler_cad/MastCam/MastCamFace.FCStd
Normal file
Binary file not shown.
BIN
crawler_cad/MastCam/MastCamMount.FCStd
Normal file
BIN
crawler_cad/MastCam/MastCamMount.FCStd
Normal file
Binary file not shown.
BIN
crawler_cad/MastCam/MastCamRear.FCStd
Normal file
BIN
crawler_cad/MastCam/MastCamRear.FCStd
Normal file
Binary file not shown.
BIN
crawler_cad/MastCam/Window Wiper.FCStd
Normal file
BIN
crawler_cad/MastCam/Window Wiper.FCStd
Normal file
Binary file not shown.
BIN
crawler_cad/lewis-crawler.FCStd
Normal file
BIN
crawler_cad/lewis-crawler.FCStd
Normal file
Binary file not shown.
38
crawler_software/arduino/crawler_slave/Makefile
Normal file
38
crawler_software/arduino/crawler_slave/Makefile
Normal file
@@ -0,0 +1,38 @@
|
||||
# A makefile for building the robot's slave software
|
||||
# Uses arduino-cli
|
||||
#
|
||||
# Kitsune Scientific 2021
|
||||
|
||||
# What board to build for and its core
|
||||
CORE ?= arduino:avr
|
||||
FQBN ?= arduino:avr:nano:cpu=atmega328old
|
||||
|
||||
# What port to build on
|
||||
ifndef SERIAL_DEV
|
||||
ifneq (,$(wildcard /dev/ttyUSB0))
|
||||
SERIAL_DEV = /dev/ttyUSB0
|
||||
else ifneq (,$(wildcard /dev/ttyACM0))
|
||||
SERIAL_DEV = /dev/ttyACM0
|
||||
else
|
||||
SERIAL_DEV = unknown
|
||||
endif
|
||||
endif
|
||||
|
||||
all: requirements build upload
|
||||
|
||||
build: requirements crawler_slave.ino
|
||||
arduino-cli core install $(CORE)
|
||||
|
||||
arduino-cli compile -b $(FQBN) crawler_slave
|
||||
|
||||
upload: requirements crawler_slave.ino
|
||||
arduino-cli upload -b $(FQBN) crawler_slave -p $(SERIAL_DEV)
|
||||
|
||||
requirements:
|
||||
@if [ -e requirements.txt ]; \
|
||||
then while read -r i ; do echo ; \
|
||||
echo "---> Installing " '"'$$i'"' ; \
|
||||
arduino-cli lib install "$$i" ; \
|
||||
done < requirements.txt ; \
|
||||
else echo "---> MISSING requirements.txt file"; \
|
||||
fi
|
||||
@@ -51,7 +51,9 @@ void receiveEvent(int n) {
|
||||
|
||||
switch(id) {
|
||||
case 1:
|
||||
windowWiperServo.write(val);
|
||||
windowWiperServo.write(val); // Set a val
|
||||
delay(5); // pause for a moment
|
||||
windowWiperServo.detach(); // Detach (stop moving) the servo
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
1
crawler_software/arduino/crawler_slave/requirements.txt
Normal file
1
crawler_software/arduino/crawler_slave/requirements.txt
Normal file
@@ -0,0 +1 @@
|
||||
Servo
|
||||
18
crawler_software/raspberry_pi/Makefile
Normal file
18
crawler_software/raspberry_pi/Makefile
Normal file
@@ -0,0 +1,18 @@
|
||||
# A makefile for installing the robot's python
|
||||
# software and setting it up.
|
||||
#
|
||||
# Requires sudo
|
||||
#
|
||||
# Kitsune Scientific 2021
|
||||
|
||||
all: install
|
||||
|
||||
upload: crawler.service
|
||||
sudo cp crawler.service /etc/systemd/system/crawler.service
|
||||
|
||||
sudo systemctl daemon-reload
|
||||
|
||||
sudo systemctl enable crawler.service
|
||||
sudo systemctl start crawler.service
|
||||
|
||||
sudo systemctl status crawler
|
||||
@@ -0,0 +1,16 @@
|
||||
from PIL import Image
|
||||
import base64
|
||||
|
||||
im = Image.open('still.jpg')
|
||||
|
||||
# using Image.ADAPTIVE to avoid dithering
|
||||
for i in range(8, 0, -1):
|
||||
out = im.convert('P', palette=Image.ADAPTIVE, colors=i)
|
||||
|
||||
out.save(f'out_{i}_bits.png')
|
||||
|
||||
with open(f'out_{i}_bits.png', 'rb') as image_file:
|
||||
encoded_string = base64.a85encode(image_file.read())
|
||||
|
||||
with open(f'out_{i}_bits.txt', 'w') as f:
|
||||
f.write(encoded_string.decode('UTF-8'))
|
||||
@@ -0,0 +1 @@
|
||||
M,6r;%14!\!!!!.8Ou6I!!!)I!!!&X#Qk&,!4s2MScA`m!)Q?g7AGd(zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!.5pZZiC(+%V8a6Akbu".KBGK#QOi)zdSl>0!!-\'6pXdsSF+-I!<<*"_P$QtD$r"izzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!"D(e?.W!V_LqE<#t=!(fUS7'8jaJc
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
15
crawler_software/raspberry_pi/tests/otp/otp_test.py
Normal file
15
crawler_software/raspberry_pi/tests/otp/otp_test.py
Normal file
@@ -0,0 +1,15 @@
|
||||
import time, pyotp
|
||||
|
||||
totp = pyotp.TOTP(pyotp.random_base32())
|
||||
|
||||
code = totp.now()
|
||||
|
||||
for i in range(0,60):
|
||||
|
||||
if totp.verify(code):
|
||||
print(f'{code} verified fine at t+{i}')
|
||||
else:
|
||||
print(f'{code} expired at t+{i}')
|
||||
break
|
||||
|
||||
time.sleep(1)
|
||||
Reference in New Issue
Block a user