Archiv für den Autor: marcus lausch

Atomstack A10 V2 50W Laser Graviermaschine 40x40cm

Ich habe mir einen Atomstack A10 V2 gekauft. Vom Aufbau her ist es super leicht, auch an der Qualität kann ich nichts aussetzen, wirklich alles sauber verarbeitet. Die Anleitung ist auch ok. Also wenn ich mich an einen i3 Prusa China klon erinnere, ist das hier ein Kinderspiel.

Aber meine Probleme begannen mit der Software.
Ich bin Linux-User, Microsoft kommt für mich nicht mehr infrage. Deshalb hatte ich die CNC schon auf FluidNC umgestellt.

Laut Atomstack werden LaserGRBL und LightBurn empfohlen.
Dies gilt für Windows-Benutzer, für Linux gibt es nur noch die Version 1.7 von LightBurn.
Neue Versionen werden für Linux nicht mehr veröffentlicht. Man kann sich mit der alten Version begnügen. Außerdem habe ich keine Lust auf diese blöde Lizenzierung.

LightBurn ist eine Windowsanwendung. Läuft über Mono/Wine auch auf Linux, aber ob Mono das so 1:1 wie Dot.Net macht, bezweifle ich und für mich ist das alles andere als eine saubere Lösung.

Es gibt auch eine APP für iOS/Android. Man muss sich mit dem Access Point verbinden. Das WLAN erstellt der Controller, es sollte ein SSID erscheinen, mit dem Namen „Engraver_xxxxx“, xxxx ist eine Nummer, die bei jedem anders ist. Das Passwort ist „12345678“.

Dann startet man die App, nur die will gleich Zugriffsberechtigung für „Lokales Netzwerk“ und „Ortungsdienst“. Ohne Ortung, lasst sich der A10 V2 nicht hinzufügen.
Also ab hier ist für mich Schluss, warum wollen die schon wieder wissen, wo meine Anlage steht.
App geschlossen und gelöscht. Dann habe ich nach einer Möglichkeit gesucht, die Firmware zu aktualisieren, in der Hoffnung, dass es besser wird. Hier kommt der nächste schlechte Witz, die Firmware ist nicht auffindbar. Man bedient sich hier schön am Open Source Code, kastriert dann die Firmware, damit man weitere Controller teuer verkaufen kann. Wo die gleiche Platine drauf ist, nur die Firmware etwas weniger kastriert ist. Am Deckel ist der zusätzliche Ausschnitt für das Kabel.
Und schon kann man wieder ca. 70 € verlangen.

Ab hier ist nun meine Schmerzgrenze überschritten und es muss FluidNC her.

Also wer das jetzt nachmacht, macht das auf eigenes Risiko.
Man kann hier die Maschine unbrauchbar machen!

Als ersten mache ich mal ein Backup der aktuellen Firmware.

Als Erstes holte ich mir ESPTOOL:

git clone https://github.com/espressif/esptool.git
cd esptool
pip3 install intelhex

Nun den ESP Flash speicher auslesen:

python3 esptool.py --port /dev/ttyUSB0 read_flash 0x00000 0x400000 a10v2_dump.bin

Der Hardwarecontoller ist ein „LS ESP32 V1.0“:

Befor ich den ESP komplett lösche und dann mit FluidNC bespiele, habe ich mich nochmal mit Engraver_xxxxx wlan verbunden und die Konfiguration vom Backend (Browser http://192.168.4.1) gesichert.

Für FluidNc muss man eine Config im Yaml Format erstellen. Da sind diese Parameter wichtig. Bei mir sieht es so aus:

  Label Value Unit Parameter Description
Set $0 microseconds Step pulse time Sets time length per step. Minimum 3usec.
Set $1 milliseconds Step idle delay Sets a short hold delay when stopping to let dynamics settle before disabling steppers. Value 255 keeps motors enabled with no delay.
Set $2 mask Step pulse invert Inverts the step signal. Set axis bit to invert (00000ZYX).
Set $3 mask Step direction invert Inverts the direction signal. Set axis bit to invert (00000ZYX).
Set $4 boolean Invert step enable pin Inverts the stepper driver enable pin signal.
Set $5 boolean Invert limit pins Inverts the all of the limit input pins.
Set $6 boolean Invert probe pin Inverts the probe input pin signal.
Set $10 mask Status report options Alters data included in status reports.
Set $11 mm Junction deviation Sets how fast Grbl travels through consecutive motions. Lower value slows it down.
Set $12 mm Arc tolerance Sets the G2 and G3 arc tracing accuracy based on radial error. Beware: A very small value may effect performance.
Set $13 boolean Report in inches Enables inch units when returning any position and rate value that is not a settings value.
Set $20 boolean Soft limits enable Enables soft limits checks within machine travel and sets alarm when exceeded. Requires homing.
Set $21 boolean Hard limits enable Enables hard limits. Immediately halts motion and throws an alarm when switch is triggered.
Set $22 boolean Homing cycle enable Enables homing cycle. Requires limit switches on all axes.
Set $23 mask Homing direction invert Homing searches for a switch in the positive direction. Set axis bit (00000ZYX) to search in negative direction.
Set $24 mm/min Homing locate feed rate Feed rate to slowly engage limit switch to determine its location accurately.
Set $25 mm/min Homing search seek rate Seek rate to quickly find the limit switch before the slower locating phase.
Set $26 milliseconds Homing switch debounce delay Sets a short delay between phases of homing cycle to let a switch debounce.
Set $27 mm Homing switch pull-off distance Retract distance after triggering switch to disengage it. Homing will fail if switch isn’t cleared.
Set $28      
Set $30 RPM Maximum spindle speed Maximum spindle speed. Sets PWM to 100% duty cycle.
Set $31 RPM Minimum spindle speed Minimum spindle speed. Sets PWM to 0.4% or lowest duty cycle.
Set $32 boolean Laser-mode enable Enables laser mode. Consecutive G1/2/3 commands will not halt when spindle speed is changed.
Set $41      
Set $47      
Set $46      
Set $102 steps/mm Z-axis travel resolution Z-axis travel resolution in steps per millimeter.
Set $101 steps/mm Y-axis travel resolution Y-axis travel resolution in steps per millimeter.
Set $45      
Set $44      
Set $43      
Set $42      
Set $50      
Set $40      
Set $100 steps/mm X-axis travel resolution X-axis travel resolution in steps per millimeter.
Set $103 steps/mm A-axis travel resolution A-axis travel resolution in steps per millimeter.
Set $104 steps/mm B-axis travel resolution B-axis travel resolution in steps per millimeter.
Set $105 steps/mm C-axis travel resolution C-axis travel resolution in steps per millimeter.
Set $110 mm/min X-axis maximum rate X-axis maximum rate. Used as G0 rapid rate.
Set $111 mm/min Y-axis maximum rate Y-axis maximum rate. Used as G0 rapid rate.
Set $112 mm/min Z-axis maximum rate Z-axis maximum rate. Used as G0 rapid rate.
Set $113 mm/min A-axis maximum rate A-axis maximum rate. Used as G0 rapid rate.
Set $114 mm/min B-axis maximum rate B-axis maximum rate. Used as G0 rapid rate.
Set $115 mm/min C-axis maximum rate C-axis maximum rate. Used as G0 rapid rate.
Set $120 mm/sec^2 X-axis acceleration X-axis acceleration. Used for motion planning to not exceed motor torque and lose steps.
Set $121 mm/sec^2 Y-axis acceleration Y-axis acceleration. Used for motion planning to not exceed motor torque and lose steps.
Set $122 mm/sec^2 Z-axis acceleration Z-axis acceleration. Used for motion planning to not exceed motor torque and lose steps.
Set $123 mm/sec^2 A-axis acceleration A-axis acceleration. Used for motion planning to not exceed motor torque and lose steps.
Set $124 mm/sec^2 B-axis acceleration B-axis acceleration. Used for motion planning to not exceed motor torque and lose steps.
Set $125 mm/sec^2 C-axis acceleration C-axis acceleration. Used for motion planning to not exceed motor torque and lose steps.
Set $130 mm X-axis maximum travel Maximum X-axis travel distance from homing switch. Determines valid machine space for soft-limits and homing search distances.
Set $131 mm Y-axis maximum travel Maximum Y-axis travel distance from homing switch. Determines valid machine space for soft-limits and homing search distances.
Set $132 mm Z-axis maximum travel Maximum Z-axis travel distance from homing switch. Determines valid machine space for soft-limits and homing search distances.
Set $133 mm A-axis maximum travel Maximum A-axis travel distance from homing switch. Determines valid machine space for soft-limits and homing search distances.
Set $134 mm B-axis maximum travel Maximum B-axis travel distance from homing switch. Determines valid machine space for soft-limits and homing search distances.
Set $135 mm C-axis maximum travel Maximum C-axis travel distance from homing switch. Determines valid machine space for soft-limits and homing search distances.

Board Version: MKS DLC32 V2.1
Firmware: V4.00(8M.H35.20230606)

Jetzt habe ich den FluidNC Web Installer (https://installer.fluidnc.com) verwendet, das geht mit einem Browser wie Chromium, mit Firefox geht es nicht.Anschließend muss ich mich mit dem FluidNC AP (eigenes WLAN) verbinden.

Dort muss man nun eine config.yaml hochladen. Meine config kann hier heruntergeladen werden, aber ihr müsst die Parameter anpassen. Auch hier übernehme ich keine Gewähr, dass es bei euch auch so funktioniert.

Atomstack_A10_V2_config.yaml

Als Software benutze ich jetzt Inkscape. Inkscape ist eine freie und plattformunabhängige Software. Ich erstelle also nur die Zeichnung und generiere den G-Code, lade ihn über das Web zu FluidNC, stelle die Startposition der Maschine über den Browser ein und schon kann es losgehen.

QTCreator .pro, .qbs oder CMakeLists.txt

Für QT gibt es ja eine Tutorials. Dort werden libraries genutzt die erst eingebunden werden müssen.
Je nach Tutorial ist dann von einer .pro, .qbs oder CMakeLists.txt die rede. Der anfänger kann dann pech haben und Grübeln, wenn es im Projekt gar keine .pro, … gibt.

Aber wiso ist das so?

Ich versuche, das mit einfachen Mitteln zu erklären. Beim Erstellen eines neuen Projekts muss man das „Build System“ auswählen.
Dort hat man mehrere Auswahlmöglichkeiten:

  • CMake
  • qmake
  • Qbs

Ein qmake-Projekt hat die .pro-Datei, qbs-Projekt will eine .qbs-Datei haben. Ein cmake-Projekt hat die Datei CMakeLists.txt.

CMake ist bei weitem das mächtigste Build-System. Die Syntax ist gelinde gesagt „nicht so schön“. Für einfache Projekte ist QMake schöner anzusehen und Anfänger werden mit QMake er glücklich.

Canon PowerShot SX540 HS lässt sich nicht einschalten

Ich habe von einem Kollegen eine Kamera Canon PowerShot SX540 HS erhalten, die sich nicht mehr einschalten ließ. Der Originalakku wurde aufgeladen und wieder eingesetzt, aber die Kamera funktionierte nicht mehr. Der Akku war aber in Ordnung, da die andere Kamera damit funktionierte. Der Kollege hatte das schon getestet, also lag es diesmal nicht am Akku.

Also habe ich den Akku und die SD-Karte rausgenommen und ein paar Mal auf den Einschaltknopf für ca. 30 Sekunden gedrückt. Dann habe ich die Kamera zur Seite gelegt und wieder 30 Sekunden gedrückt. Ich habe die Kamera ein paar Momente da liegen lassen, habe den akku wieder in die Kamera gesteckt und sie ist gestartet. Danach musste ich Datum und Uhrzeit neu einstellen.

Vielleicht hat jemand das gleiche Problem und kann mit den Tips etwas anfangen :-).

Stepcraft mit FluidNC betreiben

Die StepCraft ist eine erstklassige Wahl für Hobbyisten. Für die Stepcraft gibt es verschiedene CNC-Steuersoftware. Auf der Hauptplatine befindet sich ein Anschluss für die verschiedenen Steuerplatinen. Beim Kauf hatte ich ich mich für WinPC-NC D-Serie (USB) entschieden.
Es gibt aber auch noch UCCNC und und das Parallel-Modul OEM-Paket (Parallelschnittstelle).
Die Software WinPC-NC und UCCNC ist recht teuer und läuft nur unter Windows.
Windows ist aber der Hauptgrund, warum ich den WinPC-NC Controller nicht mehr nutzen möchte.
Es gibt aber auch noch EstlCam das mit Parallel-Modul funktioniert, hier stimmt der preis.
Leider aber auch nur unter Windows lauffähig.

Für Tüftler kein Problem! Man kann die Stepcraft mit Arduino (GRBL) steuern.
Für Arduino gibt es einige Anleitungen zur Verwendung mit Stepcraft. Für FluidNC habe ich nichts gefunden und musste mich selbst einarbeiten. Für mich hat es sich gelohnt, da ich jetzt nicht mehr an Microsoft gebunden bin. FluidNc benötigt nur WLAN und ein Gerät mit Browser. Das kann auch ein Smartphone sein.

Aktuell sieht der FluidNC Controller meiner Stepcraft 2 mit Performance Kit 840 so aus:

Bei der Stepcraft sind die Endschalter Z und X miteinander verbunden.Die habe ich jetzt getrennt. Das ist aber ziemlich aufwendig, denn am Ende hatte ich fast alles auseinandergenommen und war mir nicht sicher, ob ich es wieder hinbekomme.Es ist auch sehr wenig Platz für die zweite Endschalterleitung, aber es geht. Es sollte auch ohne diesen Umbau funktionieren, das ist das Schöne an FluidNC. Da es einfach über eine YAML Datei konfiguriert wird. Es ist aber ratsam lieber die X,Z Endschalter zu trennen, da man nur so sagen kann, ob jetzt X oder Z den Schalter auslöst.

Zum Schalten der Relais ist ein I2C-Pegelwandler erforderlich.Dies ist jedoch nur erforderlich, wenn eine Schalteinheit SE 2300 für externe Verbraucher verwendet wird, um den Staubsauger oder die Spinndüse automatisch zu starten.Das ESP32 hat ein Low-Pegel-Signal (3,3V), aber es wird ein High-Pegel-Signal (5V) benötigt. Das kann man auch selbst bauen, aber der Platz ist knapp, deshalb die fertige Lösung. Einfach nach einem „5V, 3.3V 4 Kanal Level Shifter“ suchen. Da die 5V vom ESP32 kommen, muss unbedingt eine Diode verwendet werden. Achte darauf, dass die USB 5V nicht überlastet wird. Zieh eine Diode in Betracht, die es ermöglicht, dass die 5V-Hauptspannung dich mit Strom versorgt, aber der USB-Anschluss kann den Rest des Controllers nicht versorgen. Zieh eine Diode in Betracht, die es ermöglicht, dass die 5V-Hauptspannung dich mit Strom versorgt, aber der USB-Anschluss kann den Rest des Controllers nicht versorgen.

Ein RC-Filter wird benötigt, um langsame Spannungsänderungen an den Prozessor weiterzuleiten. Dadurch werden schnelle Spannungsänderungen unterdrückt, da sonst z.B. ein Endschalter fälschlicherweise ausgelöst wird, obwohl der Schalter frei ist.

Auf der Hauptplatine müssen die Endschalter Y1 und Y2 mit Brücken versehen werden. Da bei der Stepcraft der Referenzschalter am Ende (Y-Achse) positiv ist und X und Z negativ. Die Endschalter werden nicht mehr auf der Hauptplatine, sondern am ESP32 angeschlossen. Dort sind jetzt alle Schalter positiv.

 

YAML Config:

Hier einige Erläuterungen, wie ich zu diesen Werten gekommen bin:

pulse_us:

pulse_us hat keinen Einfluss darauf, wie weit sich die Maschine bei jedem Schritt bewegt. Es steuert, wie lange jeder Schrittimpuls aktiv gehalten wird, bevor er in den inaktiven Zustand zurückkehrt, um den nächsten Schritt vorzubereiten. Einige alte Stepper-Treiber haben eine langsame Elektronik, die einen zu kurzen Schrittimpuls möglicherweise nicht bemerkt. Die meisten modernen Treiber können recht kurze Impulse „sehen“, aber es gibt auch einige alte Treiber, die einen Impuls erst nach 10 Mikrosekunden Länge bemerken.

steps_per_mm:

Laut Stepcraft Maschenenparameter hat die Achsauflösung 400 Schritte / Umdrehung und läuft in Halbschrittbetrieb. Also 400 Schritte / 1 Umdrehung x 1 Umdrehung/3mm

400/3 = 133,333333333

Also muss für jede Achse X,Y und Z bei steps_per_mm: 133.333333 angegeben werden.

relay:
direction_pin: NO_PIN
output_pin: gpio.22
enable_pin: NO_PIN
disable_with_s0: false
s0_with_disable: true
spinup_ms: 0
spindown_ms: 0
tool_num: 0
speed_map: 0=0.000% 0=100.000% 1=100.000%
off_on_alarm: false

Für die Schalteinheit für externe Verbraucher SE-2300. Damit wird die Frässpindel oder euer Staubsauge per G-Code ein/aus geschaltet

 

Adafruit Feather HUZZAH ESP8266

Ich habe hier 2 Adafruit Feather HUZZAH ESP8266, die sich nicht mehr über USB verbinden wollen.
Deshalb sollten sie entsorgt werden. Ich konnte nicht anders und habe sie mitgenommen.
Auch die Breakout Boards waren jeweils dabei. Leider passen nur die Adafruit Feather HUZZAH ESP8266 Boards da rein, wegen der Pinbelegung.

So sieht der Fehler bei mir unter Linux aus:

[249509.916569] usb 1-1: new full-speed USB device number 70 using xhci_hcd
[249510.048473] usb 1-1: device descriptor read/64, error -71
[249510.284623] usb 1-1: device descriptor read/64, error -71
[249510.524558] usb 1-1: new full-speed USB device number 71 using xhci_hcd
[249510.652614] usb 1-1: device descriptor read/64, error -71
[249510.888633] usb 1-1: device descriptor read/64, error -71
[249510.996660] usb usb1-port1: attempt power cycle
[249511.648534] usb 1-1: new full-speed USB device number 72 using xhci_hcd
[249511.648717] usb 1-1: Device not responding to setup address.
[249511.856388] usb 1-1: Device not responding to setup address.
[249512.064414] usb 1-1: device not accepting address 72, error -71
[249512.192544] usb 1-1: new full-speed USB device number 73 using xhci_hcd
[249512.192795] usb 1-1: Device not responding to setup address.
[249512.400631] usb 1-1: Device not responding to setup address.
[249512.612374] usb 1-1: device not accepting address 73, error -71
[249512.612609] usb usb1-port1: unable to enumerate USB device

Bei Windows steht im Geräte-Manager ein Ausrufezeichen bei USB Geräte da.

Jetzt kann man folgendes machen:

1. Teste verschiedene USB-Kabel und USB-Anschlüsse. Es gibt billige Kabel aus China, die keine Datenleitung haben und nur für die Stromversorgung gedacht sind.

2. Verbinde den GPIO0-Pin über einen 220-Ohm-Widerstand mit GND. Lasse ihn
angeschlossen, während des hochladens. Nach Upload den Wiederstand entfernen.
Möglicherweise auch RST und EN (CH_PD) miteinander verbinden, damit
damit dies funktioniert. Entferne die Verbindung, sobald der HUZZAH ESP8266l
programmiert wurde.

Wenn das alles nichts hilft, ist der USB-TTL-Umsetzer defekt. Dies kann bei falscher Verdrahtung passieren. Dann kann man einfach einen externen USB-TTL-Umsetzer an die Pins anschließen.

Verbinde den RX-Pin des USB-TTL-Wandlers mit dem TX-Pin des ESP8266 und den TX-Pin des USB-TTL-Wandlers mit dem RX-Pin des ESP8266. Verbinde den GND-Pin des USB-TTL-Wandlers mit dem GND-Pin des ESP8266.

Sicherstellen, dass die Spannungspegel des USB-TTL-Wandlers mit den Spannungspegeln des ESP8266 kompatibel sind.Wenn der Wandler also 3.3V hat, muss man auch den 3.3V Pin des ESP8266 verwenden. Wenn der TTL-Wandler nur 5V hat, muss man den USB-Pin verwenden, da dort aus den 5V ein Linearregler die 3.3V macht.Aus diesem Grund sollte man %v und 3.3V nicht verbinden!Aus diesem Grund sollte man nicht V und 3.3V verbinden!Aus diesem Grund sollte man nicht 5V und 3.3V verbinden!

Dann muss man aber auch GND und Pin 0 verbinden und den Reset-Knopf drücken. So konnte der ESP8266 bei mir wieder problemlos verwendet werden.

Öffne die Arduino-IDE. Wähle unter „Werkzeuge“ das richtige Board und den richtigen Port aus, der mit deinem USB-TTL-Wandler verbunden ist.

Sketch auf den ESP8266 hoch laden, indem du auf den Upload-Button klickst.

 

Hagebutte

Manche haben vielleicht auch Hagebutte im Garten und wissen nicht, was sie damit machen sollen. Das erlebe ich bei uns leider immer wieder, wenn ich gefragt werde, was ich mit der Ernte mache. Gerade mit der Hagebutte kann man sehr leckere Sachen machen. Mein absoluter Favorit ist Hagebuttenmarmelade. Das Beste daran ist, dass man mit der Hagebutte keine Arbeit hat und von Mitte Oktober bis Ende November ernten kann.

Auf unserem Hof haben wir 3 Hackfruchtpflanzen, da kann man schon einiges machen:

  1. Hagebuttentee: Die Hagebutten werden getrocknet und zu einem leckeren Tee aufgebrüht. Der Tee ist reich an Vitamin C und hat einen fruchtigen Geschmack.
  2. Hagebuttenmarmelade: Die Hagebutten werden gekocht und mit Zucker zu einer süßen Marmelade verarbeitet. Diese kann als Brotaufstrich oder zum Verfeinern von Desserts verwendet werden.
  3. Hagebuttenöl: Aus den Samen der Hagebutte kann durch Kaltpressung ein hochwertiges Öl gewonnen werden. Dieses Öl eignet sich gut für die Hautpflege und wird oft in Naturkosmetikprodukten verwendet.
  4. Hagebuttenpulver: Die getrockneten Hagebutten werden zu Pulver gemahlen und können als Nahrungsergänzungsmittel verwendet werden. Das Pulver enthält viele Vitamine und Mineralstoffe.
  5. Hagebuttenlikör: Die Hagebutten werden mit Alkohol angesetzt und nach einiger Zeit abgeseiht. Der Likör hat einen fruchtig-herben Geschmack und eignet sich gut als Digestif oder zum Mixen von Cocktails.

Rezept für Hagebuttenlikör:

Zutaten:

  • 500 g Hagebutten
  • 500 ml Wodka oder Korn
  • 250 g Zucker
  • 250 ml Wasser

Anleitung:

  1. Die Hagebutten gründlich waschen und die Stiele entfernen.
  2. Die Hagebutten halbieren und die Kerne entfernen.
  3. Die vorbereiteten Hagebutten in ein großes Einmachglas geben und mit dem Wodka oder Korn übergießen.
  4. Das Glas gut verschließen und an einem dunklen Ort für etwa 4 Wochen ziehen lassen.
  5. Nach der Ziehzeit den Likör durch ein feines Sieb abseihen, um die Hagebuttenreste zu entfernen.
  6. In einem Topf den Zucker mit dem Wasser aufkochen, bis sich der Zucker vollständig aufgelöst hat. Den Sirup abkühlen lassen.
  7. Den Sirup zum abgeseihten Likör hinzufügen und gut vermischen.
  8. Den fertigen Likör in Flaschen abfüllen und kühl lagern.

 

Rezept für Hagebuttenmarmelade:

Zutaten:

  • 1 kg Hagebutten
  • 500 g Gelierzucker (2:1)
  • Saft einer halben Zitrone
  • Optional: Vanillezucker oder Zimt für zusätzlichen Geschmack

Anleitung:

  1. Die Hagebutten gründlich waschen und die Stiele sowie Kerne entfernen.
  2. Die Hagebutten in einen Topf geben und mit etwas Wasser bedecken. Etwa 30 Minuten köcheln lassen, bis sie weich sind.
  3. Die Hagebutten durch ein Sieb passieren, um die Kerne zu entfernen und ein feines Mus zu erhalten.
  4. Das Hagebuttenmus zurück in den Topf geben und den Gelierzucker hinzufügen.
  5. Den Zitronensaft dazugeben und alles gut verrühren.
  6. Die Marmelade unter ständigem Rühren zum Kochen bringen und für ca. 4 Minuten sprudelnd kochen lassen.
  7. Die heiße Marmelade in Gläser füllen und verschließen.
  8. Die Gläser für 5 Minuten auf den Kopf stellen, damit sie luftdicht verschlossen werden.
  9. Die Hagebuttenmarmelade abkühlen lassen und genießen :-)!

 

