Სარჩევი:

Attiny85 Termómetro OLED: 5 ნაბიჯი
Attiny85 Termómetro OLED: 5 ნაბიჯი

ვიდეო: Attiny85 Termómetro OLED: 5 ნაბიჯი

ვიდეო: Attiny85 Termómetro OLED: 5 ნაბიჯი
ვიდეო: გსურთ მიიღოთ მილიონი აშშ დოლარი? 2024, ოქტომბერი
Anonim
Attiny85 Termómetro OLED
Attiny85 Termómetro OLED
Attiny85 Termómetro OLED
Attiny85 Termómetro OLED

ეს არის პროექტოლოგია, რომელიც მოიცავს მარტივ ტემპერატურულ ტემპერატურას, რომელიც დაკავშირებულია ტემპერატურულ მდგომარეობასთან. გაცნობიერებული აქვს ATmega328p, მაგრამ ეს არის საინტერესო, რომ არსებობს სხვადასხვა ვერსიები, რომლებიც გამოიყენება ATtiny85– სთან ერთად, როდესაც თქვენ იყენებთ ბატარეის კონვერგენს, რომელიც განისაზღვრება მათი პორტალებით.

გაგრძელება აღწერილი ფუნქციონალური, შემორჩენილი მრგვალი წრე და საბოლოო პროგრამის შემდგომი პროგრამით და კომენტატორებით sobre el proyecto en general.

მარაგები

1 x ATtiny85

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

1 x 128x64 პანტალა I2C OLED

1 x ტემპერატურის სენსორის DHT22

1 x რეზისტენტობა 4.7MOhm (1/4W)

1 x კონდენსატორის ელექტროლიტიკოსი 0.1uF

1 x Fuente de 3.3V - 5V 10+ x მხტუნავები

ნაბიჯი 1: Del Funcionamiento აღწერა

O 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 konsumo para extensioner la batería.

თქვენ შეგიძლიათ გაეცნოთ პროგრამას, რომლის მიხედვითაც შეგიძლიათ იხილოთ პროცესი: 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. უფასო DHT სენსორების ბიბლიოთეკა Adafruit (disponible en el IDE) და Tiny4kOLED მონაცემთა ბაზები, რომლებიც მითითებულია Github– ში, არის შემქმნელი, ორიგინალური და ორიგინალური მონაცემთა ბაზა, 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. პირადად, ის აკონტროლებს ურთიერთობის დამყარების მეთოდებს.

ნაბიჯი 2: წრედები

Circuitos
Circuitos
Circuitos
Circuitos
Circuitos
Circuitos

პირველადი გამოსახულება არის ჩართული ელექტრული წრე, რომელიც მოითხოვს პროგრამის ATtiny85- ს. Primeramente se debe programar al Arduino (el capacitor debe estar desconectado) con ar skinoch ArduinoISP, que 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. 85 წლის განმავლობაში, როდესაც თქვენ იყენებთ ერთ -ერთ ძირითად შესაძლებლობას, გექნებათ კონექტორული მასა (GND), Arduino y el ATtiny85.

Colocar un botón entre el pin 13 del Arduino y el 2 del ATtiny puede გაუადვილეთ თქვენს მომსახურებას, რომლითაც თქვენ არ გექნებათ კავშირი თქვენი პროგრამით ATtiny.

Como se observva 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.

ნაბიჯი 3: პროგრამირება

პირველ რიგში, აირჩიეთ "Arduino as ISP" პროგრამის შემქმნელი. თუ თქვენ არ გექნებათ ინსტალაცია la placa para el ATtiny, გირჩევთ ინსტალაცია გამოიყენოთ ATtinyCore de Spence Konde. Esta placa no me generó ningún problem in compilación durante la realización del proyecto.

თქვენ შეგიძლიათ დააკონფიგურიროთ BOD, დააინსტალირეთ 8MHz ინტერნეტი და OptiBoot. I2C– ის კომუნიკაციისთვის გამოიყენება 1MHz და არ არის გამოსადეგი 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 by el siguiente código con el fin de cambiar el simbolo ~ por ° que usaremos en ° C.

0x00, 0x06, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00

უწყვეტი გაგრძელება ესკიზის საჭიროება el proyecto.

#ჩართეთ #ჩართეთ #ჩართეთ #ჩართეთ #განსაზღვრეთ I_PINB PCINT3 #განსაზღვრეთ I_PIN PB3 #განსაზღვრეთ I_VECTOR PCINT0_vect #define adc_disable () (ADCSRA & = ~ (1 << aden)) გამორთეთ = "" adc = "" = 4 " #განსაზღვრეთ DHTTYPE DHT22 DHT dht (DHTPIN, DHTTYPE); const uint8_t სიგანე = 128; const uint8_t სიმაღლე = 64; არასტაბილური ბოლი აღმოჩნდა = ყალბი; / * * * შეწყვეტის დამმუშავებელი * */ISR (PCINT_VECTOR) {// შეწყვეტა ყოველთვის აღდგება ძილიდან თუ (digitalRead (I_PIN) == HIGH) {აღმოჩნდა = ჭეშმარიტი; // დროშის დაყენება ეკრანის ხელახლა გადასაკეთებლად}} void setup () {cli (); // გამორთვა შეწყვეტის PCMSK | = (1 << I_PINB]; GIMSK | = (1 << PCIE]; pinMode (I_PIN, INPUT); სეი (); // ჩართეთ შეწყვეტა 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. დაწყება (); აღმოჩნდა = ჭეშმარიტი; // დროშა ეკრანის დახატვისთვის} void sleep () {sleep_enable (); sleep_cpu (); } void loop () {if (აღმოჩნდა) {cli (); // გამორთეთ შეწყვეტა oled.on (); float h = dht.readHumidity (); // ყალბი წაკითხვა dht 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 (); 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, სიგანე - 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 ("გრძნობს:"); }

ნაბიჯი 4: დასკვნები

დასკვნები
დასკვნები
დასკვნები
დასკვნები

ეს არის უმნიშვნელო, როდესაც AT85– ს აქვს გაფართოებული გაძლიერება, რომელიც განისაზღვრება მათი შემდგომი განხორციელების შემდგომი კონტროლით, რაც გულისხმობს ფუნქციონირებას. პერსონალური არ არის შესაძლებელი, რომ შემოიტანოს კონტროლი პანტალაზე და ძილზე, რომელიც დაკავშირებულია მეხსიერების შეზღუდულ შეზღუდვებთან. Dichozamente, el programa ha entrado en nuestro ATtiny

არსებობს otras librerías para las pantallas OLED. უფასო GFX de Adafruit არ შემიძლია ნებადართული შევადგინო, თუ რა გადაწყვეტილებით მივიღე ის, რაც წინასწარ არის განსაზღვრული AT ATY– ში, მაგრამ არსებობს სხვა თავისუფალი შესაძლებლობები, რომლებიც განეკუთვნება ექსპლორის საინტერესო ინტერესებს

El Consumo del dispositivo es muy bajo. იმის გათვალისწინებით, რომ ის მუდმივია, მან უნდა შეაფასოს 3000 mAh (NiMH o LiIon) ბატარეის ბატარეა 500 დღეში. El Consumo podría მცირდება ჩემი desconectando la pantalla y el sensor sensor directe desde un pin del ATtiny, მაგრამ არა lo ის გავითვალისწინებ საჭიროებას

Según Technoblogy.com el ATtiny puede operer en un konsumo tan bajo como el mostrado en la primera imagen, pero en este proyecto he obtenido un Consumer Mayor რომელიც შეესაბამება მის მიერ გაფორმებულ სურათს. 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…

embeddedthoughts.com/2016/06/06/attiny85-i…

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

www.technoblogy.com/show?WNM

www.technoblogy.com/show?2F5D

გირჩევთ: