Home > Technologie > Eine Programmieranleitung für unsere DougsWordClock.com DeskClock Boards

Eine Programmieranleitung für unsere DougsWordClock.com DeskClock Boards

0
Advertisement

Eine Programmieranleitung für unsere DougsWordClock.com DeskClock Boards

Hey - Es hat * Alter gewesen * da ich etwas Instructables eingereicht an die Gemeinde zurück zu geben, so dass ich dachte , ich würde teilen , wie ich unsere neue Programmierung Rig für den Brettern gebaut, die in der verwendeten www.dougswordclock.com DeskClocks.

Sie wissen, wie es geht, haben Sie ein erstaunliches Projekt erstellt und erzählte viele Menschen darüber und sicher genug Tonnen von Menschen möchte eine für sich. Sie erhalten die Leiterplatten hergestellt, und verbringen Altersgruppen mit Lötpaste und Komponenten, Reflow-Löten und die Installation der Nicht-Reflow-Komponenten, dann starten Sie laden Microcode in den Controller, so dass das Projekt macht, was es zu tun ist ... Wow - Was für eine Menge Schritte!

Laden des Mikrocodes ????? Yep - wie Sie vielleicht wissen, ist ein Computer ohne Software ziemlich nutzlos. Alle unsere Uhren haben ein spezielles Programm in sie geladen, so dass sie die Zeit richtig zu sagen. Wenn ich die Bretter für die Uhren baue, gibt es keine Software, die in den Mikrocontroller-Chip geladen wird (der Chip ist zu klein, um in einen normalen Programmierer zu stecken) - Dieser Prozess bringt die Software in den Chip, so dass die Uhr funktionieren kann.

In den alten Tagen (vor ein paar Wochen :-)) Ich benutzte einen Laptop, einen USBTiny Programmierer und die wunderbare AVRDUDE Software, um die Boards zu programmieren - ich würde an meinem Schreibtisch in der Werkstatt sitzen, den Programmierbefehl in den Computer eingeben, Halten Sie das Programmierkabel gegen die Uhr und drücken ENTER. Der Computer würde dann pflichtbewusst Programm das Board für mich und ich würde getan werden. Der einzige Haken dabei ist, dass ich die ganze Zeit dort sitzen muss, so dass ich beschlossen, dass einer meiner Mitarbeiter es stattdessen tun konnte .... Leider fand er, dass er manchmal das Kabel ein kleines bisschen den Programmieraufwand verursachte Und er müsse wieder von vorne anfangen. Um das Problem zu verknüpfen, wenn es einen Lötfehler gab, würde der USB-Port meines Laptops heruntergefahren und die USBTiny müsste unplugged und reseated werden, um den USB-Port zurückzusetzen ..... Es musste einen besseren Weg geben !! Wie haben die Big Boys das gemacht?

Es stellt sich heraus, dass die Big Boys (TM) Roboter, die sehr gut halten Kabel noch und funky Elektronik, die Tests tun können sind. Weil DougsWordClock.com läuft aus meinem garrage, war ich wahrscheinlich nicht dorthin zu jeder Zeit bald, so was könnte ich tun, um unser Leben zu erleichtern? Wie mein Freund Mikal sagen würde .... "Build a jig!". (Anmerkung 1)

Also hier haben wir die Jig, die Doug gemacht! Während es speziell für die Programmierung der DougsWordClock.com DeskClock-Boards konzipiert wurde, können die Konzepte hier auf jedes andere mikroprozessorbasierte Projekt erweitert werden, das Sie in der Masse bauen, also haben Sie gelesen, wie ich das Problem gelöst und sehen, was Sie selbst machen können!

Lasst uns beginnen.

-------------------------------------------------- aufrechtzuerhalten.

