Skip to content

Commit

Permalink
add board WiFi Slot
Browse files Browse the repository at this point in the history
  • Loading branch information
acosinwork committed May 25, 2018
1 parent 144152c commit a458df8
Show file tree
Hide file tree
Showing 5 changed files with 363 additions and 0 deletions.
180 changes: 180 additions & 0 deletions boards.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4245,3 +4245,183 @@ wifiduino.menu.UploadSpeed.460800.upload.speed=460800
wifiduino.menu.UploadSpeed.512000.windows=512000
wifiduino.menu.UploadSpeed.512000.upload.speed=512000

##############################################################
wifi_slot.name=WiFi Slot

wifi_slot.upload.tool=esptool
wifi_slot.upload.speed=115200
wifi_slot.upload.resetmethod=nodemcu
wifi_slot.upload.maximum_size=434160
wifi_slot.upload.maximum_data_size=81920
wifi_slot.upload.wait_for_upload_port=true
wifi_slot.serial.disableDTR=true
wifi_slot.serial.disableRTS=true

wifi_slot.build.mcu=esp8266
wifi_slot.build.f_cpu=80000000L
wifi_slot.build.board=ESP8266_ESP12
wifi_slot.build.core=esp8266
wifi_slot.build.variant=wifi_slot
wifi_slot.build.flash_mode=dout
wifi_slot.build.spiffs_pagesize=256
wifi_slot.build.debug_port=
wifi_slot.build.debug_level=

wifi_slot.menu.CpuFrequency.80=80 MHz
wifi_slot.menu.CpuFrequency.80.build.f_cpu=80000000L
wifi_slot.menu.CpuFrequency.160=160 MHz
wifi_slot.menu.CpuFrequency.160.build.f_cpu=160000000L

wifi_slot.menu.FlashFreq.40=40MHz
wifi_slot.menu.FlashFreq.40.build.flash_freq=40
wifi_slot.menu.FlashFreq.80=80MHz
wifi_slot.menu.FlashFreq.80.build.flash_freq=80

wifi_slot.menu.FlashMode.dout=DOUT
wifi_slot.menu.FlashMode.dout.build.flash_mode=dout
wifi_slot.menu.FlashMode.dio=DIO
wifi_slot.menu.FlashMode.dio.build.flash_mode=dio
wifi_slot.menu.FlashMode.qio=QIO
wifi_slot.menu.FlashMode.qio.build.flash_mode=qio
wifi_slot.menu.FlashMode.qout=QOUT
wifi_slot.menu.FlashMode.qout.build.flash_mode=qout

wifi_slot.menu.UploadSpeed.115200=115200
wifi_slot.menu.UploadSpeed.115200.upload.speed=115200
wifi_slot.menu.UploadSpeed.9600=9600
wifi_slot.menu.UploadSpeed.9600.upload.speed=9600
wifi_slot.menu.UploadSpeed.57600=57600
wifi_slot.menu.UploadSpeed.57600.upload.speed=57600
wifi_slot.menu.UploadSpeed.256000.windows=256000
wifi_slot.menu.UploadSpeed.256000.upload.speed=256000
wifi_slot.menu.UploadSpeed.230400.linux=230400
wifi_slot.menu.UploadSpeed.230400.macosx=230400
wifi_slot.menu.UploadSpeed.230400.upload.speed=230400
wifi_slot.menu.UploadSpeed.460800.linux=460800
wifi_slot.menu.UploadSpeed.460800.macosx=460800
wifi_slot.menu.UploadSpeed.460800.upload.speed=460800
wifi_slot.menu.UploadSpeed.512000.windows=512000
wifi_slot.menu.UploadSpeed.512000.upload.speed=512000
wifi_slot.menu.UploadSpeed.921600=921600
wifi_slot.menu.UploadSpeed.921600.upload.speed=921600

wifi_slot.menu.FlashSize.1M64=1M (64K SPIFFS)
wifi_slot.menu.FlashSize.1M64.build.flash_size=1M
wifi_slot.menu.FlashSize.1M64.build.flash_ld=eagle.flash.1m64.ld
wifi_slot.menu.FlashSize.1M64.build.spiffs_start=0xEB000
wifi_slot.menu.FlashSize.1M64.build.spiffs_end=0xFB000
wifi_slot.menu.FlashSize.1M64.build.spiffs_blocksize=4096
wifi_slot.menu.FlashSize.1M64.upload.maximum_size=958448