DucoMon64

Wer etwas über Kryptowährungen lernen möchte, sollte sich mit dem Duino Coin beschäftigen. Duinocoin ist nicht wirklich zum Geldverdienen gedacht, man kann damit nicht reich werden. Mit duinocoin kann man ohne teure Geräte minen. Im Gegenteil, wer z.B. mit seinem Gaming-PC verwendet, wird schnell feststellen, dass Duinocoin energiesparende Geräte wie Arduino Nano, ESP32,.., bevorzugt. Das ist auch schon der erste Lerneffekt. Man auch die Stromkosten, die Anschaffungskosten, … berücksichtigen. Außerdem ist alles Open Source, so dass man auch einen Einblick in die Arbeitsweise der Miner bekommt.

DucoMon64 ist ein Monitorprogramm für den Commodore 64 (C64).
Mit dem Monitor ist es möglich, Miner, Balance, Statistik, … über den C64 abzufragen.
Eine Übertragung von Ducos zu einem anderen Konto ist damit nicht möglich und auch nicht geplant.

Für mich ist es nur Spaß und ich habe einen Einblick bekommen, wie Krypto funktioniert. Man hat auch kein Risiko mit der duinocoin. Denn bei anderen Kryptos muss man wirklich viel Geld investieren. Das ist hier nicht der Fall, man kann sich schnell z.B. einen alten Nintendo DSi nehmen und den Browser starten und schon geht es los.

Der C64 Code ist auf Github und ist auch Open Source:

https://github.com/paranoid64/DuinoMon64/tree/main

Zuerst braucht man ein Wallet.Bei Duinocoin gibt es nur ein Webwallet.Was ich nicht schlecht finde.Denn auch hier müsste man sich sonst eine Hardwarewallet kaufen oder wie es zum Beispiel bei Monero, Ravencoin,… eine Software Wallet verwenden.Da werden alle Transaktionen lokal gespeichert.Man ist also ständig am Synchronisieren und hat z.B. 13GB Daten auf seinem PC und die DB wird immer größer.

Hier geht es zur Webwallet:

https://wallet.duinocoin.com/

Bitte auch aufpassen, es gab schon einen Fall, bei dem die Webwallet gefälscht wurde. Also unbedingt auf die URL achten! Über die gefälschte Webseite wurden Login-Daten geklaut.

Dann brauchen wir natürlich auch einen Miner.

https://duinocoin.com/getting-started.html

Hier gibt es dazu eine sehr gute Hilfestellung. Leider ist das oft nicht der Fall, weil Lesen heute nicht mehr selbstverständlich ist und Jammern leichter fällt :-D.

Es wird viel Arbeit investiert, um alles auf dem neuesten Stand zu halten, und das Handbuch ist meiner Meinung nach wirklich sehr gut aufgebaut.

Und jetzt, wo du deine ersten Ducos verdient hast, kannst du auch einen Blick auf den DucoMon64 werfen:

DucoMon64 Miner Balance

Für DucoMon64 wird ein WIC64-Modul benötigt, oder wer keinen C64 hat, kann den Kernal64-Emulator verwenden.Dies ist zur Zeit der einzige Emulator, der auch das WIC64 emulieren kann.
Das war schon eine große Erleichterung bei der Entwicklung.

Download: Kernal64

Nach dem Start des Kernal64-Emulators muss man im Menü -> Einstellungen → I/O → WiC64 auswählen und die Emulation des WIC64 starten.
Ziehen Sie dann die Datei ducomon64.PRG in den Emulator.

Nachfolgend sind einige Befehle im Screenshot aufgeführt, die nicht mehr ganz aktuell sind. Inzwischen gibt es weitere Befehle.
DucoMon64 befehle

Hier nun alle Befehle:

BAL – Zeigt die BALANCE der Wallet an.
MIN – zeigt die MINER des Benutzers an.
STA – Zeigt die Statistik vom Duino-Coin Server an.
PRIPRICE (Preisübersicht)
SER – Zeigt die SERVER-Statistik an
DEVDEVICE (Geräte) Statiktik, mit welchen Geräten gemint wird.
TOPTOP10 Benutzer
BLO – zuletzt gefundene BLOCKS
SUSSUSPICIOUS (Dopple Benutzerkonten erkennen. Rot = ungeprüfte Accounts, Grün = überprüfte Accounts)
TRA – Die letzten 5 Transaktionen
HELHELP (Zeigt wieder dieses Menü an)
EXIExit

Videos:
https://www.youtube.com/watch?v=zbTtfpBlpeM

https://www.youtube.com/watch?v=SzSrBLyWWp4

Und wer Discord nutzt:

https://discord.com/invite/kvBkccy

 

C64 Programm ARD Tagesschau

Für die C64 Freunde ist das WiC64 Projekt nichts neues mehr.
Damit bringt man recht einfach den C64 ins Internet und das über WLAN!

Hier mein „ARD Tagesschau RSS“ für den C64.
Dies ist bereits im Wic64 Portal vorhanden.
Man kann dies aber auch als Stand-alone ausführen.
So funktioniert es auch ohne Anmeldung am Wic64 portal.

Die ARD Tageschau RSS:

ARD_Tagesschau

Quellcode liegt auf GitHub.

YouTube Demo: https://www.youtube.com/watch?v=0tEC8y20XpE

Der PHP Code:
Der PHP-Code bereitet den RSS Feed so vor, dass dies auf dem C64 (PETSCII) dargestellt werden kann.
Da die Anbieter meistens keine permanenten Abfragen gestatten, wird der Feed nur alle 30 min. aktualisiert.
Deshalb werden lauter Cachedateien erzeugt.

.htaccess:
Die Datei ist nötig, um die URL sauber zu umschreiben.
Ohne diese Datei würde die URL so ausesehen:

www.domain.tld/nm.php?v=1

Durch die htaccess Datei sieht es nun so aus:

www.domain.tld/m/1

Was das Ganze für die ASM Programmierung leichter macht, da man nur einen Buchstaben austauschen muss und am Schluss die Zahl.

ASM Code:
Der ASM Code ist der Teil für den C64. Hier wurde die Schrift verändert, damit Umlaute und Sonderzeichen dargestellt werden können.
Verwendet habe ich C64 Studio 7.0, damit kann der Code kompiliert werden.
Dies ist aber nicht nötig, da ich im Release das Fertige .prg ablege.

Ich bin gespannt, was es nur so an Programmen für den Wic64 geben wird.
Deshalb stelle ich den Quellcode frei zur Verfügung.

Es wäre auch noch sehr schön, dieses Programm auf einem VIC-20 zu sehen. Aber leider besitze ich noch kein VIC-20 und auch kein Wic20.
Das macht das Portieren für mich schwer.
Vielleicht findet sich ja jemand : ).

ATX Netzteil für den Robotron PC-1715 / PC-1715W

Aktuell besitze ich doch endlich einen Robotron PC-1715W. Leider ist der Monitor defekt (Zeilentrafo). Aber auch das Netzteil löst die Sicherung ständig aus. Seltsamerweise nicht sofort, sondern erst nach ca. 30 min. und das obwohl der PC aus ist und ein Stelltrenntrafo (für 220V) davor geschaltet ist.

Zuerst wollte ich mir das Netzteil anschauen. Nur die meisten Komponenten sind für 220V ausgelegt, das mir nicht so gefallen hat.

Also habe ich mir überlegt ein ATX Netzteil zu verwenden, denn die meisten benötigten Spannungen sind schon vorhanden.

Jetzt gleich ein wichtiger Hinweis!

Man kann das ATX Netzteil nicht direkt verwenden!
Es ist ein Umbau nötig!

!!! WICHTIGER SICHERHEITSHINWEIS !!!
Netzteilarbeiten dürfen nur von Fachleuten durchgeführt werden. Durch unsachgemäßes Hantieren mit geöffneten Schaltnetzteilen besteht LEBENSGEFAHR!

Der Umbau geschieht auf eigne Gefahr und ich übernehme keine Haftung und Garantie oder Sonstiges!


Folgende Probleme gibt es:

1. beim neueren ATX Standard gibt es die 5V N (- 5V) nicht mehr. (weißes Kabel)

2. für den Betrieb der Floppy sind Spannungszu- und -abschaltungen einzuhalten.

Beim Einschalten: erst 5V P, nach 3 sekunden 12v P

Beim Ausschalten: erst die 12V, dann die 5VP abschalten

3. ATX Power On. Das ATX Netzteil hat einen Standby-Stromverbrauch, wenn der Rechner nicht mit dem Hauptschalter direkt am Netzteil ausgeschaltet wird. Dieser Hauptschalter ist  jedoch nicht immer vorhanden.

Lösung für den fehlenden 5V negativ Pin:

Entweder ein altes ATX Netzteil suchen, wo noch das weiße Kabel vorhanden ist, oder mit einer einfachen Schaltung nachrüsten.

Ich hatte hier einen 7905CT. Anders als die 78XX, sind die aus der 79xx Serie Linearregler für Negativspannung. Das heißt nicht, dass man positive Spannung in Negative umwandelt.
NEen, das ist verkehrt. Es muss negative Spannung angelegt werden.

Also macht diese Schaltung nichts anderes, als aus den -12V die  -5V.

Also die Elkos sollten natürlich mindesten 16V vertragen und der 7905 Linarregler hat einen Kühlkörper bekommen. Da beim PC 1715W aber kaum Last dranhängt, ist der 7905 nicht mal warm geworden.

12V Einschaltverzögerung:

Hier meine 12V Einschaltverzögerung bis zu 16 A. Diese Schaltung verzögert die 12 V um 4 Sekunden. Laut der Robotron technischen Dokumentation sind nur 3 Sekunden notwendig. Aber da ich nur eine ganz simple Abschaltverzögerung habe, die beim Einschalten auch natürlich um paar Millisekunden verzögert, habe ich lieber eine Sekunde Reserve. Besser, als dass man den PC 1715W einschaltet und der dann mal bootet oder nicht. So funktioniert es zuverlässig.

