|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246 |
- // Arduino -> Adafruit ESP32 Feather auswählen
-
- #include <WiFi.h>
- #include <WiFiUDP.h>
- #include <stdio.h>
- #include <ctype.h>
-
- /* Firmware v1.1 04.04.2019
- * Christian Schuster
- * cchschuster@gmail.com
- *
- * Firmware v1.2 03.08.2020
- * Igor Beloschapkin
- * beloschapkin@protonmail.com
- * Implement Autoconnect to Home Network
- *
- * Firmware v1.3 06.11.2020
- * Igor Beloschapkin
- * beloschapkin@protonmail.com
- * Add Support for 6 Taktilos
- *
- */
-
- // define PINs
- #define PIN_LED 13
- #define PIN_TAC6 12
- #define PIN_TAC5 27
- #define PIN_TAC4 33
- #define PIN_TAC3 15
- #define PIN_TAC2 32
- #define PIN_TAC1 14
- #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[] = "ssid";
- char pass[] = "pass";
-
- 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_TAC6, OUTPUT);
- pinMode(PIN_TAC5, OUTPUT);
- pinMode(PIN_TAC4, OUTPUT);
- pinMode(PIN_TAC3, OUTPUT);
- pinMode(PIN_TAC2, OUTPUT);
- pinMode(PIN_TAC1, OUTPUT);
-
- // Bisher ungenutzte Pins
- 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_TAC6, LOW);
- digitalWrite(PIN_TAC5, LOW);
- digitalWrite(PIN_TAC4, LOW);
- digitalWrite(PIN_TAC3, LOW);
- digitalWrite(PIN_TAC2, LOW);
- digitalWrite(PIN_TAC1, LOW);
-
- // Bisher ungenutzte Pins
- 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 '6': digitalWrite(PIN_TAC6, HIGH); break;
- case '5': digitalWrite(PIN_TAC5, HIGH); break;
- case '4': digitalWrite(PIN_TAC4, HIGH); break;
- case '3': digitalWrite(PIN_TAC3, HIGH); break;
- case '2': digitalWrite(PIN_TAC2, HIGH); break;
- case '1': digitalWrite(PIN_TAC1, HIGH); break;
- case '0': allLow(); break;
- }
- }
|