AskSin Analyzer XS - Der Analyzer als Desktop-App ohne ESP

Entwicklung und Bau von Hardware aller Art, die im HM-Umfeld eingesetzt werden kann

Moderator: Co-Administratoren

Analyzer Nutzung

Ich habe einen Analyzer oder plane einen zu bauen
138
30%
Das Display ist für mich wichtig
32
7%
Ich nutze überwiegend die WebUI
83
18%
Langzeitdaten sind mir wichtig (Analyzer läuft 24/7)
78
17%
Ich möchte den Analyzer als RaspiMatic Addon oder auf einem Server dauerhaft betreiben
122
27%
 
Abstimmungen insgesamt: 453

jp112sdl
Beiträge: 12116
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 849 Mal
Danksagung erhalten: 2150 Mal
Kontaktdaten:

Re: AskSin Analyzer XS - Der Analyzer als Desktop-App ohne ESP

Beitrag von jp112sdl » 30.03.2020, 07:31

TomMajor hat geschrieben:
30.03.2020, 00:09
Die Richtung ist immer vom cc1101 zum AVR, korrekt?
Jup.
TomMajor hat geschrieben:
30.03.2020, 00:09
Ist das ein Fertig mit dem Senden interrupt oder ein wake-up interrupt (Burst) oder beides oder was ganz anderes?
IOCFG0 ist mit 0x06 konfiguriert.
Das bedeutet laut Datenblatt des CC1101, Seite 41:
The GDO pins can be used in both RX and TX to give an interrupt when a sync word has been received/transmitted or when a complete packet has been received/transmitted by setting IOCFGx.GDOx_CFG=0x06.
Die fallende Flanke löst handleInt() aus, das intread=1 setzt, jedoch nur wenn nicht gesendet wird. Was wiederum bedeutet, dass die read() Funktion abgearbeitet wird, um den Empfangspuffer auszulesen.

:arrow: Aus meiner Sicht dient der Interrupt hier in der Lib, um festzustellen, dass Daten vollständig empfangen wurden. :!: :?:

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

papa
Beiträge: 705
Registriert: 22.05.2018, 10:23
Hat sich bedankt: 24 Mal
Danksagung erhalten: 120 Mal

Re: AskSin Analyzer XS - Der Analyzer als Desktop-App ohne ESP

Beitrag von papa » 30.03.2020, 09:20

jp112sdl hat geschrieben:
30.03.2020, 07:31
:arrow: Aus meiner Sicht dient der Interrupt hier in der Lib, um festzustellen, dass Daten vollständig empfangen wurden. :!: :?:
Genau - das ist nur die Signalisierung, dass am Funkmodul was zum Lesen bereit steht.
Anfragen zur AskSin++ werden nur im Forum beantwortet

TomMajor
Beiträge: 1793
Registriert: 30.08.2017, 23:25
Hat sich bedankt: 175 Mal
Danksagung erhalten: 399 Mal
Kontaktdaten:

Re: AskSin Analyzer XS - Der Analyzer als Desktop-App ohne ESP

Beitrag von TomMajor » 30.03.2020, 12:36

Danke euch, Jerome und papa.

mit diesen Infos würde ich meine weiter vorn dargestellte Schaltung bezüglich diesem Signal so abändern:

Code: Alles auswählen

   3V3--|<|--+
             |
AVR.D2--|1k|-+---CC.GDO0
Der AVR erkennt ab 3V sicher High bei Vcc 5V.
Falls fehlerhafterweise eine sketch auf dem Arduino ist der D2 auf 5V output setzt, bleibt der cc1101 heil da dies über die Diode begrenzt wird.
Viele Grüße,
Tom

TomMajor
Beiträge: 1793
Registriert: 30.08.2017, 23:25
Hat sich bedankt: 175 Mal
Danksagung erhalten: 399 Mal
Kontaktdaten:

Re: AskSin Analyzer XS - Der Analyzer als Desktop-App ohne ESP

Beitrag von TomMajor » 03.04.2020, 18:00

ok, die erste Version der Platine ist fertig.

Christoph und ich haben bzw. werden davon eine Prototypenbestellung machen.
Ich würde empfehlen auf den ersten Aufbau eines Gerätes zu warten ob alles funktioniert bevor das ggf. jemand nachbestellt, z.B. die Sache mit dem 4-Kanal Levelshifter-Board ist für mich Neuland, das setze ich zum ersten Mal ein.

Ziele:

- Ein Board für Christophs AskSin Analyzer XS (dieser Thread), die Minimalversion des "großen" AskSinAnalyzer - ohne ESP32 und ohne großes Display - zum Betrieb über den USB Port eines Computers.

- Außerdem lässt sich damit die Idee der 868 MHz Wünschelrute zur Suche nach einem Babbling Idiot (BI) Dauersender realisieren.
Dabei wird das Gerät von einer USB-Powerbank versorgt und man kann sich damit auf Wanderung im Haus oder Garten begeben um durch die Anzeige der Signalstärke auf einem kleinen OLED-Display das fehlerhaft sendende Gerät - den BI - zu identifizieren.

- Das OLED und die Wünschelruten Funktion sind optional in der Bestückung.
Außerdem ist für diesen Anwendungsfall eine kleine und individuell konfigurierbare Lastschaltung bestückbar, so dass die Powerbank nicht abschaltet.

- ich habe versucht durch Nutzung von fertig bestückte Boards wie den Arduino Nano und das Levelshifter-Board den nötigen Lötaufwand gering zu halten, bei gleichzeitig möglichst sauberen Schaltungsdesign mit 5V/3,3V Levelshiftern.

- Der Arduino Nano sitzt mit ein paar Pins einer Stiftleiste über dem CC1101 und dem Levelshifter-Board, ähnlich wie bei der tmStamp.

Doku und Schaltplan:
https://github.com/TomMajor/SmartHome/t ... nalyzer-XS

Die Doku und Stückliste werde ich die nächsten Tage noch vervollständigen.
Dateianhänge
AnalyzerXS_pcb1.png
AnalyzerXS_pcb2.png
AnalyzerXS_pcb3.png
Viele Grüße,
Tom

hasenpups
Beiträge: 60
Registriert: 30.07.2018, 08:46
Hat sich bedankt: 1 Mal
Danksagung erhalten: 3 Mal

Re: AskSin Analyzer XS - Der Analyzer als Desktop-App ohne ESP

Beitrag von hasenpups » 07.04.2020, 14:51

Sieht gut aus. Was spricht denn aber dagegen, gleich einen Arduino mit 3.3V zu nehmen wie den Pro Micro den es bei Aliexpress günstig gibt?
https://de.aliexpress.com/item/1871481789.html

Benutzeravatar
Psi
Beiträge: 512
Registriert: 09.08.2018, 19:58
Wohnort: Nürnberg
Hat sich bedankt: 27 Mal
Danksagung erhalten: 90 Mal

Re: AskSin Analyzer XS - Der Analyzer als Desktop-App ohne ESP

Beitrag von Psi » 07.04.2020, 14:58

Dagegen sprach, dass zumindest ich ihn bis eben nicht kannte. Aber sieht gut aus.

dtp
Beiträge: 10660
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 321 Mal
Danksagung erhalten: 501 Mal

Re: AskSin Analyzer XS - Der Analyzer als Desktop-App ohne ESP

Beitrag von dtp » 07.04.2020, 16:10

TomMajor hat geschrieben:
03.04.2020, 18:00
- Außerdem lässt sich damit die Idee der 868 MHz Wünschelrute zur Suche nach einem Babbling Idiot (BI) Dauersender realisieren.
Dabei wird das Gerät von einer USB-Powerbank versorgt und man kann sich damit auf Wanderung im Haus oder Garten begeben um durch die Anzeige der Signalstärke auf einem kleinen OLED-Display das fehlerhaft sendende Gerät - den BI - zu identifizieren.
Das geht aber mit dem - wie soll ich ihn nennen? - ursprünglichen AskSinAnalyzer samt 3,2"-Display auch sehr gut. Den konnte ich zumindest in einem Test fast 18 Stunden an einer handlichen Powerbank betreiben.
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

TomMajor
Beiträge: 1793
Registriert: 30.08.2017, 23:25
Hat sich bedankt: 175 Mal
Danksagung erhalten: 399 Mal
Kontaktdaten:

Re: AskSin Analyzer XS - Der Analyzer als Desktop-App ohne ESP

Beitrag von TomMajor » 07.04.2020, 16:21

hasenpups hat geschrieben:
07.04.2020, 14:51
Sieht gut aus. Was spricht denn aber dagegen, gleich einen Arduino mit 3.3V zu nehmen wie den Pro Micro den es bei Aliexpress günstig gibt?
https://de.aliexpress.com/item/1871481789.html
ich kannte den auch nicht.
ist sicher auch eine gute Möglichkeit, eventuell muss die SW im Sniffer sketch angepasst werden da der U4 natives USB hat wenn ich mich recht erinnere, keine Ahnung wie anders da die serielle Kommunikation bzw. Programmierung abläuft. :?:
Eventuell kapseln das aber auch die Arduino Libs so das man nichts anpassen muss.
Viele Grüße,
Tom

jp112sdl
Beiträge: 12116
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 849 Mal
Danksagung erhalten: 2150 Mal
Kontaktdaten:

Re: AskSin Analyzer XS - Der Analyzer als Desktop-App ohne ESP

Beitrag von jp112sdl » 07.04.2020, 17:56

Also wenn ich mal spaßeshalber den Sniffer für 32U4 kompiliere, dann kommen da ganz ganz viele Fehler aus der AlarmClock.h

Code: Alles auswählen

AlarmClock.h:205:5: error: 'TIMSK2' was not declared in this scope
     TIMSK2  = 0; //Disable timer2 interrupts
     ^~~~~~
/AlarmClock.h:205:5: note: suggested alternative: 'TIMSK0'
     TIMSK2  = 0; //Disable timer2 interrupts
     ^~~~~~
     TIMSK0
/AlarmClock.h:206:5: error: 'ASSR' was not declared in this scope
     ASSR  = (1<<AS2); //Enable asynchronous mode
     ^~~~
/AlarmClock.h:206:5: note: suggested alternative: 'ACSR'
     ASSR  = (1<<AS2); //Enable asynchronous mode
     ^~~~
     ACSR
/AlarmClock.h:206:17: error: 'AS2' was not declared in this scope
     ASSR  = (1<<AS2); //Enable asynchronous mode
                 ^~~
/AlarmClock.h:206:17: note: suggested alternative: 'A2'
     ASSR  = (1<<AS2); //Enable asynchronous mode
                 ^~~
                 A2
/AlarmClock.h:207:5: error: 'TCNT2' was not declared in this scope
     TCNT2 = 0; //set initial counter value
     ^~~~~
/AlarmClock.h:207:5: note: suggested alternative: 'TCNT0'
     TCNT2 = 0; //set initial counter value
     ^~~~~
     TCNT0
/AlarmClock.h:208:5: error: 'TCCR2A' was not declared in this scope
     TCCR2A = 0; // mode normal
     ^~~~~~
/AlarmClock.h:208:5: note: suggested alternative: 'TCCR0A'
     TCCR2A = 0; // mode normal
     ^~~~~~
     TCCR0A
/AlarmClock.h:209:5: error: 'TCCR2B' was not declared in this scope
     TCCR2B = (1<<CS22)|(1<<CS20); //set prescaller 128
     ^~~~~~
/AlarmClock.h:209:5: note: suggested alternative: 'TCCR0B'
     TCCR2B = (1<<CS22)|(1<<CS20); //set prescaller 128
     ^~~~~~
     TCCR0B
/AlarmClock.h:209:18: error: 'CS22' was not declared in this scope
     TCCR2B = (1<<CS22)|(1<<CS20); //set prescaller 128
                  ^~~~
/AlarmClock.h:209:18: note: suggested alternative: 'CS12'
     TCCR2B = (1<<CS22)|(1<<CS20); //set prescaller 128
                  ^~~~
                  CS12
/AlarmClock.h:209:28: error: 'CS20' was not declared in this scope
     TCCR2B = (1<<CS22)|(1<<CS20); //set prescaller 128
                            ^~~~
/AlarmClock.h:209:28: note: suggested alternative: 'CS00'
     TCCR2B = (1<<CS22)|(1<<CS20); //set prescaller 128
                            ^~~~
                            CS00
/AlarmClock.h:210:24: error: 'TCN2UB' was not declared in this scope
     while (ASSR & ((1<<TCN2UB)|(1<<TCR2BUB))); //wait for registers update
                        ^~~~~~
/AlarmClock.h:210:24: note: suggested alternative: 'TCNT1H'
     while (ASSR & ((1<<TCN2UB)|(1<<TCR2BUB))); //wait for registers update
                        ^~~~~~
                        TCNT1H
/AlarmClock.h:210:36: error: 'TCR2BUB' was not declared in this scope
     while (ASSR & ((1<<TCN2UB)|(1<<TCR2BUB))); //wait for registers update
                                    ^~~~~~~
/AlarmClock.h:211:5: error: 'TIFR2' was not declared in this scope
     TIFR2  = (1<<TOV2); //clear interrupt flags
     ^~~~~
/AlarmClock.h:211:5: note: suggested alternative: 'TIFR4'
     TIFR2  = (1<<TOV2); //clear interrupt flags
     ^~~~~
     TIFR4
/AlarmClock.h:211:18: error: 'TOV2' was not declared in this scope
     TIFR2  = (1<<TOV2); //clear interrupt flags
                  ^~~~
/AlarmClock.h:211:18: note: suggested alternative: 'TOV0'
     TIFR2  = (1<<TOV2); //clear interrupt flags
                  ^~~~
                  TOV0
/AlarmClock.h:212:19: error: 'TOIE2' was not declared in this scope
     TIMSK2  = (1<<TOIE2); //enable TOV2 interrupt
                   ^~~~~
/AlarmClock.h:212:19: note: suggested alternative: 'TOIE0'
     TIMSK2  = (1<<TOIE2); //enable TOV2 interrupt
                   ^~~~~
                   TOIE0
/AlarmClock.h: In member function 'uint32_t as::RTC::getCurrentMillis()':
/AlarmClock.h:224:13: error: 'TCNT2' was not declared in this scope
     return (TCNT2 * 1000) / 255;
             ^~~~~
/AlarmClock.h:224:13: note: suggested alternative: 'TCNT0'
     return (TCNT2 * 1000) / 255;
             ^~~~~
             TCNT0
/AlarmClock.h: In member function 'uint32_t as::RTC::getCounter(bool)':
/AlarmClock.h:235:28: error: 'TCNT2' was not declared in this scope
     return (256 * ovrfl) + TCNT2;
                            ^~~~~
/AlarmClock.h:235:28: note: suggested alternative: 'TCNT0'
     return (256 * ovrfl) + TCNT2;
                            ^~~~~
                            TCNT0


/Activity.h: In static member function 'static void as::Idle<ENABLETIMER2, ENABLEADC>::waitSerial()':
/Activity.h:28:16: error: 'UCSR0A' was not declared in this scope
       while (!(UCSR0A & (1 << UDRE0))) {  // Wait for empty transmit buffer
                ^~~~~~
/Activity.h:28:16: note: suggested alternative: 'UCSR1A'
       while (!(UCSR0A & (1 << UDRE0))) {  // Wait for empty transmit buffer
                ^~~~~~
                UCSR1A
/Activity.h:28:31: error: 'UDRE0' was not declared in this scope
       while (!(UCSR0A & (1 << UDRE0))) {  // Wait for empty transmit buffer
                               ^~~~~
/Activity.h:28:31: note: suggested alternative: 'UDRE1'
       while (!(UCSR0A & (1 << UDRE0))) {  // Wait for empty transmit buffer
                               ^~~~~
                               UDRE1
/Activity.h:29:24: error: 'TXC0' was not declared in this scope
         UCSR0A |= 1 << TXC0;  // mark transmission not complete
                        ^~~~
/Activity.h:29:24: note: suggested alternative: 'TXC1'
         UCSR0A |= 1 << TXC0;  // mark transmission not complete
                        ^~~~
                        TXC1
/Activity.h:31:16: error: 'UCSR0A' was not declared in this scope
       while (!(UCSR0A & (1 << TXC0)));   // Wait for the transmission to complete
                ^~~~~~
/Activity.h:31:16: note: suggested alternative: 'UCSR1A'
       while (!(UCSR0A & (1 << TXC0)));   // Wait for the transmission to complete
                ^~~~~~
                UCSR1A
/Activity.h:31:31: error: 'TXC0' was not declared in this scope
       while (!(UCSR0A & (1 << TXC0)));   // Wait for the transmission to complete
                               ^~~~
/Activity.h:31:31: note: suggested alternative: 'TXC1'
       while (!(UCSR0A & (1 << TXC0)));   // Wait for the transmission to complete
                               ^~~~
                               TXC1
                               
Die Fehler von der LowPower und Serial lassen wir erstmal außen vor.
Ich kenn mich da aber trotzdem absolut nicht aus mit dem Timerzeugs.
Aber vielleicht ein anderer!?

Lohnt sich der Umbau-Aufwand auf 32U4?

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

TomMajor
Beiträge: 1793
Registriert: 30.08.2017, 23:25
Hat sich bedankt: 175 Mal
Danksagung erhalten: 399 Mal
Kontaktdaten:

Re: AskSin Analyzer XS - Der Analyzer als Desktop-App ohne ESP

Beitrag von TomMajor » 07.04.2020, 19:44

Timer2 gibts beim U4 nicht, dafür Timer3 und 4.
Sieht auf den ersten Blick nach einigem Aufwand aus, die Lib für den U4 zu portieren :roll:
Viele Grüße,
Tom

Antworten

Zurück zu „Hardwareentwicklung und Selbstbau von Aktoren und Sensoren“