5V Ausschaltverzögrung:

Die einfachste Art ist es, einen Elko zu verwenden. Hier ist keine komplexe Schaltung nötig. Durch das Relais in der Einschaltverzögerung wird die 12V Leitung bei Spannungsabfall sofort abgeschaltet. Sodass der Elko zum Ausschalten ausreicht.

3. ATX Einschalten

Hier gibt es 2 Möglichkeiten. Entweder Stand-by oder man nimmt den Hauptschalter vom ATX Netzteil.

Wichtig! Das ATX-Netzteil sollte nicht ohne Last eingeschaltet werden! Ihr solltet mindestens ein altes DVD Laufwerk anhängen. Das zählt natürlich für beide Lösungen. : )

Stand-By Lösung:

Um das Netzteil einzuschalten, nimmt man das grüne Kabel PS ON und ein schwarzes Kabel (GND). Führt man diese 2 Drähte zusammen, schaltet sich das ATX-Netzteil ein. Beim Trennen geht das ATX wieder in Stand-by.

Also muss der GND und PS On Draht am PC 1715W Hauptschalter angelötet werden. Hier muss man aufpassen, der Hauptschalter hat 4 Pins. 2 sind für die Beleuchtung 220V.

Ich habe aber nicht den originalen Hauptschalter verwendet, sondern einen kleinen Schalter und eine rote LED hinzugefügt. Die LED habe ich über 3V und einen Vorwiderstand angeschlossen. Der Vorwiderstand muss je nach verwendenter LED berechnet werden.

Dazu habe ich eine Kunstoffplatte zwischen den Robotron 1715W-Gehäuse und und der dahinter angeschraubten Schutzkappe eingespannt, so kann man in dieser Kunstoffplatteeinen kleinen Schalter einbauen und eine LED passt auch noch rein.

Die Hauptschalterlösung:

Funktioniert genau wie oben Stand-by. Allerdings wird hier nicht das grüne und schwarze Kabel am Schalter angelötet. GND und Power-On werden einfach zusammen gelötet und mit Schrumpfschlauch isoliert. Damit liegt das Power On Signal sofort an, wenn man den Hauptschalter des ATX-Netzteil drückt. Der Hauptschalter wird nun am Robotron PC 1715W Hauptschalter verwendet. Den Hauptschalter kann man, wie oben bei der „Stand-by“ Lösung beschrieben, einbauen oder man lötet den ATX Hauptschalter ab und lötet diesen am Robotron PC 1714W an.

 

C64 ASM Keyboard abfrage

Hier eine sehr einfache Anleitung, wie man am C64 eine Tastaturabfrage realisiert. Als Programmierumgebung habe ich das kostenlos Erhältliche c64Studio. Kurze Erklärung: jsr $ffe4 ist eine Kernel routine des C64. Damit kann man die Zeichen der Tastatur einlesen. Man muss hier beachten, das auch wenn keine Taste gedrückt wird nicht gewartet wird. Drueckt man keine taste wird 0 ausgelesen. Deshlab wird im diesen Beispiel bei 0 wieder in die loop zurück gesprungen. Solange bis nun der Herr darrüben endlich mal die Taste drückt : ).

beq loop ; wenn keine Taste gedrückt --> zurück zu loop

Der Rest ist im Code mit ; kommentiert. !to "Keyboard.prg",cbm

Hier der Coder + PRG zum Keyboard abfrage: )


*=$0801
;SYS 2064
!byte $0C,$08,$0A,$00,$9E,$20,$32,$30,$36,$34,$00,$00,$00,$00,$00

start:

lda #$01 ; Weißer Hintergrund/Fordergund
sta $d020
sta $d021
lda #$00 ; Text Schwarz
sta $0286
jsr $e544 ; Clr screen / Bildschirm leeren
lda #titel
sta $ff
jsr printtext ; Siehe printext unten
jmp loop ; schleife für Tastenabfrage

loop:

jsr $ffe4 ; Keyboard input abfragen
beq loop ; wenn keine Taste gedrückt –> zurück zu loop
cmp #81 ; taste q
beq do1 ; do1 audführen
cmp #67 ; taste c
beq do2 ;
cmp #69 ; taste e
beq exit ;funktion exit
jmp loop

do1:

lda #textq
sta $ff
jsr printtext ; Print text

jmp loop

do2:

lda #textc
sta $ff
jsr printtext ; Print text
jmp loop

exit:

lda #$0d
jsr $ffd2
jsr $ffd2
lda #$00
rts

 

printtext:

ldy #$00

printloop:

lda ($fe),y
cmp #$00
beq printdone
jsr $ffd2
iny
bne printloop
inc $ff
jmp printtext

printdone:

rts

titel:    !text $0e,“keyboard abfrage:“,$0d

!text $0e,“drucke taste q“,$0d
!byte $00

textq:  !text $0e,“das war taste q“,$0d

!text $0e,“und nun taste c“,$0d
!byte $00

textc:  !text $0e,“c funktioniert auch“,$0d

!text $0e,“dann druecken wir e fuer ende oder q“,$0d
!b