Forum: Mikrocontroller und Digitale Elektronik Atmega ISP über SD-Kartenslot


von Dominik E. (Gast)


Lesenswert?

Hallo,
ich habe vor ca. einem Jahr einen kleinen Datenlogger mit einem 
Atmega328 (8Mhz, intern), Temperatur-, Luftfeuchtigkeits- und 
Lagesensoren gebastelt. Während der Atmega im schläft sind alle 
Komponenten spannungsfrei. Alle paar Minuten werden die Sensoren 
eingeschaltet und Daten aufgenommen. Nach ein paar Stunden ist der RAM 
fast voll und es wird die SD Karte initialisiert und die Daten mit 
Zeitstempel in ein Textfile geschrieben.

Funktioniert alles prima aber jetzt möchte ich eine neue Version mit 1-2 
zusätzlichen Sensoren machen und nun geht mir der Platz auf der Platine 
aus. Die soll nämlich gleich groß bleiben, da sie in ein Ei eingebaut 
wird. Daher kam mir jetzt die Idee die Pins für den AVR ISP wegzulassen 
und die Platine über den SD Kartenslot zu programmieren.

Für ein paar Euro gibt es ja "SD Karten Verklängerungskabel" und von den 
Pins her würde es auch fast passen. ISP und SD Karte verwenden brauchen 
jeweils VCC, GND sowie MISO, MOSI, SCLK. Die SD Karte hat dann noch den 
Chip Select und für ISP brauchts noch den Reset Pin. Daher meine Frage 
an alle die sich besser mit SD Karten auskennen. Kann ich den Reset Pin 
des Mikrocontrollers auf einen der beiden Freien, im SPI Modus nicht 
genützten, Pins der SD Karte legen ohne dass mir die SD Karte 
unbeabsichtigte Resets verursacht?

Hier noch ein Link zur Pinbelegung einer Micro SD Karte 
http://elm-chan.org/docs/mmc/gx1/micro_contact.jpeg

Wenn das möglich wäre könnte ich mir die zusätzlichen ISP Pins sparen 
und hätte dadurch genug Platz für zumindest einen Sensor.

LG
Dominik

von Marc S. (marc_s86)


Lesenswert?

was hälst du denn von einem sd bootloader? dann legst du das hex file 
auf die sd und der avr updated sich selbst.

von Falk B. (falk)


Lesenswert?

@Dominik E. (Gast)

>an alle die sich besser mit SD Karten auskennen. Kann ich den Reset Pin
>des Mikrocontrollers auf einen der beiden Freien, im SPI Modus nicht
>genützten, Pins der SD Karte legen ohne dass mir die SD Karte
>unbeabsichtigte Resets verursacht?

Keine Ahnung.

>Wenn das möglich wäre könnte ich mir die zusätzlichen ISP Pins sparen
>und hätte dadurch genug Platz für zumindest einen Sensor.

Einfach einen Ministecker nehmen mit 1,27mm Raster? Es reichen auch nur 
VIAs, die dann mit Pogopins kontaktiert werden. Oder die Edelvariante, 
tag-connect.

http://www.tag-connect.com/

von Dominik E. (Gast)


Lesenswert?

Marc S. schrieb:
> was hälst du denn von einem sd bootloader? dann legst du das hex file
> auf die sd und der avr updated sich selbst.

hmm das kannte ich bisher noch nicht. Wäre eine Option. Allerdings ist 
das schon etwas umständlicher. Grad wenn ich an der Software was ändere 
wird debuggen sehr schwer.

LG
Dominik

von Brue W. (brue)


Lesenswert?

Nach dem SD-Standard brauchen alle Datenleitungen und die Command 
Leitung Pull-Up, auch wenn diese nicht benutzt sind wie z.B. im SPI 
Mode.
Der Standard sieht damit nicht vor, dass da im SPI Mode Datenleitungen 
"wackeln". Ob das jetzt die Karte stört musst du probieren. Wenn es bei 
der einen Karte funktioniert, muss das aber nicht heissen dass es bei 
allen geht.

Gruss

von Bernd T. (bastelmensch)


Lesenswert?

Die Platine kommt in ein Ei rein?

Sachen gibts...

Hast Du nach oben hin Platz?
Evtl. könnte ein Daughterboard Dein Problem lösen.

von Dominik E. (Gast)


Lesenswert?

Bernd T. schrieb:
> Die Platine kommt in ein Ei rein?
>
> Sachen gibts...

Hallo, ja die kommt in ein Ei :). mein Vater und ich züchten seit 2012 
hobbymäßig Bronzeputen (Videos von denen gibts auf meinem YouTube Kanal 
https://www.youtube.com/channel/UCLeeZEj2hHqsGiMasImQDxQ ).

Da wir die Eier sowohl in Naturbrut von den Hennen als auch im 
Brutapparat ausbrüten ist uns bald aufgefallen, dass es unter der Henne 
so gut wie nie zu Ausfällen während der Brut kommt (abgesehen von 
unbefruchteten Eiern). In der Brutmaschine kommt es dagegen öfters vor, 
dass Embryonen absterben oder beim Schlupf Probleme haben. Das Brutklima 
wird dabei laut Empfehlungen aus dem Netz eingestellt.

Daher kam uns vor zwei Jahren die Idee  der Henne ein Sensorei (3D 
Druck) unter zu jubeln um Daten über die realen Brutbedingungen zu 
sammeln. Wichtig sind eben Temperatur, Luftfeuchtigkeit und wie oft das 
Ei gewendet wird. Das alles wird während der 28 Bruttage aufgezeichnet. 
Auf der SD Karte habe ich ein Configfile wo ich die (ungefähre) 
Startzeit sowie das Aufzeichnungsintervall einstellen kann. Als 
Realtimeclock wird aus Kosten- und Platzgründen ein Timer des Atmega mit 
einem externen Uhrenquarz verwendet. Dabei tritt in einem Monat zwar ein 
Fehler von 10 min auf aber das ist für die Anwendung irrelevant.



Zwei Platinen zu stacken hab ich mir auch schon überlegt aber da bekomm 
ich Probleme mit dem Akku... Evtl könnte ich den aber durch ein oder 
zwei CR2012 Knopfzellen ersetzen. Am besten würde mir aber weiterhin 
meine Lösung mit der Programmierung über den SD Slot gefallen... fände 
ich sehr elegant (wenns denn funktioniert)

LG
Dominik

von Marc S. (marc_s86)


Lesenswert?

wie ware es den Schreibschutz schalter zu zweckentfremden? also wenn 
schreibgeschützte karte drin ist wird der reset auf die leitung 
geschaltet und sonst nicht.

von Jan H. (jan_m_h)


Lesenswert?

Brue W. schrieb:
> Nach dem SD-Standard brauchen alle Datenleitungen und die Command
> Leitung Pull-Up, auch wenn diese nicht benutzt sind wie z.B. im SPI Mode

Der AVR Reset braucht auch einen Pull-Up, somit könnte es funktionieren, 
solange einer der freien Pins ab der SD ein Eingang ist. Von 
“Wackeln“sollte die Karte nichts mitbekommen, ist beim programmieren ja 
nicht drin, so wie ich das kapiert habe?

von Pete K. (pete77)


Lesenswert?

Ist der Atmega328 in SMD oder DIP ausgeführt? Bei letzterem vielleicht 
einen Sockel vorsehen und extern programmieren.

Wie steht es mit einem seriellen Bootloader?

Mach mal ein Bild von Deiner Platine und Deinem Aufbau.

Alternativ einen ESP8266 einsetzen und die Daten per WLAN übertragen 
ohne Speicherung im Ei?

von Jürgen C. (cjr)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habs so gemacht und es hat problemlos funktioniert.
Habe leider im moment keinen Schaltplan parat, aber auf dem Bild
sollte es erkennbar sein
Ist aber eine SD Karte, keine Micro SD.

von Dominik E. (Gast)


Lesenswert?

Pete K. schrieb:
> Ist der Atmega328 in SMD oder DIP ausgeführt? Bei letzterem vielleicht
> einen Sockel vorsehen und extern programmieren.

Der Atmega ist in einem SMD Gehäuse. Serieller Bootloader ginge 
natürlich aber den muss ich ja auch erstmal irgendwie per ISP 
reinbekommen.

Pete K. schrieb:
> Alternativ einen ESP8266 einsetzen und die Daten per WLAN übertragen
> ohne Speicherung im Ei?

Wäre ein extrem nützliches und interessantes Feature die Daten "live" 
mitverfolgen zu können allerdings hab ich kaum Netzwerktechnisch 
garkeine Ahnung. Das zuverlässig hin zu bekommen wäre für mich 
wahrscheinlich mehr Aufwand als die Entwicklung des kompletten 
Datenloggers bisher.

Außerdem weiß ich auch nicht wie das bei so WLAN Modulen mit dem 
Stromverbrauch aussieht. Es hat einige Designiterationen gebraucht bis 
ich den Stromverbrauch soweit reduziert hatte, dass ich die Platine 
theoretisch mit einer einzigen CR2012 Knopfzelle für ein Monat betreiben 
könnte. Da spielten dann Dinge wie die parasitäre Versorgung über die 
I2C Pullupwiderstände und die ESD Schutzdioden der Sensoren eine 
Rolle... Hab mir dann extra einen uCurrent gekauft damit ich da die 
heimlichen Stromfesser finden und eliminieren konnte. Schlussendlich 
braucht die ganze Schaltung jetzt nurmehr wenige uA im Ruhezustand mit 
RTC.

Ich werde mir aber ganz bestimmt mal ein Breakoutboard von diesem 
ESP8266 zulegen und damit rumspielen. Könnte in Zukunft noch sehr 
nützlich werden - Danke für den Tipp.

Jürgen C. schrieb:
> ich habs so gemacht und es hat problemlos funktioniert.
> Habe leider im moment keinen Schaltplan parat, aber auf dem Bild
> sollte es erkennbar sein
> Ist aber eine SD Karte, keine Micro SD.

Super, das Probier ich die Tage mal mit meinen SD Karten aus.

LG
Dominik

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.