Die ArduBox

In diesem Artikel stelle ich die ArduBox vor.

Oft wird eine Hardware benötigt, welche im wesentlichen aus einem Mikrokontroller, Eingabetasten, und einem Display besteht, sowie verschiedene Eingabe/Ausgabe-Ports zur Verfügung stellt. Die Verwendungsmöglichkeiten eines solchen Geräts sind offensichtlich endlos.

Eine Lösung wäre natürlich: DIY. Ein anderer Ansatz ist es, sich nach geeigneter, im Handel erhältlicher Hardware umzusehen und diese zu „missbrauchen“. In der Vergangenheit bin ich diesen Weg gerne gegangen, und z.B. auf die Robbe Programming Box oder Turnigy Boxen gestossen. Der Vorteil ist offensichtlich ein geringer Bastelaufwand, und darüber hinaus ein handliches, schniekes Resultat. Der Nachteil ist aber auch offensichtlich, nämlich die Begrenzungen durch die gegebene Hardware. Man kann auch auf flexible „Baukästen“ zugreifen, und hier ist an erster Stelle der Arduino Uno mit LCD Shield zu nennen. Man ist auch nicht auf die altmodischen 2-zeiligen LCD Displays und Tastenanordnungen beschränkt, sondern mit dem lcd4884 Shield bekommt man sogar ein cooles graphisches Display und coolen Joystick (dann wird es allerdings doch teuer). Dies ist also eine sehr gute, flexible Lösung. Allerdings ist sie nicht gerade sehr handlich und – wie soll man sagen – etwas „bastlerisch“ (es wundert mich das es keine passenden Gehäuse im Handel zu geben scheint!).

Konzeption der ArduBox
Damit ist eigentlich das Konzept der ArduBox schon umrissen. Die ArduBox baut auf einem Arduino auf, vorallem wegen der sehr einfachen Programmierbarkeit über die USB Schnittstelle, ohne das irgendeine Zusatzhardware (Programmer) benötigt wird. Im Unterschied zu den üblichen Arduino Lösungen sollen Display und Tasten jedoch nicht als Shield zum Aufstecken realisert werden, sondern alle nötigen Grundkomponenten, also USB, Mikrokontroller, Spannungsversorgung, Display, und Tasten möglichst kompakt zu einer „Box“ vereint werden. Natürlich soll diese Box, ganz ähnlich wie beim Arduino, erweiterbar sein, und Anschlüsse für „Shields“ bieten, um z.B. eine Bluetooth-Verbindung zu realisieren, oder eine Funkstrecke (Telemetrie!) oder eine externe Speicher/SD-Karte. Das Konzept ist also eine Synthese eines Arduino mit einer schnieken Box, die ArduBox.

Leider gibt es ja noch keine ArduBoxen. Daher ist doch noch DIY angesagt, und eine erste Variante präsentiere ich unten. Ich werde das Konzept aber weiterentwickeln. Ziel ist es alle genannten Grundkomponenten auf eine Platine zu bekommen (was platzmässig gut gehen sollte).

Realisierte Projekte


Nutzungsbedingungen/Terms of Usage: The ArduBox and its variants described below is open source hardware, under the terms of the TAPR Open Hardware License as published by the Free Hardware Foundation, see http://www.tapr.org/ohl.html.


Die ArduBox v0.10

Hier also die, meiner Meinung nach, erste taugliche Version einer ArduBox. Sie ist vom Design her nahe an die Erfordernisse für die BLHeliBox angelehnt, aber auch so ausgelegt das alle in meinen vorhergehenden Projekten (Programmierbox für z.B. den GA250, Telemetrieempfänger) auftrettenden Anforderungen beachtet wurden. Ich glaube daher, dass das Design tatsächlich sehr flexibel ist. So schaut sie aus:

ardubox view olliw

Dimensionen
BxHxT: 63 mm x 45 mm x 17 mm

Komponenten
uC: Atmega328p
Oszillator: 16 MHz Keramik
Display: Nokia 5110 48×84 graphisches Display mit PCD8544 Kontroller
Tasten: 5-fach Joystick-Taster

Kosten
ca. 20 – 30 Eur, je nachdem wie und wo eingekauft wird und wie man zu den Platinen kommt

Aufbau
Um die Herstellung möglichst einfach zu halten, wurden möglichst fertige Komponenten benutzt, konkret ein Arduino Nano und ein Nokia5110 LCD Modul. Zusammengefügt wird alles durch eine Hauptplatine. Für die Tasten wird dann eine extra Tastenplatine benötigt. Die Box besteht also aus drei Einheiten zum zusammenstecken:

