Интеграция данных датчика с микропроцессором Raspberry Pi
Аннотация
Для реализации различных датчиков в интегрированной роботизированной системе необходима среда программирования и действующие методы связи, которые позволяют вводить оцифрованные данные датчиков и использовать эти данные в контуре управления.
Ключевые слова:связь I2C, связь UART, Adafruit Ultimate GP Breakout, Sparkfun MPU-9150 Breakout, настройка Raspberry Pi
Введение
Сбор и объединение данных с датчиков являются важными частями цифровой системы управления. Поскольку для обработки всех входных данных датчиков используется встроенный цифровой контроллер, интерфейс связи, который делает эти данные доступными для чтения и использования на микропроцессоре, является первым приоритетом на уровне программирования. Автономная система навигации
для командного проекта требует постоянного отслеживания местоположения по GPS и постоянных измерений угла курса. Поэтому группа решает использовать модуль GPS для определения текущего местоположения (по широте и долготе) робота и использовать магнитометр для измерения курса. Данные, полученные обоими модулями, можно будет просматривать через удаленный пользовательский интерфейс, а также использовать в управляющем программном обеспечении.
Цель
Это расширенное руководство, предполагающее, что пользователь знает некоторые базовые операции в операционной системе Raspbian, например, установить библиотеку или создать файл сценария с помощью терминала Unix в командах bash в командной строке. Целью этой заметки по применению является руководство по методу, с помощью которого пользователь может в реальном режиме считывать данные акселерометра и данные GPS из различных интерфейсов связи с Raspberry Pi. В дополнение к инструкциям командной строки в этом руководстве также рассматриваются детали подключения датчиков к Pi и аппаратная конфигурация датчиков.
Информация
Оборудование
○ Sparkfun 9 степеней свободы Breakout MPU9150
Датчик инерции, используемый в этом проекте, - Invensense MPU-9150 с коммутационной платой, разработанный Sparkfun. MPU-9150 - это многокристальный модуль, состоящий из двух матриц, объединенных в единый корпус. Одна матрица - MPU-6050 с 3-осевым гироскопом и 3-осевым акселерометром. На другой матрице находится 3-осевой цифровой компас / магнитометр AK8975 от Asahi Kasei Microdevices Corporation. Этот чип был разработан с учетом низкого энергопотребления, низкой стоимости и высокой производительности и в настоящее время используется во многих местах, включая смартфоны и планшеты.
Adafruit Ultimate GPS Breakout
Коммутатор построен на базе модуля на базе MTK3339 третьего поколения, который имеет поддержку внешней антенны и импульсный выход в секунду. Он имеет частоту обновления 10 Гц и может отслеживать до 22 спутников на 66 каналах. Этот модуль GPS создан для встроенной системы, которая предлагает низкое энергопотребление (3,3 - 5 В), а контакт ENABLE может использоваться для выключения модуля с помощью любого контакта микроконтроллера. Также есть крошечный красный светодиод, который может указывать на статус сигнала. Светодиод мигает с частотой 1 Гц во время поиска спутников и мигает каждые
15 секунд, когда обнаружено исправление. Этот GPS работает только в открытом поле, когда вокруг нет строений. Каждый раз, когда он получает сигнал FIX, он будет обновлять данные о курсе, долготе, широте и высоте с
определенной пользователем частотой.
Стандарты связи
○ Связь по протоколу I2C.
I2C - это аббревиатура от Inter-Integrated Circuit Bus. I2C использует микроконтроллер в качестве ведущего устройства и подключается к нескольким ведомым устройствам с уникальными адресами через несимметричную компьютерную шину. Он использует только две двунаправленные открытые линии:последовательную линию данных (SDA) и последовательные часы (SCL). SDA устанавливает передаваемый бит, когда SCL низкий, а данные принимаются, когда SCL высокий.
○ Связь UART
UART означает универсальный асинхронный приемник / передатчик. Он передает / принимает данные последовательно из байта (5-8 бит) данных, записанных / сохраненных в регистре. Все данные будут считываться с определенной скоростью, заданной программистом. Для передачи UART требуются три типа сигналов:передача данных (TxD), получение данных (RxD) и сигнальная земля (SG). Поскольку этот вид передачи не является двунаправленным, необходимы две отдельные линии приема и передачи.
Список деталей
Для настройки оборудования и программирования на Raspberry Pi необходимы следующие компоненты
:
● Raspberry Pi
● Блок питания
● Wi-Fi ключ
● Гироскоп и акселерометр Sparkfun MPU9150
● Разъем Adafruit Ultimate GPS
● Переходный кабель USB-TTL (опционально)
● Макетная плата
● Перемычки MF
Предположения
Перед тем, как начать это руководство, необходимо сделать несколько предположений. Поскольку эти примечания к приложению будут сосредоточены только на конкретном аспекте всего проекта, базовая процедура настройки для нового Raspberry Pi и настройки беспроводной сети здесь будет проигнорирована. Ниже приведены некоторые основные предположения, на которых основаны эти примечания к приложению:
● действующий доступ в Интернет
● установленная операционная система Raspian и режим загрузки Pi был установлен в режим рабочего стола
● мышь и клавиатура подключаются к usb-портам raspberry pi, а монитор подключается через адаптер HDMI для обеспечения графического отображения.
Процедуры:
- Знание конфигурации Raspberry Pi GPIO для последовательной связи. Последовательные контакты, используемые в более поздней части этого руководства, - это GPIO 14 и 15 для UART и GPIO 2 и 3 для I2C.
- Подключение Adafruit GPS к Raspberry Pi
Найдите контакты Tx / Rx, Vin и gnd на вашем модуле adafruit gps. Перекрестное соединение выводов Tx и Rx с выводами Rx и Tx на Raspberry Pi. Затем подайте напряжение 5 В или 3,3 В с Pi на вывод Vin и закоротите контакт GND с землей Pi.
- Подключение MPU9150 к Raspberry Pi
Подключите четыре верхних контакта разъема MPU9150 к Raspberry Pi. Подключите GPIO 2 к SDA (линия данных) и GPIO 3 к SCL (линия синхронизации). Подайте 3,3 В от Pi к контакту Vcc акселерометра и замкните контакт GND на землю.
- Подготовка Pi для связи по протоколу I2C
a. Откройте терминал в Raspberry Pi и введите следующие команды bash:
sudo apt-get update
sudo apt-get install i2c-tools libi2c-dev
b. WiringPi - очень мощная библиотека C ++, разработанная для RasPi, которая включает в себя широкий спектр инструментов GPIO для PI. Чтобы установить WiringPi, введите следующие команды:
git clone git://git.drogon.net/wiringPi
cd wiringPi
sudo nano / etc / modules
c. Добавьте следующие три строки в конец файла (/ etc / modules), если их там еще нет
snd-bcm2835
i2c-bcm2708
i2c-dev
d . Затем измените параметры загрузки, чтобы i2c был включен с самого начала. Набрав команду bash:
sudo nano /boot/config.txt
e. Добавьте в конец этого файла следующие строки:
dtparam =i2c1 =on
dtparam =i2c_arm =on
f. Перезагрузите Raspberry Pi. - Установка и запуск программного обеспечения MPU-6050-Pi-Demo
a. Введите следующие команды bash в окно терминала:
git clone git://github.com/richardghirst/
PiBits.git
cd PiBits / MPU6050-Pi-Demo
sudo apt-get install libgtkmm-3.0-dev
b. Некоторые исходные файлы необходимо отредактировать для работы с Pi. Нам нужно изменить файлы I2Cdev.cpp и setup-i2c.sh. Используйте команду bash
«nano» для редактирования файла.
c. Измените все ссылки на «/ dev / i2c-0» на «/ dev / i2c-1» в этом файле и сохраните.
d. Введите следующие команды bash для компиляции исходного кода:
make
./setup-i2c.sh
e. Дождитесь завершения компиляции исходных текстов, затем введите следующую команду bash:
sudo i2cdetect -y 1
f. Вы должны увидеть следующий результат
г. Теперь запустите пример программы «demo_raw» в этой папке, набрав следующую команду bash:
./demo_raw
h. Эта демонстрация будет отображать необработанные значения гироскопа и ускорения в терминале
a / g:Ax Ay Az Gx Gy Gz
- Для получения данных из GPS-модуля Adafruit у Adafruit есть собственное программное обеспечение собственной разработки под названием GPS Daemon (gpsd). Учебник доступен по ссылке:https://learn.adafruit.com/adafruit-ultimate-gps-on-the-raspberry-pi
- Поскольку gpsd не является программным обеспечением с открытым исходным кодом, лучше использовать стороннее программное обеспечение, которое позволяет пользователям изменять и создавать свои собственные файлы для чтения с GPS. «Libgps» - это gps-библиотека с открытым исходным кодом, созданная в основном для использования на платах Raspberry ARM и протестированная с Adafruit Ultimate GPS Breakout. Мы используем эту библиотеку в нашем проекте.
- Установка и компиляция пакета libgps.
a. Чтобы установить libgps, введите следующие команды:
git clone git://github.com/wdalmut/libgps.git
cd libgps
b. Перейдя в папку libgps, соберите файлы для получения libgps.a, набрав:
make
sudo make install - Вы можете найти образец кода в папке с примерами под названием «position_logger.c» для проверки соединения
a. Скомпилируйте его с помощью
gcc -o position_logger position_logger.c -lgps
-lm
b. Запустите его с помощью
$ ./position_logger
c. При наличии действительного сигнала GPS (индикатор исправления не мигает с частотой 1 Гц)
вы должны увидеть десятичные градусы для широты и долготы
прямо в консоли, как показано ниже:
45.071060 7.646363
45.071082 7.646385
45.071078 7.646387
45.071060 7.646373
45.071048 7.646358
45.071052 7.646372
45.071057 7.646392
45.071062 7.646391062 7 /> 45.071062 7.646391062 7 />
45.071073 7.646395
45.071082 7.646403
Заключение
В этом примечании к приложению в качестве примера использовались два датчика, которые помогли пользователю настроить последовательную связь между датчиками и Pi с первого шага. Он также кратко объяснил метод командной строки для редактирования, компиляции и запуска файла. Однако для записи этих данных датчиков в алгоритм требуется гораздо больше усилий, чем просто их просмотр. Конечная цель, или, другими словами, более продвинутая версия этой заметки по применению должна быть адресована различным библиотекам датчиков из одного файла скрипта
. Это требует более глубокого понимания принципов кодирования, лежащих в основе каждого пакета программного обеспечения датчика.
Ссылка: - Кевин Таунсенд. Adafruit Ultimate GPS на Raspberry Pi, 15 июля 2014 г.
Интернет. https://learn.adafruit.com/downloads/pdf/adafruit-ultimate-gps-on-theraspberry-pi.pdf - Вальтер Даль Мут. Библиотека UART NMEA GPS для Raspberry Pi. 8 сентября 2014 г.
Web. https://github.com/wdalmut/libgps - InvenSense. Лист данных MPU-9150, 18 сентября 2013 г. Web. http://
www.invensense.com/mems/gyro/documents/PS-MPU-9150A-00v4_3.pdf
Источник:Интеграция данных датчиков с микропроцессором Raspberry Pi
Производственный процесс
- Измерение температуры с помощью однопроводного датчика DS18B20 и Raspberry Pi
- Мониторинг температуры на Raspberry Pi
- Мониторинг температуры с помощью Raspberry Pi
- Датчик движения с использованием Raspberry Pi
- Датчик влажности почвы Raspberry Pi
- Отслеживание лица при панорамировании / наклоне с помощью raspberry pi
- Как подключить ультразвуковой датчик Lego Mindstorms NXT к Raspberry Pi
- Ультразвуковой датчик диапазона HC-SR04 на Raspberry Pi
- Создайте свой первый IOT с помощью Raspberry Pi, датчика DHT11 и Thingspeak.
- Аэропоника с Raspberry Pi и датчиком влажности