Jig Pemrograman untuk Dewan DeskClock DougsWordClock.com Kami: 9 Langkah - 2020 - How ToDo Well

Jig Pemrograman untuk Dewan DeskClock DougsWordClock.com Kami: 9 Langkah - 2020 - How ToDo Well

Daftar Isi:

Anonim

Hai - Sudah * berabad-abad * sejak saya mengirimkan sesuatu kepada Instructables untuk memberikan kembali kepada komunitas, jadi saya pikir saya akan berbagi bagaimana saya membangun rig pemrograman baru kami untuk papan yang digunakan di DeskClocks www.dougswordclock.com.
Anda tahu bagaimana kelanjutannya, Anda telah membuat proyek yang luar biasa dan memberi tahu banyak orang tentang hal itu dan cukup banyak orang yang menginginkannya untuk mereka sendiri. Anda mendapatkan papan sirkuit yang dibuat, dan menghabiskan waktu menerapkan pasta solder dan komponen, reflow solder dan memasang komponen non-reflow, kemudian Anda mulai memuat mikrokode ke dalam pengontrol sehingga proyek melakukan apa yang dirancang untuk dilakukan ….. Wow - Betapa banyak langkahnya!
Memuat mikrokode ????? Yap - seperti yang Anda ketahui, komputer tanpa perangkat lunak sangat tidak berguna. Semua jam kami memiliki program khusus yang dimuat ke dalamnya sehingga mereka dapat mengetahui waktu dengan benar. Ketika saya membuat papan untuk jam, tidak ada perangkat lunak yang dimuat ke dalam chip mikrokontroler (Chip terlalu kecil untuk dimasukkan ke dalam programmer normal) - Proses ini menempatkan perangkat lunak ke dalam chip sehingga jam dapat berfungsi.
Di masa lalu (beberapa minggu yang lalu :-)) Saya menggunakan laptop, programmer USBTiny dan perangkat lunak AVRDUDE yang luar biasa untuk memprogram papan - saya akan duduk di meja saya di bengkel, ketik perintah pemrograman ke komputer, tahan kabel pemrograman terhadap waktu dan tekan ENTER. Komputer kemudian akan dengan patuh memprogram papan untuk saya dan saya akan selesai. Satu-satunya masalah dengan ini adalah bahwa saya harus duduk di sana sepanjang waktu, jadi saya memutuskan bahwa salah satu karyawan saya dapat melakukannya sebagai gantinya …. Sayangnya, dia menemukan bahwa kadang-kadang dia memindahkan kabel sedikit menyebabkan pekerjaan pemrograman gagal dan dia harus memulai lagi. Untuk memperumit masalah ini, jika ada kesalahan penyolderan, port USB pada laptop saya akan mati dan USBTiny harus dicabut dan dipasang kembali untuk mereset port USB ….. Harus ada cara yang lebih baik !! bagaimana Big Boys melakukannya?
Ternyata Big Boys (tm) memiliki robot yang sangat pandai menahan kabel dan elektronik funky yang dapat melakukan pengujian. Karena DougsWordClock.com kehabisan garrage saya, saya tidak mungkin sampai di sana dalam waktu dekat, jadi apa yang bisa saya lakukan untuk membuat hidup kita lebih mudah? Sebagai teman saya Mikal akan mengatakan …. "Bangun jig!". (Catatan 1)
Jadi di sini kita memiliki Jig yang dibuat Doug! Meskipun secara khusus dirancang untuk memprogram papan DeskClock DougsWordClock.com, konsep-konsep di sini dapat diperluas ke proyek berbasis mikroprosesor lain yang Anda bangun secara massal, jadi bacalah tentang bagaimana saya memecahkan masalah dan lihat apa yang dapat Anda buat sendiri!
Ayo mulai.
-------------------------------------------------------
Catatan 1 - Pada awal tahun 2000, sahabat saya Mikal turun ke bengkel saya ketika saya sedang membangun satu set rak - Saya sedang mengatur sambungan, yang merupakan tugas berulang yang membosankan - Mikal berkata, "Bangun Jig!" Saya berkata "Terlalu keras - saya akan segera selesai" - Dia berkata "Nahh, ayo lakukan saja" …. Kami melakukannya. Singkat cerita, kesederhanaan membangun jig, ditambah dengan fakta bahwa saya tidak berpikir itu memukul Ego saya keras … Saya memutuskan tidak berguna …. (Go figure) .. Akhirnya, saya tersentak dari dan memutuskan untuk menulis artikel untuk membuktikan kepada dunia bahwa saya tidak berguna - Jadi saya merancang proyek dadu elektronik berbasis PIC. Itu bahkan diterbitkan oleh majalah Silicon Chip - (http://archive.siliconchip.com.au/cms/A_102324/printArticle.html) Kisah nyata, dan mungkin permulaan bagi saya untuk kembali menggunakan mikrokontroler untuk proyek dan menulis artikel. . :-)

Persediaan:

Langkah 1: Papan DeskClock

Pertama, saya mulai dengan papan DeskClock. Ketika saya mendesainnya, saya menyediakan konektor 6 pin untuk memungkinkan kabel pemrograman dihubungkan - Ini adalah foto papan, menunjukkan berbagai konektor.
Tentu saja - ketika kita memuat komponen ke papan kita tidak mengisi konektor ini - mereka hanya ada untuk pemrograman dan pengujian.
Sisi dalam foto belakang papan ini, yang bertentangan dengan bagian depan papan dengan semua LED - itu dihuni terlebih dahulu. selama pembuatan.
Saya menggunakan board ini untuk mengukur lokasi dan jarak dari berbagai koneksi yang ingin saya hubungkan dengan sangat hati-hati.
Sekarang - bagaimana saya terhubung ke papan? Senang Anda bertanya. saya menggunakan pin Pogo!

Langkah 2: Pin Pogo dan Perangkat Keras Lainnya

Pin Pogo adalah apa yang digunakan para profesional untuk membuat koneksi sementara ke papan ketika mereka mengujinya. Mereka tersedia dalam banyak ukuran dan bentuk, dan memiliki mekanisme pegas presisi untuk memastikan bahwa pin didorong ke papan dengan tekanan genap.
Saya membawa pin Pogo saya dari pemasok di eBay - Harga itu cukup murah sehingga saya pikir saya memiliki persediaan seumur hidup sekarang! Pemasok yang sama juga memberi saya perangkat keras rumit lainnya yang perlu saya gunakan untuk menjepit papan.
Berikut adalah beberapa foto pin itu sendiri, penjepit papan bagus, dan dudukan jarak papan karet.

Langkah 3: Mengukur dan Membuat Mount untuk Papan

Jadi, saya punya Pin Pogo dan perangkat keras pemasangan lainnya. Dengan hati-hati saya mengukur ukuran lubang dan jarak dan menciptakan tata letak untuk Pemotong Laser saya. Saya juga bisa saja mengebor lubang menggunakan bor, tetapi pemotong melakukan pekerjaan yang indah berulang.
Saya memutuskan untuk menempatkan lubang sehingga pin tidak berada di tengah lubang bantalan - ini memastikan bahwa pin menyentuh papan dengan kuat.
Saya juga mendesain ruang untuk Clamp dan beberapa tab untuk bagian belakang papan.
Dalam kasus papan DeskClock, ada soket daya aksial 2.1mm yang dipasang di papan yang saya harus memberikan lubang bantuan untuk, dan akhirnya, jangan lupa dudukan karet untuk mendukung bagian belakang papan.

Langkah 4: Pi Raspberry untuk Otak dan Layar Warna 1,8 "

Saya perlu sesuatu untuk mengganti laptop saya, jadi saya memutuskan untuk menggunakan Raspberry PI.
Ini dipasang dengan mudah di dasar programmer dan menggunakan kabel 26 cara sederhana yang terhubung ke pin GPIO untuk terhubung dengan papan DeskClock dan Display, dan sakelar sakelar.
konfigurasi pin spesifik yang saya gunakan tidak penting - Anda akan menggunakan sendiri berdasarkan kebutuhan Anda.
Layar yang digunakan adalah layar 1,8 "dari Sainsmart - Saya membawa banyak dari mereka 6 bulan yang lalu kalau-kalau saya menemukan penggunaan untuk mereka - Ini hanya penggunaan! Saya mengikuti Marks blog http://marks-space.com/ 2012/11/23 / raspberrypi-tft / untuk membangun kembali kernel Linux untuk mendukung tampilan.

Mark benar - mengkompilasi kernel pada Pi adalah proses SLOW - Saya membiarkannya berjalan semalam.
Menyambungkan layar itu sederhana, dan cukup cepat saya punya perangkat FrameBuffer2 yang berfungsi.

Langkah 5: Saku untuk Memegang Layar 1,8 "

Saya membutuhkan cara untuk memasang layar LCD pada jig agar tidak bergoyang. Saya datang dengan ide sederhana - Cukup buat saku miring untuk itu.
Itu duduk rapi di bagian depan unit, pada sudut bagi pengguna untuk dengan mudah melihat tampilan.
Layar pas, tetapi dalam kasus itu harus memutuskan untuk meluncur keluar, dan sekrup nilon 3mm menahan di tempatnya.
Ini lucu, saya lupa sekitar 20 tahun betapa mudahnya bekerja dengan Acrylic. Saya menggunakannya di toko di sekolah, lalu segera melupakannya. sekarang, bengkel saya punya banyak barang :-)

Langkah 6: Membuat Pi Menjadi Pemrogram

Bagian selanjutnya dari build adalah menemukan perangkat lunak untuk memungkinkan saya memprogram board secara langsung dengan Pi. Saya memutuskan untuk menggunakan metode yang dijelaskan Steve Marple di blognya: http://blog.stevemarple.co.uk/2013/03/how-to-use-gpio-version-of-avrdude-on.html.
Dalam kasus saya, saya menggunakan pin GPIO yang berbeda karena layar LCD 1,8 "bertentangan dengan mereka.
Terdengar derit nyaring ketika aku menemukan bahwa Pi sedang pemrograman dengan benar.
Beberapa orang telah menggunakan pemindah level untuk melindungi PI - Saya tidak melakukannya dan proyek hanya berfungsi.

Langkah 7: Sakelar Toggle untuk Menghilangkan Daya Dari DeskClock Board

Saya memutuskan untuk memasang sakelar sakelar untuk melepaskan daya dari papan DeskClock, dan memberi tahu PI kapan waktunya untuk memulai.
Switch adalah DPDT, jadi satu setengah terhubung ke + 5v dan setengah lainnya terhubung ke pin GPIO yang tidak terpakai.
Ketika sakelar dimatikan, pin GPIO dibumikan, dan saat dinyalakan, pin GPIO ditarik tinggi. saya menggunakan resistor 100 ohm untuk memastikan bahwa pin GPIO buffered dalam hal ini ditetapkan sebagai output.

Langkah 8: Perangkat lunak dalam Pi untuk Mengikat Semua Togehter

Selanjutnya, saya menulis program Python pertama saya.
Saya seorang programmer C - Untungnya, ada banyak tutorial untuk membantu.
Saya mendapatkan sebagian besar kode dari satu set sampel di mana seseorang menggunakan PI mereka sebagai tampilan cuaca.
Berikut adalah kode untuk skrip Python yang membaca tombol dan mengontrol tampilan
#! / usr / bin / python
impor pygame
impor sys
waktu impor
dari waktu impor strftime
impor os
impor subproses
impor RPi.GPIO sebagai GPIO
GPIO.setmode (GPIO.BCM)
#setel perangkat framebuffer ke TFT
jika tidak os.getenv ('SDL_FBDEV'):
os.putenv ('SDL_FBDEV', '/ dev / fb1')
os.putenv ('SDL_VIDEODRIVER', 'fbcon')
def displayTime ():
# Digunakan untuk menampilkan tanggal dan waktu ke TFT
screen.fill ((0,0,0))
font = pygame.font.Font (Tidak ada, 50)
sekarang = time.localtime ()
untuk pengaturan dalam ("% H:% M:% S", 60), ("% d% b", 10):
format waktu, redup = pengaturan
currentTimeLine = strftime (format waktu, sekarang)
text = font.render (currentTimeLine, 0, (0,250,150))
Surf = pygame.transform.rotate (teks, -90)
screen.blit (Berselancar, (redup, 20))
def displayText (teks, ukuran, garis, warna, clearScreen):
# Digunakan untuk menampilkan teks pada layar TFT
jika clearScreen:
screen.fill ((0,0,0))
font = pygame.font.Font (Tidak ada, ukuran)
text = font.render (teks, 0, warna)
textRotated = pygame.transform.rotate (teks, -90)
textpos = textRotated.get_rect ()
textpos.centery = 80
jika baris == 1:
textpos.centerx = 90
screen.blit (textRotated, textpos)
garis elif == 2:
textpos.centerx = 40
screen.blit (textRotated, textpos)
def main ():
layar global
pygame.init ()
ukuran = lebar, tinggi = 128, 160
hitam = 0,0,0
MERAH = 255,0,0
HIJAU = 0,255,0
BIRU = 0,0255
PUTIH = 255.255.255
fail_cnt = 0
GPIO.setup (18, GPIO.IN)
pygame.mouse.set_visible (0)
screen = pygame.display.set_mode (ukuran)
displayText ("DougsWordClock", 20, 1, GREEN, True)
displayText ("Programer 150mm", 20, 2, BIRU, Salah)
pygame.display.flip ()
time.sleep (5)
displayText ("Firmware Rev", 20, 1, RED, True)
displayText ("20130520", 40, 2, WHITE, False)
pygame.display.flip ()
time.sleep (5)
sementara Benar:
displayText ("Menunggu", 30, 1, HIJAU, Benar)
displayText ("Sisipkan Papan", 20, 2, BIRU, Salah)
pygame.display.flip ()
if (GPIO.input (18)):
displayText ("Pemrograman", 30, 1, (200.200.1), Benar)
displayText ("Tunggu 10 Dtk", 30, 2, RED, False)
pygame.display.flip ()

