Универсальный внешний накопитель для всех iOS-устройств, совместим с PC/Mac, Android
Header Banner
8 800 100 5771 | +7 495 540 4266
c 9:00 до 24:00 пн-пт | c 10:00 до 18:00 сб
0 Comments

Содержание

Raspberry Pi 3 – подключаем датчик DHT11 и LCD-дисплей

В этом материале мы рассмотрим, как подключить к Raspberry Pi 3 широко распространенные датчик влажности и температуры DHT11 и LCD-дисплей размерности 1602 (шестнадцать символов в строке, две строки) на базе контроллера HD44780. Большинство выпускаемых различными производителями дисплеев не имеют поддержки кириллицы, но для отображения значений температуры и влажности такой недостаток не имеет принципиального значения.

Мы будем использовать дисплей с очень удобным переходником на микросхеме PCF8574T, который позволяет управлять дисплеем по протоколу I2C всего по двум проводам, не считая питания +5В и земли. При обычных способах подключения дисплея к микроконтроллеру требуется 8 или 12 линий. Подключение по I2C существенно экономит вводы-выводы общего назначения (GPIO) Raspberry, которые могут понадобиться для подключения других устройств, и никак не мешает наблюдать относительно медленно меняющиеся параметры.

Датчик DHT11 требует для подключения всего один провод линии данных, также не считая питания и земли. Его следует питать напряжением +3,3В. DHT11 имеет собственный протокол обмена данными 1-Wire.

Разберем пошагово установку программного обеспечения и подключение внешних устройств. Мы использовали операционную систему Raspbian Jessie With Pixel, скачанную с сайта raspberrypi.org и плату Raspberry Pi 3 Model B.

 

Шаг первый.

Подготовим Raspberry к установке необходимого программного обеспечения. Если у вас свежая версия Raspbian, то, скорее всего, необходимые модули уже установлены. Но, на всякий случай, лучше застраховаться.

Откройте терминал и наберите следующие команды:

sudo apt-get update <Enter>

sudo apt-get upgrade <Enter>

 

Первая команда синхронизирует и обновит индексные файлы установленных в системе пакетов, вторая – обновит все установленное на данный момент программное обеспечение. Это занимает некоторое время.

 

Шаг второй.

Разрешим, если это еще не сделано, использование в системе протоколов I2C и 1-Wire. Для этого введем команду

sudo raspi-config

в открывшемся меню с помощью стрелок вверх/вниз и клавиши Enter зайдем в Interfacing Options, последовательно откроем соответствующие пункты меня и разрешим (выбрав “Y” при запросе) использование I2C и 1-Wire. Клавишей Tab установим маркер на <Back>, нажатием на Enter выйдем в меню верхнего уровня, выберем <Finis>, нажмем Enter. Для выхода на предыдущий уровень меню также можно использовать клавишу <Esc>. После выхода в терминал необходимо перезагрузить систему. Это можно сделать, введя команду

sudo reboot

 

После перезагрузки необходимо изменить файл конфигурации модулей так, чтобы необходимые модули попали в автозагрузку. Для этого необходимо открыть в редакторе nano файл modules:

sudo nano /etc/modules

 

Добавьте в открывшийся для редактирования файл к имеющимся строкам еще две строки:

 

i2c-dev

i2c-bcm2708

Если какая-либо из этих строк уже имеется в файле, ее добавлять не надо.

Выйдем из редактора, нажав <Ctrl-X> и ответив “Y” на вопрос о сохранении файла.

 

Шаг третий.

Теперь необходимо установить библиотеки smbus и I2C для Python. Для этого последовательно введите в терминале команды:

sudo apt-get update    (еще раз обновим индексные файлы)

sudo apt-get install –y python-smbus i2c-tools    (собственно установка библиотеки)

sudo reboot    (перезагрузка)

 

Проверим, установилась ли библиотека? Наберем в терминале

lsmod | grep i2c <Enter>

 

Если в появившемся отклике системы есть строка i2c_bcm2708, то это значит, что библиотека установлена успешно.

 

Шаг четвертый.

Настало время подключить датчики к выводам GPIO Raspberry. Повторим схему разъема GPIO для наглядности. Перед подключением внешних устройств обязательно отключите Raspberry от питания!

 

Подключим LCD-экран и датчик DHT11 в соответствии со следующей таблицей:

Контакты I2C LCD Контакты GPIO Raspberry Описание
GND 6 Земля
VCC 2 +5В
SDA 3 GPIO 2 (I2C1_SDA)
SCL 5 GPIO 3 (I2C1_SCL)
Контакты DHT11 Контакты GPIO Raspberry Описание
GND 9 Земля
DATA 8 GPIO 14
VCC 1 +3,3 В

 

Шаг пятый.

Включим питание Raspberry и проверим, обнаруживает ли операционная система устройство, подключенное по шине I2С? Введем в терминале команду (она входит в установленную на третьем шаге утилиту i2c-tools):

sudo i2cdetect 1

 

В ответ система выдаст такую информацию:

На пересечении строки, помеченной цифрой 20, и столбца 7 мы видим адрес единственного подключенного устройства – 27 (в системе счисления по основанию 16). Теоретически, адрес может быть и другим. Запомним его, он нам понадобится в дальнейшем. Если на одного адреса не отображается, это означает, что либо устройство не подключено, либо оно подключено неверно, либо необходимое программное обеспечение не установлено.

 

Шаг шестой.

Все предварительные действия закончены. На этом  шаге мы настроим и запустим программу на языке Python, которая отобразит температуру и влажность, полученные с датчика DHT11 на дисплее. Загрузим файлы из файлового хранилища: dht11.py и raspi-dht11-i2clcd.py. Первый из них является драйвером датчика DHT11. Он используется в  основной программе, которая находится во втором файле.

Введем в терминале

sudo wget https://masterkit.ru/zip/dht11.py ,

затем

sudo wget https://masterkit.ru/zip/raspi-dht11-i2clcd.py

Команды можно объединить в одну (имена файлов указываются через пробел):

sudo wget https://masterkit.ru/zip/dht11.py https://masterkit.ru/zip/raspi-dht11-i2clcd.py

Файлы будут загружены в рабочий каталог /home/pi.

 

После загрузки необходимо отредактировать адрес LCD-дисплея на шине I2C, который мы наши пятом шаге, в нашем случае он равен 27. Занесем его в основной файл программы. Откроем файл raspi-dht11-i2clcd.py на редактирование в редакторе nano:

sudo nano /home/pi/ raspi-dht11-i2clcd.py


 

По умолчанию адрес 27 задан в переменной I2C_ADDR = 0x27. Если адрес на пятом шаге не равен 27, следует подставить его значение.

Сохраняем изменения Ctrl-O, закрываем редактор Ctrl-X.

Изменить файл можно и более привычным (для пользователей Windows) способом в редакторе среды программирования Python двойным кликом на файле основной программы:

Редактируем и сохраняем файл.

Запустить программу можно из терминала, из среды программирования, а также автозагрузкой при включении питания. Последний способ нужен, если мы планируем использовать Raspberry автономно: без подключения мыши, клавиатуры или удаленного управления.

Запуск из терминала:

sudo python raspi-dht11-i2clcd.py

Запуск из редактора среды программирования Python (см.рис 9):

Run->Run Module или F5.

Автозапуск:

Введите в терминале команду, открывающую на редактирование новый файл dht11-lcd.desktop:

         sudo nano /etc/xdg/autostart/dht11-lcd.desktop

В открывшемся окне редактора nano введите 8 строк:

         [Desktop Entry]

         Version=1.0

         Encoding=UTF-8

         Name=dht11-lcd

         Comment=

         Exec=sudo python /home/pi/raspi-dht11-i2clcd.py

         Terminal=false

         Type=Application

и сохраните.

Теперь при включении питания будет автоматически запускаться интерпретатор Python с файлом raspi-dht11-i2clcd.py, что приведет к исполнению нашей программы.

 

Raspberry Pi – DS18B20 – Avislab

Подключение цифрового датчика температуры DS18B20 к Raspberry Pi выполняется по следующей схеме:

DS18B20 – это цифровой датчик температуры, который работает по однопроводному интерфейсу 1-Wire. Он измеряет температуру в пределах -10 .. + 85 градусов по шкале Цельсия. Как видно из схемы для его использования нам потребуется сам датчик DS18B20 и резистор 4,7 кОм. Вы можете подключить несколько датчиков как указано на следующей схеме:

Если использовать провода, длиннее трех метров, могут возникнуть проблемы со считыванием. В этом случае рекомендуется использовать экранированные провода.

После подключения датчика выполняем следующие команды:


sudo modprobe w1-gpio && sudo modprobe w1_therm
ls -l /sys/bus/w1/devices/

Должны увидеть что-то похожее на следующее:

total 0
total 0
lrwxrwxrwx 1 root root 0 Nov 29 10:49 28-000000d7970b -> ../../../devices/w1_bus_master1/28-000000d7970b
lrwxrwxrwx 1 root root 0 Nov 29 10:49 w1_bus_master1 -> ../../../devices/w1_bus_master1
Если подобного результата нет, а датчик подключен правильно, редактируем файл /boot/config.txt:


sudo nano /boot/config.txt

добавляем строку

dtoverlay=w1-gpio

сохраняем файл и перезагружаем Raspberry командой reboot.

Каждый датчик имеет уникальный номер. Находим ID датчика. В моем случае

28-000000d7970b.

Далее выполняем команду (Вы должны заменить значение 28-000000d7970b на ID своего датчика):


cat /sys/bus/w1/devices/28-000000d7970b/w1_slave

Видим информацию, которую выдает датчик:

7c 01 4b 46 7f ff 04 10 09 : crc=09 YES
7c 01 4b 46 7f ff 04 10 09 t=23750
Среди этой информации есть следующий фрагмент: t = 23750. ]*\).*/\1/p` | sed `s/t=//` | awk `{x=$1}END{print(x/1000)}`

Python:


tfile=open("/sys/bus/w1/devices/28-000000d7970b/w1_slave")
ttext=tfile.read()
tfile.close()
temp=ttext.split("")[1].split(" ")[9]
temperature=float(temp[2:])/1000
print temperature

Успехов.

Смотри также:

Подключение Raspberry Pi к Центру Интернета вещей Azure в облачной среде (Node.js)

  • Чтение занимает 11 мин

В этой статье

В этом учебнике описано, как начать работу с устройством Raspberry Pi под управлением Raspberry Pi OS. Также вы узнаете, как можно легко подключать устройства к облаку с помощью Центра Интернета вещей Azure. Примеры для Windows 10 IoT Базовая представлены в Центре разработки для Windows.

Нет начального набора? Используйте онлайн-симулятор Raspberry Pi. Или купите новый комплект здесь.

Что нужно сделать

  • Создайте Центр Интернета вещей.

  • Зарегистрируем устройство для Pi в Центре Интернета вещей.

  • Настроим Raspberry Pi.

  • Мы запустим пример приложения на Pi для отправки данных в Центр Интернета вещей.

Что вы узнаете

  • Как создать Центр Интернета вещей Azure и получить строку подключения нового устройства.

  • Как подключать Pi к датчику BME280.

  • Как собирать данные датчика, запустив пример приложения на Pi.

  • Как отправить данные датчика в Центр Интернета вещей.

Что нужно

  • Плата Raspberry Pi 2 или Raspberry Pi 3.

  • Подписка Azure. Если у вас еще нет подписки Azure, создайте бесплатную учетную запись, прежде чем начинать работу.

  • Монитор, USB-клавиатура и мышь, подключенные к Pi.

  • ПК или компьютер Mac под управлением Windows или Linux.

  • Подключение к Интернету.

  • Карта microSD емкостью 16 ГБ или больше.

  • Адаптер USB-SD или карта microSD для записи образа операционной системы на карту microSD.

  • Источник питания 5 В 2 A с кабелем Micro USB длиной примерно 1,8 метра.

Ниже приведены необязательные компоненты.

  • Датчик температуры, давления и влажности Adafruit BME280 в сборе.

  • Монтажная плата.

  • 6 оптоволоконных кабелей с разъемом на одном конце и гнездом на другом.

  • Светодиодный индикатор 10 мм с рассеянным освещением.

Примечание

Если у вас нет дополнительных элементов, можно использовать имитацию датчиков.

Создание Центра Интернета вещей

В этом разделе описывается создание центра Интернета вещей с помощью портала Azure.

  1. Войдите на портал Azure.

  2. На начальной странице портала Azure нажмите кнопку +Создать ресурс и введите текст Центр Интернета вещей в поле поиска в Marketplace.

  3. В результатах поиска выберите Центр Интернета вещей и щелкните Создать.

  4. Заполните следующие поля на вкладке Основные сведения.

    • Подписка: Выберите нужную подписку для концентратора.

    • Группа ресурсов. Выберите группу ресурсов или создайте новую. Чтобы создать новую, щелкните Создать и введите нужное имя. Чтобы выбрать существующую группу ресурсов, щелкните ее. Дополнительные сведения о группах ресурсов см. в статье об управлении группами ресурсов в Azure Resource Manager.

    • Регион. Выберите регион, в котором будет расположен концентратор. Выберите ближайшее к вам расположение. Некоторые функции, такие как потоки устройств Центра Интернета вещей, доступны только в определенных регионах. Для функций с такими ограничениями необходимо выбрать один из поддерживаемых регионов.

    • Имя Центра Интернета вещей. Введите имя для концентратора. Это имя должно быть глобально уникальным и содержать от 3 до 50 буквенно-цифровых символов. Имя может также содержать знак тире ('-').

    Важно!

    Так как центр Интернета вещей будет общедоступен в качестве конечной точки DNS, убедитесь, что в его имени не фигурируют конфиденциальные или персональные сведения.

  5. По завершении выберите Next: Networking (Далее: сеть), чтобы продолжить создание центра.

    Выберите конечные точки, с помощью которых устройства смогут подключаться к Центру Интернета вещей. Можете выбрать параметр по умолчанию Общедоступная конечная точка (все сети) либо выбрать Общедоступная конечная точка (выбранные диапазоны IP-адресов) или Частная конечная точка. Для нашего примера примите параметр по умолчанию.

  6. По завершении выберите Next: Management (Далее: управление), чтобы продолжить создание центра.

    Здесь вы можете принять настройки по умолчанию. При необходимости можете изменить любое из следующих полей:

    • Ценовая категория и категория масштабирования. Выбранный уровень решения. В зависимости от количества необходимых компонентов и ежедневно отправляемых сообщений с помощью решения, можно выбрать несколько уровней. Для тестирования и оценки можно использовать уровень “Бесплатный”. Он позволяет подключить к концентратору 500 устройств и отправлять до 8000 сообщений в день. Для каждой подписки Azure можно создать один центр Интернета вещей на уровне “Бесплатный”.

      Если вы используете функцию “Быстрое начало” для потоков устройств Центра Интернета вещей, выберите уровень “Бесплатный”.

    • Единицы центра Интернета вещей. Допустимое число сообщений за единицу в сутки зависит от ценовой категории концентратора. Например, если концентратор должен поддерживать 700 000 входящих сообщений, следует выбрать две единицы уровня S1. Дополнительные сведения о других параметрах уровня см. в статье Масштабирование решения для Центра Интернета вещей.

    • Defender для Интернета вещей. Включите это решение, чтобы обеспечить дополнительный уровень защиты от угроз для ваших устройств и устройств Интернета вещей. Этот параметр недоступен для концентраторов на уровне “Бесплатный”. Дополнительные сведения см. в документации по Azure Defender для Интернета вещей.

    • Дополнительные параметры Settings > С устройства в облако: Это свойство привязывает сообщения, отправляемые с устройства в облако, к числу одновременно работающих модулей чтения этих сообщений. Для большинства концентраторов достаточно четырех разделов.

  7. По завершении выберите Next: Теги, чтобы перейти к следующему экрану.

    Теги — это пары “имя — значение”. Один и тот же тег можно присвоить нескольким ресурсам и группам ресурсов для их классификации и объединения счетов. В этом документе не будут добавляться какие-либо теги. Дополнительные сведения см. в статье Использование тегов для организации ресурсов в Azure.

  8. По завершении выберите Next: Просмотр и создание, чтобы просмотреть выбранные параметры. Отобразится примерно следующий экран только со значениями, которые вы задали при создании центра.

  9. Щелкните Создать, чтобы начать развертывание центра. Развертывание будет выполняться несколько минут, пока будет создаваться центр. Когда развертывание будет завершено, выберите Перейти к ресурсу, чтобы открыть новый центр.

Регистрация нового устройства в центре Интернета вещей

В этом разделе вы создадите удостоверение устройства в реестре удостоверений Центра Интернета вещей. Устройство может подключиться к центру, только если в реестре удостоверений есть соответствующая запись. Дополнительные сведения см. в руководстве разработчика для Центра Интернета вещей.

  1. В меню навигации Центра Интернета вещей выберите Устройства IoT, а затем щелкните Создать, чтобы добавить устройство в Центр Интернета вещей.

  2. В разделе Создать устройство укажите имя нового устройства, например myDeviceId, и щелкните Сохранить. После этого для вашего Центра Интернета вещей будет создано удостоверение устройства. Не снимайте флажок Автоматически формировать ключи, чтобы первичный и вторичный ключи создавались автоматически.

    Важно!

    Идентификатор устройства может отображаться в журналах, собранных для поддержки клиентов и устранения неполадок, поэтому не используйте конфиденциальную информацию, когда присваиваете ему имя.

  3. Создав устройство, откройте его из списка области Устройства IoT. Скопируйте основную строку подключения. Эта строка подключения используется кодом устройства для взаимодействия с центром.

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

Примечание

В реестре удостоверений в Центре Интернета вещей хранятся только идентификаторы устройств, необходимые для безопасного доступа к Центру Интернета вещей. В этом реестре хранятся идентификаторы и ключи устройств, которые используются в качестве учетных данных безопасности, и флажок включения или выключения, который позволяет вам отключить доступ для отдельного устройства. Если в приложении необходимо хранить другие метаданные для конкретного устройства, следует использовать хранилище конкретного приложения. Дополнительные сведения см. в разделе Руководство разработчика для Центра Интернета вещей.

Настройка Raspberry Pi

Установка Raspberry Pi OS

Подготовьте карту microSD для установки образа Raspberry Pi OS.

  1. Скачайте Raspberry Pi OS с рабочим столом.

    а. Raspberry Pi OS с рабочим столом (в виде ZIP-файла).

    b. Извлеките Raspberry Pi OS с образом рабочего стола в папку на компьютере.

  2. Установите Raspberry Pi OS с Desktop на карту microSD.

    a. Скачайте и установите служебную программу Etcher для записи данных на карты SD.

    b. Запустите Etcher и выберите Raspberry Pi OS с образом рабочего стола, извлеченного на шаге 1.

    c. Выберите устройство для чтения карт microSD. В программе Etcher уже может быть выбрано правильное устройство для чтения.

    d. Щелкните Flash (Переключиться), чтобы установить Raspberry Pi OS с рабочим столом на карту microSD.

    д) По завершении установки удалите карту microSD из компьютера. Удалять карту microSD напрямую безопасно, так как программа Etcher автоматически извлекает или отключает карту microSD после завершения.

    е) Вставьте карту microSD в устройство Pi.

Включение SSH и I2C

  1. Подключите Pi к монитору, клавиатуре и мыши.

  2. Запустите Pi и войдите в Raspberry Pi OS, указав имя пользователя pi и пароль raspberry.

  3. Щелкните значок Raspberry и выберите Preferences (Параметры) > Raspberry Pi Configuration (Конфигурация Raspberry Pi).

  4. На вкладке Interfaces (Интерфейсы) установите для параметров SSH и I2C значение Enable (Включить), а затем нажмите кнопку OK.

    Интерфейс Описание
    SSH Secure Shell (SSH) используется, чтобы выполнить удаленное подключение к Raspberry Pi с помощью удаленной командной строки. Это предпочтительный способ удаленной выдачи команд для Raspberry Pi, описанный в этом документе.
    I2C I2C — это протокол связи, используемый для взаимодействия с оборудованием, например датчиками. Этот интерфейс необходим для взаимодействия с физическими датчиками, описанными в этой статье.

    Если у вас нет физических датчиков и вы хотите использовать смоделированные данные датчиков с устройства Raspberry Pi, вы можете отключить параметр I2C.

Примечание

Сведения о том, как включить SSH и I2C, можно найти в дополнительных справочных документах на raspberrypi.org и Adafruit.com.

Подключение датчика к Pi

Подключите светодиодный индикатор и датчик BME280 к Pi с помощью монтажной платы и оптоволоконных кабелей, как показано ниже. Если у вас нет этого датчика, пропустите этот раздел.

Датчик BME280 может собирать данные о температуре и влажности. Светодиодный индикатор мигает, когда устройство отправляет сообщение в облако.

Чтобы подключить выводы датчика, используйте следующие кабели:

Начало (датчик и светодиодный индикатор) Конец (плата) Цвет кабеля
VDD (вывод 5G) 3.3V PWR (вывод 1) Белый кабель
GND (вывод 7G) GND (вывод 6) Коричневый кабель
SDI (вывод 10G) I2C1 SDA (вывод 3) Красный кабель
SCK (вывод 8G) I2C1 SCL (вывод 5) Оранжевый кабель
LED VDD (вывод 18F) GPIO 24 (вывод 18) Белый кабель
LED GND (вывод 17F) GND (вывод 20) Черный кабель

Щелкните, чтобы просмотреть схему соответствия выводов Raspberry Pi 2 и 3 для справки.

После успешного подключения датчика BME280 к Raspberry Pi схема должна выглядеть так, как на изображении ниже.

Подключение устройства Pi к сети

Включите устройство Pi, используя кабель Micro USB и источник питания. Подключите Pi к проводной сети с помощью кабеля Ethernet или выполните инструкции от Raspberry Pi Foundation для подключения устройства Pi к беспроводной сети. После успешного подключения Pi к сети необходимо запомнить IP-адрес устройства Pi.

Примечание

Убедитесь, что плата Pi подключена к той же сети, что и компьютер. Например, если компьютер подключен к беспроводной сети, а плата Pi подключена к проводной сети, то IP-адрес может не отобразиться в выходных данных devdisco.

Запуск примера приложения на Pi

Клонирование примера приложения и установка пакетов необходимых компонентов

  1. Используйте один из следующих SSH-клиентов для подключения к Raspberry Pi с главного компьютера:

    Пользователи Windows

    a. Скачайте и установите PuTTY для Windows.

    b. Скопируйте IP-адрес устройства Pi и вставьте его в поле для имени узла (или для IP-адреса), а затем выберите тип подключения SSH.

    Пользователи MAC и Ubuntu

    Используйте SSH-клиент, встроенный в Ubuntu или macOS. Возможно, для подключения устройства Pi по протоколу SSH потребуется выполнить ssh [email protected]<ip address of pi>.

    Примечание

    Имя пользователя по умолчанию — pi, а пароль — raspberry.

  2. Установите Node.js и NPM на устройстве Pi.

    Сначала проверьте версии Node.js.

    node -v
    

    Если используется версия ниже 10.x или платформа Node.js не установлена на Pi, установите последнюю версию.

    curl -sSL https://deb.nodesource.com/setup_16.x | sudo -E bash
    sudo apt-get -y install nodejs
    
  3. Клонируйте пример приложения.

    git clone https://github.com/Azure-Samples/azure-iot-samples-node.git
    
  4. Установите все пакеты для примера, в том числе пакет SDK для устройств Azure IoT, библиотеку датчика BME280 и библиотеку Wiring Pi.

    cd azure-iot-samples-node/iot-hub/Tutorials/RaspberryPiApp
    npm install
    

    Примечание

    В зависимости от сетевого подключения процесс установки может занять несколько минут.

Настройка примера приложения

  1. Откройте файл конфигурации, выполнив следующую команду:

    nano config.json
    

    В этом файле можно настроить два элемента. Первый — interval. Он определяет время (в миллисекундах) между отправкой двух сообщений в облако. Второй — simulatedData. Он представляет логическое значение, определяющее, будут ли использоваться смоделированные данные датчика.

    Если у вас нет датчика, задайте для параметра simulatedData значение true, чтобы пример приложения создал и использовал смоделированные данные датчика.

    Примечание. В этом учебнике для адреса i2c используется значение 0x77 по умолчанию. В зависимости от конкретной конфигурации это может быть 0x76. Если вы получите ошибку i2c, попробуйте указать здесь значение 118 и проверьте работоспособность снова. Чтобы узнать, какой адрес используется конкретным датчиком, выполните команду sudo i2cdetect -y 1 в оболочке на raspberry pi

  2. Сохраните изменения и закройте окно, нажав клавиши CTRL+O > ВВОД > CTRL+X.

Запуск примера приложения

Запустите пример приложения, выполнив следующую команду:

sudo node index.js '<YOUR AZURE IOT HUB DEVICE CONNECTION STRING>'

Примечание

Обязательно скопируйте и вставьте строку подключения устройства, заключив ее в одинарные кавычки.

Должны отобразиться следующие результаты, содержащие данные датчика и сообщения, которые отправляются в Центр Интернета вещей.

Чтение сообщений, полученных концентратором

Одним из средств для мониторинга сообщений, получаемых центром Интернета вещей от вашего устройства, является расширение Azure IoT Tools для Visual Studio Code. Дополнительные сведения см. в статье Обмен сообщениями между устройством и Центром Интернета вещей с помощью расширения Azure IoT Tools для Visual Studio Code.

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

Очистка ресурсов

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

  1. В меню слева на портале Azure щелкните Все ресурсы и выберите созданный Центр Интернета вещей.
  2. В верхней части обзорной панели Центра Интернета вещей щелкните Удалить.
  3. Введите имя центра и нажмите кнопку Удалить еще раз, чтобы подтвердить удаление Центра Интернета вещей.

Дальнейшие действия

Вы запустили пример приложения для сбора данных от датчика и отправки этих данных в Центр Интернета вещей.

Чтобы продолжить знакомство с Центром Интернета вещей Azure и изучить расширенные сценарии Центра Интернета вещей, см. следующие ресурсы:

Raspberry Pi: описание, подключение, схема, характеристики

Содержание
  • Обзор
  • Операционные системы
  • Установка Raspbian
  • Работа с GPIO
  • Программирование GPIO
  • Часто Задаваемые вопросы FAQ

Обзор плат Raspberry Pi

Raspberry Pi – это миниатюрный одноплатный компьютер, который с лёгкостью поместится на ладони взрослого человека. Несмотря на свои скромные размеры, плата имеет высокую производительность, что позволяет ей выйти на один уровень со стационарными ПК. Изначально Raspberry Pi была разработана, как учебное пособие по информатике. Но сама идея оказалась настолько удачной, что за несколько лет мини-компьютер стал популярен в очень широких кругах. С течением времени Raspberry Pi пережила несколько модификаций, каждая из которых отличалась от предшественника каким-либо параметром. Такой подход позволил регулировать стоимость изделия в зависимости от потребностей пользователя, что также положительно сказалось на популярности устройства. Вся линейка Raspberry Pi применяет процессоры с АРМ-архитектурой, которая зарекомендовала себя с лучшей стороны. На рисунке №1 показан внешний вид одной из популярных плат Raspberry Pi В+.


Рисунок №1 – обзор составных элементов Raspberry Pi 

На сегодняшний день (период 2012-2019гг.) существует 11 разновидностей Raspberry Pi. Последние версии оснащены беспроводными WiFi и Bluetooth модулями, расширяющими границы применения мини-пк в области Ethernet-технологий. Ниже приведена сравнительная таблица, в которой отражены особенности каждой модификации с указанием некоторых технических данных.


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

На рисунке №2 изображена последняя на момент написания статьи модификация Raspberry Pi 4В, запущенная в продажу в июне 2019г. Она оснащена дополнительным графическим процессором VideoCore VI (OpenGL ES 3.x), а также аппаратным декодером 4Kp60 для воспроизведения HEVC видео. Два порта microHDMI с возможностью пропускать сигнал до 4К, позволяют подключить одновременно два монитора. 


Рисунок №2 – внешний вид Raspberry Pi 4В

Основной отличительной чертой Raspberry Pi от обычных компьютеров, является наличие программируемых портов ввода-вывода GPIO. С помощью них можно управлять различными устройствами и принимать телеметрию с различного рода датчиков.

Где приобрести?

Купить Raspberry Pi вы можете в нашем магазине с доставкой по всей России.


Операционные системы

Хоть Raspberry Pi внешне может напомнить нам Arduino, он всё-таки использует кардинально другой метод функционирования. Данная плата, как и обычный ПК, работает под управлением одной из специализированных операционных систем. В зависимости от области применения или личных симпатий, каждый может выбрать для себя свою. Ниже приведён перечень наиболее популярных «операционок» для Raspberry Pi с их кратким описанием.

Raspbian – данная операционная система в 2015 году была представлена как основная для Raspberry Pi. Она по максимуму оптимизирована для процессоров с АРМ-архитектурой и достаточно активно продолжает развиваться. Основой операционной системы является Debian GNU/Linux. Среда рабочего стола состоит из LXDE (среда для UNIX и других POSIX-совместимых систем типа Linux и BSD), а также менеджера окон Openbox (бесплатный менеджер для X Window System). В состав дистрибутива входят: программа компьютерной алгебры Mathematica; модифицированная версия Minecraft PI; урезанная версия Chrome.

Debian – операционная система с открытым исходным кодом. В состав Debian входит более 59000 пакетов уже скомпилированного ПО. Система использует ядро Linux или FreeBSD. В стандартный дистрибутив включены: среда рабочего стола GNOME с набором наиболее популярных программ, таких как Firefox, LibreOffice, Evolution, и прочий набор для работы с мультимедиа. Также есть возможность установки образов с используемыми средами рабочих столов KDE, Xfce, LXDE, MATE и Cinnamon.

Ubuntu – система основана на Debian GNU/Linux. По популярности Ubuntu занимает первое место среди дистрибутивов Linux, предназначенных для web-серверов. В состав дистрибутива входят: программа для просмотра Интернет; офисный пакет, программы для коммуникации и т.д.

Fedora – эта операционная система основана на дистрибутиве Linux от известной фирмы Red Hat. В состав дистрибутива входят LibreOffice, Mozilla Firefox, а также другое ПО, которое можно дополнительно установить через Цент Приложений GNOME.

Arch Linux – это свободно распространяемый дистрибутив GNU/Linux общего назначения. Особенностью данной системы является отсутствие графического установщика, что может изрядно потренировать навыки ярых исследователей Linux.

Gentoo Linux – один из популярных дистрибутивов GNU/Linux с гибкой технологией управления пакетами. В системе предусмотрена возможность максимальной оптимизации под конкретное аппаратное решение. Алгоритм управления пакетами даёт возможность легко реализовать как рабочую станцию, так и сервер.

RISC OS – операционная система специально разрабатывалась для процессоров с архитектурой АRМ. Особенности ядра RISC OS позволяют системе производить ускоренный запуск за счёт хранения данных в ПЗУ. Такой подход также помогает защитить данные при различного рода сбоях и влияния вредоносного ПО.

OpenELEC – это программный комплекс для организации домашнего кинотеатра под управлением GNU/Linux.

OSMC – ещё один комплекс для реализации домашнего кинотеатра.

В сети Интернет, помимо перечисленных операционных систем, можно найти ещё множество модификаций для самых различных предназначений. Но так как Raspbian является основной средой для Raspberry Pi, то в дальнейшем будем опираться именно на неё.


Установка Raspbian 

Для установки операционной системы необходимо подключить к плате Raspberry Pi минимальный набор периферии, а именно: монитор, клавиатуру и мышь. Далее, необходима SD-карта с записанным образом Raspbian. Именно с неё и будет производится установка.

Для того, чтобы записать образ на карту памяти, её необходимо вставить в компьютер и отформатировать в системе FAT32. Сделать это можно как стандартными средствами Windows, так и сторонними программами, например – SD Memory Card Formatter. После чего, скачиваем дистрибутив операционной системы с официального сайта Raspberry. Для неопытных пользователей, доступна упрощённая версия установщика NOOBS. По окончании загрузки, архив необходимо распаковать в корень карты памяти. На этом подготовительный этап окончен.

Вставляем карту памяти в плату Raspberry Pi (клавиатура, мышь и монитор уже подключены) и подаём питание через разъём micro-USB. Начинается установка Raspbian, которая длиться порядка 10 минут. В это время от пользователя практически ничего не требуется кроме самых простых и интуитивно понятных действий, таких как выбор языка, ввод пароля и т.п. На завершающем этапе появиться меню, в котором можно выбрать тип пользовательского интерфейса (консольный или графический). Выбираем графический и завершаем установку нажатием кнопки Finish. Система попросит перезагрузиться и как следствие запуститься уже в более привлекательном виде.


Работа с GPIO

Как уже говорилось ранее, основной отличительной черной Raspberry Pi от обычного ПК, является наличие на плате портов общего назначения GPIO (General-purpose input/output). Пользователю доступна возможность управления этими выводами, а это значит, что к Raspberry Pi можно подключать дисплеи, кнопки, датчики, реле и прочие электронные модули, которыми можно манипулировать на своё усмотрение.

Внешне GPIO выполнен в виде двухрядной штыревой колодки с шагом 2,54мм, которая расположена на краю платы. Ранние модели, такие как В и А содержат 26 выводов, а более современные – 40. На рисунке №3 показан внешний вид портов общего назначения для платы Raspberry Pi 3В+ с указанием нумерации выводов.


Рисунок №3 – выводы GPIO

Но для того, чтобы полноценно использовать GPIO, знать их нумерацию недостаточно. Необходимо точно понимать где расположен тот или иной вывод, как он называется и за что он отвечает. На рисунке №4 приведена полная распиновка разъёмов GPIO для различных модификаций Raspberry Pi.



Рисунок №4 – распиновка GPIO в платах Raspberry Pi 

Как видно из вышеприведенного рисунка, на колодке помимо самих GPIO выведены штырьки с напряжениями 3,3V, 5V, а также выводы GND. Некоторые GPIO имеют альтернативные функции, назначение которых указано в синих блоках. К тому же нельзя нарушать нагрузочные способности порта, чтобы не вывести Raspberry Pi из строя. Следует помнить, что GPIO работает с напряжением 3,3V и максимальным током нагрузки 50mA на один вывод. Это означает, что любое превышение указанных параметров негативно скажется на работоспособности платы, поэтому лучше использовать гальваническую развязку между GPIO и внешним исполнительным устройством. То же самое относится и ко входным цепям, к которым применяются резистивные делители и всевозможные преобразователи уровней. На рисунке №5 показан пример правильного и неправильного подключения базовых элементов.


Рисунок №5 – примеры правильного и неправильного подключения 

В левой части рисунка прямое подключение светодиода приведёт к превышению максимально допустимого тока 50mA. Это, в свою очередь, выведет GPIO10 из строя. В правой части рисунка добавлен ограничительный резистор, который будет удерживать ток в допустимых рамках. Что касается кнопки, то может возникнуть ситуация, когда GPIO10 ошибочно будет сконфигурирован на выход, и её нажатие приведёт к прямому соединению 3,3V и GND. При добавлении резисторов R2 и R3 все выводы будут гарантировано защищены от перегрузок. Исходя из вышеизложенного можно сделать вывод, что мелочится в элементах защиты не стоит, так как работоспособность Raspberry Pi гораздо важнее кучки дешёвых резисторов.


Программирование GPIO

Операционная система Raspbian предлагает пользователям удобный модуль для программного управления GPIO. Называется он RPi.GPIO и является стандартным приложением. Перед его применением, модуль рекомендуется обновить. Сделать это можно набрав в консоли следующие строки:

sudo apt-get update
sudo apt-get install python-rpi.gpio 

Чтобы иметь практическое представление о работе с GPIO, создадим небольшой проект, который заставит Raspberry Pi мигать светодиодом один раз в секунду, а при нажатии на кнопку увеличивать частоту мигания в 5 раз. Схема будущего проекта показана на рисунке №6.


Рисунок №6 – схема управления светодиодом 

За управление светодиодом будет отвечать GPIO4, а за чтение состояния кнопки GPIO17.

По классике, программы для Raspberry Pi пишутся на скриптовом языке программирования Python. Особенность его в том, что для запуска программы не требуется компилятор. Скрипт запускается и начинает работу сразу, но его необходимо сохранить в файл с последующей загрузкой в плату. Для этого открываем терминал и прописываем следующую строку:

nano /home/pi/led_key_test.py 

Тем самым мы создаём файл «led_key_test.py» в директории «/home/pi». Как следствие откроется редактор, в который необходимо написать нижеследующий код.

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Подключение библиотек для работы с GPIO и организации задержек по времени
import time
import RPi.GPIO as GPIO

# Определение выводов GPIO, к которым подключены светодиод и кнопка
LED = 4
KEY = 17

# Сброс портов (все выводы настраиваются на вход - INPUT)
GPIO.cleanup()
# Режим нумерации пинов - по названию (не по порядковому номеру на колодке)
GPIO.setmode(GPIO.BCM)
# Настройка пина LED на выход (OUTPUT)
GPIO.setup(LED, GPIO.OUT)
# Установка логического (0) на выводе LED
GPIO.output(LED, GPIO.LOW)
# Настройка пина KEY на вход (INPUT)
GPIO.setup(KEY, GPIO.IN)
# Вывод приветствия на экран
print 'Hello Raspberry Pi'

# Проверка на прерывание программы по нажатию (CTRL+C) на клавиатуре
try:
    # Бесконечный цикл
    while True:
        # Если кнопка нажата (на пине KEY логический 0)
        if GPIO.input(KEY) == False:
            # Выставляем задержку 0,1 сек. и выводим сообщение
            timeout = 0.1
            print 'Key is pressed.'
        else:
            # иначе задержка - 0,5 сек.
            timeout = 0.5
        # Включаем светодиод
        GPIO.output(LED, GPIO.HIGH)
        # Задержка
        time.sleep(timeout)
        # Гасим светодиод
        GPIO.output(LED, GPIO.LOW)
        time.sleep(timeout)
# Если CTRL+C была нажата – сбрасываем порт и завершаем выполнение программы
except KeyboardInterrupt:
    GPIO.cleanup()


Ещё одной немаловажной особенностью программы Python является строгое соблюдение отступов (табуляций) при написании программ. Учитывайте это правило при создании своего кода.

Итак, переходим к последнему этапу. Чтобы выйти из редактора жмём CTRL+X и сохраняем программу нажатием «у» + ENTER. Осталось только сделать скрипт исполняемым. Для этого вводим в терминале следующие строки:

chmod +x /home/pi/led_key_test.py
/home/pi/led_key_test.py

Видим на экране приветствие и мигающий 1 раз в секунду светодиод. Теперь проверяем работоспособность кнопки, и если всё сделано правильно, то при её нажатии частота мигания возрастёт и возвратиться к прежней при её отпускании.


Часто задаваемые вопросы (FAQ)

Вопрос: Какие виды внешних устройств можно подключить к Raspberry Pi по Bluetooth-каналу?
Ответ: В этом плане нет особых ограничений. Например, такие устройства, как колонки, мышь и клавиатура, с лёгкостью могут быть подключены к плате. Метод сопряжения зависит от операционной системы, которая установлена Raspberry Pi.

Вопрос: Какой на Raspberry Pi установлен root-пароль по умолчанию?
Ответ: Всё зависит от операционной системы. К примеру, для Raspbian, паролем будет «raspberry».

Вопрос: Можно ли применить Raspberry Pi для управления 3D-принтером?
Ответ: По большому счёту, применить Raspberry Pi для управления 3D-принтером возможно, но не слишком удобно. Дело в том, что стандартные операционные системы, предназначенные для Raspberry Pi, не способны обеспечить RealTime-режим, необходимый для чёткой работы принтера. Другой преградой является недостаточное количество GPIO для подключения всей необходимой периферии без применения специальных плат расширения.

Вопрос: Как можно установить Apache, PHP, MySQL на Raspberry Pi?
Ответ: Этом можно сделать стандартными Linux-командами:

  • sudo apt-get install apache2 php5 libapache2-mod-php5

  • sudo apt-get install php5-mysqlnd

  • sudo apt-get install phpMyAdmin


WebIOPi-0.7.1 и Raspberry Pi 3 – подключение датчика давления BMP180 – Мои статьи – Компьютер и интернет

Предупреждение. Не используйте Raspbian Stretch, на ней WebIOPi вообще не запускается. Найдите в Сети предыдущую версию. Все описанное относится к версии Raspbian Jessie.

Скачать Raspbian Jessie версия от 2016-05-27 архив ZIP 1.4 Gb

Raspbian Jessie и Stretch сейчас уже старые дистрибутивы, но вы их можете скачать по ссылке downloads.raspberrypi.org/raspbian/images/. Историю версий можно посмотреть по ссылке https://en.wikipedia.org/wiki/Raspberry_Pi_OS. При использовании старых дистрибутивов можно давать команду sudo apt update для обновления списка пакетов, но не давайте команду sudo apt upgrade для обновления пакетов – это может нарушить работу системы.

Как пропатчить и установить WebIOPi версии 0.7.1 описано в статье Монитор температуры и влажности на DHT11 / DHT22 и WebIOPi в Raspberry Pi. Здесь опишу, как на Raspberry Pi 3 подключить к уже имеющимся датчикам еще и датчик давления BMP180. Предусмотрено построение графика давления.
Подпаяйте выводы датчика к контактной гребенке, которая идет в комплекте, и установите датчик на макетную плату. Соберите схему: 

Датчик BMP180 использует интерфейс I2C, поэтому в raspi-config необходимо включить его. Запустите raspi-config командой sudo raspi-config и перейдите Interfacing Options, затем I2C. На вопрос – сделать интерфейс доступным, выберите Да (Yes)

Подтвердите выбор – Ok и выйдите из программы – Finish. Проверить работу датчика можно программой на Python’е.
Установите утилиту wget командой sudo apt-get install wget. Скачайте и распакуйте архив командами

wget http://osoyoo.com/driver/Adafruit_Python_BMP.zip
unzip Adafruit_Python_BMP.zip

Перейдите в каталог Adafruit_Python_BMP и установите библиотеку BMP Python Library командами

cd Adafruit_Python_BMP
sudo python setup.py install

Между параметрами команды должен быть один пробел. Теперь перейдите в каталог examples и запустите скрипт теста датчика

cd examples
sudo python simpletest.py

Вы должны увидеть примерно следующее:

Я подключаюсь к Raspberry Pi 3 удаленно по локальной сети через Wi-Fi с компьютера Linux Mint, используя протокол ssh. Из Windows можно подключаться по ssh, используя программу PuTTY. В Linux работать по ssh удобнее, можно использовать команду scp для копирования файлов с/на Raspberry Pi 3. Также использую файловый менеджер mc (Midnight Commander). Это аналог FAR или Total Commander в Windows.
На Raspberry Pi 3 отключены монитор, клавиатура и мышь. Подается только питание и подключены датчики. Блок питания должен обеспечивать ток 2-2,5 А.
После проверки датчика можно посмотреть BMP180 в WebIOPi. Для этого отредактируйте файл config командой

sudo nano /etc/webiopi/config

В разделе [DEVICES] раскомментируйте или добавьте строку bmp = BMP085

Перезапустите WebIOPi командой sudo /etc/init.d/webiopi restart.
В браузере на одном из компьютеров локальной сети попробуйте посмотреть монитор датчиков, указав IP адрес Raspberry Pi и путь к Devices Monitor примерно так:
192.168.1.28:8000/app/devices-monitor

Возможна такая ошибка — ваш браузер вместо открытия страницы начинает поиск по этому адресу и выводит кучу сообщений о невозможности найти такой текст. Значит вам надо изменить настройки браузера. В настройках браузера отмените поиск по адресной строке. В Mozilla Firefox в разделе Поиск снимите галку “Использовать адресную строку для поиска и навигации”. Теперь браузер должен открывать адрес, а не начинать поиск.
Значения температуры выводятся с точностью до десятых и даже сотых долей градуса, хотя погрешность показаний составляет полградуса в середине диапазона и до двух градусов по краям диапазона измерений. На картинке видно, что показания датчиков температуры в квартире находятся в пределах допуска.

Следующий шаг – построение графика атмосферного давления. По аналогии с другими графиками подготовьте файлы press.html, data_press.txt и отредактируйте index.html в каталоге /home/pi/webiopi-dht/examples/html. Отредактируйте script.py в каталоге /home/pi/webiopi-dht/examples/python.
Скачать файлы можно в каталоге файлов.

 

После редактирования файлов и перезапуска WebIOPi в браузере введите примерно следующее: 192.168.1.28:8000

Щелкните по картинке барометра и через пару секунд должен построиться график давления

Если при вводе цифрового адреса браузер вместо отображения страницы начинает поиск по этому адресу, то надо изменить настройки браузера.

Иногда при конфликте считывания показаний в файл данных записывается сбойное значение, например, давление 860 мм рт. столба. На графике это выглядит как пик или ломаная линия. Чтобы привести график к нормальному виду, удалите сбойное значение из файла data_press.txt. Это удобно делать во встроенном редакторе mcedit менеджера Midnight Commander. Запустите mc. Перейдите в каталог с файлом data_press.txt. Нажмите Ctrl+O, чтобы скрыть панели. Заметьте, что рабочий каталог остался тот же. Дайте команду mcedit data_press.txt. Нажмите Ctrl+End, чтобы перейти в конец файла. Нажимая Page Up, начинайте листать страницы файла, пока не найдете сбойное значение. Удалите эту строку и сохраните файл (F2). В окне подтверждения щелкните Сохранить. Внизу в строке меню щелкните Выход. Теперь график должен вернуться к нормальному виду.
Чтобы облегчить поиск сбойной строки, растяните график в месте сбоя. Определите момент сбоя, как показано на рисунке. Откройте файл данных в редакторе mcedit, найдите эту строку и удалите ее.

Встроенный редактор mcedit удобен и для удаления ненужных строк в файлах данных. Как описано выше, откройте в редакторе файл данных. Нажмите клавишу F3 (начало блока), потом стрелку вниз – выделится текущая строка. Нажимая клавишу Page Down, выделяйте строки целыми страницами. В нужном месте снова нажмите F3 (Конец блока). Теперь нажмите F8 и выделенный текст будет удален.

После редактирования файла html или txt не перезапускайте WebIOPi и не перезагружайте компьютер, просто обновите страницу в браузере.

Если вы пишите скрипт на Python’е сами, то обратите внимание на следующее замечание. Как известно, пробелы в Питоне определяют логику работы программы. Но на работу скрипта могут влиять и комментарии. Избегайте комментариев в конце строк после операторов. Также нежелательны закомментированные операторы. Лучше всего комментарии располагать кучно в начале программы. Не вставляйте пробелы “для красоты” в текст комментариев. Всё это может запутать Питон. В таких случаях скрипт не работает и в то же время никаких ошибок не выдается, так как явных багов в программе нет. После удаления комментариев в указанных местах скрипт начинает работать.

Иногда скрипт начинает работать ненадежно. Работает какое-то время, а потом останавливается. При написании скрипта для отступов используйте что-то одно — клавишу табуляции или только пробелы. Если вы будете использовать без разбора табуляцию и пробелы, то скрипт может перестать работать или его работа нарушится, так как разные редакторы используют под табуляцию разное число пробелов – 4, 8 и т. д. Это может запутать программу и скрипт не будет работать.

Использованные ресурсы
http://lock.3dn.ru/news/raspberry_pi_dlja_domashnej_avtomatizacii_grafiki_parametrov/2015-09-18-136
http://lock.3dn.ru/news/raspberry_pi_dlja_domashnej_avtomatizacii_podkljuchenie_datchikov_po_shine_i2c/2015-09-02-133
http://osoyoo.com/2016/09/30/using-raspberry-pi-to-drive-bmp180/
http://ksm.khnu.km.ua/blog/index/12

Raspberry Pi 3 – подключаем датчик DHT11 и LCD-дисплей | Мастер Кит DIY

Ставь лайк! Делись с друзьями, потому что дальше будет интереснее! Понравилась статья? Ставь палец вверх и будешь видеть наши новости чаще!

В прошлой публикации мы подключали, настраивали и учились программировать Raspberry Pi 3. В этом же материале мы рассмотрим, как подключить к Raspberry Pi 3 Model B широко распространенные датчик влажности и температуры DHT11 и LCD-дисплей размерности 1602 (шестнадцать символов в строке, две строки) на базе контроллера HD44780. Большинство выпускаемых различными производителями дисплеев не имеют поддержки кириллицы, но для отображения значений температуры и влажности такой недостаток не имеет принципиального значения.

Мы будем использовать дисплей с очень удобным переходником на микросхеме PCF8574T, который позволяет управлять дисплеем по протоколу I2C всего по двум проводам, не считая питания +5В и земли. При обычных способах подключения дисплея к микроконтроллеру требуется 8 или 12 линий. Подключение по I2C существенно экономит вводы-выводы общего назначения (GPIO) Raspberry, которые могут понадобиться для подключения других устройств, и никак не мешает наблюдать относительно медленно меняющиеся параметры.

Датчик DHT11 требует для подключения всего один провод линии данных, также не считая питания и земли. Его следует питать напряжением +3,3В. DHT11 имеет собственный протокол обмена данными 1-Wire.

Разберем пошагово установку программного обеспечения и подключение внешних устройств. Мы использовали операционную систему Raspbian Jessie With Pixel, скачанную с сайта raspberrypi.org и плату Raspberry Pi 3 Model B.

Шаг первый.

Подготовим Raspberry к установке необходимого программного обеспечения. Если у вас свежая версия Raspbian, то, скорее всего, необходимые модули уже установлены. Но, на всякий случай, лучше застраховаться.

Откройте терминал и наберите следующие команды:

sudo apt-get update <Enter>

sudo apt-get upgrade <Enter>

Первая команда синхронизирует и обновит индексные файлы установленных в системе пакетов, вторая – обновит все установленное на данный момент программное обеспечение. Это занимает некоторое время.

Шаг второй.

Разрешим, если это еще не сделано, использование в системе протоколов I2C и 1-Wire. Для этого введем команду

sudo raspi-config

в открывшемся меню с помощью стрелок вверх/вниз и клавиши Enter зайдем в Interfacing Options, последовательно откроем соответствующие пункты меня и разрешим (выбрав “Y” при запросе) использование I2C и 1-Wire. Клавишей Tab установим маркер на <Back>, нажатием на Enter выйдем в меню верхнего уровня, выберем <Finis>, нажмем Enter. Для выхода на предыдущий уровень меню также можно использовать клавишу <Esc>. После выхода в терминал необходимо перезагрузить систему. Это можно сделать, введя команду

sudo reboot

После перезагрузки необходимо изменить файл конфигурации модулей так, чтобы необходимые модули попали в автозагрузку. Для этого необходимо открыть в редакторе nano файл modules:

sudo nano /etc/modules

Добавьте в открывшийся для редактирования файл к имеющимся строкам еще две строки:

i2c-dev

i2c-bcm2708

Если какая-либо из этих строк уже имеется в файле, ее добавлять не надо.

Выйдем из редактора, нажав <Ctrl-X> и ответив “Y” на вопрос о сохранении файла.

Шаг третий.

Теперь необходимо установить библиотеки smbus и I2C для Python. Для этого последовательно введите в терминале команды:

sudo apt-get update    (еще раз обновим индексные файлы)

sudo apt-get install –y python-smbus i2c-tools    (собственно установка библиотеки)

sudo reboot    (перезагрузка)

Проверим, установилась ли библиотека? Наберем в терминале

lsmod | grep i2c <Enter>

Если в появившемся отклике системы есть строка i2c_bcm2708, то это значит, что библиотека установлена успешно.

Шаг четвертый.

Настало время подключить датчики к выводам GPIO Raspberry. Повторим схему разъема GPIO для наглядности. Перед подключением внешних устройств обязательно отключите Raspberry от питания!

Подключим LCD-экран и датчик DHT11 в соответствии со следующей таблицей:

Контакты I2C LCDКонтакты GPIO RaspberryОписаниеGND6ЗемляVCC2+5ВSDA3GPIO 2 (I2C1_SDA)SCL5GPIO 3 (I2C1_SCL)Контакты DHT11Контакты GPIO RaspberryОписаниеGND9ЗемляDATA8GPIO 14VCC1+3,3 В

Шаг пятый.

Включим питание Raspberry и проверим, обнаруживает ли операционная система устройство, подключенное по шине I2С? Введем в терминале команду (она входит в установленную на третьем шаге утилиту i2c-tools):

sudo i2cdetect 1

В ответ система выдаст такую информацию:

На пересечении строки, помеченной цифрой 20, и столбца 7 мы видим адрес единственного подключенного устройства – 27 (в системе счисления по основанию 16). Теоретически, адрес может быть и другим. Запомним его, он нам понадобится в дальнейшем. Если на одного адреса не отображается, это означает, что либо устройство не подключено, либо оно подключено неверно, либо необходимое программное обеспечение не установлено.

Шаг шестой.

Все предварительные действия закончены. На этом  шаге мы настроим и запустим программу на языке Python, которая отобразит температуру и влажность, полученные с датчика DHT11 на дисплее. Загрузим файлы из файлового хранилища: dht11.py и raspi-dht11-i2clcd.py. Первый из них является драйвером датчика DHT11. Он используется в  основной программе, которая находится во втором файле.

Введем в терминале

sudo wget https://masterkit.ru/zip/dht11.py ,

затем

sudo wget https://masterkit.ru/zip/raspi-dht11-i2clcd.py

Команды можно объединить в одну (имена файлов указываются через пробел):

sudo wget https://masterkit.ru/zip/dht11.py https://masterkit.ru/zip/raspi-dht11-i2clcd.py

Файлы будут загружены в рабочий каталог /home/pi.

После загрузки необходимо отредактировать адрес LCD-дисплея на шине I2C, который мы наши пятом шаге, в нашем случае он равен 27. Занесем его в основной файл программы. Откроем файл raspi-dht11-i2clcd.py на редактирование в редакторе nano:

sudo nano /home/pi/ raspi-dht11-i2clcd.py

По умолчанию адрес 27 задан в переменной I2C_ADDR = 0x27. Если адрес на пятом шаге не равен 27, следует подставить его значение.

Сохраняем изменения Ctrl-O, закрываем редактор Ctrl-X.

Изменить файл можно и более привычным (для пользователей Windows) способом в редакторе среды программирования Python двойным кликом на файле основной программы:

Редактируем и сохраняем файл.

Запустить программу можно из терминала, из среды программирования, а также автозагрузкой при включении питания. Последний способ нужен, если мы планируем использовать Raspberry автономно: без подключения мыши, клавиатуры или удаленного управления.

Запуск из терминала:

sudo python raspi-dht11-i2clcd.py

Запуск из редактора среды программирования Python (см.рис 9):

Run->Run Module или F5.

Автозапуск:

Введите в терминале команду, открывающую на редактирование новый файл dht11-lcd.desktop:

         sudo nano /etc/xdg/autostart/dht11-lcd.desktop

В открывшемся окне редактора nano введите 8 строк:

         [Desktop Entry]

         Version=1.0

         Encoding=UTF-8

         Name=dht11-lcd

         Comment=

         Exec=sudo python /home/pi/raspi-dht11-i2clcd.py

         Terminal=false

         Type=Application

и сохраните.

Теперь при включении питания будет автоматически запускаться интерпретатор Python с файлом raspi-dht11-i2clcd.py, что приведет к исполнению нашей программы.

Делись с друзьями, подписывайся на наш канал Мастер Кит DIY и жми лайк, чтобы не пропустить новые публикации.

Измерение температуры с помощью AD7416ARZ и Raspberry Pi » NGIN.pro

Измерение температуры с помощью AD7416ARZ и Raspberry Pi
 
AD7416ARZ это датчик температуры 10-бит с четырьмя каналами аналогово – цифровых преобразователей. Этот температурный датчик высокой точности стал отраслевым стандартом с точки зрения форм-фактора, и интеллекта, обеспечивая калибрование линеаризованных сигналов датчиков в цифровом формате, I2C.В этом учебнике демонстрируется подключение сенсорного модуля AD7416ARZ к Raspberry Pi и его программирование с использованием языка Python. Для чтения значения температуры, мы использовали Raspberry Pi с адаптером I2C. I2C делает подключение к модулю датчика легким и более надежным.

Шаг 1: Необходимое оборудование

Материалы, которые нам нужны для достижения нашей цели включает следующие аппаратные компоненты:

1. AD7416ARZ датчик температуры

2. Raspberry Pi

3. I2C кабель
 
4. I2C Шилд для Raspberry Pi
 
5. Кабель Ethernet

Шаг 2: Схема соединения
 
Обеспечение правильного соединения является основной необходимостью при работе на любой системе для желаемых результатов. Таким образом, требуемые соединения являются следующими:

AD7416ARZ будет работать на I2C. Вот пример схемы.

Все, что вам нужно, это четыре провода! Только четыре соединения необходимы Vcc, Gnd, SCL и SDA контакты, и они соединены с помощью кабеля I2C.

Эти соединения показано в изображениях выше.

Шаг 3: Код программы для измерения температуры:
 
Преимущество использования Raspberry Pi в том, что дает вам гибкость языка программирования, на котором вы хотите программировать плату для того, чтобы взаимодействовать с датчиками. Код Python для AD7416ARZ можно загрузить с GitHub.

А также для удобства пользователей, мы объясняем код здесь также:

В качестве первого шага необходимо загрузить библиотеку модулей SMBus в случае использования Python, так как эта библиотека поддерживает функции, используемые в коде. Таким образом, чтобы загрузить библиотеку вы можете посетить по следующей ссылке:

https://pypi.python.org/pypi/smbus-cffi/0.5.1

Вы можете скопировать рабочий код Python для этого датчика отсюда также:

import smbus

import time

# Get I2C bus

bus = smbus.SMBus(1)

# AD7416ARZ address, 0x48(72)

# Read data back fom 0x00(00), 2 bytes

# temp MSB, temp LSB

data = bus.read_i2c_block_data(0x48, 0x00, 2)

# Convert the data to 10-bits

temp = ((data[0] * 256) + (data[1] & 0xC0)) / 64

if temp > 511 :

temp -= 1024

cTemp = temp * 0.25

fTemp = cTemp * 1.8 + 32

# Output data to screen

print "Temperature in Celsius : %.2f C" %cTemp

print "Temperature in Fahrenheit : %.2f F" %fTemp

 Часть кода, упомянутого ниже включает в себя библиотеки, необходимые для правильного выполнения кода Python.

import smbus

import time

Код может быть выполнен путем ввода указанной ниже команды в командной строке.
$> python AD7416ARZ.py
Выходной сигнал датчика также показано на рисунке выше для справки пользователя.

Шаг 4: Область применения
 
AD7416ARZ выполнять операцию сбора данных с контролем температуры окружающей среды. Он также может быть использован в промышленных системах управления технологическими процессами, автомобильной зарядки батареи, приложений и персональных компьютеров.

Перевод статьи “Measurement of Temperature Using AD7416ARZ and Raspberry Pi”


10+ Руководства по работе с датчиками Raspberry Pi

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

На этой странице вы найдете широкий спектр руководств по некоторым из самых популярных датчиков, которые можно подключить к Raspberry Pi. Каждый датчик обычно подключается по-разному, поэтому важно дважды проверить правильность построения схемы.

Теперь каждый датчик обычно включает в себя немного кода Python, поэтому вы можете извлечь из него правильные данные.Если вы хотите пропустить часть кодирования, то что-то вроде MyDevices Cayenne – отличный способ создавать интеллектуальные приложения с помощью простого интерфейса перетаскивания.

Существует всего тонна датчиков Raspberry Pi, которые вы можете подключить к своему Pi. Сюда входят такие датчики, как фоторезистор, температура, влажность и многое другое. В ближайшем будущем у меня запланировано еще несколько уроков по датчикам.

С помощью датчиков можно создавать широкий спектр проектов Raspberry Pi. Он включает в себя такие проекты, как метеостанция, домашняя автоматизация, регистрация данных, обнаружение движения и многое другое.Теперь, если вам не очень нравятся учебные пособия по датчикам, у меня также есть постоянно растущий диапазон проектов и учебных пособий, которые вы можете делать с Pi. Если вам интересно, то обязательно ознакомьтесь с ними.

Защита вашего Pi имеет решающее значение, если вы обнаружите, что он находится в области, где он может быть поврежден. Вы также можете просто захотеть, чтобы он хорошо выглядел. Это ситуации, когда пригодится прочный корпус Raspberry Pi. Существует также широкий спектр других аксессуаров Pi, которые могут вас заинтересовать, чтобы добавить немного больше функциональности к вашему Pi.

Если вы новичок в Pi, возможно, вам будет интересно взглянуть на некоторые из руководств по началу работы с Raspberry Pi. Они познакомят вас с основами настройки и правильной работы Pi. Он будет включать такие темы, как настройка чего-то вроде Raspberry Pi Cayenne для датчиков Pi.

Если вы хотите быть в курсе всех моих последних руководств, проектов, руководств, обзоров и многого другого, не забудьте подписаться на меня в любой из основных социальных сетей.Вы можете найти ссылки на все наиболее важные социальные сети прямо внизу, если вы используете мобильный телефон, или на боковой панели, если вы находитесь на компьютере.

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

Использование датчиков с Raspberry Pi

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

Одной из мощных функций Raspberry Pi является ряд контактов GPIO (ввода / вывода общего назначения) вдоль верхнего края платы. Эти контакты представляют собой физический интерфейс между Pi и внешним миром. На самом простом уровне вы можете думать о них как о переключателях, которые вы можете включать или выключать (ввод) или которые Pi может включать или выключать (вывод). Кнопка – это входной компонент, который вы можете добавить к контактам Raspberry Pi GPIO. Он замкнет цепь при нажатии кнопки.Это означает, что ток не будет течь по кнопке, пока она не будет нажата. Когда он будет выпущен, цепь будет «разорвана». Датчики – это еще один тип входа, который можно подключить к Raspberry Pi. Они могут собирать данные, например, об условиях освещения или температуры, но в основном они работают аналогично кнопке: они предоставляют различные входные данные для Pi в зависимости от того, что происходит снаружи. Другие датчики могут быть добавлены к контактам либо в виде отдельных компонентов, подключенных к контактам GPIO, либо через дополнительную плату, называемую HAT – это название означает «Оборудование, добавленное сверху».Вот еще несколько популярных датчиков:

Датчики отдельных компонентов

  • Пассивный инфракрасный датчик или PIR обнаруживает движение. Вы, наверное, видели это раньше. Чаще всего их можно встретить в углах помещений охранной сигнализации. Каждый объект, температура которого выше абсолютного нуля, излучает инфракрасное (ИК) излучение. Датчик измеряет ИК-сигнатуру комнаты, в которой он находится, а затем отслеживает любые изменения. Любой объект, движущийся по комнате, нарушит ИК-сигнатуру и вызовет изменение, которое будет замечено модулем ИК-излучения.
  • A Светозависимый резистор или фотоэлемент – это компонент, сопротивление которого будет изменяться в зависимости от интенсивности падающего на него света. Поэтому его можно использовать для обнаружения изменений в освещении. Они обычно используются с уличным освещением, чтобы включить фонари, когда стемнеет ночью, и выключить, когда становится светло утром.
  • Датчик качества воздуха используется для определения качества воздуха путем обнаружения загрязняющих газов.Когда воздух попадает в датчик, он получает питание от небольшого нагревателя, который позволяет измерять его электрическое сопротивление. Это достигается за счет пропускания электричества низкого уровня через небольшой зазор с воздухом под напряжением. Чем более загрязнен воздух, тем меньше у него сопротивления и тем лучше он будет проводить электричество. Таким образом, выходной сигнал датчика представляет собой аналоговое напряжение, которое повышается и понижается в зависимости от степени загрязнения воздуха. Чем больше загрязняющих веществ, тем ниже разность потенциалов (напряжение) на датчике.

Sense Шляпа

Плата Sense HAT для Raspberry Pi способна определять широкий спектр условий и обеспечивать вывод через встроенную светодиодную матрицу. Он был разработан специально для Raspberry Pi в рамках образовательной программы Astro Pi, и на борту Международной космической станции есть два, которые могут быть запрограммированы победителями конкурса из разных стран-членов ЕКА.Sense HAT имеет следующие датчики:
  • Гироскоп измеряет ориентацию объекта. Возможно, вы видели большую настольную игрушку. Он имеет три отдельные оси, указывающие в разных направлениях, поэтому он может обнаруживать поворот во всех трех направлениях. На лодке эти направления называются тангаж (передняя часть лодки качается вверх и вниз), рыскание (передняя часть лодки качается влево и вправо) и крен (лодка катится так, что правая сторона выше или ниже левого).
  • Акселерометр измеряет увеличение скорости объекта (ускорение). В состоянии покоя он будет измерять направление и силу тяжести, но в движении он измеряет направление и силу действующего на него ускорения – как если бы вы вращали его вокруг головы на веревке. Поскольку акселерометры могут определять направление силы тяжести, их часто можно найти в устройствах, которым необходимо знать, когда они направлены вниз, например в мобильных телефонах или планшетах. Когда вы поворачиваете экран в сторону, акселерометр внутри определяет, что направление силы тяжести изменилось, и, следовательно, меняет ориентацию экрана.
  • Магнитометр используется для измерения силы и направления магнитного поля. Чаще всего их используют для измерения магнитного поля Земли, чтобы определить направление на север. Если в вашем телефоне или планшете есть компас, он, вероятно, будет использовать магнитометр, чтобы найти север. Они также используются для обнаружения возмущений в магнитном поле Земли, вызванных чем-либо магнитным или металлическим; Сканеры в аэропортах используют их, например, для обнаружения металла в скрытом оружии.
  • Датчик температуры используется для измерения тепла и холода. Это точно так же, как термометр, который вы кладете в рот, чтобы измерить вашу собственную температуру, за исключением того, что он электронный, встроенный в Sense HAT, и отображает температуру в виде числа в градусах Цельсия.
  • Датчик влажности измеряет количество водяного пара в воздухе. Есть несколько способов ее измерения, но наиболее распространенным является относительная влажность. Одно из свойств воздуха состоит в том, что чем он горячее, тем больше водяного пара может находиться в нем во взвешенном состоянии.Таким образом, относительная влажность – это соотношение, обычно в процентах, между фактическим количеством взвешенного водяного пара и максимальным количеством, которое может быть взвешено при текущей температуре. Если имеется 100% относительная влажность, это означает, что воздух полностью насыщен водяным паром и больше не может удерживаться.
  • Датчик давления (иногда называемый барометром) измеряет силу, прилагаемую крошечными молекулами воздуха, которым мы дышим. Между молекулами воздуха много пустого пространства, поэтому их можно сжать, чтобы они поместились в меньшее пространство; чем больше воздуха вжимается в пространство, и чем меньше пространство, тем выше давление.Вот что происходит, когда вы надуваете воздушный шар. Воздух внутри воздушного шара слегка сжимается, поэтому молекулы воздуха выталкиваются наружу на эластичную кожу; Вот почему он остается накачанным и кажется твердым, когда вы его сжимаете. Точно так же, если вы всасываете весь воздух из пластиковой бутылки, вы уменьшаете давление внутри нее, и поэтому более высокое давление снаружи раздавливает бутылку.

Шляпа Explorer

Дополнительная плата Explorer HAT для Raspberry Pi имеет встроенные полезные компоненты ввода и вывода, а также некоторые полезные датчики.В частности, у него восемь емкостных сенсорных панелей.
  • Емкостной датчик касания обнаруживает, когда металлические контактные площадки соединяются с человеком или предметом, несущим небольшой электрический заряд. Прикосновение к одной из восьми емкостных сенсорных панелей на Explorer HAT запускает событие, как нажатие переключателя или кнопки. Все проводящие предметы, например растения, фрукты и графитовые карандаши, можно прикрепить к этим датчикам и превратить в кнопки.
После ознакомления с ассортиментом датчиков, упомянутых в этой статье, какие у вас есть идеи относительно того, что вы могли бы сделать с ними в своем классе?

Как добавить датчики света и температуры в Raspberry Pi | Чарли Ли | Nerd For Tech

Недавно я работал над небольшим аппаратным проектом с Raspberry Pi.Я хочу использовать Raspberry Pi 3 B + в качестве домашнего монитора. Он должен уметь определять яркость и включать свет, когда темнеет; он также должен напоминать мне закрывать окно, когда температура в комнате становится слишком низкой. Следовательно, требуется датчик освещенности и датчик температуры.

Как правило, есть два способа добавить датчики: приобрести готовые сенсорные модули или собрать собственные датчики из деталей.

Готовые датчики очень просты в использовании и предпочтительнее, если вы просто хотите добавить датчики, не слишком задумываясь.Но в моем случае я бы предпочел построить свои собственные датчики из деталей, так как я мог бы узнать кое-что об электронике и получить некоторый опыт, который пригодится моим будущим проектам. Поэтому я решил создать свои собственные датчики.

Датчики на самом деле очень простые. Во-первых, нам нужен компонент для вывода напряжения в зависимости от окружающей среды. Это аналоговое напряжение, поэтому нам нужен АЦП для преобразования аналогового сигнала в цифровой. Вот и все.

Датчик освещенности

В качестве датчика освещенности я выбрал фотоэлемент Adafruit 161.Это довольно дешевый (0,95 доллара) фоторезистор, и Adafruit предоставила отличное руководство. Также есть отличная статья о том, как использовать его с Raspberry Pi.

Яркость (освещенность) измеряется в люксах. В Википедии есть отличная таблица, объясняющая освещенность и люкс. Судя по таблице, мой вариант использования находится в диапазоне от 20 до 100 люкс, поэтому фотоэлемент 161 вполне подойдет. Кроме того, поскольку меня не волнует точное значение освещенности и нет возможности его измерить, мне не нужен датчик для получения точного значения.

Интуитивное объяснение для lux

Для фотоэлемента нужен понижающий резистор . Типичное подключение выглядит следующим образом:

В таблице данных также показано, как рассчитать понижающий резистор. В моем случае окружающий свет будет составлять 10 ~ 100 люкс, где сопротивление фотоэлемента находится в пределах от 10 кОм до 1,5 кОм, поэтому понижающий резистор 10 кОм вполне подойдет.

Сопротивление фотоэлемента в зависимости от света с источником питания 5 В и понижающим резистором 10 кОм. Источник: техническое описание

Датчик температуры

В качестве датчика температуры я выбрал LMT86 от Texas Instrument.Этот датчик тоже дешевый (менее 1 доллара).

Я не выбрал знаменитый LM35, потому что не знал, когда купил запчасти. Но из таблицы данных LMT86 кажется полностью подходящим для моих нужд:

  • Быстрая тепловая постоянная времени, 10 с типично
  • Очень точный: типичный ± 0,4 ℃
  • Широкий температурный диапазон: от -50 ℃ до 150 ℃

Из рисунка 9 в таблице данных, мы видим, что выходное напряжение почти не зависит от напряжения питания, если оно больше 2.7V. Поскольку Raspberry Pi обеспечивает 3,3 В, это означает, что нам не нужно учитывать разность напряжений, и мы можем получить температуру по постоянной формуле.

Отклик LMT86 «почти» линейный, он имеет слегка зонтичную параболическую форму. В таблице данных представлена ​​точная справочная таблица в таблице 3. Она также предоставляет менее точное параболическое уравнение

Однако это уравнение требует операции извлечения квадратного корня. Хотя для моего приложения это нормально, поскольку Raspberry Pi питается от USB, это может быть проблематично на устройствах с низким энергопотреблением.Альтернативная формула соответствует линейной регрессии, которая потребляет меньше энергии, что может быть полезно в некоторых случаях.

Поскольку я использую Raspberry Pi, использование таблицы поиска не проблема, поэтому я выбрал наиболее точный метод таблицы. Я создал пакет lmt8x (GitHub), чтобы упростить поиск. Вы можете установить этот пакет на Raspberry Pi, используя:

 pip install lmt8x 

В таблице данных есть кое-что важное, что нужно знать.

Во-первых, конфигурации выводов различаются для разных корпусов.В корпусах LP / LPM (LMT86LP, LMT86LPM) центральный вывод – ВЫХОД, а в корпусе LPG (LMT86LPG) левый вывод – ВЫХОД. Будьте осторожны при подключении – неправильное подключение может повредить ваши датчики!

LPG, LP, LPM имеют разные конфигурации выводов.

Еще одна вещь – «тепловая постоянная времени». Это показатель того, насколько быстро датчики температуры могут реагировать на истинную температуру. Хотя LMT86 имеет быструю тепловую постоянную времени, ему все же требуется около 40 с, прежде чем он сможет отреагировать с правильной температурой.Помните об этом во время экспериментов – не используйте данные сразу после загрузки системы!

Серия LMT8x имеет быструю тепловую постоянную времени, но все же требуется около 40 с для возврата правильной температуры.

Поскольку и 161, и LMT86 имеют аналоговый выход, а Raspberry PI GPIO может обрабатывать только цифровой ввод, нам нужен АЦП (аналого-цифровой преобразователь) для преобразования сигналов в цифровые данные. Обычно используется АЦП MCP3008 (таблица данных), который имеет 10-битное разрешение (диапазон вывода от 0 до 1024) и 8 входных каналов.

MCP3008 поддерживает два режима: несимметричный и дифференциальный (см. Таблицу 5–2 в таблице данных). В этом приложении мне нужно только считывать данные с датчиков, поэтому несимметричный режим достаточно хорош.

В таблице данных также объясняется, как читать данные из MCP3008 в разделе «5.0 Последовательная связь». Но, к счастью, Adafruit предоставил драйвер adafruit-circuitpython-mcp3xxx , поэтому нам не нужно следить за последовательностью часов.

Adafruit также имеет отличное руководство вместе с кодом Python о том, как использовать MCP3008, поэтому я опущу здесь детали, а только покажу некоторые диаграммы для справки.

Конфигурация контактов MCP3008 Raspberry Pi 3 B + Определение GPIO

Таким образом, соединение будет (от MCP3008 к Raspberry Pi):

  • VDD → 3V3 (контакт 1)
  • VREF → 3V3 (контакт 1)
  • AGND → GND (контакт 9 , 25, 39)
  • CLK → SCLK (вывод 23)
  • DOUT → MISO (вывод 21)
  • DIN → MOSI (вывод 19)
  • CS / SHDN → любой вывод GPIO
  • DGND → GND (вывод 9, 25, 39)

Теперь нам нужно только подключить фотоэлемент и датчик температуры к контактам CH0, Ch2 MCP3008, а затем подключить MCP3008 к Raspberry Pi.Вот простая схема:

Схема использования фотоэлемента и датчиков температуры с MCP3008

Здесь я подключил вывод CS к выводу GPIO22 на Raspberry Pi. Поэтому я должен использовать в коде плату , D22 . Кроме того, Raspberry Pi имеет много резервных контактов (например, контакты 6, 9, 14, 20, 25… все GND), вы можете использовать любой удобный контакт.

Соединения макетной платы с Raspberry Pi

В моем собственном эксперименте я добавил еще один датчик температуры LMT87LPG, чтобы сравнить результаты двух разных моделей.Таким образом, фотоэлемент подключен к каналу CH0, а LMT87 – к каналу 2, а LMT86 – к каналу 3.

Фактические подключения. Обратите внимание, я также добавил еще одну температуру LMT87 (в столбцах 3, 4, 5).

После тщательного изучения соединений я создал следующий код для тестирования датчиков (я использовал Python 3):

 import os 
import math
import time
import busio
import digitalio
import board
import adafruit_mcp3xxx.mcp3008 as MCP
из adafruit_mcp3xxx.analog_in import AnalogIn
from lmt8x import lmt87_v2t, lmt86_v2t # создать шину spi
spi = busio.SPI (clock = board.SCK, MISO = board.MISO, MOSI = board.MOSI) # создать cs (выбор микросхемы)
cs = digitalio.DigitalInOut (board.D22) # создать объект mcp
mcp = MCP.MCP3008 (spi, cs) # создать канал аналогового ввода на выводе 0
chan0 = AnalogIn (mcp, MCP.P0) # создать канал аналогового ввода на выводе 0
chan1 = AnalogIn (mcp, MCP.P1)
time.sleep ( 0,01)
chan1 = AnalogIn (mcp, MCP.P1) chan2 = AnalogIn (mcp, MCP.P2)
time.sleep (0,01)
chan2 = AnalogIn (mcp, MCP.P2) while True:
print ('light: % d,%.3fV \ t \ tlmt87:% d,% .3fC \ t \ tlmt86:% d,% .3fC '% (
chan0.value, chan0.voltage,
chan1.value, lmt87_v2t (chan1.voltage * 1000),
chan2.value, lmt86_v2t (chan2.voltage * 1000),
))
time.sleep (1)

Установите зависимости:

 pip install adafruit-blinka adafruit-circuitpython-mcp3xxx lmt8x 

Запустите этот сценарий: python mcp3008-test.py

Мы видим, что результаты LMT87 и LMT86 действительно имеют небольшое расхождение (примерно 0.3 ℃), но это приемлемо, и я планирую использовать среднее из двух. Еще попробовал прикрыть датчик освещенности и пальцами пощупать датчики температуры. Очевидные изменения напряжения / температуры

можно увидеть по результату (красные прямоугольники на следующем снимке экрана), что указывает на то, что датчики работают правильно.

Я купил перфорированную плату, чтобы создать полезный продукт за пределами макета. Я изо всех сил пытался поместить печатную плату в корпус Raspberry Pi.Перфорированная плата не идеального размера, поэтому я не мог просто использовать отверстия для винтов на Raspberry Pi, чтобы исправить печатную плату. Самый простой способ – припаять 40-контактный разъем к печатной плате и просто подключить его к контактам GPIO. Не очень стабильно, но достаточно хорошо. Но если я сделаю это, печатная плата окажется слишком далеко от края корпуса, и будет невозможно разместить датчики вне корпуса, чтобы получить правильные числа!

В итоге я пришел к решению сделать отдельную плату АЦП и плату датчика – плата АЦП имеет 40-контактный разъем, который будет вставлен в контакты GPIO и останется в корпусе, в то время как плата датчика имеет все три датчика и будет находиться вне корпуса и подключаться к плате АЦП с помощью перемычек.Не идеальное решение, но, по крайней мере, у меня оно сработало.

Итак, я создал новый дизайн платы АЦП. Печатная плата выглядит так: Дизайн платы

для моей платы АЦП. Желтые следы находятся в верхнем слое, а оранжевые следы – в нижнем слое.

Некоторые соображения:

  • 40-контактный разъем (вверху) припаян к нижнему слою, поэтому все дорожки должны подключаться с верхнего слоя. Точно так же JP1 ~ JP5 и микросхема MCP3008 припаяны к верхнему слою, поэтому следы должны соединяться с нижнего слоя.
  • Я использовал GPIO0 (вывод 27) вместо GPIO22 в схеме, только чтобы упростить маршрутизацию. Код необходимо соответственно изменить: cs = digitalio.DigitalInOUt (board.D0)
  • MCP3008 поддерживает 8 каналов, но используются только 5 каналов. Не хватило места для 8 3-контактных заголовков.
  • Я поставил по одному VCC и одному GND на каждый разъем, что значительно усложнило пайку. В некоторых продуктах используются общие выводы VCC и GND. Позже я почувствовал, что, возможно, нет необходимости иметь несколько VCC и GND, а общий VCC будет намного проще.

Сенсорная плата довольно проста, и я не создавал дизайн печатной платы.

Окончательный продукт выглядит так (ветка Reddit):

Крепление платы АЦП на Raspberry Pi (слева) и платы датчика (справа). Не обращайте внимания на конденсаторы – они использовались неправильно. См. Подробности в разделе «Возможные улучшения».

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

Конденсатор байпаса для MCP3008

В техническом описании MCP3008, раздел 6.4 «Рекомендации по компоновке»:

С этим устройством всегда следует использовать байпасный конденсатор, который следует размещать как можно ближе к контакту устройства. Рекомендуется емкость байпасного конденсатора 1 мкФ.

Похоже, мне нужны два конденсатора по 1 мкФ для выводов VCC и VREF MCP3008.

Фильтр Конденсатор для датчиков температуры

Лист данных LMT86 9.В разделе 2.1.1 «Требования к конструкции» упоминается, что

Когда АЦП заряжает колпачок выборки, он требует мгновенного заряда с выхода аналогового источника, такого как датчик температуры LMT86 и многие операционные усилители. Это требование легко удовлетворяется добавлением конденсатора C_FILTER.

А вот цифра из таблицы:

Итак, я просмотрел таблицу MCP3008 и нашел следующие данные.

  • Сопротивление переключателя: 1000 Ом (стр.4)
  • Конденсатор образца: 20 пФ (стр.4)
  • Разрешение: 10 бит
  • Время выборки: 1/100000 Гц ( adafruit_blinka источник драйвера)

На основе формулы, найденной на этой странице , и возьмем R_out = 1 кОм , у нас будет (R_on + R_out) * C_sample = (1000 + 1000) * 20e-12 = 4e-8 и 1 / разрешение * T_sample = 0.1 * (1/100000) = 1e-6 , формула верна. Так что, вероятно, мне не нужно использовать C_FILTER в моем дизайне. Но в любом случае я добавил к каждому датчику температуры конденсатор емкостью 100 нФ.

К сожалению, мой дизайн может быть неправильным: исходя из потока Reddit, конденсаторы должны быть как можно ближе к контактам АЦП. В моем случае я должен поставить по одному конденсатору на каждый входной контакт, даже для датчика освещенности. Этот конденсатор также может отфильтровывать шумы, улавливаемые дорожками и проводами.

Используйте комплект расширения HAT

Из одной из веток Reddit я узнал, что у Adafruit есть комплект «Perma-Proto HAT», который идеально подходит для таких проектов.Обязательно попробую это в своем следующем проекте. Спасибо Antal_z за это!

По сути, это то, как использовать аналоговые датчики с Raspberry Pi. По сравнению со встроенными датчиками мне этот способ нравится больше, потому что я полностью контролирую их работу. На Амазоне очень сложно найти аналоговые датчики.

Это очень фундаментальный проект любителя электроники, который плохо разбирается в конденсаторах. Я надеюсь, что этот пост может предоставить некоторую информацию для людей, которые хотят создавать похожие проекты, и, пожалуйста, прокомментируйте любые предложения.

Спасибо за чтение!

Работают ли датчики Arduino с Raspberry Pi?

Когда дело доходит до мира практической электроники, очень редко можно встретить человека, который не начал бы свой процесс обучения с Arduino. В этой статье позвольте мне осветить некоторые очень часто возникающие вопросы, которые возникают при совместном обсуждении Arduino и Raspberry Pi, начиная с , работают ли датчики Arduino с Raspberry Pi .

Сейчас я инженер-электронщик, а в колледже я пошел даже на базовую.

Arduino – это невероятный модуль, в котором все относительно легко понять.

Входы / выходы довольно понятны, есть аккуратно доступные библиотеки, которые постоянно обслуживаются и обновляются, программное обеспечение Arduino идеально и легко в освоении (при условии, что вы знаете базовый язык программирования, такой как C), есть симуляторы и всего тонна справки, доступной в Интернете, и в других случаях.

Итак, если при взгляде на компоненты электроники у тебя текут слюнки, как у меня, единственное, что тебя останавливает, – это ты, мой мальчик.

Дело в том, что я начал с самого ядра.

Несмотря на то, что у меня был доступ к плате Arduino, я скорее выбрал голый чип Atmega8L, узнал о нем все и создал собственные печатные платы для решения задачи, которую я хотел, чтобы проект выполнял.

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

Сегодня я собираюсь поделиться некоторыми из этих уроков, чтобы мои идеи помогли решить любой вопрос, который может возникнуть у вас при взгляде на Arduino и Raspberry Pi со сравнительной точки зрения.

Итак, позвольте мне начать с того, о котором меня спрашивают больше всего

Работают ли датчики Arduino с Raspberry Pi?

Ответ: они могут, если вы позаботитесь о двух вещах. Во-первых, вы должны знать, что Raspberry Pi не принимает аналоговые входы, и поэтому вам необходимо использовать промежуточное устройство, такое как АЦП, а во-вторых, если вы используете цифровой датчик, его вход в Raspberry Pi должен быть менее 3,3 В, как это это уровень напряжения, на котором работает Raspberry Pi.

Итак, в этом суть. Вы можете использовать датчики, которые вы используете для своих проектов Arduino, при условии, что вы позаботитесь о требованиях к интерфейсу.

Если честно, такой ответ вас не удовлетворил.

С практической электроникой уже все немного усложняется (особенно если вы новичок), и я думаю, что для полного понимания темы потребуется более широкий кругозор.

Не говоря уже о том, что важно устранить давнишние сомнения и вопросы, которые возникают, когда вы закончите со своим главным вопросом, который в нашем случае – работают ли датчики Arduino с Raspberry Pi.

Итак, я расскажу о взаимосвязи датчиков при работе в сочетании с Raspberry Pi (и Arduino), чтобы у вас было более широкое понимание в этом вопросе, а затем вы уже были на пути к сопряжению датчиков вашего выбора с вашим любимым управляющим устройством. устройство.

Другие вкусные товары, которые я знаю, вы полюбите,

Как подключить датчики к Raspberry Pi?

Теперь, когда мы установили, что вы действительно можете связать датчики, которые используете с вашими проектами Arduino, возникает следующий логический вопрос: , как именно вы можете связать аналоговый датчик с Raspberry Pi.

Есть несколько способов сделать это, и какой путь вы выберете, будет зависеть от вашей ситуации.

Например, предположим, вы создаете простую схему, в которой вы просто хотите получить индикацию того, приложено ли давление к вашему датчику давления.

В упрощенных ситуациях, поскольку это все, что вам действительно нужно, это схема потенциального делителя, которая вводит высокие (3,3 В) или минимальные (~ 0,3 В) на вывод GPIO вашего Raspberry Pi, и большая часть вашей работы будет завершена.

Однако, если, например, вы также хотите получить выходной сигнал от датчика и использовать его для приведения в действие другого устройства или, по крайней мере, численно вычислить, например, , какое давление приложено, вам понадобится промежуточный аналого-цифровой преобразователь.

Это не так сложно, как кажется, если честно.

Позвольте мне кратко объяснить каждый из этих сценариев,

Датчик сопряжения напрямую с Raspberry Pi

Теперь есть простой способ связать датчик (возьмем пример датчика давления) с Raspberry Pi, который я объясню ниже.

В этом простом устройстве вы можете определить, достаточно ли давления приложено к датчику давления.

Вы сможете определить, доступно ли давление или нет (высокий и низкий сигнал), и использовать идентификацию для управления другими процессами, используя простую логику кода.

Например, если давление доступно, включите светодиод или отобразите сообщение и т. Д.

Использование резистора

Мы можем сделать это, используя резистор, подключенный к датчику давления (или любому другому датчику по вашему выбору) и заземляющему контакту Raspberry Pi, как показано.

Сопряжение датчика давления с Raspberry Pi с помощью резистора

Как видите, схема довольно проста, и вы можете быть готовы к ней в кратчайшие сроки.

Здесь происходит то, что мы используем резистор 1M , который будет действовать как делитель напряжения, который делит напряжение, снимаемое с вывода 3V3 Raspberry Pi.

Каждый раз, когда на датчик давления оказывается значительное давление, на резисторе возникает напряжение (поскольку датчик действует как короткое замыкание при приложении некоторого давления), которое будет ниже 3.3 В отправит высокий сигнал на контакт 7 (GPIO4), и, таким образом, Raspberry Pi сможет определить приложенное давление.

Как я уже сказал, это упрощенная схема, которая похожа на ответ на вопрос «Да, Нет».

А что, если вы хотите продвинуться немного дальше.

Использование конденсатора

Если вы используете в цепи конденсатор вместо резистора, при этом все остальное остается прежним, происходит кое-что очень интересное.

Неотъемлемая способность конденсатора заключается в том, что он постепенно заряжается до максимальной емкости по напряжению, а затем аналогичным образом постепенно разряжается до нейтрального положения.

Эту задержку во времени зарядки и разрядки можно использовать для измерения текущего давления, приложенного к датчику давления.

Таким образом, вместо ответа «да» или «нет» вы также сможете сделать свой ответ более субъективным, зная, какое давление оказывается на ваш датчик.

Конечно, это значение не будет таким точным, как у аналого-цифрового преобразователя.

Но я думаю, что схема может пригодиться, если точность не является главным приоритетом, но вы все равно хотите измерить прилагаемую силу.

Итак, используя конденсатор последовательно с датчиком давления, вы можете определить сопротивление, создаваемое датчиком давления.

Чем выше приложенное давление, тем ниже будет создаваемое сопротивление.

Вот схема расположения.

Подключение датчика давления к Raspberry Pi с помощью конденсатора

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

Теперь вы сможете с достаточной степенью уверенности измерить, какое давление оказывается на датчик.

Это были основные способы взаимодействия сенсора, который вы обычно используете с Arduino и Raspberry Pi.

Давай поиграем в нашего фанатика!

Датчик сопряжения

с использованием аналого-цифрового преобразователя к Raspberry Pi

Методы, о которых я рассказал выше, просты, быстры и должны выполнять вашу работу.

Но вот что они не так эффективны, как вам хотелось бы, особенно если вы работаете над проектами, требующими точности.

Сопряжение аналого-цифрового преобразователя даст вам большую степень точности для измерения точного значения, поступающего с датчика.

Вы можете подумать, зачем мне использовать АЦП с Raspberry Pi, я не чувствовал необходимости связывать другую часть схемы с Arduino.

Это потому, что Raspberry Pi, будучи цифровым компьютером, не имеет никакого способа считывать аналоговые сигналы.

Сравните это с вашими обычными контроллерами AVR или PIC, у которых имеет до 6 контактов, способных принимать аналоговые входы.

Итак, чтобы сделать наш Raspberry Pi дружественным к аналогам, нам нужно будет использовать АЦП, такой как MCP3008.

Чтобы сделать пост подробным, разнообразным и легким для понимания, я изменю входной сигнал АЦП с помощью простого потенциометра.

Вы можете заменить потенциометр любым аналоговым датчиком, который вы можете использовать в своем проекте, основная концепция останется прежней.

Используя АЦП, такой как MCP3008, вы сможете извлекать переменные значения из своего датчика (в моем случае – потенциометра).

Такая компоновка становится особенно полезной, если вы создаете многовариантный проект, в котором вы хотите, чтобы разные вещи происходили при разных значениях датчиков.

MCP3008 может принимать 8 аналоговых входов , как вы можете видеть на схеме контактов ниже.

Схема выводов MCP3008

Таким образом, это достойное дополнение к вашему арсеналу, если вы хотите связать датчики, такие как термисторы , тензодатчики, акселерометры и т. Д. .

Вот спецификация MCP3008, если вы хотите узнать об АЦП более подробно.

Позвольте мне вкратце изложить различные связи, которые вам необходимо установить, чтобы организация работала.

Обеспечьте питание MCP3008, используя VDD и DGND (цифровое заземление). DOUT – это данные из MCP3008 , и аналогично DIN будет вводиться из Raspberry Pi. Ваш датчик или источник аналогового входа (потенциометр) будут подключены к контакту 1 или CH0.

AGND или аналоговая земля подключается к GND и VREF , который используется для изменения весов, подключается к 3.3 V , потому что это тот масштаб, который нам нужен.

В общем, это сводка всех подключений к MCP3008 и от них.

  • VDD – 3,3 В
  • VREF – 3,3 В
  • AGND – GND
  • CLK – SCLK (GPIO11-контакт 23)
  • DOUT – MISO (GPIO9-контакт 21)
  • DIN – MOSI (GPIO10-контакт 19)
  • CS – CE0 (GPIO8-Pin 24)
  • DGND – GND

Вот полная схема описанного устройства.

Схема сопряжения датчиков с Raspberry Pi с использованием MCP3008 ADC

С такой схемой у вас будет повышенная гибкость для измерения точного значения переменного аналогового входа, обеспечиваемого потенциометром или датчиком.

В дополнение к гибкости у вас будут более точные измерения, и вы можете использовать эту схему для управления различными выходами в зависимости от разных входных сигналов, которые вы получаете от вашего датчика.

Когда использовать Arduino или Raspberry Pi?

Хорошо, теперь мы увидели, как вы можете связать датчики, которые вы используете для своих проектов Arduino, с Raspberry Pi.

Но когда дело доходит до практической электроники, вопросы, например, можно ли что-то сделать, на самом деле не так важны, как вопросы типа , насколько эффективно можно выполнить поставленную задачу.

Надеюсь, вы понимаете, почему я высказываю такую ​​точку зрения.

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

Например, вы можете создать непрерывные часы, используя базовую схему таймера 555, и вам не обязательно развертывать микроконтроллер для этого.

Точно так же, когда задача требует выполнения разнообразных задач, таких как измерение и мониторинг различных физических параметров, например клапана, и отображение их на переднем плане, вероятно, подойдет встроенная система с Arduino, подключенным к соответствующим датчикам, и ЖК-дисплеем.

Но , если вы также хотите, например, отправлять параметры двигателя гоночного автомобиля через воздушные сети различным группам поддержки, сидящим в блиндаже, то Raspberry Pi, который может связываться с серверами, должен быть идеальным выбором или иногда может быть комбинация два мира на картах.

Итак, теперь давайте посмотрим на вопрос. Когда использовать Arduino, а когда Raspberry Pi?

Ответ зависит от обстоятельств. Arduino – это корпус для микроконтроллера, который представляет собой маломощный блок управления с низким объемом памяти, способный отслеживать и управлять небольшими устройствами и выполнять повторяющиеся задачи во встроенной системе.Raspberry Pi, с другой стороны, представляет собой автономный вычислительный блок с большей вычислительной мощностью, постоянным хранилищем, способным запускать операционную систему и подходящим для более мощных многоцелевых задач, которые могут и многие не связаны с серверной коммуникацией.

Проще говоря, микроконтроллер хорошо взаимодействует с устройствами (датчики и исполнительные механизмы), а Raspberry Pi хорошо взаимодействует с сервером .

Теперь может быть много случаев, когда одно превосходит другое с точки зрения применимости, а также могут быть случаи, когда вам нужно, чтобы они оба работали в тандеме.

Итак, это действительно зависит от ситуации, в которой вы находитесь, и от проекта, который у вас есть.

Одно важное открытие, которое я понял, работая в автомобильной промышленности, заключается в том, что ваша разработка должна быть экономически оптимизирована и, по возможности, экономна.

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

Настоящий вопрос в том, , есть ли у вас возможность разработать проект, который выполняет свою работу эффективно и в то же время не стоит дороже, чем следовало бы .

Итак, используете ли вы плату Arduino или Raspberry Pi, в конце концов, он должен правильно ответить на этот вопрос.

Часто задаваемые вопросы о Raspberry Pi, Arduino и датчиках

Итак, я надеюсь, что мне удалось эффективно и всесторонне передать взаимосвязь между Raspberry Pi и Arduino и то, как вы можете использовать датчики, которые вы используете в своих проектах Arduino, с Raspberry Pi.

Сохраняя контекст сообщения , работают ли датчики Arduino с raspberry pi , я уверен, что ваши вопросы на этом не остановятся.

Позвольте мне быстро ответить еще на несколько вопросов, которые, как я предполагаю, у вас, как у человека, интересующегося практической электроникой, всегда будут.

Сколько датчиков можно подключить к Raspberry Pi?

В идеале вы можете подключить к Raspberry Pi столько датчиков, сколько контактов GPIO равно 26. Однако в большинстве случаев все не так черно-белое. Это действительно зависит от того, к какому интерфейсу вы подключаете свои датчики. RPi предлагает 4 типа интерфейсов, а именно., I2C, SPI, UART и GPIO. Каждый датчик подключается к интерфейсу, для которого он предназначен, и часто датчики могут требовать более одного интерфейса. У интерфейсов есть свои достоинства и ограничения, и при необходимости можно использовать что-то вроде расширителя GPIO, если вам нужно больше контактов GPIO.

Итак, все сводится к вашей текущей задаче.

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

Когда вы освоите основы работы с датчиками, начните расширять свою базу знаний с этого момента.

Может ли Raspberry Pi делать все, что может Arduino?

В большинстве случаев да, но не как отдельное устройство. Например, микроконтроллеры имеют встроенные АЦП, с которыми можно напрямую взаимодействовать с датчиками и разрабатывать мониторинг и / или управлять встроенными системами. Чтобы добиться того же с Raspberry Pi, вам понадобится отдельный АЦП, такой как MCP3008, для выполнения той же задачи.

Вопрос требует чуть более субъективного ответа, чем этот.

И снова в электронике важный вопрос не в том, можно ли это сделать, а в том, как это сделать.

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

Это похоже на старую поговорку: «Не пользуйся мечом, когда дело касается иглы».

Это должно прояснить ситуацию.

Вы можете рассматривать Raspberry Pi как урезанную реализацию ПК, а Arduino можно понимать как урезанную версию вычислительного блока, доступного в вашем AC или вашем холодильнике.

Итак, у каждого из них есть свое место, которое зависит от того, какая задача у вас под рукой, которую нужно выполнить.

Могут ли Arduino и Raspberry Pi работать вместе?

Да, Raspberry Pi и Arduino могут взаимодействовать друг с другом, чтобы работать как единое целое. Одно очевидное приложение, которое я могу придумать, – это использование Arduino для сбора данных датчиков от двигателя транспортного средства и отправки значений данных в Raspberry Pi через служебную сеть, где они могут быть сохранены на сервере, чтобы к ним могли получить доступ инженеры. и операторы для оптимизации работы автомобиля.

Это может показаться сложным испытанием, но как только вы хорошо разбираетесь в таких вещах, как сопряжение датчиков и других промежуточных микросхем с Raspberry Pi, вы увидите, что переход к более сложным проектам, подобным этому, становится довольно интуитивно понятным и не говоря уже о вознаграждении, когда вы, наконец, сделаете это. Это.

Хорошо, на этом мы подошли к концу поста, где обсудили, как можно уменьшить границы между средами Arduino и Raspberry Pi.

Мы начали с ответа на простой вопрос, работают ли датчики Arduino с Raspberry Pi, и обсудили все темы, которые, как я считаю, имеют отношение к контексту.

Если у вас есть какие-либо другие сомнения, вопросы, комментарии или отзывы относительно того, что вы узнали сегодня, не стесняйтесь делиться в разделе комментариев ниже.

Разговор о публикации поделитесь этим постом в своей любимой социальной сети и не забудьте подписаться на блог и соответствующий канал YouTube.

Позаботьтесь о себе, и я увижу вас в следующем.

Тада!

Вы успешно подписались!

Введение в Интернет вещей с использованием Raspberry Pi

Одним из модных словечек, широко используемых в ИТ-индустрии в последние пару лет, является термин «Интернет вещей», что означает «Интернет вещей».IoT относится ко всем вещам, которые связаны с Интернетом, и именно поэтому он получил свое название. Однако концепция Интернета вещей на самом деле не нова, потому что, сколько мы помним, мы подключаем устройства к Интернету.

В этой статье мы подробнее рассмотрим Интернет вещей и его значение для разработчиков. В частности, мы будем использовать Raspberry Pi в качестве примера и исследуем некоторые интересные вещи, которые вы можете создать с его помощью.

Термин «Интернет вещей» используется настолько часто, что некоторые люди в отрасли переименовывают его в «IoE – Интернет всего», потому что почти все тем или иным образом подключено к Интернету.

Что такое Интернет вещей (IoT) на самом деле?

Согласно Википедии, IoT определяется как:

“… сеть физических объектов – устройств, транспортных средств, зданий и других предметов – со встроенной электроникой, программным обеспечением, датчиками и сетевым соединением, которое позволяет этим объектам собирать данные и обмениваться ими “.

Хотя это довольно точное описание ролей, которые играют системы IoT, мы считаем, что IoT – это больше, чем набор датчиков, использующих данные.В частности, Интернет вещей включает в себя обработку данных (часто больших данных), собранных для получения полезной информации и поддержки принятия более эффективных решений (см. , рис. 1, ). Например, в некоторых странах были установлены дождемеры для измерения количества осадков в течение года, а собранные данные анализировались и использовались для более эффективного управления ливневыми паводками.


Рис. 1: IoT – это как сбор данных, так и анализ данных

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

Интернет вещей и движение производителей

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

Вместе с движением производителей появляется множество электронных платформ DIY, таких как Arduino и Raspberry Pi. Arduino (см. , рис. 2, ) – небольшая и недорогая электронная плата, которая позволяет подключаться к различным внешним аксессуарам (например, датчикам) и создавать приложения для использования собранных данных.


Рисунок 2: Плата Arduino UNO

Еще одна аппаратная платформа с открытым исходным кодом, которая в наши дни стала очень популярной среди любителей, – это Raspberry Pi. Во всех определениях это действительно компьютер.Raspberry Pi – это недорогой компьютер размером с кредитную карту, который подключается к монитору компьютера или телевизору через HDMI и использует стандартную клавиатуру и мышь. Он может работать с множеством операционных систем, таких как Raspbian (Debian Linux), Android, Windows 10, IoT Core и т. Д.

Raspberry Pi прошел несколько итераций, и Таблица 1 показывает список моделей Raspberry, выпущенных за эти годы, и их цены.

Среди различных моделей выделяются Raspberry Pi 3 (см. , рис. 3, ) и Raspberry Pi Zero (см. , рис. 4, ).


Рисунок 3: Raspberry Pi 3
Рисунок 4: Raspberry Pi Zero

Raspberry Pi 3 – это третье поколение Raspberry Pi, и в его упаковке размером с кредитную карту он обладает весьма внушительной мощностью. В частности, в дополнение к стандартным функциям Raspberry Pi (таким как четыре порта USB 2.0 и встроенный Ethernet) он имеет:

  • 64-разрядный четырехъядерный процессор ARMv8 1,2 ГГц
  • 802.11n Беспроводная локальная сеть
  • Bluetooth 4.1 с низким энергопотреблением (BLE)

Мощный ЦП в сочетании с беспроводной локальной сетью и Bluetooth 4.1 делает его идеальным кандидатом для проектов Интернета вещей, поскольку к нему можно одновременно подключать несколько датчиков. Кроме того, Raspberry Pi имеет 40-контактный разъем GPIO (универсальный ввод-вывод) для взаимодействия с внешними датчиками.

Raspberry Pi Zero – самый маленький из когда-либо созданных Raspberry Pi, и хотя у него нет такого мощного процессора, как Pi 3, его небольшой размер особенно подходит для встраиваемых проектов (таких как носимые устройства и т. Д.), Где много места это премия.

Питание Raspberry Pi

Одной из самых популярных операционных систем, используемых для Raspberry Pi, является операционная система Raspbian.ОС Raspbian основана на ОС Debian, оптимизированной для оборудования Raspberry Pi. Самый простой способ установить ОС Raspbian для Raspberry Pi – загрузить NOOBS с https://www.raspberrypi.org/help/noobs-setup/. NOOBS расшифровывается как New Out Of Box Software.

Самый простой способ установить ОС Raspbian для Raspberry Pi – загрузить NOOBS по адресу: https://www.raspberrypi.org/help/noobs-setup/.

ОС Raspbian загружается с карты micro-SD, а вся операционная система запускается с карты.Типичной карты Micro-SD емкостью 8 ГБ класса 4 достаточно для большинства целей, но у вас есть возможность подключить ее к внешнему жесткому диску или флеш-накопителю для большего объема памяти.

После установки Raspbian OS вы можете войти в нее и увидеть полностью оконную систему (см. , рис. 5, ). Имя пользователя по умолчанию – pi , а пароль – raspberry .


Рисунок 5: ОС Raspbian использует LXDE (облегченная среда рабочего стола X11) для управления взаимодействиями пользователей

Подключение Raspberry Pi к внешнему миру – контакты GPIO

Raspberry Pi имеет 40-контактное соединение GPIO (универсальный ввод / вывод), что упрощает подключение к внешнему миру.Чтобы подключить GPIO к внешним датчикам, вы можете:

  • Подключите датчики напрямую к контактам GPIO с помощью перемычек
  • Подключите контакты GPIO к ленточному кабелю, который, в свою очередь, соединит его с макетной платой. Кабель Adafruit Pi T-Cobbler Plus – Breakout + для Raspberry Pi A + / B + / Pi 2 / Pi 3 (см. , рис. 6, ) является одним из таких продуктов. Этот вариант идеален на этапе создания прототипа.

Рисунок 6: Кабель Adafruit Pi T-Cobbler Plus Breakout + для Raspberry Pi

Для прототипирования проекта я предпочитаю использовать второй вариант: Adafruit Pi T-Cobbler Plus.Adafruit Pi T-Cobbler Plus подключается к Raspberry Pi с помощью ленточного кабеля (см. , рис. 7, ).


Рисунок 7: Подключение Adafruit Pi T-Cobbler Plus к Raspberry Pi

Проверка контактов GPIO

Одним из преимуществ использования Adafruit Pi T-Cobbler Plus является то, что у вас есть четкая маркировка различных контактов GPIO (см. Рисунок 8 ).


Рисунок 8: Метки на различных контактах на Adafruit Pi T-Cobbler Plus

Контакты GPIO на Raspberry Pi делятся на следующие группы:

  • Питание: Контакты с маркировкой 5.0 В обеспечивает 5 вольт питания, а те, что обозначены как 3V3, обеспечивают питание 3,3 вольт. Есть два контакта 5V и два контакта 3V3.
  • GND: Это контакты заземления. Есть восемь контактов заземления.
  • Контакты ввода / вывода: Это выводы, помеченные знаком #, например # 17, # 27, # 22 и т. Д. Эти выводы могут использоваться для ввода или вывода.
  • I2C: I2C – это последовательный протокол для двухпроводного интерфейса для подключения низкоскоростных устройств, таких как микроконтроллеры, EEPROM, аналого-цифровые и цифро-аналоговые преобразователи, интерфейсы ввода-вывода и другие подобные периферийные устройства во встроенных системах.Эти штифты имеют маркировку SDA и SCL .
  • UART: Универсальный асинхронный приемник / передатчик позволяет подключать Raspberry Pi к последовательным периферийным устройствам. Контакты UART имеют маркировку TXD и RXD .
  • SPI: Последовательный периферийный интерфейс – это спецификация интерфейса синхронной последовательной связи, используемая для связи на короткие расстояния, в основном во встроенных системах.Контакты SPI имеют маркировку MOSI , MISO , SCLK , CE0 и CE1 .
  • ID EEPROM: Электрически стираемое программируемое постоянное запоминающее устройство – это изменяемое пользователем постоянное запоминающее устройство, которое можно стирать и записывать повторно посредством приложения более высокого, чем обычно, электрического напряжения. Два контакта EEPROM на Raspberry Pi ( EED и EEC ) также являются вторичными портами I2C, которые в первую очередь облегчают идентификацию пластин Pi (например,g., Raspberry Pi Shields / Add-On Boards), которые напрямую подключены к Raspberry Pi.

Подключение к датчику для обнаружения движения

Чтобы продемонстрировать, как использовать GPIO для подключения к внешнему датчику, мы теперь будем использовать датчик движения PIR для обнаружения движения. Для этого я использовал датчик движения Parallax PIR (см. , рис. 9, ). Датчик PIR обнаруживает движение, измеряя изменения уровня инфракрасного излучения (тепла), излучаемого окружающими объектами на расстоянии до трех метров.


Рисунок 9: Датчик движения Parallax PIR

Датчик движения Parallax имеет три контакта (см. Рисунок 10 ):

  • GND: Контакт заземления. Подключите этот контакт к GND на GPIO.
  • VCC: Вывод напряжения. Подключите этот вывод к одному из выводов 5V на GPIO.
  • OUT: Выходной контакт. Подключите его к одному из контактов ввода / вывода на GPIO.

Рисунок 10: Расположение различных контактов на датчике движения PIR

Когда датчик движения PIR обнаруживает движение, он выдает высокий сигнал на свой выходной контакт.Вам нужно написать приложение, чтобы прочитать значение этого выходного контакта. Рисунок 11 показывает датчик движения PIR, подключенный к T-Cobbler Plus.

В зависимости от используемого ИК-датчика движения, расположение различных контактов не всегда в том же порядке, как описано. Важно проверить и подключить правильные контакты к правильным контактам GPIO. Подключение неправильных контактов к Raspberry Pi может необратимо повредить датчик движения PIR.

На рисунке красная линия – это VCC и должна быть подключена к выводу 5V на GPIO.Желтая линия – ВЫХОД и подключена к контакту №4 GPIO. Черная линия – это GND и должна быть подключена к GND на GPIO.


Рис. 11: Датчик движения PIR, подключенный к Raspberry Pi

Соединение Raspberry Pi и датчиков: язык программирования Python

Теперь, когда Raspberry Pi подключен к датчику движения PIR, пришло время написать код, чтобы все работало. В ОС Raspbian Python – первоклассный гражданин, и поддержка Python идет прямо из коробки.Благодаря чистому синтаксису и простоте обучения Python – лучший выбор для любителей и новичков, желающих окунуться в мир Raspberry Pi. Вкупе с огромной поддержкой Python сообществом неудивительно, что это язык, который предпочитают разработчики.

Откройте окно терминала в ОС Raspbian и создайте текстовый файл, введя следующую команду:

  $ nano motiondetection.py
  

Приведенная выше команда использует текстовый редактор NANO и создает файл с именем motiondetection.py . Введите операторы, как показано в листинге Листинг 1 .

Листинг 1. Исходный код для использования датчика движения PIR
  импортировать RPi.GPIO как GPIO # 1
время импорта # 2

пирсенсор = 4 # 3
GPIO.setmode (GPIO.BCM) # 4
GPIO.setup (пирсенсор, GPIO.IN, GPIO.PUD_DOWN) # 5

previous_state = Ложь # 6
current_state = Ложь

в то время как True: # 7
    время.сон (0.1) # 8
    предыдущее_стейт = текущее_состояние # 9
    current_state = GPIO.input (пирсенсор) # 10
    если current_state! = previous_state: # 11
        если current_state: # 12
            print ("Обнаружено движение!") # 13
  

Когда вы закончите вводить код, выйдите из редактора NANO, нажав Ctrl-X, а затем нажав Y , чтобы сохранить файл. Нажмите Enter, чтобы сохранить его в текущем каталоге. Чтобы запустить сценарий Python, введите в Терминале следующую команду:

  $ python обнаружение движения.ру
  

Помашите рукой перед датчиком движения PIR. Вы должны увидеть следующий вывод на Терминале:

  Обнаружено движение!
  

Расшифровка кода

Теперь, когда вы написали свой первый код Python, полезно понять, что он делает и как работает. Мы будем разбирать код построчно:

RPI.GPIO – это библиотека, которая позволяет вашему приложению Python легко получать доступ к контактам GPIO на вашем Raspberry Pi.

  • # 1: Последняя версия Raspbian включает RPI.Библиотека GPIO Python предустановлена, поэтому вы можете просто импортировать ее в свой код Python. Библиотека RPI.GPIO позволяет вашему приложению Python легко получать доступ к контактам GPIO на вашем Raspberry Pi. Ключевое слово as в Python позволяет вам обращаться к библиотеке RPI.GPIO, используя более короткое имя GPIO .
  • # 2: Приложение будет вставлять некоторые задержки в выполнение, поэтому вам необходимо импортировать модуль времени.
  • # 3: Вы объявляете переменную с именем pirsensor , чтобы указать номер контакта, для которого выходной контакт на датчике PIR подключен к контакту GPIO.В этом примере это контакт №4 GPIO.
  • # 4: Есть два способа ссылаться на контакты на GPIO: либо по физическим номерам контактов (начиная с контактов с 1 по 40 на Raspberry Pi 2/3), либо по номерам Broadcom GPIO (BCM). Использование BCM очень полезно с ленточным кабелем (например, Adafruit T-Cobbler Plus) для подключения Raspberry Pi к макетной плате. Номера BCM относятся к этикеткам, напечатанным на T-Cobbler Plus (см. , рис. 8, ). В этом примере мы используем схему нумерации BCM.Это означает, что когда мы говорим, что получаем входной сигнал от контакта 4, мы имеем в виду контакт, обозначенный как №4 на T-Cobbler Plus.
  • # 5: Инициализируйте вывод, представленный переменной pinsensor , как входной вывод. Также мы используем понижающий резистор (GPIO.PUD_DOWN) для этого вывода.
  • # 6: Есть две переменные для отслеживания состояния датчика.
  • # 7: Мы используем бесконечный цикл для многократной проверки состояния датчика.
  • # 8: Вставляет небольшую задержку в 0,1 секунды для выполнения программы
  • # 9: Сохранить текущее состояние датчика.
  • # 10: Функция GPIO.input () считывает значение вывода GPIO (в данном случае №4). При обнаружении движения возвращается значение , истинное значение .
  • # 11: Сравните предыдущее состояние и текущее состояние, чтобы увидеть, изменилось ли состояние датчика движения. Если есть изменение, это означает, что либо датчик только что обнаружил движение (когда состояние изменяется с ложь на истинное ), либо что датчик сбрасывается сам (когда состояние изменяется с истинное на ложное ) через несколько секунд после обнаружения движения.
  • # 12: Если текущее состояние – true , это означает, что движение было обнаружено.
  • # 13: Распечатать строку «Обнаружено движение!»

Когда датчик движения PIR обнаруживает движение, его выходной сигнал будет 1 ( истинно, ), а через несколько секунд он автоматически сбрасывается на 0 ( ложно, ).

Воздействие на данные датчика

Теперь, когда датчик движения PIR обнаруживает движение, давайте найдем ему хорошее применение.Хорошее применение этого проекта – установка дома Raspberry Pi и датчика движения для отслеживания неожиданного движения. Вы можете установить датчик рядом с дверью, чтобы обнаруживать движение за пределами дома, когда дома никого нет.

После обнаружения движения Raspberry Pi может отправить push-уведомление на устройство Android через Google Cloud Messaging (GCM). Подробное описание Android и GCM выходит за рамки этой статьи, но вот что требуется приложению Android для получения push-уведомления:

  • Разработчик приложения Android должен подать заявку на получение ключа API на https: // console.developers.google.com.
  • После того, как приложение Android установлено на устройстве, оно должно пройти программную регистрацию в Google, чтобы получить регистрационный идентификатор. Этот регистрационный идентификатор однозначно идентифицирует приложение на конкретном устройстве, так что GCM может отправить ему сообщение.

Рисунок 12: Как работает Google Push-уведомление с использованием Google Cloud Messaging (GCM)

На рисунке 12 показано взаимодействие между различными сторонами в системе push-уведомлений.В частности, показано, как можно использовать Raspberry Pi для отправки push-уведомлений:

  1. Приложение Android отправляет запрос активации на сервер Google GCM.
  2. После успешной регистрации сервер GCM возвращает приложению идентификатор регистрации.
  3. В реальном мире регистрационный идентификатор должен быть отправлен на сервер, обслуживаемый разработчиком, который затем сохранит его в базе данных.
  4. Разработчику также необходимо написать другое приложение для связи с сервером GCM для отправки push-уведомления определенному пользователю (ам).В этом проекте мы будем использовать Raspberry Pi для отправки сообщения пользователю через сервер GCM.
  5. Как только сервер GCM получает сообщение, он отправляет push-уведомление в приложение.

Для отправки push-сообщения через сервер Google GCM вы можете использовать различные языки программирования, такие как C #, Python, Node.js и т. Д. Поскольку Python уже поддерживается в Raspbian, его естественно использовать.

Откройте окно терминала в ОС Raspbian и создайте текстовый файл, введя следующую команду:

  $ nano pushgcm.ру
  

Введите операторы, как показано в листинге листинг 2 . Обязательно замените своим собственным, а – идентификатором регистрации приложения Android, установленного на устройстве.

Листинг 2. Отправка сообщения push-уведомления с помощью Google Cloud Messaging (GCM)
  запросов на импорт №1
импортировать json # 2

gcm_url = "https: // android.googleapis.com/gcm/send" # 3

api_key = "" # 4

# замените  своим
reg_id = [""] # 5

заголовки = {'content-type': 'application / json', # 6
           'авторизация': 'ключ =' + api_key}

#notification payload
data = {# 7
    "отправитель": "Raspberry Pi",
    "событие": "Обнаружено движение!"
}

# создать словарь для хранения данных для публикации
post_data = {} # 8
post_data ['data'] = data # 9
post_data ['registration_ids'] = reg_id # 10

# преобразовать словарь в JSON
post_data_json = json.дампы (post_data) # 11
Распечатать
print "Данные для отправки на сервер GCM"
Распечатать "--------------------------"
распечатать post_data_json
Распечатать "--------------------------"
Распечатать

# отправляем данные на сервер GCM
r = requests.post (gcm_url, data = post_data_json, # 12
                  заголовки = заголовки)
распечатать "Ответ от сервера GCM"
Распечатать "------------------------"
print "Заголовок:", r.headers ['content-type'] # 13
напечатать "Статус:", r.status_code
печать "Текст:", р.текст
Распечатать "--------------------------"
  

Расшифровка кода

Как обычно, полезно понять, что делает код:

  • # 1: Импортируйте библиотеку Python запросов , которая поможет вам легко отправлять HTTP-запросы на сервер, не беспокоясь о строках запроса, кодировании форм ваших данных POST и т. Д.
  • # 2: Импортируйте библиотеку JSON, чтобы можно было распечатать данные, отправленные на сервер GCM, в формате JSON.
  • # 3: Конечная точка для сервера Google GCM.
  • # 4: Ключ API, полученный вами от Google. Это идентифицирует разработчика приложения, отправившего push-уведомление.
  • # 5: Регистрационные идентификаторы приложения, получающего уведомление. Вы получите этот регистрационный идентификатор из приложения после его регистрации в Google. В реальном мире этот регистрационный идентификатор должен быть отправлен на сервер, поддерживаемый разработчиком, чтобы предоставить полный список регистрационных идентификаторов приложения, установленного на устройствах пользователей.Если вы хотите отправить push-сообщение нескольким получателям, разделите идентификаторы регистрации запятыми (,).
  • # 6: Заголовок HTTP для отправки на сервер GCM для проверки подлинности отправителя.
  • # 7: Содержание push-сообщения. Здесь вы отправляете две пары ключ / значение, указывающие, кто отправляет сообщение и событие. Для push-сообщений GCM вы можете отправлять несколько пар ключ / значение. Приложение Android, получающее push-сообщение, просто указывает ключ (и) для извлечения значения (я).
  • # 8: Вы создаете словарь для хранения содержимого push-сообщения вместе с регистрационными идентификаторами получателя (ов).
  • # 9: Вы устанавливаете содержание push-сообщения в словаре.
  • # 10: Вы устанавливаете получателей push-сообщения.
  • # 11: Вы используете функцию json.dumps () для преобразования объекта словаря в строку JSON, чтобы вы могли распечатать его для проверки его содержимого.
  • # 12: Вы используете функцию requests.post () для отправки push-сообщения на сервер GCM.
  • # 13: После того, как сообщение было отправлено на сервер GCM, он возвращает статус. Здесь вы распечатываете тип содержимого ответа, за которым следует статус HTTP-запроса, а также детали отправки (например, было ли сообщение успешно отправлено или не удалось отправить, идентификатор сообщения и т. Д. .).

Прежде чем вы сможете запустить код Python для отправки push-уведомления на устройство Android, вам необходимо загрузить и установить библиотеку запросов Python.Для этого введите следующую команду в Терминал :

  $ sudo pip запросов на установку
  

После установки Requests введите следующую команду для выполнения сценария pushgcm.py :

  $ sudo python pushgcm.py
  

Если push-сообщение успешно доставлено на сервер GCM, вы должны создать вывод, подобный следующему:

  Данные для публикации на сервере GCM
--------------------------
{
    "registration_ids": [""],
    "данные": {
        "event": "Обнаружено движение!",
        «отправитель»: «Raspberry Pi»
    }
}
--------------------------
Ответ от сервера GCM
------------------------
Заголовок: application / json; charset = UTF-8
Статус: 200
Текст: {
    "multicast_id": 8838766867169688347,
    «успех»: 1,
    «сбой»: 0,
    "canonical_ids": 0,
    "полученные результаты": [
        {
            "message_id": "0: 14613927491% 62851a86f9fd7ecd"
        }
    ]
}
--------------------------
  

Чтобы завершить этот проект, вам необходимо изменить детектор движения .py , поэтому при обнаружении движения вызывается сценарий pushgcm.py для отправки push-уведомления в приложение Android. В листинге 3 показано добавление.

Листинг 3. Вызов pushgcm.py из motiondetection.py
  импортировать RPi.GPIO как GPIO
время импорта
импорт ОС # 1
пирсенсор = 4

GPIO.setmode (GPIO.BCM)
GPIO.setup (пирсенсор, GPIO.IN, GPIO.PUD_DOWN)

previous_state = Ложь
current_state = Ложь

в то время как True:
    время.сон (0,1)
    предыдущее_стате = текущее_состояние
    current_state = GPIO.input (пирсенсор)
    если текущее_состояние! = предыдущее_состояние:
        если current_state:
            print («Обнаружено движение!»)
os.system ("python pushgcm.py") # 2
  

В строке №1 вам необходимо импортировать модуль os , чтобы при обнаружении движения вы могли использовать функцию os.system () (в строке №2) для выполнения операции оболочки – в частности, для выполнения pushgcm.py скрипт.

Сводка

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

Значение вывода GPIO колеблется между 0 и 1, если он не подключен к напряжению. Это называется «плавающим». В случае, если вывод GPIO подключен к выходному значению датчика движения PIR, значение вывода GPIO не определено до того, как датчик обнаружит какое-либо движение.В этом случае вам необходимо использовать понижающий резистор, чтобы всегда «понижать» (GPIO.PUD_DOWN) значение до 0, так что вы можете быть уверены, что единственный раз, когда значение вывода изменяется на 1, это когда датчик обнаруживает движение.

Аналогично, вы также можете настроить вывод GPIO с помощью подтягивающего резистора (GPIO.PUD_UP). Вместо того, чтобы всегда устанавливать значение вывода на 0, подтягивающий резистор «подтягивает» значение до 1. Это полезно в случаях, когда некоторые датчики (например, кнопки) устанавливают вывод GPIO на 0 при срабатывании триггера (например.г., кнопка нажата).

Google Cloud Messaging (GCM) позволяет приложению Android получать push-уведомление от разработчика приложения, даже если приложение не запущено. Чтобы узнать больше о GCM, перейдите на https://console.cloud.google.com/projectselector2/home/dashboard, чтобы получить подробное описание того, как вы можете разрешить своим приложениям Android использовать GCM для получения push-уведомлений.

9120 долларов США 51200 9120 долларов США

Подключите Raspberry Pi к Центру Интернета вещей Azure в облаке (Node.js)

  • Читать 12 минут

В этой статье

В этом руководстве вы начнете с изучения основ работы с Raspberry Pi под управлением ОС Raspberry Pi. Затем вы узнаете, как легко подключить свои устройства к облаку с помощью Azure IoT Hub. Примеры Windows 10 IoT Core можно найти в Центре разработки Windows.

Еще нет комплекта? Попробуйте онлайн-симулятор Raspberry Pi. Или купите новый комплект здесь.

Чем вы занимаетесь

Что вы изучаете

  • Как создать центр Интернета вещей Azure и получить строку подключения нового устройства.

  • Как подключить Pi к датчику BME280.

  • Как собрать данные с датчиков, запустив пример приложения на Pi.

  • Как отправлять данные датчиков в центр Интернета вещей.

Что вам понадобится

  • Плата Raspberry Pi 2 или Raspberry Pi 3.

  • Подписка Azure. Если у вас нет подписки Azure, прежде чем начать, создайте бесплатную учетную запись.

  • Монитор, USB-клавиатура и мышь, подключаемые к Pi.

  • Mac или ПК под управлением Windows или Linux.

  • Подключение к Интернету.

  • Карта microSD объемом 16 ГБ или больше.

  • Адаптер USB-SD или карта microSD для записи образа операционной системы на карту microSD.

  • Блок питания 5 В на 2 А с кабелем micro USB длиной 1,8 м.

Следующие позиции необязательны:

Примечание

Если у вас нет дополнительных элементов, вы можете использовать смоделированные данные датчика.

Создание центра Интернета вещей

В этом разделе описывается, как создать центр Интернета вещей с помощью портала Azure.

  1. Войдите на портал Azure.

  2. На домашней странице Azure нажмите кнопку + Создать ресурс , а затем введите IoT Hub в поле Search the Marketplace .

  3. Выберите IoT Hub из результатов поиска, а затем выберите Создать .

  4. На вкладке Basics заполните поля следующим образом:

    • Подписка : выберите подписку, которую нужно использовать для вашего концентратора.

    • Группа ресурсов : выберите группу ресурсов или создайте новую. Чтобы создать новый, выберите Создать новый и введите имя, которое хотите использовать.Чтобы использовать существующую группу ресурсов, выберите эту группу ресурсов. Дополнительные сведения см. В разделе Управление группами ресурсов Azure Resource Manager.

    • Регион : выберите регион, в котором вы хотите разместить концентратор. Выберите ближайшее к вам место. Некоторые функции, такие как потоки устройств в Центре Интернета вещей, доступны только в определенных регионах. Для этих ограниченных функций вы должны выбрать один из поддерживаемых регионов.

    • Имя концентратора Интернета вещей : введите имя для своего концентратора.Это имя должно быть глобально уникальным и иметь длину от 3 до 50 буквенно-цифровых символов. Имя может также включать тире ( '-' ).

    Важно

    Поскольку Центр Интернета вещей будет публично обнаружен как конечная точка DNS, не вводите конфиденциальную или личную информацию, когда вы его называете.

  5. Выберите Next: Networking , чтобы продолжить создание концентратора.

    Выберите конечные точки, которые устройства могут использовать для подключения к вашему Центру Интернета вещей.Вы можете выбрать настройку по умолчанию Общедоступная конечная точка (все сети) или выбрать Общедоступная конечная точка (выбранные диапазоны IP-адресов) или Частная конечная точка . Примите настройку по умолчанию для этого примера.

  6. Выберите Далее: Управление , чтобы продолжить создание концентратора.

    Здесь вы можете принять настройки по умолчанию. При желании вы можете изменить любое из следующих полей:

    • Уровень цен и шкалы : выбранный вами уровень.Вы можете выбрать один из нескольких уровней в зависимости от того, сколько функций вы хотите и сколько сообщений вы отправляете через свое решение в день. Уровень бесплатного пользования предназначен для тестирования и оценки. Он позволяет подключать к хабу 500 устройств и отправлять до 8000 сообщений в день. Каждая подписка Azure может создать один Центр Интернета вещей на уровне бесплатного пользования.

      Если вы работаете с потоками устройств в Центре Интернета вещей, выберите уровень бесплатного пользования.

    • Единицы центра Интернета вещей : количество сообщений, разрешенных на единицу в день, зависит от ценового уровня вашего концентратора.Например, если вы хотите, чтобы концентратор поддерживал входящие 700 000 сообщений, вы выбираете два модуля уровня S1. Дополнительные сведения о других вариантах уровня см. В разделе Выбор правильного уровня Центра Интернета вещей.

    • Defender for IoT : включите этот параметр, чтобы добавить дополнительный уровень защиты от угроз для Интернета вещей и ваших устройств. Эта опция недоступна для концентраторов на уровне бесплатного пользования. Дополнительные сведения об этой функции см. В разделе Защитник Майкрософт для Интернета вещей.

    • Расширенные настройки > Разделы между устройством и облаком : это свойство связывает сообщения между устройством и облаком с количеством одновременных читателей сообщений.Большинству концентраторов требуется всего четыре раздела.

  7. Выберите Next: Tags , чтобы перейти к следующему экрану.

    Теги – это пары имя / значение. Вы можете назначить один и тот же тег нескольким ресурсам и группам ресурсов, чтобы распределить ресурсы по категориям и объединить биллинг. В этом документе вы не будете добавлять никаких тегов. Дополнительные сведения см. В разделе Использование тегов для организации ресурсов Azure.

  8. Выбрать Далее: просмотреть + создать , чтобы просмотреть свой выбор.Вы видите что-то похожее на этот экран, но со значениями, которые вы выбрали при создании хаба.

  9. Выберите Создать , чтобы начать развертывание нового концентратора. Ваше развертывание будет выполняться несколько минут, пока создается хаб. После завершения развертывания выберите Перейти к ресурсу , чтобы открыть новый концентратор.

Зарегистрируйте новое устройство в концентраторе Интернета вещей

В этом разделе вы создаете удостоверение устройства в реестре удостоверений в Центре Интернета вещей.Устройство не может подключиться к концентратору, если для него нет записи в реестре удостоверений. Дополнительные сведения см. В руководстве разработчика Центра Интернета вещей.

  1. В меню навигации Центра Интернета вещей откройте Устройства , затем выберите Добавить устройство , чтобы добавить устройство в Центр Интернета вещей.

  2. В Создайте устройство , укажите имя для нового устройства, например myDeviceId , и выберите Сохранить . Это действие создает удостоверение устройства для вашего Центра Интернета вещей.Оставьте отметку Автоматически генерировать ключи , чтобы первичный и вторичный ключи создавались автоматически.

    Важно

    Идентификатор устройства может отображаться в журналах, собираемых для поддержки клиентов и устранения неполадок, поэтому избегайте любой конфиденциальной информации при присвоении имени.

  3. После создания устройства откройте его из списка на панели Устройства . Скопируйте первичную строку подключения .Эта строка подключения используется кодом устройства для связи с концентратором.

    По умолчанию ключи и строки подключения замаскированы, поскольку они представляют собой конфиденциальную информацию. Если щелкнуть значок глаза, они откроются. Их необязательно раскрывать, чтобы скопировать с помощью кнопки копирования.

Примечание

В реестре удостоверений Центра Интернета вещей хранятся только удостоверения устройств, чтобы обеспечить безопасный доступ к Центру Интернета вещей. В нем хранятся идентификаторы устройств и ключи для использования в качестве учетных данных безопасности, а также флаг включения / выключения, который можно использовать для отключения доступа для отдельного устройства.Если вашему приложению необходимо хранить другие метаданные для конкретного устройства, оно должно использовать хранилище для конкретного приложения. Дополнительные сведения см. В руководстве разработчика Центра Интернета вещей.

Настроить Raspberry Pi

Установите Raspberry Pi OS

Подготовьте карту microSD для установки образа ОС Raspberry Pi.

  1. Загрузите ОС Raspberry Pi с рабочего стола.

    а. ОС Raspberry Pi с рабочим столом (файл .zip).

    г. Распакуйте ОС Raspberry Pi с изображением рабочего стола в папку на вашем компьютере.

  2. Установите ОС Raspberry Pi с рабочего стола на карту microSD.

    а. Загрузите и установите утилиту для записи SD-карт Etcher.

    г. Запустите Etcher и выберите ОС Raspberry Pi с образом рабочего стола, извлеченным на шаге 1.

    г. Выберите привод карты microSD. Etcher, возможно, уже выбрал правильный диск.

    г. Нажмите Flash, чтобы установить Raspberry Pi OS с рабочего стола на карту microSD.

    e. По завершении установки извлеките карту microSD из компьютера.Вынуть карту microSD напрямую безопасно, потому что Etcher автоматически извлекает или отключает карту microSD после завершения.

    ф. Вставьте карту microSD в Pi.

Включить SSH и I2C

  1. Подключите Pi к монитору, клавиатуре и мыши.

  2. Запустите Pi, а затем войдите в ОС Raspberry Pi, используя pi в качестве имени пользователя и raspberry в качестве пароля.

  3. Щелкните значок Raspberry> Настройки > Конфигурация Raspberry Pi .

  4. На вкладке Интерфейсы установите для SSH и I2C значение Включить , а затем нажмите ОК .

Модели Цена
Raspberry P1 Модель A 25 долларов США
Raspberry P1 Модель A + 20 долларов США
Raspberry Модель Raspberry США Модель Raspberry P1 B + 25 долларов США
Raspberry P2 Модель B 35 долларов США
Raspberry P3 Модель B 35 долларов США
Raspberry P1 Zero
Межинтегральная схема
Интерфейс Описание
SSH Secure Shell (SSH) используется для удаленного подключения к Raspberry Pi с помощью удаленной командной строки. Это предпочтительный метод удаленной отправки команд вашему Raspberry Pi, описанный в этом документе.
I2C (I2C) – это протокол связи, используемый для взаимодействия с оборудованием, таким как датчики. Этот интерфейс требуется для взаимодействия с физическими датчиками в этом разделе.

Если у вас нет физических датчиков и вы хотите использовать смоделированные данные датчиков с вашего устройства Raspberry Pi, вы можете оставить I2C отключенным.

Подключите датчик к Pi

Используйте макетную плату и перемычки для подключения светодиода и BME280 к Pi следующим образом.Если у вас нет датчика, пропустите этот раздел.

Датчик BME280 может собирать данные о температуре и влажности. Светодиод мигает, когда устройство отправляет сообщение в облако.

Для контактов датчика используйте следующую проводку:

Пуск (датчик и светодиод) Конец (Доска) Цвет кабеля
VDD (контакт 5G) 3.3V PWR (контакт 1) Белый кабель
GND (контакт 7G) GND (контакт 6) Коричневый кабель
SDI (контакт 10G) I2C1 SDA (контакт 3) Красный кабель
SCK (контакт 8G) I2C1 SCL (контакт 5) Оранжевый кабель
Светодиод VDD (контакт 18F) GPIO 24 (контакт 18) Белый кабель
Светодиод GND (контакт 17F) GND (контакт 20) Черный кабель

Щелкните здесь, чтобы просмотреть схемы 2 и 3 контактов Raspberry Pi для справки.

После того, как вы успешно подключили BME280 к Raspberry Pi, он должен выглядеть как на изображении ниже.

Подключите Pi к сети

Включите Pi с помощью кабеля micro USB и блока питания. Используйте кабель Ethernet для подключения Pi к проводной сети или следуйте инструкциям Raspberry Pi Foundation, чтобы подключить Pi к беспроводной сети. После того, как ваш Pi был успешно подключен к сети, вам необходимо записать IP-адрес вашего Pi.

Примечание

Убедитесь, что Pi подключен к той же сети, что и ваш компьютер. Например, если ваш компьютер подключен к беспроводной сети, а Pi подключен к проводной сети, вы можете не увидеть IP-адрес в выходных данных devdisco.

Запустите образец приложения на Pi

Клонировать образец приложения и установить необходимые пакеты

  1. Подключитесь к Raspberry Pi с помощью одного из следующих клиентов SSH с вашего хост-компьютера:

    Пользователи Windows

    а.Загрузите и установите PuTTY для Windows.

    г. Скопируйте IP-адрес своего Pi в раздел Имя хоста (или IP-адрес) и выберите SSH в качестве типа подключения.

    Пользователи Mac и Ubuntu

    Используйте встроенный SSH-клиент в Ubuntu или macOS. Возможно, вам потребуется запустить ssh pi @ для подключения Pi через SSH.

    Примечание

    Имя пользователя по умолчанию – pi , а пароль – raspberry .

  2. Установите Node.js и NPM на свой Pi.

    Сначала проверьте свою версию Node.js.

      узел -v
      

    Если версия ниже 10.x или если на вашем Pi нет Node.js, установите последнюю версию.

      curl -sSL https://deb.nodesource.com/setup_16.x | sudo -E bash
    sudo apt-get -y установить nodejs
      
  3. Клонируйте образец приложения.

      git clone https://github.com/Azure-Samples/azure-iot-samples-node.мерзавец
      
  4. Установите все пакеты для примера. Установка включает пакет SDK для устройств Azure IoT, библиотеку датчиков BME280 и библиотеку Wiring Pi.

      cd azure-iot-samples-node / iot-hub / Tutorials / RaspberryPiApp
    npm install
      

    Примечание

    Завершение процесса установки может занять несколько минут в зависимости от вашего сетевого подключения.

Настройте пример приложения

  1. Откройте файл конфигурации, выполнив следующие команды:

      нано конфиг.json
      

    В этом файле есть два элемента, которые вы можете настроить. Первый – interval , который определяет временной интервал (в миллисекундах) между сообщениями, отправленными в облако. Второй – simulatedData , который представляет собой логическое значение, указывающее, следует ли использовать смоделированные данные датчика или нет.

    Если у вас нет датчика , установите значение simulatedData на true , чтобы образец приложения создавал и использовал смоделированные данные датчика.

    Примечание. Адрес i2c, используемый в этом руководстве, по умолчанию – 0x77. В зависимости от вашей конфигурации это также может быть 0x76: если вы столкнетесь с ошибкой i2c, попробуйте изменить значение на 118 и посмотрите, работает ли это лучше. Чтобы узнать, какой адрес используется вашим датчиком, запустите sudo i2cdetect -y 1 в оболочке на raspberry pi

  2. Сохраните и выйдите, нажав Control-O> Enter> Control-X.

Запустить пример приложения

Запустите образец приложения, выполнив следующую команду:

  sudo node index.js '<СТРОКА ПОДКЛЮЧЕНИЯ УСТРОЙСТВА AZURE IOT HUB>'
  

Примечание

Убедитесь, что вы скопировали и вставили строку подключения устройства в одинарные кавычки.

Вы должны увидеть следующий вывод, который показывает данные датчика и сообщения, отправленные в ваш центр Интернета вещей.

Прочтите сообщения, полученные от вашего хаба

Один из способов отслеживать сообщения, получаемые вашим центром Интернета вещей с вашего устройства, – это использовать инструменты Azure IoT для кода Visual Studio.Дополнительные сведения см. В статье Использование инструментов Azure IoT для кода Visual Studio для отправки и получения сообщений между вашим устройством и Центром Интернета вещей.

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

Очистить ресурсы

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

  1. В меню слева на портале Azure выберите Все ресурсы , а затем выберите созданный вами Центр Интернета вещей.
  2. В верхней части обзорной панели Центра Интернета вещей щелкните Удалить .
  3. Введите имя своего концентратора и снова нажмите Удалить , чтобы подтвердить окончательное удаление Центра Интернета вещей.

Следующие шаги

Вы запустили образец приложения для сбора данных с датчиков и отправки их в центр Интернета вещей.

Чтобы продолжить работу с Центром Интернета вещей Azure и изучить все расширенные сценарии Интернета вещей, см. Следующие материалы:

Интеграция данных датчика Raspberry Pi через расширение MindConnect IoT

Это руководство знакомит вас с основной концепцией интеграции данных датчиков из Raspberry Pi в MindConnect IoT Extension и иллюстрирует с помощью Data Explorer визуализацию измерений. Датчики Tinkerforge будут подключены к Raspberry Pi. Измеренные значения датчиков передаются в MindConnect IoT Extension для дальнейшего сбора данных и аналитических действий.Вы также можете расширить эту интеграцию, чтобы создать гораздо больше аспектов и активов в MindSphere, синхронизировать данные в реальном времени, а также визуализировать и анализировать измерения с помощью Data Explorer.

Предварительные требования

  • A Raspberry Pi 3 Model B с SD-картой.

  • Все следующие изделия Tinkerforge:

  • Учетная запись MindSphere.

  • Служба расширения MindConnect IoT Extension Service должна быть активирована, чтобы использовать расширение MindConnect IoT Extension.Для активации обратитесь к назначенному администратору аккаунта или менеджеру по работе с клиентами или в службу поддержки.

  • Следующие роли должны быть назначены вашему пользователю

Поддерживаемые Bricklets Tinkerforge

Поддерживаемые в настоящее время Bricklets:
Барометр, датчик влажности, датчик внешней освещенности, датчик влажности, датчик расстояния, датчик напряжения, датчик тока, датчик температуры, датчик PTC, ЖК-дисплей, 4×7 сегментный дисплей, дистанционный переключатель, IO16, инфракрасный порт датчик расстояния, ультразвуковой датчик расстояния, GPS, двойное реле, датчик движения.

Полный список поддерживаемых Bricklets можно найти в последней версии агента Cumulocity для Raspberry Pi в следующих каталогах:

  • \ cumulocity-rpi-agent-latest \ data \ usr \ share \ cumulocity-rpi-agent \ lib \ tinkerforge-2.1.2 \ com \ tinkerforge
  • \ cumulocity-rpi-agent-latest \ data \ usr \ share \ cumulocity-rpi-agent \ lib \ tinkerforge-driver-8.17.0-SNAPSHOT \ c8y \ tinkerforge

Новая версия датчиков пока не поддерживается.Тем не менее, это проект с открытым исходным кодом, и каждый может внести здесь свой вклад.

Подготовка Raspberry Pi

В этом разделе описывается, как настроить Raspberry Pi и проверить основные параметры и функции.

Команды Linux

В этом руководстве будут использоваться команды Linux, указанные в таблице. Чтобы изучить другие команды и получить дополнительную информацию, проверьте GNU Coreutils.

Команда Значение
sudo Выполнить команду от имени администратора
кот Объединить и отобразить содержимое файлов
wget Получение веб-страниц или файлов через HTTP, HTTPS или FTP
шт. Кг Установка, сборка, удаление пакетов и управление ими
CD Изменить каталог
нано Использование интерфейса командной строки в качестве текстового редактора
лс Вывести информацию о файлах
баш GNU Оболочка снова Борна
мв Перемещение или переименование файлов или каталогов
коп Скопируйте один или несколько файлов в другое место
кв-получить Поиск и установка пакетов программного обеспечения
установить Копирование файлов и установка атрибутов

Установка Raspbian и настройка Raspberry Pi

На этом этапе необходимо выполнить некоторые общие приготовления, если вы впервые используете Raspberry Pi.Если это уже было сделано ранее, вы можете пропустить эти шаги и продолжить проверку версии Java.

  1. Подготовьте Raspberry Pi: подключите к устройству монитор, клавиатуру, мышь и кабель Ethernet или адаптер Wi-Fi. Пока не подключайте Raspberry Pi к источнику питания.
  2. Установите Raspbian с NOOBS (новое программное обеспечение из коробки). Для получения подробной информации см. «Начало работы» и следуйте инструкциям по установке.
    После установки Raspberry Pi загрузится в графический рабочий стол.
  3. Завершите настройку, выбрав параметры локализации (страна, язык и часовой пояс), создав новый пароль и установив сетевое соединение.
  4. Проверьте наличие обновлений программного обеспечения, установите их и перезагрузите Raspberry Pi.
  5. Включите драйвер SPI и SSH через параметры интерфейса :
    – Откройте терминал и выполните: судо распи-конфиг
    – С помощью клавиш со стрелками перейдите к Параметры интерфейса и нажмите Enter:

    – перейдите к SPI , нажмите Enter и щелкните Да , когда вас спросят, хотите ли вы включить интерфейс.Повторите это для SSH .
    – Перезагрузите Raspberry Pi.

  6. Необязательно: отредактируйте настройки локализации после установки через: судо распи-конфиг
    Выберите Параметры локализации , измените настройки и нажмите Готово . Затем перезагрузите Raspberry Pi.
    В качестве альтернативы используйте средство запуска меню Raspberry Pi: Настройки / Конфигурация Raspberry Pi / Локализация / Установить языковой стандарт / ОК.

Проверка версии Java

  1. Откройте терминал и выполните:

  2. Убедитесь, что на Raspberry Pi установлена ​​как минимум Java SE версии 7.

Определение серийного номера Raspberry Pi

  1. Выполнить:

  2. Обратите внимание на серийный номер (здесь: 00000000fbdf4131).

Подключение Raspberry Pi к расширению MindConnect IoT

Установка агента Cumulocity

Для подключения к MindConnect IoT Extension агент Cumulocity должен быть установлен на Raspberry Pi.

Примечание

В корпоративных сетях вам может потребоваться доступ в Интернет через гостевой Wi-Fi или через точку доступа Wi-Fi мобильного телефона.В противном случае брандмауэр заблокирует загрузку.

  1. Откройте терминал на Raspberry Pi и загрузите агент, выполнив:

     wget http://resources.cumulocity.com/examples/cumulocity-rpi-agent-latest.deb
     

  2. Установите загруженный агент, выполнив:

     sudo dpkg -i cumulocity-rpi-agent-latest.deb
     

Регистрация Raspberry Pi в расширении MindConnect IoT

  1. Открытое расширение MindConnect IoT ( https: // {tenant}.mciotextension.eu1.mindsphere.io ) и войдите со своими учетными данными.
    Если у вас возникли проблемы с входом в систему, обратитесь к администратору клиента, чтобы он предоставил вам учетные данные.

  2. Откройте Devices > Registration и щелкните Register device .

  3. Выберите Общая регистрация устройства .

  4. Введите серийный номер Raspberry Pi в поле Device ID на вкладке Device Info и нажмите Next .

    Не требуется добавлять Raspberry Pi в существующую группу устройств. Это удобная функция для структурирования обзора устройства в MindConnect IoT Extension.

  5. Устройство успешно зарегистрировано со статусом Ожидает принятия . Щелкните Complete .

Подключение агента к расширению MindConnect IoT

Raspberry Pi теперь зарегистрирован в MindConnect IoT Extension, но не подключен.Состояние Ожидание подключения отображается на вкладке Регистрация устройства .

Добавьте URL-адрес хоста в файл конфигурации для подключения Raspberry Pi:

  1. Откройте терминал и откройте файл cumulocity.properties для редактирования.

     sudo nano /usr/share/cumulocity-rpi-agent/cfg/cumulocity.properties
     
  2. Перемещайтесь по файлу с помощью клавиш со стрелками и добавьте строку с URL-адресом хоста MindConnect IoT Extension вашего клиента.Не вносите никаких дальнейших изменений.

     host = http: // {tenant} .mciotextension.eu1.mindsphere.io
     

    Примечание

    Убедитесь, что строка не закомментирована кодом # .
    URL-адрес хоста должен начинаться с http: // , а не с https: // . В противном случае устройство не сможет подключиться.
    Только добавьте имя хоста в cumulocity.properties и оставьте учетные данные (клиент, пользователь, пароль) закомментированными.

  3. Нажмите для выхода и введите Y , чтобы сохранить изменения.

  4. Перезагрузите Raspberry Pi.

  5. Откройте MindConnect IoT Extension ( http: // {tenant} .mciotextension.eu1.mindsphere.io ) и откройте Device > Registration . Статус нового устройства – Ожидание принятия , и отображается кнопка Принять .

  6. Щелкните Принять .

  7. Откройте Устройства > Все устройства для проверки регистрации. В списке появится недавно подключенное устройство Raspberry Pi.

Примечание

Если вы по-прежнему не видите зарегистрированное устройство в списке Все устройства , выполните обходной путь, описанный в следующем разделе.

Применение обходного пути для проблем с регистрацией / подключением

Пропустите этот раздел, если ваш Raspberry Pi указан в списке Все устройства .

Исправьте установленный JDK, чтобы исправить проблему, из-за которой Raspberry Pi не отображается в MindConnect IoT Extension:

  1. Загрузите последнюю версию JDK для Java 8 из Oracle, например JDK 8u200 , Linux ARM 32 Hard Float ABI .

  2. Извлеките файлы из загруженного архива JDK.

  3. Откройте терминал на Raspberry Pi.
  4. Остановите службу Cumulocity.

     sudo service cumulocity-agent stop
     
  5. Удалите устройство .properties файл.

     $ cd / usr / share / cumulocity-rpi-agent / cfg /
    $ ls
    cumulocity.properties cumulocity.properties.template device.properties logback-debug.xmllogback.xml
    sudo rm device.properties
     
  6. Проверьте удаление файла device.properties :

     $ ls
    cumulocity.properties cumulocity.properties.template logback-debug.xml logback.xml
     
  7. Проверить, установлена ​​ли переменная JAVA_HOME :

    Если переменная установлена, результат будет примерно таким:

    JAVA_HOME-bash: / usr / lib / jvm / jdk-8-oracle-arm32-vfp-hflt: это каталог

    В противном случае результат:

    Переменная среды JAVA_HOME не задана

  8. Если переменная JAVA_HOME не установлена, выполните следующие шаги:

    • Откройте новый терминал внутри pi @ raspberrypi и убедитесь, что Java установлена:

    • Определите расположение исполняемого файла Java:

    • Бег

    • Установите переменную JAVA_HOME , добавив строку, которая указывает расположение исполняемого файла Java, например:

       JAVA_HOME = / usr / lib / jvm / jdk-8-Oracle-arm32-vfp-hflt
       

    • Сохраните, закройте файл и перезагрузите Raspberry Pi

  9. Перейдите в каталог Java security и проверьте, присутствует ли файл cacerts :

     $ cd / usr / lib / jvm / jdk-8-oracle-arm32-vfp-hflt / jre / lib / security /
    $ ls
    черный список в черном списке.сертификаты cacerts java.policy java.security local_policy.jar доверенные библиотекиUS_export_policy.jar
     
  10. Переместите файл cacerts в другой каталог (или переименуйте его):

     $ sudo mv ./cacerts ./cacertsbkup
    $ ls
    черный список blacklisted.certs cacertsbkup java.policy java.security local_policy.jar trust.librariesUS_export_policy.jar
     
  11. Скопируйте новый файл cacerts из извлеченной загрузки JDK в каталог security :

     $ cd / home / pi / Downloads / jdk1.8.0_191 / jre / lib / безопасность
    $ ls
    черный список blacklisted.certs cacerts cacertsbkup java.policy java.security jartrusted.libraries
    $ sudo cp ./cacerts / usr / lib / jvm / jdk-8-oracle-arm32-vfp-hflt / jre / lib / security // jre / lib / security /.
    $ cd / usr / lib / jvm / jdk-8-oracle-arm32-vfp-hflt / jre / lib / безопасность /
    $ ls
    черный список blacklisted.certs cacerts cacertsbkup java.policy java.security local_policy.jartrusted.libraries US_export_policy.jar
     

    Вы должны увидеть аналогичные результаты после выполнения команды.

  12. Перезагрузите Raspberry Pi

  13. Повторите шаги для регистрации Raspberry Pi.

Изменение интервала измерения в MindConnect IoT Extension (необязательно)

После регистрации Raspberry Pi может отправлять измерения в MindConnect IoT Extension. Обновления запускаются при значительном изменении данных или каждые 3 минуты, в противном случае. Интервал между измерениями можно изменить в MindConnect IoT Extension следующим образом:

  1. Откройте «Устройства> Все устройства» и выберите устройство Raspberry Pi из списка.
  2. Выберите вкладку «Информация».
  3. На панели «СОСТОЯНИЕ УСТРОЙСТВА» нажмите кнопку «Редактировать» для «ТРЕБУЕМЫЙ ИНТЕРВАЛ».
  4. Введите желаемый интервал и сохраните изменения.

Чтение данных с подключенных датчиков Tinkerforge

Установка программного обеспечения Tinkerforge

  1. Установите программное обеспечение Brick Daemon на Raspberry Pi:

     sudo apt-get install libusb-1.0-0 libudev0 pm-utils
    wget http://download.tinkerforge.com/tools/brickd/linux/brickd_linux_latest_armhf.deb
    sudo dpkg –i brickd_linux_latest_armhf.deb
     

    При необходимости введите Y .

    Щелкните здесь, чтобы увидеть снимки экрана процесса установки

  2. Установите программное обеспечение Brick Viewer на Raspberry Pi.

     sudo apt-get install python-qt4 python-qt4-gl python-opengl python-serial python
    wget http: // download.tinkerforge.com/tools/brickv/linux/brickv_linux_latest.deb
    sudo dpkg –i brickv_linux_latest.deb
     

    Если вас спросят, продолжать ли, введите Y .

    Щелкните здесь, чтобы увидеть снимки экрана процесса установки

Tinkerforge с Raspberry Pi

Для получения дополнительной информации о том, как использовать Bricks и Bricklets с Raspberry Pi, обратитесь к Tinkerforge.

Тестирование установки Tinkerforge

  1. Подключите датчики Tinkerforge к Raspberry Pi:

    • Подключите главный блок к Raspberry Pi через USB.
    • Подключите блоки барометра, температуры и детектора движения к портам на стороне основного блока.

  2. Запустите Brick Viewer:

  3. Нажмите Подключиться .

  4. Запуск некоторых изменений измерения, например перемещая объект над блоком детектора движения или держа в руке блок измерения температуры.

Проверка подключения датчика в MindConnect IoT Extension

  1. Откройте Устройства > Все устройства и выберите устройство Raspberry Pi.
  2. Откройте вкладку Дочерние устройства . Bricklets Tinkerforge перечислены как дочерние устройства:

    • TF БарометрBricklet
    • TFMotionBricklet
    • TFT Температура Бриклет

    Устранение неисправностей сенсорных устройств

    Если FBarometerBricklet , TFMotionBricklet и TFTemperatureBricklet не указаны в списке, выполните следующие действия:

    • Проверьте, все ли Bricklets правильно подключены к Master Brick
    • Перезагрузите Raspberry Pi
    • Откройте терминал и выполните:
      bash brickv
    • Откройте второй терминал и выполните следующие команды:
      sudo service cumulocity-agent stop
      sudo service cumulocity-agent start
      sudo service cumulocity-agent status
  3. Для получения подробной информации о датчике щелкните датчик в списке, e.грамм. TFBarometerBricklet .

    • Чтобы проверить данные, полученные от барометра или модуля температуры, перейдите на вкладку Измерения .

    • Для просмотра событий, полученных от детектора движения, например Обнаружено движение / Движение завершено , перейдите на вкладку События .

Визуализация данных датчика с помощью проводника данных

В этом разделе показано, как пересылать данные из управления устройством в проводник данных в MindConnect IoT Extension.Data Explorer визуализирует данные с подключенных устройств.

Обнаружение проводника данных в расширении MindConnect IoT

  1. Откройте панель Cockpit расширения MindConnect IoT.

  2. Выберите Data explorer для визуализации точек данных.
    По умолчанию в проводнике данных отображаются первые пять точек данных выбранного устройства или группы. Эти точки данных перечислены на панели Точки данных .

  3. Добавьте новые точки данных в проводник данных, щелкнув Добавить точку данных на панели Точки данных .

    • Найдите устройство, например РаспПи .
    • Выберите и добавьте точки данных из Bricklet барометра и термометра.

  4. Включите точки данных из блоков барометра и термометра на панели. Точки данных , чтобы визуализировать измерения на диаграмме.

  5. Для захвата информации из модуля детектора движения добавьте отслеживание событий, щелкнув Добавить тревогу / событие на панели Тревоги / события .

  6. Изучите диаграмму визуализации с выбранными точками данных из Raspberry Pi.

Визуализация точек данных

Визуализация создается на основе свойств точки данных. Чтобы настроить свойства визуализации точки данных, разверните соответствующую точку данных на панели Точки данных проводника данных.

Загрузка отчета с данными

Измерения точек данных можно загрузить в виде отчета в формате Excel или CSV.

  1. Щелкните Дополнительно … в верхней части проводника данных.

  2. Выберите Загрузить как Excel и дождитесь создания отчета.

  3. Нажмите Скачать .

  4. Откройте файл в Excel.

Создание смарт-правила

MindConnect IoT Extension Cockpit включает в себя конструктор интеллектуальных правил, который позволяет создавать правила из шаблонов.

  1. Откройте конфигурацию > Глобальные интеллектуальные правила , чтобы отобразить обзор всех доступных шаблонов интеллектуальных правил.

  2. Выберите шаблон смарт-правила, например При отсутствии измерений создать аварийный сигнал .

  3. Щелкните Добавить смарт-правило .
  4. Заполните необходимые параметры:
  5. Проверьте созданное смарт-правило.
  6. Проверить выполнение смарт-правила.
    • Откройте Управление устройством.
    • Выберите устройство, на которое нацелено созданное смарт-правило, и проверьте наличие новых тревожных уведомлений.

Примечание

Кроме того, вы можете создать интеллектуальное правило непосредственно из проводника данных, используя меню действий точки данных на панели Точки данных .

Остались вопросы?

Спросите у сообщества


Если не указано иное, контент на этом сайте находится под лицензией MindSphere Development License Agreement .

.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *