Isi kandungan:
- Bekalan
- Langkah 1: Descripción Del Funcionamiento
- Langkah 2: Circuitos
- Langkah 3: Programación
- Langkah 4: Kesimpulan
- Langkah 5: Pautan Y Lecturas Relacionados
Video: Attiny85 Termómetro OLED: 5 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:08
Este proyecto conste en un termómetro pequeño y simple que muestra la temperatura sebenar, la humedad relativa y el índice de temperatura. Puede realizarse con un ATmega328p, pero lo interesante de esta versión es utilizar un ATtiny85 cuyo tamaño y konsumeno de batería convergen en un dispositivo pequeño y portátil.
Satu kesinambungan yang diterangkan el funcionamiento, seguido mostraré el circuito y finalizaré con el programa y algunos comentarios sobre el proyecto secara umum.
Bekalan
1 x ATtiny85
1 x Arduino UNO / PRO / etc (programador del ATtiny)
1 x 128x64 pantalla I2C OLED
1 x Sensor temperatura DHT22
1 x Resistencia 4.7MOhm (1 / 4W)
1 x Kapasitor electrolítico 0.1uF
1 x Fuente de 3.3V - 5V 10+ x Pelompat
Langkah 1: Descripción Del Funcionamiento
El objetivo del proyecto es mostrar los tres valores anteriormente mencionados en la pantalla OLED, además, como objetivo secundario, e incluido el uso de la librería sleep.he interrupt.h para activar el termómetro manualmente y así reducir el konsumeno de extender la batería.
Nuestro programa se guiará por el siguiente proceso: Leer temperatura -> Mostrar temperatura en pantalla -> Apagar ATtiny -> Reiniciar al presionar botón.
Para cada uno de estos pasos dejaremos la walikota parte del trabajo a las librerías ya وجود, por lo que no reinventaremos la rueda. Perpustakaan sensor DHT La Adrruit (boleh guna en IDE) y Tiny4kOLED de datacute que descargaremos de Github ya que, al parecer, el autor original es datacute y, además, necesitaremos modificarla un poco luego.
El método de reinicio puede ser tanto un botón como dos placas metálicas que se tocan para encender el equipo. Secara peribadi, dia mengurus pilihan utama dan interaksivo.
Langkah 2: Circuitos
En la primer imagen se encuentra el circuito que requerimos para programar el ATtiny85. Primeramente se debe programar al Arduino (el kapasitor debe estar desconectado) con el sketsa ArduinoISP, que se encuentra en Archivos -> Ejemplos -> 11. ArduinoISP. Una vez hecho esto se debe colocar el kapasitor untuk evitar que nuestro Arduino se reinicie al programar el ATtiny85.
El ATtiny se puede alimentar directamente del Arduino. En caso de utilizar una fuente de poder como una batería es necesario conectar la masa (GND) del Arduino y el ATtiny85.
Colocar un botón entre el pin 13 del Arduino y el 2 del ATtiny puede fasilitator el hacer pruebas ya que la pantalla no puede estar conectada cuando se programa al ATtiny.
Como se observa en las imágenes. El pin SDA del ATyiny es el 0 y SCL / CLK es el 2. Nuestro DHT está conectado en el pin 4.
Langkah 3: Programación
Primeramente, debemos seleccionar "Arduino as ISP" como el programador. Si a nn han instalado la placa para el ATtiny, recomiendo instalar la placa ATtinyCore de Spence Konde. Esta placa no me genero ningún problema de compilación durante la realización del proyecto.
La placa debe estar configurada sin BOD, con un reloj de 8MHz interno y sin OptiBoot. Sebanyak 1 MHz dan kelangsungan hidup dari I2C tidak dapat dikecualikan dengan luaran 16MHz, además de perder dos pines digitales, elumero energético aumenta pertimbangan.
Cabe destacar que ia modificado un archivo en la librería Tiny4kOLED. El archivo modificado es "font8x16.h" y cambiado la línea 117 por el siguiente código con el fin de cambiar el símbolo ~ por ° que usaremos en ° C.
0x00, 0x06, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
Satu lakaran berterusan yang perlu diberi perhatian untuk el proyecto.
#include #include #include #include #define I_PINB PCINT3 #define I_PIN PB3 #define I_VECTOR PCINT0_vect #define adc_disable () (ADCSRA & = ~ (1 << aden)) disable = "" adc = "" converter #define DHTP #tentukan DHTTYPE DHT22 DHT dht (DHTPIN, DHTTYPE); const uint8_t lebar = 128; const uint8_t tinggi = 64; bool tidak menentu berubah = salah; / * * * Pengendali gangguan * * / ISR (PCINT_VECTOR) {// gangguan selalu pulih dari tidur jika (digitalRead (I_PIN) == TINGGI) {bertukar = benar; // tetapkan bendera ke gambar semula skrin}} batal penyediaan () {cli (); // mematikan gangguan PCMSK | = (1 << I_PINB); GIMSK | = (1 << PCIE); pinMode (I_PIN, INPUT); sei (); // hidupkan gangguan adc_disable (); // jimat kuasa mematikan penukar set_sleep_mode (SLEEP_MODE_PWR_DOWN); // tetapkan jenis tidur ke tidur nyenyak. mulakan (lebar, tinggi, ukuranof (tiny4koled_init_128x64br), tiny4koled_init_128x64br); // mulakan objek oled.setFont (FONT8X16); // fon ini kelihatan lebih baik daripada drawScreen yang lain (); oled.on (); kelewatan (2000); dht.begin (); bertukar = benar; // bendera untuk skrin gambar} kosongkan tidur () {sleep_enable (); sleep_cpu (); } gelung void () {if (berpusing) {cli (); // matikan gangguan oled.on (); float h = dht.readHumidity (); // bacaan palsu untuk menetapkan semula penangguhan cache dht (2200); // tunggu dht untuk memuat h = dht.readHumidity (); terapung t = dht.readTemperature (); terapung i = dht.computeHeatIndex (t, h, false); oled.setCursor (55, 1); oled.print (t); oled.print ("~ C"); oled.setCursor (55, 3); oled.print (h, 0); oled.print ("%"); oled.setCursor (55, 5); oled.print (i); oled.print ("~ C"); // simbol ~ diubah di perpustakaan agar kelihatan seperti kelewatan simbol darjah (5000); // tunjukkan selama 5 saat oled.off (); bertukar = palsu; sei (); // sambung mengganggu lagi} tidur (); // selalu tidur pada akhir} kekosongan drawScreen () {// melukis bingkai sebagai teks utama untuk (uint8_t y = 0; y <8; y ++) {oled.setCursor (0, y); oled.startData (); untuk (uint8_t x = 0; x <128; x + = 2) {oled.sendData (0b10101010); oled.sendData (0b01010101); } oled.endData (); } oled.setCursor (0, 0); oled.startData (); oled.sendData (0b11111111); oled.repeatData (0b00000101, lebar - 2); oled.sendData (0b11111111); oled.endData (); untuk (uint8_t y = 1; y <(tinggi - 8) / 8; y ++) {oled.setCursor (0, y); oled.startData (); oled.sendData (0b11111111); oled.repeatData (0b00000000, lebar - 2); oled.sendData (0b11111111); oled.endData (); } oled.setCursor (0, (tinggi - 8) / 8); oled.startData (); oled.sendData (0b11111111); oled.repeatData (0b10100000, lebar - 2); oled.sendData (0b11111111); oled.endData (); oled.setCursor (4, 1); oled.print ("Temp:"); oled.setCursor (4, 3); oled.print ("Hum:"); oled.setCursor (4, 5); oled.print ("Sens:"); }
Langkah 4: Kesimpulan
Pesar de su tamaño tidak penting, el ATtiny85 ofrece una amplia gama de aplicaciones en las que podemos implementar este controlador de bajo costo sin perder funcionalidad. Personalmente no esperaba que fuera incluir el control de pantalla and de sleep juntos debido a las limaciones de memoria. Dichozamente, el programa ha entrado en nuestro ATtiny
Existen otras librerías para las pantallas OLED. La librería GFX de Adafruit no me permitió compilar por lo que decidí buscar algo precisamente para el ATtiny, pero wujud otras librerías y soluciones que son interesantes de explorar
El habiso del dispositivo es muy bajo. Sebagai pertimbangan, tidak dapat dipertimbangkan, ia dianggap lebih baik daripada 3000mAh (NiMH o LiIon) dan 500 días. Peluang pengurangan dan pengurangan masa kerja dan penerangan sensor dan pengarah yang tepat, tidak perlu dipertimbangkan lagi
Según Technoblogy.com el ATtiny puede operar en un eato tan bajo como el mostrado en la primera imagen, pero en este proyecto he obtenido un καταναλωo walikota queesponde al de la segunda imagen. El conso de la batería contúa siendo lo suficientemente bajo como para ser un proyecto factible
Langkah 5: Pautan Y Lecturas Relacionados
www.technoblogy.com/show?KX0&fbclid=IwAR0qu…
github.com/SpenceKonde/ATTinyCore
www.electroschematics.com/am2302-dht22-dat…
ww1.microchip.com/downloads/en/DeviceDoc/A…
embedded خيالنts.com/2016/06/06/attiny85-i…
www.instructables.com/id/ATtiny85-Interrup…
www.technoblogy.com/show?WNM
www.technoblogy.com/show?2F5D
Disyorkan:
Mengurangkan Penggunaan Tenaga Bateri untuk Digispark ATtiny85: 7 Langkah
Mengurangkan Penggunaan Kuasa Bateri untuk Digispark ATtiny85: atau: Menjalankan Arduino dengan sel duit syiling 2032 selama 2 tahun. Menggunakan Digispark Arduino Board dari kotak dengan program Arduino, ia menarik 20 mA pada 5 volt. Dengan bank kuasa 5 volt 2000 mAh ia hanya akan berjalan selama 4 hari
Jam Tangan Pengaturcaraan ATtiny85 Aktiviti Bergetar yang Boleh Dipakai & Pengaturcaraan ATtiny85 Dengan Arduino Uno: 4 Langkah (dengan Gambar)
Jam Tangan Pengaturcaraan & Pengaturcaraan Aktiviti Getaran ATtiny85 ATtiny85 Dengan Arduino Uno: Bagaimana membuat jam tangan aktiviti yang boleh dipakai? Ini adalah alat yang boleh dipakai yang direka untuk bergetar ketika mengesan genangan. Adakah anda menghabiskan sebahagian besar masa anda di komputer seperti saya? Adakah anda duduk berjam-jam tanpa menyedarinya? Maka peranti ini adalah
Cara Menggunakan Stepper Motor Sebagai Rotary Encoder dan OLED Display untuk Langkah: 6 Langkah
Cara Menggunakan Motor Stepper Sebagai Rotary Encoder dan OLED Display untuk Langkah: Dalam tutorial ini kita akan belajar bagaimana untuk melacak langkah motor stepper pada Paparan OLED. Tonton video demonstrasi. Kredit untuk tutorial Asal diberikan kepada pengguna youtube " sky4fly "
Flappy Bird pada Paparan ATtiny85 dan OLED SSD1306: 6 Langkah (dengan Gambar)
Flappy Bird di ATtiny85 dan OLED Display SSD1306: Hai semua, Hari ini saya akan menunjukkan kepada anda klon burung flappy asas yang saya buat, dan bagaimana anda boleh membuat permainan serupa. Pada dasarnya saya akan membaca kod saya dengan anda dan menerangkan bagaimana ia berfungsi setiap langkah. Permainan ini dibina untuk ru
Kad Perniagaan / Konsol Permainan: Skrin ATtiny85 dan OLED: 5 Langkah (dengan Gambar)
Kad Perniagaan / Konsol Permainan: Skrin ATtiny85 dan OLED: Hai semua! Hari ini saya akan menunjukkan kepada anda bagaimana anda boleh membina kad perniagaan / konsol permainan anda sendiri / apa sahaja yang anda dapat bayangkan yang mempunyai paparan OLED I2C dengan lampu latar dan Mikroprosesor ATtiny85. Dalam Instructable ini saya akan memberitahu anda bagaimana PCB yang saya mahukan