CAN Haus-Bus TFT Touch - Display, erste Versuche..

Die Mikroe-Leute hatten am Wochende ihr neues Visual TFT Tool und den neuen PIC32 Basic Compiler freigegeben.

Da ich, für meine CAN - Hausbus Geschichte, schon einen Touchsreen benutzt hatte, war es für mich klar, mit dem PIC32 - Prozessor und dem TFT-Touchdisplay auch so etwas „in Farbe“ haben zu wollen.

Das wackelige Video zeigt meine ersten Schritte und belegt, bis jetzt, knapp 15% des Speichers vom Prozessor.

Man kann sich ausmalen, dass es noch viele Untermenues mit Bildern und Variablen geben kann.

Im Endausbau soll es CAN und Ethernet können, RS232 und USB / HID könnte es mit dem jetzt benutztem Prozessor (PIC32MX460F512L) schon jetzt.

Handy - Wackel CAM, guggst du hier:

TFT - Touchscreen Display betüddel Video

Gruß Helmut

datum_uhrzeit.jpg

Demo_.jpg

Abgesehen von dem Gewackel, sah das schon recht stylig aus. Hab mal ein „Gefällt mir“ gegeben.

Darf man fragen mit was du die Hintergrundbilder gemacht hast?

Hallo,
die Bilder sind mit Sweethome, einem Freewareprogramm, empfohlen von Berndj, gemacht.

Die gehen noch besser, aber für’n ersten Test… das Obergeschoss ist auch schon besser geworden.

Diese TFT-Display sind schön klein, kosten nicht viel und die Leistung dieser PIC32 Prozessoren ist echt der Hammer.

Die haben ROM und RAM zum Abwinken, bei 80Mhz.

Diese TFT’s an der Haustür und/oder im Schlafzimmer nur als Überblick und zum schnellen Abschalten, echt geil.

Als Überblick was noch „AN“ ist, oder zum „Scharfmachen“ der Überwachung…

Gruß Helmut
PS: das Gewackel: mit links gefilmt, mit rechts betüddelt…

Hi Helmut,

ich hab mir den PIC32MX795F512L vorgenommen, weil er bereits alles „on Board“ hat.

Kurzerhand das PIC32MX7 Board geordert und dann festgestellt: das kann man nicht mit dem OnBoard Programmer des LV32MX V6 Entwicklungsboards proggen (für dieses Board gibt es aber CPU Karten mit der o.g. CPU), nein, dafür benötigt man noch den ICD3 aus dem Hause Microchip. Nochmal 200 Ocken weg.

Dann die Software mit weiteren 250 USD; wer in dieser Liga mitspielen möchte sei gewarnt, die Investition hat es in sich…, aber das Ergebnis auch.

Welches Displaymodul setzt Du ein?

mfg

Bernd

PS: die ersten Versuche mit dem MX7 verliefen bei der sehr bescheidenen Doku frustrierend; Workshop zum Thema wäre schön.

Hallo Bernd,
hätten wir mal drüber plaudern sollen.

Ich habe die China-Version vom ICD3 (ca. 30 Teuronen) und das MX4 TFT-Board (99 Dollar plus Versand) in dem aP Gehäuse.

Paßt fast, etwas am Rand weg gefeilt und rein gedrückt.

Wenn mikroe den PIC32-Compiler mit einer JPEG-MMC/SD-Nachladefunktion ausrüstet, dann wäre der 32er die EierlegendeWollmilchSau.

Mit dem 795er bin ich gerade am Tüddeln, zwecks CAN und Ethernet-Anbindung.
CAN - Beispiel läuft schon, Ethernet noch nicht angefangen.

Habe einen 795 von ähnlich diesem hier mit dem TFT-Protoboard und einem CAN-treiber verschaltet zum Testen. Nun ist Ethernet noch dran.

Wenn das läuft, dann versuche ich den Prozessor vom MX4-Board ab zu löten und den 795 drauf zu löten. Der Rest Huckepack, aber einseitig.

Warum? Das Board paßt so schön ins Gehäuse und hat SD/MMC drauf.

Wenn ich eine Platine davon route, wird’s nicht viel billiger weil 2-seitig.

Bin aber gerade mit einer Heizungsregelung am tüddeln.
Kannst du auf meinem WWW sehen.

