Описание проекта
Собрал на макетной плате датчик температуры с отображением на LCD экране и отправкой пакетов в шину CAN.
Использовал:
- Модули Arduino на базе МК STM32F103C8T6
- LCD экран, совместимый с Nokia 5110
- Трансивер шины CAN VP230
- Аккумулятор от сломанного мобильного телефона
- 2 солнечные панели по 0.5 ватт каждая, подключённые последовательно
Основные модули:
- Микроконтроллер - STM32F103C8T6 (Blue Pill)
- Датчик температуры - (не указан конкретный модель, предположительно DS18B20 или аналогичный)
- LCD дисплей - Nokia 5110 (84x48 пикселей)
- CAN трансивер - VP230
- Источник питания:
- Аккумулятор 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
Основные функции:
- Инициализация компонентов
- Чтение температуры с датчика
- Отображение температуры на LCD
- Отправка данных в шину 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)
Применение
- Автомобильные системы - мониторинг температуры в различных точках автомобиля
- Промышленный мониторинг - контроль температуры оборудования
- Умный дом - датчики температуры с беспроводной передачей данных
- Солнечные энергосистемы - мониторинг эффективности солнечных панелей
Дальнейшее развитие
- Добавление беспроводной связи - WiFi или Bluetooth для удаленного мониторинга
- Веб-интерфейс - отображение данных на сайте в реальном времени
- Логирование данных - сохранение истории температур на SD-карту
- Несколько датчиков - мониторинг температуры в нескольких точках
- Автоматическое оповещение - SMS или email при превышении пороговых значений
Ссылки и ресурсы
- Ролик с подробным описанием: (ссылка не указана)
- Проект в архиве: (Тут была ссылка)
- Схемы и трафарет платы: (не приложены к статье)
Заключение
Проект демонстрирует возможности создания автономной системы мониторинга температуры с использованием доступных компонентов. Комбинация STM32, LCD дисплея Nokia 5110 и шины CAN создает надежное решение для различных применений, от автомобильных систем до промышленного мониторинга.
