Kurz: Minecraft-Arduino-Adventskalender (Update)

Das mine­craft­be­geis­ter­te Kind (9) woll­te unbe­dingt einen Mine­craft-Advents­ka­len­der. Wir haben dann von einen Kalen­der von Fran­zis gefun­den, der ver­spricht, die Java-Edi­ti­on von Mine­craft auf dem PC mit der rea­len Welt zu ver­bin­den – via Ardui­no Nano.

Vor der Inbe­trieb­nah­me des Advents­ka­len­ders stand dann aller­dings erst mal ein biss­chen Instal­la­ti­ons­ar­beit. Zum einen muss von arduino.cc eine IDE her­un­ter­ge­la­den und instal­liert wer­den, um den Mikro­con­trol­ler pro­gram­mie­ren zu kön­nen. Zum ande­ren gibt es ein Archiv mit Soft­ware zu den ein­zel­nen Tür­chen, einem klei­nen Pro­gramm, damit Mine­craft auf die Schnitt­stel­le des Ardui­no zugrei­fen kann (ami.exe) – und einen Trei­ber für den Ardui­no Nano. Der wird über ein Mikro-USB-Kabel ange­schlos­sen, aber braucht eine emu­lier­te seri­el­le Schnitt­stel­le. War­um ein Extra-Trei­ber? Weil der im ers­ten Tür­chen ent­hal­te­ne Ardui­no Nano ein Klon ist, der von der Ardui­no-IDE nicht ohne wei­te­res ange­spro­chen wer­den kann – der Chip, der den USB-Anschluss ansteu­ert, ist ein ande­rer. Des­we­gen ist im Paket auch ch341ser.exe ent­hal­ten, besag­ter, etwas dubio­ser Trei­ber für die­se Bil­lig­va­ri­an­te des Ardui­no Nano.

Also: alles instal­lie­ren, die Ardui­no-IDE star­ten, das ers­te Pro­gramm öff­nen, das eine Leucht­di­ode auf dem Ardui­no Nano blin­ken las­sen soll, und auf den Chip hoch­la­den – ach nee, der wird nicht erkannt? Und einen Pro­zes­sor „ATmega328“ wie in der Anlei­tung genannt gibt es auch nicht, nur „ATmega328p“ und „ATmega328p (old boot­loa­der)“ (letz­te­rer ist kor­rekt). Aber war­um wird der Ardui­no nicht erkannt. Feh­ler bei der Instal­la­ti­on? Fal­scher USB-Anschluss? Doch bes­ser kom­plett im Admin-Mode vor­ge­hen? Nach eini­gen Neu­in­stal­la­tio­nen, Web­site­kon­sul­ta­tio­nen und Ver­su­chen war dann klar: Trei­ber und Nano sind nicht schuld – das Pro­blem war ein­fach nur ein Mikro-USB-Kabel, das wohl nur zum Laden, aber nicht zur Daten­über­tra­gung geeig­net ist. Nach Aus­tausch des (nicht im Lie­fer­um­fang ent­hal­te­nen) Kabels durch ein ande­res erkann­te Win­dows ein unbe­kann­tes Gerät, akti­vier­te den Chi­na-Trei­ber und auch die IDE fand den Port. Der blin­ken­den LED stand damit nichts mehr im Weg … (ich bin gespannt, wie ein­fach oder kom­pli­ziert die Ver­knüp­fung mit Mine­craft wird, die ab Mor­gen drankommt).

[Update, 09.12.2018] Wie in den Kom­men­ta­ren nach­zu­le­sen, war der Anschluss nicht das ein­zi­ge Pro­blem (und ich bei wei­tem nicht der ein­zi­ge, der damit Pro­ble­me hat­te, sie­he auch das Ardui­no-Forum). Pro­blem Nr. 2: Die Ver­bin­dung zwi­schen Mine­craft und Ardui­no Nano klappt nicht, weil das dafür ver­wen­de­te ami.exe wohl grot­ten­schlecht pro­gram­miert ist. Jetzt gibt es einen Ersatz dafür – schön, dass es eine so rege Do-It-Yours­elf-Sze­ne gibt. Damit soll­te dem Advents­ka­len­der­glück auch aus Mine­craft her­aus nichts mehr im Wege ste­hen. Eine Kurz­an­lei­tung gibt es auch.

Ich habe – mag etwas quick & dir­ty sein – amigo.exe auf den Desk­top kopiert, und mit dem Win­dowsedi­tor eine Datei amigo.bat auf dem Desk­top ange­legt, in der dann der Auf­ruf (ggf. noch um ‑ver­bo­se) zu ergänzen

amigo.exe -serial COM5 -baud 9600 -logfile "..\AppData\.minecraft\logs\latest.log"

steht. Bei mir klappt es damit, wenn ich zuerst die Ardui­no-IDE, dann Mine­craft und dann die­ses Pro­gramm starte.