Aber, da muß ich dir Recht geben: 32er-Compiler 130,- , Visual-TFT 70,- das Board 100,- 795er 35,- ICD3 35,-.
Da kommt was zusammen. Aber, das ist eine andere Liga!
Rom Ram zum abwinken.

Der Touchscreen hat jetzt ca 45% belegt.

Die betatschten Ringe könnten Abläufe über CAN, Ethernet, Baumarkt-Funksteckdosen, RS232 usw. quasi gleichzeitig auslösen.

Inzwischen läuft das Aufspielen mit einem Bootlader.

Wenn die SD/MMC-Anbindung läuft, dann könnte eine universal Steuerung rein und die Bilder und Parameter kommen über Daten aus der Karte.

PS: Wenn du bei Mikroe bestellst, immer den Discountpreis anklicken, auch wenn du noch kein Kunde bist oder warst.
Es sei denn es ist ein Angebot, so wie bei Einführung von Visual-TFT und dem 32er-Compiler.

Hast du den MikroeBootlader drauf? Wenn ja schicke ich dir mal das Hex-File.
Gruß Helmut

Bin ja voll begeistert. Aber leider bin ich mir sicher, dass ich sowas (noch) nicht programmiert kriege, auch wenn ich mir die Teile dafür zulege. Wo kann ich denn mal nachlesen bzw. anfangen, damit ich irgendwann mal hier mitreden kann?
so long, Sven

Hallo Sven,
ich behaupte: wer ein wenig hier programmieren (PHP) kann, der kann auch so etwas.
Nur ist doch eine gewisse Investition, wie beschrieben, notwendig.

Um ein wenig zu schnüffeln, kann man(n) sich beide Demoversionen hier und hier kostenlos downladen.

Die Visual-TFT-Soft und den Basic32-Compiler installieren.
Kann natürlich auch der Pascal oder C -Compiler sein.

Visual TFT starten, in der Preference das Zielsystem (bei mir das mikroMMB for PIC32 Board) und den Compiler einstellen und den/die Screen(s) erstellen.

Wenn man so einen Roundbutton gebastelt hat, dann gibt es unten OnClick.
Da ein Doppelklick drauf und das TFT-Tool erzeugt das Gerüst einer Ereignisschleife.

Die muß man mit dem Code programmieren, was dann da passieren soll.
Das nimmt einem das Tool nicht ab.

Schaut dir mal das Alhambra-Beispiel von mir hier an, nur das was in der Ereignisschleife steht, habe ich selbst erstellen müssen.

Alles andere: die Parameter für die Pin’s des Display, die Schriftfarbe usw wird vom Visual-TFT-Tool auf den / zum Compilercode gemacht.

Hier der EventCode.

module Alhambra_events_code

include Alhambra_objects
include Alhambra_resources

sub procedure FernlichtClick()
sub procedure Blinker_anClick()
sub procedure AbBlendlichtClick()
sub procedure JoschiClick()
'--------------------- Externals ---------------------'
dim Alhambra_Bild as TImage external
dim Alhambra_FL as TImage external
dim Alhambra_BLi as TImage external
dim Alhambra_AbBl as TImage external
dim Fernlicht as TButton_Round external
dim Fernlicht_Caption as string[9] external
dim Blinker_an as TButton_Round external
dim Blinker_an_Caption as string[7] external
dim AbBlendlicht as TButton_Round external
dim AbBlendlicht_Caption as string[11] external
dim Image1 as TImage external
dim Joschi as TButton_Round external
dim Joschi_Caption as string[6] external
dim Screen1           as TScreen external
sub procedure DrawScreen(dim aScreen as ^TScreen) external
sub procedure DrawRoundButton(dim Around_button as ^TButton_Round) external
sub procedure DrawImage(dim Aimage as ^TImage) external
'----------------- End of Externals ------------------'

'-------------- User code declarations ---------------'
'-------------- User code declarations ---------------'
dim _image, _label as bit
sub procedure Start_screen()



implements

'--------------------- User code ---------------------'
'----------- End of User code declarations -----------'

implements

'--------------------- User code ---------------------'
'----------- End of User code declarations -----------'

implements

'--------------------- User code ---------------------'
'----------- End of User code declarations -----------'
 sub procedure Start_screen()
  _image = 1
  _label = 1
end sub
'----------- End of User code declarations -----------'

'----------------- End of User code ------------------'

' Event Handlers


