Ви не увійшли.
Впечатления, скажу я вам, самые положительные! NanoVNA v2 имеет все те же возможности, что и оригинальный NanoVNA, но только в диапазоне до так необходимых 3 ГГц (и при желании даже несколько больше - смотрите выше) и при этом с очень высоким качеством.
Вот пример для одной из антенн моего маршрутизатора Linksys EA6900:
Этот датчик имеет диапазон измерений до 30кПа. А корпусу будет подводится трубка от объема в котором нужно померить давление.
Хоть это не относится к вопросу о коробке, в документации указано, что от 30 кПа до 110 кПа. Может, это действительно не совсем подходящий сенсор?
Но этот прибор я делал на заказ человеку который серьезно занимается огородничеством.
Функционал подробно согласовывался с заказчиком и весь выше перечисленный набор "экзотических" функций был совершенно не востребован.
Значит, я говорю про систему для несерьезных огородников :-)
К "несерьезным огородам" можно отнести: цветы на подоконнике или ферму в кладовке, малинник за домом или сосну перед домом, экспериментальные участки с разными условиями или, наоборот, с контролем одинаковости условий. То есть я говорю не о картошке для продажи на местном рынке, а больше о растениеводстве.
Готовые решения, конечно же, есть. Но у них достаточно высокая цена или же ограниченные возможности. К тому же, как правило, они не являются открытыми решениями, расширять или переделывать их не так просто.
Интересный таймер. По форме так, как будто можно поставить на DIN рейку. Это хороший старт, тем более для относительно стационарных условий.
В то же время я думаю о некоторой системе с обратной связью. Какие могут понадобится параметры для мониторинга и как на них можно повлиять? Перечислю некоторые очевидные (не претендуя на полноту и без особого порядка):
Влажность почвы
Кислотность почвы
Яркость и продолжительность освещения
Влажность воздуха
Температура почвы
Конечно же, самый важный параметр, и его будет сложно контролировать автоматически - это объем и качество урожая или состояние растения. Вероятно, эти параметры должны вводится вручную.
Мысль тут в том, чтобы выработать оптимальные условия. Некоторые условия уже известны заранее и их можно просто контролировать. Например - это холодильник с вином. Но в других случаях можно было бы попробовать построить контрольные группы с тем, чтобы найти такие параметры, при которых, скажем, малина получается особенно крупной.
Продам носимые платы на базе контроллеров Nordic nRF52. Цена договорная.
nRF52833
Основные параметры:
Диаметр 25 мм (5 копеек), работает от одной батарейки CR2032 / CR2025 (напряжение 1.8V - 3.6V)
MCU nRF52833 (aQFN-73): Cortex-M4F 64МГц, 512KB flash, 128KB RAM, Bluetooth® 5.1 Direction Finding, 105°C
Две кнопки
Светодиод RGB
Инфракрасный светодиод (850 нм)
Гнездо 2x4, шаг 1.27 мм: 6хGPIO (один из которых поддерживает 12-бит АЦП), питание 3V, земля
Разъем для NFC антенны, совместимой с Nordic FPC и Liard 0600-00061, можно использовать в качестве двух дополнительных GPIO
Интерфейс USB 2.0 в виде контактных площадок на плате
Интерфес ARM Cortex SWD через отламываемый разъем Tag-Connect 2030 и площадок на плате
Пассивные компоненты AEC Q200
Детальнее - https://www.openhardware.io/view/742/
В наличии есть пара штук. В нагрузку идет нераспаянная плата для гироскопа Bosch BMG250 и магнитометра-акселерометра ST LSM303AGR.
Вообще говоря, сад и огород весьма популярная тема. Можно было бы собраться и разработать нечто коллективное для решения этих задач. Возможно, с профилями для выращивания разных растений в разных условиях, будь-то персики на даче или конопля в кладовке. Я уверен, что что-то подобное уже есть, но, к сожалению, не готов указать конкретные названия.
Разве компилятор не выдает ошибку для case "A1"? Как оно вообще собирается?
Оператор case ожидает целочисленное значение. Это неплохо работает со следующей конструкцией, потому что 'А' фактически является числом 65 и C может свободно привести char к int, обратите внимание на одинарные кавычки.
switch (command) {
case 'A':
functionA();
break;
...
}
Но строки типа "A1" являются регионами памяти и запись case "A1" будет синтаксически неверной.
Касательно сути вопроса. Serial.read() возвращает всего один (первый) байт из буфера, поэтому чтобы обрабатывать больше, нужно либо сохранять прочитанные байты между вызовами loop(), либо читать весь буфер Serial в контексте одного вызова loop(). Также возникает вопрос, что произойдет, если передать две команды "А1" и "B2" подряд? Подозреваю - поправьте меня, пожалуйста, если это не так - что они будут прочитаны как одна команда "A1B2". А если два устройства будут заполнять буфер Serial одновременно, не возникнет ситуация, когда результат окажется чем-то вроде "AB12"?
В этом смысле может оказаться, что намного прагматичнее использовать однобайтовые команды: и быстрее передаются, и проще код, и меньше неоднозначностей.
Возможно, вот такое - https://arduino.ua/prod3224-sonoff-rf-bridge-433-mgc
Какое планируется количество кнопок?
К сожалению, эти характеристики не приведены в описании.
В описании указано, что Portenta использует десятидолларовый MCU STM32H747XI, к которому подключен дешевенький трансивер LAN8742AI. Схема включения - тоже самая бюджетная, на одном кристалле 25 МГц через RMII. Впрочем, похоже, что параметры трансивера хорошо соответствуют интерфейсу, все тайминги совпадают. Например, ширина фронтов 0-1 составляет для обоих устройств около 8 нс. Очевидно, это максимально возможное значение, чтобы хоть как-то пройти сертификацию на 100BASE-TX.
А если серьезно, то почему возник такой вопрос? Любопытно было бы узнать, в каких случаях важно иметь действительно высокий показатель для Fast Ethernet, тем более для такого устройства, как Portenta. По моему скромному мнению, все компоненты подобраны весьма удачно, но ждать абсолютной производительности от нее нет резона. Разве что в пересчете на кубический миллиметр или на ватт.
Думаю, что для автоматического подруливания может пригодиться компас - магнитометр с акселерометром, например, LSM303AGR. Из-за покачиваний кораблика на волнах скорее всего нужно будет учитывать все шесть осей. Это проще обрабатывать с помощью одного из алгоритмов машинного обучения. Очевидно, что понадобится фильтр Калмана.
Увеличить дистанцию с nRF24 можно разными способами. Если есть прицельная видимость, то самый дешевый способ - использовать направленную антенну на передатчике. В зависимости от конструкции антенны это должно поднять уровень передаваемого сигнала в сторону кораблика в среднем на 6-9 Дб и, соответственно, увеличить дистанцию раза в два-три. С другой стороны, можно взять модуль nRF24 со встроенным PA/LNA. К тому же такие модули обычно имеют не только более чувствительные антенны, но и лучше держат ее настройку. Это добавит около 8-10 Дб к чувствительности приемника кораблика, что будет соизмеримо с результатом направленной антенны. Само собой, можно использовать оба подхода одновременно.
Ну и в качестве альтернативы, можно рассмотреть переход на Bluetooth 5, который регламентирует помехоустойчивое кодирование (coded phy) и увеличивает дистанцию где-то в те же самые два-три раза. Для этого понадобится заменить nRF24 на одну из микросхем серии nRF52, которая имеет поддержку long range. В контексте этой задачи имеет смысл сразу иметь поддержку Bluetooth 5.1 Direction Finding - кораблик тогда вернется назад, просто как на маяк в море. Это ограничивает выбор до микросхем nRF52811 для приемника кораблика (чувствительность около -97Дб), и nRF52820 / nRF52833 для передатчика. Но можно взять и все одинаковые, например, nRF52811 и иметь PA/LNA. В таком случае усилитель должен иметь возможность переключать антенны, чтобы полноценно работал алгоритм direction finding.
В теории, сочетание coded phy + усилители на приемнике (+10Дб) и передатчике (+20Дб) + направленная антенна (+10Дб) может увеличить энергетический баланс на +30..35 Дб и, соответственно, дальность Bluetooth раз в пятьдесят. Это может составить свыше 5 км.
Еще один вариант - это модули LoRa. За счет высокого энергетического баланса линии и помехоустойчивого кодирования дальность связи может быть до 10 км. При плохой связи задержка, однако, может доходить до нескольких секунд. Что, впрочем, на таких дистанциях в море может быть приравнено к управлению спутником в космосе :-)
Не так давно вышел анализатор NanoVNA V2. Судя по всему, этот VNA прекрасно работает с частотами до 3.5 ГГц (с верхним пределом в 4.5ГГц, хотя заявлено 3 ГГц - вероятно, из-за кабелей), что дает возможность использовать его для настройки WiFi, Bluetooth, Zigbee, Thread и других 2.4 ГГц антенн. Прибор можно (иногда) купить на Tindie по цене менее $60 (шестидесяти долларов США). Хотя это никак не профессиональное оборудование, но он просто идеально подходит для настройки любительских устройств.
Если кто-то уже успел купить и опробовать в деле, пожалуйста, напишите свои впечатления!
Задача: создать авто полив газона 4-16 зон, с датчиком дождя.
...
Полив должен включаться раз в неделю (лучше чтобы это можно было менять) на определенное время каждая из зон по очереди.
Когда по графику должен включиться полив, сразу проверил нету ли дождя, потом начал открывать электромагнитные клапана. Если есть дождь то пропускает этот полив.
Может быть, имеет смысл контролировать влажность и температуру почвы, воздуха? Датчики можно разместить даже на разной глубине. Кроме того, насколько я знаю, полив обычно проводится так, чтобы избежать попадания прямых солнечных лучей сразу же после полива (нужен датчик освещенности). Если нужно будет разместить систему в поле, то понадобятся сборщики и накопители энергии на солнечных батареях. В свою очередь Bluetooth 5 мог бы обеспечить хорошее покрытие на произвольной площади.
Проект интересный и в Интернет есть достаточно попыток сделать что-то подобное. Но нужно отметить, что готовое решение практически всегда будет стоить дешевле, потому что при серийном производстве цена ниже.
Обновлено: Возвращаясь к базовым требованиям, цена на Arduino и датчик дождя очень маленькая. Электромагнитные клапаны тоже не очень дорогие. Похоже, что основные задачи, которые нужно решить - это неблагоприятные условия и электропитание.
Обычно для определения обрыва линии обычно требуется постоянное КЗ на другом конце линии, то есть тут больше подходит кнопка с постоянно замкнутыми контактами, как посоветовал Lic Control. В таком случае нет необходимости нажимать на кнопку, чтобы проверить был ли обрыв. Соответственно, тогда и конденсатор тоже будет не нужен. Все, что необходимо - это через резистор подтянуть вывод, к которому подключена кнопка, на VDD (кстати, судя по рисунку выше, у Ардуино есть встроенный pull-up резистор), а кнопку саму подключить на землю. Если на выводе читается низкое напряжение, значит цепь работает и кнопка не нажата. Если высокое - то цепь оборвалась или нажали на кнопку. В таком случае проверьте вывод еще раз через некоторое время. Если после N проверок он будет в высоком состоянии, то, вероятно, был обрыв.
Ключевым моментом тут является то, что обрыв на линии генерирует событие - нажатие кнопки. Если кнопка будет стоять на замыкание, то необходимо догадываться - это обрыв или просто никто так и не нажал на кнопку.
Фирмварэ модуля не поволяет. К тому же в китайских клонах могут стоять свои чипы. Никто вам не мешает сделать собственную прошивку, под HID, a прошивке этого модуля реализован только SPP.
Вон оно чё, Михалыч...
Mishka пише:Watchdog пише:Но выбранный вами модуль это не позволяет.
Да вроде ж позволяет.
Да нет. ftp://imall.iteadstudio.com/Modules/IM130614001_Serial_Port_BLE_Module_Master_Slave_HM-10/DS_IM130614001_Serial_Port_BLE_Module_Master_Slave_HM-10.pdf
Дак вроде все-таки как да: http://www.ti.com/lit/ds/symlink/cc2540.pdf
Но выбранный вами модуль это не позволяет.
Да вроде ж позволяет.
Alex45 пише:Чтоб при зависания ардуино отправил смс и я мог сделать reset по смс.
я исхожу из требований заказчика.
"А кто же тогда будет осуществлять мониторинг мониторинга мониторинга?" (с) "Враг государства"
Ymid - это середина цифры по оси Y
Высота (height_letter) и ширина цифры (width_letter) принята по 26 пикселей.
Ширина цифры после определения занимает от 16 до 3 пикселей в зависимости от того какая цифра.
В высоте также участвует возможный сдвиг цифры, когда она занимает промежуточное положение.
У меня так просто, к сожалению, не получилось разобраться в нейронной сети даже самой простейшей.
Ага, вижу, извините за невнимательность. Размер получается еще меньше!
Возможно, Вам покажется интересным классический курс по машинному обучению авторства Эндрю Ына. Нейронные сети там объяснены очень хорошо. Вообще говоря, на практике сегодня нечасто встретишь самописную реализацию библиотеки машинного обучения - все больше готовые решения, даже для микроконтроллеров. Но они всего лишь библиотека алгоритмов, а первоочередную роль все-таки играют данные.
Так кто вам мешает? Покажите класс.
Восьмиразрядные микроконтроллеры даже интерфейса, к этим видеосенсорам, не имеют. Нужно будет делать самостоятельно. Минимальная скорость чтения которых 5 Мбайт/с, Объем данных сами вычислите. Эти сенсоры не имеют внутреннй памяти изображения, это ПЗС и выборочно читать отдельные области картинки невозможно.
Мне ничего не мешает. Но я ведь и не должен?
В ESP32-CAM, похоже, стоит камера OV2640. У нее есть возможность отображать только интересующий регион (region of interest - ROI). Интерфейс с кадровым буфером делать тоже не нужно.
В принципе вполне возможно читать и распознавать цифра за цифрой все значения счетчика. Похоже, что на Uno с ее Mega2560 это сделать достаточно комфортно. Но теоретически можно попробовать уложиться и в 2Кб ОЗУ, переместив предварительно обученную сеть в ПЗУ.
Конечно же, я совсем не имею ввиду, что нужно заменить ESP32-CAM на 8-битный контроллер. Но и утверждать, что Ваш знакомый просто неудачно пошутил, тоже не могу.
NickVectra пише:Полностью согласен, что алгоритм требует доработки. Если кто-то возьмет за основу идею может совместно и доработаем
Мне один тальянец предлагал на 8-ми разрядном микроконроллере распознавание цифр сделать; шутник. Хотя, думаю возможно, с внешней памятью.
"На показанных фотографиях [ширина цифр] равна 45 пикселям (Ymid), высота цифр 21 пикселям (Y_d)", и вы можете добавить порядка двух внутренних уровней по 16-20 узлов, а так же иметь один 10 разрядный уровень на выходе. Итого 45*21+2*20+10 = 995 байтов займет нейронная сеть. Плюс несколько десятков байтов на другие структуры. Само собой, веса тренированной сети прописаны в ПЗУ.
Суммирование операция простая, скорость тут тоже не требуется. Даже если цифра будет проворачиваться в момент получения фотографии и ее нельзя будет распознать, то через 5 секунд это уже станет возможным. С дополнительным контролем результата (число должно все время увеличиваться, цифры в старших разрядах не должны хаотично менять свои значения) можно избежать случайных ошибок. Кроме того, можно даже вести карту вероятностей появления каждой цифры - счетчик ведь работает предсказуемым образом. Она тоже займет порядка 10*N байтов, где N - количество разрядов на счетчике. Зато вероятность ошибки может быть получится свести чуть ли не до нуля.
Использовать именно ардуино+ЕСП, знаю что ЕСП может работать как отдельный МК, но нужно именно через ардуинку.
Простите за off topic, может кто-нибудь пояснить, в чем причина иметь такую связку (а я вижу, что она достаточно популярна), если ESP действительно может полностью заменить Arduino?
Да какой там порог вхождения, на таких чипах можно такие системы как ранние Windows или Unix гонять. Сейчас, датчики с AI в тренде исследований и разработок. Эта штуковина, для этого дела, уже кое на что способна. Только слишком тяжела, для индивидуальных разработчиков. Купить и гонять на ней блинк?
Это как низкий, только наоборот
Вся популярность Ардуино стоит на двух вещах - цена и Arduino IDE. Вместе они обеспечивают как раз тот самый низкий порог вхождения. Если Вы пишете драйвера для GigE или код для FPGA, чтобы затем подключить это к Portenta, то Вы этот порог уже просто переступили. А сто долларов за блинк, как было подмечено, - это не вариант.
Про простоту и доступность ИИ я попрошу сказать наших практикующих коллег. Хотя бы пару из той сотни - другой человек, которых мы, может быть, найдем у нас в стране.
Не то, чтобы я говорил, что Portenta - это фиаско, нет. Но это весьма и весьма специализированное устройство, которое явно не для широких масс. И у него в своем секторе достаточно много конкурентов, таких, как например PocketBeagle или OrangeCrab.
Mishka пише:Производство 10000 простых двуслойных плат размером 10х10 см обойдется где-то в $7000, то есть по 7 центов за штуку.
буду занудним, але це 70 центів за шт )))
а щодо виробництва - так, все вірно, в нас краще сировину будуть експортувати (типу ліс-кругляк), а не продукт переробки, бо це легше, швидше і дешевше по затратам.
Верно, спасибо, что обратили внимание - моя ошибка. Должно обойтись в семьсот долларов.
Хороший (и правильный) способ снизить цену - обратиться к разным поставщикам за просчетом производства. За 10 тыс. плат торг будет очень хороший. Само собой, держу кулаки за тех земляков, кто готов заказать такой объем