Выбор микроконтроллера для проекта сбора данных на батарейках


18

Я планирую измерить уровень воды в колодце, глубина которого составляет около 10 метров, а максимальный уровень воды - до 5 метров. Я планирую использовать ультразвуковой датчик HC SR04 для измерения глубины, передавать его через ZigBee на Raspberry Pi в моем доме.

Как обсуждалось в моем предыдущем вопросе, мне нужно выбрать микроконтроллер для соединения ультразвукового датчика и модуля ZigBee.

Параметры для выбора:

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

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

  3. Работа внутри колодца: весь проект будет работать внутри колодца и подвергаться воздействию сильного солнечного света и дождя. Я буду обеспечивать хороший случай и защиту, хотя.

  4. Легко программировать.

Я выбрал ZigBee, поскольку он прост, соответствует моему варианту использования и малой мощности. Но мое требование состоит в том, чтобы транспортировать данные датчика, и я открыт для других видов транспорта. Расстояние от моего колодца до Raspberry Pi составляет около 6 метров со стеной между ними. Я планирую измерять глубину воды каждые 10 минут и два раза в минуту, когда работает водяной насос (примерно 20 минут в день).


2
Это кажется довольно широким, или, возможно, не по теме. Подойдет любой маленький MCU на доске. Если бы вы не выбрали Zigbee, я бы посоветовал взглянуть на BBC micro: bit, который имеет BLE на борту и разъем для подключения аккумулятора.
Шон

2
Если вы хотите использовать радиоприемник ZigBee, вам следует как минимум оценить компоненты, которые объединяют его с процессором MCU (обычно ARM Cortex-M). Это не значит, что вы должны идти по этому пути, но если вы решите этого не делать, то на то должна быть веская причина.
Крис Страттон

2
Что вы подразумеваете под «внутри колодца»? Будет ли дело под водой? Не ожидайте передачи или приема от модулей Xbee под водой. Многие работают в диапазоне 2,4 ГГц, который хорошо поглощается водой; другие работают на частоте около 900 МГц, что, вероятно, тоже не очень хорошо проникает в воду. Если дело не под водой, 6м + стена должна быть в порядке с пчелами.
Йонас Шефер

«внутри колодца» означает, что устройство будет размещено внутри колодца, но над водой.
Радж

Ответы:


20

Общий процесс выбора микроконтроллера.

  1. Подведите ваши требования к микроконтроллеру. Например, в этом случае:

    • 1 аппаратный таймер для измерения времени между импульсами запуска и эха.
    • 2 контакта GPIO для соединения между датчиками Echo и Trigger.
    • Возможно, UART для взаимодействия с радиочастотным коммуникационным модулем.
    • 1 вход АЦП для контроля напряжения батареи.


    Для этого можно использовать 8-контактный контроллер, который может также потребовать использования программирующих контактов в общих целях.

  2. Определите необходимую производительность процессора и требования к памяти . Достаточно ли использовать 8-битный MCU или вам нужен 32-битный? На каких тактовых частотах процессора допустимы десятки МГц или достаточно 1 МГц? Сколько памяти программы, ОЗУ и ПЗУ необходимо?

    Учитывая описанное приложение, вам не нужна высокая вычислительная производительность. Вероятно, будет достаточно 8-битного контроллера (хотя он будет не намного дешевле 32-битного, поэтому вы можете выбрать здесь цену, возможно).

  3. Низкое энергопотребление . Когда это не критично, вы, вероятно, можете обойтись практически с любым контроллером, используя режим низкого энергопотребления с наименьшим напряжением питания и системной тактовой частотой. Если это более важно, вы можете начать сужать свой список поиска, начав с выделенных ядер с низким энергопотреблением MCU, таких как (ядра ARM® Cortex®-M0 или M0 + CPU). Обычно таблицы данных содержат таблицы для большинства режимов с низким энергопотреблением / частоты VCC / SysClk , в более качественных таблицах также указывается потребление каждой периферии.

  4. Инструменты разработчика . Я считаю это очень важным аспектом. Специализированные аппаратные средства программирования могут стоить целое состояние, поэтому обычно я использую микроконтроллеры, для которых у меня уже есть программисты. Когда вы переключаетесь на другую семью или бренд, полезно инвестировать в плату разработки, на которой есть встроенный программатор, который впоследствии можно будет использовать для программирования своих пользовательских плат. В общем, всегда сначала проверяйте, сколько будет стоить возможность загружать программы в микроконтроллер.

Как отметил @Sean в комментариях, возможным и экономически эффективным решением будет поиск таких RF-модулей, которые поставляются со встроенным программируемым MCU приложения, которое может запускать ваше встроенное программное обеспечение, в то же время обрабатывая часть RF-связи. Такие модули существуют для BLE, WiFi и ZigBee и, возможно, для многих других технологий.

Кроме того, о том, как выживет любой MCU в колодце. Все это сводится к корпусу, который вы предоставите для устройства. Например, не имеет большого значения, какой MCU вы выберете, если корпус не на 100% водонепроницаем.


TL; DR; Здесь идет специфическая часть продукта.

  1. Вы можете выбрать ATtiny25, который стоит 0,87 $ / 1 штука на Farnell. 8-битный, 8-контактный, поэтому не займет много места. В режиме выключения питания он потребляет 0,2 мкА с отключенным сторожевым таймером, при 3 В. 2-4 мкА, если сторожевой таймер включен. Он совместим с Arduino, поэтому программирование не будет стоить вам дорого (программист USBasp или AVRdude стоит около 2 $ на eBay). ( Обратите внимание : вы должны использовать библиотеку Arduino Software Serial для взаимодействия с радиочастотным коммуникационным модулем, поскольку этот MCU имеет только SPI для аппаратного обеспечения.) В целом, он небольшой, дешевый, с относительно низким энергопотреблением, но UART с побитовым битом может усложняет это все же. Он имеет 2 кБ памяти программ, что должно быть достаточно для вас.

  2. Или используйте ARM Cortex M0, который потребляет 2 мкА в режиме ожидания и 5 мкА в режиме остановки. Такой MCU, например, STM32F030F4, который стоит 1,09 $ / 1 шт . Это более мощный 32-разрядный контроллер с максимальной тактовой частотой 48 МГц, но, как вы можете видеть, всего за + 0,2 $. Он поставляется с программной памятью 16 КБ, чего недостаточно для выполнения этой простой задачи. Он имеет SPI, UART, I2C и множество других периферийных устройств. Программирование это будет стоить дороже, выделенный программист стоит 20 долларов в Farnell. На мой взгляд, не стоит. Вместо этого вы можете инвестировать в плату разработки для семейства F0, в которой есть встроенный программист (ST-LINK) . STM32F0Открытие платы обнаружения ~ 10 $, Вы можете начать создавать прототипы с помощью этой платы и позже использовать ее в качестве программиста.


3
Обратите внимание, что ST-LINK плат обнаружения и ядра могут часто использоваться для других микроконтроллеров, отличных от тех, что на самой плате. Не уверен насчет этой конкретной платы, но, судя по всему, она использует SWD и может быть отключена с помощью перемычек справа. Хорошая вещь о том, что ST-LINK являются не только программисты, но внутрисхемные отладчики , ослабляя развитие в много .
Йонас Шефер

3
Кроме того, если вам не нужны ответы от XBEE, вы можете использовать универсальный последовательный интерфейс ATtiny, чтобы получить UART, который быстрее, чем программная реализация с побитовым битом.
Йонас Шефер

3
Стоит отметить, что радиомодули часто поставляются с не выделенным ресурсом MCU (и существуют модули для упрощения выбора типа). Процессор обычно используется совместно со стеком RF, поэтому вам необходимо принимать периодические прерывания и т. Д.
Шон

3
ULPBENCH - хороший ресурс, когда важна работа с низким энергопотреблением (батарея).
neonzeon

5

Глядя на простоту программирования и низкую стоимость, я бы, вероятно, начал с какого-то модуля Arduino (или недорогого клона). Код для вашего ультразвукового датчика уже существует, как и пример кода для ZigBee, например, с использованием модулей Digi XBee. В последнем случае вы подключаете XBee к последовательному порту, и после установления соединения с почтенным старым командным интерфейсом «AT» у вас появляется двухточечный канал, который вы можете отправить любой текст вниз (на ваш Raspberry Pi ). ZigBee - не самый дешевый тип связи на короткие расстояния, но модули XBee в реальном выражении упали в цене за последние 5 лет.

Я знаю, что у некоторых людей есть проблемы с языком на основе C / C ++, используемым в Arduino, но в этом случае вы в значительной степени объедините уже существующие скрипты от других пользователей.

Если вы поищите в Google «спящий режим Arduino», вы найдете примеры того, как вы можете перевести Arduino в режим пониженного энергопотребления, а также время от времени просыпаться, чтобы взять чтение, передать его, а затем снова войти в спящий режим.


1
В то время как хорошее управление питанием возможно с чипом ATmega, типичная плата Arduino имеет паразитные потери энергии, которые резко ограничат срок службы батареи.
Крис Страттон
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.