
Интернет-магазин «Неглупый Дом»
CH376S — это готовый USB Host с файловой системой на борту, он умеет читать и писать файлы на обычную USB-флешку без участия компьютера, беря на себя всю сложность протокола USB.
Обычная USB-флешка сама по себе не умеет подключаться напрямую к Arduino — микроконтроллер не содержит аппаратного USB Host контроллера и не знает протокол файловой системы FAT. CH376S решает обе проблемы сразу: это отдельная микросхема-посредник, которая берёт на себя весь USB-протокол хоста и операции с файлами (открыть, записать, закрыть), а Arduino общается с ней простыми командами по UART или SPI, не вникая в детали USB.
Идея проекта — классический datalogger: раз в минуту снимается показание температуры с DS18B20 и дозаписывается новой строкой (время в миллисекундах и значение через запятую) в файл на флешке, формируя со временем простой CSV-журнал, который потом можно открыть на любом компьютере в Excel или текстовом редакторе.
Так как реализации данного модуля бывают разные, если у вас на плате нет тех контактов, что указаны ниже — сориентируйтесь по названиям контактов на своей плате.
// ВНИМАНИЕ: рекомендую отладить код через монитор порта, так как я языковая
// модель, а не специализированный кодер, и могу что-то упустить. Основу
// и идею я накидал, но проверьте под свою схему.
//
// ВАЖНО: ниже упрощённая демонстрация идеи. Реальная запись в файл на флешке
// через CH376S требует команд конкретной библиотеки этого модуля (открыть файл,
// дозаписать, закрыть) — просто отправка текста по UART файл не создаст. Перед
// использованием подключите подходящую библиотеку для CH376S и замените секцию
// записи на её функции.
#include <SoftwareSerial.h>
#include <OneWire.h>
#include <DallasTemperature.h>
SoftwareSerial ch376(2, 3); // RX, TX
#define ONE_WIRE_BUS 4
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
void setup() {
Serial.begin(9600);
ch376.begin(9600);
sensors.begin();
}
void loop() {
sensors.requestTemperatures();
float t = sensors.getTempCByIndex(0);
Serial.print("Запись: ");
Serial.print(millis());
Serial.print(",");
Serial.println(t);
// Здесь должен быть вызов функции дозаписи строки в файл из библиотеки CH376S,
// а не прямая отправка текста по UART — см. примечание выше.
ch376.print(millis());
ch376.print(",");
ch376.println(t);
delay(60000); // запись раз в минуту
}
CH376S поддерживает как SPI, так и упрощённый UART-режим — для UART-режима на плате нужно замкнуть соответствующую перемычку, точная команда открытия/дозаписи файла зависит от выбранной библиотеки для этого модуля.
Ещё модули для Arduino: Электронные модули.
🎁 Купить весь комплект со скидкой 10%
Все 2 товара сразу в корзину: 363 ₽ 327 ₽ (экономия 36 ₽)
Скидка применяется автоматически при оформлении заказа, если в корзине именно этот комплект.
Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.