Heiko Prüssing
Home
Projects
Blog
About
Sunny 64 - Ein Commodore 64 spricht mit SMA Wechselrichter (per Bluetooth)
2017-01-01
## What's that? Da ich für meine eigene private solare Wechselrichteranzeige auf dem Mac bzw. auf einem ATMega644-Prozessorboard bereits 2010 eine neue **Micro-Implementierung** des Kommunikationsprotokolls geschrieben hatte (komplette Neuentwicklung, nichts von SMA), hab ich mich dem Spass hingegeben, diese auf eine noch kleinere Maschine als dem ATMega644 (was Prozessorleistung angeht) zu portieren: Ein Commodore 64! Für die 650x Prozessoren gibt es den
C-Compiler CC65
, der hier auch Verwendung fand. Mit dem im Paket befindlichen AS65 kann man auch wenn nötig mit Assembler mixen. Nur noch ein wenig C-Code zusätzlich hinzugefügt und eine C64-Implementierung des SMAData2plus-Protokolls war 2011 fertig. Auf dem C64-Bildschirm sieht das dann am Ende so aus:
Der gelbe Chart wird übrigens mit 3 Sprites erzeugt! Zur Abfrage über Bluetooth wurde ein alter Bluetooth-Chip seriell an den C64 angeschlossen. Die C64 Schnittstelle lässt leider nur sehr bescheidene 1200 bzw. 2400 Baud zu (mit Tricks etwas mehr, vielleicht später), dennoch ist die Anzeige schnell genug. Zusätzlich steuert der C64 auch noch ein Matrix-Display an, dass per I2C-Bus (eine Schaltung am Kassettenport) angesteuert wird. Das sieht als Prototyp dann so aus (das C64-Mainboard liegt frei auf dem Tisch):
Aktuell hat das C64-Programm mit seriellen und i2c-Bus Diagnosefunktionen eine Groesse von ca. 115 Diskettenblocks (ca. 33 kb). Geschrieben in echtem "C" und etwas 6510-Assembler. Derzeit beschränke ich mich nur auf die Anzeige der aktuellen Messwerte und der Leistungshistorie der letzten 6 Stunden (wo soll er sie hinloggen, ins Internet auch schwierig zu übertragen).
Umgekehrt geht das auch: Der C64 ist sichtbar als Bluetooth-Gerät. Tja, wer hätte das mal gedacht....vor 30 Jahren...:-)
Das hier ist schlussendlich der sauber aufgebaute Bluetooth-Adapter am C64-Userport... (unten links ist übrigens die **SD-Karten-Floppy**. Es wenig Komfort muss ja auch mal sein.)
Nächste Stufe: Fertig gelötete Hardware, nun bereits ohne Steckboard. I2c-Bus-Interface am Kassettenport mit vernümpftigen Stecker statt angelötet, Bluetooth am Userport... ### Update 10.03.2012 Support für einen MOS6551 ACIA wurde hinzugefügt (komplett in 6510-Assembler). Damit kann man die Baudrate bis auf 19200 verwenden. Derzeit verwende ich diese Möglichkeit nur im VICE-Emulator, der die Hardware emulieren kann. Zusammen mit Hardware Handshake ist er jetzt sehr fix geworden. ### Update 12.03.2012 Die original Routinen für die RS232-Schnittstelle wurden durch neue ersetzt, mit denen es möglich ist, die Schnittstelle mit 2400 Baud zu betreiben. Durch dies und weitere Optimierungen kann der C64 die Momentanwerte des Wechselrichters in etwa **1 Sekunde** abfragen (das ist schneller als so manches mir bekannte Geräte/Software; und das mit einem Bruchteil der Ressourcen... :D ) ### Update 28.06.2017 Nach 5 Jahren und unzähligen kleinen Verbesserungen ist das Projekt in meinen C64 mit Acrylglasgehäuse umgezogen...
... und es gibt endlich ein Video: Das Flackern der Rahmenfarbe ist übrigens keine "Bildstörung" sondern eine "Debug-Option": Zu den Zeitpunkten, an denen die Farbe von gelb auf rot wechselt wird in der Interrupt Routine das nächste Bit der seriellen Kommunikation dekodiert. Der C64 hat keinen UART, er muss alles per Bitbanging machen! :)