ardubox v010 hardware olliw

Anschlussports
Im Bild unten sind die Anschlüsse der ArduBox v0.10 gezeigt. Auf die mit lcd module und key module bezeichneten Pinreihen werden das LCD Modul und die Tastenplatine aufgesteckt.

Am Main Port stehen neben GND und Vcc auch die drei I/O Pins PB2 (D10), PB3 (D11), PB4 (D12) des Atmega328p Mikrokontrollers zur Verfügung. Vcc bezeichnet hierbei den Spannungsversorgungs-Eingang für die ArduBox. GND und Vcc sind auch am External Power Supply Port verfügbar; dies dient z.B. der Versorgung der ArduBox mit einer separaten Batterie. Augenmerk ist unbedingt auf die Höhe der Versorgungsspannung an Vcc zu legen; ist diese größer als 5 V dann MUSS der Power-Supply Jumper auf 2S/3S gestellt sein, ist sie kleiner als 4.5 V dann kann er auf 1S gestellt werden (was sinnvoll ist, da ansonsten die Box wegen Unterspannung evtl. nicht funktioniert). In der 1S-Stellung arbeitet die ArduBox ab Versorgungsspannungen von ca. 3 V.

An den (vier) Shield Ports stehen neben GND und Vbox neun weitere I/O Ports des Mikrokontrollers zur freien Verfügung. Vbox bezeichnet hierbei die interne Versorgungsspannung der ArduBox (welche aus Vcc abgeleitet wird); Vbox ist also ein Versorgungs-Ausgang um externe Hardware zu versorgen. Der Shield Port B ist optional, also nur verfügbar wenn noch zusätzlich vier Kabel eingelötet werden. Die Shield Ports sind im 2.54 mm Raster angeordnet; die ArduBox kann so auf zusätzliche DIY-Shields leicht aufgesteckt werden.

Darüber hinaus ist ein Spannungsteiler vorgesehen (im Bild nicht bestückt), mit dem über den ADC1 (A1) des Mikrokontrollers die Versorgungsspannung Vcc gemessen werden kann. Dies erlaubt z.B. eine Anpassung der Displayhelligkeit oder eine Unterspannungswarnung bei Versorgung über eine Batterie.



ardubox v010 main board details olliw

Schaltplan und Platinenlayout
Der Schaltplan und die Platinenlayouts sind in den folgenden Bildern gezeigt. Es wurde Eagle Light benutzt. Die Platine konnte einseitig gehalten werden (bei einer Drahtbrücke), und weist keinerlei kritische Maße auf. Sie sollte für Selbstätzer daher leicht herzustellen sein. Ich persönlich ätze nicht mehr selber; die Platinen unten habe ich beim Platinenshop machen lassen.

ardubox v010 scheme 02 olliw ardubox v010 board layout olliw

ardubox v010 board bottom olliw ardubox v010 board top olliw

Stückliste
1 x Arduino Nano (idealerweise sind die Pinheader dabei, aber noch nicht eingelötet)
1 x Nokia 5110 LCD Modul (Achtung, es gibt verschiedene Varianten, lest unten!)
1 x Platinenset (Hauptplatine + Tastenplatine)
1 x 5-fach Joystick Taster (navigation tact switch LY-A07-02)
1 x Printtaster 6×6 mm
1 x Schottky-Diode (z.B. SB130)
1 x 100 Ohm
1 x 330 Ohm
1 x 620 Ohm
1 x 1k Ohm
1 x 2k Ohm
1 x 3.3k Ohm
1 x mehrere Buchsen- und Stiftleisten, wie dem Bild zu entnehmen

Bei dem Nokia 5110 Modul muss man gut auf die richtige Variante achten (ich habe im Netz vier verschiedene Varianten gesehen, nur eine passt). Die Reihenfolge der Anschlusspins muss 1-VCC, 2-GND, 3-SCE, 4-RST, 5-D\C, 6-DN, 7-CLK, 8-LED sein, und symmetrisch oberhalb und unterhalb des Displays vorhanden sein, wie auf z.B. auf dieser Seite hier.

