Für das Projekt eines Tachowagens in H0, der als Technologieträger für Arduino on Rail dienen soll, besorgte ich mir direkt von Microduino einige Module. Unter anderem ein WLAN-Modul mit CC3000-Chip.

Für den CC3000-Chip gibt es eine Library von Adafruit (verfügbar bei Github) — inkl. vieler Beispiel-Sketches. Beim aller ersten Sketch „buildtest“ gab es erwartungsgemäß den Fehler: Bad firmware version (1.10).

Also gilt es, den CC3000 zu patchen. Dazu empfiehlt sich die Lektüre im Wiki von Mikroduino und die Patchanleitung des Autors des Patch-Sketches, Chris Magagna, auf Github.

Hier die 1-2-3-Anleitung in deutsch:

  1. Arduino-IDE beenden
  2. Standard-Library von Adafruit aus dem Library-Ordner löschen/verschieben (Adafruit_CC3000_Library)
  3. Patch-Library von Github herunter laden: https://github.com/cmagagna/CC3000Patch/archive/master.zip
  4. Entpacken und den Ordner umbenennen in CC3000Patch
  5. Den Ordner CC3000Patch in die Arduino-IDE importieren: „Sketch“ -> „Library importieren…“
  6. Sketch öffnen via „Datei“ -> „Beispiele“ -> „CC3000Patch“
  7. Den Werte für CC3000_IRQ, CC3000_VBAT und CC3000_CS für den Microduino anpassen bzw. kontrollieren:
    CC3000_IRQ = 2
    CC3000_VBAT = 9
    CC3000_CS = 10
  8. Kompilieren und auf Microduino hochladen (Strg+u)
    (hier gab es bei mir Probleme, da beim Speichern der Änderungen (CC3000_IRQ = 2) die ganze Library in den Sketch-Ordner kopiert wurde. Die IDE meldete, dass einige Werte/Funktionen schon definiert seinen…)
  9. Serial Monitor öffnen (Strg+Umschalt+m), auf 115.200 baud einstellen und „Sowohl NL als auch CR“ auswählen.
  10. Es müsste folgendes zu sehen sein:
    The Arduino CC3000 Firmware 1.24 Patcher
    -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-Command options:
    0  - Test the CC3000
    1  - Show MAC address and radio file on CC3000
    2  - Show MAC address and radio file in Arduino EEPROM
    3  - Show current CC3000 file table
    4Y - Copy MAC address and radio file from CC3000 to Arduino EEPROM
    5D - Copy default MAC and radio file to Arduino EEPROM
    6Y - Write a new file table to the CC3000
    7Y - Copy MAC address and radio file from Arduino EEPROM to CC3000
    8Y - Write new driver to CC3000
    9Y - Write new firmware to CC3000
  11. Mit 0 und Enter testen, Ausgabe in etwa so:
    Testing the CC3000...
        Initializing hardware...
        CC3000 initalized. Getting info...
            MAC Address: 0:19:94:36:68:EE
            Firmware version: 1.10
        RX buffer size: 131 bytes
        TX buffer size: 131 bytes
        Stopping CC3000....
            Stopped
  12. Die Daten aus dem CC3000 auslesen und im Microduino speichern: 4Y
    Ausgabe:

    Copy CC3000 MAC and radio file to EEPROM
        Starting CC3000 with no patches
            Started
        Reading MAC address
            MAC address read successful. MAC is: 0:19:94:36:68:EE
            Writing MAC address to Arduino EEPROM...
            Verifying...
            Verify OK
        Reading radio record
            Read OK. Radio data:
             3  0  1  1 10 10  0 27 27 27 27 27 27 27 27 27 
            27 27 27 27 27 23 25 25 25 25 25 25 25 25 25 23 
            23 23 23  0  0  0  0  0  0  0  0  0  0  0  0  0 
             0  0  0  0  0  0  0  0 50 50 50 50 50 50 50 50 
            50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 
            50 50 50 50 50 50 50 50 50 50 50  1 77 80 50 1F 
            22 25 25 27 50 1F 22 25 25 27 50 1F 22 25 25 27 
            1E 2D  1  2  2  2  2  0 11 11 15 11 15  F  E FF 
            Writing radio record to Arduino EEPROM...
            Verifying...
            Verify OK
        Stopping CC3000....
            Stopped
  13. Datei in CC3000 schreiben: 6Y
    Ausgabe:

    Writing File Table to CC3000
        Starting CC3000 with no patches
            Started
        Writing FAT
            Successful!
        Stopping CC3000....
            Stopped
  14. Daten zurück in CC3000 schreiben: 7Y
    Ausgabe:

    Writing Mac and RM record to CC3000
        Starting CC3000 with no patches
            Started
        Reading MAC address data from EEPROM
        Writing MAC to CC3000...
            Successful.
        Reading RM record data from EEPROM
        Writing RM record to CC3000...
            Successful.
        Stopping CC3000....
            Stopped
  15. Den neuen Treiber (Firmware) in CC3000 schreiben: 8Y
    Ausgabe:

    Write new driver to CC3000
        Starting CC3000 with no patches
            Started
        Writing data...
            Successful!
        Stopping CC3000....
            Stopped
  16. Den neuen Treiber in CC3000 schreiben: 8Y
    Ausgabe:

    Write new driver to CC3000
        Starting CC3000 with no patches
            Started
        Writing data...
            Successful!
        Stopping CC3000....
            Stopped
  17. Die neue Firmware in CC3000 schreiben: 9Y
    Ausgabe:

    Write new firmware to CC3000
        Starting CC3000 with no patches
            Started
        Writing data...
            Successful!
        Stopping CC3000....
            Stopped
  18. Und jetzt nochmals die 0 zum Test:
    Testing the CC3000...
        Initializing hardware...
        CC3000 initalized. Getting info...
            MAC Address: 0:19:94:36:68:EE
            Firmware version: 1.24
        RX buffer size: 131 bytes
        TX buffer size: 131 bytes
        Stopping CC3000....
            Stopped
  19. geschafft!

Im nächsten Schritt dann wieder die Adafruit-CC3000-Library in die Arduino-IDE legen, den buildtest-Sketch laden, Pins-Anpassen (siehe 7.) und — es funktioniert. Auch der Pingtest-Sketch lief ohne Probleme.

Achtung! Der CC3000 braucht im Betrieb bis zu 200 mA. Da der FT232R-Chip nur für 50 mA ausgelegt ist, läuft diese Kombination nur „gerade so“. Für einen Dauereinsatz ist eine andere Stromversorgung geboten!