--------------------------------------------------------------------------------

>HairyDiode                                             

--------------------------------------------------------------------------------
Control Systems Club Web Controlled Servo Instructions                 1-24-2019
--------------------------------------------------------------------------------

Ok everyone, we'r going to start a web controlled servo project.

What we want, is a webpage where you click "move servo" and a servo moves.

It will work like this, with 4 components we have to write:

The Front End
The Backend
The Servo Controller
The Arduino Firmware

+---Digital Ocean VPS--+                    +--Control Computer--+
|HTML/CSS/JS Front End |   HTTPS POST       |C Servo Controller  |
|Golang Backend        |====================|                    |
+----------------------+                    +--------------------+
         ||                                          ||
         ||H                                         ||U
         ||T                                         ||S
         ||T                                         ||B
         ||P                                         ||
         ||S                                         ||S
         ||                                          ||e
 +-Client Computer-+                                 ||r
 |  Some sort of   |                                 ||i
 |  Browser        |                                 ||a
 |                 |                                 ||l
 |                 |                                 ||
 |                 |                        +----------------------+
 +-----------------+                        |C/C++ Arduino Firmware|
                                            |                      |
                                            +----------------------+
                                                     ||
                                                     ||S
                                                     ||e
                                                     ||r
                                                     ||v
                                                     ||o
                                                     ||
                                                     ||W
                                                     ||i
                                                     ||r
                                                     ||e
                                                     ||
                                                 +-Servo-+           
                                                 |       |    
                                                 +-------+     

The Frontend will consist of html templates, as well as supporting css and js
files, that will implement a simple UI that allows the user to click on a button
that sends a POST request to the backend to move the servo.
W3 Forms Tutorial
Inline CSS Tutorial
CSS Display Property Tutorial

The Backend will be a Golang executable that will be listening for HTTPS
connections, and serves the frontend, as well as listen for POST requests from
both the Frontend and the Control Computer. A POST request from the frontend
updates the desired state of the servo, and a POST request from the Control
Computer will update the actual state. Both the Actual state and the desired
state should also be served as well.
Go net/http and html/template Libraries Tutorial

The Servo Controller will poll the Backend for the desired state, communicate
this to the Arduinoi via the RS-232 Library, and return this desired state via
POST to the backend so as to update the actual state.
RS-232 Library
RS-232 Example
cURL API
cURL Code Examples

The Arduino Firmware will commands over the USB Serial Wire, and output that to
the servo.
Arduino Serial Tutorial
Arduino Servo Tutorial