Zusammenbau
Zum Zusammenbau gibt es eigentlich nicht viel zu sagen. Beim Ardunio Nano ist es wichtig, dass auch zwischen dem ISP-Anschluss und der Platine eine Verbindung hergestellt wird. Falls beim Nano bereits ein ISP-Stecker eingelötet ist, muss dieser aus und rückseitig wieder eingelötet werden. Bei der Tastenplatine muss man etwas darauf aufpassen, dass keine Brücken zur Massefläche entstehen. Zudem ist beim Joystick Sorgfalt geboten (als erstes Bauteil auf die Tastenplatine löten), und auf dessen richtige Einbaulage zu achten (siehe Bild). Die Bestückung der Hauptplatine sollte aus den obigen Bildern erkennbar sein, für die Tastenplatine sieht es so aus:
ardubox v010 keys board details olliwBeim LCD-Modul ist das Display nur aufgesteckt und daher etwas beweglich, was zu Kontaktschwierigkeiten führen kann. Display hin-und-her bewegen so das sich ein guter Kontakt ergibt (keine Bildfehler), und dann mit leichtem Druck Display und Board zusammenpressen und auf der Rückseite an den Laschen festlöten. Das hält bombig.

Tip: Vorm Einlöten des Nano diesen erst mit der Firmware bespielen oder andersweitig testen, den der nachträgliche Ausbau des Nanos gestaltet sich meist schwierig.

Hinweis: Ich habe gerade gelernt, dass wohl immer noch Nanos vertrieben werden, die den prähistorischen Pin26-Fehler haben (hier, hier). Also, am FTDI die Verbindung von Pin 26 mit Masse checken, und falls nicht vorhanden Pin 26 mit 25 durch eine Lötbrücke verbinden!


Bezugsquellen

Arduino Nano
Deutschland:

Ausland:

Nokia 5110 LCD Modul
Deutschland:

Ausland:

5-fach Joystick Taster (navigation tact switch LY-A07-02)
Deutschland:

Ausland:

  • $1.95 exkl. Versand bei Sparkfun (No. COM-10063)

15 Kommentare

  1. steidlmick sagt:

    Hallo Olli,
    vielen Dank für das wunderbare ArduBox-Projekt!
    Es hat richtig Spaß gemacht die Box aufzubauen.
    Hast du für die ArduBox vielleicht inzwischen ein passendes und gut verarbeitetes Gehäuse gefunden?
    Das Kemo G025 passt ja eigentlich sehr gut, aber wie du selbst schon mal erwähnt hast, ist die Verarbeitung enttäuschend schlecht – und diese Erfahrung kann ich leider nur bestätigen.
    Leider bin ich selbst bisher nicht fündig geworden…

    Viele Grüße,
    Mick

  2. Reiner sagt:

    Hi Olli,

    hab mir schon ein paar Plush ESc neu geflashed und bin einfach nur begeistert wie gut und einfach das mit dem Tool von Dir geht! Läuft ohne zu mucken.
    Vorübergehend hab ich mir die einfache Version zusammengesteckt aus dem Uno und dem LCD-Shield.
    Das GLCD und der Joykey sind bestellt für die #5.
    Und genau hier habe ich eine Frage. In dem Schaltplan V013r hast Du zwei Lötjumper SJ2 und SJ5 in der MISO und MOSI Leitung zum Stecker JP1 eingebaut. Wozu ist es sinnvoll die Leitungen C2D und C2C#1 zu verbinden?
    Ich bau mir das Layout um, damit ich die Schaltung in eine schützende Box bekomme und möchte mir keine späteren Türen vermauern, wenn ich solch Dinge weglasse.

    Viele Grüße
    Reiner

    • OlliW sagt:

      Hallo Reiner,

      „und bin einfach nur begeistert wie gut und einfach das mit dem Tool von Dir geht“ 🙂 🙂

      “ In dem Schaltplan V013r hast Du zwei Lötjumper SJ2 und SJ5 in der MISO und MOSI Leitung zum Stecker JP1 eingebaut. Wozu ist es sinnvoll“
      Sehr gute Frage. Für den vorliegenden Anwendungszweck ist das GAR NICHT sinnvoll… Die v013r ist darauf ausgelegt auch für evtl. ganz andere Zwecke von Nutzen zu sein, und da kann es eben vorkommen dass man eine andere Eingangsbeschaltung benötigt, z.B. noch einen Pull-up-Widerstand, oder einen Schutzwiderstand, etc. pp… und da man nicht jedesmal eine neue Platine entwerfen/herstellen will…

      „Ich bau mir das Layout um, damit ich die Schaltung in eine schützende Box bekomme“
      Es würde mich freuen wenn du dein Ergebnis irgendwo vorstellen würdest, würde mich SEHR interessieren. Ich habe verschiedene Gehäuse ausprobiert, und hätte die Platine auch diesbezgl etwas umdesignt, aber irgendwie hat mir das alles nicht so 1000%ig getaugt… entweder zu teuer, zu klobig, etc. pp. … (in gewisser Weise ist die v013r deswegen auch nicht „fertig“, daher das „r“ LOL)

      Olli

    • Reiner sagt:

      Hi Olli,

      klar mache ich, wollte ich sowieso dann zurück geben, wie ich das auch schon mal mit einem OpenEEG gemacht habe…
      Mal sehen was ich finde an Gehäuse, am liebsten Pactec, da die Teile ähnlich wie gute Firmware einfach prima funktionieren. Allerdings müssen alle Teile offen erhältlich sein, überall…
      Ich melde mich, wenn ich was hab oder eine kleine Diskussion um Sinn und Zweck benötige.
      Da ich eigentlich nur die owSilProg und BLHelibox zum anschliessenden Parametrieren brauche, erschließen sich mir noch nicht andere Verwendungen.

      Gruß
      Reiner

    • OlliW sagt:

      Ich benutze Prog-Boxen z.B. auch für meine GA250-Firmware Projekte… den mit der neuen Firmware bestückten GA250 Gyro benutze ich tatsächlich „täglich“ in meinem 450er… sah bisher noch keinen Grund was zu ändern LOL. Jedenfalls, dort funtkioniert die Kommunikation zwischen Box und Device anders, und benötigt einen Pull-Up Widerstand, sowie i.A. eine Diode… das ist für mich z.B. so ein Fall. Zudem ist die v013r schon dafür vorgesehen auch mit einem Bluetooth Modul zusammenzuarbeiten… auch das etwas was man mal gebrauchen will. Aber wenn man dieses Zusatzgespiel nicht braucht/will… klar, einfach weglassen… 🙂

      Ich schau heute Abend mal welche Gehäuse ich mir bestellt hatte… man muss ja nicht doppelt Geld vernichten LOL.

      Cheers, Olli

    • OlliW sagt:

      Hallo Reiner,
      habe nachgesehen, ich hatte mir mal diese Gehäuse kommen lassen
      Conrad 530788
      Conrad 525967
      (aber nicht das du jetzt denkst das ich ein Conrad Fan bin LOL)
      Das Kemo G025 passt von den Maßen ziemlich gut… ist aber absolut schlecht gefertigt… so was krummes und gebogenes als Gehäuse zu verkaufen… kopfschüttel.
      Das Strapubox ist deutlich größer, und eigentlich für mein Geschmack ein klein bisserl zu groß, aber ansonsten absolut cool… dieses blau-durchsichtig… cool. Aber irgendwie hat mir der überzeugende Plan gefehlt wie ich die Box, auch mit passend umgestalteter Platine, da einbauen soll… und so ist der Stand noch immer 😉
      Olli

    • Reiner sagt:

      Moin Olli,

      ja, die blaue sieht nett aus. Allerdings bevorzuge ich Systeme bei denen zumindest eine Seite entnommen werden kann. Die Bearbeitung mit Werkzeugen ist deutlich einfacher und präziser. Papierschablonen für die Bearbeitung lassen sich gut anpassen und helfen dabei etwas schönes entstehen zu lassen. Ein 3D-Drucker wär nicht übel, auch für den Plastikknubbel vom Joystick wäre das ne Lösung, doch mein Platz ist begrenzt.
      Hab natürlich auch nachgesehen, heute morgen noch, alles ist größer… muss also shoppen gehen.
      Zunächst fehlt mir aber noch das Display und der JStick von lipoly…kommt erst Anfang Juli.
      Conrad? Keine Worte! Würd mich nur reinsteigern. Schade, dass HH mittlerweile eine ElektronikLadenWüste ist. Je kleiner das Teil werden soll, desto mehr klemmen die gegebenen Komponenten. Der Weg zum komplett neuen Aufbau rückt damit näher. Das wird nicht billiger und deutlich komplizierter.
      Ich finde die Lösung aus Fertigmodulen genial einfach, es funktioniert eben bei jedem, niemand muss Mohnsamen auf Platinen löten. Das bereits erwähnte OpenEEG war schon für viele Hardcore in der SMD Version und das schon bei 0805. Andererseits ist ein kompaktes kleines Arduböxchen was feines.
      Wie gesagt, ich warte auf die Teile und die brauche ich, um mir ein reales Bild zu machen.
      Vielleicht stecken wir ja mal die Köpfe zusammen…
      Aber hattest Du nicht erwähnt, die Ardubox soll es von jemanden fertig geben?

      Gruß
      Reiner

    • OlliW sagt:

      einen JStick hätte ich dir schnell schicken können, aber Display habe ich nur nen kaputes zu bieten LOL
      also, unter 0805 gehe ich auch nicht LOL… die Augen die Augen…
      ein reales Bild ist definitiv wichtig bevor man irgendetwas macht… in echt schauts dann doch oft anders aus
      3D Druck ist cool, aber jenseits dessen wo ich bin…
      Michael wollte die ArduBox anbieten… allerdings kam dann Anfang des Jahres der mCPX BL raus, und damit war das Gesichte, Brushless-Umbauten des mCPX sind „nur“ noch was für die ganz „Verückten“… LOL
      ich stecke übrigens nicht mehr viel Zeit in dieses Box-Konzept… ich habe mir mal nen lcd12864 Dipslay kommen lassen… bin nicht dazu gekommen damit was zu tun… habe zuviele andere Sachen die ich gerade spannender finde… aber das wäre dann das Nächste
      Cheers, Olli

    • Reiner sagt:

      Danke Olli, ich denke das geht schon mit der Wartezeit. Will ja eigentlich fliegen… und da liegt noch einiges zu bauen. Mit dem 12864 hab ich auch mal was gemacht – eigener Treiber in C. War mal ein FotoTimer, nachdem der Grafiktreiber dann mit Boxen, Kreisen etc. lief, war es egal – Reiz weg…der Weg ist das Ziel. Manchmal geht das sehr schnell.
      Ich finde die BLHeliBox nach wie vor interessant, denn die ESC laufen auch für Fläche besser und MK sowieso, als die preinstallierte Firmware. Ich will son Ding und die Uno/LCD-Shield ist einfach zu fett fürs Field.

      Ich hab mich auch schon gefragt, ob ein kleines Farbdisplay von Saintsmart ganz nett wäre. Noch besser ein Display mit Touch, dann würde der Stick entfallen. Alles total oversized, ich weiß, soll ja nur zum Parametrieren sein und da reicht ein old school 8 Zeichen LCD… aber och nee…
      Ich denke das 5110 GLCD hat bei Drauflicht eine bessere Ablesbarkeit als jedes TFT.

      Mal sehen, was draus wird, gibt ja noch andere Dinge. So raus, fliegen…

      Gruß
      Reiner

  3. David Rosendahl sagt:

    Hi!
    Sorry for using english (you can answer in german, I have no problem reading german)
    Thanks for the project description, I’m building one for myself.
    I have everything except the PCB:s. However, it is very expensive to order (shipping) to my place and DHL doesn’t work very well here. So I hope to make it locally. Is the eagle light files available?

    • OlliW sagt:

      hey David,
      oh, yes, I should have posted the eagle files some time ago… I did not since I was working on an improved version, you may download the eagle files for ardubox v013r here: http://www.olliw.eu/uploads/ardubox-v013r-eaglefiles.zip. The layout is slightly different (it provides some more flexibility) but I am sure you will have little difficulties to figure it out.
      Cheers, Olli

    • David Rosendahl sagt:

      Big thanks!
      Some resistor values was missing (for the possibility of debug of the arduino). However, that should not be needed on an arduino except for developers so I skipped that part.

      I have built it everything now except waiting for an arduino nano.

      Two suggestion for the future:
      1. Try to skip resistor values outside the E12 series, seems to be the most common serie to stock. (Checked both some local stores and the local university)
      2. Make the fastening of the arduino nano solderless (sockets). At least I tend to move them around for different projects. (And they break from time to time)

    • OlliW sagt:

      thanks for the comments, but there are IMHO good reasons for why it is as it is
      1) as regards the non-E12 values, you have to „thank“ the Arduino crowd… I found it better to stick with their design, also for compatibility reasons, so that firmware runs also on Arduino+LCD shields. (if you run your own firmware, you can choose the R values as you like!)
      2) I couldn’t see how this and getting a nice, compact final design could be done at the same time… so, if you have a good practical idea of how to do that, please tell.

  4. ThorstenS sagt:

    Hey, danke für dieses tolle Projekt und die Bezugsquellen.
    Das macht richtig Lust aufs Nachbauen!

    VG
    /thorsten

Hinterlasse einen Kommentar

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