Forum: Mikrocontroller und Digitale Elektronik AVR + DS18S20 + Banana Pi


von Flo D. (floflovaldo)


Lesenswert?

Hallo zusammen,

ich habe über ein Arduino Nano und ein DS18S20 die Außentemperatur 
ausgelesen und über USB dann an mein Banana Pi gesendet. Dieser hat die 
Daten mit einem Python Script ausgelesen und dann in eine MySQL 
Datenbank auf meinem Banana Pi eingetragen. Auf diese MySQL Datenbank 
greift ein Webinterface auf meiner Webspace drauf zu und zeigt die Daten 
an. Das ganze hat leider nicht mit zwei DS18S20 funktioniert. Warum auch 
immer. Hätte nämlich gerne noch einen drinnen.

Zu meinem jetzigen Vorhaben:

Arduino ist ja eine Prototyp Platform. Und genau darum geht es. Ich will 
das ganze mit einem AVR Mikrocontroller machen. Entweder ATmega 168 oder 
328. Was eignet sich besser? Außerdem will ich den Banana Pi als 
"Homeserver" belassen. Also benötige ich einen USB-to Serial Wandler 
oder?

Leider weiß ich noch nicht ganz genau wie ich es umsetzten soll. Weil 
ich allein das auslesen des DS18S20 nicht hinbekommen habe. Habe vor das 
ganze in C zu machen. Bzw. Hab mich ja daran schon versucht.

An was ich auch dachte ist auf den ATmega 168 (hatte ich noch ein paar 
da) ein Arduino Bootloader drauf zu ziehen. Da macht leider mein 
Programmer nicht mit. Den irgendwie hat es nicht funktioniert. Und wenn 
es für irgendwas eine Rolle spielt (denke grad was den USB-to-Serial 
Wandler angeht) ich benutze NOCH Windows. Habe aber auch vor auf Linux 
umzusteigen.

Würde mich über Hilfe oder Anregungen, etc. Freuen.

Viele Grüße
Florian

von Beobachter (Gast)


Lesenswert?

Da haste ja gleich mehrere Baustellen. Du brauchst eine 
Gesamtstrategie...

Mein Vorschlag: Fang am untersten Ende der Kette an und arbeite dich 
langsam vor.
Für den 18S20 sollte es sicherlich mehrere Libs oder Anwendungsbeispiele 
geben die auf einen AVR laufen. Ob 168 oder 328 - wenn du ins Datenblatt 
schaust, siehst du, daß sie sich außer im Speicher in nichts 
unterscheiden.
Einen Programmierer der was taugt und der dir keine zusätzlichen 
Probleme macht, hast du? Ich habe gute Erfahrung mit dem AVRISP Mk2 
gemacht, Selbstbaulösungen oder Clones stellen sich bei Anfängern schon 
mal quer, dann hast du noch eine Baustelle.

Wenn der Code schon auf dem Nano läuft sollte das Konvertieren in C kein 
Problem sein, der Arduino-Code in den Libs ist ja auch nur C++. 
Allerdings ist das Arbeiten mit dem LUFA-Stack für USB nicht ganz 
einfach. Der Raspi hat mindestens einen seriellen Port, der Banana Pi 
bestimmt auch. Insofern kannst du das USB-Problem also umgehen. 
Andererseits könnte man den Code für den 18S20 ja auch direkt auf dem Pi 
laufen lassen, was spricht dagegen? Du bist nicht der erste der die 
Temperatur mit dem Banana Pi/Raspi messen möchte, sicherlich findet sich 
mit den Stichwörtern 'Raspi' + 'DS18S20' Beispielcode.

Tip:
Falls du todesmutig und ohne fremde Hilfe so ein Projekt angehst, dann 
ist es immer gut wenn man entsprechende Werkzeuge hat: Ohne 
Oszilloskop/Logic Analyzer sind solche Projekte bei denen man bei Null 
anfängt immer mühselig und erfordern viel Trial&Error und Geduld. Mit 
dem entsprechenden Werkzeug sieht man genau was die Bits machen und auch 
ob die Geschwindigkeit passt. Kauf dir ein gebrauchtes billiges 
Speicheroszi aus der Bucht und verkaufe es nach dem Projekt wieder (oder 
finde Gefallen an der Elektronik und behalte es).

Gut programmieren und Fehler suchen lernt man nicht am grünen Tisch, da 
hilft nur viel Fleiß und Praxis und lesen, lesen, lesen. Irgendjemand 
sagte mal: Das Schreiben von PC-Software ist wie das Manövrieren eines 
großen Urlaubsdampfers (viel Wasser, viel Speicher), das Programmieren 
von Microcontrollern hingegen erinnert eher an Wildwasser-Rafting - mit 
all seiner Enge und den entsprechenden Gemeinheiten. Aber das Forum 
steht dir zur Seite.



Und das Forum, hier steht dir in speziellen Fragen zur Seite.
Viel Glück.

von pi oder was (Gast)


Lesenswert?

Warum den Zwischenschritt über den Avr oder auch Arduino?
Es gibt genügend Beispiele OneWire Devices direkt am RaspPI oder auch 
BananaPI zu betreiben.
Da du die Daten über USB übeträgst, gehe ich davon aus das du nicht so 
lange Leitungen brauchst um extra noch einen Controller zwischen zu 
schalten.

Dann bleibt noch zu sagen das Arduino genauso viel mit Prototypen zu tun 
hat wie ein AVR. Ich kaufe auch nur noch Adruino Clones aus China, weil 
da hast du nen AVR schon komplett beschaltet und brauchst dir keine Kopf 
mehr ums Layout zu machen, Programmieren kannste den Arduino ja auch wie 
einen "echten" AVR ;-)

von Flo D. (floflovaldo)


Lesenswert?

Hallo, schon mal danke für die Infos. Wegen dem Programmer werde ich 
mich erkundigen. Ich habe folgenden:http://avr-programmer.com/prog-s/
Habe allerdings auch noch einen guloprog von guloshop.de den ich bis 
jetzt aber noch nicht benutzt habe.

Was das wegen USB angeht habe ich was vergessen zu erwähnen: Das mit dem 
Pi ist zur Zeit nur zum Testen sozusagen. Ich habe eigentlich einen 
HomeServer (PC) an dem das ganze Laufen später laufen soll und mein Pi 
ist fürs MediaCenter und so gedacht und steht eigentlich ganz wo 
anderst. Den HomeServer ist grad nur bei einem Bekannten. Außerdem bin 
ich gar kein Fan von den GPIO Pins.

von Wolfgang (Gast)


Lesenswert?

Florian Denz schrieb:
> Arduino ist ja eine Prototyp Platform. Und genau darum geht es. Ich will
> das ganze mit einem AVR Mikrocontroller machen. Entweder ATmega 168 oder
> 328. Was eignet sich besser?

Arduino Boards verwenden meist ATmega Prozessoren (Ausnahme Arduino Due) 
und das sind  AVR Mikrocontroller. Ob ein ATmega168 oder 328 ist zum 
Auslesen von ein paar DS18B20 oder DS18S20 völlig egal und beide kannst 
du programmieren, wie du möchtest.

von Flo D. (floflovaldo)


Lesenswert?

Ja das ist mir bewusst. Aucg dass mit dem Speicher. Allerdings war ich 
mir wegen dem Speicher unsicher und ich sag mal lieber ne Nummer größer 
was Speicher an geht.

Hast du schon mal DS18S20 ausgelesen mit einem AVR?

von Peter D. (peda)


Lesenswert?

Florian Denz schrieb:
> Hast du schon mal DS18S20 ausgelesen mit einem AVR?

Ist zwar schon etwas angestaubt:
Beitrag "DS1820, DS18B20 in C"

Für die Delays sollte man heutzutage die delay.h benutzen. Die gabs 
damals noch nicht.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.