=======shackuino======= {{tag>project hardware electronics}} **Projektverantwortlicher: [[leute:manu|Manuel Jerger]]**\\ Shackuino ist ein auf guenstig und flexibel getrimmtes Mikrocontroller-Board auf Basis des ATMega168. Es ist kombatibel zum [[http://arduino.cc/en/Main/ArduinoBoardDiecimila|Arduino Diecimila]] und kann ganz einfach seriell per Bootloader programmiert werden. USB kann mit einem guenstigen Adapterkabel nachgeruestet werden. {{:project:shackuino:t_finished.jpg|}} [[http://shackspace.de/wiki/lib/exe/fetch.php?cache=&media=project:shackuino:whole.png|{{:project:shackuino:t_whole.png}}]] [[http://shackspace.de/wiki/lib/exe/fetch.php?cache=&media=project:shackuino:shackuino_all.png|{{:project:shackuino:t_shackuino_all.png}}]] ======Was ist Arduino?====== Die Arduino-Plattform ist eine aus Soft- und Hardware bestehende Physical-Computing-Plattform. Beide Komponenten sind im Sinne von Open Source quelloffen. Die Hardware besteht aus einem einfachen I/O-Board mit einem Mikrocontroller und analogen und digitalen Ein- und Ausgängen. =====Hardware===== Das Microcontroller-Board basiert auf einem 8-Bit megaAVR RISC Prozessor von Atmel, genauer gesagt ein ATmega168. Es ist kompatibel zu einem [[http://arduino.cc/en/Main/ArduinoBoardDiecimila|Arduino Diecimila]] und kann auch mit dessen Bootloader betrieben werden. Es handelt sich dabei um einen seriellen STK500 Bootloader, welcher das Programmieren per serieller Schnittstelle ermoeglicht. Man benoetigt somit kein weiteres Geraet, der Prozessor programmiert sich praktisch selbst. =====Arduino IDE===== Zur Arduino-Plattform gehoert auch eine Entwicklungsumgebung. Sie beruht auf Processing (einem Java-Dialekt) und Wiring (einem C-Dialekt) und stellt mit Bibliotheken einfach aufzurufende Funktionen fuer fast jede Aufgabe zur Verfuegung.\\ **Die IDE gibt es auf [[http://arduino.cc/en/Main/Software|Arduino.cc]] ** Beispiel: Analogeingang 0 auslesen (0-5V, 10bit), an den Seriellport schicken und mit Screen oder dem Serial Monitor der IDE anzeigen lassen. void setup() { Serial.begin(9600); } void loop() { int analogValue = analogRead(0); Serial.println(analogValue); delay(10); } ======Teileliste====== ^ Name ^ Teil ^ Wert ^ Bauform ^ Weiteres ^ |C1, C4|Keramikkondensator fuer IC1/IC2 | 100 nF | 2.5mm Raster | ungepolter Kondensator | |C2, C3|Keramikkondensator fuer Quarz | 22 nF | 2.5mm Raster | ungepolter Kondensator | |(C5)¹| Keramikkondensator fuer IC3 | 100nF | 2.5mm Raster | ungepolter Kondensator | |C8/9/10/12 | Elektrolytkondensator fuer IC2 | 1uF | 2.5mm Raster | Polung +/- ist gekennzeichnet | |(C6)¹| Elektrolytkondensator fuer IC3 | 1uF | 2.5mm Raster | Polung +/- ist gekennzeichnet | |C7 | Elektrolytkondensator VCC | 100uF | 2.5mm Raster | Polung +/- ist gekennzeichnet | |R2, R6, R7 | Vorwiderstand fuer LED1-3 | ~ 300-1000 Ohm | 1/4W| - | |R5 | Reset Pullup-Widerstand | > 10k | 1/4W| - | |- | Quarz | 16 MHz | flache Bauform | Polung ist egal | |D1| Schutzdiode als Verpolungsschutz| 1N4001/1N4004/... | | Ring auf Teil und Platine gekennzeichnet | |IC1 | Microcontroller | Atmega168-20PU | 28 pin DIP | Sockel ist mit dabei | |IC2 | Pegelwandler fuer RS232 Schnittstelle | MAX232N | 16 pin DIP | Sockel ist dabei | |(IC3)¹| 5V Festspannungsregler | 7805 Standard|TO-220| Kennzeichnung fehlt: Metall-/Montageflaeche am Platinenrand | |S0|Reset Taster | |6x6mm| Name fehlt im Aufdruck | |S1,S2| optionale Taster | | 6x6mm | active-low an D2 / D3 | |LED1|Power LED | gruen | 3mm | Minuspol am Platinenrand / kurzes Beinchen an LED | |LED2/3|optionale LEDs | rot/gelb | 3mm | an den Ausgaengen D4 / D5 | |ISP|2x5 Pol Wannenstecker | | 2.54mm Raster |Auskerbung zeigt zur Platinenmitte | |RS232| Steckverbinder fuer Serielle Schnittstelle | | 9pol D-SUB EU Version | Typ male/female nach Bedarf und Kabelangebot | |-|DC Hohlbuchse | |Øi= 2.5mm Øa=5.5mm, Loetfahnen | Stecker und halbes USB Kabel ist dabei | ---- ¹ : Benoetigt wenn ein Spannungsregler verwendet wird ======Aufbauanleitung====== ===== Werkzeug & Material ===== * Loetkolben mit Ablage und feuchtem Schwaemmchen * Loetzinn * Präzisions-Seitenschneider * Spitzzange * Entloetpumpe oder Entloetlitze * Geduld ===== Vorbereitung ===== * Loetkolben auf 350 °C einstellen * Bausatz auf Vollstaendigkeit ueberpruefen ===== Schritt 1 ===== {{:project:shackuino:t_sw_step1.png}} {{:project:shackuino:t_step1.jpg}} ^ ^ ^ |C2, C3|Keramikkondensator 22pf|Polung egal| |X1|Quarz 16 MHz|Polung egal| |R2, R6, R7| Widerstand 470 Ohm | | |R5|Widerstand 10k| | |D1|Diode|auf den Strich achten| |C1, C4, C5|Keramikkondensator| Polung egal| |-|Drahtbruecke|Brueckt I und O von IC3 | ===== Schritt 2 ===== {{:project:shackuino:t_sw_step2.png}} {{:project:shackuino:t_step2.jpg}} |IC1|28 pin Sockel|auf Markierung (Nase) achten| |IC2|16 pin Sockel|auf Markierung achten| ===== Schritt 3 ===== {{:project:shackuino:t_sw_step3.png}} {{:project:shackuino:t_step3.jpg}} ^^^^ | LED | 3mm LED gruen | plus = langes beinchen| | LED2/3 | 3mm LED rot / gelb | kann durch dual-led Ersetzt werden| | S1/S2/S3 | Taster 6x6mm | | ===== Schritt 4 ===== {{:project:shackuino:t_sw_step4.png}} {{:project:shackuino:t_step4.jpg}} |ISP| 2x5 pol Wannenstecker|Nase zeig zur Platinenmitte, Pin 1 ist links unter 'ISP'| |RS232|D-Sub 9Pol Buchse|-| |-|DC Hohlbuchse|leicht schraeg anloeten da wenig Platz fuer Stecker)| |C8/9/10/12|Elektrolytkondensator 1uF|C11 nicht bestuecken| |C7|Elektrolytkondensator 100uF| auf Polung achten! Minus bzw Plus ist markiert| |-|8pin Buchsenleisten|z.B. wie dargestellt verteilen| ===== Schritt 5 ===== Die Anschlussdraehte beider ICs auf der Tischplatte oder mit einer IC Quetsche geradebiegen, sodass sie in die Fassung passen.\\ Beim Einsetzen auf die Markierung sowie das unbeabsichtigte Verbiegen von Beinchen achten. =====Layout===== ^ Kupfer oben ^ Kupfer unten (from top) ^ |[[http://shackspace.de/wiki/lib/exe/fetch.php?cache=&media=project:shackuino:shackuino_top.png|{{project:shackuino:t_shackuino_top.png}}]]| [[http://shackspace.de/wiki/lib/exe/fetch.php?cache=&media=project:shackuino:shackuino_bot.png|{{project:shackuino:t_shackuino_bot.png}}]]|\\ ^ Silkscreen & Pads ^ alles zusammen ^ |[[http://shackspace.de/wiki/lib/exe/fetch.php?cache=&media=project:shackuino:shackuino_silk.png|{{project:shackuino:t_shackuino_silk.png}}]]|[[http://shackspace.de/wiki/lib/exe/fetch.php?cache=&media=project:shackuino:shackuino_all.png|{{project:shackuino:t_shackuino_all.png}}]]| =====Features im Ueberblick===== ====Allgemeines zur Platine==== * nur Through-Hole Bauteile! * 76x43mm * __alles wichtige im 2.54 mm Raster__ * zweiseitig Kupfer, zweiseitig Loetstopp, einseitig Bestueckungsaufdruck ====Prozessor==== * 16 MHz Quarz * ATmega168 (16 KB Flash, 128B RAM) * mit Reset-Taste * Autoreset per RS232 zum bequemen Programmieren * programmierbar wie jeder Arduino per IDE oder Makefile ====Programmierschnittstelle==== * Board wird einmal per ISP Programmiert (Bootloader), dann per Serieller Schnittstelle und z.B. Arduino IDE. * 10pol. ISP Stecker (gewinkelt oder senkrecht) * RS232 (Seriell): * ein Max232 (Serielle Schnittstelle) statt einem FTDI * Ein USB->Seriell Kabel gibts schon ab 2 EUR ====Stromversorgung==== * fuer Eingangspannung > 5V (z.B. Netzteil, 9V Block) * Linearregler 7805, 5V im TO-220 Gehaeuse (1-1.5A) * 2.5mm DC Buchse * fuer Spannung 3V-5V * Spannungsreglerteil kann weggelassen werden * Kabel koennen direkt angeloetet werden * z.B. 2x oder 3x 1.5V Batterien) ====Input/Output Ports==== * 14 Digitale Ein/Ausgaenge * 6 Analogeingaenge : 10 Bit ADC * Aref verwendbar * auch als digitale IOs nutzbar ====Ueber die 'anschlussfreudigen' Pinreihen ==== Ueber und unter den zweireihigen Ein/Ausgaengen befindet sich jeweils eine Reihe Masse (GND), und eine Reihe Versorgungsspannung (meist 5V).\\ Dies hat zahlreiche Vorteile und man ist mit der Bestueckung sehr flexibel: * bei den doppelreihe IO-Pins: * Stiftleiste von UNTEN und Buchsenleiste von OBEN => Sandwich mit Lochraster in beide Richtungen moeglich (beliebig stapelbar) * Stiftleiste von unten + Steckbrett * bei den GND / VCC Pins: * doppelreihiger Wannenstecker auf GND/IO, dazu ein Flachbandkabel => jeder zweiter Pin Masse (EMV FTW!) * alles mit Buchsenleisten ausfuellen = kleines Steckbrett * Servo einfach anschliessbar * 5V LEDs direkt dran * Potis mit VCC + Analog + GND = Drehregler mit Arduino in 5 Sekunden realisiert (ein einziger Befehl zum auslesen) ====zwei Eingabetaster onboard==== * optional da keine spezielle Funktion * einfaches Pulldown an Interrupt-Eingaengen -> Interne pullups aktivieren, delay counten wegen: * keine Hardwareentprellung. This is just a switch! * an D2 / D3 ====zwei LEDs onboard==== * optional da keiner speziellen Funktion zugeordnet * auch 3-pin Dual-LED moeglich * angeschlossen an D4 und D5 =====Shield - nom nom sandwich!===== * Da die IO-Pins sowie ISP Schnittstelle im 2.54mm Raster (0.1 inch) angeordnet sind, kann man beliebig Loch/Streifenrasterplatinen drauf und drunterstapeln.\\ * Durch zwei Reihen IO-Pins ist dies auch ohne spezielle Stapelheader (Buchsenleisten mit extralangen Beinen) moeglich.\\ | {{:project:shackuino:t_CIMG3880.jpg}} | {{:project:shackuino:t_CIMG3879.jpg}}| =====Eagle Layout===== Schematic: [[http://nomnom.de/stuff/mcf/shackuino serial.sch|shackuino serial.sch]]\\ Board: [[http://nomnom.de/stuff/mcf/shackuino serial.brd|shackuino serial.brd]]\\ =====Schaltplan===== zum Vergroessern klicken\\ [[http://shackspace.de/wiki/lib/exe/fetch.php?cache=&media=project:shackuino:schematic.png|{{:project:shackuino:t_schematic.png}}]]\\ [[http://shackspace.de/wiki/lib/exe/fetch.php?cache=&media=project:shackuino:schematic.pdf|Download Schematic (PDF)]] =====Bestueckungsbeispiele===== | {{project:shackuino:t_CIMG3671.JPG}} | {{project:shackuino:t_CIMG3688.JPG}} | | Bestueckungsbeispiel D-SUB Buchse und Platinenklemmen | Bestueckungsbeispiel D-SUB Stecker und DC-Hohlbuchse | ---- | {{project:shackuino:t_CIMG3895.JPG}} | {{project:shackuino:t_CIMG3887.JPG}} | | Breadboard-Bestueckung | | ---- =====Errata===== ^ Problem ^ Loesung ^ | Stromversorgung und Seriellbuchse sind fuer manche Kabel zu eng beieinander | DC Buchse leicht verdreht einloeten | | im Eagle Design befinden sich ein paar Kennzeichnungen auf der falschen Ebene und sind daher nicht gedruckt worden | zu spaet fuer die ersten Platinen | | C11 ist ueberfluessig | egal, die Pins sind VCC + GND und somit praktisch | | Proportionalschriftart ist erwartungsgemaess bei der Vektorisierung verrutscht | | | zu breite Stege bei den Waermefallen und eine zu sauber verarbeitete Platine ergibt eine gigantischen Waermeleitfaehigkeit | Dicke Loetspitze verwenden und Temperatur erhoehen | | C6¹ ist mit 100uF viel zu gross gewaehlt worden | 1uF Kondensator verwenden oder ganz weglassen | ---- ¹ : Nur wenn ein Spannungsregler verwendet wird