תוכן עניינים:

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 טרומומטרו OLED
Attiny85 טרומומטרו OLED
Attiny85 טרומומטרו OLED
Attiny85 טרומומטרו OLED

Este proyecto consiste en un termómetro pequeño y simple que muestra la temperaturea actual, la humedad relativa y el índice de temperatura. ניתן לממש את זה ב- ATmega328p, אך אנו יכולים להשתמש בשירותי ההפעלה החדשים של ATtiny85 ואפשר להשתמש בהם בבטריה.

המשך תיאור של funcionamiento, seguido mostraré el circuito y finalizaré con el programa y algunos comentarios sobre el proyecto en general.

אספקה

1 x ATtiny85

1 x Arduino UNO/PRO/etc (מתכנת ATtiny)

1 x 128x64 pantalla I2C OLED

1 x חיישן טמפרטורה DHT22

1 x עמידות 4.7MOhm (1/4W)

1 x קבלים electrolítico 0.1uF

1 x Fuente de 3.3V - 5V 10+ x מגשרים

שלב 1: תיאור 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.

התוכנית כעת יכולה להבטיח את התהליכים הבאים: טמפרטורות גבוהות -> טמפרטורות גבוהות -> Apatar ATtiny -> Reiniciar al presionar botón.

Para cada uno de estos pasos dejaremos la ראש העיר parte del trabajo a las librerías ya existentes, por lo que no reinventventemos 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 for encender el equipo. באופן אישי, הוא מכיל את האפשרויות להגשמת השיטה.

שלב 2: מעגלים

מעגלים
מעגלים
מעגלים
מעגלים
מעגלים
מעגלים

En la primer imagen se encuentra el circuito que requerimos for 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 קבלים עבור 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 pin 4.

שלב 3: תכנות

תוכנת Primeramente, debemos select "Arduino as ISP". Si aún no han instalado la placa para el ATtiny, recomiendo instalar la placa ATtinyCore de Spence Konde. Esta placa no me generó ningún problema de compilación durante la realización del proyecto.

ניתן להגדיר את התצורה של BOD, עם חיבור של 8MHz לאינטרנט ו- OptiBoot. השימוש בנפח 1MHz עבור I2C אינו מבוסס על 16MHz חיצוני באמצעות מערכת חיצונית, כמו גם חיבורים דיגיטלים, או צריכת חשמל.

ניתן לשנות את השינוי בארכיון 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

המשך חיפוש אחר סקיצות נצרכות עבור פרוייקטו.

#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 רוחב = 128; const uint8_t גובה = 64; בול נדיף הפך = שקר; / * * * מטפל בהפרעות * */ISR (PCINT_VECTOR) {// interrupt תמיד מתאושש מהשינה אם (digitalRead (I_PIN) == HIGH) {turn = true; // הגדר את הדגל לצייר מחדש את המסך}} הגדרת חלל () {cli (); // כיבוי הפרעות PCMSK | = (1 << I_PINB); GIMSK | = (1 << PCIE); pinMode (I_PIN, INPUT); sei (); // הפעל הפרעות adc_disable (); // חסוך בחשמל כיבוי הממיר set_sleep_mode (SLEEP_MODE_PWR_DOWN); // הגדר את סוג השינה לשינה עמוקה oled.begin (רוחב, גובה, גודל (small4koled_init_128x64br), tiny4koled_init_128x64br); // התחל אובייקט oled oled.setFont (FONT8X16); // גופן זה נראה טוב יותר מהאחד השני drawScreen (); oled.on (); עיכוב (2000); dht.begin (); הפך = נכון; // דגל למסך ציור} שינה חלל () {sleep_enable (); sleep_cpu (); } לולאת חלל () {אם (הסתובבה) {cli (); // לכבות את הפרעות oled.on (); float h = dht.readHumidity (); // קריאת שקר לאיפוס dht cache cache (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 (); // צרף שוב הפרעות} שינה (); // תמיד ללכת לישון בסוף} 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 ("טמפ ':"); 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 implementar este controlador de bajo costo sin perder funcionalidad. אישיות זו עשויה לכלול שליטה בבגדים ובשינה. Dichozamente, el programa ha entrado en nuestro ATtiny

קיים את 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 consumo del dispositivo es muy bajo. קח בחשבון את השימוש הקבוע, והוא יכול להעריך את זה כ -3,000 מיליאמפר / שעה (NiMH או ליון) ו -500 דירות. הפחתת הצריכה וההסבה של החיישן של החיישן יתבססו על פין ATtiny, אך אין צורך לשקול זאת

Según Technoblogy.com el ATtiny puede opera in un consumo tan bajo como el mostrado en la primera imagen, pero en este proyecto he obtenido un consumo ראש העיר 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

שלב 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…

embedded thoughts.com/2016/06/06/attiny85-i…

www.instructables.com/id/ATtiny85-Interrup…

www.technoblogy.com/show?WNM

www.technoblogy.com/show?2F5D

מוּמלָץ: