• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

Arduino übersetzen oder Board nachbauen?

Haenigser

Geocacher
Hallo zusammen!

Ich habe folgendes Problem:
Im Netz bin ich auf eine kleine Spielerei gestoßen, die ich gern nachbauen würde. Der Programmcode ist allerdings in Arduino geschrieben und ich nutze Bascom AVR für meine µCs.

Nun meine Frage:
Ist es einfacher den Code zu übersetzen (für jemanden der es kann, ich kann es nämlich nicht) oder ein Arduino Board auf dem Steckbrett nachzubauen um den µC zu programmieren?

Vielen Dank schon mal im Voraus!
 

TeamAdolzfurt

Geomaster
Ein Arduino Nano kostet bei Ebay knapp 8€, ein Uno einen Euro mehr... da lohnt sich kein Selbstbau. Ansonsten ist ein Arduino nix besonderes, da kann man im Prinzip einen nackten 328P nehmen und das Programm reinschiessen. Sollte man dringend die serielle Schnittstelle (als RS232) brauchen, ist die mit einem MAX schnell nachgerüstet (1-2 Euro bei Ebay). Mit TTL-Pegel geht es ohne Hardware.

MaJa
 
OP
H

Haenigser

Geocacher
Ich kenne mich mit Arduino noch nicht wirklich aus. Kann ich mit dem Arduino Nano auch einen Atmega88 programmieren?
 

TeamAdolzfurt

Geomaster
Ein (aktuelles) Arduino-Board ist eine Platine mit einem Atmega 328P, einer seriellen Schnittstelle (incl. USB-Interface) und zwei Spannungsreglern (von 7-12V auf 5V und 5V auf 3.3V). Dazu eine Reset-Schaltung und ein paar LEDs. Der Prozessor hat die Fuses so gesetzt, daß er einen Bootloader verwendet (der macht die Kommunikation mit der Entwicklungsumgebung).

Zum Arduino gehört die IDE und damit eine gewisse Programmierumgebung. Die Sprache ist eine leicht abgeänderte Version von C/C++, es gibt eine Arduino-Library und ein minimales Programmgerüst.

Soweit alles nix geheimnisvolles, das kann man mit etwas Ahnung in 10min auf einem Steckbrett aufbauen, einem 328P mit dem Arduino-Bootloader programmieren und dann den "Sketch" seriell reinschiessen. USB-Seriell Kabel und Pegelwandler RS232-TTL sind für 1-2 Euro bei Ebay zu kriegen, USBASP-Programmierer (die man für den Bootloader braucht) auch.

Ein Arduino Nano ist ein kompletter Arduino, nur in einer erheblich kompakteren Form. Da passen dann halt die ganzen Zusatz-Boards ("Shields" im Arduino-Jargon) mechanisch nicht drauf, sind aber voll verwendbar (muss man halt selber verkabeln). Wer die Shields nicht braucht und sowieso eine eigene Lösung bauen will, braucht den originalen "Arduino"-Formfaktor nicht, da sind dann die Nanos kleiner und etwas billiger.

Was hast Du denn genau vor?

MaJa
 

TeamAdolzfurt

Geomaster
Ich hab den Artikel mal überflogen und das Programm übersetzt. Ergibt knapp über 4k Code, da sollte also ein besserer Tiny reichen. Bis Du das am Laufen hast, kann allerdings etwas Zeit vergehen, ist nicht ganz trivial.

Mein Tip: besorg Dir einen Uno (mit DIL-Prozessor) in China (keine 10 Euro) und bau erst mal die Hardware. Wenn alles mit dem Uno funktioniert, den programmierten Prozessor rauspopeln und in eine kleine selbstgebaute Platine einbauen (3V Lithium-Batterie, Quarz, 2 Kondensatoren für den Quarz und die Schaltung aus dem Artikel), fertig ist die Laube. Wenn Du eine gute 28-pol Fassung nimmst, kannst Du mit ein paar Drähtchen den Uno mit Deiner Schaltung verbinden, bis alles geht, und dann den Prozessor umbauen. Auf dem Arduino ist keine Spezialhardware, die Du nachbauen musst.

Alternativ bringt der Cacher eine 9V-Batterie mit (dann aber paar Gedanken an den Verpolungsschutz verschwenden) und Du nimmst den kompletten Uno.
 

englishfire

Geomaster
Habe mir vor kurzem genau das Gleiche zusammengebaut. Habe mir einfach für ein paar Euro einen Arduino Nano gekauft und den Code da draufgeladen. Alles eingestöpselt mit Servo, da nach dem Klopfcode eine Dose geöffnet werden kann und es läuft. Ist die schnellste Lösung.
 
A

Anonymous

Guest
Der Nachteil des Arduinoboards ist aber der hohe Stromverbrauch durch die Spannungswandler, was TeamAdolz im Prinzip schon gesagt hat. Das Umtopfen vom Uno auf ein Breadboard oder eine Lochplatine dagegen ist kein riesiger Aufwand.

