Mục lục:
- Quân nhu
- Bước 1: Descripción Del Funcionamiento
- Bước 2: Circuitos
- Bước 3: Programación
- Bước 4: Kết luận
- Bước 5: Liên kết Y Lecturas Relacionados
Video: Attiny85 Termómetro OLED: 5 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:31
Este proyecto ince en un termómetro pequeño y simple que muestra la temperatura thực tế, la humedad relativa y el índice de temperatura. Puede realizarse con un ATmega328p, pero loprissante de esta versión es effizar un ATtiny85 cuyo tamaño y conso de batería convertgen en un dispositivo pequeño y portátil.
Một mô tả liên tục, seguido mostraré el Circuito y finalizaré con el programma y algunos comentarios sobre el proyecto en general.
Quân nhu
1 x ATtiny85
1 x Arduino UNO / PRO / etc (programador del ATtiny)
1 x 128x64 pantalla I2C OLED
1 x Cảm biến temperatura DHT22
1 x Resistencia 4.7MOhm (1 / 4W)
1 x Tụ điện electrolítico 0,1uF
1 x Fuente de 3.3V - 5V 10+ x Jumper
Bước 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 intern.h para activar el termómetro manualmente y así Reduceir el consilio para Extender la vida de la batería.
Nuestro programma se guiará por el siguiente proceso: Leer temperatura -> Mostrar temperatura en pantalla -> Apagar ATtiny -> Reiniciar al presionar botón.
Para cada una de estos pasos dejaremos la thị trưởng parte del trabajo a las librerías ya tồn tại, por lo que no reventaremos la rueda. La librería DHT sensor library de Adafruit (disponible en el 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 eleas metálicas que se tocan para encender el equipo. En lo cá nhân, anh ta encontrado la opción de las nhauas metálicas más interactivo.
Bước 2: Circuitos
En la primer imagen se encuentra el circuito que requerimos para programar el ATtiny85. Primeramente se debe programar al Arduino (el tụ debe estar desconectado) con el sketch ArduinoISP, que se encuentra en Archivos -> Ejemplos -> 11. ArduinoISP. Una vez hecho esto se debe colocar el tụ para evitar que nuestro Arduino se reinicie al programar el ATtiny85.
El ATtiny se puede alimentar directamente del Arduino. En caso de useizar 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 secureitar el hacer pruebas ya que la pantalla no puede estar conectada cuando se programma al ATtiny.
Como se Observa en las imágenes. El pin SDA del ATyiny es el 0 y el SCL / CLK es el 2. Nuestro DHT está conectado en el pin 4.
Bước 3: Programación
Primeramente, debemos seleccionar "Arduino as ISP" como el programador. Si aún no han instalado la lasa para el ATtiny, recomiendo instalar la nhau ATtinyCore de Spence Konde. Esta sa khoáng không tôi generó ningún problemma de compilación durante la realización del proyecto.
La nhau debe estar configurada sin BOD, con un reloj de 8MHz interno y sin OptiBoot. Si useizamos 1MHz la comunicación bởi I2C no es estable y a 16MHz con cristal externo, además de perder dos pines digitales, el consello energygético aumenta đáng kể.
Cabe destacar que he modificado un archivo en la librería Tiny4kOLED. El archivo modificado es "font8x16.h" y he 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
Một bản phác thảo liên tục ajunto el necesario para 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)) vô hiệu hóa = "" adc = "" trình chuyển đổi #define DHTPIN 4 #define DHTTYPE DHT22 DHT dht (DHTPIN, DHTTYPE); const uint8_t width = 128; const uint8_t height = 64; bool dễ bay hơi biến = false; / * * * Trình xử lý ngắt * * / ISR (PCINT_VECTOR) {// ngắt luôn phục hồi từ trạng thái ngủ nếu (digitalRead (I_PIN) == HIGH) {turn = true; // đặt cờ để vẽ lại màn hình}} void setup () {cli (); // tắt ngắt PCMSK | = (1 << I_PINB); GIMSK | = (1 << PCIE); pinMode (I_PIN, INPUT); sei (); // bật ngắt adc_disable (); // tiết kiệm điện tắt bộ chuyển đổi set_sleep_mode (SLEEP_MODE_PWR_DOWN); // thiết lập kiểu ngủ thành deep sleep oled.begin (width, height, sizeof (tiny4koled_init_128x64br), tiny4koled_init_128x64br); // khởi động đối tượng oled oled.setFont (FONT8X16); // phông chữ này trông đẹp hơn phông chữ kia drawScreen (); oled.on (); chậm trễ (2000); dht.begin (); biến = true; // cờ để vẽ màn hình} void sleep () {sleep_enable (); sleep_cpu (); } void loop () {if (quay) {cli (); // tắt ngắt oled.on (); float h = dht.readHumidity (); // false read để reset dht cache delay (2200); // đợi dht tải h = dht.readHumidity (); float t = dht.readTempe Heat (); float 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"); // biểu tượng ~ đã được thay đổi trên thư viện để trông giống như biểu tượng ° độ trễ (5000); // hiển thị trong 5 giây oled.off (); biến = sai; sei (); // lại đính kèm ngắt} sleep (); // luôn chuyển sang chế độ ngủ khi kết thúc} void drawScreen () {// vẽ khung cho văn bản chính for (uint8_t y = 0; y <8; y ++) {oled.setCursor (0, y); oled.startData (); for (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, chiều rộng - 2); oled.sendData (0b11111111); oled.endData (); for (uint8_t y = 1; y <(height - 8) / 8; y ++) {oled.setCursor (0, y); oled.startData (); oled.sendData (0b11111111); oled.repeatData (0b00000000, chiều rộng - 2); oled.sendData (0b11111111); oled.endData (); } oled.setCursor (0, (height - 8) / 8); oled.startData (); oled.sendData (0b11111111); oled.repeatData (0b10100000, chiều rộng - 2); oled.sendData (0b11111111); oled.endData (); oled.setCursor (4, 1); oled.print ("Nhiệt độ:"); oled.setCursor (4, 3); oled.print ("Hum:"); oled.setCursor (4, 5); oled.print ("Sens:"); }
Bước 4: Kết luận
A pesar de su tamaño insignificante, 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 posible incluir el control de pantalla y de sleep juntos debido a las limitaciones de memoria. Dichozamente, el programma ha entrado en nuestro ATtiny
Tồn tại otras librerías para las pantallas OLED. La librería GFX de Adafruit no me permitió tương tự như lo que decidí buscar algo prepisamente para el ATtiny, pero survivalen otras librerías y soluciones que sonprissantes de explorerar
El tiêu dùng del dispositivo es muy bajo. Considerando un uso Constante, he medido y ước tính la vida para una batería de 3000mAh (NiMH o LiIon) en 500 días. Elfilo podría Reduceirse aún más desconectando la pantalla y el sensor directamente desde un pin del ATtiny, pero no lo he coirado necesario
Según Technoblogy.com el ATtiny puede operar en unmateo tan bajo como el mostrado en la primera imagen, pero en este proyecto he obtenido unmateo thị trưởng que tương ứng al de la segunda imagen. El conto de la batería Continúa siendo lo suficiencyemente bajo como para ser un proyecto factible
Bước 5: Liên kết Y Lecturas Relacionados
www.technoblogy.com/show?KX0&fbclid=IwAR0qu…
github.com/SpenceKonde/ATTinyCore
www.electroschearies.com/am2302-dht22-dat…
ww1.microchip.com/downloads/en/DeviceDoc/A…
embeddedthoughts.com/2016/06/06/attiny85-i…
www.instructables.com/id/ATtiny85-Interrup…
www.technoblogy.com/show?WNM
www.technoblogy.com/show?2F5D
Đề xuất:
ATtiny85 Đồng hồ theo dõi hoạt động rung có thể đeo trên thiết bị đeo và lập trình ATtiny85 với Arduino Uno: 4 bước (có hình ảnh)
ATtiny85 Đồng hồ theo dõi hoạt động rung có thể đeo được và lập trình ATtiny85 với Arduino Uno: Làm thế nào để tạo đồng hồ theo dõi hoạt động có thể đeo được? Đây là một thiết bị đeo được thiết kế để rung khi phát hiện thấy có sự cố. Bạn có dành phần lớn thời gian trên máy tính như tôi không? Bạn đang ngồi hàng giờ mà không nhận ra? Sau đó, thiết bị này là
Động cơ bước Điều khiển động cơ bước Động cơ bước - Động cơ bước như một bộ mã hóa quay: 11 bước (có hình ảnh)
Động cơ bước Điều khiển động cơ bước Động cơ bước | Động cơ bước như một bộ mã hóa quay: Có một vài động cơ bước nằm xung quanh và muốn làm điều gì đó? Trong Có thể hướng dẫn này, hãy sử dụng động cơ bước làm bộ mã hóa quay để điều khiển vị trí của động cơ bước khác bằng vi điều khiển Arduino. Vì vậy, không cần phải quảng cáo thêm, chúng ta hãy
Cách sử dụng động cơ bước làm bộ mã hóa quay và màn hình OLED cho các bước: 6 bước
Cách sử dụng Động cơ bước làm bộ mã hóa quay và Màn hình OLED cho các bước: Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách theo dõi các bước của động cơ bước trên Màn hình OLED. Xem video trình diễn. Tín dụng cho Hướng dẫn gốc sẽ được chuyển đến người dùng youtube " sky4fly "
Flappy Bird trên ATtiny85 và màn hình OLED SSD1306: 6 bước (có hình ảnh)
Flappy Bird trên ATtiny85 và Màn hình OLED SSD1306: Xin chào mọi người, Hôm nay tôi sẽ giới thiệu cho các bạn một bản sao chép flappy bird cơ bản mà tôi đã tạo và cách bạn có thể tạo một trò chơi tương tự. Về cơ bản, tôi sẽ chạy qua mã của tôi với bạn và giải thích cách nó hoạt động từng bước. Trò chơi này được xây dựng để ru
Danh thiếp / Bảng điều khiển trò chơi: ATtiny85 và Màn hình OLED: 5 bước (có Hình ảnh)
Danh thiếp / Bảng điều khiển trò chơi: ATtiny85 và Màn hình OLED: Xin chào tất cả các bạn! Hôm nay tôi sẽ chỉ cho bạn cách bạn có thể tạo danh thiếp / bảng điều khiển trò chơi của riêng mình / bất cứ thứ gì bạn có thể tưởng tượng được có màn hình I2C OLED có đèn nền và Bộ vi xử lý ATtiny85. Trong phần Có thể hướng dẫn này, tôi sẽ cho bạn biết cách một PCB mà tôi chỉ định