sub procedure Blinker_anClick()
  Alhambra_BLi.Visible.0 = not Alhambra_BLi.Visible.0
  select case Alhambra_BLi.Visible
    case 0
      'strcpy(Blinker_an.Caption, "Show")
      Alhambra_BLi.Visible = 0
      DrawImage(@Alhambra_BLi)
      drawImage(@Alhambra_Bild)
      DrawRoundButton(@Blinker_an)
      DrawRoundButton(@Fernlicht)
      DrawRoundButton(@AbBlendlicht)
      DrawRoundButton(@Joschi)
    case 1
      'strcpy(Blinker_an.Caption, "Hide")
      Alhambra_BLi.Visible = 1
      drawImage(@Alhambra_Bild)
      DrawImage(@Alhambra_BLi)
      DrawRoundButton(@Blinker_an)
      DrawRoundButton(@Fernlicht)
      DrawRoundButton(@AbBlendlicht)
      DrawRoundButton(@Joschi)
      
  end select

 ' von Helmut
  'Bli.0 = Not Bli.0 '  1' not (Alhambra_BLi.Visible)                   '1
    'delay_ms(200)
  DrawImage(@Alhambra_BLi)
  'drawImage(@Alhambra_Bild)
  'delay_ms(500)
end sub

sub procedure FernlichtClick()
  Alhambra_FL.Visible.0 =   1 'not Alhambra_FL.Visible
  DrawImage(@Alhambra_FL)
end sub

sub procedure AbBlendlichtClick()
  Alhambra_AbBL.Visible.0 =1
  DrawImage(@Alhambra_AbBl)
end sub

sub procedure JoschiClick()
 Image1.Visible.0 = 1 '             = Not Image1.Visible ' 1
 DrawImage(@Image1)
end sub

end.

Naja, soll es elektrische Anbindungen zu irgendwas haben, muß man davon was verstehen.

Überhaupt, wenn man Anfänger ist: eine LED blinken lassen, dann eine Softwareuhr programmieren.

Niemals gleich mit einer ABS für ein Auto anfangen -----> damit bekommt man Frust.
Ist ein wenig offTopic.

Gruß Helmut

aha - das scheint ja doch soweit ganz überschaubar. Was ich nocht nicht versthe: wie bekomm ich das Teil mit IPS zusammen? Meine erste Idee wäre jetzt, das ganze WLAN-fähig zu machen. Aber OneWire könnte ich für zwei TFTs verlegen notfalls auch verlegen. Werd mich morgen in Ruhe mit Deinen Links auseinandersetzten. Vielen Dank für die schnelle Antwort
so long, Sven

Hi,

die Verbindung der Module untereinander ist geplant per CAN Bus und die Anbindung an IPS:

da steht Dir die volle Breite an Schnittstellen des Controllers zur Verfügung:

seriell, USB, Ethernet

alle haben Vor- und Nachteile.

mfg

BerndJ

Am einfachsten mit einem Funk-RS232 Transceiver, gibt es in 3,3Volt von Aurel.
Das Gleiche auf der PC-Seite und mit Com-Schnittstelle und Cutter die Daten rein und raus.

Man(n) macht sich zB TFT-Taster, bei mir mit den Ringen im Bild.
Die Taster toggeln je ein Bit eine Wordvariable (16Bit). Diese Wordvariable überträgt man(n) dann per Funk an IPS.

IPS kann auch eine Wordvariable an das TFT-Display per Funk_RS232 an das TFT-Display schicken.