wifi_slot.menu.FlashSize.1M128=1M (128K SPIFFS)
wifi_slot.menu.FlashSize.1M128.build.flash_size=1M
wifi_slot.menu.FlashSize.1M128.build.flash_ld=eagle.flash.1m128.ld
wifi_slot.menu.FlashSize.1M128.build.spiffs_start=0xDB000
wifi_slot.menu.FlashSize.1M128.build.spiffs_end=0xFB000
wifi_slot.menu.FlashSize.1M128.build.spiffs_blocksize=4096
wifi_slot.menu.FlashSize.1M128.upload.maximum_size=892912

wifi_slot.menu.FlashSize.1M144=1M (144K SPIFFS)
wifi_slot.menu.FlashSize.1M144.build.flash_size=1M
wifi_slot.menu.FlashSize.1M144.build.flash_ld=eagle.flash.1m144.ld
wifi_slot.menu.FlashSize.1M144.build.spiffs_start=0xD7000
wifi_slot.menu.FlashSize.1M144.build.spiffs_end=0xFB000
wifi_slot.menu.FlashSize.1M144.build.spiffs_blocksize=4096
wifi_slot.menu.FlashSize.1M144.upload.maximum_size=876528

wifi_slot.menu.FlashSize.1M160=1M (160K SPIFFS)
wifi_slot.menu.FlashSize.1M160.build.flash_size=1M
wifi_slot.menu.FlashSize.1M160.build.flash_ld=eagle.flash.1m160.ld
wifi_slot.menu.FlashSize.1M160.build.spiffs_start=0xD3000
wifi_slot.menu.FlashSize.1M160.build.spiffs_end=0xFB000
wifi_slot.menu.FlashSize.1M160.build.spiffs_blocksize=4096
wifi_slot.menu.FlashSize.1M160.upload.maximum_size=860144

wifi_slot.menu.FlashSize.1M192=1M (192K SPIFFS)
wifi_slot.menu.FlashSize.1M192.build.flash_size=1M
wifi_slot.menu.FlashSize.1M192.build.flash_ld=eagle.flash.1m192.ld
wifi_slot.menu.FlashSize.1M192.build.spiffs_start=0xCB000
wifi_slot.menu.FlashSize.1M192.build.spiffs_end=0xFB000
wifi_slot.menu.FlashSize.1M192.build.spiffs_blocksize=4096
wifi_slot.menu.FlashSize.1M192.upload.maximum_size=827376

wifi_slot.menu.FlashSize.1M256=1M (256K SPIFFS)
wifi_slot.menu.FlashSize.1M256.build.flash_size=1M
wifi_slot.menu.FlashSize.1M256.build.flash_ld=eagle.flash.1m256.ld
wifi_slot.menu.FlashSize.1M256.build.spiffs_start=0xBB000
wifi_slot.menu.FlashSize.1M256.build.spiffs_end=0xFB000
wifi_slot.menu.FlashSize.1M256.build.spiffs_blocksize=4096
wifi_slot.menu.FlashSize.1M256.upload.maximum_size=761840

wifi_slot.menu.FlashSize.1M512=1M (512K SPIFFS)
wifi_slot.menu.FlashSize.1M512.build.flash_size=1M
wifi_slot.menu.FlashSize.1M512.build.flash_ld=eagle.flash.1m512.ld
wifi_slot.menu.FlashSize.1M512.build.spiffs_start=0x7B000
wifi_slot.menu.FlashSize.1M512.build.spiffs_end=0xFB000
wifi_slot.menu.FlashSize.1M512.build.spiffs_blocksize=8192
wifi_slot.menu.FlashSize.1M512.upload.maximum_size=499696

wifi_slot.menu.FlashSize.2M=2M (1M SPIFFS)
wifi_slot.menu.FlashSize.2M.build.flash_size=2M
wifi_slot.menu.FlashSize.2M.build.flash_ld=eagle.flash.2m.ld
wifi_slot.menu.FlashSize.2M.build.spiffs_start=0x100000
wifi_slot.menu.FlashSize.2M.build.spiffs_end=0x1FB000
wifi_slot.menu.FlashSize.2M.build.spiffs_blocksize=8192
wifi_slot.menu.FlashSize.2M.upload.maximum_size=1044464

wifi_slot.menu.FlashSize.4M1M=4M (1M SPIFFS)
wifi_slot.menu.FlashSize.4M1M.build.flash_size=4M
wifi_slot.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld
wifi_slot.menu.FlashSize.4M1M.build.spiffs_start=0x300000
wifi_slot.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000
wifi_slot.menu.FlashSize.4M1M.build.spiffs_blocksize=8192
wifi_slot.menu.FlashSize.4M1M.build.spiffs_pagesize=256
wifi_slot.menu.FlashSize.4M1M.upload.maximum_size=1044464

wifi_slot.menu.FlashSize.4M3M=4M (3M SPIFFS)
wifi_slot.menu.FlashSize.4M3M.build.flash_size=4M
wifi_slot.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld
wifi_slot.menu.FlashSize.4M3M.build.spiffs_start=0x100000
wifi_slot.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000
wifi_slot.menu.FlashSize.4M3M.build.spiffs_blocksize=8192
wifi_slot.menu.FlashSize.4M3M.upload.maximum_size=1044464

wifi_slot.menu.Debug.Disabled=Disabled
wifi_slot.menu.Debug.Disabled.build.debug_port=
wifi_slot.menu.Debug.Serial=Serial
wifi_slot.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial
wifi_slot.menu.Debug.Serial1=Serial1
wifi_slot.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1

wifi_slot.menu.DebugLevel.None____=None
wifi_slot.menu.DebugLevel.None____.build.debug_level=
wifi_slot.menu.DebugLevel.Core____=Core
wifi_slot.menu.DebugLevel.Core____.build.debug_level=-DDEBUG_ESP_CORE
wifi_slot.menu.DebugLevel.SSL_____=Core + SSL
wifi_slot.menu.DebugLevel.SSL_____.build.debug_level=-DDEBUG_ESP_CORE -DDEBUG_ESP_SSL
wifi_slot.menu.DebugLevel.SSL_MEM_=Core + SSL + TLS Mem
wifi_slot.menu.DebugLevel.SSL_MEM_.build.debug_level=-DDEBUG_ESP_CORE -DDEBUG_ESP_SSL -DDEBUG_TLS_MEM
wifi_slot.menu.DebugLevel.WiFic___=Core + WiFi
wifi_slot.menu.DebugLevel.WiFic___.build.debug_level=-DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI
wifi_slot.menu.DebugLevel.WiFi____=WiFi
wifi_slot.menu.DebugLevel.WiFi____.build.debug_level=-DDEBUG_ESP_WIFI
wifi_slot.menu.DebugLevel.HTTPClient=HTTPClient
wifi_slot.menu.DebugLevel.HTTPClient.build.debug_level=-DDEBUG_ESP_HTTP_CLIENT
wifi_slot.menu.DebugLevel.HTTPClient2=HTTPClient + SSL
wifi_slot.menu.DebugLevel.HTTPClient2.build.debug_level=-DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_SSL
wifi_slot.menu.DebugLevel.HTTPUpdate=HTTPUpdate
wifi_slot.menu.DebugLevel.HTTPUpdate.build.debug_level=-DDEBUG_ESP_HTTP_UPDATE
wifi_slot.menu.DebugLevel.HTTPUpdate2=HTTPClient + HTTPUpdate
wifi_slot.menu.DebugLevel.HTTPUpdate2.build.debug_level=-DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_HTTP_UPDATE
wifi_slot.menu.DebugLevel.HTTPUpdate3=HTTPClient + HTTPUpdate + Updater
wifi_slot.menu.DebugLevel.HTTPUpdate3.build.debug_level=-DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER
wifi_slot.menu.DebugLevel.HTTPServer=HTTPServer
wifi_slot.menu.DebugLevel.HTTPServer.build.debug_level=-DDEBUG_ESP_HTTP_SERVER
wifi_slot.menu.DebugLevel.UPDATER=Updater
wifi_slot.menu.DebugLevel.UPDATER.build.debug_level=-DDEBUG_ESP_UPDATER
wifi_slot.menu.DebugLevel.OTA_____=OTA
wifi_slot.menu.DebugLevel.OTA_____.build.debug_level=-DDEBUG_ESP_OTA
wifi_slot.menu.DebugLevel.OTA2____=OTA + Updater
wifi_slot.menu.DebugLevel.OTA2____.build.debug_level=-DDEBUG_ESP_OTA -DDEBUG_ESP_UPDATER
wifi_slot.menu.DebugLevel.all_____=All
wifi_slot.menu.DebugLevel.all_____.build.debug_level=-DDEBUG_ESP_CORE -DDEBUG_ESP_SSL -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_TLS_MEM
4 changes: 4 additions & 0 deletions doc/boards.rst
Original file line number Diff line number Diff line change
Expand Up @@ -389,3 +389,7 @@ WiFiduino

