Какой Arduino подходит для многих аналоговых датчиков (и Wi-Fi)?
Что касается контекста, то я родом из очень тяжелого программного обеспечения, поэтому очень мало знаю об оборудовании.
Я хочу построить систему, которая требует как минимум 6 датчиков (рН, электропроводность, влажность, температура, интенсивность света, скорость потока), и я хочу отправить все эти входные данные по Wi-Fi с интервалом ~10 минут. Большинство этих датчиков будут аналоговыми.
Я заметил, что, например, Arduino Uno имеет только 6 аналоговых входов. Кроме того, исходя из исследований, мне нужно будет подключить модуль Wi-Fi к Uno, что кажется слишком большим количеством хлопот и дополнительных затрат.
Сейчас я смотрю на ARDUINO NANO 33 IOT. Он кажется идеальным для того, что я хочу сделать, так как он дешевый, имеет 8 аналоговых контактов и имеет Wi-Fi из коробки. Правильно ли я рассуждаю, выбирая этот Arduino? Мне интересно, почему что-то с возможностью Wi-Fi и большим количеством контактов дешевле, чем Uno.
Заранее спасибо!
@Brian Yap, 👍2
Обсуждение2 ответа
Лучший ответ:
Для краткого ответа: просто используйте NodeMCU ESP32 или любую плату ESP32 dev.
TLDR;
ESP32 на самом деле является модулем Wi-Fi, но имеет очень мощный процессор (240 МГц макс), намного быстрее, чем Arduino Uno (atmega328 @16 МГц). Из-за этого Wi-Fi становится естественным для ESP32.
Вы даже можете купить плату ESP32 dev примерно за 10 долларов (включая доставку), в то время как сам модуль esp32 стоит всего 5 долларов
Arduino UNO 33 IOT-это просто SAMD21 (@48MHz) с внешним модулем wifi. Один только этот модуль Wi-Fi стоит около 10 долларов. Эта конфигурация похожа на Arduino UNO + wifi shield, но, конечно, дешевле, потому что вам не нужен дополнительный дорогостоящий щит для Wi-Fi.
Дорогой wifi shield на самом деле HDG204 wifi SIP (система в пакете) + 32-битный AVR AT32UC3C1512C (66 МГц макс). В значительной степени wifi shield piggy back на Arduino UNO в 4 раза быстрее, чем 8-битный micro atmega328 Arduino UNO. Так что... это дорого.
Правка:
ESP32 имеет 2x 12-битный АЦП с 16 каналами, выводимыми на вывод ввода-вывода на большей части платы ESP32 dev.
Если вы просто читаете некоторые датчики температуры, датчики дальномера, датчики влажности... В наши дни вы хорошо разбираетесь в большинстве АЦП внутри микроконтроллеров. Если вы не создаете инструментальное устройство, что ж, это совсем другая история.
Не могли бы вы объяснить, как это отвечает на вопрос?, @StarCat
По - моему , это почти отвечает на весь вопрос , кроме того , почему он дешевле ., @xbox gamer
модуль Wi-Fi на Nano 33 IoT - это ESP32, @Juraj
Одной из проблем в этом вопросе было количество доступных аналоговых портов. Вы не упомянули о них в своем ответе., @StarCat
ОП ищет взаимодействие с большим количеством аналоговых датчиков. ESP-32 не будет хорошим выбором, если вы хотите использовать АЦП, он шумный, нелинейный..., @hcheung
По словам hcheung, у меня нет большого опыта работы с АЦП ESP32, но если мне нужен малошумящий АЦП, я предпочитаю использовать внешний АЦП с выделенным малошумящим блоком питания. Я использую АЦП от нескольких Arm M0 / M0 +, но не очень доволен ими., @SimonVu14
СтарКэт, ты можешь прочитать картинку распиновки? OP хочет что-то, что не стоит дорого, имеет много каналов АЦП и работает из коробки без дополнительных дополнений. Вы пытаетесь сказать, что я должен дать ответ на строго плате arduino от arduino.cc только? Я редактирую свой ответ, чтобы просто ответить на то, что хочет ОП, как в вопросе., @SimonVu14
Основываясь на этой диаграмме https://github.com/thehookup/ESP32_Ceiling_Light/blob/master/PinModes_ESP32_NodeMCU.jpg похоже, что NodeMCU ESP32 имеет только 6 аналоговых входных контактов. Я чего-то не понимаю?, @Brian Yap
Спецификация ESP32 D0WD, страница 15 https://www.espressif.com/sites/default/files/documentation/esp32_datasheet_en.pdf , показывает матрицу выводов АЦП. Все эти контакты показаны на рисунке распиновки из руководства TheHookUp. Я не доверяю на 100% этим учебникам в Интернете. Это хорошо в своем собственном контексте, но иногда неправильно в другом контексте., @SimonVu14
Я рассматривал AdaFruit Huzzah32 Feather ESP32… 16 аналоговых входов (2 ЦАП); встроенный Wi-Fi, Bluetooth и USB; Встроенный источник/зарядное устройство LiPo батареи; и совместимый с Arduino IDE, все за 20 долларов. (WipperSnapper совместим с IoT.) Похоже, эта часть может удовлетворить исходный вопрос., @samkass
Не имеет значения количество аналоговых контактов, если вы проводите 10 - минутные опросы.
Подключите питание к каждому датчику от его собственного цифрового вывода. Подключите выходы датчика к одному аналоговому контакту. Обратите внимание, что любой аналоговый вывод можно использовать в качестве цифрового, но не наоборот.
Начните с выключенными датчиками (т. е. отдельные цифровые контакты питания стали НИЗКИМИ
). Когда вы проводите опрос, включите цифровой
вывод одного датчика, считайте выходные данные на аналоговом выводе, а затем снова включите питание датчика. Переходим к сенсору два, сенсору три и так далее.
Это в значительной степени мультиплексирование аналогового вывода. Я делаю это все время в своих системах автоматизации комнатных растений.
Обычно я использую для этой задачи Wemos D1 minis или устройства NodeMCU-12e. За последнюю партию D1 minis я заплатил менее 10 долларов за пять из них, включая доставку и налоги. Оба устройства, о которых я упоминал, имеют Wi-Fi и Bluetooth. Я даже перепрограммирую их по воздуху (OTA).
:-O как отключить питание аналоговой сенсорной цепи? например, цепи LDR, CT, датчиков температуры будут мешать друг другу, @Juraj
Вы делаете это на своем Wemos D1, который имеет только один посредственный АЦП?, @hcheung
Для 10K LDR, 10K термистора или некоторых маломощных датчиков (менее 10 мА) они могут питаться с помощью вывода ввода-вывода для каждого датчика без проблем. Просто включите один из них, когда это необходимо, а затем выключите, когда закончите, @SimonVu14
- Как использовать SPI на Arduino?
- Как решить проблему «avrdude: stk500_recv(): programmer is not responding»?
- Как создать несколько запущенных потоков?
- Как подключиться к Arduino с помощью WiFi?
- avrdude ser_open() can't set com-state
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
- Я закирпичил свой Arduino Uno? Проблемы с загрузкой скетчей на плату
Некоторые из упомянутых вами типов датчиков доступны с цифровым интерфейсом (I2C или SPI) и не требуют аналогового интерфейса. Если вам нужно больше аналоговых входов, чем доступно аналоговых выводов, вы также можете использовать внешний АЦП I2C с 8 или более каналами и 12 или более битами разрешения., @StarCat
Вы можете обойти ограниченное количество аналоговых контактов, мультиплексируя датчики на одном из них. Запитайте каждый датчик с помощью другого цифрового вывода, и пусть все их выходы идут к одному и тому же аналоговому выводу. При каждом опросе включайте по одному датчику за раз, считывайте его выход на аналоговом выводе, выключайте датчик, включайте следующий, считывайте и т. Д. Это одна из техник, которую я использую в своих комнатных растениях. Я использую NodeMCU-12e или Wemos D1 minis., @stevieb
Короче говоря, Uno перепроектирована с использованием технологий 20-летней давности. В настоящее время многие необходимые вещи можно сделать с помощью одного кремния. Исходя из того, что вы хотите сделать, я бы сказал, что Nano 33 IoT - хороший выбор., @hcheung
АЦП ESP32, хотя и не идеален, гораздо более способен, чем АЦП UNO. Ни один бортовой АЦП действительно не стоит ни гроша по сравнению с чем-то дешевым и потрясающим, как 4-портовый 15-битный АЦП ADS1115 стоимостью $ 2. Я бы использовал NodeMCU и один из них; $ 5, готово. За стоимость одного NANO33 вы можете получить 4 или 5 таких установок. Никто не покупает настоящие платы Arduino, если только они не знают ничего лучшего., @dandavis