add example espnow based sketch; datasheet for buzzer

This commit is contained in:
coelner 2020-09-04 21:41:04 +02:00
parent 3876eac2a4
commit 96df5044c4
5 changed files with 1463 additions and 24 deletions

1372
PT-3534FPQ.pdf Normal file

File diff suppressed because it is too large Load Diff

View File

@ -5,19 +5,19 @@ Diese Platine ist mit der Markierung **LM-201A Z12I17.B0** versehen.
| PCB | Nutzen | Info |
|------|----------|---------------------------|
| D2 | Diode GND| |
| D2 | Diode GND| M7, SMD 1N4007 |
| D3 | Diode VCC| nicht vorhanden |
| R8 | rote LED | 511 , wird auf GND gezogen, Pin 1 am L1|
| R13 | gelbe LED| 511 , wird auf GND gezogen, Pin 5 am L1|
| R12 | grüne LED| 221 , wird auf GND gezogen, Pin 6 am L1|
| U2 | VCC | [Holtec 7133-1](https://www.holtek.com.tw/documents/10179/11842/HT71xx-1v250.pdf) , VCC = 3.3V , SOT89 |
| R23 | NTC | gebr?ckt |
| R23 | NTC | gebrückt |
| U3 | | [Holtec HT1621B](https://www.holtek.com/productdetail/-/vg/ht1621), 48 SSOP|
| R34 | LCD | 221, Vorwiderstand |
| U1 | MCU | L1 Markierung |
| SP1 | Buzzer | |
| SP1 | Buzzer | [PT-3534FPQ], 3 Pin (Ground, Main, Feedback) |
| LB1 | | |
| SW1 | Button | |
| SW1 | Button | TCK Test Pin, Default VCC Rail, Pressed GND |
|LCD-P | Display | Temp, PPM, Battery Level, 12 Pins 3 x 7 Digits, 3 Batterie Blöcke|
| J2 | LCD Pwr | |
| X1 | XTAL | Pin 14/15 U3, 32kHz (?)|
@ -39,4 +39,6 @@ Die JTAG Schnittstelle wurde nicht betestet und somit könnte diese beim Chip *L
- Pin 19 (BZ) des HT1621B geht über R36 (103) und Q3 (J3Y) an den J2 GND Pin des LCD
- Obwohl kein NTC verbaut ist, wird eine Temperatur angezeigt (~ +1°C)
- Das LCD ist an die COM0-3 (Pin 21-24) sowie SEG0-7 (Pin 8-1) des HT1621B angeschlossen
- VDD (Pin 17) und VLCD (Pin 16) scheinen gebrückt und
- VDD (Pin 17) und VLCD (Pin 16) scheinen gebrückt
- Das LCD zeigt bei 4,7V zwei Balken der Batterie und bei 4,0V eine leere Hülle
- Beim Starten wird eine blaue Hintergrundbeleuchtung eingeschaltet

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 MiB

After

Width:  |  Height:  |  Size: 4.9 MiB

View File

@ -5,7 +5,9 @@ Um den RM370 brauchbar in eine vernetzte Installation zu erweitern, wurden folge
- Der CO-Melder soll autark weiter agieren, da hierfür die Zertifizierung ausgestellt wurde
- Eine Vernetzung untereinander ist anzustreben
- Eine Low Power Mesh Implementierung
- BLE MESH
- ESP NOW als vendor IEEE802.11 Datenübertragung, da kein AP/IP/TCP/MQTT aufgebaut werden muss
- eine reguläre WLAN Verbindung über ein always-on Gateway
- Die Energieversorgung basiert auf:
1. zusätzliche 5V Power Rail
2. LiPo/LiFePo4

View File

@ -1,33 +1,96 @@
uint8_t GREEN_Pin = D5;
uint8_t YELLOW_Pin = D6;
uint8_t RED_Pin = D7;
#include <ESP8266WiFi.h>
#include <WifiEspNowBroadcast.h> //https://github.com/yoursunny/WifiEspNow
#include <Ticker.h> //Ticker Library
const uint8_t GREEN_Pin = D5;
const uint8_t YELLOW_Pin = D6;
const uint8_t RED_Pin = D7;
const uint8_t BUZZER_Pin = D4; //CAUTION is VCC NOT 3.3V !!!
Ticker alarmGenerator;
volatile bool alarmTrigger = false;
void buzzerTone () {
if (alarmTrigger) {
digitalWrite(BUZZER_Pin, !(digitalRead(BUZZER_Pin)));
}
}
void setup() {
Serial.begin(9600);
Serial.println(F("Interrupt D7,D6,D5 with Serial.print"));
pinMode(RED_Pin, INPUT);
pinMode(YELLOW_Pin, INPUT);
pinMode(GREEN_Pin, INPUT);
attachInterrupt(digitalPinToInterrupt(RED_Pin), IntREDCallback, RISING);
attachInterrupt(digitalPinToInterrupt(YELLOW_Pin), IntYELLOWCallback, RISING);
attachInterrupt(digitalPinToInterrupt(GREEN_Pin), IntGREENCallback, RISING);
Serial.begin(9600);
Serial.println(F("Interrupt D7,D6,D5 with Serial.print"));
pinMode(RED_Pin, INPUT);
pinMode(YELLOW_Pin, INPUT);
pinMode(GREEN_Pin, INPUT);
pinMode(BUZZER_Pin, OUTPUT);
digitalWrite(BUZZER_Pin, HIGH);
attachInterrupt(digitalPinToInterrupt(RED_Pin), IntREDCallback, RISING);
attachInterrupt(digitalPinToInterrupt(YELLOW_Pin), IntYELLOWCallback, RISING);
attachInterrupt(digitalPinToInterrupt(GREEN_Pin), IntGREENCallback, RISING);
// generate 1s call
alarmGenerator.attach(1, buzzerTone);
WiFi.persistent(false);
bool ok = WifiEspNowBroadcast.begin("CO-WARN", 3);
if (!ok) {
Serial.println("WifiEspNowBroadcast.begin() failed");
ESP.restart();
}
WifiEspNowBroadcast.onReceive(processRx, nullptr);
Serial.print("MAC address of this node is ");
Serial.println(WiFi.softAPmacAddress());
}
void loop() {
//delay(1000);
if (alarmTrigger) {
sendMessage();
}
WifiEspNowBroadcast.loop();
yield();
/*uint16_t ldrValue = analogRead(A0);
Serial.println(ldrValue);*/
Serial.println(ldrValue);*/
}
ICACHE_RAM_ATTR void IntREDCallback(){
Serial.println(F("RED!"));
ICACHE_RAM_ATTR void processRx(const uint8_t mac[6], const uint8_t* buf, size_t count, void* cbarg) {
Serial.println(F("RED!")); //TODO ONLY DEBUG
alarmTrigger = true;
Serial.printf("Message from %02X:%02X:%02X:%02X:%02X:%02X\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
for (int i = 0; i < count; ++i) {
Serial.print(static_cast<char>(buf[i]));
}
Serial.println();
}
ICACHE_RAM_ATTR void IntYELLOWCallback(){
Serial.println(F("YELLOW"));
void sendMessage() {
char msg[60];
int len = snprintf(msg, sizeof(msg), "hello ESP-NOW from %s at %lu", WiFi.softAPmacAddress().c_str(), millis());
WifiEspNowBroadcast.send(reinterpret_cast<const uint8_t*>(msg), len);
Serial.println("Sending message");
Serial.println(msg);
Serial.print("Recipients:");
const int MAX_PEERS = 20;
WifiEspNowPeerInfo peers[MAX_PEERS];
int nPeers = std::min(WifiEspNow.listPeers(peers, MAX_PEERS), MAX_PEERS);
for (int i = 0; i < nPeers; ++i) {
Serial.printf(" %02X:%02X:%02X:%02X:%02X:%02X", peers[i].mac[0], peers[i].mac[1], peers[i].mac[2], peers[i].mac[3], peers[i].mac[4], peers[i].mac[5]);
}
Serial.println();
}
ICACHE_RAM_ATTR void IntREDCallback() {
Serial.println(F("RED!")); //TODO ONLY DEBUG
alarmTrigger = true;
}
ICACHE_RAM_ATTR void IntGREENCallback(){
Serial.println(F("GREEN"));
ICACHE_RAM_ATTR void IntYELLOWCallback() {
Serial.println(F("YELLOW")); //TODO ONLY DEBUG
alarmTrigger = false;
}
ICACHE_RAM_ATTR void IntGREENCallback() {
Serial.println(F("GREEN")); //TODO ONLY DEBUG
alarmTrigger = false;
}