WAVEGO code breakdown - dongwon18/CareRobotBoBi GitHub Wiki

RPI

app.py

  • flask๋ฅผ ์ด์šฉํ•œ web app ๊ตฌ๋™์„ ์œ„ํ•œ ํ•จ์ˆ˜ ๋ชจ์Œ
  • route ์„ค์ •, class webapp
  • flask์˜ ip, port ๋“ฑ ์„ค์ •

base_camera.py

  • class CameraEvent
    • ์ƒˆ๋กœ์šด frame์ด ๋“ค์–ด์™”์„ ๋•Œ client์—๊ฒŒ signal์„ ๋ณด๋‚ด์ฃผ๋Š” event ๊ฐ™์€ class
    • wait
      • ์ƒˆ๋กœ์šด client๋ผ๋ฉด thread event ๋“ฑ๋ก ํ•˜๊ณ  events list์— ์ €์žฅ
      • client ๋“ค์ด ์“ฐ๋Š” ํ•จ์ˆ˜
      • ํ•ด๋‹น id๋ฅผ ๊ฐ€์ง„ client์˜ wait
    • set
      • ์ƒˆ๋กœ์šด frame์ด ์ƒ๊ฒผ์„ ๋•Œ ์‚ฌ์šฉ
      • camera thread๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ํ•จ์ˆ˜
      • client๊ฐ€ set ๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฉด ํ˜„์žฌ ์‹œ๊ฐ„์œผ๋กœ set
      • set ๋˜์–ด ์žˆ๋Š” client๊ฐ€ 5์ดˆ ๋™์•ˆ ์ด์ „ frame์„ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š์œผ๋ฉด client๊ฐ€ ํ‡ด์žฅํ–ˆ๋‹ค ์ƒ๊ฐํ•˜๊ณ  events list์—์„œ ์ œ๊ฑฐ
    • clear
      • ๋ชจ๋“  events list clear
  • class BaseCamera
    • init
      • ์นด๋ฉ”๋ผ๊ฐ€ ์‹คํ–‰์ค‘์ด์ง€ ์•Š์œผ๋ฉด background ์—์„œ thread๋กœ ์ฒ˜๋ฆฌํ•˜๋„๋ก thread ์ƒ์„ฑ
    • get_frame
      • CameraEvent class๋ฅผ ์ด์šฉํ•˜์—ฌ ์ตœ์‹  frame return
        • wait, clear ์‚ฌ์šฉ
    • frames
    • thread
      • client์—๊ฒŒ ์ƒˆ๋กœ์šด frame์ด ๋“ค์–ด์™”๋‹ค๊ณ  ์‹ ํ˜ธ๋ฅผ ์คŒ
      • 10์ดˆ ๋™์•ˆ ์–ด๋–ค client๋„ frame์„ ์š”๊ตฌํ•˜์ง€ ์•Š์œผ๋ฉด ์ž๋™ ์ข…๋ฃŒ๋˜๋Š” ๋ถ€๋ถ„์€ ์ฃผ์„ ์ฒ˜๋ฆฌ ๋˜์–ด ์žˆ์Œ

