#javascript #socket.io #raspberry-pi #sensors #i2c
#javascript #socket.io #raspberry-pi #датчики #i2c
Вопрос:
Я использую сервер expressjs на моем Raspberry Pi. Я использую зависимость i2c-bus для считывания данных с датчика, а затем использую сокет.ввод-вывод для отправки данных клиенту. Прямо сейчас я считываю данные с датчика 20 раз, затем усредняю их, а затем отправляю усредненные данные клиенту. Я использовал этот метод для считывания с датчика около 2000 байт за 55 мс с использованием i2c. Однако я знаю, что шина i2c и датчик могут работать намного быстрее. По-видимому, i2c может считывать от 100 КБ / с до 400 КБ / с. Я считываю всего ~ 40 КБ / с, что неплохо, но могло бы быть и лучше.
Я пытался использовать readBlock()
метод для чтения 32 байт, но я просто считывал 32 байта того же значения, поскольку датчик еще не обновил свое собственное значение.
Для всех, кто выполнял подобный проект, какой наилучший способ считывать данные с датчиков такого типа?
Должен ли я использовать:
- «непрерывное обновление»,
- «выходные регистры не обновляются до тех пор, пока не будут прочитаны MSB и LSB»,
- «FIFO»?
Комментарии:
1. Вам следует использовать встроенный в ядро драйвер. К сожалению, в восходящем потоке нет, но есть проекты на GitHub, в том числе один от поставщика (STMicro).
2. github.com/Lahorde/st_lsm9ds0_linux_driver , github.com/erlerobot/kernel_lsm9ds0 (использует подсистему ввода, которая не рекомендуется для новых датчиков), github.com/mpod/kernel-playground (лучший, но от третьего производителя).
3. @0andriy github.com/Lahorde/st_lsm9ds0_linux_driver похоже на выигрыш, но я понятия не имею, как я буду взаимодействовать с драйвером через javascript. js-версия execvp? Спасибо за ответ, кстати.