Erste Bilder und Beschreibung
Gehäuse (Preform PET) und Akku/Batterie (CR123A):
Als Energiequelle kommt ein Akku o. eine Batterie der Größe CR123A zur Anwendung.
Der Akku (hier) hat eine USB Schnittstelle zum Laden über einen Standard Handyladeadapter.
Die Kosten für den Akku liegen bei ca. 7-10 Euro (als Alternative die Batterie ca. 3Euro).
Das Gehäuse ist ein transparenter 9cm Preform PET-Ling (wo nichts rauskommt, kommt auch nichts rein!
Absolut Wasserdicht und fast unzerstörbar!).
Senderplatine:
Funktionsbeschreibung:
Zum vorbereitenden Einschalten wird ein Schiebeschalter verwendet
(dazu wird der PET-Ling aufgeschraubt, die "Innereien" rausgezogen,
geschaltet, alles reingeschoben und wieder wasserdicht verschraubt.
Kein Gefummel, da alles in einem Strang verbaut ist.)
Steht der Schiebeschalter auf "ON", können die Sensoren den Sender einschalten.
Ein Taktgenerator gibt Signal an das Sendemodul, welches zum Empfänger funkt.
Zusätzlich gibt es zwei LEDs.
Eine zeigte den Takt des Generators an,
die zweite den Zustand der Sensoren (betätigt/nicht betätigt).
Strom wird dem Akku nur entzogen, wenn einer der Sensoren schaltet.
Kein Standby-Stromverbrauch!
Kein Ton! Als Quelle für den Ton wird ein Glöckchen verwendet!
Die Empfindlichkeit wird durch Drehen des PET-Lings eingestellt.
Dieser steckt in einer Aufnahme, welche fest am Blank befestigt ist.
Empfängerplatine:
Akku und Gehäuse wie beim Sender.
Sequenz_Bisserkennung
Source Code:
//ATTINY10 Controller mit AtmelStudio V7
//27.08.2023 V001
Sequenz-Bisserkennung-Erzeugung
#include <avr/io.h>
#define F_CPU 1000000UL
#include <util/delay.h>
//Prototypen der Funktionen
void einmal50msBlinken(void);
void einmal100msBlinken(void);
void einmal400msBlinken(void);
int main(void)
{
int progCounter=0;
DDRB |= _BV(PB2);
//PIN PB2 = output pin
for(;;)
{
//////// t=0s/////////////
if ( progCounter <= 20 )
{
einmal100msBlinken(); //dauert 100ms
}
/////// t=2s/////////////
if ( ( progCounter > 20 )
&& ( progCounter <= 300 ) )
{
einmal400msBlinken(); //dauert 400ms
}
/////// t=120s/////////////
if ( progCounter > 300 )
{
einmal50msBlinken(); //dauert 50ms + 60s
progCounter =
301;
}
/////// t=180s...bis unendlich
(quasi)
progCounter++;
}
return 0;
}
void einmal100msBlinken(void)
{
PORTB |= _BV(PB2);
// turns PIN PB2 high (logic one)
_delay_ms(50);
// waits 50 milliseconds
PORTB &= ~(_BV(PB2)); // turns
PIN PB2 low (logic zero)
_delay_ms(50);
// waits 500 milliseconds
}
void einmal400msBlinken(void)
{
PORTB |= _BV(PB2);
// turns PIN PB2 high (logic one)
_delay_ms(200);
// waits 200 milliseconds
PORTB &= ~(_BV(PB2)); // turns
PIN PB2 low (logic zero)
_delay_ms(200);
// waits 200 milliseconds
}
void einmal50msBlinken(void)
{
int i=0;
PORTB |= _BV(PB2);
// turns PIN PB2 high (logic one)
_delay_ms(50);
// waits 50 milliseconds
PORTB &= ~(_BV(PB2)); // turns
PIN PB2 low (logic zero)
for(i=0;i<=60;i++)
{
_delay_ms(1000);
// waits 1000 milliseconds
}
}
Schaltplan Sender
KONTAKT-Volks_Welsbissanzeiger