Контроллер ATTINY85

Необходимые элементы

При желании можно использовать Attiny25 или Attiny45.

Схема подключения

Для прошивки нашего контроллера нужно использовать программатор, но при отсутствии такой штуки, можно взять любую плату Arduino, у меня для таких целей валяется UNO. Но для того, что бы она начала работать как программатор, требуется загрузить специальную прошивку. Найти код можно в Arduino IDE пройдя File > Examples > ArduinoISP > ArduinoISP. Более подробно можно почитать на официальном сайте

Arduino as ISP with Attiny85

Далее на чип можно загрузить нашу прошивку. Я решил использовать пример с термометром и выводить показания на LCD дисплей как в примере ранее

Attiny85 termometer

Так как дисплей требует подачи напряжения 5V, на микроконтроллер в данном случаи мы будем подавать 5V, датчик температуры и сам контроллер, могут работать на таком напряжении. В других случаях требуется более детально смотреть на характеристики подключаемых приборов. Детальную схеме подключения можно посмотреть в файле

Добавление в среду разработки

При работе в среде platformio уже все есть и дополнительно чего то делать не требуется.

Но если используется среда Arduino IDE, то следуется зайти File > Preferences и в строке Additional Boards Manager URLs добавить ссылку.

https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json

После этого можно зайти в менеджер плат и добавить Attiny85. После этого контроллер станет доступным для выбора.

Написание кода

Код ничем не отличается и смело можно переносить проекты на данный чип.

Полная версия кода расположена в директории notes/src/08-attiny85

#include "OneWire.h"
#include "LiquidCrystal_I2C.h"

OneWire ds(3);
LiquidCrystal_I2C lcd(0x27,16,2);

byte tempChar[] = {0x07,0x05,0x07,0x00,0x00,0x00,0x00,0x00};

void setup(){
    lcd.init();
    lcd.backlight();
    lcd.createChar(0, tempChar);
}

void loop(){
    byte data[2];

    ds.reset();
    ds.write(0xCC);
    ds.write(0x44);

    delay(1000);

    ds.reset();
    ds.write(0xCC);
    ds.write(0xBE);

    data[0] = ds.read();
    data[1] = ds.read();

    float temperature = ((data[1] << 8) | data[0]) * 0.0625;
    lcd.setCursor(0,0);
    lcd.print("Temp: " + String(temperature) + " C");
    lcd.setCursor(12, 0);
    lcd.write(0);
}

Выводы

Данный микроконтроллер может использоваться для различных устройств не трубовательных к питанию. Микроконтроллер может работать при напряжении 1.8V, при этом будет потреблять всего 0.3mA. Соответственно можно собрать схему с солнечной батареей и аккумулятором Ni-MH, отлично работающей при низких температурах.

Как вариант можно собрать внешний автономный блок для измерения температуры за бортом и передача этой информации на главный контроллер.

Все характеристики можно посмотреть в описании к контроллеру.

Фотофиниш

Градусник на Attiny85

Attiny85 термометр

Повысим немного температуру

Attiny85 термометр тест работы

Все работает как и планировали. При отсутствии дисплея можно значительно было бы понизить напряжение питания. На примере плата работает от 5V.

Digispark

Ещё есть платы базирующиеся на Attiny85/Attiny167, к примеру:

На данных платах уже имеется регулятор напряжения, на некоторых имеется внешний генератор тактовой частоты, что позволяет контроллеру работать на большей частоте.

Вся необходимая информация по подключению имеется на сайте DigistumpArduino

Last updated

Was this helpful?