Dan inilah skrip shell yang benar-benar melakukan pemrograman:
#! / bin / sh
cd / home / pi
sudo avrdude -c gpio -p m169 -Uefuse: w: 0xf5: m -U huseuse: w: 0xDa: m -U lfuse: w: 0xFF: m -Uflash: w: DeskClock-Prod.hex

Tentu saja jig Anda akan memiliki perangkat lunak yang berbeda :-)

Langkah 9: ITU SEMUA BEKERJA !!!

Akhirnya, saya memiliki banyak yang terhubung, dan itu berhasil memperlakukan!
Saya belajar banyak tentang mengemudikan layar LCD 1,8 "kecil ini, ke titik di mana sekarang giliran saya ke perangkat untuk proyek-proyek Pi yang sepele.
Pokoknya - Berikut adalah beberapa foto yang sedang beraksi.
Nikmati.
Ke mana dari sini?
Nah itu pertanyaan yang keren - Saat ini, programmer hanya memprogram papan dan memverifikasi bahwa mikro sudah terpasang dengan benar. Kami memeriksa operasi LED secara visual (karenanya layar cerah) - Langkah selanjutnya adalah menambahkan fungsi yang dapat berkomunikasi dengan papan berjalan untuk memvalidasi keakuratan kombinasi chip / kristal RTC, membandingkan berlalunya waktu dengan internet standar. Seharusnya tidak terlalu sulit ….. :-)