# ESP8266_swiss_army_board Arduino based project running on my custom made board ## The hardware : **The board :** ![](http://88.167.116.148/images/git/SAB_front.png) ![](http://88.167.116.148/images/git/SAB_back.png) **The modules :** ![](http://88.167.116.148/images/git/SAB_cmp_mod.png) ### Hardware pin mapping : ![](http://88.167.116.148/images/git/ESP8266_pinout.png) (This image wasn't done by me) **So we have :** * I2C (for OLED screen and RTC) * GPIO4 --> SDA * GPIO5 --> SCL * SPI (for µSDCard) * GPIO13 --> MOSI * GPIO12 --> MISO * GPIO14 --> CLK * GPIO2 --> µSDCard CHIP_SELECT ## Here is a list of the components needed in order to build such a board : * 1x 1N4001 reverse voltage protection diode * 1x AMS1117 5v voltage regulator * 1x AMS1117 3.3v voltage regulator * 2x 22µf electrolytic capacitors * 2x 0.1µf (code 104) tantalum capacitors * 1x jumper * 1x 2 pins male header * 1x On/Off switch * 2x push buttons * 1x ESP8266 E12 * 1x 19 pins female header * 1x 2 screws terminal * 1x micro USB socket * 1x 100 ohm resistor * 2x 1k ohm resistor * 1x 6.8k ohm resistor * 1x 3.9k ohm resistor * 1x 22k ohm resistor * 2x 10k ohm resistor * 1x 33k ohm resistor * 1x 4.7k ohm resistor * 1x 7cmx5cm pcb ## The software : ### I2C Hardware addresses : * OLED screen : 0x3C * RTC DS3231 : 0x68 ### External librairies used : * Adafruit_SSD1306 (not my work) [link](https://github.com/adafruit/Adafruit_SSD1306) * Adafruit-GFX (not my work) [link](https://github.com/adafruit/Adafruit-GFX-Library) * RTClib-master (not my work) [link](https://github.com/adafruit/RTClib) * AT24CXX-master (not my work) [link](https://github.com/cyberp/AT24Cx) ### SD Card structure (subject to changes) : ``` json / |_CONFIG | AP.CFG | STA.CFG |_FTP |_LOGS |_WWW ``` ### Example of a config file structure (.CFG) : ``` json #This line is a comment and will be ignored #All comments should be at the top of the file #The parameter names are case sensitive /!\ this_is_the_parameter_name : this_is_a_numeric_value 'this is the parameter name' : this_is_a_numeric_value this_is_the_parameter_name : 'this is a string value' 'this is the parameter name' : 'this_is_a_string_value' ``` ### For AP.CFG it would be : ``` json #This config file stores the configuration needed to set the AP #up for the ESP8266SwissArmyBoad #If this file is not present or if there is an error at parsing time #default values will be used instead. #If the password is an empty string aka '', the network will be open SSID : 'ESP8266SwissArmyBoard' PASSWORD : 'APassWord' CHANNEL : 1 SSID_HIDDEN : 'true' AP_MAX_CONNECTION : 4 ``` ### For STA.CFG it would be : ``` json #This config file stores the configuration needed to connect the board #to a wifi hotspot #If this file is not present or if there is an error at parsing time #only the AP functionality will be enabled SSID : 'MyHotspotSSID' PASSWORD : 'MySuperSecuredPassword' ``` ### Things to do : * Screen Manager ✓ * µSDcard File System (In progress) * File Config Parser ✓ * Templated Dictionary Class ✓ * RTC Manager ✓ * RTC FLASH Manager * FTP Service * WEB Service * GPIO Util