Inhoudsopgave:

Attiny85 Termómetro OLED - Ajarnpa
Attiny85 Termómetro OLED - Ajarnpa

Video: Attiny85 Termómetro OLED - Ajarnpa

Video: Attiny85 Termómetro OLED - Ajarnpa
Video: ATtiny13 + DS18B20 + 128x32px OLED Thermometer 2024, December
Anonim
Attiny85 Termómetro OLED
Attiny85 Termómetro OLED
Attiny85 Termómetro OLED
Attiny85 Termómetro OLED

Este proyecto bestaat uit een termómetro pequeño que muestra the temperatura actual, la humedad relativa y el índice de temperatura. Gerealiseerd met ATmega328p, voor een interesante versie van het gebruik van ATtiny85, waarmee u kunt samenwerken en samenkomen en naar een nieuwe portatil kunt kijken.

Een continuación describiré el funcionamiento, seguido mostraré el circuito y finalizaré con el programa y algunos comentarios sobre el proyecto en general.

Benodigdheden

1 x ATtiny85

1 x Arduino UNO/PRO/etc (programma van ATtiny)

1 x 128x64 pantalla I2C OLED

1 x Sensortemperatuur DHT22

1 x Weerstand 4,7 MOhm (1/4W)

1 x condensator electrolítico 0.1uF

1 x Fuente de 3.3V - 5V 10+ x Jumpers

Stap 1: Beschrijving Del Funcionamiento

El objetivo del proyecto es mostrar los tres valores anteriormente mencionados en la pantalla OLED, además, como objetivo secundario, en incluido el uso de la librería sleep.he interrupt.h para activar el termómetro manualmente y asum reducir extender el consuminder la bateria.

Nuestro programa se guiará el siguiente processo: Leer temperatura -> Mostrar temperatura en pantalla -> Apagar ATtiny -> Reiniciar al presionar botón.

Paragraaf van de laatste pasos dejaremos la mayor parte del trabajo a las librerías ya existentes, por lo que no reinventaremos la rueda. De bibliotheek van DHT-sensoren van Adafruit (beschikbaar in de IDE) en Tiny4kOLED van datacute dscargaremos de Github ya que, al parecer, el autor original es datacute y, además, necesitaremos un poco luego.

Het is een manier om de strijd aan te gaan met de wereld van de metaalbewerkingen die kunnen worden gevolgd door het uitrusten van het apparaat. En lo persoonlijk, hij encontrado la opción de las placas metálicas más interactionivo.

Stap 2: Circuito's

Circuito's
Circuito's
Circuito's
Circuito's
Circuito's
Circuito's

En la primer imagen se encuentra el circuito que requerimos para programar el ATtiny85. Primeramente se debe programar al Arduino (el condensator debe estar desconectado) con el sketch ArduinoISP, que se encuentra en Archivos -> Ejemplos -> 11. ArduinoISP. U kunt ook gebruikmaken van de batterij van de condensator voor de nieuwe Arduino en van het programma van ATtiny85.

El ATtiny se puede alimentar directamente del Arduino. En het gebruik van de batterij van de batterij en de noodzakelijke verbinding met de masa (GND) van Arduino en ATtiny85.

Colocar un botón entre el pin 13 del Arduino en 2 del ATtiny puede facilitar el hacer pruebas ya que la pantalla no puede estar conectada cuando se pro ATtiny.

Como se observa en las imagenes. El pin SDA del ATyiny es el 0 y el SCL/CLK es el 2. Nuestro DHT is aangesloten op el pin 4.

Stap 3: Programmeren

Primeramente, debemos seleccionar "Arduino as ISP" como el programmeador. Er is geen plaats voor de installatie van de ATtiny, aanbevolen voor de installatie van de ATtinyCore van Spence Konde. Esta placa no me general ningún problema de compilación durante la realización del proyecto.

La estar configurada sin BOD, con un reloj de 8MHz interno y sin OptiBoot. Het gebruik van 1MHz voor communicatie door I2C is niet mogelijk en 16MHz con cristal externo, ademt de perder dos pines digitals, el consumer energético aumenta aanzienlijkemente.

Een overzicht van de wijzigingen in het archief en de bibliotheek Tiny4kOLED. Het archief van "font8x16.h" en de lijn van 117 wordt weergegeven door de zoekfunctie van de cambiar en de símbolo ~ door ° que usaremos in °C.

0x00, 0x06, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00

Een 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)) converter #define DHTPIN 4 #define DHTTYPE DHT22 DHT dht(DHTPIN, DHTTYPE); const uint8_t breedte = 128; const uint8_t hoogte = 64; vluchtige bool gedraaid = false; /* * * Interrupt-handler * */ ISR (PCINT_VECTOR) {// interrupt herstelt altijd uit de slaapstand if (digitalRead (I_PIN) == HIGH) {turned = true; // stel de vlag in om het scherm opnieuw te tekenen } }void setup() { cli(); //onderbrekingen uitschakelen PCMSK |= (1 << I_PINB); GIMSK |= (1 << PCIE); pinMode (I_PIN, INPUT); zie(); //onderbrekingen inschakelen adc_disable(); // bespaar stroom door de converter set_sleep_mode (SLEEP_MODE_PWR_DOWN) uit te schakelen; // stel het type slaap in op diepe slaap oled.begin(width, height, sizeof(tiny4koled_init_128x64br), tiny4koled_init_128x64br); // start oled-object oled.setFont (FONT8X16); //dit lettertype ziet er beter uit dan het andere drawScreen(); oled.op(); vertraging (2000); dht.begin(); gedraaid = waar; // vlag voor tekenscherm } void sleep () { sleep_enable (); slaap_cpu(); } void loop() { if (gedraaid){ cli(); //onderbrekingen uitschakelen oled.on(); float h = dht.readHumidity();//false read om dht cache delay (2200) te resetten;//wait dht om te laden 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"); // het ~-symbool is in de bibliotheek gewijzigd om eruit te zien als een ° graden symboolvertraging (5000); // toon gedurende 5 seconden oled.off(); gedraaid = vals; sei();//koppel interrupts opnieuw } sleep(); // ga altijd slapen aan het einde} void drawScreen () {// tekent het frame en de hoofdtekst voor (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, breedte - 2); oled.sendData(0b11111111); oled.endData(); for (uint8_t y = 1; y < (hoogte - 8) / 8; y++) { oled.setCursor(0, y); oled.startData(); oled.sendData(0b11111111); oled.repeatData(0b00000000, breedte - 2); oled.sendData(0b11111111); oled.endData(); } oled.setCursor(0, (hoogte - 8) / 8); oled.startData(); oled.sendData(0b11111111); oled.repeatData (0b10100000, breedte - 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:"); }

Stap 4: Conclusies

conclusies
conclusies
conclusies
conclusies

Een niet-beduidend instrument dat niet veel uitmaakt, kan worden voorzien van een uitgebreid programma voor toepassingen en een implementatie van de controle van de kosten van het functioneren. Persoonlijke gegevens zijn niet beschikbaar, inclusief de controle van de slaap en de slaapbeperkingen. 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 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. Overweeg een constante, gemiddelde schatting van de batterij van 3000mAh (NiMH of LiIon) en 500 dagen. Het gebruik van de mogelijkheid om de pantalla en de sensor direct naar de pin te verminderen, kan niet worden overwogen

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 corresponde al de la segunda imagen. Het verbruik van de batería continúa siendo lo suficientemente bajo como para ser un proyecto factible

Stap 5: Links 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…

embeddedthoughts.com/2016/06/06/attiny85-i…

www.instructables.com/id/ATtiny85-Interrup…

www.technoblogy.com/show?WNM

www.technoblogy.com/show?2F5D

Aanbevolen: