Raspberry Pi с Arduino, последовательное соединение перестает работать

Это аппаратная установка дома,

Raspberry Pi GPIO -> Преобразователь Логического Уровня ->> Arduino ->>> Несколько реле>>>

Я запускаю Raspbian и NodeJS на Pi, в то время как Arduino загружен StandardFirmata. Я подключаю NodeJS к Arduino с пакетом johnny-five, и он хорошо работает после запуска. Но после долгих периодов, несколько часов? Arduino перестает отвечать. Любая команда, которую я пошлю на Ардуино, не будет исполнена. Это как если бы Ардуино висело. И Raspberry Pi, и Arduino питаются независимо друг от друга с помощью USB-адаптера Nokia 1A.

Кто-нибудь знает, почему это происходит?

  1. джонни-пять
  2. СтандартФирмата
  3. Код сервера NodeJS

, 👍1

Обсуждение

Кроме того, пожалуйста, добавьте ссылки на все продукты, которые вы используете. Я не знаю, что такое "Джонни-пять", если не считать робота из фильма 80 - х. То же самое с "StandardFirmata"., @Connor Wolf

Кроме того, детали кода RPi, а также (в идеале) фотографии того, как вы все подключили., @Connor Wolf

Возможно, вам стоит подумать о том, чтобы опубликовать свой код, иначе каждый ответ здесь будет в лучшем случае догадкой, @Omer

Очень часто, если Arduino зависает, это проблема с памятью (как правило, столкновение между кучей и стеком). Будет трудно диагностировать реальную проблему без исходного кода программы, которую вы загрузили на Arduino!, @jfpoilpret

Вы проверяете, что ваш Arduino все еще правильно работает с обычными программами (в частности, blink). Сначала вам нужно выяснить, является ли это аппаратной проблемой (контакт или MCU сгорели из-за слишком большого тока, проходящего через реле) или программным обеспечением., @jfpoilpret

Добавлены ссылки на все программное обеспечение, которое я использую, и код моего сервера NodeJS. Через некоторое время я сделаю снимки этой установки., @Zane

@jfpoilpret добавлено в связи. Я уверен, что с Uno все в порядке, так как я могу просто перезапустить uno, и он снова начнет работать. Просто я пытаюсь использовать его как решение для работы в режиме 24/7, @Zane

Вы нарисовали катушку реле, непосредственно подключенную к контакту 13, что является очень плохой идеей. Используйте транзистор NPN для привода реле и дайте ему поймать диод., @Chris Stratton

У меня было много проблем с последовательным зависанием с моим Arduino и Pi3. Кажется, есть [много проблем](https://github.com/raspberrypi/firmware/issues/88) с последовательными интерфейсами USB на Pi. Я также заметил, что мой Pi, кажется, подключается к Arduino просто отлично после перезагрузки, но если я отключу, а затем снова подключу Arduino (что должно быть нормально), то он сможет подключиться изначально, но соединение зависнет через несколько минут., @Cerin

А "1А" означает 1 ампер? Я знаю, что RPi 3 не работает надежно при питании менее 2,5 ампер сам по себе. Возможно ли, что ваш источник питания перегревается и падает напряжение?, @wilsotc

@wilsotc, вероятно, не должен отвечать на 4-летний поток. Pi 3 не существовало еще в 2014 году. Я имел в виду оригинальный Raspberry Pi. Если только ты не отвечаешь Керину. Просто для того, чтобы кто-то нашел эту проблему, я не думаю, что когда-либо нашел для нее решение. Хотя сейчас, может быть, и лучше., @Zane


1 ответ


1

Если ни один код не принадлежит вам, а весь код из библиотеки Firmata, то наиболее возможной причиной, которая приходит на ум после просмотра кода библиотеки, является утечка памяти, которая приводит к сбою при следующем выделении и, таким образом, нарушает код.

Библиотека Firmata выполняет динамическое выделение памяти, проверяет Firmata.c, поэтому она реалистична - я бы предложил взять ее с автором библиотеки.

,

Да. Ни один из кодов на Arduino не мой. Все это принадлежит Фирмате. Так это, вероятно, Фирмата?, @Zane

логически это должно быть так. Возможно, они не учитывали бесконечный ход., @Omer