Welche Batterie verwendest du denn, und wie lange hält die mit den Klopfsensor englishfire?
Kann mir ehrlich gesagt nicht vorstellen, dass das so praktikabel ist?
 

satanklaus

Geomaster
Spricht etwas dagegen, das Arduino-Board direkt als ISP zu verwenden, so wie hier hier und hier vorgeschlagen?

Mir gefällt die Idee, einen ausgereiften Prototypen irgendwann fest und outdoortauglich aufzubauen, ohne dabei den Arduino Workflow verlassen und sich in ein anderes System incl. Programmiersprache einarbeiten zu müssen.

Hat jemand damit Erfahrung?
 
OP
H

Haenigser

Geocacher
Attinys habe ich noch nicht ausprobiert. Beim Atmega328 hatte ich anfangs Probleme mit dem Bootloader. Habe mir dann einfach ein paar µCs inkl. Bootloader zugelegt und schon funktioniert alles wie gewünscht.
 

hcy

Geoguru
Man kann den Arduino auch per ISP direkt aus der IDE ohne Bootloader programmieren, wenn man eh schon so ein Teil hat.
 

satanklaus

Geomaster
Man kann den Arduino auch per ISP direkt aus der IDE ohne Bootloader programmieren

Das sollte die normale Anwendung sein und darum ging es mir auch nicht.
Die Links führen vielmehr zu Anleitungen, die den Arduino zur Progammierung eines Tiny verwenden.

Das wäre eine weitere Lösungs-Alternative für das Ausgangsproblem dieses Threads.
Da ich sie aber selber noch nicht ausprobiert habe, wollte ich erst mal nach Erfahrungen fragen, ehe ich das empfehle.
 

fogg

Geomaster
Nee, es spricht nichts dagegen, die Attinys mit der Arduino IDE zu programmieren. Ich mache das auch, speziell wegen der vielen nützlichen Libraries, die es für Arduinos gibt. Leider laufen aber nicht alle auch auf den Attinys und leider ist die Unterstützung für 1MHz Takt auch nicht immer optimal. Da muss man manchmal händisch nachhelfen.

Wichtig ist das Folgende: Die GCC toolchain in den aktuellen Arduino IDEs enthält einen Fehler, der dazu führt, dass bei etwas größeren Programmen der folgende Fehler beim Linken auftritt: "relocation truncated to fit: R_AVR_13_PCREL ...". Hier ist beschrieben, wie man das Problem lösen kann: http://forum.arduino.cc/index.php/topic,60649.0.html
 

satanklaus

Geomaster
@fogg: Verstehe ich das richtig: die (buggy) gcc Toolchain hat sich seit IDE Version v0022 nicht geändert und muss wie in der verlinkten Anleitung gepatcht werden? Schließlich sind wir mittlerweile bei IDE v1.0.5 und der Beitrag ist von 2011.

Noch was: ich bin mir nicht sicher, ob man einen Arduino Sketch wirklich auf Low Power tunen kann. Denn in der Arduino-Welt ist ja immer Saft da und es gibt dafür keine Notwendigkeit. Man programmiert nutzerfreundlich auf einer höheren Abstraktionsebene, hat dafür aber auch weniger Kontrolle über die Hardware. Geht sowas wie schlafen schicken und Aufwecken durch Pin-Event IRQ? (Alternative wäre natürlich, das die Besucher der Station ihren 9V Block mitbringen...)
 

fogg

Geomaster
Verstehe ich das richtig: die (buggy) gcc Toolchain hat sich seit IDE Version v0022 nicht geändert und muss wie in der verlinkten Anleitung gepatcht werden?

Ob Sie sich nicht geändert hat, weiß ich nicht. Aber die GCC-Version in der aktuellen IDE 1.0.5 ist 4.3.2 und hängt damit ziemlich hinterher. Vor allen Dingen hat sie immer noch den "relocation"-Fehler.

Und ja: Ich benutze auch den Tiefschlaf und Pin-Change-Interrupt zum Wecken (die Millisekunden werden halt im Schlaf nicht weiter gezählt). Man kann ja ganz allgemein auf die gesamte Hardware zugreifen (z.B. auch den ADC ausschalten usw.). Man muss bloß wissen, was man tut ;-).
 

satanklaus

Geomaster
Man kann ja ganz allgemein auf die gesamte Hardware zugreifen (z.B. auch den ADC ausschalten usw.). Man muss bloß wissen, was man tut ;-).

Danke für die Anregung, das ist ja nochmal eine ganz eigene Welt. :D
Da gibt es ja tatsächlich auch ein Sleep Mode API, Watchdog Funktionen etc.
Und das kleine Nachtigall-Projekt erinnert an vieles, was man z.B. auch für ein tagsüber vor sich hin dämmerndes Reaktivlicht braucht ...
 
Oben