Inhoudsopgave:
- Benodigdheden
- Stap 1: Beschrijving Del Funcionamiento
- Stap 2: Circuito's
- Stap 3: Programmeren
- Stap 4: Conclusies
- Stap 5: Links Y Lecturas Relacionados
Video: Attiny85 Termómetro OLED - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:15
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
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
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:
Het energieverbruik van de batterij voor Digispark ATtiny85 verminderen: 7 stappen:
Het energieverbruik van de batterij voor Digispark ATtiny85 verminderen: of: een Arduino met een 2032-knoopcel gedurende 2 jaar laten werken. Als u uw Digispark Arduino-bord uit de doos met een Arduino-programma gebruikt, trekt het 20 mA bij 5 volt. Met een 5 volt powerbank van 2000 mAh werkt maar 4 dagen
AtTiny85 adresseerbare LED-strip: 10 stappen
AtTiny85 Adresseerbare LED-strip: Mijn doel was om een bureaulamp te maken van LED's. Ik wilde dat deze verstelbaar was, zodat hij zowel overdag als 's nachts kon worden gebruikt. Bij mijn eerste poging gebruikte ik een eenvoudige LED-strip en grote MOS- FET's om ze op 12v aan te sturen. Deze keer heb ik gekozen voor adresseerbare LED's die krachtig zijn
Een Attiny85-console maken - ArduPlay: 5 stappen (met afbeeldingen)
Hoe maak je een Attiny85-console - ArduPlay: Het was als volgt: ik bladerde doelloos door YouTube-video's om te ontspannen met een kopje thee. Misschien een voetbalwedstrijd hoogtepunten of een compilatie van grappige video's? Plots kreeg ik een melding op mijn telefoon - een nieuwe video op het Electronoobs-kanaal. Ongelukkig
Gewoon weer een ATtiny85 Retro-gameconsole: 4 stappen
Gewoon een andere ATtiny85 Retro-gamingconsole: een kleine retro-console-achtige opstelling gebaseerd op ATtiny85 x 0,96 OLED voor het spelen van space-invaders, Tetris, enz
Visitekaartje/Game Console: ATtiny85 en OLED-scherm: 5 stappen (met afbeeldingen)
Visitekaartje/spelconsole: ATtiny85 en OLED-scherm: Hallo allemaal! Vandaag laat ik je zien hoe je je eigen visitekaartje/spelcomputer/wat je maar kunt bedenken met een verlicht I2C OLED-scherm en een ATtiny85-microprocessor kunt bouwen. In deze Instructable zal ik je vertellen hoe een PCB die ik ontwerp