Kazalo:
- Zaloge
- 1. korak: Opis funkcijske funkcije
- Korak: Circuitos
- 3. korak: Programiranje
- 4. korak: Zaključki
- 5. korak: Povežite Y Lecturas Relacionados
Video: Attiny85 Termómetro OLED: 5 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:03
Este proyecto consiste en un termómetro pequeño y simple que muestra la temperature dejanska, la humedad relativa y el índice de temperatura. Puede realizarse con ATmega328p, pero lo interesante de esta versión es utilizar un ATtiny85 cuyo tamaño y consumo de batería convergen en un dispositivo pequeño y portátil.
Neprekinjen opis delovanja, funkcionamiento, seguido mostraré el circuito y finalizaré con el programa y algunos comentarios sobre el proyecto na splošno.
Zaloge
1 x ATtiny85
1 x Arduino UNO/PRO/etc (program za del ATtiny)
1 x 128x64 pantalla I2C OLED
1 x temperatura senzorja DHT22
1 x Resistencia 4,7MOhm (1/4W)
1 x elektrolitski kondenzator 0,1 uF
1 x Fuente de 3.3V - 5V 10+ x mostički
1. korak: Opis funkcijske funkcije
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.
Najnovejši programi se izvajajo v skladu z naslednjimi postopki: Najnižja temperatura -> Najnižja temperatura v krogu -> Apagar ATtiny -> Reiniciar al presionar botton.
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. Osebno je predlagal opción de las placas metálicas más interactivo.
Korak: Circuitos
En la primer imagen en encuentra el circuito que requerimos para programmar el ATtiny85. Primeramente debe programer al Arduino (el kondenzator debe estar desconectado) s skico ArduinoISP, que se encuentra en Archivos -> Ejemplos -> 11. ArduinoISP. Una vez hecho esto se debe colocar el kondenzator za 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 je na 0 ali SCL/CLK es el 2. Nuestro DHT je povezan s pin 4.
3. korak: Programiranje
Primer, izbrani "Arduino kot ponudnik internetnih storitev" kot program. Si aún no han instalado la placa para el ATtiny, recomiendo instalar la placa ATtinyCore de Spence Konde. Esta placa no ge genero ningún problem de compilación durante la realización del proyecto.
La placa debe estar konfiguracija sinhronizacije BOD, ki je vgrajena v 8MHz interno y OptiBoot. Če uporabljate 1 MHz za komunikacijo po I2C, ni mogoče nastaviti na 16 MHz s kristalnim zunanjim izhodom, prilagoditi podatke o digitalnih pinesih, porabo energije pa znatno povečati.
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
Continuación ajunto el skica 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 #def #define DHTTYPE DHT22 DHT dht (DHTPIN, DHTTYPE); const uint8_t width = 128; const uint8_t višina = 64; hlapna bool obrnjena = napačno; / * * * Vodnik prekinitve * */ISR (PCINT_VECTOR) {// prekinitev se vedno povrne iz stanja spanja, če (digitalRead (I_PIN) == HIGH) {turn = true; // zastavo za ponovno risanje zaslona}} void setup () {cli (); // izklopi prekinitve PCMSK | = (1 << I_PINB); GIMSK | = (1 << PCIE); pinMode (I_PIN, INPUT); sei (); // vklopi prekinitve adc_disable (); // varčevanje z energijo pri izklopu pretvornika set_sleep_mode (SLEEP_MODE_PWR_DOWN); // vrsto spanja nastavimo na globok spanec oled.begin (width, height, sizeof (tiny4koled_init_128x64br), tiny4koled_init_128x64br); // zagon oled objekta oled.setFont (FONT8X16); // ta pisava izgleda bolje kot druga drawScreen (); oled.on (); zamuda (2000); dht.begin (); obrnjeno = res; // zastavica za risanje zaslona} void sleep () {sleep_enable (); sleep_cpu (); } void loop () {if (obrnjeno) {cli (); // izklopi prekinitve oled.on (); float h = dht.readHumidity (); // napačno branje za ponastavitev zakasnitve dht predpomnilnika (2200); // počakajte dht za nalaganje 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"); // simbol ~ je bil v knjižnici spremenjen v zamik simbola ° stopinje (5000); // za 5 sekund pokaži oled.off (); obrnjeno = napačno; sei (); // znova priloži prekinitve} sleep (); // vedno pojdi spat na koncu} void drawScreen () {// nariše okvir in glavno besedilo za (uint8_t y = 0; y <8; y ++) {oled.setCursor (0, y); oled.startData (); za (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, širina - 2); oled.sendData (0b11111111); oled.endData (); za (uint8_t y = 1; y <(višina - 8) / 8; y ++) {oled.setCursor (0, y); oled.startData (); oled.sendData (0b11111111); oled.repeatData (0b00000000, širina - 2); oled.sendData (0b11111111); oled.endData (); } oled.setCursor (0, (višina - 8) / 8); oled.startData (); oled.sendData (0b11111111); oled.repeatData (0b10100000, širina - 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:"); }
4. korak: Zaključki
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 program has entrado en nuestro ATtiny
Obstoj otras librerías para las pantallas OLED. La librería GFX de Adafruit no permitió compiler 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. Po mojem mnenju un uso constante je medido y estimado la vida para una batería de 3000mAh (NiMH o LiIon) in 500 días. El consumo podría reducirse aún más desconectando la pantalla y el sensor directamente desde un pin del ATtiny, no no he he razmisljala o tem
Según Technoblogy.com el ATtiny puede operar en un consumo tan bajo como el mostrado en la primera imagen, pero en este proyecto on obtenido un consumo Mayor que korespondnde al de la segunda imagen. El consumo de la batería continúa siendo lo suficientemente bajo como para ser un proyecto factible
5. korak: Povežite 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…
embeddedoughts.com/2016/06/06/attiny85-i…
www.instructables.com/id/ATtiny85-Interrup…
www.technoblogy.com/show?WNM
www.technoblogy.com/show?2F5D
Priporočena:
Zmanjšanje porabe energije baterije za Digispark ATtiny85: 7 korakov
Zmanjšanje porabe energije baterije za Digispark ATtiny85: ali: Za dve leti zaženite Arduino s kovancem v obliki kovanca 2032. Z uporabo vaše plošče Digispark Arduino iz škatle s programom Arduino črpa 20 mA pri 5 voltih. 2000 mAh bo deloval le 4 dni
AtTiny85 naslovljiv LED trak: 10 korakov
AtTiny85 Naslovljiv LED trak: Moj cilj je bil izdelati namizno svetilko iz LED diod. Želel sem, da je nastavljiva, tako da jo lahko uporabljamo podnevi in ponoči. V prvem poskusu sem uporabil preprost LED trak in velik MOS- FET -i za pogon pri napetosti 12 V. Tokrat sem izbral naslovljive LED -diode, ki so močne
Opazovanje in programiranje sledljivih nosilnih vibracijskih dejavnosti ATtiny85 ATtiny85 z Arduino Uno: 4 koraki (s slikami)
ATtiny85 Opazovanje in programiranje nosljivih vibracijskih sledilnih dejavnosti ATtiny85 z Arduino Uno: Kako narediti uro za sledenje nosljivim aktivnostim? To je nosljiv pripomoček, zasnovan tako, da vibrira, ko zazna stagnacijo. Ali večino časa preživite za računalnikom kot jaz? Ali sedite ure in ure, ne da bi se tega zavedali? Ta naprava je potem
Flappy Bird na zaslonu ATtiny85 in OLED SSD1306: 6 korakov (s slikami)
Flappy Bird na ATtiny85 in OLED zaslonu SSD1306: Pozdravljeni vsi, danes vam bom pokazal osnovni klon flappy bird, ki sem ga ustvaril, in kako lahko naredite podobno igro. V bistvu bom z vami pregledal svojo kodo in na vsakem koraku razložil, kako deluje. Ta igra je narejena tako, da
Vizitka/igralna konzola: ATtiny85 in zaslon OLED: 5 korakov (s slikami)
Vizitka/igralna konzola: ATtiny85 in OLED zaslon: Pozdravljeni! Danes vam bom pokazal, kako lahko sestavite svojo lastno vizitko/igralno konzolo/karkoli si zamislite, ki ima osvetljen zaslon I2C OLED in mikroprocesor ATtiny85. V tem navodilu vam bom povedal, kako tiskano vezje, ki sem ga oblikoval