camera_opencv.py

  • class BaseCamera๋ฅผ ์‚ฌ์šฉ
  • class CVThread
    • mode
      • mode, img ์„ค์ •
    • elementDraw
      • CVMode์— ๋”ฐ๋ผ text, ์‚ฌ๊ฐํ˜• img์— ๊ทธ๋ฆผ
      • faceDetection, findColor, findlineCV, watchDog
    • findLineTest
      • ๋ผ์ธ์— ๋”ฐ๋ผ์„œ ์™ผ์ชฝ, ์˜ค๋ฅธ์ชฝ์œผ๋กœ command๋ฅผ ์ถœ๋ ฅ
      • ์ถœ๋ ฅ๋งŒ ํ•˜๊ณ  ์‹ค์ œ ๋กœ๋ด‡์—๊ฒŒ ๋ช…๋ น์€ ์•ˆ ๋‚ด๋ฆผ - ๊ทธ๋ƒฅ ํ…Œ์ŠคํŠธ์šฉ
      • ์•„๋ฌด๋ž˜๋„ line tracingํ•˜๋Š”๋ฐ ์“ฐ๋Š” ๊ฒƒ์ธ ๋“ฏ????
    • findLineCtrl
      • ๋™์ž‘์€ findLineTest์™€ ๋™์ผํ•˜๋‚˜ ์‹ค์ œ๋กœ ๋กœ๋ด‡์—๊ฒŒ ๋ช…๋ น ๋‚ด๋ฆผ
    • findlineCV
      • grayscale๋กœ ์ฐ์€ ์ด๋ฏธ์ง€ ๋ณ€๊ฒฝ
      • frame_findline์„ ์ด์šฉํ•˜์—ฌ ์„  ์ฐพ๊ธฐ
        • ๋‘ ์„ ์— ๋Œ€ํ•ด ์ง„ํ–‰
        • lineColorSet์ด๋ž‘ ๋™์ผํ•œ ์ƒ‰์„ ๊ฐ–๋Š” ๋ผ์ธ ํŒ๋ณ„
      • CVMode์— ๋”ฐ๋ผ ์‹คํ–‰(findLineCtrl, findLineTest ์ค‘)
    • findColor
    • faceDetectCV
    • watchDog
      • grayscale๋กœ ๋ณ€ํ™˜
      • dilate, findContours๋ฅผ ์ด์šฉํ•˜์—ฌ ์ด์ „๊ณผ ๋‹ค๋ฅธ ๊ฒŒ ์žˆ๋Š”์ง€ ํŒ๋‹จ
    • pause
    • resume
    • run
  • class Camera
  • def commandAct

haarcascade_frontalface_default.xml

  • ์˜์ƒ ์ธ์‹์šฉ ํ•™์Šต๋œ ๋ฐ์ดํ„ฐ

info.py

  • ๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด CPU, GPU, ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰๊ณผ ์˜จ๋„๋ฅผ ์ธก์ •ํ•˜์—ฌ ๋ฐ˜ํ™˜

robot.py

  • ๊ธฐ๋ณธ ๊ธฐ๋Šฅ์— ๊ด€๋ จ๋œ ํ•จ์ˆ˜๋“ค
  • serial ํ†ต์‹ ์œผ๋กœ ๊ฐ ๊ธฐ๋Šฅ๋งˆ๋‹ค ํ•จ์ˆ˜๋ฅผ ๋ณด๋ƒ„
  • setUpperIP
    • ipInput์œผ๋กœ ๋“ค์–ด์˜จ IP๋ฅผ upperIP๋กœ ์„ค์ •
ํ•จ์ˆ˜ ์ด๋ฆ„ ๋ชฉ์  var val
forward 4์กฑ๋ณดํ–‰ move 1
backward 4์กฑ๋ณดํ–‰ move 5
left 4์กฑ๋ณดํ–‰ move 2
right 4์กฑ๋ณดํ–‰ move 4
stopLR 4์กฑ๋ณดํ–‰ move 6
stopFB 4์กฑ๋ณดํ–‰ move 3
lookUp ์ œ์Šค์ฒ˜ ges 1
lookDown ์ œ์Šค์ฒ˜ ges 2
lookStopUD ์ œ์Šค์ฒ˜ ges 3
lookLeft ์ œ์Šค์ฒ˜ ges 4
lookRight ์ œ์Šค์ฒ˜ ges 5
lookStopLR ์ œ์Šค์ฒ˜ ges 6
steadyMode ํŠน๋ณ„ ํ–‰๋™ funcMode 1
jump ํŠน๋ณ„ ํ–‰๋™ funcMode 4
handShake ํŠน๋ณ„ ํ–‰๋™ funcMode 3
  • lightCtrl
    • colorName์— ๋”ฐ๋ผ colorNum ๊ฒฐ์ •ํ•ด์„œ jsonํŒŒ์ผ๋กœ ๋ณด๋ƒ„
      • var: lignt, val: colorNum
  • buzzerCtrl
    • json ํŒŒ์ผ ๋ณด๋‚ด์„œ ๋ถ€์ € ์šธ๋ฆผ

serialTest.py

  • ์นด๋ฉ”๋ผ ์—ฐ๊ฒฐ ํ…Œ์ŠคํŠธ ์ง„ํ–‰
  • boot/config.txt์˜ ๊ฐ’์„ test๋ฅผ ์œ„ํ•ด ์„ค์ •ํ•จ

setup.py

  • ๋ผ์ฆˆ๋ฒ ๋ฆฌ ํŒŒ์ด์— ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜ํ•˜๋Š” ์šฉ๋„
  • ์„ผ์„œ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค๋ฉด, ์„ผ์„œ๋ฅผ ๋™์ž‘ ์‹œํ‚ค๋Š” ํ•„์ˆ˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜ ๋ช…๋ น์–ด ๊ธฐ์ž…

webServer.py

  • IP, WIFI ์„ธํŒ… ๋ฐ ๋กœ๊ทธ์ธ ํ™•์ธ
  • flask_app์˜ input์— ๋”ฐ๋ผ ์ ์ ˆํ•œ response ๋ณด๋‚ด๊ณ  cmd์— ๋ชจ๋“œ ์ถœ๋ ฅ

dist ํด๋”

  • webapp์„ ์œ„ํ•œ js, css, html ํŒŒ์ผ ๋“ฑ ํฌํ•จ๋˜์–ด ์žˆ์Œ

Arduino

InitConfig.h

ํ—ค๋”

#include <Wire.h>
#include <ICM20948_WE.h>
#include <INA219_WE.h>
#include <Adafruit_SSD1306.h>
#include <Adafruit_NeoPixel.h>

์„ค๋ช…

  • ์„ผ์„œ& ๋ชจ๋“ˆ ์ดˆ๊ธฐ ์„ค์ •, ํ—ค๋” include, ๋‹ค๋ฃจ๋Š” ํ•จ์ˆ˜ ํฌํ•จ
  • OLED thread ์œ„ํ•œ ์•„๋‘์ด๋…ธ ์ฝ”์–ด ์„ค์ •
  • GPIO ์„ค์ •
  • ์„œ๋ณด ๋ชจํ„ฐ ์ค‘๊ฐ„ ๊ฐ’ ์„ค์ •
  • wire debug ๋ชจ๋“œ ํ•ด์ œ
    • G12 3V3์„ ์—ฐ๊ฒฐํ•˜๋ฉด ๋กœ๋ด‡์ด ๋””๋ฒ„๊ทธ ๋ชจ๋“œ๊ฐ€ ๋จ
  • 9์ถ• ์„ผ์„œ(ICM20948)
    • ํ—ค๋” ํฌํ•จ
    • InitICM20948(): ์ดˆ๊ธฐ ์„ธํŒ…
    • accXYZUpdate(): ์„ผ์„œ ๊ฐ’ ์ฝ์–ด์„œ ACC_X, ACC_Y, ACC_Z์— ์ €์žฅํ•˜๋Š” ํ•จ์ˆ˜
  • ์ „๋ฅ˜ ์„ผ์„œ(INA219) - ์ „์•• ํ‘œ์‹œ ํ•˜๊ธฐ ์œ„ํ•œ ํ•จ์ˆ˜
    • ํ—ค๋” ํฌํ•จ
    • InitINA219(): ์ดˆ๊ธฐ ์„ธํŒ…
    • InaDataUpdate(): ์„ผ์„œ ๊ฐ’ ์ฝ์–ด์„œ ๊ฐฑ์‹ 
  • oled(SSD1306)
    • ํ—ค๋” ํฌํ•จ
    • InitScreen(): ์Šคํฌ๋ฆฐ ์ดˆ๊ธฐํ™”, ์ƒ‰ ์ง€์ •, ํ…์ŠคํŠธ ํฌ๊ธฐ ์ง€์ • ๋“ฑ
    • xyzScreenUpdate(): V, A, P ๊ฐ’ display์— ํ‘œํ˜„
    • allDataUpdate(): ์™€์ดํŒŒ์ด, ์ „๋ฅ˜ ๊ฐ’ ์ฝ์–ด์™€์„œ display์— ํ‘œํ˜„
  • InitBuzzer(): ๋ถ€์ € ์ดˆ๊ธฐํ™”
  • 3์ƒ‰ LED(WS2812)
    • ํ—ค๋” ํฌํ•จ
    • InitRGB(): RGB ๋ฐ๊ธฐ ์กฐ์ ˆ, ์‹œ์ž‘
    • colorWipe(): ํ‘œํ˜„ ๊ฐ€๋Šฅ ์ปฌ๋Ÿฌ ์ฐจ๋ก€๋Œ€๋กœ ๋ณด์—ฌ์ฃผ๊ธฐ
    • SetSingleLED(): ํŠน์ • ์ปฌ๋Ÿฌ ๋ณด์—ฌ์ฃผ๊ธฐ

PreferencesConfig.h

ํ—ค๋”

#include <Preferences.h>

ํ•จ์ˆ˜

  • middleUpdate()
    • ServoMiddlePWM ๊ฐ’์„ preferences ์—์„œ ์ฝ์–ด์™€์„œ ์„ค์ •
  • servoConigSave(byte activeServo)
    • activeServo ๋ฒˆํ˜ธ์— ๋งž์ถฐ preference์— ํ˜„์žฌ PWM ๊ฐ’ put
  • preferencesSetup()
    • preferences์˜ ServoConfig๋Š” false ๋กœ ์‹œ์ž‘
    • middleUpdate() ์‹คํ–‰
    • delay 500

ServoCtrl.h

ํ—ค๋”

#include <Adafruit_PWMServoDriver.h>
#include <math.h>

ํ•จ์ˆ˜

  • Define
    • SERVOMIN : 263
      • ๊ธธ์ด๋ฅผ ์…€ ๋•Œ ์ตœ์†Œ pulse ๊ฐ’
      • out of 4096???
    • SERVOMAX : 463
      • ๊ธธ์ด๋ฅผ ์…€ ๋•Œ ์ตœ๋Œ€ pulse๊ฐ’
      • out of 4096??
    • SERVO_FREQ : 50
      • ๋ชจํ„ฐ์˜ ์ฃผํŒŒ์ˆ˜
      • 50 Hz ๋ฐ‘์—์„œ ๋Œ์•„๊ฐ
    • SERVO_RANGE : 90
    • M_PI : 3.1415926
      • Pi ๊ฐ’
    • LEG_A_FORE
    • LEG_A_BACK
    • LEG_A_WAVE
  • ๋ณ€์ˆ˜ ์ •์˜
    • double
      • Linkage_W
        • ํ”๋“œ๋Š” ์„œ๋ณด๋ชจํ„ฐ์™€ ๋‹ค๋ฆฌ ๋งํฌ์˜ ํ‰๋ฉด ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ
      • LInkage_S
        • ๋‘๊ฐœ์˜ ์„œ๋ณด๋ชจํ„ฐ ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ
      • Linkage_A
        • ์„œ๋ณด๋ชจํ„ฐ์™€ ์—ฐ๊ฒฐ๋˜๋Š” ๋งํฌ
      • Linkage_B
        • ๋ฐฉํ–ฅ์„ ์ œํ•œํ•˜๋Š” ๋งํฌ
      • Linkage_C
        • ๋‹ค๋ฆฌ์˜ ์œ„์ชฝ ํŒŒํŠธ
      • Linkage_D
        • ๋‹ค๋ฆฌ์˜ ์•„๋ž˜์ชฝ ํŒŒํŠธ
      • Linkage_E
        • ๋ฐœ
      • WALK_HEIGHT_MAX
      • WALK_HEIGHT_MIN
      • WALK_HEIGHT
      • WALK_LIFT
      • WALK_RANGE
      • WALK_ACC
      • WALK_EXTENDED_X
      • WALK_EXTENDED_Z
      • WALK_SIDE_MAX
      • WALK_MASS_ADJUST
      • STAND_HEIGHT
  • ํ•จ์ˆ˜(๋ชจ๋‘ void์ด๊ณ , *๋‹ฌ๋ ค์žˆ๋Š” ํ•จ์ˆ˜๋Š” extern void)
    • ServoSetup()
      • IICํ†ต์‹  ์‹œ์ž‘
      • pwm ์‹œ์ž‘
      • pwm์˜ ์ฃผํŒŒ์ˆ˜๋ฅผ SERVO_FREQ๋กœ ์„ค์ •
    • *InitPosAll()
      • 16๋ฒˆ์˜ for๋ฌธ
      • pwm์„ MiddlePosition์œผ๋กœ ์„ธํŒ…
      • CurrentPWM[i] = MiddlePosition
      • ์ด๋ฅผ Serial์— ์ถœ๋ ฅ(์–ด๋–ค ๊ฐ’์ธ์ง€ ํ™•์ธํ•ด๋ณด์ž)
    • *middlePosAll()
      • 16๋ฒˆ์˜ for๋ฌธ
      • pwm์„ ServoMiddlePWM[i]๋กœ ์„ธํŒ…
      • CurrentPWM[i] = ServoMiddlePWM[i]
      • ์ด๋ฅผ Serial์— ์ถœ๋ ฅ
    • *servoDebug(byte, servoID, int offset)
      • servoID์— ๋งž๋Š” ํ˜„์žฌ์˜ PWM์— offset ์กฐ์ •
    • GoalPosAll
      • GoalPWM์œผ๋กœ pwm์„ ์„ธํŒ…
    • goalPWMSet(uint8_t servoNum, double angleInput)
      • int pwmGet = round((SERVOMAX - SERVOMIN) * angleInput / SERVO_RANGE)
      • pwmGet = pwmGet * ServoDirection[servoNum] + ServoMiddlePWM[servoNum]
    • simpleLinkageIK(double LA, LB, aln, bln, uint8_t outputAlpha uint8_t outputBeta, uint8_t outputDelta)
    • wigglePlaneIK(double LA, double aln, double bln, uint8_t outputAlpha, uint8_t outputLen)

WAVEGO.ino

ํ—ค๋”

#include "InitConfig.h"
#include "ServoCtrl.h"
#include "PreferencesConfig.h"
#include <ArduinoJson.h>

๋ณ€์ˆ˜

  • moveFB : -1/0/1 ๊ฐ’์— ๋”ฐ๋ผ ํ›„์ง„/์ •์ง€/์ „์ง„
  • moveLR : -1/0/1 ๊ฐ’์— ๋”ฐ๋ผ ์ขŒํšŒ์ „/์ง์ง„/์šฐํšŒ์ „

ํ•จ์ˆ˜

  • serialCrtl()
    • Serial ํ†ต์‹ ์ด JSON ํ˜•ํƒœ๋กœ ์ž˜ ๋ณด๋‚ด์™”๋‹ค๋ฉด
      • ๋ฐ›์•„์˜ค๋Š” var๊ณผ val ๊ฐ’์— ๋”ฐ๋ผ ๋™์ž‘
        • var == funcMode

          • funcMode ๋ณ€์ˆ˜ ๊ฐ’์„ 0/1 ํ˜น์€ val ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝ
        • var == move

          • ๋ถ€์ € ์šธ๋ฆฌ๊ณ  val๊ฐ’์— ๋”ฐ๋ผ moveFB ๋ณ€์ˆ˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๊ณ  ์‹œ๋ฆฌ์–ผ ๋ฌธ์ž ์ฐ์Œ
            • ์ „์ง„(val 1) : moveFB = 1
            • ์ขŒํšŒ์ „(val 2) : moveLR = -1
            • ์ •์ง€(val 3) : moveFB = 0
            • ์šฐํšŒ์ „(val 4) : moveLR = 1
            • ํ›„์ง„(val 5) : moveFB = -1
            • ์ง์ง„(val 6) : moveLR = 0
        • var == ges

          • val ๊ฐ’์— ๋”ฐ๋ผ gestureSpeed(= 2) ๋งŒํผ ์ฆ๊ฐ
          • gestureOffSetMax(= 15) ๊ฐ€ ์ตœ๋Œ€ ์†๋„๋กœ ์†๋„๋Š” -15 ~ 15๋กœ ์ œํ•œ
          • pitchYawRollHeightCtrl(gestureUD, gestureLR, 0, 0) ๋‹ค์Œ ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ์†๋„ ๋ฐ˜์˜
        • var == light

          val ๊ฐ’์— ๋”ฐ๋ผ led0๊ณผ led1์˜ ์ƒ‰์ƒ์„ ๋ฐ”๊พผ๋‹ค.

        • var == buzzer

          • val ๊ฐ’์— ๋”ฐ๋ฅธ ๋ถ€์ € ON/OFF
  • jsonSend()
  • robotThreadings() : ์‚ด์ง delay๋ฅผ ๊ฑธ๊ณ  serialCrtl while๋ฌธ์œผ๋กœ ์‹คํ–‰
  • threadingsInit() : robotThreadings๋ฅผ Thread ๊ฑธ์–ด์„œ ๋‹ค์ค‘ ์‹คํ–‰
  • setup() : ๋‹ค์–‘ํ•œ setup ํ•จ์ˆ˜๋“ค ์‹คํ–‰
  • loop()
    • robotCtrl() / allDataUpdate() / wireDebugDetect() ์„ ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰

WebPage.h

  • html ํŒŒ์ผ
    • arduino์—์„œ ๋„์šฐ๋Š” html ํŒŒ์ผ(192.168.4.1์— ๋œจ๋Š” ๊ฑฐ)

app_httpd.cpp

#include <arduino.h>
#include "WebPage.h"

#include "esp_wifi.h"
#include <WiFi.h>
#include "soc/soc.h"
#include "soc/rtc_cntl_reg.h"

#include "dl_lib_matrix3d.h"
#include <esp32-hal-ledc.h>
#include "esp_http_server.h"
#include "esp_timer.h"
#include "esp_camera.h"
#include "img_converters.h"
  • ์™€์ดํŒŒ์ด ์—ฐ๊ฒฐ ๊ด€๋ จ ํ•จ์ˆ˜
    • ๊ด€๋ จ esp ํ—ค๋” ํฌํ•จ
  • gpio ํ•€ ๋ฒˆํ˜ธ ์„ค์ •
  • getMac(): mac ์ฃผ์†Œ ๋ฐ›์•„์˜ค๊ธฐ
  • getIP(): IP ์ฃผ์†Œ ๋ฐ›์•„์˜ค๊ธฐ
  • setAP(): ์™€์ดํŒŒ์ด ssid, ๋น„๋ฒˆ ์ด์šฉ ์—ฐ๊ฒฐ, ๋‚ด ip ๋ฐ›์•„์˜ค๊ธฐ
  • setSTA(): ์™€์ดํŒŒ์ด ์‹œ์ž‘
  • getWifiStatus()
    • ์™€์ดํŒŒ์ด ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์œผ๋ฉด wifi ๋ชจ๋“œ 2, ip ๋ฐ›์•„์˜ค๊ธฐ
    • ์—ฐ๊ฒฐ ์•ˆ ๋˜์–ด ์žˆ์œผ๋ฉด wifi ๋ชจ๋“œ 3, ๋‹ค์‹œ ์—ฐ๊ฒฐ
  • wifiInit(): ์™€์ดํŒŒ์ด mode1์ด๋ฉด setAP(), mode2๋ฉด setSTA
  • stream_handler
    • ์ด์ „ frame์ด ์žˆ์œผ๋ฉด esp์˜ ํƒ€์ด๋จธ์—์„œ ํƒ€์ž„์„ ๋ฆฌํ„ด ๋ฐ›์•„ last_frame์œผ๋กœ ์ง€์ •
    • ์นด๋ฉ”๋ผ ์—ฐ๊ฒฐ์ด ๋˜์—ˆ๋‹ค๋ฉด
      • frame์„ jpg๋กœ ๋ณ€ํ™˜
    • esp๊ฐ€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์œผ๋ฉด
      • http๋กœ jpg๋กœ ๋ณ€ํ™˜ํ•œ ๊ฑฐ ๋ณด๋ƒ„
    • ๊ฑธ๋ฆฐ ์‹œ๊ฐ„ ๊ตฌํ•˜๊ธฐ
    • delay 10
    • res(httpd_resp_send_chunk์˜ return ๊ฐ’, esp_err_t ํƒ€์ž…)๋ฅผ ๋ฆฌํ„ด
  • cmd_handler
    • ESP_OK๋กœ ํ†ต์‹ ์ด ์ž˜ ๋˜๊ณ  ์žˆ๋‹ค๋ฉด
      • var, val, cmd๋ฅผ parsingํ•จ
      • var, val์— ๋”ฐ๋ผ์„œ moveFB, moveLR ์ฒ˜๋ฆฌ
        • moveFB: 1 forward 0 FBstop -1 backward
        • moveLR: 1 right 0 LRstop -1 left
      • funcMode๋Š” ํ‰์†Œ์—๋Š” 0 funcMode์ผ ๋•Œ๋งŒ 1๋กœ ์„ค์ •
  • startCameraServer
  • webServerInit
    • brown_out ๋ฐฉ์ง€
    • camera config์— GPIO, freq, pixel format ์ง€
    • ์นด๋ฉ”๋ผ ์ดˆ๊ธฐํ™”
    • wifi ์ดˆ๊ธฐํ™”
    • ์นด๋ฉ”๋ผ ์„œ๋ฒ„ ์‹œ์ž‘

last modified on 18 Aug, 2022

โš ๏ธ **GitHub.com Fallback** โš ๏ธ