From 6e452b3bc8a246d5ea801f4ddebbdaf3ef84535c Mon Sep 17 00:00:00 2001 From: Igor Beloschapkin Date: Mon, 28 Sep 2020 13:42:48 +0200 Subject: [PATCH] Initial commit --- .../tactile_eeg_v1.1-hardwaretest.ino | 216 ++++++++++++++++ tactile_eeg_v1.1/tactile_eeg_v1.1.ino | 176 +++++++++++++ tactile_eeg_v1.2/tactile_eeg_v1.2.ino | 240 ++++++++++++++++++ wifi_scan/wifi_scan/wifi_scan.ino | 48 ++++ 4 files changed, 680 insertions(+) create mode 100644 tactile_eeg_v1.1-hardwaretest/tactile_eeg_v1.1-hardwaretest.ino create mode 100644 tactile_eeg_v1.1/tactile_eeg_v1.1.ino create mode 100644 tactile_eeg_v1.2/tactile_eeg_v1.2.ino create mode 100644 wifi_scan/wifi_scan/wifi_scan.ino diff --git a/tactile_eeg_v1.1-hardwaretest/tactile_eeg_v1.1-hardwaretest.ino b/tactile_eeg_v1.1-hardwaretest/tactile_eeg_v1.1-hardwaretest.ino new file mode 100644 index 0000000..daec4b3 --- /dev/null +++ b/tactile_eeg_v1.1-hardwaretest/tactile_eeg_v1.1-hardwaretest.ino @@ -0,0 +1,216 @@ +// Arduino -> Adafruit ESP32 Feather auswählen + +#include +#include +#include +#include + +/* Martin Wimmer Hardwaretest 17.04.2019 + * Firmware v1.1 04.04.2019 + * Christian Schuster + * cchschuster@gmail.com + */ + +#define SSID "featherNetwork" // network SSID +#define PASSWORD "featherNetwork" // network password + +#define PIN_LED 13 +#define PIN_Z 14 +#define PIN_V 32 +#define PIN_R 15 +#define PIN_L 33 +#define PIN_27 27 +#define PIN_12 12 +#define PIN_13 13 +#define PIN_A5 4 +#define PIN_A1 25 +#define PIN_A0 26 + +#define SCRIPTMODE 1 // 0 = local filtering, 1 = laptop script filtering + +char packetBuffer[255]; // buffer to hold incoming packet +unsigned int localPort = 8888; + +char sig_nr; +int i_sig_nr; + +WiFiUDP udp; + +void setup() +{ + setInitGPIO(); + + // Initialize serial + Serial.begin(115200); + Serial.println(); + Serial.print("Setting up AP at SSID: "); + Serial.print(SSID); + + bool result = WiFi.softAP(SSID, PASSWORD); + + //result = false; // for error testing + if(result) + { + Serial.println(); + Serial.println("...AP successfully built."); + Serial.print("...Feather IP: "); + Serial.println(WiFi.softAPIP()); + Serial.print("...Feather MAC: "); + Serial.println(WiFi.softAPmacAddress()); + Serial.print("...Local port: "); + Serial.println(localPort); + successWiFi(); + Serial.println("Listening to port..."); + } else { + Serial.println("...Failed while setting up access point"); + errorWiFi(); + } + + udp.begin(localPort); +} + +void loop() +{ + /* + int packetSize = udp.parsePacket(); + if(packetSize) + { + int len = udp.read(packetBuffer, 255); + if(len) + { + packetBuffer[len] = 0; + } + + if(SCRIPTMODE) // == 1 + { + // laptop script filtering + sig_nr = packetBuffer[0]; + Serial.println(sig_nr); + vibrate(sig_nr); + } else { + // local filtering + if(strstr(packetBuffer,"usCode ")) + { + sig_nr = packetBuffer[13]; + Serial.println(sig_nr); + vibrate(sig_nr); + } + } + } +*/ + + // Test alle Kanäle + allHigh(); + delay(1000); + allLow(); + delay(1000); + +/* + // Test Kanal L,R,V,Z + for(char i='1' ; i<='4' ; i++) + { + vibrate(i); + delay(1000); + vibrate('0'); + delay(1000); + } +*/ + +} + +void setInitGPIO() +{ + // Set all as OUTPUT + pinMode(PIN_LED, OUTPUT); + pinMode(PIN_Z, OUTPUT); + pinMode(PIN_V, OUTPUT); + pinMode(PIN_R, OUTPUT); + pinMode(PIN_L, OUTPUT); + + // Bisher ungenutzte Pins + pinMode(PIN_27, OUTPUT); + pinMode(PIN_12, OUTPUT); + pinMode(PIN_13, OUTPUT); + pinMode(PIN_A5, OUTPUT); + pinMode(PIN_A1, OUTPUT); + pinMode(PIN_A0, OUTPUT); + + allLow(); +} + +void allLow() +{ + // Set all LOW + digitalWrite(PIN_LED, LOW); + digitalWrite(PIN_Z, LOW); + digitalWrite(PIN_V, LOW); + digitalWrite(PIN_R, LOW); + digitalWrite(PIN_L, LOW); + + // Bisher ungenutzte Pins + digitalWrite(PIN_27, LOW); + digitalWrite(PIN_12, LOW); + digitalWrite(PIN_13, LOW); + digitalWrite(PIN_A5, LOW); + digitalWrite(PIN_A1, LOW); + digitalWrite(PIN_A0, LOW); +} + +void errorWiFi() +{ + delay(2000); + while(true) + { + digitalWrite(PIN_LED, HIGH); + delay(100); + digitalWrite(PIN_LED, LOW); + delay(100); + digitalWrite(PIN_LED, HIGH); + delay(100); + digitalWrite(PIN_LED, LOW); + delay(1000); + } +} + +void successWiFi() +{ + delay(2000); + for(int i = 0; i < 5; i++) + { + digitalWrite(PIN_LED, HIGH); + delay(1000); + digitalWrite(PIN_LED, LOW); + delay(200); + } +} + +void vibrate(const char signr) +{ + switch(signr) + { + case '4': digitalWrite(PIN_Z, HIGH); break; + case '3': digitalWrite(PIN_V, HIGH); break; + case '2': digitalWrite(PIN_R, HIGH); break; + case '1': digitalWrite(PIN_L, HIGH); break; + case '0': allLow(); break; + } +} + + +void allHigh() +{ + // Set all High + digitalWrite(PIN_LED, HIGH); + digitalWrite(PIN_Z, HIGH); + digitalWrite(PIN_V, HIGH); + digitalWrite(PIN_R, HIGH); + digitalWrite(PIN_L, HIGH); + + // Bisher ungenutzte Pins + digitalWrite(PIN_27, HIGH); + digitalWrite(PIN_12, HIGH); + digitalWrite(PIN_13, HIGH); + digitalWrite(PIN_A5, HIGH); + digitalWrite(PIN_A1, HIGH); + digitalWrite(PIN_A0, HIGH); +} diff --git a/tactile_eeg_v1.1/tactile_eeg_v1.1.ino b/tactile_eeg_v1.1/tactile_eeg_v1.1.ino new file mode 100644 index 0000000..770d8e3 --- /dev/null +++ b/tactile_eeg_v1.1/tactile_eeg_v1.1.ino @@ -0,0 +1,176 @@ +// Arduino -> Adafruit ESP32 Feather auswählen + +#include +#include +#include +#include + +/* Firmware v1.1 04.04.2019 + * Christian Schuster + * cchschuster@gmail.com + */ + +#define SSID "featherNetwork" // network SSID +#define PASSWORD "featherNetwork" // network password + +#define PIN_LED 13 +#define PIN_Z 14 +#define PIN_V 32 +#define PIN_R 15 +#define PIN_L 33 +#define PIN_27 27 +#define PIN_12 12 +#define PIN_13 13 +#define PIN_A5 4 +#define PIN_A1 25 +#define PIN_A0 26 + +#define SCRIPTMODE 1 // 0 = local filtering, 1 = laptop script filtering + +char packetBuffer[255]; // buffer to hold incoming packet +unsigned int localPort = 8888; + +char sig_nr; +int i_sig_nr; + +WiFiUDP udp; + +void setup() +{ + setInitGPIO(); + + // Initialize serial + Serial.begin(115200); + Serial.println(); + Serial.print("Setting up AP at SSID: "); + Serial.print(SSID); + + bool result = WiFi.softAP(SSID, PASSWORD); + + //result = false; // for error testing + if(result) + { + Serial.println(); + Serial.println("...AP successfully built."); + Serial.print("...Feather IP: "); + Serial.println(WiFi.softAPIP()); + Serial.print("...Feather MAC: "); + Serial.println(WiFi.softAPmacAddress()); + Serial.print("...Local port: "); + Serial.println(localPort); + successWiFi(); + Serial.println("Listening to port..."); + } else { + Serial.println("...Failed while setting up access point"); + errorWiFi(); + } + + udp.begin(localPort); +} + +void loop() +{ + int packetSize = udp.parsePacket(); + if(packetSize) + { + int len = udp.read(packetBuffer, 255); + if(len) + { + packetBuffer[len] = 0; + } + + if(SCRIPTMODE) // == 1 + { + // laptop script filtering + sig_nr = packetBuffer[0]; + Serial.println(sig_nr); + vibrate(sig_nr); + } else { + // local filtering + if(strstr(packetBuffer,"usCode ")) + { + sig_nr = packetBuffer[13]; + Serial.println(sig_nr); + vibrate(sig_nr); + } + } + } +} + +void setInitGPIO() +{ + // Set all as OUTPUT + pinMode(PIN_LED, OUTPUT); + pinMode(PIN_Z, OUTPUT); + pinMode(PIN_V, OUTPUT); + pinMode(PIN_R, OUTPUT); + pinMode(PIN_L, OUTPUT); + + // Bisher ungenutzte Pins + pinMode(PIN_27, OUTPUT); + pinMode(PIN_12, OUTPUT); + pinMode(PIN_13, OUTPUT); + pinMode(PIN_A5, OUTPUT); + pinMode(PIN_A1, OUTPUT); + pinMode(PIN_A0, OUTPUT); + + allLow(); +} + +void allLow() +{ + // Set all LOW + digitalWrite(PIN_LED, LOW); + digitalWrite(PIN_Z, LOW); + digitalWrite(PIN_V, LOW); + digitalWrite(PIN_R, LOW); + digitalWrite(PIN_L, LOW); + + // Bisher ungenutzte Pins + digitalWrite(PIN_27, LOW); + digitalWrite(PIN_12, LOW); + digitalWrite(PIN_13, LOW); + digitalWrite(PIN_A5, LOW); + digitalWrite(PIN_A1, LOW); + digitalWrite(PIN_A0, LOW); +} + +void errorWiFi() +{ + delay(2000); + while(true) + { + digitalWrite(PIN_LED, HIGH); + delay(100); + digitalWrite(PIN_LED, LOW); + delay(100); + digitalWrite(PIN_LED, HIGH); + delay(100); + digitalWrite(PIN_LED, LOW); + delay(1000); + } +} + +void successWiFi() +{ + delay(2000); + for(int i = 0; i < 5; i++) + { + digitalWrite(PIN_LED, HIGH); + delay(1000); + digitalWrite(PIN_LED, LOW); + delay(200); + } +} + +void vibrate(const char signr) +{ + switch(signr) + { + case '4': digitalWrite(PIN_Z, HIGH); break; + case '3': digitalWrite(PIN_V, HIGH); break; + case '2': digitalWrite(PIN_R, HIGH); break; + case '1': digitalWrite(PIN_L, HIGH); break; + case '0': allLow(); break; + } +} diff --git a/tactile_eeg_v1.2/tactile_eeg_v1.2.ino b/tactile_eeg_v1.2/tactile_eeg_v1.2.ino new file mode 100644 index 0000000..e28c77c --- /dev/null +++ b/tactile_eeg_v1.2/tactile_eeg_v1.2.ino @@ -0,0 +1,240 @@ +// Arduino -> Adafruit ESP32 Feather auswählen + +#include +#include +#include +#include + +/* Firmware v1.1 04.04.2019 + * Christian Schuster + * cchschuster@gmail.com + * + * Firmware v1.2 03.08.2020 + * Igor Beloschapkin + * beloschapkin@protonmail.com + */ + +#define PIN_LED 13 +#define PIN_Z 14 +#define PIN_V 32 +#define PIN_R 15 +#define PIN_L 33 +#define PIN_27 27 +#define PIN_12 12 +#define PIN_13 13 +#define PIN_A5 4 +#define PIN_A1 25 +#define PIN_A0 26 + +#define SCRIPTMODE 1 // 0 = local filtering, 1 = laptop script filtering + +// char ssid[] = "Moto G (5S) 7000"; // network SSID (name) Mobile Hotspot +// char ssid[] = "homenet27 Gast"; // network SSID (name) Wolfgang +char ssid[] = "WLAN-79C670"; // network SSID (name) Igor +// char pass[] = "8fb165b9c4b7"; // network password Mobile Hotspot +// char pass[] = "0911533136"; // network password Wolfgang +char pass[] = "9718701064420292"; // network password Igor + +char packetBuffer[255]; // buffer to hold incoming packet +unsigned int localPort = 8888; + +char sig_nr; +int i_sig_nr; + +WiFiUDP udp; + +void setup() +{ + setInitGPIO(); + + // Initialize serial + Serial.begin(115200); + Serial.println(); + Serial.print("Connecting to WIFI at SSID: "); + Serial.print(ssid); + + // Connect to WPA/WPA2 network: + bool result = WiFi.begin(ssid, pass); + + // Wait 10 seconds for connection: + delay(10000); + + //result = false; // for error testing + if(result) + { + successWiFi(); + udp.begin(localPort); + } else { + errorWiFi(); + } +} + +void printWifiData() { + // print your WiFi shield's IP address: + IPAddress ip = WiFi.localIP(); + Serial.print("IP Address: "); + Serial.println(ip); + Serial.println(ip); + + // print your MAC address: + byte mac[6]; + WiFi.macAddress(mac); + Serial.print("MAC address: "); + Serial.print(mac[5], HEX); + Serial.print(":"); + Serial.print(mac[4], HEX); + Serial.print(":"); + Serial.print(mac[3], HEX); + Serial.print(":"); + Serial.print(mac[2], HEX); + Serial.print(":"); + Serial.print(mac[1], HEX); + Serial.print(":"); + Serial.println(mac[0], HEX); + +} + +void printCurrentNet() { + // print the SSID of the network you're attached to: + Serial.print("SSID: "); + Serial.println(WiFi.SSID()); + + // print the MAC address of the router you're attached to: +// byte bssid[6]; +// WiFi.BSSID(bssid); +// Serial.print("BSSID: "); +// Serial.print(bssid[5], HEX); +// Serial.print(":"); +// Serial.print(bssid[4], HEX); +// Serial.print(":"); +// Serial.print(bssid[3], HEX); +// Serial.print(":"); +// Serial.print(bssid[2], HEX); +// Serial.print(":"); +// Serial.print(bssid[1], HEX); +// Serial.print(":"); +// Serial.println(bssid[0], HEX); + + // print the received signal strength: + long rssi = WiFi.RSSI(); + Serial.print("signal strength (RSSI):"); + Serial.println(rssi); + + // print the encryption type: +// byte encryption = WiFi.encryptionType(); +// Serial.print("Encryption Type:"); +// Serial.println(encryption, HEX); +// Serial.println(); +} + +void loop() +{ + int packetSize = udp.parsePacket(); + if(packetSize) + { + int len = udp.read(packetBuffer, 255); + if(len) + { + packetBuffer[len] = 0; + } + + if(SCRIPTMODE) // == 1 + { + // laptop script filtering + sig_nr = packetBuffer[0]; + Serial.println(sig_nr); + vibrate(sig_nr); + } else { + // local filtering + if(strstr(packetBuffer,"usCode ")) + { + sig_nr = packetBuffer[13]; + Serial.println(sig_nr); + vibrate(sig_nr); + } + } + } +} + +void setInitGPIO() +{ + // Set all as OUTPUT + pinMode(PIN_LED, OUTPUT); + pinMode(PIN_Z, OUTPUT); + pinMode(PIN_V, OUTPUT); + pinMode(PIN_R, OUTPUT); + pinMode(PIN_L, OUTPUT); + + // Bisher ungenutzte Pins + pinMode(PIN_27, OUTPUT); + pinMode(PIN_12, OUTPUT); + pinMode(PIN_13, OUTPUT); + pinMode(PIN_A5, OUTPUT); + pinMode(PIN_A1, OUTPUT); + pinMode(PIN_A0, OUTPUT); + + allLow(); +} + +void allLow() +{ + // Set all LOW + digitalWrite(PIN_LED, LOW); + digitalWrite(PIN_Z, LOW); + digitalWrite(PIN_V, LOW); + digitalWrite(PIN_R, LOW); + digitalWrite(PIN_L, LOW); + + // Bisher ungenutzte Pins + digitalWrite(PIN_27, LOW); + digitalWrite(PIN_12, LOW); + digitalWrite(PIN_13, LOW); + digitalWrite(PIN_A5, LOW); + digitalWrite(PIN_A1, LOW); + digitalWrite(PIN_A0, LOW); +} + +void errorWiFi() +{ + Serial.println("...Failed while connecting to Network"); + delay(2000); + while(true) + { + digitalWrite(PIN_LED, HIGH); + delay(100); + digitalWrite(PIN_LED, LOW); + delay(100); + digitalWrite(PIN_LED, HIGH); + delay(100); + digitalWrite(PIN_LED, LOW); + delay(1000); + } +} + +void successWiFi() +{ + Serial.print("You're connected to the network"); + // Print out data + printCurrentNet(); + printWifiData(); + delay(2000); + for(int i = 0; i < 5; i++) + { + digitalWrite(PIN_LED, HIGH); + delay(1000); + digitalWrite(PIN_LED, LOW); + delay(200); + } +} + +void vibrate(const char signr) +{ + switch(signr) + { + case '4': digitalWrite(PIN_Z, HIGH); break; + case '3': digitalWrite(PIN_V, HIGH); break; + case '2': digitalWrite(PIN_R, HIGH); break; + case '1': digitalWrite(PIN_L, HIGH); break; + case '0': allLow(); break; + } +} diff --git a/wifi_scan/wifi_scan/wifi_scan.ino b/wifi_scan/wifi_scan/wifi_scan.ino new file mode 100644 index 0000000..5d11fbb --- /dev/null +++ b/wifi_scan/wifi_scan/wifi_scan.ino @@ -0,0 +1,48 @@ +/* + * This sketch demonstrates how to scan WiFi networks. + * The API is almost the same as with the WiFi Shield library, + * the most obvious difference being the different file you need to include: + */ +#include "WiFi.h" + +void setup() +{ + Serial.begin(115200); + + // Set WiFi to station mode and disconnect from an AP if it was previously connected + WiFi.mode(WIFI_STA); + WiFi.disconnect(); + delay(100); + + Serial.println("Setup done"); +} + +void loop() +{ + Serial.println("scan start"); + + // WiFi.scanNetworks will return the number of networks found + int n = WiFi.scanNetworks(); + Serial.println("scan done"); + if (n == 0) { + Serial.println("no networks found"); + } else { + Serial.print(n); + Serial.println(" networks found"); + for (int i = 0; i < n; ++i) { + // Print SSID and RSSI for each network found + Serial.print(i + 1); + Serial.print(": "); + Serial.print(WiFi.SSID(i)); + Serial.print(" ("); + Serial.print(WiFi.RSSI(i)); + Serial.print(")"); + Serial.println((WiFi.encryptionType(i) == WIFI_AUTH_OPEN)?" ":"*"); + delay(10); + } + } + Serial.println(""); + + // Wait a bit before scanning again + delay(5000); +}