Cov txheej txheem:
- Khoom siv
- Kauj Ruam 1: Cov lus piav qhia Del Funcionamiento
- Kauj ruam 2: Circuitos
- Kauj ruam 3: Programación
- Kauj Ruam 4: Cov lus xaus
- Kauj Ruam 5: Txuas Y Lecturas Relacionados
Video: Attiny85 Termómetro OLED: 5 Kauj Ruam
2024 Tus sau: John Day | [email protected]. Kawg hloov kho: 2024-01-30 09:25
Este proyecto suav nrog ib lo lus pemetño y yooj yim que muestra la temperatura qhov tseeb, la humedad relativa y el índice de temperatura. Puede realizarse con un 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.
Kev txuas ntxiv piav qhia el funcionamiento, seguido mostraré el circuito y finalizaré con el programa y algunos comentarios sobre el proyecto en general.
Khoom siv
1 tx85
1 x Arduino UNO/PRO/thiab lwm yam (programador del ATtiny)
1 x 128x64 pantalla I2C OLED
1 x Sensor ntsuas kub DHT22
1 x Resistencia 4.7MOhm (1/4W)
1 x Capacitor electrolítico 0.1uF
1 x Fuente de 3.3V - 5V 10+ x Jumpers
Kauj Ruam 1: Cov lus piav qhia 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 cuam tshuam.h para activar el termómetro manualmente y así reducir el consumo para extender la vida de la cov ntaub ntawv
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 tus tswv nroog parte del trabajo a las librerías ya existentes, por lo que no tsis muaj kev txhawb ntxiv 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 autor 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 tus kheej, nws encontrado la opción de las placas metálicas más interactivo.
Kauj ruam 2: Circuitos
En la primer imagen se 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 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.
Kauj ruam 3: Programación
Primeramente, debemos seleccionar "Arduino li ISP" como el programador. Si aún no han instalado la placa para el ATtiny, rov ua dua instalar la placa ATtinyCore de Spence Konde. Esta placa tsis muaj kuv generó ningún problema de compilación durante la realización del proyecto.
La placa debe estar configurada sin BOD, txuas nrog 8MHz interno y sin OptiBoot. Si utilizamos 1MHz la comunicación por I2C no es estable y a 16MHz con cristal externo, además de perder dos pines digitales, el consumo energético aumenta considerablemente.
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, 0x00, 0x00, 0x00
Kev txuas ntxiv txuas mus rau 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 = "" adcine "" DH #converter " #define DHTTYPE DHT22 DHT dht (DHTPIN, DHTTYPE); const uint8_t dav = 128; const uint8_t qhov siab = 64; volatile bool tig = cuav; / * * * Tus cuam tshuam cuam tshuam * */ISR (PCINT_VECTOR) {// cuam tshuam ib txwm rov zoo li qub yog tias (digitalRead (I_PIN) == HIGH) {tig = muaj tseeb; // teeb tsa tus chij kom rov ua dua lub vijtsam dua}} void setup () {cli (); // tua tawm cuam tshuam PCMSK | = (1 << I_PINB); GIMSK | = (1 << PCIE); pinMode (I_PIN, INPUT); sib (); // qhib kev cuam tshuam adc_disable (); // txuag lub zog tua qhov hloov pauv set_sleep_mode (SLEEP_MODE_PWR_DOWN); // teeb tsa hom pw tsaug zog kom tsaug zog oled.begin (dav, qhov siab, qhov loj me (me me4koled_init_128x64br), me me4koled_init_128x64br); // pib oled object oled.setFont (FONT8X16); // qhov font no zoo dua li lwm qhov drawScreen (); oled.on (); ncua (2000); dht.begin (); tig = muaj tseeb; // chij rau kev kos duab screen void sleep () {sleep_enable (); pw_cpu (); } void loop () {yog (tig) {cli (); // tua kev cuam tshuam oled.on (); ntab h = dht.readHumidity (); // tsis raug nyeem kom rov pib dht cache ncua (2200); // tos dht kom thauj h = dht.readHumidity (); ntab t = dht.readTemperature (); ntab kuv = dht.computeHeatIndex (t, h, cuav); 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 (kuv); oled.print ("~ C"); // lub ~ cim tau hloov pauv ntawm lub tsev qiv ntawv kom zoo li ° degree cim ncua (5000); // qhia rau 5 vib nas this oled.off (); tig = cuav; sei (); // txuas cuam tshuam dua} pw (); // ib txwm mus pw thaum kawg} tsis muaj dabtsis drawScreen () {// thim qhov thav duab cov ntsiab lus tseem ceeb rau (uint8_t y = 0; y <8; y ++) {oled.setCursor (0, y); oled.startData (); rau (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, dav - 2); oled.sendData (0b11111111); oled.endData (); rau (uint8_t y = 1; y <(qhov siab - 8) / 8; y ++) {oled.setCursor (0, y); oled.startData (); oled.sendData (0b11111111); oled.repeatData (0b00000000, dav - 2); oled.sendData (0b11111111); oled.endData (); } oled.setCursor (0, (qhov siab - 8) / 8); oled.startData (); oled.sendData (0b11111111); oled.repeatData (0b10100000, dav - 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:"); }
Kauj Ruam 4: Cov lus xaus
Tus pesar de su tamaño tsis tseem ceeb, el ATtiny85 ofrece una amplia gama de aplicaciones en las que podemos implementar este controlador de bajo costo sin perder funcionalidad. Tus kheej tsis muaj qhov tshwj xeeb que fuera muaj peev xwm suav nrog el tswj de pantalla y de pw tsaug zog juntos debido a las limitaciones de memoria. Dichozamente, el programa ha entrado en nuestro ATtiny
Muaj nyob rau tam sim no librerías para las pantallas OLED. La librería GFX de Adafruit tsis muaj kuv tso cai sib piv 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. Xav txog qhov tseem ceeb ntawm kev siv, nws xav tau kwv yees kwv yees kwv yees li ntawm 3000 mAh (NiMH o LiIon) en 500 días. El consumo podría reducirse aún más desconectando la pantalla y el sensor directamente desde un pin del ATtiny, pero no lo he considerado necesario
Según Technoblogy.com el ATtiny puede operar en un consumo tan bajo como el mostrado en la primera imagen, pero en este proyecto nws obtenido un consumo tus tswv nroog que sib tham al de la segunda imagen. El consumo de la batería continúa siendo lo suficientemente bajo como para ser un proyecto qhov tseeb
Kauj Ruam 5: Txuas 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…
embeddedlookts.com/2016/06/06/attiny85-i…
www.instructables.com/id/ATtiny85-Interrup…
www.technoblogy.com/show?WNM
www.technoblogy.com/show?2F5D
Pom zoo:
Arduino Tsheb Rov Qab Chaw Nres Tsheb Ceeb Toom - Cov Kauj Ruam ntawm Kauj Ruam: 4 Kauj Ruam
Arduino Tsheb Rov Qab Chaw Nres Tsheb Ceeb Toom | Cov kauj ruam ib kauj ruam: Hauv txoj haujlwm no, kuv yuav tsim qhov yooj yim Arduino Tsheb Rov Qab Tsheb Nres Tsheb Nres Sensor Siv Arduino UNO thiab HC-SR04 Ultrasonic Sensor. Qhov no Arduino raws Lub Tsheb Rov Qab ceeb toom tuaj yeem siv rau Kev Tshawb Fawb Txog Tus Kheej, Robot Ranging thiab lwm yam
ATtiny85 Wearable Vibrating Activity Tracking Watch & Programming ATtiny85 Nrog Arduino Uno: 4 Cov Kauj Ruam (nrog Duab)
ATtiny85 Wearable Vibrating Activity Tracking Watch & Programming ATtiny85 Nrog Arduino Uno: Yuav ua li cas thiaj li hnav tau cov khoom ua haujlwm taug qab saib? Nov yog lub cuab yeej siv tau tsim los ua kom muaj kev co thaum nws pom qhov tsis khov. Koj puas siv sijhawm ntau hauv computer zoo li kuv? Puas yog koj zaum ntau teev yam tsis paub nws? Tom qab ntawd cov cuab yeej no yog f
Yuav Ua Li Cas Siv Stepper Lub Cev Ua Li Qub Encoder thiab OLED Zaub rau Cov Kauj Ruam: 6 Cov Kauj Ruam
Yuav Siv Li Cas Stepper Lub Cev Li Qub Encoder thiab OLED Zaub rau Cov Kauj Ruam: Hauv qhov kev qhia no peb yuav kawm paub yuav ua li cas txhawm rau taug qab cov kauj ruam ntawm lub cev muaj zog ntawm OLED Zaub. Saib cov yeeb yaj kiab ua yeeb yaj kiab.Credit rau Thawj qhov kev qhia mus rau youtube tus neeg siv " sky4fly "
Flappy Bird ntawm ATtiny85 thiab OLED Display SSD1306: 6 Cov Kauj Ruam (nrog Duab)
Flappy Bird ntawm ATtiny85 thiab OLED Display SSD1306: Hav Txhua Tus, Hnub no kuv yuav qhia koj qhov yooj yim flappy noog clone uas kuv tau tsim, thiab yuav ua li cas koj tuaj yeem mus ua qhov kev ua si zoo sib xws. Kuv yuav yeej ib txwm hla dhau kuv cov cai nrog koj thiab piav qhia nws ua haujlwm li cas txhua kauj ruam ntawm txoj kev. Qhov game no yog tsim los rau ru
Daim Npav Ua Lag Luam/Game Console: ATtiny85 thiab OLED Screen: 5 Kauj Ruam (nrog Duab)
Daim Npav Ua Lag Luam/Game Console: ATtiny85 thiab OLED Screen: Nyob zoo txhua tus! Hnub no kuv yuav qhia koj li cas koj tuaj yeem tsim koj tus kheej daim npav lag luam/game console/xijpeem koj tuaj yeem xav txog tias muaj lub backlit I2C OLED zaub thiab ATtiny85 Microprocessor. Hauv Cov Lus Qhia Kuv yuav qhia koj li cas PCB uas kuv tsim