Benutzer-Werkzeuge

Webseiten-Werkzeuge


sonstiges:tuerklingel

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Nächste ÜberarbeitungBeide Seiten der Revision
sonstiges:tuerklingel [2015-09-09 21:30] bretisonstiges:tuerklingel [2023-09-29 21:58] – [Empfänger mit Netzteil versorgen] schuballaa
Zeile 1: Zeile 1:
 ====== Türklingel ====== ====== Türklingel ======
 +
  
 ===== Übersicht ===== ===== Übersicht =====
Zeile 6: Zeile 7:
  
 Es wurde eine Möglichkeit gefunden, das Klingelsignal abzugreifen und in die Räume Bornstr. 16-17 zu verlängern (E- und Kreativwerkstatt). Es wurde eine Möglichkeit gefunden, das Klingelsignal abzugreifen und in die Räume Bornstr. 16-17 zu verlängern (E- und Kreativwerkstatt).
 +
 +**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.
 +
 +**Achtung bei Powerbanks!**
 +
 +Da sich die meisten Powerbanks bei geringer Last ausschalten, könnte es sein, dass der Empfänger bei mobilen betrieb mit Powerbanks die Funktion nach kurzer zeit Einstellen ([[https://apfelhirn.de/automatische-abschaltung-von-powerbanks-als-arduino-stromversorgung-bei-geringer-grundlast-verhindern/|https://apfelhirn.de/automatische-abschaltung-von-powerbanks-als-arduino-stromversorgung-bei-geringer-grundlast-verhindern/]]).
 +
  
 ===== Sprechanlage ===== ===== Sprechanlage =====
Zeile 27: Zeile 37:
 ===== Funk-Türklingel ===== ===== Funk-Türklingel =====
  
-Da uns keine Leitung zwischen den Räumen Bornstr. 14-15 sowie 16-17 zur Verfügung steht, mussten wir auf eine [[http://www.amazon.de/dp/B00ISMW1DG|Funk-Türklingel]] mit zwei Empfängern zurückgreifen. Der Sender wird mit einer 12 V Spezialbatterie versorgt, während die Empfänger jeweils zwei Mignon-Zellen aufnehmen.+Da uns keine Leitung zwischen den Räumen Bornstr. 14-15 sowie 16-17 zur Verfügung steht, mussten wir auf eine [[http://www.amazon.de/dp/B00ISMW1DG|Funk-Türklingel]] mit zwei Empfängern zurückgreifen. Der Sender sowie die 2 Empfänger werden mit einem Standard 5 Volt USB Netzteil versorgt
 + 
 +Wenn geklingelt wirdzieht ein n channel mosfet den Pin 4 des [[https://www.amazon.de/AZDelivery-Lolin-ESP32-Parent/dp/B086V1P4BL?th=1|esp32]] auf ground. Wenn dieses > 1000 ms auf Ground bleibt, wurde geklingelt und ein ESPNOW signal zu den Empfängern geschickt. 
  
 ===== Sender in Haustelefon einbauen ===== ===== Sender in Haustelefon einbauen =====
  
-Der Sender hat bei 12 V eine Stromaufnahme von ungefähr 5 mA - nicht mehr als die LED eines OptokopplersDaher betreiben wir den Sender nun direkt über den Klingelsignal-Pin Spannung und Strom sind ausreichendum den Sender auszulösen+Der Sender ist ein ESP32 Lolin Lite welcher auf ein Trigger auf Pin 4 wartet (als sensor wird ein n chanel mosfet benutzt(Bild: Patine mitte links) 
 + 
 +{{https://wiki.hackerspace-bremen.de/_media/sonstiges/klingel_sender.jpg?nolink&600x800|klingel_sender.jpg}} 
 + 
 + 
 +===== Sourcecode ===== 
 + 
 +Sender
 + 
 +#include <WiFi.h>\\ 
 +#include <esp_wifi.h>\\ 
 +#include <esp_now.h> 
 + 
 +// Set your new MAC Address\\ 
 +uint8_t newMACAddress[] = {0x30, 0xAF, 0xA0, 0x05, 0x1D, 0x63}; 
 + 
 +// REPLACE WITH YOUR ESP RECEIVER'S MAC ADDRESS\\ 
 +uint8_t broadcastAddress1[] = {0x30, 0xAF, 0xA1, 0x05, 0x1D, 0x63};\\ 
 +uint8_t broadcastAddress2[] = {0x30, 0xAF, 0xA2, 0x05, 0x1D, 0x63}; 
 + 
 +typedef struct bell_struct {\\ 
 +uint64_t trigger;\\ 
 +} bell_struct; 
 + 
 +bell_struct bell; 
 + 
 +esp_now_peer_info_t peerInfo; 
 + 
 +// callback when data is sent\\ 
 +void OnDataSent(const uint8_t *mac_addr, esp_now_send_status_t status) {\\ 
 +char macStr[18];\\ 
 +Serial.print("Packet to: ");\\ 
 +// Copies the sender mac address to a string\\ 
 +snprintf(macStr, sizeof(macStr), "%02x:%02x:%02x:%02x:%02x:%02x",\\ 
 +         mac_addr[0], mac_addr[1], mac_addr[2], mac_addr[3], mac_addr[4], mac_addr[5]);\\ 
 +Serial.print(macStr);\\ 
 +Serial.print(" send status:\t");\\ 
 +Serial.println(status == ESP_NOW_SEND_SUCCESS ? "Delivery Success" : "Delivery Fail");\\ 
 +
 + 
 +void setup() {\\ 
 +Serial.begin(115200); 
 + 
 +WiFi.mode(WIFI_STA); 
 + 
 +// Set the ESP32 Board MAC Address.\\ 
 +esp_wifi_set_mac(WIFI_IF_STA, &newMACAddress[0]); 
 + 
 +// Print the new MAC Address.\\ 
 +Serial.print("[NEW] ESP32 Board MAC Address:  ");\\ 
 +Serial.println(WiFi.macAddress()); 
 + 
 +if (esp_now_init() != ESP_OK) {\\ 
 +  Serial.println("Error initializing ESP-NOW");\\ 
 +  ESP.restart();\\ 
 +
 + 
 +esp_now_register_send_cb(OnDataSent); 
 + 
 +// register peer\\ 
 +peerInfo.channel = 0;\\ 
 +peerInfo.encrypt = false;\\ 
 +// register first peer\\ 
 +memcpy(peerInfo.peer_addr, broadcastAddress1, 6);\\ 
 +if (esp_now_add_peer(&peerInfo) != ESP_OK) {\\ 
 +  Serial.println("Failed to add peer");\\ 
 +  return;\\ 
 +
 + 
 +// register second peer\\ 
 +memcpy(peerInfo.peer_addr, broadcastAddress2, 6);\\ 
 +if (esp_now_add_peer(&peerInfo) != ESP_OK) {\\ 
 +  Serial.println("Failed to add peer");\\ 
 +  return;\\ 
 +
 + 
 + // Set pin 4 as an interrupt\\ 
 +pinMode(4, INPUT_PULLUP);\\ 
 +attachInterrupt(digitalPinToInterrupt(4), triggerbell, FALLING);\\ 
 +
 + 
 +void triggerbell() {\\ 
 +bell.trigger = 8562190430; 
 + 
 +esp_err_t result = esp_now_send(0, (uint8_t *) &bell, sizeof(bell_struct)); 
 + 
 +if (result == ESP_OK) {\\ 
 +  Serial.println("Sent with success");\\ 
 +} else {\\ 
 +  Serial.println("Error sending the data");\\ 
 +
 + 
 +Serial.print("[NEW] ESP32 Board MAC Address:  ");\\ 
 +Serial.println(WiFi.macAddress()); 
 + 
 +
 + 
 +void loop() { 
 + 
 +
 + 
 +Empfänger1 
 + 
 +#include <WiFi.h>\\ 
 +#include <esp_wifi.h>\\ 
 +#include <esp_now.h> 
 + 
 +// Set MAC Address this device (bell receiver 1)\\ 
 +uint8_t newMACAddress[] = {0x30, 0xAF, 0xA1, 0x05, 0x1D, 0x63}; 
 + 
 +uint8_t addr[] = {0x30, 0xAF, 0xA0, 0x05, 0x1D, 0x63}; 
 + 
 +unsigned long lastPrintoutTime = 0;\\ 
 +bool isTriggered = false;\\ 
 +unsigned long lastTriggeredTime = 0; 
 + 
 +typedef struct bell_struct {\\ 
 +uint64_t trigger;\\ 
 +} bell_struct; 
 + 
 +//Create a struct_message called myData\\ 
 +bell_struct myData; 
 + 
 +void OnDataRecv(const uint8_t * mac, const uint8_t *incomingData, int len) {\\ 
 +memcpy(&myData, incomingData, sizeof(myData));\\ 
 +Serial.print("Bytes received: ");\\ 
 +Serial.println(len);\\ 
 +Serial.print("received command:");\\ 
 +Serial.println(myData.trigger);\\ 
 +if (memcmp(mac, addr, 6) == 0) { // Check if expected Mac Addr\\ 
 +  Serial.println("klingel device received!");\\ 
 +  if (myData.trigger == 8562190430) {\\ 
 +    Serial.println("valid Trigger code received!");\\ 
 +    triggerbell();\\ 
 +  }\\ 
 +}\\ 
 +
 + 
 +void setup() { 
 + 
 +Serial.begin(115200); 
 + 
 +Serial.println(); 
 + 
 +WiFi.mode(WIFI_STA); 
 + 
 +Serial.print("[OLD] ESP32 Board MAC Address:  ");\\ 
 +Serial.println(WiFi.macAddress()); 
 + 
 +// ESP32 Board add-on before version < 1.0.5\\ 
 +//esp_wifi_set_mac(ESP_IF_WIFI_STA&newMACAddress[0]); 
 + 
 +// ESP32 Board add-on after version > 1.0.5\\ 
 +esp_wifi_set_mac(WIFI_IF_STA, &newMACAddress[0]); 
 + 
 +Serial.print("[NEW] ESP32 Board MAC Address:  ");\\ 
 +Serial.println(WiFi.macAddress()); 
 + 
 +pinMode(LED_BUILTIN, OUTPUT);\\ 
 +pinMode(4, OUTPUT); 
 + 
 +digitalWrite(LED_BUILTIN, LOW);\\ 
 +digitalWrite(4, HIGH);   // trigger bell\\ 
 +delay(100);\\ 
 +digitalWrite(4, LOW);\\ 
 +digitalWrite(LED_BUILTIN, HIGH);\\ 
 +delay(100); 
 + 
 +//Set device as a Wi-Fi Station\\ 
 +WiFi.mode(WIFI_STA); 
 + 
 +//Init ESP-NOW\\ 
 +if (esp_now_init() != ESP_OK) {\\ 
 +  Serial.println("Error initializing ESP-NOW");\\ 
 +  ESP.restart();\\ 
 +
 + 
 +// Once ESPNow is successfully Init, we will register for recv CB to\\ 
 +// get recv packer info\\ 
 +esp_now_register_recv_cb(OnDataRecv);\\ 
 +
 + 
 +\\ 
 +void triggerbell() {\\ 
 +if (!isTriggered || (millis() - lastTriggeredTime > 10000)) {\\ 
 +  isTriggered = true;\\ 
 +  lastTriggeredTime = millis(); 
 + 
 +  digitalWrite(LED_BUILTIN, LOW);\\ 
 +  digitalWrite(4, HIGH);   // trigger bell\\ 
 +  delay(100);\\ 
 +  digitalWrite(4, LOW);\\ 
 +  digitalWrite(LED_BUILTIN, HIGH);\\ 
 +  Serial.println("bell triggered");\\ 
 +}\\ 
 +
 + 
 +void loop() {\\ 
 +// Print out the `isTriggered` variable every second\\ 
 +if (millis() - lastPrintoutTime > 1000) {\\ 
 +  Serial.print("isTriggered: ");\\ 
 +  Serial.println(isTriggered);\\ 
 +  lastPrintoutTime = millis();\\ 
 +}\\ 
 +\\ 
 +// Reset the `isTriggered` variable after 5 seconds\\ 
 +if (millis() - lastTriggeredTime > 5000) {\\ 
 +  isTriggered = false;\\ 
 +}\\ 
 +\\ 
 +
 + 
 +Empfänger2 
 + 
 +#include <WiFi.h>\\ 
 +#include <esp_wifi.h>\\ 
 +#include <esp_now.h> 
 + 
 +// Set MAC Address this device (bell receiver 2)\\ 
 +uint8_t newMACAddress[] = {0x30, 0xAF, 0xA2, 0x05, 0x1D, 0x63}; 
 + 
 +uint8_t addr[] = {0x30, 0xAF, 0xA0, 0x05, 0x1D, 0x63}; 
 + 
 +unsigned long lastPrintoutTime = 0;\\ 
 +bool isTriggered = false;\\ 
 +unsigned long lastTriggeredTime = 0; 
 + 
 +typedef struct bell_struct {\\ 
 +uint64_t trigger;\\ 
 +} bell_struct; 
 + 
 +//Create a struct_message called myData\\ 
 +bell_struct myData; 
 + 
 +void OnDataRecv(const uint8_t * mac, const uint8_t *incomingData, int len) {\\ 
 +memcpy(&myData, incomingData, sizeof(myData));\\ 
 +Serial.print("Bytes received: ");\\ 
 +Serial.println(len);\\ 
 +Serial.print("received command:");\\ 
 +Serial.println(myData.trigger);\\ 
 +if (memcmp(mac, addr, 6) == 0) { // Check if expected Mac Addr\\ 
 +  Serial.println("klingel device received!");\\ 
 +  if (myData.trigger == 8562190430) {\\ 
 +    Serial.println("valid Trigger code received!");\\ 
 +    triggerbell();\\ 
 +  }\\ 
 +}\\ 
 +
 + 
 +void setup() { 
 + 
 +Serial.begin(115200); 
 + 
 +Serial.println(); 
 + 
 +WiFi.mode(WIFI_STA); 
 + 
 +Serial.print("[OLD] ESP32 Board MAC Address:  ");\\ 
 +Serial.println(WiFi.macAddress()); 
 + 
 +// ESP32 Board add-on before version < 1.0.5\\ 
 +//esp_wifi_set_mac(ESP_IF_WIFI_STA, &newMACAddress[0]); 
 + 
 +// ESP32 Board add-on after version > 1.0.5\\ 
 +esp_wifi_set_mac(WIFI_IF_STA, &newMACAddress[0]); 
 + 
 +Serial.print("[NEW] ESP32 Board MAC Address:  ");\\ 
 +Serial.println(WiFi.macAddress()); 
 + 
 +pinMode(LED_BUILTIN, OUTPUT);\\ 
 +pinMode(4, OUTPUT); 
 + 
 +digitalWrite(LED_BUILTIN, LOW);\\ 
 +digitalWrite(4, HIGH);   // trigger bell\\ 
 +delay(100);\\ 
 +digitalWrite(4, LOW);\\ 
 +digitalWrite(LED_BUILTIN, HIGH);\\ 
 +delay(100); 
 + 
 +//Set device as a Wi-Fi Station\\ 
 +WiFi.mode(WIFI_STA); 
 + 
 +//Init ESP-NOW\\ 
 +if (esp_now_init() != ESP_OK) {\\ 
 +  Serial.println("Error initializing ESP-NOW");\\ 
 +  ESP.restart();\\ 
 +
 + 
 +// Once ESPNow is successfully Init, we will register for recv CB to\\ 
 +// get recv packer info\\ 
 +esp_now_register_recv_cb(OnDataRecv);\\ 
 +
 + 
 +\\ 
 +void triggerbell() {\\ 
 +if (!isTriggered || (millis() - lastTriggeredTime > 10000)) {\\ 
 +  isTriggered = true;\\ 
 +  lastTriggeredTime = millis(); 
 + 
 +  digitalWrite(LED_BUILTIN, LOW);\\ 
 +  digitalWrite(4, HIGH);   // trigger bell\\ 
 +  delay(100);\\ 
 +  digitalWrite(4, LOW);\\ 
 +  digitalWrite(LED_BUILTIN, HIGH);\\ 
 +  Serial.println("bell triggered");\\ 
 +}\\ 
 +}
  
-Der Sender wurde von seinem Gehäuse befreit, die Batteriekontakte wurden entfernt und der Taster überbrücktAnschließend passte die Senderplatine direkt in den unteren Bereich des Haustelefons HT 3033.+void loop() {\\ 
 +// Print out the `isTriggered` variable every second\\ 
 +if (millis() - lastPrintoutTime > 1000) {\\ 
 +  Serial.print("isTriggered: ");\\ 
 +  Serial.println(isTriggered);\\ 
 +  lastPrintoutTime = millis();\\ 
 +}\\ 
 +\\ 
 +// Reset the `isTriggered` variable after 5 seconds\\ 
 +if (millis() - lastTriggeredTime > 5000) {\\ 
 +  isTriggered = false;\\ 
 +}\\ 
 +\\ 
 +}
  
-===== Empfänger mit Netzteil versorgen ===== 
  
-Die Empfänger sind regulär per Batterie versorgt, haben aber eine recht hohe Ruhestromaufnahme, zumindest halten die Batterien nur wenige Monate. Daher wurden die Batterien im Empfänger durch 3V-Netzteile ersetzt. 
sonstiges/tuerklingel.txt · Zuletzt geändert: 2023-09-29 22:49 von schuballaa