Съдържание:
- Консумативи
- Стъпка 1: Описване на Fun Funcionamiento
- Стъпка 2: Circuitos
- Стъпка 3: Програмиране
- Стъпка 4: Заключения
- Стъпка 5: Връзки Y Lecturas Relacionados
Видео: Attiny85 Термометър OLED: 5 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:50
Este proyecto consiste en un termómetro pequeño y simple que muestra la temperature actual, la humedad relativa y el índice de temperature. 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.
Едно непрекъснато описание, описано като функционално, сегуидно най -ел. Циркулиране и финализиране с програмата и алгуносните коментари в най -общ план като цяло.
Консумативи
1 x ATtiny85
1 x Arduino UNO/PRO/etc (програма за ATtiny)
1 x 128x64 пантала I2C OLED
1 x температура на сензора DHT22
1 x Resistencia 4.7MOhm (1/4W)
1 x електролитен кондензатор 0.1uF
1 x Fuente de 3.3V - 5V 10+ x джъмпери
Стъпка 1: Описване на Fun 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.h para activar el termómetro manualmente y así reducir el consumo para extender la vida de la batería.
Най -новите програми се провеждат по следния начин: По -ниска температура -> Мострална температура в пантала -> Апагарен ATtiny -> Повторен алтернативен бутон.
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. Библиотеката за сензори за DHT сензори от Adafruit (за разположение в IDE) и Tiny4kOLED за данни, които са извлечени от Github, можете да изтеглите, al parecer, автор на оригиналния файл с данни, 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 personal, on encontrado la opción de las placas metálicas más interactivo.
Стъпка 2: Circuitos
En la Primer Imagen е encuentra el circuito que requerimos para programar el ATtiny85. Първоначално се дебе програмира ал Arduino (ел кондензатор дебе estar desconectado) с ел скица ArduinoISP, que се encuentra en Archivos -> Ejemplos -> 11. ArduinoISP. Una vez hecho esto se debe colocar el кондензатор за evitar que nuestro Arduino се реиницира ал програмиращ 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 program al ATtiny.
Como se observa en las imágenes. El pin SDA del ATyiny е ел 0 и е SCL/CLK е ел 2. Nuestro DHT е свързан и свързан с щифт 4.
Стъпка 3: Програмиране
Първоначално, изберете "Arduino като ISP" като програмист. Si aún no han instalado la placa para el ATtiny, recomiendo instalar la placa ATtinyCore de Spence Konde. Esta placa no me genener ningún problem de compilación durante la realización del proyecto.
La placa debe estar конфигурация на BOD, с еднократно 8MHz интерно и грешка OptiBoot. Ако използвате 1MHz комуникация за I2C, не можете да я поставите на 16MHz с кристално външно устройство, трябва да използвате цифрови пинове, консумирайте енергия значително.
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
A 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)) disable = "" adc = "" конвертор #def #define DHTTYPE DHT22 DHT dht (DHTPIN, DHTTYPE); const uint8_t ширина = 128; const uint8_t височина = 64; летливи bool се обърна = невярно; / * * * Манипулатор на прекъсване * */ISR (PCINT_VECTOR) {// прекъсването винаги се възстановява от режим на заспиване, ако (digitalRead (I_PIN) == HIGH) {поверну = вярно; // отново задаваме флага за прерисуване на екрана}} void setup () {cli (); // изключване прекъсва PCMSK | = (1 << I_PINB); GIMSK | = (1 << PCIE); pinMode (I_PIN, INPUT); sei (); // включване на прекъсвания adc_disable (); // икономия на енергия при изключване на конвертора set_sleep_mode (SLEEP_MODE_PWR_DOWN); // задаваме типа сън на дълбок сън oled.begin (ширина, височина, размер на (tiny4koled_init_128x64br), tiny4koled_init_128x64br); // стартиране на oled обект oled.setFont (FONT8X16); // този шрифт изглежда по -добре от другия drawScreen (); oled.on (); забавяне (2000); dht.begin (); обърнато = вярно; // флаг за екран за рисуване} void sleep () {sleep_enable (); sleep_cpu (); } void loop () {if (обърнато) {cli (); // изключва прекъсвания oled.on (); float h = dht.readHumidity (); // невярно четене за нулиране на dht кеш забавяне (2200); // изчакайте dht за зареждане 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"); // символът ~ е променен в библиотеката, за да изглежда като закъснение на символа ° градус (5000); // показва за 5 секунди oled.off (); обърнато = невярно; sei (); // отново прикачва прекъсвания} sleep (); // винаги спи в края} void drawScreen () {// изчертава рамката и основния текст за (uint8_t y = 0; y <8; y ++) {oled.setCursor (0, y); oled.startData (); за (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, ширина - 2); oled.sendData (0b11111111); oled.endData (); for (uint8_t y = 1; y <(височина - 8) / 8; y ++) {oled.setCursor (0, y); oled.startData (); oled.sendData (0b11111111); oled.repeatData (0b00000000, ширина - 2); oled.sendData (0b11111111); oled.endData (); } oled.setCursor (0, (височина - 8) / 8); oled.startData (); oled.sendData (0b11111111); oled.repeatData (0b10100000, ширина - 2); oled.sendData (0b11111111); oled.endData (); oled.setCursor (4, 1); oled.print ("Темп:"); oled.setCursor (4, 3); oled.print ("Hum:"); oled.setCursor (4, 5); oled.print ("Sens:"); }
Стъпка 4: Заключения
A 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 includeir el control de pantalla y de sleep juntos debido a las limitaciones de memoria. Dichozamente, ел програма е entrado en nuestro ATtiny
Съществувайте otras librerías para las pantallas OLED. La librería GFX de Adafruit не ми разрешава компилация от 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. Помислете за постоянство, той медидира и оценява вида за пара батерия от 3000 mAh (NiMH или LiIon) и 500 дни. 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 razmisrado 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 той obtenido un consumo кмет que кореспондент al de la segunda imagen. El consumo de la batería continúa siendo lo suficientemente bajo como para ser un proyecto factible
Стъпка 5: Връзки 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
Препоръчано:
Светещ термометър - Витаминизирана градинска светлина (eNANO De Jardin): 6 стъпки
Светещ термометър - Витаминизирана градинска светлина (eNANO De Jardin): Витаминизирана градинска светлина с arduino NANO и температурен сензор BMP180. Нашата скромна градинска светлина ще има тайна мощност: тя ще може да показва външната температура чрез цветен код и мига. Работата му е следната:
Интелигентен инфрачервен термометър IOT (COVID-19): 3 стъпки
Интелигентен инфрачервен термометър IOT (COVID-19): Поради въстанието на COVID през 2019 г. решихме да направим интелигентен инфрачервен термометър IOT, който се свързва с интелигентни устройства, за да показва записаната температура, това е не само по-евтина алтернатива, но и чудесна преподавателски модул за технологии и IOT, който ще
Термометър и хигрометър Nixie с Arduino Nano: 6 стъпки
Термометър и хигрометър Nixie с Arduino Nano: Как да прекарате известно време в забавление и да научите много на усилвателни преобразуватели, сензори с един проводник, тръби Nixie, кодиране на Arduino. В този период всички сме помолени да останем у дома, за да защитим себе си и другите от COVID-19. Това е най -доброто време за използване на
Използвайте смартфон като безконтактен термометър / преносим термометър: 8 стъпки (със снимки)
Използвайте смартфон като безконтактен термометър / преносим термометър: Измерване на телесната температура с безконтактно / безконтактно като термо пистолет. Създадох този проект, защото Thermo Gun сега е много скъп, така че трябва да намеря алтернатива, за да направя DIY. И целта е да се направи с нискобюджетна версия
Инфрачервен термометър на базата на Arduino - Инфрачервен термометър, използващ Arduino: 4 стъпки
Инфрачервен термометър на базата на Arduino | Инфрачервен термометър, използващ Arduino: Здравейте, момчета, в тази инструкция ще направим безконтактен термометър, използващ arduino. Тъй като понякога температурата на течността/твърдото вещество е твърде висока или твърде ниска, а след това е трудно да се установи контакт с нея и да се прочете температура тогава в този пейзаж