Anmerkung 1 - Anfang 2000 fiel mein bester Freund Mikal in meine Werkstatt, als ich eine Reihe von Regalen baute - ich war Routing Gelenke, was eine langweilige repetitive Aufgabe war - sagte Mikal "Build a Jig!" Ich sagte: "Zu schwer - ich werde bald fertig sein" - Er sagte: "Nahh, lass es einfach tun" .... Wir haben. Lange Geschichte kurz, die Einfachheit des Aufbaus einer Lehre, gepaart mit der Tatsache, dass ich nicht daran gedacht habe, schlug mein Ego hart ... Ich beschloss, war nutzlos .... (Go-Abbildung) .. Irgendwann, schnappte ich aus Es und beschlossen, einen Artikel zu schreiben, um der Welt zu beweisen, dass ich nicht nutzlos war - So habe ich ein PIC-basierte elektronische Würfel Projekt. Es war sogar veröffentlicht von Silicon Chip Magazin - (http://archive.siliconchip.com.au/cms/A_102324/printArticle.html) Wahre Geschichte, und wahrscheinlich der Anfang zu mir brechen zurück in die Verwendung von Mikrocontrollern für Projekte und Artikel schreiben. aufrechtzuerhalten.

Schritt 1: Das DeskClock Board

Eine Programmieranleitung für unsere DougsWordClock.com DeskClock Boards

Zuerst begann ich mit dem DeskClock Board. Wenn ich es entworfen, habe ich einen 6-poligen Stecker, um ein Programmierkabel angeschlossen werden - Hier ist ein Foto der Platine, die die verschiedenen Anschlüsse.

Natürlich - wenn wir Komponenten auf die Platine laden, bevölkern wir diese Steckverbinder nicht - sie sind einfach zum Programmieren und Testen.

Die Seite in diesem Foto von der Rückseite des Boards, im Gegensatz zu der Vorderseite des Boards mit allen LEDs - es wird zuerst bevölkert. Während der Herstellung.

Ich verwendete dieses Brett, um sehr sorgfältig die Lage und den Abstand der verschiedenen Verbindungen zu messen, die ich an anschließen wollte.

Jetzt - wie bin ich mit dem Board verbunden? Froh, dass Sie gefragt. Ich verwendete Pogo Stifte!

Schritt 2: Pogo Pins und andere Hardware

Eine Programmieranleitung für unsere DougsWordClock.com DeskClock Boards

Eine Programmieranleitung für unsere DougsWordClock.com DeskClock Boards

Eine Programmieranleitung für unsere DougsWordClock.com DeskClock Boards

Eine Programmieranleitung für unsere DougsWordClock.com DeskClock Boards

Pogo-Pins sind das, was Profis verwenden, um temporäre Verbindungen zu Brettern zu machen, wenn sie sie testen. Sie sind in vielen Größen und Formen erhältlich und verfügen über einen präzisionsfederbelasteten Mechanismus, um sicherzustellen, dass der Stift mit gleichmäßigem Druck gegen die Platine geschoben wird.

Ich habe meine Pogo-Pins von einem Lieferanten bei eBay - Sie waren billig genug, dass ich glaube, ich habe eine Lebensdauer Angebot jetzt! Der gleiche Lieferant lieferte mir auch die andere knifflige Hardware, die ich brauchte, um die Platine nach unten zu klemmen.

Hier sind ein paar Fotos von den Pins selbst, die nifty Board Klemme, und die Gummi-Board Abstand Halterungen.

Schritt 3: Messen und Herstellen der Halterung für das Board

Eine Programmieranleitung für unsere DougsWordClock.com DeskClock Boards

Eine Programmieranleitung für unsere DougsWordClock.com DeskClock Boards

Eine Programmieranleitung für unsere DougsWordClock.com DeskClock Boards

Eine Programmieranleitung für unsere DougsWordClock.com DeskClock Boards

Eine Programmieranleitung für unsere DougsWordClock.com DeskClock Boards

Eine Programmieranleitung für unsere DougsWordClock.com DeskClock Boards

Also, ich habe die Pogo Pins und andere Montage-Hardware. Ich maß sorgfältig die Lochgrößen und den Abstand und verursachte ein Layout für meinen Laser-Scherblock. Ich könnte auch einfach Bohrungen mit einem Bohrer gebohrt haben, aber der Messer hat einen schön wiederholbaren Job.

Ich beschloss, die Löcher so zu platzieren, dass die Stifte nicht in der Mitte der Pad-Löcher waren - dies sorgte dafür, dass die Stifte mit der Platine fest in Kontakt kamen.

Ich habe auch Platz für die Clamp und einige Registerkarten für die Rückseite des Boards.

Im Falle der DeskClock Bord, gibt es eine 2,1 mm axiale Steckdose auf der Platine installiert, dass ich hatte ein Relief Loch für und schließlich nicht vergessen, die Gummi-Halterungen, um die Rückseite des Boards zu unterstützen.

Schritt 4: Ein Himbeer-Pi für die Gehirne und eine 1,8 "Farbdisplay

Eine Programmieranleitung für unsere DougsWordClock.com DeskClock Boards

Eine Programmieranleitung für unsere DougsWordClock.com DeskClock Boards

Eine Programmieranleitung für unsere DougsWordClock.com DeskClock Boards

Eine Programmieranleitung für unsere DougsWordClock.com DeskClock Boards

Ich brauchte etwas, um meinen Laptop zu ersetzen, so dass ich beschlossen, die Himbeer-PI verwenden.

Es montiert leicht an der Basis des Programmierers und verwendet ein einfaches 26-Wege-Kabel an die GPIO-Pins angeschlossen, um mit der DeskClock-Board und dem Display und dem Kippschalter zu verbinden.

Die spezifische Pin-Konfiguration, die ich verwendet, ist nicht wichtig - Sie werden Ihre eigenen auf Ihre Bedürfnisse zu verwenden.

Die Anzeige , die verwendet wird , ein 1.8 "Display von Sainsmart - ich vor , falls ein Haufen von ihnen 6 Monate brachte ich für sie eine Verwendung gefunden - Das war nur der Einsatz folgte ich Marks Blog http://marks-space.com/ 2012/11 / 23 / Raspberry Pi-tft / Linux - Kernel neu zu erstellen um die Anzeige zu unterstützen.

Mark hatte Recht - kompiliert den Kernel auf dem Pi war ein SLOW-Prozess - ich ließ es laufen über Nacht.

Verdrahtung der Anzeige war einfach, und ziemlich schnell hatte ich ein funktionierendes FrameBuffer2 Gerät.

Schritt 5: Eine Tasche zum Halten der 1.8 "Anzeige

Eine Programmieranleitung für unsere DougsWordClock.com DeskClock Boards

Eine Programmieranleitung für unsere DougsWordClock.com DeskClock Boards

Ich brauchte einen Weg, um das LCD-Display auf der Jig montieren, so dass es nicht rasseln. Ich cam mit einem einfachen Iden - nur eine abgewinkelte Tasche für sie.

Es sitzt ordentlich an der Vorderseite des Gerätes, in einem Winkel für den Benutzer, um die Anzeige leicht zu sehen.

Die Anzeige passt gut, aber falls sie sich entscheiden sollte, heraus zu schieben, und 3mm Nylonschraube hält an Ort und Stelle.

Es ist lustig, ich vergaß seit etwa 20 Jahren, wie einfach Acryl zu arbeiten ist. Ich habe es in der Schule in der Schule, dann prompt vergessen. Jetzt hat meine Werkstatt Eimer des Zeugs :-)

Schritt 6: Das Pi ist ein Programmierer

Der nächste Teil des Builds war die Suche nach Software, um mir die Programmierung der Platine direkt mit dem Pi. Ich beschloss , das Verfahren zu verwenden , die Steve Marple auf seinem Blog erklärt: http://blog.stevemarple.co.uk/2013/03/how-to-use-gpio-version-of-avrdude-on.html .

In meinem Fall verwendete ich verschiedene GPIO Stifte als das 1.8 "LCD-Anzeige in Konflikt mit ihnen.

Es gab ein lautes Quietschen der Freude, als ich entdeckte, dass der Pi korrekt programmierte.

Einige Leute haben Level-Shifter verwendet, um die PI zu schützen - habe ich nicht und das Projekt funktioniert einfach.

Schritt 7: Ein Toggle-Schalter, um Strom aus der DeskClock-Karte zu entfernen

Eine Programmieranleitung für unsere DougsWordClock.com DeskClock Boards

Ich beschloss, einen Kippschalter zu installieren, um die Stromversorgung aus dem DeskClock-Board zu entfernen, und dem PI zu sagen, wann es Zeit war zu starten.

Der Schalter war ein DPDT, also eine Hälfte an + 5v angeschlossen und die andere Hälfte an einen unbenutzten GPIO-Pin angeschlossen.

Wenn der Schalter ausgeschaltet war, war der GPIO-Pin geerdet, und wenn er eingeschaltet war, wurde der GPIO-Pin hochgezogen. Ich habe einen 100 Ohm Widerstand verwendet, um sicherzustellen, dass der GPIO-Pin gepuffert wurde, falls er auf einen Ausgang eingestellt war.

Schritt 8: Software in der Pi, um es alle Togehter

Als nächstes schrieb ich mein erstes Python-Programm.

Ich bin ein C-Programmierer - Zum Glück gibt es Eimer Tutorials zu helfen.

Ich habe die meisten der Code aus einer Reihe von Proben, wo jemand ihre PI als Wetter-Display verwendet.

Hier ist der Code für das Python-Skript, das die Schaltfläche liest und die Anzeige steuert

#! / Usr / bin / python

import pygame
import sys
Importzeit
Von Zeit import strftime
import os
Import-Teilprozess
Importieren Sie RPi.GPIO als GPIO
GPIO.setmode (GPIO.BCM)

#set das Framebuffer-Gerät auf den TFT
Wenn nicht os.getenv ( 'SDL_FBDEV'):
Os.putenv ( 'SDL_FBDEV', '/ dev / fb1')
Os.putenv ( 'SDL_VIDEODRIVER', 'fbcon')

Def displayTime ():
# Zum Anzeigen des Datums und der Uhrzeit des TFT
Screen.fill ((0,0,0))
Font = pygame.font.Font (Keine, 50)
Jetzt = time.localtime ()

Zur Einstellung in [( "% H:% M:% S", 60), ( "% d% b", 10)]:
Timeformat, dim = Einstellung
CurrentTimeLine = strftime (Zeitformat, jetzt)
Text = font.render (currentTimeLine, 0, (0,250,150))
Surf = pygame.transform.rotate (Text, -90)
Screen.blit (Surf, (dim, 20))

Def displayText (Text, Größe, Linie, Farbe, clearScreen):
# Zum Anzeigen von Text auf dem TFT-Bildschirm
Wenn clearScreen:
Screen.fill ((0,0,0))

Font = pygame.font.Font (Keine, Größe)
Text = font.render (Text, 0, Farbe)
TextRotated = pygame.transform.rotate (Text, -90)
Textpos = textRotated.get_rect ()
Textpos.centery = 80
Wenn Zeile == 1:
Textpos.centerx = 90
Screen.blit (textRotated, textpos)
Elif line == 2:
Textpos.centerx = 40
Screen.blit (textRotated, textpos)

Def main ():
globalen Bildschirm
Pygame.init ()

Größe = Breite, Höhe = 128, 160 mm
Schwarz = 0,0,0
ROT = 255,0,0
GRÜN = 0,255,0
BLAU = 0,0255
WHITE = 255,255,255

Fail_cnt = 0

GPIO.setup (18, GPIO.IN)

Pygame.mouse.set_visible (0)
Screen = pygame.display.set_mode (Größe)

DisplayText ( "DougsWordClock", 20, 1, GREEN, True)
DisplayText ( "150mm Programer", 20, 2, BLAU, Falsch)
Pygame.display.flip ()
Zeitschlaf (5)

DisplayText ( "Firmware Rev", 20, 1, ROT, Wahr)
DisplayText ( "20130520", 40, 2, WEISS, Falsch)
Pygame.display.flip ()
Zeitschlaf (5)

Während True:
DisplayText ( "Waiting", 30, 1, GREEN, True)
DisplayText ( "Einsteckkarte", 20, 2, BLAU, Falsch)
Pygame.display.flip ()
Wenn (GPIO.input (18)):

DisplayText ( "Programmierung", 30, 1, (200,200,1), True)
DisplayText ( "Wartezeit 10 Sek.", 30, 2, ROT, Falsch)
Pygame.display.flip ()

Und hier ist das Shell-Skript, das eigentlich die Programmierung:

#! / Bin / sh
Cd / home / pi
Sudo avrdude -c gpio -p m169 -Verwenden: w: 0xf5: m -U hfuse: w: 0xDa: m -U lfuse: w: 0xFF: m -Uflash: w: DeskClock-Prod.hex

Natürlich wird Ihre Jig haben unterschiedliche Software :-)

Schritt 9: ES IST ALLE WERKE !!!

Eine Programmieranleitung für unsere DougsWordClock.com DeskClock Boards

Eine Programmieranleitung für unsere DougsWordClock.com DeskClock Boards

Eine Programmieranleitung für unsere DougsWordClock.com DeskClock Boards

Schließlich hatte ich das viel verbunden, und es funktionierte ein Leckerbissen!

Ich lernte einen Haufen über das Fahren dieser kleinen 1,8 "LCD-Displays, bis zu dem Punkt, wo sie jetzt bin ich an der Reihe, um Gerät für triviale Pi-Projekte.

Anyway - Hier sind ein paar Fotos von ihm in Aktion.

Genießen.

Wohin von hier?

Nun, das ist eine coole Frage - Derzeit programmiert der Programmierer einfach das Board und überprüft, dass das Mikro richtig geflasht wurde. Wir untersuchen den Betrieb der LEDs visuell (daher die helle Anzeige) - Der nächste Schritt besteht darin, eine Funktion hinzuzufügen, die mit der Trittplatine kommunizieren kann, um die Genauigkeit der RTC-Chip / Kristall-Kombination zu überprüfen und dabei die Zeit mit einem Internet zu vergleichen Standard. Das sollte nicht zu hart sein ..... :-)

Related Reading