sonstiges:tuerklingel
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
sonstiges:tuerklingel [2023-09-29 21:58] – [Empfänger mit Netzteil versorgen] schuballaa | sonstiges:tuerklingel [2023-09-29 22:49] (aktuell) – [Übersicht] schuballaa | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== Türklingel ====== | ====== Türklingel ====== | ||
- | |||
===== Übersicht ===== | ===== Übersicht ===== | ||
Zeile 10: | Zeile 9: | ||
**Optional: | **Optional: | ||
- | Es könnte zu jeder zeit an sender und oder Empfängern eine Li-ion Akku (via JST) angeschlossen werden und somit auch mobil betrieben werden z.b bei Veranstaltungen die im Hinnenhof stattfinden um kein Klingeln zu verpassen. | + | Es könnte zu jeder zeit an den Empfängern eine Li-ion Akku (via JST) angeschlossen werden und somit auch mobil betrieben werden z.b bei Veranstaltungen die im Hinnenhof stattfinden um kein Klingeln zu verpassen. |
**Achtung bei Powerbanks!** | **Achtung bei Powerbanks!** | ||
Da sich die meisten Powerbanks bei geringer Last ausschalten, | Da sich die meisten Powerbanks bei geringer Last ausschalten, | ||
- | |||
===== Sprechanlage ===== | ===== Sprechanlage ===== | ||
Zeile 21: | Zeile 19: | ||
Die Sprechanlage nutzt ein 2-Draht-Bussystem vom Typ [[http:// | Die Sprechanlage nutzt ein 2-Draht-Bussystem vom Typ [[http:// | ||
- | Das Haustelefon ist vom Typ STR HT 3033. | + | Das Haustelefon ist vom Typ STR HT 3033. |
+ | |||
+ | Das Steuergerät ist ein SP 333 ({{: | ||
- | Das Steuergerät ist ein SP 333 ({{: | ||
===== Pinout ===== | ===== Pinout ===== | ||
Zeile 30: | Zeile 29: | ||
Die Belegung lässt sich durch ein Foto einer Relaisbox {{: | Die Belegung lässt sich durch ein Foto einer Relaisbox {{: | ||
- | {{: | + | {{: |
- | {{: | + | |
Mechanisch konnten die passenden Steckerweibchen nicht ermittelt werden. Daher greifen wir das Signal über zwei IC-Beinchen-Einsätze gedrehter IC-Sockel ab, die in den Steckverbindern verlässlich halten. | Mechanisch konnten die passenden Steckerweibchen nicht ermittelt werden. Daher greifen wir das Signal über zwei IC-Beinchen-Einsätze gedrehter IC-Sockel ab, die in den Steckverbindern verlässlich halten. | ||
Zeile 39: | Zeile 37: | ||
Da uns keine Leitung zwischen den Räumen Bornstr. 14-15 sowie 16-17 zur Verfügung steht, mussten wir auf eine [[http:// | Da uns keine Leitung zwischen den Räumen Bornstr. 14-15 sowie 16-17 zur Verfügung steht, mussten wir auf eine [[http:// | ||
- | Wenn geklingelt wird, zieht ein n channel mosfet den Pin 4 des [[https:// | + | Wenn geklingelt wird, zieht ein [[https:// |
===== Sender in Haustelefon einbauen ===== | ===== Sender in Haustelefon einbauen ===== | ||
Zeile 47: | Zeile 44: | ||
{{https:// | {{https:// | ||
- | |||
===== Sourcecode ===== | ===== Sourcecode ===== | ||
Zeile 53: | Zeile 49: | ||
Sender: | Sender: | ||
+ | < | ||
#include < | #include < | ||
#include < | #include < | ||
#include < | #include < | ||
- | // Set your new MAC Address\\ | + | //Set your new MAC Address\\ |
- | uint8_t newMACAddress[] = {0x30, 0xAF, 0xA0, 0x05, 0x1D, 0x63}; | + | uint8_t newMACAddress[] = {0x30, 0xAF, 0xA0, 0x05, 0x1D, 0x63}; //REPLACE WITH YOUR ESP RECEIVER' |
- | + | ||
- | // REPLACE WITH YOUR ESP RECEIVER' | + | |
uint8_t broadcastAddress1[] = {0x30, 0xAF, 0xA1, 0x05, 0x1D, 0x63};\\ | uint8_t broadcastAddress1[] = {0x30, 0xAF, 0xA1, 0x05, 0x1D, 0x63};\\ | ||
uint8_t broadcastAddress2[] = {0x30, 0xAF, 0xA2, 0x05, 0x1D, 0x63}; | uint8_t broadcastAddress2[] = {0x30, 0xAF, 0xA2, 0x05, 0x1D, 0x63}; | ||
Zeile 72: | Zeile 67: | ||
esp_now_peer_info_t peerInfo; | esp_now_peer_info_t peerInfo; | ||
- | // callback when data is sent\\ | + | //callback when data is sent\\ |
void OnDataSent(const uint8_t *mac_addr, esp_now_send_status_t status) {\\ | void OnDataSent(const uint8_t *mac_addr, esp_now_send_status_t status) {\\ | ||
char macStr[18]; | char macStr[18]; | ||
- | Serial.print(" | + | Serial.print(" |
- | // Copies the sender mac address to a string\\ | + | Copies the sender mac address to a string\\ |
- | snprintf(macStr, | + | snprintf(macStr, |
- | | + | |
+ | mac_addr[0], | ||
Serial.print(macStr); | Serial.print(macStr); | ||
Serial.print(" | Serial.print(" | ||
Zeile 89: | Zeile 86: | ||
WiFi.mode(WIFI_STA); | WiFi.mode(WIFI_STA); | ||
- | // Set the ESP32 Board MAC Address.\\ | + | //Set the ESP32 Board MAC Address.\\ |
- | esp_wifi_set_mac(WIFI_IF_STA, | + | esp_wifi_set_mac(WIFI_IF_STA, |
- | + | Serial.print(" | |
- | // Print the new MAC Address.\\ | + | |
- | Serial.print(" | + | |
Serial.println(WiFi.macAddress()); | Serial.println(WiFi.macAddress()); | ||
- | if (esp_now_init() != ESP_OK) {\\ | + | if (esp_now_init() != ESP_OK) { |
- | Serial.println(" | + | Serial.println(" |
- | ESP.restart(); | + | ESP.restart(); |
} | } | ||
esp_now_register_send_cb(OnDataSent); | esp_now_register_send_cb(OnDataSent); | ||
- | // register peer\\ | + | //register peer\\ |
peerInfo.channel = 0;\\ | peerInfo.channel = 0;\\ | ||
- | peerInfo.encrypt = false;\\ | + | peerInfo.encrypt = false;// \\ |
- | // register first peer\\ | + | register first peer\\ |
memcpy(peerInfo.peer_addr, | memcpy(peerInfo.peer_addr, | ||
- | if (esp_now_add_peer(& | + | if (esp_now_add_peer(& |
- | Serial.println(" | + | Serial.println(" |
- | return;\\ | + | return;\\ |
} | } | ||
- | // register second peer\\ | + | //register second peer\\ |
memcpy(peerInfo.peer_addr, | memcpy(peerInfo.peer_addr, | ||
if (esp_now_add_peer(& | if (esp_now_add_peer(& | ||
- | | + | Serial.println(" |
- | return;\\ | + | return;\\ |
- | } | + | } //Set pin 4 as an interrupt\\ |
- | + | ||
- | // Set pin 4 as an interrupt\\ | + | |
pinMode(4, INPUT_PULLUP); | pinMode(4, INPUT_PULLUP); | ||
attachInterrupt(digitalPinToInterrupt(4), | attachInterrupt(digitalPinToInterrupt(4), | ||
Zeile 130: | Zeile 125: | ||
esp_err_t result = esp_now_send(0, | esp_err_t result = esp_now_send(0, | ||
- | if (result == ESP_OK) {\\ | + | if (result == ESP_OK) { |
- | Serial.println(" | + | |
- | } else {\\ | + | Serial.println(" |
- | Serial.println(" | + | |
+ | } else { | ||
+ | Serial.println(" | ||
} | } | ||
- | Serial.print(" | + | Serial.print(" |
Serial.println(WiFi.macAddress()); | Serial.println(WiFi.macAddress()); | ||
Zeile 144: | Zeile 141: | ||
} | } | ||
+ | </ | ||
Empfänger1 | Empfänger1 | ||
+ | < | ||
#include < | #include < | ||
#include < | #include < | ||
#include < | #include < | ||
- | // Set MAC Address this device (bell receiver 1)\\ | + | //Set MAC Address this device (bell receiver 1)\\ |
- | uint8_t newMACAddress[] = {0x30, 0xAF, 0xA1, 0x05, 0x1D, 0x63}; | + | uint8_t newMACAddress[] = {0x30, 0xAF, 0xA1, 0x05, 0x1D, 0x63}; uint8_t addr[] = {0x30, 0xAF, 0xA0, 0x05, 0x1D, 0x63}; unsigned long lastPrintoutTime = 0;\\ |
- | + | ||
- | uint8_t addr[] = {0x30, 0xAF, 0xA0, 0x05, 0x1D, 0x63}; | + | |
- | + | ||
- | unsigned long lastPrintoutTime = 0;\\ | + | |
bool isTriggered = false;\\ | bool isTriggered = false;\\ | ||
- | unsigned long lastTriggeredTime = 0; | + | unsigned long lastTriggeredTime = 0; typedef struct bell_struct {\\ |
- | + | ||
- | typedef struct bell_struct {\\ | + | |
uint64_t trigger;\\ | uint64_t trigger;\\ | ||
- | } bell_struct; | + | } bell_struct; |
- | + | ||
- | //Create a struct_message called myData\\ | + | |
bell_struct myData; | bell_struct myData; | ||
Zeile 174: | Zeile 165: | ||
Serial.println(myData.trigger); | Serial.println(myData.trigger); | ||
if (memcmp(mac, | if (memcmp(mac, | ||
- | | + | Serial.println(" |
- | if (myData.trigger == 8562190430) {\\ | + | if (myData.trigger == 8562190430) {\\ |
- | Serial.println(" | + | Serial.println(" |
- | triggerbell(); | + | triggerbell(); |
- | }\\ | + | |
}\\ | }\\ | ||
- | } | + | }\\ |
- | + | } void setup() { Serial.begin(115200); | |
- | void setup() { | + | Serial.println(WiFi.macAddress()); |
- | + | // | |
- | Serial.begin(115200); | + | |
- | + | ||
- | Serial.println(); | + | |
- | + | ||
- | WiFi.mode(WIFI_STA); | + | |
- | + | ||
- | Serial.print(" | + | |
- | Serial.println(WiFi.macAddress()); | + | |
- | + | ||
- | // ESP32 Board add-on before version < 1.0.5\\ | + | |
- | // | + | |
- | + | ||
- | // ESP32 Board add-on after version > 1.0.5\\ | + | |
esp_wifi_set_mac(WIFI_IF_STA, | esp_wifi_set_mac(WIFI_IF_STA, | ||
- | Serial.print(" | + | Serial.print(" |
Serial.println(WiFi.macAddress()); | Serial.println(WiFi.macAddress()); | ||
Zeile 206: | Zeile 183: | ||
digitalWrite(LED_BUILTIN, | digitalWrite(LED_BUILTIN, | ||
- | digitalWrite(4, | + | digitalWrite(4, |
delay(100); | delay(100); | ||
digitalWrite(4, | digitalWrite(4, | ||
digitalWrite(LED_BUILTIN, | digitalWrite(LED_BUILTIN, | ||
- | delay(100); | + | delay(100); //Set device as a Wi-Fi Station\\ |
- | + | ||
- | //Set device as a Wi-Fi Station\\ | + | |
WiFi.mode(WIFI_STA); | WiFi.mode(WIFI_STA); | ||
//Init ESP-NOW\\ | //Init ESP-NOW\\ | ||
if (esp_now_init() != ESP_OK) {\\ | if (esp_now_init() != ESP_OK) {\\ | ||
- | | + | Serial.println(" |
- | ESP.restart(); | + | ESP.restart(); |
- | } | + | } //Once ESPNow is successfully Init, we will register for recv CB to\\ |
- | + | //get recv packer info\\ | |
- | // Once ESPNow is successfully Init, we will register for recv CB to\\ | + | |
- | // get recv packer info\\ | + | |
esp_now_register_recv_cb(OnDataRecv); | esp_now_register_recv_cb(OnDataRecv); | ||
- | } | + | }\\ |
- | + | ||
- | \\ | + | |
void triggerbell() {\\ | void triggerbell() {\\ | ||
if (!isTriggered || (millis() - lastTriggeredTime > 10000)) {\\ | if (!isTriggered || (millis() - lastTriggeredTime > 10000)) {\\ | ||
- | | + | isTriggered = true;\\ |
- | lastTriggeredTime = millis(); | + | lastTriggeredTime = millis(); |
+ | digitalWrite(4, | ||
- | digitalWrite(LED_BUILTIN, | + | delay(100); |
- | digitalWrite(4, | + | digitalWrite(4, |
- | | + | digitalWrite(LED_BUILTIN, |
- | digitalWrite(4, | + | Serial.println(" |
- | digitalWrite(LED_BUILTIN, | + | } |
- | Serial.println(" | + | |
- | }\\ | + | |
} | } | ||
void loop() {\\ | void loop() {\\ | ||
- | // Print out the `isTriggered` variable every second\\ | + | //Print out the `isTriggered` variable every second\\ |
if (millis() - lastPrintoutTime > 1000) {\\ | if (millis() - lastPrintoutTime > 1000) {\\ | ||
- | | + | Serial.print(" |
- | Serial.println(isTriggered); | + | Serial.println(isTriggered); |
- | lastPrintoutTime = millis(); | + | lastPrintoutTime = millis(); |
- | }\\ | + | }// \\ |
- | \\ | + | |
- | // Reset the `isTriggered` variable after 5 seconds\\ | + | |
- | if (millis() - lastTriggeredTime > 5000) {\\ | + | |
- | isTriggered = false;\\ | + | |
- | }\\ | + | |
\\ | \\ | ||
+ | Reset the `isTriggered` variable after 5 seconds\\ | ||
+ | if (millis() - lastTriggeredTime > 5000) { | ||
+ | |||
+ | isTriggered = false;\\ | ||
+ | |||
+ | } | ||
+ | |||
} | } | ||
+ | </ | ||
Empfänger2 | Empfänger2 | ||
+ | < | ||
#include < | #include < | ||
#include < | #include < | ||
#include < | #include < | ||
- | // Set MAC Address this device (bell receiver 2)\\ | + | //Set MAC Address this device (bell receiver 2)\\ |
- | uint8_t newMACAddress[] = {0x30, 0xAF, 0xA2, 0x05, 0x1D, 0x63}; | + | uint8_t newMACAddress[] = {0x30, 0xAF, 0xA2, 0x05, 0x1D, 0x63}; uint8_t addr[] = {0x30, 0xAF, 0xA0, 0x05, 0x1D, 0x63}; unsigned long lastPrintoutTime = 0;\\ |
- | + | ||
- | uint8_t addr[] = {0x30, 0xAF, 0xA0, 0x05, 0x1D, 0x63}; | + | |
- | + | ||
- | unsigned long lastPrintoutTime = 0;\\ | + | |
bool isTriggered = false;\\ | bool isTriggered = false;\\ | ||
- | unsigned long lastTriggeredTime = 0; | + | unsigned long lastTriggeredTime = 0; typedef struct bell_struct {\\ |
- | + | ||
- | typedef struct bell_struct {\\ | + | |
uint64_t trigger;\\ | uint64_t trigger;\\ | ||
- | } bell_struct; | + | } bell_struct; |
- | + | ||
- | //Create a struct_message called myData\\ | + | |
bell_struct myData; | bell_struct myData; | ||
Zeile 285: | Zeile 251: | ||
Serial.println(myData.trigger); | Serial.println(myData.trigger); | ||
if (memcmp(mac, | if (memcmp(mac, | ||
- | | + | Serial.println(" |
- | if (myData.trigger == 8562190430) {\\ | + | if (myData.trigger == 8562190430) {\\ |
- | Serial.println(" | + | Serial.println(" |
- | triggerbell(); | + | triggerbell(); |
- | }\\ | + | |
}\\ | }\\ | ||
- | } | + | }\\ |
- | + | } void setup() { Serial.begin(115200); | |
- | void setup() { | + | Serial.println(WiFi.macAddress()); |
- | + | // | |
- | Serial.begin(115200); | + | |
- | + | ||
- | Serial.println(); | + | |
- | + | ||
- | WiFi.mode(WIFI_STA); | + | |
- | + | ||
- | Serial.print(" | + | |
- | Serial.println(WiFi.macAddress()); | + | |
- | + | ||
- | // ESP32 Board add-on before version < 1.0.5\\ | + | |
- | // | + | |
- | + | ||
- | // ESP32 Board add-on after version > 1.0.5\\ | + | |
esp_wifi_set_mac(WIFI_IF_STA, | esp_wifi_set_mac(WIFI_IF_STA, | ||
- | Serial.print(" | + | Serial.print(" |
Serial.println(WiFi.macAddress()); | Serial.println(WiFi.macAddress()); | ||
Zeile 317: | Zeile 269: | ||
digitalWrite(LED_BUILTIN, | digitalWrite(LED_BUILTIN, | ||
- | digitalWrite(4, | + | digitalWrite(4, |
delay(100); | delay(100); | ||
digitalWrite(4, | digitalWrite(4, | ||
digitalWrite(LED_BUILTIN, | digitalWrite(LED_BUILTIN, | ||
- | delay(100); | + | delay(100); //Set device as a Wi-Fi Station\\ |
- | + | ||
- | //Set device as a Wi-Fi Station\\ | + | |
WiFi.mode(WIFI_STA); | WiFi.mode(WIFI_STA); | ||
//Init ESP-NOW\\ | //Init ESP-NOW\\ | ||
if (esp_now_init() != ESP_OK) {\\ | if (esp_now_init() != ESP_OK) {\\ | ||
- | | + | Serial.println(" |
- | ESP.restart(); | + | ESP.restart(); |
- | } | + | } //Once ESPNow is successfully Init, we will register for recv CB to\\ |
- | + | //get recv packer info\\ | |
- | // Once ESPNow is successfully Init, we will register for recv CB to\\ | + | |
- | // get recv packer info\\ | + | |
esp_now_register_recv_cb(OnDataRecv); | esp_now_register_recv_cb(OnDataRecv); | ||
- | } | + | }\\ |
- | + | ||
- | \\ | + | |
void triggerbell() {\\ | void triggerbell() {\\ | ||
if (!isTriggered || (millis() - lastTriggeredTime > 10000)) {\\ | if (!isTriggered || (millis() - lastTriggeredTime > 10000)) {\\ | ||
- | | + | isTriggered = true;\\ |
- | lastTriggeredTime = millis(); | + | lastTriggeredTime = millis(); |
+ | digitalWrite(4, | ||
- | digitalWrite(LED_BUILTIN, | + | delay(100); |
- | digitalWrite(4, | + | digitalWrite(4, |
- | | + | digitalWrite(LED_BUILTIN, |
- | digitalWrite(4, | + | Serial.println(" |
- | digitalWrite(LED_BUILTIN, | + | |
- | Serial.println(" | + | } |
- | }\\ | + | |
} | } | ||
void loop() {\\ | void loop() {\\ | ||
- | // Print out the `isTriggered` variable every second\\ | + | //Print out the `isTriggered` variable every second\\ |
if (millis() - lastPrintoutTime > 1000) {\\ | if (millis() - lastPrintoutTime > 1000) {\\ | ||
- | | + | Serial.print(" |
- | Serial.println(isTriggered); | + | Serial.println(isTriggered); |
- | lastPrintoutTime = millis(); | + | lastPrintoutTime = millis(); |
- | }\\ | + | }// \\ |
- | \\ | + | |
- | // Reset the `isTriggered` variable after 5 seconds\\ | + | |
- | if (millis() - lastTriggeredTime > 5000) {\\ | + | |
- | isTriggered = false;\\ | + | |
- | }\\ | + | |
\\ | \\ | ||
+ | Reset the `isTriggered` variable after 5 seconds\\ | ||
+ | if (millis() - lastTriggeredTime > 5000) { | ||
+ | |||
+ | isTriggered = false;\\ | ||
+ | |||
+ | } | ||
+ | |||
} | } | ||
+ | </ | ||
sonstiges/tuerklingel.1696017510.txt.gz · Zuletzt geändert: 2023-09-29 21:58 von schuballaa