İyi günler yapmaya devam ediyorum Arduino boş zamanlarında ve bu kez küçük bir hava istasyonu üretimi için talimatlar yazdı. Tarihli bir saat olarak hareket edecek ve odanın içinde ve dışındaki sıcaklıkları gösterecektir. Ana kontrolör olarak Arduino UNO'yu kullanacağız, ancak Atmega328p ile başka bir kart yapacak. Gösterge için WG12864B grafik ekranını kullanıyoruz. Ayrıca iki adet ds18b20 sıcaklık sensörü bağlarız. Biri içeride, ikincisini dışarı çıkarırız. Başlayalım.
Üretim sürecinde ev yapımı ihtiyacımız olacak:
- Arduino UNO (Veya herhangi bir Arduino uyumlu kart)
- WG12864B grafik ekran
- ds18b20 sıcaklık sensörü, 2 adet
- Güç kaynağı 6 - 12 V
- Dirençler 4.7 Kom 0.25 W, 2 adet.
- Dirençler 100 ohm 0,25 W
- 4 AAA “pembemsi” pil için pil bölmesi
- SEGA konsolunun kartuşundan kutu
- elektrik bandı
- bağlantı telleri
- devre kartı
- Düğmeler
- kırtasiye bıçağı
- havya
- Lehim, reçine
- Çift taraflı bant
Adım 1 WG12864B3'ün hazırlanması.
Daha önce ekranlarla çalışmayanlar, aynı gibi görünen çok sayıda modifikasyondan korkabilirler. Biraz açıklayacağım. Bu tür ekranların çoğu ks0107 / ks0108 yongalarında çalışır. Tüm ekranlar 4 türe ayrılabilir:
Seçenek A: HDM64GS12L-4, Crystalfontz CFAG12864B, Sparkfun LCD-00710CM, NKC Electronics LCD-0022, WinStar WG12864B-TML-T
Seçenek B: HDM64GS12L-5, Lumex LCM-S12864GSF, Futurlec BLUE128X64LCD, AZ Ekranlar AGM1264F, Displaytech 64128A BC, Adafruit GLCD, DataVision DG12864-88, Topway LM12864LDW, Digitron SG12864J-1, QY86464
Seçenek C: Shenzhen Jinghua Co Ltd görüntüler. JM12864
Seçenek D: Wintek-Kaskadlar WD-G1906G, Wintek-GEN / WD-G1906G / KS0108B, Wintek / WD-G1906G / S6B0108A, TECDIS / Y19061 / HD61202, Varitronix / MGLS19264 / HD61202
Neredeyse aynı görünüyorlar. Ancak farklı bağlantı pimleri var. WG12864B3 V2.0'ı seçtim ve size tavsiye ediyorum, ancak ekran farklı bir şekilde ortaya çıktıysa veya elinizde yoksa, tabloyu kullanarak kolayca anlayabilirsiniz:
Kısa özellikler:
İnternette birçok farklı bağlantı şeması var ve her şey çalışıyor gibi görünüyor. Mesele şu ki, sadece farklı ekranlar değil, aynı zamanda onları bağlamanın iki yolu var: seri ve paralel. Bir seri port bağlantısı kullanırken, mikrodenetleyicinin sadece 3 çıkışına ihtiyacımız var. Paralel minimum 13 ile. Bu durumda seçim açıktır, Arduino'nun birkaç sonucu vardır. Paralel bağlantı için bağlantı şeması aşağıdaki gibidir:
Kullanacağımız seri bağlantı için şema aşağıdaki gibidir:
WG12864B - Arduino UNO
1 (GND) - GND
2 (VCC) - + 5V
4 (RS) - 10
5 (R / W) - 11
6 (E) - 13
15 (PSB) - GND
19 (BLA) - 100 Ohm direnç üzerinden - + 5V
20 (BLK) - GND
Kontrastı ayarlamak için, ekranda bir potansiyometre olmalıdır. Onsuz ekranlar var, ama şimdi nadir bir durum:
5 voltluk bir voltajın arka ışık diyotlarını yanlışlıkla yakmaması için 100 ohm'luk bir direnç gereklidir.
Adım 2 Davayı yapma.
Bu durumda kutuyu Sega kartuş önekinden alın. Bu kutuyu elinizde bulamazsanız, başka bir vaka kullanabilirsiniz. Ana şey, ekranın ve Arduino'nun buna uymasıdır.
Saydam filmi kutunun üstünde kesin, böylece hiç parça kalmaz:
Daha sonra, bir büro bıçağı kullanarak, ekran için 37x69 boyutunda bir pencere kesin.
Ters tarafta, kesimin kenarı boyunca, tercihen siyah olan çift taraflı bir bant yapıştırıyoruz:
Koruyucu kağıdı yapışkan banttan çıkarın ve ekranımızı üzerine yapıştırın:
Dışarıdan şöyle görünmelidir:
Ekranın altında, ayrıca çift taraflı bantta, Arduino'yu bağlayarak USB bağlantı noktası ve güç soketi için ön kesikler yapıyoruz:
Arduino soketleri için kesikler, kutunun her iki tarafında serbestçe kapatılabilmesi için yapılmalıdır:
Adım 3 Sıcaklık Sensörleri.
DS18B20 dijital sıcaklık sensörlerini kullanacağız. Bunları kullanarak mükemmel ölçüm doğruluğu elde ederiz, hata 0,5 ° C'den fazla değildir, geniş bir sıcaklık aralığı -55 ... + 125 ° C'dir. Buna ek olarak, dijital sensör tüm hesaplamaları kendisi yapar ve Arduino sadece hazır okumaları alır. Bu sensörü bağlarken, DQ ve VDD kontakları arasındaki çekme direncini (4.7 kΩ) unutmayın. Birkaç bağlantı seçeneği de mümkündür. Harici güçle, bence en iyi seçenek, onu kullanacağız:
İsterseniz parazit güç modunu kullanabilirsiniz:
Veya gelişmiş bir parazitik gıda seçeneği:
Herhangi bir güç kaynağı ile sensörler paralel bağlanır:
Sıcaklık ölçüm sensörünü saatin tarihini ve saatini ayarlamak için kullanacağımız iki düğmeyle birlikte küçük tahtaya yerleştireceğiz:
Her iki düğmedeki ortak kablo GND'ye bağlanır, ilk düğmedeki tel ikinciden A1'e A0'a bağlanır.
Arduino'nun yanındaki çift taraflı bir banda sabitleyin:
Odanın dışına yerleştirilmesi gereken sensör, metal, toz ve neme dayanıklı bir muhafazada seçim yapmak için daha iyidir:
Sensörün pencerenin dışına asılabilmesi için gerekli uzunluğun telini hesaplayın, ana şey, 5 metreden fazla olmaması gerektiğidir, daha fazla uzunluğa ihtiyacınız varsa, çekme direncinin değerini azaltmanız gerekecektir.
Her iki sensörün DQ veri yolundan gelen tel, Arduino'nun pim 5'ine bağlanır.
Vdd - +5 Arduino.
GND - GND Arduino.
Adım 4 Güç.
Güç için 6 ila 12 volt voltajlı bir güç kaynağı kullanabilirsiniz. Güç fişi kablosunun sonunda, Arduino güç soketine uygun fişi lehimleyin:
Veya kutuya dört “AAA”, “pembemsi” pil için bir pil bölmesi koyabilirsiniz. Ve bölmeden gelen pozitif teli Vin Arduino'ya ve eksi GND'ye bağlayın.
Adım 5 Programlama ortamının hazırlanması.
Önce Arduino IDE'yi indirip yüklemeniz gerekir. resmi site
Ayrıca çizim için gereken iki kütüphaneye de ekleyin. OneWire - ds18b20 sensörleri ile iletişim için gereklidir:
U8glib - bilgileri ekranda görüntülemek için kullanılır:
Kütüphaneyi indirin. Sonra arşivleri açıyoruz ve arşivlerin içeriğini Arduino IDE'nin yüklü olduğu klasörde bulunan “kütüphaneler” klasörüne taşıyoruz. Arduino IDE üzerinden de kitaplık ekleyebilirsiniz. Bunu yapmak için, arşivleri açmadan Arduino IDE'yi çalıştırın, Sketch menüsünden Sketch - Connect Library'yi seçin. Açılır listenin en üstünde ".Zip kitaplığı ekle" öğesini seçin. İndirilen arşivlerin yerini belirtiyoruz. Tüm adımlardan sonra, Arduino IDE'yi yeniden başlatmanız gerekir.
Adım 6 Eskiz düzenleme.
Sıcaklık sensörleri One Wire protokolünü kullanarak çalışır ve her aygıt için benzersiz bir adrese sahiptir - 64 bit kod. Taslağa sensör arama komutlarının eklenmesi önerilmez. Arduino hıçkırık sensörlerini her seferinde yüklemeye gerek yoktur.Bu nedenle, önce, her şeyi bir araya getirerek, Dosya menüsünde yer alan Arduino'daki çizimi doldurun - Örnekler - Dallas Temperature - OneWireSearch. Ardından Araçlar - Bağlantı Noktası İzleyicisi'ni çalıştırın. Arduino sensörlerimizi bulmalı, adresleri ve sıcaklık değerlerini yazmalıdır. Bu adreslerin yazılması veya yalnızca bir yere kopyalanması gerekir. Şimdi Ard_Tic_Tak_WG12864B_2_x_Term_Serial çizimini açın ve satırları arayın:
bayt addr1 [8] = {0x28, 0xFF, 0x75, 0x4E, 0x87, 0x16, 0x5, 0x63}; // dahili adres
bayt addr2 [8] = {0x28, 0xFF, 0xDD, 0x14, 0xB4, 0x16, 0x5, 0x97}; // harici sensörün adresi
Sensörlerin konumuna karşılık gelen adresleri adreslerimizle değiştiriyoruz.
Saatlerimiz RTC modülünü (gerçek zamanlı saat) kullanmaz, bu nedenle saati ayarlamanız gerekir. Kolaylık sağlamak için satırın açıklamasını kaldırın (ekranda saniye görünecektir):
//u8g.setPrintPos (44, 50); u8g.print (sek); // Kursun doğruluğunu kontrol etmek için saniyeler yazdırın
Bağlantı noktası monitöründen doğru zamanı ayarlayın. Bunu yapmak için bağlantı noktası monitörünü açın, ilk sıcaklık ölçümleri tamamlanana kadar bekleyin ve geçerli tarih ve saati "gün, ay, yıl, saat, dakika, saniye" biçiminde girin. Boşluk olmadan, sayıları virgül veya nokta ile bölün.
Saat acelesi varsa, değeri daha büyük bir değere değiştirin, 100 birim artışlarla denemenizi öneririz. Gecikme durumunda, satırdaki değeri azaltın:
eğer (micros () - prevmicros> 494000) {// ayarlama için diğerine geçmek 500.000
Saatin oldukça doğru gittiğini ampirik olarak belirleyin. Dersin doğruluğunu belirlemek ve bir sonuca varmak için saniye. Sayıyı doğru bir şekilde kalibre ettikten sonra saniyeler yorumlanabilir ve böylece ekrandan kaldırılabilir.
Krokiyi doldurun.