Un gabarit de programmation pour nos cartes DougWordClock.com DeskClock: 9 étapes

Un gabarit de programmation pour nos cartes DougWordClock.com DeskClock: 9 étapes

Table des matières:

Anonim

Hé - Cela fait très longtemps que j'ai soumis quelque chose à Instructables à redonner à la communauté. Je pensais donc partager avec vous la façon dont j'avais construit notre nouvelle plate-forme de programmation pour les cartes utilisées dans les DeskClocks de www.dougswordclock.com.

Vous savez comment ça se passe, vous avez créé un projet extraordinaire, en avez parlé à beaucoup de gens et vous êtes sûr que suffisamment de personnes voudraient en avoir un pour eux-mêmes. Vous obtenez les cartes de circuits imprimés et appliquez longuement la pâte à souder et ses composants, le soudage par refusion et l'installation des composants sans refusion, puis vous commencez à charger le microcode dans le contrôleur afin que le projet fasse ce qui est prévu ….. Wow - Combien d'étapes!

Chargement du microcode ????? Oui, comme vous le savez peut-être, un ordinateur sans logiciel est plutôt inutile. Un programme spécial est chargé dans toutes nos horloges pour leur permettre de lire l'heure correctement. Lorsque je construis les cartes pour les horloges, aucun logiciel n'est chargé dans la puce du microcontrôleur (la puce est trop petite pour être programmée) - Ce processus place le logiciel dans la puce afin que l'horloge puisse fonctionner.

Dans l'ancien temps (il y a quelques semaines:-)), j'ai utilisé un ordinateur portable, un programmeur USBTiny et le merveilleux logiciel AVRDUDE pour programmer les cartes - je restais assis à mon bureau dans l'atelier, saisissait la commande de programmation dans l'ordinateur, Tenez le câble de programmation contre l'horloge et appuyez sur ENTER. L'ordinateur programmerait alors consciencieusement le tableau pour moi et j'aurais terminé. Le seul inconvénient, c'est que je dois rester assis tout le temps. J'ai donc décidé qu'un de mes employés pourrait le faire à la place … Malheureusement, il a parfois constaté qu'il déplaçait légèrement le câble, ce qui a pour effet de échouer et il devrait recommencer. Pour aggraver le problème, s'il y avait une erreur de soudure, le port USB de mon ordinateur portable s'éteindrait et l'USBiny devrait être débranché et réinstallé pour réinitialiser le port USB ….. Il devait y avoir un meilleur moyen !! comment les Big Boys l'ont-ils fait?

Il se trouve que les Big Boys (tm) ont des robots qui sont très efficaces pour tenir des câbles immobiles et une électronique géniale qui peut effectuer des tests. DougsWordClock.com étant à court de mon garrage, il était peu probable que j'y parvienne de si tôt, alors que puis-je faire pour nous simplifier la vie? Comme dirait mon ami Mikal … "Construis un gabarit!". (Note 1)

Nous avons donc le gabarit que Doug a fabriqué! Bien qu'il soit spécialement conçu pour programmer les cartes DeskClock de DougsWordClock.com, les concepts présentés ici peuvent être étendus à tout autre projet basé sur un microprocesseur que vous construisez en bloc. Découvrez donc comment j'ai résolu le problème et voyez ce que vous pouvez réaliser vous-même!

Commençons.

-------------------------------------------------------

Remarque 1 - Au début des années 2000, mon meilleur ami Mikal est entré dans mon atelier alors que je construisais un ensemble d'étagères. J'acheminais des joints, ce qui était une tâche répétitive ennuyeuse. Mikal a dit "Construis un gabarit!" J'ai dit "Trop dur - je vais bientôt avoir fini" - Il a dit "Nahh, allons-y, faisons-le" … Nous l'avons fait. Bref, la simplicité de la construction d'un gabarit, associée au fait que je n'y pensais pas, frappa fort mon ego … J'ai décidé que c'était inutile … (allez comprendre).. Finalement, j'ai brisé et j'ai décidé d'écrire un article pour prouver au monde que je n'étais pas inutile - J'ai donc conçu un projet de dés électronique basé sur PIC. Il a même été publié par le magazine Silicon Chip - (http://archive.siliconchip.com.au/cms/A_102324/printArticle.html) Une histoire vraie, et probablement le début de mon retour à l’utilisation des microcontrôleurs pour les projets et la rédaction d’articles..:-)

Provisions:

Étape 1: Le bureau DeskClock

Tout d'abord, j'ai commencé avec le tableau DeskClock. Lorsque je l’ai conçu, j’ai fourni un connecteur à 6 broches pour permettre la connexion d’un câble de programmation - Voici une photo de la carte, montrant les différents connecteurs.

Bien sûr, lorsque nous chargeons des composants sur la carte, nous ne peuplons pas ces connecteurs. Ils sont simplement là pour la programmation et les tests.

