Архив/Электроника/Подключение датчика температуры к Arduino с LCD Nokia 5110 и шиной связи CAN
ЭЛЕКТРОНИКА2026.04.1104 min read

Подключение датчика температуры к Arduino с LCD Nokia 5110 и шиной связи CAN

Собрал на макетной плате датчик температуры с отображением на LCD экране и отправкой пакетов в шину CAN.

Подключение датчика температуры к Arduino с LCD Nokia 5110 и шиной связи CAN

Описание проекта

Собрал на макетной плате датчик температуры с отображением на LCD экране и отправкой пакетов в шину CAN.

Использовал:

  • Модули Arduino на базе МК STM32F103C8T6
  • LCD экран, совместимый с Nokia 5110
  • Трансивер шины CAN VP230
  • Аккумулятор от сломанного мобильного телефона
  • 2 солнечные панели по 0.5 ватт каждая, подключённые последовательно

Основные модули:

  1. Микроконтроллер - STM32F103C8T6 (Blue Pill)
  2. Датчик температуры - (не указан конкретный модель, предположительно DS18B20 или аналогичный)
  3. LCD дисплей - Nokia 5110 (84x48 пикселей)
  4. CAN трансивер - VP230
  5. Источник питания:
    • Аккумулятор Li-ion от мобильного телефона
    • 2 солнечные панели 0.5Вт каждая (последовательное соединение)

Дополнительные компоненты:

  • Макетная плата
  • Соединительные провода
  • Резисторы, конденсаторы (по необходимости)

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

Трафарет платы не предоставлен в тексте статьи, но из описания можно предположить следующую структуру подключения:

[Солнечные панели] → [Зарядная схема] → [Аккумулятор] → [STM32F103C8T6]
                                                         │
                                                         ├─[Датчик температуры]
                                                         ├─[LCD Nokia 5110]
                                                         └─[CAN трансивер VP230]

Примерные пины для STM32F103C8T6:

Датчик температуры (один проводный, например DS18B20):

  • Data: PA0 (или любой GPIO с поддержкой OneWire)
  • VCC: 3.3V
  • GND: GND
  • Подтягивающий резистор 4.7кОм между Data и VCC

LCD Nokia 5110:

  • RST: PA1
  • CE: PA2
  • DC: PA3
  • DIN: PA4 (MOSI)
  • CLK: PA5 (SCK)
  • VCC: 3.3V
  • GND: GND
  • LED: 3.3V через резистор 220 Ом

CAN трансивер VP230:

  • CAN_H, CAN_L: к шине CAN
  • VCC: 5V или 3.3V (в зависимости от версии)
  • GND: GND
  • RX: PB8 (CAN_RX)
  • TX: PB9 (CAN_TX)

Программная часть

Библиотеки для Arduino IDE:

#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <CAN.h>  // Библиотека для работы с CAN

Основные функции:

  1. Инициализация компонентов
  2. Чтение температуры с датчика
  3. Отображение температуры на LCD
  4. Отправка данных в шину CAN

Пример кода (схематичный):

// Определение пинов
#define ONE_WIRE_BUS PA0
#define LCD_RST PA1
#define LCD_CE PA2
#define LCD_DC PA3
#define LCD_DIN PA4
#define LCD_CLK PA5

// Объекты
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
Adafruit_PCD8544 display = Adafruit_PCD8544(LCD_CLK, LCD_DIN, LCD_DC, LCD_CE, LCD_RST);

void setup() {
  Serial.begin(115200);
  
  // Инициализация LCD
  display.begin();
  display.setContrast(50);
  display.clearDisplay();
  display.setTextSize(1);
  display.setTextColor(BLACK);
  display.setCursor(0,0);
  
  // Инициализация датчика температуры
  sensors.begin();
  
  // Инициализация CAN
  if (!CAN.begin(500E3)) {
    Serial.println("CAN init failed");
    while (1);
  }
}

void loop() {
  // Чтение температуры
  sensors.requestTemperatures();
  float tempC = sensors.getTempCByIndex(0);
  
  // Отображение на LCD
  display.clearDisplay();
  display.setCursor(0,0);
  display.print("Temp: ");
  display.print(tempC);
  display.print(" C");
  display.display();
  
  // Отправка в CAN
  CAN.beginPacket(0x123);
  CAN.write((uint8_t*)&tempC, sizeof(tempC));
  CAN.endPacket();
  
  delay(1000);
}

Особенности реализации

1. Питание от солнечных панелей

  • Две панели по 0.5Вт подключены последовательно для увеличения напряжения
  • Используется аккумулятор для накопления энергии и стабильного питания
  • Необходима схема зарядки Li-ion аккумулятора от солнечных панелей

2. Шина CAN

  • Используется для передачи данных о температуре в сеть автомобиля или промышленную систему
  • Протокол CAN позволяет надежно передавать данные в условиях помех
  • Идентификатор пакета (0x123 в примере) должен быть уникальным в сети

3. LCD Nokia 5110

  • Низкое энергопотребление
  • Хорошая читаемость при различных условиях освещения
  • Простой интерфейс подключения (SPI)

Применение

  1. Автомобильные системы - мониторинг температуры в различных точках автомобиля
  2. Промышленный мониторинг - контроль температуры оборудования
  3. Умный дом - датчики температуры с беспроводной передачей данных
  4. Солнечные энергосистемы - мониторинг эффективности солнечных панелей

Дальнейшее развитие

  1. Добавление беспроводной связи - WiFi или Bluetooth для удаленного мониторинга
  2. Веб-интерфейс - отображение данных на сайте в реальном времени
  3. Логирование данных - сохранение истории температур на SD-карту
  4. Несколько датчиков - мониторинг температуры в нескольких точках
  5. Автоматическое оповещение - SMS или email при превышении пороговых значений

Ссылки и ресурсы

  • Ролик с подробным описанием: (ссылка не указана)
  • Проект в архиве: (Тут была ссылка)
  • Схемы и трафарет платы: (не приложены к статье)

Заключение

Проект демонстрирует возможности создания автономной системы мониторинга температуры с использованием доступных компонентов. Комбинация STM32, LCD дисплея Nokia 5110 и шины CAN создает надежное решение для различных применений, от автомобильных систем до промышленного мониторинга.