সুচিপত্র:

Attiny85 Termómetro OLED: 5 ধাপ
Attiny85 Termómetro OLED: 5 ধাপ

ভিডিও: Attiny85 Termómetro OLED: 5 ধাপ

ভিডিও: Attiny85 Termómetro OLED: 5 ধাপ
ভিডিও: ATtiny13 и ATtiny85. Обзор и программирование с помощью Arduino 2024, অক্টোবর
Anonim
Attiny85 Termómetro OLED
Attiny85 Termómetro OLED
Attiny85 Termómetro OLED
Attiny85 Termómetro OLED

Este proyecto consiste en un termómetro pequeño y simple que muestra la temperatura actual, la humedad relationiva 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 consuo de batería convergen en un dispositivo pequeño y portátil।

একটি ধারাবাহিক বর্ণনা el funcionamiento, seguido mostraré el circuito y finalizaré con el programma y algunos comentarios sobre el proyecto en general।

সরবরাহ

1 x ATtiny85

1 x Arduino UNO/PRO/etc (programmador del ATtiny)

1 x 128x64 প্যান্টাল্লা I2C OLED

1 এক্স সেন্সর তাপমাত্রা DHT22

1 x রেজিস্টেন্সিয়া 4.7MOhm (1/4W)

1 x ক্যাপাসিটর ইলেক্ট্রোলিটিকো 0.1uF

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

ধাপ 1: ডেল ফানসিওমিয়েন্টো বর্ণনা করুন

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í reducer laduca লা ব্যাটারিয়া।

Nuestro programma 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। লা লিবারেরিয়া ডিএইচটি সেন্সর লাইব্রেরি ডি অ্যাডাফ্রুট (ডিসপোনিবল এন এল আইডিই) y টিনি 4 কেওএলইডি ডি ডেটাকিউট ক্যু ডেসকারগেরেমোস ডি গিতহব ইয়া কিউ, আল প্যারেসার, এল অটোর অরিজিনাল এস ডেটাকিউট ওয়াই, অ্যাডেমেস, নেসিসিটারেমোস মোডিফিকারলা আন পোকো লুগো।

El método de reinicio puede ser tanto un botón como dos placas metálicas que se tocan para encender el equipo। ব্যক্তিগতভাবে, তিনি encontrado la opción de las placas metálicas más interactivo।

ধাপ 2: সার্কিটোস

সার্কিটোস
সার্কিটোস
সার্কিটোস
সার্কিটোস
সার্কিটোস
সার্কিটোস

En la primer imagen se encuentra el circuito que requerimos para programmar el ATtiny85। Primeramente se debe programmar 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 programsmar 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 programma al ATtiny।

Como se observa en las imágenes। এল পিন SDA del ATyiny es el 0 y el SCL/CLK es el 2. Nuestro DHT está conectado en el pin 4।

ধাপ 3: প্রোগ্রাম

Primeramente, debemos seleccionar "Arduino as ISP" como el programmador। Si aún no han instalado la placa para el ATtiny, reciendo instalar la placa ATtinyCore de Spence Konde। Esta placa no me generó ningún problemma de compilación durante la realización del proyecto।

La placa debe estar configurada sin BOD, con un reloj de 8MHz interno y sin OptiBoot। সি ইউটিলিজামোস 1MHz la comunicación por I2C no es estable y a 16MHz con cristal externo, además de perder dos pines digitales, el consuo 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

একটি ধারাবাহিক অজুন্তো এল স্কেচ নেসারেসিও প্যারা এল প্রজেক্টো।

#ইনক্লুড #ইনক্লুড #ইনক্লুড #ইনক্লুড #ডিফাইন আই_পিনব পিসিআইএনটি 3 #DHTTYPE DHT22 DHT dht (DHTPIN, DHTTYPE) নির্ধারণ করুন; const uint8_t প্রস্থ = 128; const uint8_t উচ্চতা = 64; volatile bool turn = false; / * * * ইন্টারাপ্ট হ্যান্ডলার * */ISR (PCINT_VECTOR) {// ইন্টারাপ্ট সবসময় ঘুম থেকে সেরে যায় যদি (ডিজিটাল রিড (I_PIN) == উচ্চ) {পরিণত = সত্য; // পুনরায় স্ক্রিনে পতাকা সেট করুন}} অকার্যকর সেটআপ () {cli (); // PCMSK এর বাধা বন্ধ করুন | = (1 << I_PINB); GIMSK | = (1 << PCIE); pinMode (I_PIN, INPUT); sei (); // বাধাগুলি চালু করুন adc_disable (); // কনভার্টার set_sleep_mode (SLEEP_MODE_PWR_DOWN) বন্ধ করে পাওয়ার সাশ্রয় করুন; // ঘুমের ধরনকে গভীর ঘুমের জন্য সেট করুন oled.begin (প্রস্থ, উচ্চতা, sizeof (tiny4koled_init_128x64br), tiny4koled_init_128x64br); // শুরু oled বস্তু oled.setFont (FONT8X16); // এই ফন্টটি অন্য একটি ড্রস্ক্রিন () এর চেয়ে ভাল দেখায়; oled.on (); বিলম্ব (2000); dht.begin (); পরিণত = সত্য; // পর্দা আঁকার জন্য পতাকা} অকার্যকর ঘুম () {sleep_enable (); sleep_cpu (); } অকার্যকর লুপ () {যদি (চালু) {cli (); // oled.on () এ বাধা বন্ধ করুন; float h = dht.readHumidity (); // dht ক্যাশে বিলম্ব (2200) পুনরায় সেট করার জন্য মিথ্যা পড়া; // h = dht.readHumidity () লোড করার জন্য dht অপেক্ষা করুন; 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 (); // আবার ইন্ট্রাপ্টস সংযুক্ত করুন} ঘুম (); // সর্বদা শেষে ঘুমাতে যান} 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 (); জন্য (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 ("Temp:"); oled.setCursor (4, 3); oled.print ("হাম:"); 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 বাস্তবায়ন este controlador de bajo costo sin perder funcionalidad। Personalmente no esperaba que fuera posible incluir el control de pantalla y de sleep juntos debido a las limitaciones de memoria। Dichozamente, el programma ha entrado en nuestro ATtiny।

লাস প্যান্টালাস ওএলইডি -র জন্য বিদ্যমান আছে। 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 consuo 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 consuo tan bajo como el mostrado en la primera imagen, pero en este proyecto he obtenido un consuo mayor que corresponde al de la segunda imagen। এল কনসোও দে লা বাটারিয়া কন্টিনা

ধাপ 5: লিঙ্ক Y লেকটুরাস 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

প্রস্তাবিত: