Отправка нескольких данных из BNO055 IMU в BridgeClient на Yun
У меня есть Arduino Yun, который через I2C подключается к коммутационной плате Adafruit BNO055.
Моя цель — использовать Python Flask в сочетании с BridgeServer и BridgeClient для получения информации датчика от ATmega32u4 микроконтроллер к микропроцессору и использовать HTML5 Server Side Event (SSE) для отображения информации от датчиков в реальном времени на сетевых интерфейсах.
Я хотел бы показать углы Эйлера и значения линейного ускорения:
- заголовок
- презентация
- ролл
- linear_accerlation_x
- linear_acceleration_y
- linear_acceleration_z
Пример аналогичной концепции можно получить на сайте Smart MeasuringCup">Smart Measuring Cup от Adafruit. Однако в скетче кода пользователь отправляет только одно значение:
BridgeClient client;
....
client.println(volume, 5);
И в конце Python Flask код открывает сокет и использует метод makefile()
для чтения значения
def yunserver_sse():
try:
# Connect to YunServer instance that's listening on localhost.
soc = socket.create_connection(('localhost', 5678))
socfile = soc.makefile()
while True:
# Get data from server.
line = socfile.readline()
# Stop if the server closed the connection.
if not line:
raise StopIteration
# Send the data to the web page in the server sent event format.
yield 'data: {0}\n\n'.format(line)
# Sleep so the CPU isn't consumed by this thread.
time.sleep(0)
except socket.error:
# Error connecting to socket. Raise StopIteration to quit.
raise StopIteration
Вместо того, чтобы отправлять только один измеренный параметр, как я могу отправить все вышеупомянутые 6 одновременно?
примечание
Я пробовал использовать библиотеку ArduinoJson, но мне сложно анализировать JSON на конце Python Flask, поскольку readline()
ожидает \n
в конце строки.
@Shan-Desai, 👍1
1 ответ
Лучший ответ:
Очевидно, решением моей проблемы был простой client.println()
после того, как мой JSON был готов к печати в BridgeClient.
Фрагмент:
root.printTo(client); client.println();
где root
— это DynamicJsonBuffer
из библиотеки ArduinoJson. client.println()
немедленно выведет \n
, и это будет прочитано кодом Python readline()
.
- Как получить HTTPS на Arduino?
- Как получить уникальный идентификатор для всех плат Arduino?
- Как поступить с файлом fzz
- Как сделать повторитель Wi-Fi на Arduino?
- Программа arduino выдаёт ошибку expected //primary-expression before ')' token error: //expected ';' before '}' token E
- HTTP-запросы с использованием Arduino
- Как заставить инфракрасный термодатчик MEMS - D6T-44-L06 работать с Arduino?
- Ошибка easy_install pip на Arduino Yun