wie fange ich an... für ein Bastelprojekt möchte ich an einem CYD (Cheap Yellow Display JC2432W328C) mit kapazitivem Touchpanel eine Berührungssperre bauen. Das Touchpanel hat 6 Kontakte und ich möchte das mit nur einem Taster machen (im besten Fall ein Kontakt, der auf GND zieht, wenn er betätigt wird). Ohne Betätigung soll das Touchpanel inaktiv sein, bei gedrücktem Taster soll es funktionieren, also Taster gedrückt = alle 6 Kontakte verbunden.
Nun habe ich schon versucht, nur den GND-Pin vom Flachbandkabel des Touchpanels zu trennen (das wäre meine liebste Lösung gewesen, weil dann keine weitere Schaltung außer dem Taster selbst nötig gewesen wäre). Dabei bleibt das Panel allerdings leider aktiv. Ziehe ich das ganze Folienkabel, deaktiviert sich das Panel - ich arbeite also an der richtigen Stelle.
Nun hat der FPC-Connector ja 6 Pins. Ich überlege, einfach alle 6 Pins zu schalten, möchte das aber nur mit einem Taster machen und habe keinen Platz für einen riesigen 6UM-Taster. Da dachte ich an ein sehr kleines Relais mit 6 Kontakten, aber das zeiht für meine Anwendung zu viel Strom, schätze ich. Apropos Strom: Das kapazitive Touchpanel wird sicher auch nur mit dehr kleinen Strömen in den Signalleitungen arbeiten. Die zu schaltenden Kontakte müssen also nur wenige µA abkönnen. Gibt es eine elektronische Lösung mit wenig Stromverbraucht auf 5V-Spannungsniveau, mit dem ich mir da behelfen kann?
Bin absoluter Elektroniklaie und kann nur nach vorgefertigten Schaltplänen Platinen ätzen/fräsen und bestücken. Entwerfen kann ich die Schaltungen nicht. Macht man sowas mit Optokopplern? Vielleicht kann ich auch fertige Module dafür einsetzen (gibt ja Optokopplerbausteine mit 1,2,4,8,... Schaltkontakten). Oder geht da der Einsatz von Reedrelais - gibt es die mir 8 oder mehr Kontakten?
Software ist leider keine Lösung - ich habe keine io mehr frei am CYD.
Dann beschaff Dir das Datenblatt des Bausteins, der das Touchpanel abfragt, und finde raus, ob der irgendeinen Enable-Eingang hat, oder ob man das Interface zwischen diesem Baustein und dem ESP32 abklemmen kann.
Dann beschaff Dir das Datenblatt des Bausteins, der das Touchpanel
abfragt, und finde raus, ob der irgendeinen Enable-Eingang hat, oder ob
man das Interface zwischen diesem Baustein und dem ESP32 abklemmen kann.
Das Ding kommt aus China. dazu haben schon viele Leute Supportanfragen gestellt und keine Antwort erhalten.
Optokoppler sind wohl keine gute Idee? Oder Photomos oder Reedrelais?
Hier der Schaltplan.
https://oshwlab.com/mariusmym/esp32_cyd_cheap_yellow_display
Das Display auf dem Board ist ein Ili-9341 oder kompatibel. Das Touchpanel ist resistiv und nicht kapazitiv.
Das Panel hat eine schaltbare Hintergrundbeleuchtung. Die könntest du also auch verwenden. Ist zwar nicht ganz aus aber immerhin schon dunkel.
Ich habe ein CYD mit kapazitivem Touch. Es ist das JC2432W328C. Die Pins von der RGB-LED sind bereits aufgebraucht und werden anderweitig verwendet.
Es geht mir nicht darum, das Display auszuschalten, sondern nur das Touchinterface. Also ich möchte unterbinden, dass versehentlich ein Touchinput generiert wird, ohne dass der Taster gedrückt gehalten wird.
Chip Select des Touch Interface auf inaktiv ziehen, also auf High halten. Pullup direkt am XPT Chip installieren und per Taster die Leitung zum MC mit dem Taster unterbrechen. Musst halt ausprobieren, ob die Software meutert.
Der ESP32 wird den CS vom Touch IC steuern, alles andere macht ja keinen Sinn. Kannst du mit einem Osci messen sofern du einen hast.
Dann Leitung auftrennen und schaltbar machen. Da du keinerlei Elektronik Kenntnisse hast wird selbst so etwas schwieriger werden.
Wie weit reicht dein Veständnis / Fähigkeiten? traust du dir zu die Leitung aufzutrennen? und Tests durchzuführen? also die Verbinding zwischen ESP32 und dem Touch controller auftrennen wäre mal der erste Schritt.
Jetzt wo ich die Leitung gekappt habe, könnte ich messen. Laufe ich Gefahr, am ESP32 was zu zerstören, wenn ich ein Multimeter im Laufenden Betrieb an GPIO33 halte?
Nein, kannst du messen, ist aber bei einem DMM eher unsinnig. Was soll der Messwert dir sagen?
Also, wenn PIN 33 abgetrennt ist dann sollte das andere Ende der Leitung am Touch IC enden. Der Pin sollte jetzt spannungsfrei sein. Legst du diese CS Leitung auf 1 dann darf kein Touch mehr funktionieren.
Hast du Grundlagenwissen von irgendetwas im Bereich Elektronik oder
Informatik?
Elektrik geht, in Elektronik und Informatik bin ich eine Niete.
Mit der Frage, was die 1 bedeutet ging es mir darum, ob ich 5V oder 3,3V nehme. Dass logisch 0 = GND ist und logisch 1 = 3,3V oder 5V wusste ich. In der TTL ist doch die 0 unter 1V und die 1 über 3V oder so ähnlich. Da wären ja auch 5V in Frage gekommen.
Wie hast du es geschafft alle GPIOs zu verwenden? Evtl. gibt es da einen
Ansatz das ganze Konzept zu überdenken.
Das Projekt baue ich einfach nach und versuche es um eine Tasten- und Displaysperre zu erweitern. Am CYD sind kaum GPIOs ungenutzt, sodass ich da keine Wahl habe.
Mit der Frage, was die 1 bedeutet ging es mir darum, ob ich 5V oder 3,3V
nehme. Dass logisch 0 = GND ist und logisch 1 = 3,3V oder 5V wusste ich.
In der TTL ist doch die 0 unter 1V und die 1 über 3V oder so ähnlich. Da
wären ja auch 5V in Frage gekommen.
Dann Frage dich, mit welcher Betriebsspannung arbeitet der ESP bzw. der Touchcontroller -> Datenblatt oder Schaltplan vom CYD schauen und was Pull-up /-down Widerstände sind.
Am CYD sind kaum GPIOs ungenutzt, sodass ich
da keine Wahl habe.
Kaum heißt nicht keine. Was jetzt?
So wie MB fragt gehe ich davon aus, dass er die Software nicht ändern kann. Es ist also egal, ob GPIOs frei sind oder nicht. Der Taster soll dann wohl direkt mit dem Touch-CS verbunden werden.
Am CYD sind kaum GPIOs ungenutzt, sodass ich
da keine Wahl habe.
Kaum heißt nicht keine. Was jetzt?
So wie MB fragt gehe ich davon aus, dass er die Software nicht ändern
kann. Es ist also egal, ob GPIOs frei sind oder nicht. Der Taster soll
dann wohl direkt mit dem Touch-CS verbunden werden.
Ja, ich habe keine Ahnung von der Software (bei mir langt es nur zum flashen).
Ist halt die Frage was das Programm bzw der Touch Treiber macht wenn er
nach Auftrennung nur Nullen oder Einsen bekommt.
Deswegen hatte ich gehofft, dass nach Auftrennen der GPIO33 das Touchpanel schon deaktiviert ist und beim Verbinden per Taster einfach wieder mit mir spricht, aber nach Auftrennen geht es ja trotzdem noch.
Wie dem auch sein: Heute Abend teste ich mal was passiert, wenn ich den Touch_CS mit 0 oder 1 verbinde.
Ist halt die Frage was das Programm bzw der Touch Treiber macht wenn er
nach Auftrennung nur Nullen oder Einsen bekommt.
Deswegen hatte ich gehofft, dass nach Auftrennen der GPIO33 das
Touchpanel schon deaktiviert ist und beim Verbinden per Taster einfach
wieder mit mir spricht, aber nach Auftrennen geht es ja trotzdem noch.
Wie dem auch sein: Heute Abend teste ich mal was passiert, wenn ich den
Touch_CS mit 0 oder 1 verbinde.
Das ist auch der wesentliche Test. Chip Select CS meint eben der Touch Baustein ist an oder aus.
Ich denke du hast recht. Leider habe ich kein Datenblatt für den Touch Controller gefunden.
Aber man findet bei den Code Beispielen:
1
#include<lvgl.h>
2
#include<TFT_eSPI.h>
3
#include"CST820.h"
4
#include<demos/lv_demos.h>
5
6
/*Bildschirmauflösung ändern*/
7
staticconstuint16_tscreenWidth=240;
8
staticconstuint16_tscreenHeight=320;
9
10
/*Touchscreen-Pins definieren*/
11
#define I2C_SDA 33
12
#define I2C_SCL 32
13
#define TP_RST 25
14
#define TP_INT 21
Footprint habe ich auch gefunden sofern es passt? Bild im Anhang.
Das ist ziemlich eindeutig I2C. Man könnte den Reset PIN versuchen oder ggfs die Interrupt Leitung unterbrechen sofern diese im Code ausgewertet wird.
In der Tabelle der Supported boards wird von einem CST816S als Touch
Controller geredet. Das wäre dann I2C, kein SPI!
Ich habe grad ein Foto vom Touch-Controller gemacht. Es handelt sich um einen CST820. Dazu habe ich gefunden:
"The touch controller is in fact a CST820 but this is upward compatible with the CST816S"
Sollte ich nun vor dem Hintergrund, dass er nicht über SPI, sondern über I2C kommuniziert, lieber auf 3,3V bzw. 0 V auf der gestern aufgetrennten Leiterbahn verzichten?
Das Pinout stimmt aber nicht. Auf dem Foto selbst sehe ich 6 PINs pro Seite, im PDF sind es 5.
Gesucht wird also der PIN Reset bzw. Interrupt vom CST820.
Sollte die Software in den Interrupt vom CST820 auswerten dann genügt es diese Leitung zu unterbrechen. Kein Interrupt sollte dann keine Touch Auswertung ergeben. 2te Möglichkeit der Reset PIN. Wenn der auf Reset steht sollte der Touch Baustein auch ohne Funktion sein. Datenblatt würde hoer helfen.
Sollte ich nun vor dem Hintergrund, dass er nicht über SPI,
sondern über
I2C kommuniziert, lieber auf 3,3V bzw. 0 V auf der gestern aufgetrennten
Leiterbahn verzichten?
Power on/Reset
The built-in power-on reset module will keep the chip in reset until the voltage is normal. When the voltage is lower than a certain threshold, the chip will also be reset. When the external reset pin RSTn is low, the whole chip will be reset. This pin has a built-in pull-up resistor and RC filter, and the built-in watchdog ensures the chip can return to normal operation within the specified time when an abnormal situation occurs.
Interrupt Mode
The touch chip only informs the host to read valid data through the IRQ pin when it detects a valid touch and needs to report it to the host, so as to improve the efficiency and reduce CPU load. The interrupt edge can be configured as a rising edge or a falling edge as needed.
The IRQ pin is also used to wake up the host when matching predefined gestures in standby mode.
Ist die Software geheim oder kann man da einen Blick reinwerfen?
Sollte ich nun vor dem Hintergrund, dass er nicht über SPI,
sondern über
I2C kommuniziert, lieber auf 3,3V bzw. 0 V auf der gestern aufgetrennten
Leiterbahn verzichten?
Ja.
Dann mache ich das Auftrennen von gestern lieber erstmal wieder rückgängig und den in Eigenregie aufgetrennten GND auch.
Ich habe gerade den Kontakt zum Ersteller der Firmware/Software herstellen können. Eventuell hilft er mir mit einem neuen Feature, was vermutlich viele andere Nutzer von dem Teil überzeugen würde.
Um das Thema abzuschließen, der Kopf des Projektes hat für mich eine Codeanpassung vorgenommen, die für mich passt (als Eingang wurde der GPIO vom Fotowiderstand genutzt).