9 Antworten auf „Kurz: Minecraft-Arduino-Adventskalender (Update)“

  1. Hal­lo,
    ich habe den glei­chen Kalen­der für mei­nen eben­falls neun­jäh­ri­gen Sohn gekauft. Mei­ne Erfah­run­gen sind ähn­lich, erst mal viel Instal­la­ti­ons­ar­beit und die Sache mit dem Wech­sel auf den alten Boot­loa­der. Aber schließ­lich hat alles geklappt, zumin­dest mit den ers­ten bei­den Pro­gram­men. Aller­dings hän­gen wir jetzt am 3. Tag fest, denn eben die im Blog­post mit Span­nung erwar­te­te Ver­knüp­fung mit Mine­craft will nicht funk­tio­nie­ren. Die AMI.exe greift offen­bar auf die Log­da­tei (latest.log) und wer­tet die­se aus, um das „Kom­man­do“ „2“ aus­zu­le­sen und an den COM-Port zu schi­cken. AMI.exe sagt mir zwar „Con­nec­tion Estab­lished!“, aller­dings kommt danach nichts mehr: egal wie oft wir in Mine­craft auf den Knopf neben dem Kom­man­do­block drü­cken und „[@] !2!“ im Chat aus­lö­sen, im AMI.exe-Fenster kommt _keine_ „CMD Sent“-Meldung. In der Fire­wall ist AMI.exe kom­plett frei­ge­schal­tet und sie wird auch immer vor Mine­craft gestar­tet, so dass ich nun nicht mehr wei­ter weiß. Ohne Mine­craft und AMI-Schnitt­stel­le, also per Seri­al-Moni­tor in der Ardui­no IDE ein­fach mal ne „2“ geschickt, funk­tio­niert wun­der­bar: LED an, LED aus…
    Haben Sie es hin­be­kom­men? Hät­ten Sie irgend­ei­nen Tipp für uns? Vie­len Dank vorab!

  2. Hal­lo, ich habe lei­der auch das sel­be Pro­blem und habe lei­der immer noch nichts gefunden. 

    Ein­zig gibt es ande­re Tools, die das sel­be kön­nen sol­len. Bei mir wird aber nicht mal mehr etwas gesagt. Ich habe wir haben zwar das Pro­gramm geöff­net und alles Kor­rekt ein­ge­ge­ben und es pas­siert nichts. Das Pro­gramm schließt sich ein­fach. Ich bin echt am ver­zwei­feln. Könn­te einer sagen, ob er irgend­was beson­de­res gemacht hat, oder ob er eine bes­se­re Idee hat.

    Grü­ße

  3. Wir haben das­sel­be Pro­blem. Es liegt tat­säch­lich an der ami.exe
    Schaut mal in den Quell­code. Das Pro­gramm ist abso­lut stüm­per­haft gemacht.

    Feh­ler 1 (sie­he func.h): So wie es pro­gram­miert ist, funk­tio­niert das Öff­nen der seri­el­len Schnitt­stel­le nur für Com-Ports<10. Ab 10 muss man unter Win­dows anders vor­ge­hen. Die­ses Pro­blem kann man natür­lich erst­mal mit dem Gerä­te­ma­na­ger umge­hen, indem man eine fes­te Port­num­mer klei­ner 10 zuweist.

    Feh­ler 2 (sie­he ami.cpp): Hier steht z.B.
    for(int i = 0; i < 33; i++)
    {
    bufString[i] = bufString[i+11];

    }
    Also ab Zei­chen 11 wer­den 33 Zei­chen nach vor­ne kopiert. Damit soll wohl die Uhr­zeit ent­fernt wer­den. Was ist, wenn die Zei­le gar kei­ne 11+33=44 Zei­chen hat? Bei uns trifft das auf ganz vie­le Zei­len im log zu! Dann wird auf Spei­cher zuge­grif­fen, der dem Pro­gramm nicht gehört. Das Betriebs­sys­tem kann mit einer Schutz­ver­let­zung reagieren.

    Feh­ler 3: cmd­String ist nicht zwin­gend null-ter­mi­niert und es wird kein Spei­cher allo­kiert. Abso­lut unde­fi­nier­tes Ver­hal­ten. Über die seri­el­le Schnitt­stel­le wird nicht nur wie gewünscht die Zahl son­dern belie­big viel ande­res gesen­det (zufäl­lig, je nach Spei­cher­in­halt bis 0 im Spei­cher steht).

    Feh­ler 4: Der genutz­te Algo­rith­mus ist echt schlecht. War­um immer 50 Zei­len lesen? War­um dau­ernd log­file löschen? Das geht auch pfiffiger.

    Wahr­schein­lich habe ich sogar noch wei­te­re Feh­ler über­se­hen. Falls ich am Wochen­en­de Zeit fin­de, wer­den ich ein neu­es Pro­gramm erstellen.

  4. End­lich eine Lösung: im Forum auf arduino.cc gibt es Leu­te mit dem glei­chen Pro­blem und einer von ihnen hat das Pro­blem gelöst, in dem er sich sei­ne eige­ne AMI.exe pro­gram­miert hat. Zu fin­den unter: https://github.com/asig/amigo
    Hier der Link zum Thread (Post #14): https://forum.arduino.cc/index.php?topic=582827.0
    Bei uns funk­tio­niert es jetzt. Wich­tig scheint hier tat­säch­lich zu sein, dass man das Pro­gramm _nach_ Mine­craft startet.

  5. Hal­lo,

    bei uns das glei­che Pro­blem. Lei­der kön­nen wir auch die Amigo.exe Soft­ware nicht star­ten, weil sie von Win­dows als Tro­ja­ner geblockt wird. Ist das ein Irr­tum der Soft­ware oder haben hier Hacker die ursprüng­li­che Soft­ware ver­än­dert / ausgetauscht?

  6. Vie­len vie­len Dank. Wir haben den Kalen­der 2018 im Rasch­ver­kauf erwor­ben und erst die­ses Jahr dank Coro­na wirk­lich ver­wen­det. Um ehr­lich zu sein: wenn es nicht funk­tio­niert hät­te, wäre die Welt auch nicht unter gegan­gen … aber dank des Blogs ist mei­ne Ver­hält­nis zum Medi­um „Inter­net“ wie­der zum Posi­ti­ven geschwenkt. End­lich mal wie­der irgend­was von C zu lesen, ein biss­chen mit der Fire­wall spie­len … und zu ver­ste­hen, wie die­ses Mine­craft es schafft, Bot­schaf­ten nach drau­sen zu senden.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert