Как связать процессор компьютера с Arduino на плате?

Я новичок в Arduinno, поэтому, пожалуйста, извините, если вопрос глупый.

Вот проблема: у меня есть проект, в котором я хочу, чтобы Arduino (или аналогичная плата с микрочипом) управляла некоторыми датчиками и исполнительными механизмами. Но мне нужен очень продвинутый «искусственный интеллект», чтобы обрабатывать данные, предоставляемые этими датчиками. Согласно моим исследованиям, есть два основных препятствия для размещения этого интеллекта на Arduino.

  • Во-первых, Arduinno закодирован на языке, похожем на C: я, конечно, мог бы найти способ написать интеллект, но это будет трудоемкая задача для разработчика.
  • Во-вторых, у меня могут возникнуть проблемы с памятью: я буду хранить тяжелую матрицу данных, выполнять сложные вычисления, а этого может быть слишком много для Arduino.
  • В-третьих, я прочитал на stackexchange, что есть несколько способов компилировать код Python на платах Arduinno, таких как Arduinno Mega. Так что я могу закодировать этот интеллект на Python (что несложно) и скомпилировать полученный код на Arduinno. Однако я сделаю одно предостережение: некоторые библиотеки, которые я буду использовать, будут полностью скомпилированы, и это займет слишком много памяти на Arduino (например, во второй упомянутой мной проблеме)

Итак, у меня есть другое решение, но я не уверен, является ли оно современным или даже осуществимым решением: Я хотел бы разделить две задачи:

  • Напишите код Arduino для обработки датчиков и создания числовых данных.
  • Написать код Python на моем компьютере и скомпилировать его как исполняемый файл на моем компьютере
  • Затем каким-то образом я «извлекаю» процессор из своего компьютера (кстати, Intel) и подключаю его к плате Arduinno. Arduinno отправляет данные процессору, а процессор постоянно запускает файл Python и возвращает данные.

Итак, вопрос:

  • Возможно ли это вообще?
  • Это когда-либо было сделано?
  • Какие каналы связи подходят для обмена данными между процессором и микросхемой Arduinno: USB, Serial, Ethernet?
  • Как обработать входные данные процессора, чтобы он собирал данные с Arduino и затем использовал их в коде Python?

, 👍0

Обсуждение

Получите пи. Это должно делать все в одном., @Majenko


4 ответа


0

Я предлагаю вам использовать семейство процессоров, отличное от 8-битных микросхем AVR, поддерживаемых Arduino IDE (и, пожалуйста, исправьте свои орфографические ошибки, все слова, состоящие из двойных букв, очень отвлекают). Хорошим примером могут служить Teensy 3.2 или Teensy 3.6, предлагаемые здесь https://www.pjrc.com/. "Версия 3.6 содержит 32 процессор ARM Cortex-M4 с частотой 180 МГц и модулем с плавающей запятой" Arduino запрограммирован на C++, посмотрите, можно ли экспортировать ваш код на C++ и импортировать его в IDE для компиляции для выбранного uC.

,

2

Похоже, вам нужна большая вычислительная мощность. Вы можете либо поместить датчики и ИИ на одно устройство (и предложение @majenko о Raspberry Pi будет направлением для дальнейшего развития), либо вам нужны два устройства, одно для управления сбором данных — возможно, Arduino — и одно для ИИ. . Мы недостаточно знаем о вашей постобработке и искусственном интеллекте, чтобы дать хорошую рекомендацию, но, поскольку у вас уже есть ПК с работающим на нем Python, Arduino, общающаяся с ПК, будет хорошим началом.

Вы не сказали, какой Arduino вы рассматриваете, но, поскольку большинство людей имеют в виду «Uno», когда говорят об универсальном Arduino, я бы просто предположил, что у Uno слишком мало ресурсов для постобработки. частью вашего проекта, но, вероятно, идеально подходит для сбора данных. Кросс-компиляция вашего кода Python для Uno по-прежнему не устраняет ограничения скорости обработки и объема памяти.

Конечно, существует множество продуктов «Arduino», некоторые со значительно большими ресурсами, которые могут удовлетворить ваши потребности — здесь я имею в виду платы на базе Arm — но я не могу оценить ваш проект нуждается в этом уровне.

Мой собственный первый подход заключается в том, чтобы использовать то, что у вас есть, для начала: Uno собирает данные и отправляет их на ваш компьютер. Как только вы что-то запустите, вы лучше поймете потребности и проблемы, и если вам все еще нужно автономное решение, у вас будет гораздо больше возможностей сделать этот выбор.

,

1

Я могу справиться с этим случаем, используя библиотеку pyserial. Я просто записываю данные на свой ноутбук, а затем использование python для выполнения части кода Advance AI.

  1. Отправить данные датчика в виде объединенной строки через последовательный порт Arduino.
  2. прочитайте его с помощью библиотеки pyserial
  3. добавьте механизм регистрации данных, если вам нужно, или параллельно обработайте данные, которые вы собирали последовательно, приведя их к их собственному типу данных.

Надеюсь, это поможет вам.

Спасибо

,

Спасибо, присмотрюсь к ним. Остается вопрос: какое оборудование необходимо для запуска типичного скрипта Python (например, мне не нужен экран компьютера, мне нужен процессор, нужен ли мне графический процессор?), @totalMongot

@totalMongot Я думаю, вы можете попробовать с некоторыми платами типа ARM, такими как RPis или Odroid XU. Но при первоначальной настройке вам нужен графический интерфейс Однако. О прямой прошивке скрипта python на Arduino вам поможет >>>> https://arduinoprosto.ru/q/49187/running-python-script-using-arduino, @Yana

Спасибо! :) Можно ли разобрать компьютер и взять только ядро и несколько USB и последовательных портов, чтобы получить что-то похожее на платы ARM, которые могут общаться с Arduinno? Графический интерфейс можно получить, подключив компьютер к USB-порту., @totalMongot

да, напишите свой код Python как попытку, кроме (для безопасного потока вашего скрипта) и запустите скрипт Python как демон (аналогично запуску приложения из последовательности запуска), чтобы он всегда работал в фоновом режиме. Я думаю, что эта ссылка вам поможет >>>> https://www.instructables.com/id/Raspberry-Pi-Launch-Python-script-on-startup/ «Графический интерфейс можно получить, подключив компьютер к порту USB» >> Да, если есть какие-либо HMI или дисплей pi, которые могут проецировать через USB, это возможно., @Yana


1

Для использования ИИ существует sipeed maix board на базе K210. Двухъядерный процессор с частотой 400 МГц и сопроцессор с искусственным интеллектом.

,