Innehållsförteckning:
- Tillbehör
- Steg 1: Beskriv Del Funcionamiento
- Steg 2: Circuitos
- Steg 3: Programación
- Steg 4: Slutsatser
- Steg 5: Länkar Y Lecturas Relacionados
Video: Attiny85 Termómetro OLED: 5 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:39
Este proyecto consiste en un termómetro pequeño y simple que muestra la facta actual, la humedad relativa y el índice de temperatura. Det kan realiseras med en ATmega328p, men kan också användas av ATtiny85 och kan användas för att konvergera ett batteri och en dispositivo pequeño och portátil.
En fortsättning som beskriver el funcionamiento, seguido mostraré el circuito y finalizaré con el programa y algunos comentarios sobre el proyecto en general.
Tillbehör
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 Resistens 4,7MOhm (1/4W)
1 x kondensator electrolítico 0.1uF
1 x Fuente de 3.3V - 5V 10+ x Jumpers
Steg 1: Beskriv 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 consumo para extender la vida de 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 Mayor parte del trabajo a las librerías ya existentes, por lo que no reinventaremos 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 author 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. En lo personal, han encontrado la opción de las placas metálicas más interactivo.
Steg 2: Circuitos
En la primer imagen se encuentra el circuito que requerimos para programar el ATtiny85. Primeramente se debe programar al Arduino (el capacitor debe estar desconectado) con el sketch ArduinoISP, que se encuentra en Archivos -> Ejemplos -> 11. ArduinoISP. Una vez hecho esto se debe colocar el kondensator för 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 facilitar 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 el SCL/CLK es el 2. Nuestro DHT está conectado en el pin 4.
Steg 3: Programación
Primeramente, debemos seleccionar "Arduino as ISP" som programmerare. Si aún no han installera la placa para el ATtiny, recomiendo instalar la placa ATtinyCore de Spence Konde. Esta placa no me generó ningún problema de compilación durante la realización del proyecto.
La placa debe estar configurada sin BOD, med en reloj av 8MHz intern och sin OptiBoot. Om man använder 1 MHz för I2C kan man använda en 16 MHz extern kristall, además de perder dos pines digitales, el consumo energético aumenta considerablemente.
Det kan göras för att modifiera ett arkiv för 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
A continuación ajunto el sketch 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)) disable = "" adc = "" converter #define DHTPIN #define DHTTYPE DHT22 DHT dht (DHTPIN, DHTTYPE); const uint8_t bredd = 128; const uint8_t höjd = 64; flyktig bool vände = falskt; / * * * Avbrottshanterare * */ISR (PCINT_VECTOR) {// interrupt återställs alltid från viloläge om (digitalRead (I_PIN) == HIGH) {vände = sant; // ställ in flaggan för att rita om skärmen igen}} ogiltig installation () {cli (); // stäng av avbryter PCMSK | = (1 << I_PINB); GIMSK | = (1 << PCIE); pinMode (I_PIN, INPUT); sei (); // slå på avbrott adc_disable (); // spara ström genom att stänga av omvandlaren set_sleep_mode (SLEEP_MODE_PWR_DOWN); // ställ in typen av sömn till djup sömn oled.begin (bredd, höjd, storlek på (tiny4koled_init_128x64br), tiny4koled_init_128x64br); // starta oled objekt oled.setFont (FONT8X16); // det här teckensnittet ser bättre ut än det andra drawScreen (); oled.on (); fördröjning (2000); dht.begin (); vände = sant; // flagga för ritningsskärm} void sleep () {sleep_enable (); sleep_cpu (); } void loop () {if (vände) {cli (); // stäng av avbrott oled.on (); float h = dht.readHumidity (); // false read för att återställa dht cache -fördröjning (2200); // wait dht to load h = dht.readHumidity (); float t = dht.readTemperature (); 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"); // symbolen ~ ändrades på biblioteket för att se ut som en ° graders fördröjning (5000); // visa i 5 sekunder oled.off (); vände = falskt; sei (); // bifoga avbrott igen} sömn (); // sov alltid i slutet} void drawScreen () {// ritar ramen och huvudtexten för (uint8_t y = 0; y <8; y ++) {oled.setCursor (0, y); oled.startData (); för (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, bredd - 2); oled.sendData (0b11111111); oled.endData (); för (uint8_t y = 1; y <(höjd - 8) / 8; y ++) {oled.setCursor (0, y); oled.startData (); oled.sendData (0b11111111); oled.repeatData (0b00000000, bredd - 2); oled.sendData (0b11111111); oled.endData (); } oled.setCursor (0, (höjd - 8) / 8); oled.startData (); oled.sendData (0b11111111); oled.repeatData (0b10100000, bredd - 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:"); }
Steg 4: Slutsatser
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 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 existen otras librerías y soluciones que son interesantes de explorar
El consumo del dispositivo es muy bajo. Betrakta oss som en konstant, han gör att vi kan beräkna en batteri på 3000 mAh (NiMH o LiIon) och 500 dia. Elförbrukning kan reducera en del av kontakten med sensorerna och göra en del av ATtiny, men det är inte nödvändigt att tänka på det
Según Technoblogy.com el ATtiny puede operar en un consumo tan bajo como el mostrado en la primera imagen, pero en este proyecto he obtenido un consumo Mayor que correspondonde al de la segunda image. El consumo de la batería continúa siendo lo suficientemente bajo como para ser un proyecto factible
Steg 5: Länkar 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 thoughts.com/2016/06/06/attiny85-i…
www.instructables.com/id/ATtiny85-Interrup …
www.technoblogy.com/show?WNM
www.technoblogy.com/show?2F5D
Rekommenderad:
ATtiny85 Wearable Vibrating Activity Tracking Watch & Programming ATtiny85 With Arduino Uno: 4 Steps (with Pictures)
ATtiny85 Wearable Vibrating Activity Tracking Watch & Programming ATtiny85 With Arduino Uno: How to make the wearable activity tracking watch? Detta är en bärbar pryl som är utformad för att vibrera när den upptäcker stagnation. Tillbringar du större delen av din tid på datorn som jag? Sitter du i timmar utan att inse det? Då är denna enhet f
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): 8 steg
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): ultraljudsgivare L298N Dc kvinnlig adapter strömförsörjning med en manlig DC-pin Arduino UNOBreadboardHur det fungerar: Först laddar du upp kod till Arduino Uno (det är en mikrokontroller utrustad med digital och analoga portar för att konvertera kod (C ++)
Hur man använder stegmotor som roterande kodare och OLED -display för steg: 6 steg
Så här använder du stegmotor som roterande kodare och OLED -skärm för steg: I denna handledning lär vi oss hur du spårar stegmotorstegen på OLED -skärmen. Titta på en demonstrationsvideo. Kredit för den ursprungliga handledningen går till YouTube -användaren " sky4fly "
Flappy Bird på ATtiny85 och OLED Display SSD1306: 6 steg (med bilder)
Flappy Bird på ATtiny85 och OLED Display SSD1306: Hej alla, Idag ska jag visa dig en grundläggande flappy bird -klon som jag skapade, och hur du kan gå tillväga för att göra ett liknande spel. Jag kommer i huvudsak att köra igenom min kod med dig och förklara hur det fungerar varje steg på vägen. Detta spel är byggt för att
Visitkort/spelkonsol: ATtiny85 och OLED -skärm: 5 steg (med bilder)
Visitkort/spelkonsol: ATtiny85 och OLED -skärm: Hej alla! Idag ska jag visa dig hur du kan bygga ditt eget visitkort/spelkonsol/vad du än kan tänka dig som har en bakgrundsbelyst I2C OLED -skärm och en ATtiny85 -mikroprocessor. I denna instruktionsbok ska jag berätta hur ett kretskort som jag utformar