Indholdsfortegnelse:
- Forbrugsvarer
- Trin 1: Beskriv Del Funcionamiento
- Trin 2: Kredsløb
- Trin 3: Programmering
- Trin 4: Konklusioner
- Trin 5: Links Y Lecturas Relacionados
Video: Attiny85 Termómetro OLED: 5 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:26
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 realiseres med en ATmega328p, men kan også bruges til at bruge en version af ATtiny85 til at konvertere et batteri og disponere et porto.
En fortsættende beskrivelse af funktionsmulighederne, som kan bruges til at afslutte en fuldstændig gennemførelse af programmer og generelle kommentarer.
Forbrugsvarer
1 x ATtiny85
1 x Arduino UNO/PRO/etc (programmør af ATtiny)
1 x 128x64 pantalla I2C OLED
1 x Sensor temperatura DHT22
1 x Resistensia 4,7MOhm (1/4W)
1 x kondensator electrolítico 0.1uF
1 x Fuente de 3.3V - 5V 10+ x Jumpere
Trin 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. 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 personlig, han encontrado la opción de las placas metálicas más interactivo.
Trin 2: Kredsløb
En la primer billeder kan 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 capacitor para 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.
Trin 3: Programmering
Primeramente, debemos select "Arduino as ISP" som programmør. Si aún no han instalado la placa para el ATtiny, recomiendo installer 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 konfigurada sin BOD, kan reloj de 8MHz intern og y OptiBoot. En udnyttelse af 1MHz til I2C kan ikke foretages via en ekstern 16MHz ekstern enhed, der kan bruges til digitalisering af strøm, og forbruget af energibesparende oplysninger.
Kan fjernes, da han ændrer en arkiv på 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
En fortsat 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 bredde = 128; const uint8_t højde = 64; flygtig bool vendt = falsk; / * * * Interrupt handler * */ISR (PCINT_VECTOR) {// interrupt genopretter altid fra søvn, hvis (digitalRead (I_PIN) == HIGH) {slået = sandt; // indstil flaget til at tegne skærmen igen}} ugyldig opsætning () {cli (); // deaktiver afbrydelser PCMSK | = (1 << I_PINB); GIMSK | = (1 << PCIE); pinMode (I_PIN, INPUT); sei (); // tænde afbrydelser adc_disable (); // spare strøm ved at slukke for konverteren set_sleep_mode (SLEEP_MODE_PWR_DOWN); // indstil søvntypen til dyb søvn oled.begin (bredde, højde, størrelseof (tiny4koled_init_128x64br), tiny4koled_init_128x64br); // start oled objekt oled.setFont (FONT8X16); // denne skrifttype ser bedre ud end den anden drawScreen (); oled.on (); forsinkelse (2000); dht.begin (); vendt = sandt; // flag til tegningsskærm} ugyldig søvn () {sleep_enable (); sleep_cpu (); } ugyldig sløjfe () {hvis (vendt) {cli (); // sluk for interrupts oled.on (); float h = dht.readHumidity (); // falsk læsning for at nulstille dht cache forsinkelse (2200); // vent dht for at indlæse 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"); // symbolet ~ blev ændret på biblioteket til at ligne en ° graders forsinkelse (5000); // vis i 5 sekunder oled.off (); vendt = falsk; sei (); // vedhæft afbrydelser igen} søvn (); // gå altid i dvale i slutningen} void drawScreen () {// tegner rammen og hovedteksten 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, bredde - 2); oled.sendData (0b11111111); oled.endData (); for (uint8_t y = 1; y <(højde - 8) / 8; y ++) {oled.setCursor (0, y); oled.startData (); oled.sendData (0b11111111); oled.repeatData (0b00000000, bredde - 2); oled.sendData (0b11111111); oled.endData (); } oled.setCursor (0, (højde - 8) / 8); oled.startData (); oled.sendData (0b11111111); oled.repeatData (0b10100000, bredde - 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:"); }
Trin 4: Konklusioner
A pesar de su tamaño insignificante, el ATtiny85 ofrece una amplia gama de aplicaciones en las que podemos implementer este controlador de bajo costo sin perder funcionalidad. Personalmente no esperaba que fuera posible incluir el control of pantalla and the sleep juntos debido a las limitaciones de memoria. Dichozamente, el programa ha entrado en nuestro ATtiny
Eksister 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 forbrug af dispositivo es muy bajo. Tænk på en uso konstant, han medido og estimating la vida para una batería de 3000mAh (NiMH o LiIon) en 500 días. Elforbruget kan reducere mængden af en panton og en sensor, der skal bruges til at fastgøre en PIN -kode, men det er ikke nødvendigt at overveje 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
Trin 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/da/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
Anbefalede:
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? Dette er en bærbar gadget designet til at vibrere, når den registrerer stagnation. Bruger du det meste af din tid på computeren som mig? Sidder du i timevis uden at vide det? Så er denne enhed f
Akustisk levitation med Arduino Uno trin for trin (8 trin): 8 trin
Akustisk levitation med Arduino Uno Step-by Step (8-trin): ultralyds lydtransducere L298N Dc kvindelig adapter strømforsyning med en han-DC-pin Arduino UNOBreadboard Sådan fungerer det: Først uploader du kode til Arduino Uno (det er en mikrokontroller udstyret med digital og analoge porte til konvertering af kode (C ++)
Sådan bruges trinmotor som roterende encoder og OLED -display til trin: 6 trin
Sådan bruges trinmotor som roterende encoder og OLED -skærm til trin: I denne vejledning lærer vi, hvordan du sporer trinmotortrinene på OLED -skærmen. Se en demonstrationsvideo. Kredit for den originale vejledning går til youtube -bruger " sky4fly "
Flappy Bird på ATtiny85 og OLED Display SSD1306: 6 trin (med billeder)
Flappy Bird på ATtiny85 og OLED Display SSD1306: Hej alle sammen, I dag vil jeg vise dig en grundlæggende klapfuglklon, som jeg har oprettet, og hvordan du kan lave et lignende spil. Jeg vil i det væsentlige gennemgå min kode med dig og forklare, hvordan det fungerer hvert trin på vejen. Dette spil er bygget til at ødelægge
Visitkort/spilkonsol: ATtiny85 og OLED -skærm: 5 trin (med billeder)
Visitkort/spilkonsol: ATtiny85 og OLED Skærm: Hej alle sammen! I dag vil jeg vise dig, hvordan du kan bygge dit eget visitkort/spillekonsol/hvad du end kan forestille dig, der har et baggrundsbelyst I2C OLED -display og en ATtiny85 mikroprocessor. I denne instruks vil jeg fortælle dig, hvordan et printkort, jeg designer