Многоточечный 1-проводный автобус

  1. Сейчас в продаже!
  2. Для ошибок и списков посетите: IO Press
  3. Аппаратное обеспечение
  4. Алгоритм поиска 1-Wire

Страница 1 из 4

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

Сейчас в продаже!

Теперь вы можете купить печатное или электронное издание Raspberry Pi IoT in C на Амазонка ,

Для ошибок и списков посетите: IO Press

Страница 1 из 4   Иногда с точки зрения аппаратного обеспечения проще подключить набор однопроводных устройств к одной и той же линии GPIO, но это усложняет программное обеспечение

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

Список глав

  1. Представляем Пи (только бумажная книга)

  2. Начало работы с NetBeans В этой главе мы рассмотрим, почему C является хорошим языком для работы при создании программ для IoT, и как начать использовать NetBeans. Конечно, именно здесь Hello C World появляется.

  3. Первые шаги с GPIO
    Библиотека bcm2835C - это самый простой способ связаться с линиями Pi GPIO. В этой главе мы рассмотрим основные операции, связанные с использованием линий GPIO, с акцентом на вывод. Как быстро вы можете изменить линию GPIO, как вы генерируете импульсы заданной длительности и как вы можете менять несколько линий синхронно друг с другом?

  4. GPIO Путь SYSFS
    Существует подход на основе Linux к работе с линиями GPIO и последовательными шинами, о котором стоит знать, поскольку он предоставляет альтернативу использованию библиотеки bcm2835. Иногда вам это нужно, потому что вы работаете на языке, для которого прямой доступ к памяти недоступен. Это также единственный способ сделать прерывания доступными в C-программе.

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

  6. Память с отображением ввода / вывода
    Библиотека bcm2835 использует прямой доступ к памяти GPIO и других периферийных устройств. В этой главе мы рассмотрим, как это работает. Вам не нужно знать об этом, но если вам нужно изменить библиотеку или получить доступ к функциям, которые библиотека не предоставляет, это путь.

  7. Linux в реальном времени
    Вы можете писать программы в реальном времени, используя стандартный Linux, если вы знаете, как управлять расписанием. На самом деле, это оказывается относительно легко и позволяет Raspberry Pi делать то, на что вы, возможно, не способны. Есть также некоторые удивительные различия между одноядерным и четырехъядерным Pis, которые заставляют вас снова задуматься о программировании Linux в реальном времени.

  8. PWM
    Одним из способов решения проблемы быстрого отклика микроконтроллера является удаление проблемы от процессора. В случае с процессором Пи есть несколько встроенных устройств, которые могут использовать линии GPIO для реализации протоколов без участия ЦП. В этой главе мы подробно рассмотрим ШИМ с широтно-импульсной модуляцией, включая звук, светодиодные индикаторы и сервоприводы.

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

  10. Пользовательский протокол - DHT11 / 22
    В этой главе мы используем все идеи, представленные в предыдущих главах, для создания простого интерфейса с недорогим датчиком температуры и влажности DHT11 / 22. Это упражнение по реализации пользовательского протокола непосредственно в C.

  11. Основы One Wire Bus
    Raspberry Pi достаточно быстр, чтобы его можно было использовать для прямого подключения к шине 1-Wire без драйверов. Преимущества программирования нашего собственного протокола 1-wire bus в том, что он не зависит от неопределенности драйвера Linux.

  12. iButtons
    Если вы не обнаружили iButton, то вы найдете множество вариантов их использования. Проще говоря, iButton - это электронный ключ, предоставляющий уникальный код, хранящийся в его ПЗУ, который можно использовать для разблокировки или просто записи присутствия конкретной кнопки. Хорошей новостью является то, что они легко взаимодействуют с Pi.

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

  14. Многоточечный 1-проводный автобус
    Иногда с точки зрения аппаратного обеспечения проще подключить набор однопроводных устройств к одной и той же линии GPIO, но это усложняет программное обеспечение. Узнайте, как узнать, какие устройства присутствуют на многоканальной шине и как выбрать то, с которым вы хотите работать.

  15. SPI Bus
    Шина SPI может быть проблемой, потому что у нее нет четко определенного стандарта, которому соответствует каждое устройство. Даже если вы хотите работать только с одним конкретным устройством, обычно легко найти работающую конфигурацию, если вы понимаете, какие у нее есть возможности.

  16. SPI MCP3008 / 4 AtoD (только бумажная книга)

  17. Серийный (только бумажная книга)

  18. Начало в Интернете - ведь это IoT (только бумажная книга)

  19. WiFi (только бумажная книга)

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

Каждое однопроводное шинное устройство имеет уникальный 64-битный серийный номер, который служит его адресом на шине. Вы можете выбрать только одно устройство, написав его серийный номер. Однако, как вы узнаете, какие устройства подключены?

Аппаратное обеспечение

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

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

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

Алгоритм поиска 1-Wire

Серийный номер имеет стандартный формат, младший байт - это семейный код, т. Е. Какое это устройство, следующие шесть байтов - серийный номер, а старший байт - контрольная сумма.

Какое это устройство, следующие шесть байтов - серийный номер, а старший байт - контрольная сумма

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

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

Лучшим решением является сканирование шины для поиска подключенных устройств и обнаружения их серийных номеров. Для этого и нужен 1-проводный алгоритм поиска. Он имеет репутацию трудного для понимания и еще более сложного для реализации. Хорошая новость в том, что это не так сложно, как кажется на первый взгляд, и очень поучительно.

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

Затем мастер помещает команду поиска 0xF0 на шину, которая переводит все устройства в режим поиска.

Затем мастер считывает два бита с шины - они представляют первый бит всех серийных номеров от всех устройств. Учитывая природу однопроводной шины и то, как работает подтягивание, то, что получает мастер, является логическим И всех битов, отправленных каждым из ведомых устройств. Первый бит, который посылают ведомые, является их младшим битом, а второй бит - логическим дополнением, т. Е. Not, их первого бита.

Из этих двух битов мастер может вывести следующее:

1-й бит

2-й бит

Заключение 0 0 По крайней мере, одно устройство с 1 в этом положении и другое с 0. 0 1 У всех устройств есть 0 в этом положении 1 0 У всех устройств есть 1 в этом положении 1 1 Нет устройств

Очевидно, что 1,1 является ошибкой - что-то удалило устройства из шины.

В случае приема 0,1 или 1,0 бит в этой позиции был определен как 0 или 1 соответственно, и все устройства на шине делят это значение в своих серийных номерах в этой позиции бита.

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

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

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

Повторяя действие «чтение двух битов, запись одного», мастер в конечном итоге находит все 64 бита одного из серийных номеров подчиненного устройства. Затем он должен вернуться к одному из битовых местоположений, где был выбор, какой бит выбрать, и выбрать альтернативу.

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

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

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

Предположим, что на шине четыре устройства, и все они должны различаться как минимум в одной битовой позиции. Когда мастер запускает сканирование, он читает все 1 или все 0, обрабатывая каждый, но до тех пор, пока не достигнет первого местоположения, где есть другое устройство с другим значением в этом бите. Ведущий получает 0,0 от подчиненных и произвольно отправляет 0, чтобы отключить все подчиненные с 1 в этом месте. Затем мастер продолжает считывать биты, и если у всех других устройств в этой позиции битов был 1, конфликт больше не возникает.

Когда мастер достигает бита 63, он имеет полный серийный номер устройства 1.

Затем он возвращается к битовой позиции, где произошел первый конфликт. Теперь он записывает 1, чтобы выключить устройство 1, и продолжает считывать биты, пока не столкнется с другим конфликтом. Опять же, он произвольно выбирает 0 и выключает все устройства с 1 в этой позиции бита.

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

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

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

Похожие

Модуль для идентификации контейнеров и сумок
Система идентификации контейнеров с использованием технологии RFID была разработана в тесном сотрудничестве с нашими клиентами из муниципального сектора, чтобы соответствовать их потребностям, ожиданиям и требованиям рынка. Модуль идентификации RFID, предлагаемый ELTE GPS, может быть установлен на любом типе здания. Идентификация контейнера выполняется с помощью набора антенн RFID и считывателей RFID, установленных на транспортных средствах, а также меток RFID, установленных в контейнерах.
Cambridge Audio AZUR 650A | Усилитель стерео | Богатые звуки
Cambridge Audio AZUR 650A Усилитель стерео К сожалению, этот продукт больше не доступен. Для получения консультации по альтернативному продукту или подробностей о новых моделях, пожалуйста, свяжитесь с Telesales Вот или ваш местный магазин, который вы можете найти Вот , Фил, менеджер по продажам, 15-й год службы Усилитель Cambridge
2.13-дюймовый E-Paper HAT
... аппаратное соединение между платой разработки XNUCLEO-F103RB и E-paper: Электронная бумага XNUCLEO-F103RB 3.3V 3V3 GND GND DIN PA7 CLK PA5 CS PB6 DC PC7 RST PA9 BUSY PA8 Ожидаемый результат Откройте проект Keil (MDK-ARM / epd-demo.uvprojx) Нажмите Build, чтобы скомпилировать проект. Нажмите Загрузить, чтобы загрузить программу на целевую доску. Экран отображает строки и формы после обновления всего экрана.
Советы по покупке телевизора: 4K, HDR, OLED и QLED объяснил
После IFA Ритейлеры электроники превосходят себя сделками с ТВ: самые современные устройства теперь доступны всего за несколько сотен евро. Однако технический китайский производитель смутил многих потребителей. Мы объясняем, что стоит за такими терминами, как HDR , OLED , QLED
Как быстро вы можете изменить линию GPIO, как вы генерируете импульсы заданной длительности и как вы можете менять несколько линий синхронно друг с другом?
Однако, как вы узнаете, какие устройства подключены?
© 2013 mexpola.ru