You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

tactile_eeg_v1.2.ino 4.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236
  1. // Arduino -> Adafruit ESP32 Feather auswählen
  2. #include <WiFi.h>
  3. #include <WiFiUDP.h>
  4. #include <stdio.h>
  5. #include <ctype.h>
  6. /* Firmware v1.1 04.04.2019
  7. * Christian Schuster
  8. * cchschuster@gmail.com
  9. *
  10. * Firmware v1.2 03.08.2020
  11. * Igor Beloschapkin
  12. * beloschapkin@protonmail.com
  13. */
  14. #define PIN_LED 13
  15. #define PIN_Z 14
  16. #define PIN_V 32
  17. #define PIN_R 15
  18. #define PIN_L 33
  19. #define PIN_27 27
  20. #define PIN_12 12
  21. #define PIN_13 13
  22. #define PIN_A5 4
  23. #define PIN_A1 25
  24. #define PIN_A0 26
  25. #define SCRIPTMODE 1 // 0 = local filtering, 1 = laptop script filtering
  26. char ssid[] = "ssid";
  27. char pass[] = "pass";
  28. char packetBuffer[255]; // buffer to hold incoming packet
  29. unsigned int localPort = 8888;
  30. char sig_nr;
  31. int i_sig_nr;
  32. WiFiUDP udp;
  33. void setup()
  34. {
  35. setInitGPIO();
  36. // Initialize serial
  37. Serial.begin(115200);
  38. Serial.println();
  39. Serial.print("Connecting to WIFI at SSID: ");
  40. Serial.print(ssid);
  41. // Connect to WPA/WPA2 network:
  42. bool result = WiFi.begin(ssid, pass);
  43. // Wait 10 seconds for connection:
  44. delay(10000);
  45. //result = false; // for error testing
  46. if(result)
  47. {
  48. successWiFi();
  49. udp.begin(localPort);
  50. } else {
  51. errorWiFi();
  52. }
  53. }
  54. void printWifiData() {
  55. // print your WiFi shield's IP address:
  56. IPAddress ip = WiFi.localIP();
  57. Serial.print("IP Address: ");
  58. Serial.println(ip);
  59. Serial.println(ip);
  60. // print your MAC address:
  61. byte mac[6];
  62. WiFi.macAddress(mac);
  63. Serial.print("MAC address: ");
  64. Serial.print(mac[5], HEX);
  65. Serial.print(":");
  66. Serial.print(mac[4], HEX);
  67. Serial.print(":");
  68. Serial.print(mac[3], HEX);
  69. Serial.print(":");
  70. Serial.print(mac[2], HEX);
  71. Serial.print(":");
  72. Serial.print(mac[1], HEX);
  73. Serial.print(":");
  74. Serial.println(mac[0], HEX);
  75. }
  76. void printCurrentNet() {
  77. // print the SSID of the network you're attached to:
  78. Serial.print("SSID: ");
  79. Serial.println(WiFi.SSID());
  80. // print the MAC address of the router you're attached to:
  81. // byte bssid[6];
  82. // WiFi.BSSID(bssid);
  83. // Serial.print("BSSID: ");
  84. // Serial.print(bssid[5], HEX);
  85. // Serial.print(":");
  86. // Serial.print(bssid[4], HEX);
  87. // Serial.print(":");
  88. // Serial.print(bssid[3], HEX);
  89. // Serial.print(":");
  90. // Serial.print(bssid[2], HEX);
  91. // Serial.print(":");
  92. // Serial.print(bssid[1], HEX);
  93. // Serial.print(":");
  94. // Serial.println(bssid[0], HEX);
  95. // print the received signal strength:
  96. long rssi = WiFi.RSSI();
  97. Serial.print("signal strength (RSSI):");
  98. Serial.println(rssi);
  99. // print the encryption type:
  100. // byte encryption = WiFi.encryptionType();
  101. // Serial.print("Encryption Type:");
  102. // Serial.println(encryption, HEX);
  103. // Serial.println();
  104. }
  105. void loop()
  106. {
  107. int packetSize = udp.parsePacket();
  108. if(packetSize)
  109. {
  110. int len = udp.read(packetBuffer, 255);
  111. if(len)
  112. {
  113. packetBuffer[len] = 0;
  114. }
  115. if(SCRIPTMODE) // == 1
  116. {
  117. // laptop script filtering
  118. sig_nr = packetBuffer[0];
  119. Serial.println(sig_nr);
  120. vibrate(sig_nr);
  121. } else {
  122. // local filtering
  123. if(strstr(packetBuffer,"usCode "))
  124. {
  125. sig_nr = packetBuffer[13];
  126. Serial.println(sig_nr);
  127. vibrate(sig_nr);
  128. }
  129. }
  130. }
  131. }
  132. void setInitGPIO()
  133. {
  134. // Set all as OUTPUT
  135. pinMode(PIN_LED, OUTPUT);
  136. pinMode(PIN_Z, OUTPUT);
  137. pinMode(PIN_V, OUTPUT);
  138. pinMode(PIN_R, OUTPUT);
  139. pinMode(PIN_L, OUTPUT);
  140. // Bisher ungenutzte Pins
  141. pinMode(PIN_27, OUTPUT);
  142. pinMode(PIN_12, OUTPUT);
  143. pinMode(PIN_13, OUTPUT);
  144. pinMode(PIN_A5, OUTPUT);
  145. pinMode(PIN_A1, OUTPUT);
  146. pinMode(PIN_A0, OUTPUT);
  147. allLow();
  148. }
  149. void allLow()
  150. {
  151. // Set all LOW
  152. digitalWrite(PIN_LED, LOW);
  153. digitalWrite(PIN_Z, LOW);
  154. digitalWrite(PIN_V, LOW);
  155. digitalWrite(PIN_R, LOW);
  156. digitalWrite(PIN_L, LOW);
  157. // Bisher ungenutzte Pins
  158. digitalWrite(PIN_27, LOW);
  159. digitalWrite(PIN_12, LOW);
  160. digitalWrite(PIN_13, LOW);
  161. digitalWrite(PIN_A5, LOW);
  162. digitalWrite(PIN_A1, LOW);
  163. digitalWrite(PIN_A0, LOW);
  164. }
  165. void errorWiFi()
  166. {
  167. Serial.println("...Failed while connecting to Network");
  168. delay(2000);
  169. while(true)
  170. {
  171. digitalWrite(PIN_LED, HIGH);
  172. delay(100);
  173. digitalWrite(PIN_LED, LOW);
  174. delay(100);
  175. digitalWrite(PIN_LED, HIGH);
  176. delay(100);
  177. digitalWrite(PIN_LED, LOW);
  178. delay(1000);
  179. }
  180. }
  181. void successWiFi()
  182. {
  183. Serial.print("You're connected to the network");
  184. // Print out data
  185. printCurrentNet();
  186. printWifiData();
  187. delay(2000);
  188. for(int i = 0; i < 5; i++)
  189. {
  190. digitalWrite(PIN_LED, HIGH);
  191. delay(1000);
  192. digitalWrite(PIN_LED, LOW);
  193. delay(200);
  194. }
  195. }
  196. void vibrate(const char signr)
  197. {
  198. switch(signr)
  199. {
  200. case '4': digitalWrite(PIN_Z, HIGH); break;
  201. case '3': digitalWrite(PIN_V, HIGH); break;
  202. case '2': digitalWrite(PIN_R, HIGH); break;
  203. case '1': digitalWrite(PIN_L, HIGH); break;
  204. case '0': allLow(); break;
  205. }
  206. }