Selamat pagi, saya terus buat Arduino dalam masa lapangnya, dan kali ini dia menulis arahan untuk pembuatan stesen cuaca kecil. Ia akan bertindak sebagai jam dengan tarikh dan menunjukkan suhu di dalam dan di luar bilik. Sebagai pengawal utama, kami akan menggunakan Arduino UNO, tetapi satu lagi papan dengan Atmega328p di papan akan dilakukan. Untuk paparan, kami menggunakan skrin grafik WG12864B. Kami juga menyambungkan dua sensor suhu ds18b20. Di dalam rumah, kami mengambil bahagian luar yang kedua. Mari bermula.
Dalam proses pembuatan buatan sendiri kita perlu:
- Arduino UNO (Atau mana-mana papan serasi Arduino yang lain)
- Skrin grafik WG12864B
- Sensor suhu ds18b20, 2pcs
- Bekalan kuasa 6 - 12 V
- Resistor 4.7 Kom 0.25 W, 2 pcs.
- Resistor 100 ohms 0.25 W
- Kompart bateri untuk 4 bateri AAA "pinky"
- Kotak dari kartrij konsol SEGA
- pita elektrik
- menyambung wayar
- papan litar
- Butang
- pisau alat tulis
- besi pematerian
- Solder, rosin
- Pita bermuka dua
Langkah 1 Menyediakan WG12864B3.
Mereka yang tidak bekerja dengan skrin sebelum mungkin takut dengan sejumlah besar pengubahsuaian, yang kelihatan sama, dari skrin. Saya akan menerangkan sedikit. Kebanyakan skrin jenis ini berfungsi pada cip ks0107 / ks0108. Semua skrin boleh dibahagikan kepada 4 jenis:
Pilihan A: HDM64GS12L-4, Crystalfontz CFAG12864B, Sparkfun LCD-00710CM, NKC Electronics LCD-0022, WinStar WG12864B-TML-T
Pilihan B: HDM64GS12L-5, Lumex LCM-S12864GSF, Futurlec BLUE128X64LCD, AZ Memaparkan AGM1264F, Displaytech 64128A BC, Adafruit GLCD, DataVision DG12864-88, Topway LM12864LDW, Digitron SG1286464J-1, QY1286464JF, 2 QY
Opsyen C: Shenzhen Jinghua Displays Co Ltd. Jm12864
Pilihan D: Wintek-Cascades WD-G1906G, Wintek-GEN / WD-G1906G / KS0108B, Wintek / WD-G1906G / S6B0108A, TECDIS / Y19061 / HD61202, Varitronix / MGLS19264 / HD61202
Mereka kelihatan hampir sama. Tetapi mereka mempunyai sambungan sambungan yang berbeza. Saya memilih, dan saya mengesyorkan anda, WG12864B3 V2.0, tetapi jika skrin datang berbeza, atau anda tidak memilikinya, anda boleh dengan mudah menggunakannya menggunakan jadual:
Ciri-ciri ringkas:
Terdapat banyak skema sambungan yang berbeza di Internet, dan semuanya seolah-olah berfungsi. Masalahnya ialah tidak hanya skrin yang berbeza, tetapi juga dua cara untuk menyambungkannya: siri dan selari. Apabila menggunakan sambungan port bersiri, kita hanya memerlukan 3 output mikrokontroler. Dengan selanjar minimum 13. Pilihan dalam kes ini jelas, Arduino mempunyai sedikit kesimpulan. Untuk sambungan selari, rajah sambungan adalah seperti berikut:
Untuk sambungan bersiri, yang akan kami gunakan, skim ini adalah seperti berikut:
WG12864B - Arduino UNO
1 (GND) - GND
2 (VCC) - + 5V
4 (RS) - 10
5 (R / W) - 11
6 (E) - 13
15 (PSB) - GND
19 (BLA) - melalui perintang 100 Ohm - + 5V
20 (BLK) - GND
Untuk menyesuaikan kontras, potentiometer harus berada di skrin. Terdapat skrin tanpa ia, tetapi sekarang ini jarang:
Perintang 100 ohm diperlukan supaya voltan 5 volt tidak sengaja membakar diod lampu latar.
Langkah 2 Membuat kes itu.
Untuk kes ini, ambil kotak dari awalan kartrij Sega. Sekiranya anda tidak menemui kotak ini, anda boleh menggunakan kes lain. Perkara utama ialah skrin dan Arduino sesuai di dalamnya.
Potong filem telus di atas kotak supaya tidak ada bahagian kiri:
Kemudian, menggunakan pisau perkeranian, potong saiz 37x69 untuk skrin.
Di sisi sebaliknya, di sepanjang tepi potong, kami melekatkan pita bermagnet, sebaiknya hitam:
Keluarkan kertas pelindung dari pita pelekat, dan gam skrin kami:
Dari luar ia sepatutnya kelihatan seperti ini:
Di bawah skrin, juga pada pita bermuka dua, kami mengikat Arduino, membuat potongan awal untuk port USB dan soket kuasa:
Cutout untuk soket Arduino mesti dilakukan di kedua-dua belah kotak supaya ia boleh ditutup dengan bebas:
Langkah 3 Sensor Suhu.
Kami akan menggunakan sensor suhu digital DS18B20. Menggunakannya kita mendapat ketepatan pengukuran yang besar, kesilapan tidak lebih daripada 0.5 ° C, dalam julat suhu yang luas -55 ... + 125 ° C. Di samping itu, sensor digital melakukan semua pengiraan itu sendiri, dan Arduino hanya menerima pembacaan yang siap sedia. Apabila menyambung sensor ini, jangan lupa tentang perintang tarikan, 4.7 kΩ, antara kenalan DQ dan VDD. Beberapa pilihan sambungan juga boleh dilakukan. Dengan kuasa luar, pada pendapat saya pilihan terbaik, kami akan menggunakannya:
Jika anda mahu, anda boleh menggunakan mod kuasa parasit:
Atau pilihan makanan parasit yang lebih baik:
Dengan sebarang bekalan kuasa, sensor disambung secara selari:
Kami akan meletakkan sensor mengukur suhu pada papan kecil bersama-sama dengan dua butang, yang akan kami gunakan untuk menetapkan masa dan tarikh jam:
Kawat biasa dari kedua-dua butang disambungkan ke GND, wayar dari butang pertama disambungkan ke A0, dari kedua ke A1.
Cabut pita berganda bersebelahan dengan Arduino:
Sensor, yang sepatutnya diletakkan di luar bilik, lebih baik memilih perumahan logam, habuk dan kelembapan:
Kirakan wayar panjang yang diperlukan supaya sensor dapat digantung di luar tingkap, perkara utama adalah bahawa ia tidak boleh melebihi 5 meter, jika anda memerlukan lebih banyak panjang, anda perlu mengurangkan nilai resistor pull-up.
Kawat dari bas data DQ kedua-dua sensor disambungkan ke pin 5 dari Arduino.
Vdd - +5 Arduino.
GND - GND Arduino.
Langkah 4 Kuasa.
Untuk kuasa, anda boleh menggunakan bekalan kuasa dengan voltan 6 hingga 12 volt. Pada akhir dawai suar kuasa, pateri palam yang sesuai untuk soket kuasa Arduino:
Atau anda boleh meletakkan petak bateri untuk bateri empat "AAA", "merah jambu" dalam kes itu. Dan sambungkan wayar positif dari petak ke Vin Arduino, dan tolak untuk GND.
Langkah 5 Menyediakan persekitaran pengaturcaraan.
Pertama anda perlu memuat turun dan memasang Arduino IDE dengan laman rasmi
Dan juga menambah dua perpustakaan yang diperlukan untuk lakaran. OneWire - diperlukan untuk komunikasi dengan sensor ds18b20:
U8glib - digunakan untuk memaparkan maklumat pada skrin:
Muat turun perpustakaan. Kemudian kami membongkar arkib, dan gerakkan kandungan arkib ke folder "perpustakaan" yang terletak di dalam folder dengan Arduino IDE dipasang. Anda juga boleh menambah perpustakaan melalui Arduino IDE. Untuk melakukan ini, tanpa membongkar arkib, jalankan Arduino IDE, pilih Sketch - Connect Library dari menu Sketch. Di bahagian paling atas senarai juntai bawah, pilih item "Tambah .Zip library". Kami menunjukkan lokasi arkib yang dimuat turun. Selepas semua langkah, anda perlu memulakan semula IDE Arduino.
Langkah 6 Mengedit lakaran.
Pengesan suhu beroperasi menggunakan protokol One Wire dan mempunyai alamat unik untuk setiap peranti - kod 64-bit. Menambah perintah carian sensor untuk lakaran tidak dianjurkan. Tidak perlu memuatkan sensor cecair Arduino setiap kali.Oleh itu, pertama, meletakkan semuanya bersama-sama, isikan lakaran dalam Arduino, yang terletak dalam menu Fail - Contoh - Suhu Dallas - OneWireSearch. Kemudian jalankan Tools - Port Monitor. Arduino perlu mencari sensor kami, tulis alamat dan bacaan suhu. Alamat-alamat ini perlu dituliskan atau hanya disalin di suatu tempat. Sekarang buka lakaran Ard_Tic_Tak_WG12864B_2_x_Term_Serial, dan cari garisan:
byte addr1 [8] = {0x28, 0xFF, 0x75, 0x4E, 0x87, 0x16, 0x5, 0x63}; // alamat dalaman
byte addr2 [8] = {0x28, 0xFF, 0xDD, 0x14, 0xB4, 0x16, 0x5, 0x97}; // alamat sensor luaran
Kami menggantikan alamat yang sepadan dengan lokasi sensor dengan alamat kami.
Jam tangan kami tidak menggunakan modul RTC (jam nyata), jadi anda perlu menyesuaikan jam. Untuk kemudahan, laporkan baris (saat akan muncul pada skrin):
//u8g.setPrintPos (44, 50); u8g.print (sek); // Cetak segmen untuk memeriksa ketepatan kursus
Tetapkan masa yang betul melalui monitor port. Untuk melakukan ini, buka monitor port, tunggu pengukuran suhu awal untuk selesai, dan masukkan tarikh dan masa semasa dalam format "hari, bulan, tahun, jam, minit, saat." Tanpa ruang, bahagikan nombor dengan koma atau tempoh.
Jika jam tergesa-gesa, tukar nilai kepada yang lebih besar, saya cadangkan bereksperimen dengan kenaikan 100 unit. Sekiranya ketinggalan, tolak nilai dalam barisan:
jika (micros () - prevmicros & gt; 494000) {// perubahan yang lain untuk penyesuaian ialah 500,000
Secara empirikal tentukan nombor di mana jam pergi agak tepat. Untuk menentukan ketepatan kursus dan memerlukan kesimpulan detik. Selepas menentukur nombor dengan tepat, beberapa saat dapat dikomentari dan dengan itu dikeluarkan dari skrin.
Isikan lakaran.