Product page: https://wifiduino.com/esp8266

WiFi Slot
---------

Product page: http://wiki.amperka.ru/wifi-slot
3 changes: 3 additions & 0 deletions package/package_esp8266com_index.template.json
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,9 @@
},
{
"name": "WiFiduino"
},
{
"name": "WiFi Slot"
}
],
"toolsDependencies": [
Expand Down
51 changes: 51 additions & 0 deletions variants/wifi_slot/analogRead.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
#include "wiring_private.h"
#include "pins_arduino.h"

extern "C" int __analogRead(uint8_t pin);

extern "C" int analogRead(uint8_t pin) {

static uint8_t currentAin = 0;

delay(0);
if (pin >= ANALOG_INPUT_HARDWARE) {
return 0;
}
uint8_t ain = analog_pin_to_mux_channel[pin];
if (ain == (uint8_t)NOT_A_PIN) {
return 0;
}
if (currentAin > ain) {
for (int i = 0; i < (8 - currentAin); ++i)
{
digitalWrite(ANALOG_INPUT_SELECTOR_PIN, HIGH);
digitalWrite(ANALOG_INPUT_SELECTOR_PIN, LOW);
digitalWrite(ANALOG_INPUT_SELECTOR_PIN, HIGH);
digitalWrite(ANALOG_INPUT_SELECTOR_PIN, LOW);
}
currentAin = 0;
}
for (int i = currentAin; i < ain; ++i)
{
digitalWrite(ANALOG_INPUT_SELECTOR_PIN, HIGH);
digitalWrite(ANALOG_INPUT_SELECTOR_PIN, LOW);
digitalWrite(ANALOG_INPUT_SELECTOR_PIN, HIGH);
digitalWrite(ANALOG_INPUT_SELECTOR_PIN, LOW);
}
currentAin = ain;
return __analogRead(ANALOG_INPUT_HARDWARE);

}

void initVariant() {
// we need to reset analog mux. When ANALOG_INPUT_SELECTOR_PIN is high
// on ~0.4 ms, mux channel is becoming 0.
// Mux channel is swithing on back \_ front. But there is no switching
// - rc reset is still high when ANALOG_INPUT_SELECTOR_PIN became low
uint16_t resetDelay = 777;
pinMode(ANALOG_INPUT_SELECTOR_PIN, OUTPUT);
digitalWrite(ANALOG_INPUT_SELECTOR_PIN, HIGH);
delayMicroseconds(resetDelay);
digitalWrite(ANALOG_INPUT_SELECTOR_PIN, LOW);
delayMicroseconds(resetDelay);
}
125 changes: 125 additions & 0 deletions variants/wifi_slot/pins_arduino.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
/*
pins_arduino.h - Pin definition functions for Arduino
Part of Arduino - http://www.arduino.cc/
Copyright (c) 2007 David A. Mellis
Modified for ESP8266 WIFIO board by Ivan Grokhotkov, 2015.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General
Public License along with this library; if not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA
Changed : 24.11.2017 Vasily Basalaev
Definition for WiFi Slot
Amperka LLC
http://amperka.ru
$Id: wiring.h 249 2007-02-03 16:52:51Z mellis $
*/

#ifndef Pins_Arduino_h
#define Pins_Arduino_h

#define EXTERNAL_NUM_INTERRUPTS 16
#define NUM_DIGITAL_PINS 17
#define NUM_ANALOG_INPUTS 1

// TODO: this should be <= 9 if flash is in DIO mode
#define isFlashInterfacePin(p) ((p) >= 6 && (p) <= 11)

#define analogInputToDigitalPin(p) ((p > 0) ? NOT_A_PIN : 0)
#define digitalPinToInterrupt(p) (((p) < EXTERNAL_NUM_INTERRUPTS)? (p) : NOT_AN_INTERRUPT)
#define digitalPinHasPWM(p) (((p) < NUM_DIGITAL_PINS && !isFlashInterfacePin(p))? 1 : 0)

#define PIN_SPI_SS (15)
#define PIN_SPI_MOSI (13)
#define PIN_SPI_MISO (12)
#define PIN_SPI_SCK (14)

static const uint8_t SS = PIN_SPI_SS;
static const uint8_t MOSI = PIN_SPI_MOSI;
static const uint8_t MISO = PIN_SPI_MISO;
static const uint8_t SCK = PIN_SPI_SCK;

#define PIN_WIRE_SDA (2)
#define PIN_WIRE_SCL (0)

static const uint8_t SDA = PIN_WIRE_SDA;
static const uint8_t SCL = PIN_WIRE_SCL;

#define PIN_A0 (3)
#define PIN_A1 (1)
#define PIN_A2 (16)
#define PIN_A3 (13)
#define PIN_A4 (5)
#define PIN_A5 (14)
#define PIN_A6 (4)
#define PIN_A7 (12)

static const uint8_t A0 = PIN_A0;
static const uint8_t A1 = PIN_A1;
static const uint8_t A2 = PIN_A2;
static const uint8_t A3 = PIN_A3;
static const uint8_t A4 = PIN_A4;
static const uint8_t A5 = PIN_A5;
static const uint8_t A6 = PIN_A6;
static const uint8_t A7 = PIN_A7;

static const uint8_t LED_BUILTIN = 2;
static const uint8_t BUILTIN_LED = 2;

static const uint8_t ANALOG_INPUT_SELECTOR_PIN = 15;
static const uint8_t ANALOG_INPUT_HARDWARE = 17;

static const uint8_t analog_pin_to_mux_channel[] = {
(uint8_t)NOT_A_PIN // 0
, 1 // 1
, (uint8_t)NOT_A_PIN // 2
, 0 // 3
, 6 // 4
, 4 // 5
, (uint8_t)NOT_A_PIN // 6
, (uint8_t)NOT_A_PIN // 7
, (uint8_t)NOT_A_PIN // 8
, (uint8_t)NOT_A_PIN // 9
, (uint8_t)NOT_A_PIN // 10
, (uint8_t)NOT_A_PIN // 11
, 7 // 12
, 3 // 13
, 5 // 14
, (uint8_t)NOT_A_PIN // 15
, 2 // 16
};

// These serial port names are intended to allow libraries and architecture-neutral
// sketches to automatically default to the correct port name for a particular type
// of use. For example, a GPS module would normally connect to SERIAL_PORT_HARDWARE_OPEN,
// the first hardware serial port whose RX/TX pins are not dedicated to another use.
//
// SERIAL_PORT_MONITOR Port which normally prints to the Arduino Serial Monitor
//
// SERIAL_PORT_USBVIRTUAL Port which is USB virtual serial
//
// SERIAL_PORT_LINUXBRIDGE Port which connects to a Linux system via Bridge library
//
// SERIAL_PORT_HARDWARE Hardware serial port, physical RX & TX pins.
//
// SERIAL_PORT_HARDWARE_OPEN Hardware serial ports which are open for use. Their RX & TX
// pins are NOT connected to anything by default.
#define SERIAL_PORT_MONITOR Serial
#define SERIAL_PORT_USBVIRTUAL Serial
#define SERIAL_PORT_HARDWARE Serial
#define SERIAL_PORT_HARDWARE_OPEN Serial

#endif /* Pins_Arduino_h */

0 comments on commit a458df8

Please sign in to comment.