Le côté sur cette photo de l'arrière du tableau, par opposition à l'avant du tableau avec toutes les DEL - il est rempli en premier. pendant la fabrication.

J'ai utilisé cette carte pour mesurer très soigneusement l'emplacement et l'espacement des différentes connexions auxquelles je voulais me connecter.

Maintenant - comment je me suis connecté au tableau? Content que tu aies demandé. J'ai utilisé des épingles Pogo!

Étape 2: Épingles Pogo et autre matériel

Les broches Pogo sont ce que les professionnels utilisent pour établir des connexions temporaires avec les cartes lorsqu’ils les testent. Ils sont disponibles dans de nombreuses tailles et formes et disposent d'un mécanisme de précision à ressort pour assurer que la goupille est poussée contre la planche avec une pression uniforme.

J'ai acheté mes épingles Pogo d'un fournisseur sur eBay. Elles étaient assez bon marché pour que je pense avoir un approvisionnement à vie maintenant! Le même fournisseur m'a également fourni le matériel compliqué que je devais utiliser pour verrouiller la carte.

Voici quelques photos des broches elles-mêmes, de la pince astucieuse pour carte et des supports d’espacement pour planche en caoutchouc.

Étape 3: Mesurer et réaliser le support pour le conseil

J'ai donc les broches Pogo et d'autres accessoires de montage. J'ai soigneusement mesuré la taille et l'espacement des trous et créé une présentation pour mon découpeuse au laser. J'aurais aussi simplement pu percer des trous à l'aide d'une perceuse, mais la fraise fait un travail magnifiquement reproductible.

J'ai décidé d'espacer les trous de manière à ce que les broches ne soient pas au centre des trous des tampons - cela garantissait que les broches entraient bien en contact avec la carte.

J'ai également conçu un espace pour la pince et quelques languettes pour le dos du tableau.

Dans le cas de la carte DeskClock, il y a une prise d'alimentation axiale de 2,1 mm installée sur la carte pour laquelle je devais ménager un trou de décharge, et enfin, n'oubliez pas les supports en caoutchouc pour supporter l'arrière de la carte.

Étape 4: Un Raspberry Pi pour les cerveaux et un écran couleur de 1,8 "

J'avais besoin de quelque chose pour remplacer mon ordinateur portable, alors j'ai décidé d'utiliser le Raspberry PI.

Il se monte facilement à la base du programmateur et utilise un simple câble à 26 voies connecté aux broches GPIO pour se connecter à la carte DeskClock, à l’écran et au commutateur à bascule.

la configuration spécifique des broches que j'ai utilisée n'est pas importante - vous utiliserez la vôtre en fonction de vos besoins.

L’affichage utilisé est un écran de 1,8 "de Sainsmart - j’en ai apporté un tas il ya 6 mois au cas où j’en trouverais une utilisation - C’était tout à fait cet usage! J’ai suivi le blog Marks http://marks-space.com/ 2012/11/23 / raspberrypi-tft / pour reconstruire un noyau Linux afin de prendre en charge l'affichage.

Mark avait raison - la compilation du noyau sur le Pi était un processus SLOW - je l'ai laissé fonctionner du jour au lendemain.

Le câblage de l’affichage était simple et très rapidement, j’avais un dispositif FrameBuffer2 en état de fonctionnement.

Étape 5: Une poche pour tenir l’écran 1.8 "

J'avais besoin d'un moyen de monter l'écran LCD sur le gabarit pour qu'il ne vibre pas. J'arrive avec un simple ides - Il suffit de créer une poche coudée pour cela.

Il se place parfaitement à l'avant de l'appareil, de manière à ce que l'utilisateur puisse voir facilement l'écran.

L’écran s’ajuste fermement, mais il peut être décidé de glisser et une vis en nylon de 3 mm tient en place.

C'est drôle, j'ai oublié pendant environ 20 ans à quel point il est facile de travailler avec de l'acrylique. Je l'ai utilisé en magasin à l'école, puis je l'ai vite oublié. maintenant, mon atelier a des seaux de choses:-)

Étape 6: Faire du pi un programmeur

La suite de la construction consistait à trouver un logiciel qui me permette de programmer le tableau directement avec le Pi. J'ai décidé d'utiliser la méthode que Steve Marple a expliquée sur son blog:

Dans mon cas, j’ai utilisé différentes broches GPIO car l’écran LCD 1.8 "était en conflit avec elles.

Il y eut un cri de joie lorsque j'ai découvert que le Pi programmait correctement.

Certaines personnes ont utilisé des changeurs de niveau pour protéger le PI - je ne l'ai pas fait et le projet fonctionne tout simplement.

Étape 7: Un commutateur à bascule pour couper l’alimentation de la carte DeskClock

J'ai décidé d'installer un commutateur à bascule pour couper l'alimentation de la carte DeskClock et pour indiquer au PI à quel moment il était temps de commencer.

Le commutateur était un DPDT, donc une moitié connectée à + 5v et l’autre moitié connectée à une broche GPIO inutilisée.

Lorsque le commutateur était désactivé, la broche GPIO était mise à la terre et lorsqu'elle était activée, la broche GPIO était tirée haut. J'ai utilisé une résistance de 100 ohms pour m'assurer que la broche GPIO était mise en mémoire tampon au cas où elle serait configurée comme sortie.

Étape 8: Logiciel dans le Pi pour tout lier

Ensuite, j'ai écrit mon premier programme Python.

Je suis un programmeur C - Heureusement, il existe de nombreux tutoriels pour vous aider.

J'ai obtenu l'essentiel du code à partir d'un ensemble d'échantillons dans lesquels quelqu'un utilisait son IP comme affichage météo.

Voici le code du script Python qui lit le bouton et contrôle l’affichage

#! / usr / bin / python

importer pygame

système d'importation

temps d'importation

à partir du temps d'importation strftime

importation os

sous-processus d'importation

importer RPi.GPIO en tant que GPIO

GPIO.setmode (GPIO.BCM)

# Placez le périphérique framebuffer sur le TFT

sinon os.getenv ('SDL_FBDEV'):

os.putenv ('SDL_FBDEV', '/ dev / fb1')

os.putenv ('SDL_VIDEODRIVER', 'fbcon')

def displayTime ():

# utilisé pour afficher la date et l'heure sur le TFT

screen.fill ((0,0,0))

font = pygame.font.Font (Aucun, 50)

maintenant = time.localtime ()

pour régler entre ("% H:% M:% S", 60), ("% d% b", 10):

timeformat, dim = setting

currentTimeLine = strftime (timeformat, now)

text = font.render (currentTimeLine, 0, (0,250,150))

Surf = pygame.transform.rotate (text, -90)

screen.blit (Surf, (dim, 20))

def displayText (text, size, line, color, clearScreen):

# utilisé pour afficher du texte sur l'écran TFT

si clearScreen:

screen.fill ((0,0,0))

font = pygame.font.Font (Aucun, taille)

text = font.render (text, 0, color)

textRotated = pygame.transform.rotate (text, -90)

textpos = textRotated.get_rect ()

textpos.centery = 80

si ligne == 1:

textpos.centerx = 90

screen.blit (textRotated, textpos)

ligne elif == 2:

textpos.centerx = 40

screen.blit (textRotated, textpos)

def main ():

écran global

pygame.init ()

taille = largeur, hauteur = 128, 160

noir = 0,0,0

ROUGE = 255,0,0

VERT = 0,255,0

BLEU = 0,0255

BLANC = 255,255,255

fail_cnt = 0

GPIO.setup (18, GPIO.IN)

pygame.mouse.set_visible (0)

screen = pygame.display.set_mode (taille)

displayText ("DougsWordClock", 20, 1, VERT, Vrai)

displayText ("150mm Programer", 20, 2, BLUE, False)

pygame.display.flip ()

temps.sommeil (5)

displayText ("Firmware Rev", 20, 1, RED, True)

displayText ("20130520", 40, 2, WHITE, False)

pygame.display.flip ()

temps.sommeil (5)

alors que vrai:

displayText ("En attente", 30, 1, VERT, Vrai)

displayText ("Insert Board", 20, 2, BLEU, FAUX)

pygame.display.flip ()

si (GPIO.input (18)):

displayText ("Programmation", 30, 1, (200,200,1), Vrai)

displayText ("Wait 10 Sec", 30, 2, RED, False)

pygame.display.flip ()

Et voici le script shell qui effectue la programmation:

#! / bin / sh

cd / home / pi

sudo avrdude -c gpio -p m169 -Ufuse: w: 0xf5: m -U hfuse: w: 0xDa: m -U lfuse: w: 0xFF: m -Uflash: w: DeskClock-Prod.hex

Bien sûr, votre gabarit aura un logiciel différent:-)

Étape 9: Tout fonctionne!

Enfin, j'ai eu beaucoup de choses connectées et ça a fonctionné à merveille!

J'ai appris beaucoup de choses sur la conduite de ces petits écrans LCD de 1,8 ", au point où ils sont maintenant à mon tour devenus des appareils pour des projets Pi triviaux.

Quoi qu'il en soit - voici quelques photos de celle-ci en action.

Prendre plaisir.

Où partir d'ici?

Eh bien, c’est une bonne question. Pour l’instant, le programmeur programme simplement le tableau et vérifie que le micro a été correctement flashé. Nous inspectons visuellement le fonctionnement des voyants (d’où l’affichage lumineux) - L’étape suivante consiste à ajouter une fonction permettant de communiquer avec le marchepied pour valider la précision de la combinaison puce RTC / cristal, en comparant le temps passé avec Internet. la norme. Cela ne devrait pas être trop difficile …..:-)