From 3d5a084b47a108389cf0ce92526cda38a3ca30a0 Mon Sep 17 00:00:00 2001 From: Siwat Sirichai Date: Fri, 28 Oct 2022 15:13:25 +0700 Subject: [PATCH] implement basic HTTP API using flask --- .gitignore | 2 ++ app.py | 57 ++++++++++++++++++++++++++++++++++++++++++++++++ kuukar.py | 19 ---------------- requirements.txt | 3 ++- 4 files changed, 61 insertions(+), 20 deletions(-) create mode 100644 .gitignore create mode 100644 app.py delete mode 100644 kuukar.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..fd20fdd --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ + +*.pyc diff --git a/app.py b/app.py new file mode 100644 index 0000000..5219258 --- /dev/null +++ b/app.py @@ -0,0 +1,57 @@ +from telemetrix_rpi_pico import telemetrix_rpi_pico +import kuukar_leds +import kuukar_collision +import kuukar_motion +import kuukar_lcd +import kuukar_sensors +import kuukar_environment +from flask import Flask, request + +from kuukar_config import SERIAL_AUX_BOARD, SERIAL_DRIVER_BOARD + +app = Flask(__name__) + +aux_board = telemetrix_rpi_pico.TelemetrixRpiPico(com_port=SERIAL_AUX_BOARD) +driver_board = telemetrix_rpi_pico.TelemetrixRpiPico(com_port=SERIAL_DRIVER_BOARD) +sensors = kuukar_sensors.sensors(aux_board, driver_board) +leds = kuukar_leds.leds(aux_board=aux_board) +lcd = kuukar_lcd.lcd() +environment = kuukar_environment.environment(lcd, leds, sensors) +collision = kuukar_collision.collision(aux_board, lcd, leds) +motion = kuukar_motion.motion(driver_board=driver_board, leds=leds, sensors=sensors) + + +@app.route('/drive') +def drive(): + speed = int(request.args.get('speed')) + motion.drive(speed) + + +@app.route("/stop") +def stop(): + motion.stop() + + +@app.route('/turn') +def turn(): + speed = int(request.args.get('speed')) + duration = int(request.args.get('duration')) + motion.turn(speed, duration) + + +@app.route('/set_ambient_leds') +def set_ambient_leds(): + r = int(request.args.get('r')) + g = int(request.args.get('g')) + b = int(request.args.get('b')) + leds.set_ambient_led(r, g, b) + + +@app.route('/set_mode') +def set_mode(): + mode = str(request.args.get('mode')) + if mode == "AI": + motion.roam_start() + elif mode == "MANUAL": + motion.roam_stop() + \ No newline at end of file diff --git a/kuukar.py b/kuukar.py deleted file mode 100644 index a269618..0000000 --- a/kuukar.py +++ /dev/null @@ -1,19 +0,0 @@ -from telemetrix_rpi_pico import telemetrix_rpi_pico -import kuukar_leds -import kuukar_collision -import kuukar_motion -import kuukar_lcd -import kuukar_sensors -import kuukar_environment - -from kuukar_config import SERIAL_AUX_BOARD, SERIAL_DRIVER_BOARD - -if __name__ == '__main__': - aux_board = telemetrix_rpi_pico.TelemetrixRpiPico(com_port=SERIAL_AUX_BOARD) - driver_board = telemetrix_rpi_pico.TelemetrixRpiPico(com_port=SERIAL_DRIVER_BOARD) - sensors = kuukar_sensors.sensors(aux_board, driver_board) - leds = kuukar_leds.leds(aux_board=aux_board) - lcd = kuukar_lcd.lcd() - environment = kuukar_environment.environment(lcd, leds, sensors) - collision = kuukar_collision.collision(aux_board, lcd, leds) - motion = kuukar_motion.motion(driver_board=driver_board, leds=leds, sensors=sensors) diff --git a/requirements.txt b/requirements.txt index 195ca31..13733fb 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,3 @@ telemetrix-rpi-pico -pyaudio \ No newline at end of file +pyaudio +flask \ No newline at end of file