Die Bit`s der Wordvariablen muß man(n) dann auswerten und die Darstellung im Display danach ändern.
Damit es alles wieder synchron wird.

Schon hat man eine bidirektionale Geschichte.

Bei den 18B20 muß ich erst noch feststellen, ob ich die Sensoren mit dem 3,3Volt System überhaupt abfragen kann.

Überhaupt, ich habe nicht immer Zeit, immermal was anderes vor.

Den CAN-Bus habe ich unter 2 solcher PIC32 zum laufen bekommen, aber noch nicht an meinem CAN-Hausbus…

So einfach ist es alles dann doch nicht…

Deshalb: überlege dir so etwas gut, eine Scheidung wegen Unaufmerksamkeit, keine Freunde, außer im IPS-Forum, wegen fehlendem sozialen Verhalten könnte die Folge sein. :eek:

Gruß Helmut

Danke. Und danke für die Warnung. Ich werd versuchen, das Ganze so unauffällig wie möglich im hintersten Eckchen und nur nachts, wennn alles schläft zu basteln.
grüße, Sven

Wenn du willst, lasse ich dir mal ein Beispielprojekt, Alhambra oder Video auf Youtube: Regler, zu kommen.

Wirst du sicher auch mit der Demo laden können. Bearbeiten wohl nicht.
Aber zum Ansehen gut genug
Gruß Helmut

Ich habe mein TouchTFT jetzt mal auf einem Board laufen, dass auch Ethernet kann.

Mit dem ein wenig umgestrickten HTML-Code werden nun alle 48 möglichen Schalter auch im Ethernet schaltbar.

Nun ist das Beispiel mit allen 48 Schaltern, von der Ansicht nur sichtbar, wenn man es scrollt.

Ich hätte die gerne neben einander.

Könnte jemand mir mal helfen? Ich habe von HTML NULL Ahnung.

Schön wäre es auch, wenn ich ein gleiches Hintergrundbild wie auf dem TouchTFT auch im Internet sichtbar machen könnte.

Das TFT ist bei Youtube zwar mit 'ner alten Darstellung zu sehen, hatte da aber auch schon die 48 Möglichkeiten.

Anbei mein HTML-Code.

Gruß Helmut

Edit: die Schalter sind in diesem Videobesser zu sehen.

192_168_20_60.zip (665 Bytes)

Hi Helmut,

innerhalb Deiner for next Schleife:

nimm mehrere /TD = Table Data hintereinander, und nur am Anfang und Ende ein umschliessendes /TR, dann stehen diese in einer Zeile.

Natürlich musst Du dann die Sprungweite der for next anpassen.

Geht das überhaupt mit dem Modul?, ´nen passenden HTML Befehl gibt es, hab ich aber auf die schnelle nicht zur Hand.

mfg

Bernd

PS:

könntest Du mir Deinen Projektcode zukommen lassen, dann probier ich ein wenig mit rum.

Hallo Bernd,
Bild laden mit Hilfe einer im Code angegebenen URL sollte gehen, denke ich.

Wir hatten im IPS Headquarter darüber geplaudert:

Habe von 2 Mikroe TFT’s MMB wegen der fehlender CAN-Funktion den Prozessor runter geholt, einen PIC32MX795 drauf gesetzt.

Das war der Hammer: einen 100poligen Chip runter und wieder drauf löten…
und Das zweimal…

Dann ein Board mit Ethernet vom Abverkauf der alten Version von Tigal gekauft um einen CAN-Chip mit Ethernet zu haben :wink:

Den Code schicke ich dir heute Abend.

Aber zurück zum HTML-Code, kannst du mal einen Code als Beispiel machen?

Gruß Helmut

Edit: Bin mit den Bildern und Schaltungen im Browser schon weiter, was fehlt sind noch die Rückmeldungen im Browser.
Passwortvergabe wäre auch schön…

Anbei der Code, mit dem ich die Bilder in den Browser bekomme.

Sieht im Browser genauso aus wie auf meinen CAN-Bus-Touch-TFT.

Wenn man mit der Mouse über die Touch-Ringe hält, dann sieht man die 192.168-er Toogle-Adressen.

Die URL der Bilder liegen später im WWW, bekommen also 'ne WWW-Adresse zum Aufrufen.

Jetzt fehlt mir noch eine graphische Rückmeldung der Zustände, möglichst genauso knapp im Code, schön wären wieder Ringe…

Kann jemand HTML-technisch helfen?

Edit:
So, HTML - technisch kann ich, Dank an Mario, alle 48 (ich brauche weniger) Verbraucher über die „Ringe“ schalten,
dabei kann ich auch verschiedene Browsergrößen haben, an der Rückmeldung bin ich auch dran.
Ist jedoch nicht grafisch.

Gruß Helmut

Helmut.zip (201 KB)

Ich möchte die Variable t1 bis t48 in Abhängigkeit von der Variablen PortD (bitweise) auf „On“ oder „Off“ schreiben lassen.

Also nach diesen Gedanken:
Ist Bit PortD.0 =1 dann ist <div id=„t1“<ON</div>

else <div id=„t1“<Off</div>

bis <div id=„t48“<Off</div>

edit: problem gelöst:

<div id = "t ‚+i+‘ "<ON</div>

Gruß Helmut

Gruß Helmut