8-900-374-94-44
[email protected]
Slide Image
Меню

Расширение портов ардуино: Увеличение портов ввода-вывода на Arduino (PCF8574) – RobotChip

Содержание

Увеличение количества входов/выходов микроконтроллеров ESP8266/ESP32/Arduino

У Arduino количество входов в старших версиях (Arduino Mega) значительное, однако само устройство все-же больше заточено под прототипирование и выпуск IoT устройств в небольших количествах. Быстро и недорого заткнуть брешь. Этот вариант пригоден далеко не для всех задач, особенно когда нужно развертывать сотни IoT устройств.

На Arduino довольно удобно разрабатывать. Есть Aruino IDE, несложный вариант C++, поддержка в среде Visual Studio Code/Visual Studio 2017. Накоплена огромная экспертиза, множество штатных библиотек, закрывающих многие задачи, масса форумов, статей и т.п. Однако, к сожалению, если нужно сделать удаленное обновление прошивки, нормального штатного решения для Arduino мне найти не удалось. Нестандартные bootloader разрабатывались давно, обновлений кода нет и насколько стабильно работают, непонятно.

Микроконтроллеры ESP8266 и старший собрат ESP32 — это промышленные микроконтроллеры, отлично документированные с штатной поддержкой обновления программного обеспечения по TCP/IP.

Если разрабатывается решение для промышленной автоматизации, то рекомендую использовать чипы ESP. Будет хороший задел на будущее в части дальнейшего развития. Учитывая то, что код под ESP можно создавать на С++ в среде Arduino IDE/Visual Studio Code/2017, а многие библиотеки совместимы между Arduino и ESP, в случае необходимости можно перейти с ESP на Arduino. Естественно, с потерей функционала Wi-Fi, который встроен в ESP, а в Arduino требуется дополнительный shield. Например, тот-же самый ESP8266. 🙂

В чипах ESP уже встроена поддержка Wi-Fi и Bluetooth (ESP32), есть режимы пониженного энергопотребления, что упрощает разработку устройств работающих от аккумулятора.

Электропитание ESP8266/ESP32

Для автономного электропитания рекомендую используется емкий Li-Ion аккумулятор 18650. На Aliexpress можно найти варианты аккумулятора на 9900 mAh. Скорее всего китайцы лукавят, ставя эту цифру, но батарея действительно емкая.

К ней несложно найти недорогой battery shield для питания устройств на этих микроконтроллерах. Есть и недорогие пассивные battery case для случая, когда управление Li-Ion аккумулятором реализованно на отдельном shield. Например, для платы Wemos D1 mini есть такой вариант shield.

ESP8266 vs ESP32

Вкратце сравню ESP8266 с ESP32.

 

ESP8266

ESP32

MCU

Xtensa Single-core 32-bit L106

Xtensa Dual-Core 32-bit LX6 with 600 DMIPS

802.11 b/g/n Wi-Fi

HT20

HT40

Bluetooth

X

Bluetooth 4.2 and BLE

Typical Frequency

80 MHz

160 MHz

SRAM

X

Flash

X

GPIO

17

36

Hardware /Software PWM

None / 8 channels

None / 16 channels

SPI/I2C/I2S/UART

2/1/2/2

4/2/2/2

ADC

10-bit

12-bit

CAN

X

Ethernet MAC Interface

X

Touch Sensor

X

Temperature Sensor

X

Hall effect sensor

X

Working Temperature

-40ºC to 125ºC

-40ºC to 125ºC

Price

$ (3$ — $6)

$$ ($6 — $12)

Where to buy

Использовать GPIO входы/выходы на этих чипах можно по-разному.

Функциональное назначение выводов чипа ESP8266.

При приобретении ESP32 devkit на Aliexpress нужно обращать внимание на количество PIN-ов. Наиболее распространенный вариант — 30 PIN-овый, такой-же как ESP8266. Он стоит в районе 5 USD. Есть вариант на 36 PIN и 38 PIN. На 38 PIN стоит в районе 8 USD. Отличить легко, PIN-ы опускаюся до нижнего края кнопок.

Здесь уже нужно смотреть, что нужно от платы, поскольку може оказаться выгоднее приобрести расширение на 16 GPIO за 1,5 USD, чем переплачивать за PIN-ы на devkit.

Функциональное назначение выводов чипа ESP32 с 36 PIN-ами

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

У ESP32 можно использовать 10 входов в качестве емкостных (TOUCH). Присоединенный к ним провод будет изменять емкость при поднесении руки. Например, можно реализовать вечные емкостные кнопки, которые могут быть реализованы на печатной плате, без использования механических компонент.

Увеличение количества аналоговых входов/выходов

Аналого-цифровой преобразователь АЦП (ADC)

В ESP8266 только один АЦП (ADC), в то время как в ESP32 доступно 18!!! АЦП, причем 12 битных, в отличие от 10-ти битного АЦП ESP8266. Напряжение срабатывания АЦП в ESP32 можно менять от 0 до 4 V.

I2C адресация модуля ADS1115

16-ти битные внешние модули АЦП с чипом ADS1115 4-х канальные и стоят с доставкой в Россию в районе 1,5 USD. Примерно столько же стоит 12-ти разрядный ADS1015. Datasheet здесь.

Чтобы в ESP8266 получить такое-же количество каналов АЦП, как у ESP32 потребуется 4 шт. внешних АЦП и цена только этих модулей получится в районе 6 USD. Сам чип ESP32 распаянный на плате можно приобрести примерно за 7 USD с доставкой в Россию. Схема подключения здесь.

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

Помимо АЦП в ESP32 есть два 8-ми битных ЦАП (DAC).

Мультиплексор/демультиплексор аналоговых входов

Помимо увеличения аналоговых входов с помощью АЦП есть вариант расширения мультиплексором. Хорошая статья на эту тему в которой подробно рассмотрен аналоговый мультиплексор/демультиплексор CD4051/74HC4051. Много вариантов от других производителей.

CD4051 — это 8 канальный аналоговый CMOS мультиплексор/демультиплексор. ДЛя увеличения количества аналоговых входов на 7 потребуется 1 аналоговый и 3 цифровых входа.

Функциональная схема работы мультиплексора/демультиплексора CD4051

Мультиплексор передает сигнал с одного из нескольких входов на единственный выход. Демультиплексор, напротив, передает сигнал с единственного входа на один из информационных выходов.

Если приобретать модуль на Aliexpress, то цена будет в районе 0,8 USD за 8 каналов, 16-ти разрядное АЦП ADS1115 — 1,5 USD за 4 канала. Если же приобретать только микросхему CD4051, то цена будет гораздо ниже микросхемы АЦП.

Увеличение количества цифровых GPIO входов/выходов

Плата увеличения количества GPIO портов.

Для увеличения количества цифровых входов можно воспользоваться добротной платой расширителя GPIO на 8 Входов/Выходов. Она хорошо документирована, исполнена на высоком техническом уровне. Хотя, ценник не Aliexpress-а. 🙂 При изготовлении нескольких сотен устройств, себестоимость конечного устройства существенно вырастет.

Посмотрим, что есть на сей счет есть у китайских собратьев. А у них конечно-же что-то есть и недорого. 🙂


8-канальный расширитель GPIO на чипе PCF8574 с DIP переключателями для назначения I2C адреса 8-канальный расширитель GPIO на чипе PCF8574 с джамперами для назначения I2C адреса. Эту плату можно каскадировать.

Сразу отмечу качественное исполнение модулей по цене в районе 1 USD. Чип от TI PCF8574 обеспечивает 8 каналов ввода-вывода (GPIO) управляемых по шине I2C. Есть выход INT соединяемый с входом микроконтроллера поддерживающим обработку прерываний. При возникновении прерывания на одном из входов платы расширения, прерывание транслируется микроконтроллеру для дальнейшей приоритетной обработки поступившего сигнала.

Конструктивно синие модули удобно каскадировать, втыкая один в другой. Адрес устройств удобно задается либо DIP переключателями, либо джамперами. Возможно подключение внутренних pullup резисторов на +5V.


16-ти канальный расширитель GPIO на чипе PCF8575

Старший брат TI PCF8575 позволяет получить 16 GPIO портов за цену в два раза выше. Но реализация платы попроще. никаких DIP переключателей для выбора адреса I2C. Зато 16 каналов в компактном исполнении.

Аналогичный чип от компании Microchip на 16 входов для расширения количества GPIO портов, MCP23017. Есть вариант для шины I2C и более шустрый для SPI (MCP23S17). Китайские продавцы нередко указывают в описании товара чип MCP23S17, однако по фото платы видно, что чип MCP23017. Обращайте на это внимание!

Аналогичный чип на 8 портов — MCP23008.

MCP23017 плата увеличения GPIO для микроконтроллеров

Цена этого варианта модуля в районе 1,5 USD. Исполнение платы попроще обойдется почти в два раза дешевле. Чип позволяет обеспечить увеличение GPIO на 8+8=16. Как и чип от Texas Instruments помимо входов для подключения устройств есть два выхода прерываний на каждый блок из 8 устройств. Этот чип позволяет работать на частоте до 1,7 МГц и 10 MHz для версии под шину SPI, в отличие от чипа PCF8574 для которого верхний предел 400 кГц. Также возможно подключение внутренних pullup резисторов на +5V. Схема подключения платы к ESP8266 разобрано здесь.

SX1509 модуль для увеличения количества GPIO.

Ещё один 8+8=16-ти канальный расширитель количества GPIO с Aliexpress на чипе SX1509. Библиотека и описание от Sparkfun. Чип дороже, чем ранее представленные. По ТТХ чип очень похож на ранее рассмотренные варианты. Работает на частоте 400 кГц. Есть встроенная поддержка ШИМ (PWM) на выходах.

Чип «заточен» для работы с LED и клавиатурой. В части LED из-за наличия ШИМ позволяет управлять яркостью светодидов, выполнять затухание, моргание и пр. Есть в наличии выход INT для трансляции прерываний микроконтроллеру. Поддерживаются встроенные pull-up, pull-down резисторы на входах.

GPIO expander от Fairchild (ON Semiconductor) FXL6408UMX. Аналогично 8 портов управляемых по шине I2C. Datasheet.

Выходы управления реле

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

MAX4820/4821 — транзисторые сборки управляемые по SPI/параллельному интерфейсу 8 выходов. Коммутируют максимум 5 V нагрузку.

TPIC2603 — управляемая по последовательному интерфейсу SDI сборка на 6 каналов.

TPIC2802 — управление по последовательному интерфейсу 8 каналами с током по 1А на канал.

MC33996 — управляемый по шине SPI коммутатор 16 выходов.

RTC

Подключение внешнего кварцевого резонатора к ESP32

По одним статьям RTC в ESP32 — это не Real Time Clock, а ядро низкого энергопотребления. Однако, по другим все-же Real Time Clock, но плохого качества (+-5%), который не стоит использовать в бизнес-приложениях.

Возможно, проблема неточности встроенного RTC может быть решена добавлением внешнего кварцевого резонатора. Я нашел упоминание о схеме подключения карцевого резонатора к контактам RTC_GPIO8/RTC_GPIO9. Но непонятно как запитывать встроенный RTC от батарейки. Отдельного входа RTC VBAT нет.

В общем, не факт, что удастся сэкономить на входе. 🙁 Особенно, если нужен data logger, а не только RTC. В data logger RTC уже встроен и SPI выводы на чтение/запись придется отдать :-(. Хотя в data logger RTC нередко подключается на шину I2C.

Подключение датчиков 4..20 мА

рассмотрено в статье.

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

В теории к одной шине I2C можно подключить до 127 устройств. У каждого из устройств должен быть свой уникальный адрес. Нередко адрес устройства один и жестко «прошит», поэтому нельзя подключить на одну шину несколько таких модулей. Входов I2C в ESP всего 1 (2 у ESP32) шт.

Для подключения I2C устройств с совпадающими адресами используются I2C мультиплексоры. На Aliexpress из недорогих доступен I2C extender на чипе TCA9548A. Цена в районе 1 USD с доставкой в Россию.

8-канальный I2C мультиплексор на чипе TCA9548A

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

Фактически, мультиплексор обеспечивает временную прямую коммутацию GPIO микроконтроллера с выбранным устройством по его номеру. Это некоторый недорогой workaround для решения проблем с конфликтом адресов I2C.

Интерфейс RS485

Модуль интерфейса RS485 для Arduino/ESP8266/ESP32

Подробный обзор досупных модулей реализующих RS485 интерфейс сделал в статье.

Подключение K-Type термопар

Модуль MAX6675 для подключения термопары K-Type к
микроконтроллеру по шине SPI

Подключение термопар к ESP32/ESP8266/Arduino с помощью модулей MAX6675 и MAX31855.

Увеличение количества UART (RX/TX) портов

Для некоторых задач есть необходимость увеличения количества последовательных портов. Для старших моделей Arduino, например, Mega, острой необходимости в увеличении последовательных портов нет, там их достаточно. Однако для ESP8266 задача вполне актуальна, учитывая что там только один hardware serial port, да и тот нередко занят под распаянный на плате USB ковертер. Можно эмулировать работу последовательного порта на GPIO с помощью SoftSerial, но не для всех задач это приемлемо.

Расширение одного последовательного порта UART (RX/TX) на
8-мь дополнительных последовательных портов

Решение от компании AtlasScientific — 8:1 Serial Port Expander самое дорогое. Цена в районе 15$ без доставки довольно высока, хотя если сравнивать с одно и двух портовыми модулями, то цена за порт меньше 2 $, что выгоднее чем у 1-2-х портовых собратьев.


SC16IS760 модуль для конвертации I2C / SPI на один UART порт

Есть конвертеры I2C в один порт UART и 8 GPIO портов на чипе SC16IS750. Стоят порядка 4 $ с оставкой в Россию. SPI вариант на чипе
SC16IS760. Учитывая, что на одну шину можно вешать несколько модулей — можно набрать нужное количество. SPI порт достаточно шустрый, чтобы обеспечить подключение достаточно большого количества таких модулей.

SC16IS762 модуль для конвертации I2C / SPI на два UART порта

Есть старший собрат ковертера I2C в два порта UART и 8 GPIO портов на чипе SC16IS752. Стоят порядка 5 $. SPI вариант на чипе SC16IS762.

Плат на чипах MAX14830, MAX3107, MAX3108, MAX3109 я на Aliexpress не нашел.

Схемное решение для получения 4-х портов UART.

Заключение

На этом краткий обзор по вариантам расширения входов микроконтроллеров завершаю. В дальнейшем рассмотрю работу с указанными модулями подробнее.

Аналоговый мультиплексор 74HC4067 (16 каналов)

// 74HC4067 (16 to 1)

// В данном примере реализована возможность выбора необходимого порта мультиплексора и считывание с него сигнала через аналоговый порт A0 платы Arduino UNO

 

// контакты модуля 74HC4067 S0…S3 подключены к портам Arduino UNO D7…D4

// контакт модуля 74HC4067 SIG подключен к аналоговому порту Arduino UNO A0

// конфигурации портов D7…D4 для выбора активного порта мультиплексора

byte controlPins[] = {B00000000,

                  B10000000,

                  B01000000,

                  B11000000,

                  B00100000,

                  B10100000,

                  B01100000,

                  B11100000,

                  B00010000,

                  B10010000,

                  B01010000,

                  B11010000,

                  B00110000,

                  B10110000,

                  B01110000,

                  B11110000 };

 

// для хранения данных, полученных с мультиплексора                  

byte muxValues[] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,};

 

void setup()

{

  Serial.begin(9600);

  DDRD = B11111111; // конфигурирование портов PORTD (цифровые порты 7~0)

}

 

void setPin(int outputPin)

// функция для выбора активного порта мультиплексора 74HC4067

{

  PORTD = controlPins[outputPin];

}

 

void displayData()

// вывод данных, полученных с портов мультиплексора в монитор серийного порта

{

  Serial.println();

  Serial.println(«Values from multiplexer:»);

  Serial.println(«========================»);

  for (int i = 0; i < 16; i++)

  {

    Serial.print(«input I»);

    Serial.print(i);

    Serial.print(» = «);

    Serial.println(muxValues[i]);

  }

  Serial.println(«========================»);  

}

 

void loop()

{

  for (int i = 0; i < 16; i++)

  {

    setPin(i); // выбираем активный порт 74HC4067

    muxValues[i]=analogRead(0); // читаем значения, полученные с выбранного порта мультиплексора

  }

 

  // выводим полученные данные в монитор порта

  displayData();

  delay(2000);

}

Arduino Nano и 74HC595 — расширяем порты вывода: trampampamparam — LiveJournal

Как я уже рассказывал, я заказал три более или менее не пересекающихся набора датчиков для Ардуино. В обоих комплектах ко мне приехала микросхема 74HC595, которая так и осталась лежать в боксе до поры до времени. До поры до времени я даже не знал, что это за микросхема, и как вообще этот черный тараканчик промаркирован.

Но настали черные дни, когда мне перестало хватать выходных сигналов Arduino Nano, когда я занимался созданием устройства для тестирования шаговых двигателей. (TODO: вставить ссылку на статью о тестере ШД, когда будет готова). Моё устройство для тестирования ШД в результате вышло довольно комплексным — двухстрочный дисплей 1602 с системой меню, управляемое полнофункциональной клавиатурой 4×4, 3 цифровых разряда для установки величины микрошага ШД, сигналы Step и Dir для шагового двигателя, и тп. Казалось бы, самое время мигрировать на другую версию Arduino. Но моя природная лень воспротивилась этой миграции. И ленивая голова стала искать решение.

Было принято решение искать решение на базе уже того, что есть. Перебирая платки и детальки из наборов, я заметил 16ти-пинового черного «жука». Сначала в одном наборе, потом в другом. Решил поинтересоваться, что же это за деталь, и зачем её добавляют в наборы. Зачем её кладут в кит-наборы, я не понял, но саму микросхему нашел на сайте NXP.

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

Условное обозначение микросхемы 74НС595 (из даташита)

Описание выводов


КонтактНаименованиеОписание и подключение
10~MRMaster Reset — сброс, активный уровень низкий. В идеальном случае неплохо бы сделать схему сброса, которая сначала подает низкий уровень на этот вход, а затем переводит его в единичное состояние. Но можно не возиться, и подключить его на +5В. В этом случае на выходе до первой записи будут случайные значения
13~OEOutput Enable — разрешение выхода, активный уровень низкий. При подаче 0 на выходы подается содержимое регистра, при подаче 1 — выходы отключаются, переводятся в Z-состояние, что позволяет использовать одну шину попеременно разным устройствам. Подключаем на землю, если не нужно управлять состоянием выходов
14DSSerial Data In — последовательный вход. На этот вход следует подавать значение входного сигнала до подачи тактового сигнала сдвига SHCP
11SHCPShift Register Input clock — тактовый вход сдвигового регистра. Для вдвигания бита в регистр следует подать переход с 0 на 1. Когда возвращать в 0 — на усмотрение. Можно — сразу же, можно — непосредственно перед вдвиганием. В первом случае можно считать, что переключение происходит по фронту прямого сигнала, во втором — по спаду инверсного. См. также ниже замечания по быстродействию. Также по приходу этого сигнала изменяется значение последовательного выхода Q7/S
12STCPStorage Register Clock Input — тактовый вход регистра защелки. По фронту данного импульса происходит перенос значения со сдвигового регистра на параллельные выходы Q0-Q7
9Q7SSerial Data Output — последовательный выход. На него выводится значение старшего разряда сдвигового регистра. Данный выход может использоваться для масштабирования сдвигового регистра до 16ти-разрядной, 24х-разрядной и т.д. схемы
15, 1-7Q0, Q1-7Выходы регистра-защелки. Сигнал на них переносится с внутреннего сдвигового регистра по приходу сигнала STCP
8GNDПитание — общий провод
16VCCПитание — +

Питание


HC версия микросхемы требует от 2В до 6В питания, версия HCT (TTL-совместимая) — от 4.5В до 5.5В. HCT — TTL — а оно вообще еще используется? Ардуино же вроде само по себе CMOS, так что HCT не нужно, но если нужно согласовывать уровни с внешними TTL потребителями, то можно запитать HC от 3.3В, тогда уровни сигналов будут совместимы с TTL. А вообще, с 5ти-вольтовым Ардуино должны работать и HC, и HCT. В интернетах так пишут.

Что более важно, так это блокировочные конденсаторы. Без них схема может работать не так, как задумано, и более того, непредсказуемо. Теоретически, в цепи питания каждого корпуса нужно ставить 0.1мкФ конденсатор. Это значение ёмкости я вычислил как среднее по интернету. Моя схема вполне заработала и без него. Чтобы уточнить, залез было в библию схемотехника, чтобы уточнить — Хилл и Хоровиц, «Искусство схемотехники» — это почти как «Искусство Программирования» Дональда Кнутта, но только для железячников (к слову, Хилл и Хоровиц гораздо ближе к народу, Кнутт через-чур умничает) — но там блокировочными конденсаторами похоже называют развязывающие по входам конденсаторы. Жаль, хорошая книга, но очень отстала уже от жизни. У меня второе или третье русское издание конца 90ых или начала 0ых годов, оригинал скорее всего ещё лет на 10 старше. На третьем, розовом томе, обнаружил наклейку — «14руб» — как же дешево тогда всё было, по современным меркам. А прошло-то всего 15 лет или чуть больше. Аж ностальгия замучала.

Быстродействие


В титле даташита 74HC595 пишут, что она работает на 100МГц. Беглый взгляд на графики и таблицы даташита говорит, что самые большие тайминги в диапазоне температур от -40C до +85C при питании 4.5В — 10-20нс (100-50МГц). С теми частотами, на которых работают Ардуино, ничего больше знать не требуется. Возможно, только то, что стандартные библиотечные digitalRead/digitalWrite — огромнейшие тормоза из-за различных проверок, и их можно (и нужно) переписать в виде более быстрой версии. В планах есть поковырять это и написать поподробнее, но пока у меня нет особой нужды.

Быстродействие Arduino Nano и библиотеки Arduino в плане скорости переключения выходов и обработки входов по моим наблюдениям где-то посередине от единиц килогерц до десятков килогерц. Так что, на мой взгляд, при написании кода для управления сдвиговым регистром 74HC595 нет нужды озадачиваться какими-либо задержками при установке управляющих сигналов.

Другое дело, что для 8ми разрядного последовательного расширителя следует делить максимальную доступную на Ардуино частоту переключения выходов — установили DS, установили SHCP в 1, сбросили SHCP (в 0) — 8 раз, и установка/сброс STCP. Итого, на вскидку, 3*8 + 2 = 26 операций digitalWrite. Итого выходит примерно в 25 раз медленнее, чем может сама Ардуинка.

При масштабировании до 16ти, 24х или 32х выходов замедление будет соответственно примерно 3*16 + 2 = 50, 3*24 + 2 = 74 и 3*32 + 2 = 98 раз.

Для управления чем-то действительно быстрым, очевидно, такой расширитель на сдвиговом регистре 74HC595 не подходит, но, в некоторых применениях, для задания редко меняющихся статичных сигналов вполне подходит. Так, например, я использовал такой расширитель для задания 3х-разрядного режима микрошага для установки режима микрошага для драйвера ШД DRV8825 в тестере для шаговых двигателей. К слову, мне это пока не особо пригодилось — шаговики из матричных принтеров ужасно работают в микрошаговом режиме, по крайней мере, под управлением драйвера DRV8825 — так, например, в режиме микрошага 1/2 половина шага какая-то вялая и не уверенная, только вторая половина бодрая и мощная. Поэтому при использовании микрошага при малейшем усилии на ось ШД он первые пол-шаги начинал пропускать. Остальные режимы микрошага я как-то после этого и не исследовал на имеющихся принтерных ШД.

Масштабирование


Расширитель выходов Ардуино на базе 74HC595 достаточно элементарно из 8ми-разрядной версии может быть переделан в схему любой разрядности. Для этого последовательный выход младшего регистра Q7S нужно соединить со входом DS более старшего, а линии SHCP и STCP соединить параллельно. Ну, и, в зависимости от принятого схемотехнического и программного решения, нужно выбрать, как подключать линии ~MR и ~OE.

Расширение ввода


Расширение линий ввода для Ардуино в принципе похоже на расширение вывода, с учетом того, что нужно не задавать значение DS на выходе, а считывать его на входе, и использовать микросхему типа 74HC597. Впрочем, это я пока на практике не проверял.

Мультиплексирование


Увеличить количество выходных линий, которыми управляет Ардуина, можно двумя способами: 1) увеличить разрядность одного последовательного выхода, что при увеличении разрядности в два, три или четыре раза соответственно уменьшает в два, три или четыре раза быстродействие расширителя; 2) параллельным подключением нескольких расширителей, при этом задействуя один дополнительный выход на каждый расширитель, что может сохранить быстродействие на приемлемом уровне, но требует использования как минимум одного выхода Ардуино для каждого расширителя.

Если не управлять прямо сигналами регистра 74HC595 — ~MR, ~OE с Ардуино, то достаточно только трех выходов Ардуино для управления сигналами DS, SHCP и STCP сдвигового регистра, чтобы при помощи микросхемы 74HC595 превратить их в 8 или 16 или больше выходных сигналов.

Для мультиплексирования нескольких расширителей на базе 74HC595 можно пойти двумя путями: 1) для каждого расширителя сигнала выделить отдельный latch сигнал — т.е. все регистры на шине параллельно сдвигают поступающие данные, и, соответственно, сдвигают значения на выходах внутреннего сдвигового регистра, но только один передает значение из внутреннего сдвигового регистра на выходы микросхемы; 2) сигналы сдвига передаются только на один из расширителей, а перенос значений сигналов на выход происходит одновременно для всех модулей расширения.

Я больше склонен использовать вариант, когда во внутренних сдвиговых регистрах может находится всё, что угодно (вариант 1), а на выходе зафиксировано какое-то из предыдущих значений, и вот почему: при переносе значений из внутреннего сдвигового регистра на выход могут происходить неконтролируемые переходы из 0 в 1 и обратно, какой-то дребезг сигнала, даже если исходное значение во внутреннем регистре и на выходе одно и то же. И, на мой взгляд, операцию переноса состояния внутреннего регистра сдвига на выходы 74HC595 следует использовать как можно реже.

Программная поддержка


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

GEEGROW.RU / Контроллер DaVinci (ATmega32u4) Цена: 949.00 руб.

Описание

DaVinci — это Arduino-совместимый контроллер на основе МК Atmega32U4. Фактически, это аналог Arduino Leonardo и он полностью совместим с Arduino IDE, работает на большинстве операционных систем. При этом платформа DaVinci имеет ряд улучшений, направленных на расширение возможностей и упрощение работы с контроллером.

[1].   Микроконтроллер ATmega32U4 имеет 14 цифровых портов ввода/вывода, 7 из которых могут быть ШИМ (PWM) выводами. Кроме того на плате имеется 11 аналоговых входов (АЦП), 32Кб флеш-памяти, 2Кб ОЗУ, 1Кб EEPROM, USB порт, интерфейсы I2C и ISP.
[2], [11], [12].   Порты ввода/вывода — предназначены для подключения аналоговых и цифровых устройств. Порты A0..A11 умеют работать с аналого-цифровым преобразователем (АЦП). Их можно использовать для подключения аналоговых модулей.
[3].   Порты питания — служат для подачи питания на подключаемые модули. Порт VIN подключен к входной шине питания и напряжение на нем может быть больше 5В. Будьте внимательны!
[4].   Кнопка Reset — осуществляет перезагрузку контроллера. Она бывает полезна когда контроллер завис или если вы хотите запустить выполнение программы сначала.
[5].   Выключатель питания — полностью обесточивает плату. Его удобно использовать, если не хочется каждый раз вынимать питающий кабель.
[6].   Разъем для подачи внешнего питания от стабилизированного источника постоянного напряжения 7..12В. Источником может быть блок питания, сборка аккумуляторов или батареек.
[7].   Индикаторные светодиоды — помогают понять процессы, которыми занят контроллер: 
TX и RX мигают когда контроллер обменивается данными с компьютером
PWR загорается при подаче питания
LD подключен к порту контроллера номер 13 и, соответственно, его режимы можно программировать. 
[8].   Разъем micro-USB — используется для загрузки программы в контроллер. В момент, когда контроллер подключен к USB порту компьютера, плата не нуждается в дополнительном внешнем питании. Питание поступает от компьютера.
[9]. Дополнительная гребенка питания для подачи питающего напряжения от контроллера к внешним модулям.
[10]. Гребенка для подключения сервоприводов напрямую к контроллеру без дополнительных шилдов.

Функциональное назначение портов

IDE — нумерация портов согласно принятой в среде программирования Arduino IDE.
ADC — порты АЦП позволяют обрабатывать аналоговые сигналы.
POWER — порты, предназначенные для питания внешних модулей и других нужд.
PWM — порты с возможностью генерации ШИМ сигнала. Позволяют плавно управлять внешними модулями, например, светодиодами, моторами и т.д. Подробнее эта тема будет рассмотрена в последующих уроках.
SERIAL — порты, предназначенные для подключения устройств через последовательный интерфейс.
INTERRUPT — порты, работающие с внешними прерываниями. Работа с прерываниями будет рассмотрена в одном из уроков.

Совместимость с платформой Arduino

Проектируя контроллер DaVinci мы ставили цель улучшить его насколько это возможно, при этом сохранив совместимость с оригинальной платой Arduino Leonardo. Расположение всех основных разъемов на плате, крепежные отверстия и габариты самой платы остались неизменны. Это позволяет использовать совместно с DaVinci любые шилды, разработанные для стандартной версии. Разъемы питания и USB также не претерпели никаких изменений.

Кроме этого, контроллер полностью совместим со средой программирования Arduino IDE, поэтому можно работать с ним точно так же, как с Arduino Leonardo.

Питание

Питание контроллера может осуществляться от компьютерного порта USB в случае, когда контроллер подключен к компьютеру. Если контроллер работает автономно или имеется необходимость подключить более мощную нагрузку, потребляющую ток > 500мА, можно подать питание через разъем DC 5.5/2.5мм. Подать напряжение на Geeduino можно от источника питания постоянного тока 7-12В. Лучше выбирать блок питания с запасом по току, например, 1.5А и больше, чтобы исключить работу БП на пределе возможностей.

Уровень питающего напряжения на плате VCC можно выбирать специальной перемычкой 3.3В/5В. Это позволяет работать с внешними устройствами, поддерживающими различный TTL уровень.

Знакомство со средой разработки Arduino IDE

Знакомство со средой разработки Arduino IDE

Цель работы

Знакомство с базовыми функциями среды разработки Arduino IDE

Задачи работы

  1. Установка среды разработки.
  2. Дополнительные настройки для ОС Linux.
  3. Подключение платы Arduino к среде.
  4. Загрузка примера из набора примеров.
  5. Управление библиотеками.

Инструменты для выполения работы

  1. Компьютер с подключением к сети Internet.
  2. Плата Arduino с USB выходом (например, Arduino Uno).

Теоретическая часть


Платформа Arduino представляет собой семейство микроконтроллеров на базе процессоров Atmel, STM и ARM. Все микроконтроллеры программируются на языке C/C++ в среде разработки Arduino IDE. Большая часть плат Arduino (кроме маленьких, таких как micro, pro mini) имеют идентичное расположение выводов (пинов, pins) и позволяют подключать унифицированные сторонние модули, называемые шилдами (Shield). На всех платах имеется набор цифровых и аналоговых пинов, а так же интерфейсы SPI и I2C. Для работы со сторонними модулями в среде разработки имеется менеджер библиотек, куда собраны наиболее часто используемые для Arduino библиотеки.   Большинство микроконтроллеров имеют поддержку USB (встроенную либо вынесенную в отдельный преобразователь) и подключаются к операционной системе как последовательный порт. Последовательный порт (COM порт) — специальный порт для последовательной передачи данных между устройствами. Может быть аппаратным (специальный COM разъем на материнской плате ПК), либо эмулируется  поверх другого аппаратного протокола (например, поверх USB, как в случае с Arduino). Последовательный порт используется для загрузки программы на микроконтроллер, а так же может использоваться для взаимодействия ПК и программы для микроконтроллера (в Arduino IDE по другому эта программа называется «скетч»).
Скетч для микроконтроллера Arduino представляет собой файл с расширением .ino, содержащий код на языке C/C++ (https://ru.wikipedia.org/wiki/C%2B%2B). Код состоит из нескольких основных блоков:
  1. Подключения заголовочных файлов библиотек.
  2. Объявления глобальных переменных, констант, макроопределений.
  3. Определение пользовательских функций, структур и классов.
  4. Функция setup() — вызывается один раз в начале работы программы, в ней должна производится инициальзация контроллера — настройка пинов, запуск последовательного порта, SPI и I2C интерфейсов.
  5. Функция loop() — вызывается микроконтроллером в бесконечном цикле, в ней производится основная работа.
После загрузки на микроконтроллер программа созраняется даже после отключения Arduino, до тех пор, пока она не будет перезаписана новой программой.

Выполнение работы

Установка среды разработки


Открываем веб-браузер, заходим на https://www.arduino.cc/en/Main/Software и скачиваем нужную версию среды разработки для установленной на ПК операционной системы. На момент написания лабораторной работы последняя версия 1.8.3. Запускаем установщик для ОС Windows или распаковываем архив.

Дополнительные настройки для ОС Linux

Для того, чтобы была возможность подключить плату к среде разработки на ОС Linux, необходимо добавить пользователя в группу dialout. Это можно сделать либо при помощи стандартного интерфейса управления пользователями и группами (если присутствует), либо командой
$ sudo usermod -aG dialout

Подключение платы к среде разработки

Подключаем плату к ПК USB кабелем. В среде разработки указываем нужную плату (на плате указано ее наименование):

Далее указываем нужный порт:

(На ОС Windows будут названия портов вида COM1, COM2, и т.д.)
Вызвав пункт меню «Инструменты -> Get board info», можно проверить, что на выбранном порту действительно находится нужная плата.

 

Загрузка примера из набора примеров

Выбираем из библиотеки примеров скетч Blink (Файл -> Примеры -> 0.1Basics -> Blink). Проверяем выбранный порт и плату. Нажимаем кнопку Загрузить () или выбираем «Скетч -> Загрузка». После загрузки скетча на плате должен начать мигать светодиод раз в секунду.
 

Управление библиотеками


Иногда в процессе работы возникает необходимость подключения к скетчу сторонних библиотек, например, для работы с различными датчиками. Библиотека представляет собой набор заголовочных и файлов (с расширением .h) и файлов с исходным кодом (расширение .c или .cpp). При подключении библиотеки в скетч добавляются подключения нужных заголовочных файлов (строки вида #include <…>).
Для примера, подключим одну из стандартных библиотек Wire. Выбираем «Скетч -> Подключить библиотеку -> Wire». При этом IDE автоматически добавит изменения в скетч, необходимые для подключения библиотеки. В верху файла скетча должна появиться строка:

#include <Wire.h>

Использвать данную библиотеку мы будет позднее в работах по взаимодействию с некоторыми датчиками.
Сразу после установки в среде разработки уже доступен базовый набор библиотек (в том числе Wire из примера выше). Остальные библиотеки сначала нужно загрузить в IDE, для этого используется менеджер библиотек. Выбираем пункт меню «Скетч -> Подключить библиотеку -> Управление библиотеками». В менеджере присутствует множество библиотек для работы с различными модулями/протоколами и т.п. После загрузки библиотеки она становится доступна для подключения к скетчу.

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

arduino-uno — Mac OSX Yosemite нет последовательных портов для Uno R3

У меня MacBook Pro работает OS X Yosemite (10.10.3). Я подключил свой Arduino UNO R3 к компьютеру в первый раз после обновления Yosemite — он работал отлично до этого!

Когда я открыл IDE Arduino, я выбрал Tools> Совет> «Arduino UNO», но когда я пытаюсь выбрать последовательный порт, возможны следующие варианты:

/dev/tty.Bluetooth-Incoming-Port
/dev/cu.Bluetooth-Incoming-Port
/dev/tty.Bluetooth-Modem
/dev/cu.Bluetooth-Modem

Я следил за несколькими учебниками и потоками о том, как «исправить» эту проблему, все безрезультатно:

Я установил последнюю версию драйверов FTDI (хотя, из того, что я помню, UNO даже не нуждается в них): FTDIUSBSerialDriver_v2_3.dmg

Досрочно. версию драйвера FTDI, надеясь, что это прояснит это: /Тома /FTDIUSBSerialDriver_v2_2_18

Я последовал за учебником по удалению существующих драйверов Apple и удалению файлов kext и т. д.

Пробовал подключать arduino к обоим портам USB.

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

Пробовал установку обновленных драйверов Silabs: последовательный порт совместимого с Arduino, не отображающий Mac OSX

Прогулка по всему руководству Arduino Mac OSX: http://www.arduino.cc/ru/guide/macOSX

Изучив системную информацию моего Macbook Pro, я вижу, что USB-контроллер основан на Broadcom, в случае, если это помогает. Я искал драйверы Broadcom USB, но вместо этого получил хиты для Silabs.

В разделе Мои Инструменты> Меню порта. Я вижу эти параметры: выбор параметра «Последовательные порты» ничего не делает.

Запуск ls -1 /dev /tty. * или ls -l /dev/tty.usb * из терминала дает мне:

/dev/tty.Bluetooth-Incoming-Port
/dev/tty.Bluetooth-Modem

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

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

ПРИМЕЧАНИЕ: Это законный Uno R3, а не клоун.

Amazon.com: MCP23017 16-битный модуль расширения порта ввода-вывода Интерфейс I2C для Arduino: Industrial & Scientific

Мы продаем 100% новые и качественные товары. Вы можете получить здесь то, что хотите, по конкурентоспособной цене! Не сомневайтесь, просто купите!

Описание:

— 16-канальный модуль расширения ввода / вывода интерфейса 12C, использует микросхему MCP23017 от MicroChip.
— Каждый ввод-вывод может быть произвольно сконфигурирован как ввод или вывод, а также может быть установлен подтягивающий резистор.
— IO, сконфигурированный как вход, может запускать функцию прерывания. Интерфейс ввода-вывода имеет высокую управляемую способность, а потребляемый ток и ток потребления могут достигать 25 мА.
— MCP23017 — это высокоскоростной интерфейс IIC. Он поддерживает частоту IIC 100 кГц, 400 кГц и 1,7 МГц. Чип имеет 3 адресных контакта, на которые можно установить до 8 разных адресов. Таким образом, 8 модулей могут быть подключены через две шины IIC для достижения до 128 расширений ввода-вывода.
— Этот модуль отличается гибкостью конфигурации и хорошими способностями к вождению.Есть много параллельных подключений.

Спецификация:

— Рабочее напряжение: 3,0-5,5 В
— Микросхема привода: MCP23017
— Количество входов / выходов: 16 (вход, выход, прерывание)
— Источник питания привода: 25 мАч
— Частота 12C: 100 кГц , 400 кГц, 1,7 МГц
— Рабочая температура: от -40 ℃ до 125 ℃
— Уровень микросхемы: промышленный класс
— Параллельное несколько: до 8
— Программа привода: 51 и Arduino
— Размер: прибл. 65 мм x 19 мм

— VCC: вход источника питания, 3.0V-5.5V
— GND: отрицательный электрод питания, 0V
— SCL: линия синхронизации 12C, SCL подключения вывода IO MCU или интерфейса MCU 12C
— SDA: линия данных 12C, SDA подключения вывода IO MCU или интерфейса MCU 12C
— RST: восстановление микросхемы, низкий уровень эффективности, подключение вывода MCU IO или неподключено
— ITA: выход прерывания порта GPIOA, подключение вывода MCU IO, без подключения при прерывании
— ITB: выход прерывания порта GPIOB, подключение вывода MCU IO, без подключения при прерывании

В коплект входит:

1 шт. 16-битный модуль расширения ввода-вывода интерфейса I2C

OPEN-SMART Модуль расширения порта ввода-вывода Плата расширения датчика, совместимая с Arduino UNO

Описание продукта

Описание:

Этот сенсорный экран (плата расширения ввода-вывода) совместим с Ar duino UNO / Leonardo / Mega2560.

Это соединительный мост между модулем электронного строительного блока и платой Arduino.

Он расширяет интерфейс SPI, интерфейс UART, интерфейс I2C, интерфейс PWM и аналоговый интерфейс платы Arduino, поэтому энтузиасты DIY, интерактивные дизайнеры ar duino могут быстро прикрепить модули к плате Arduino и ускорить разработку проекта.

Характеристики:

1. Совместимость с Arduino UNO R3, Leonardo R3, Mega2560 R3

2.Встроенная схема сброса, индикатор питания и сброса.

3. Штыревые разъемы имеют шаг 2,54 мм.

В пакет включено:

1 модуль расширения порта OPEN-SMART IO

Более подробные фотографии:










Дополнительная информация

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

Авиапочта и регистрация авиапочтой Площадь Время
США, Канада 10-25 рабочих дней
Австралия, Новая Зеландия, Сингапур 10-25 рабочих дней
Великобритания, Франция, Испания, Германия, Нидерланды, Япония, Бельгия, Дания, Финляндия, Ирландия, Норвегия, Португалия, Швеция, Швейцария 10-25 рабочих дней
Италия, Бразилия, Россия 10-45 рабочих дней
Другие страны 10-35 рабочих дней
Ускоренная доставка 7-15 рабочих дней по всему миру

Мы принимаем оплату через PayPal , и кредитную карту.

Оплата через PayPal / кредитную карту —

ПРИМЕЧАНИЕ. Ваш заказ будет отправлен на ваш адрес PayPal. Убедитесь, что вы выбрали или ввели правильный адрес доставки.

1) Войдите в свою учетную запись или воспользуйтесь кредитной картой Express.

2) Введите данные своей карты, и заказ будет отправлен на ваш адрес PayPal. и нажмите «Отправить».

3) Ваш платеж будет обработан, и квитанция будет отправлена ​​на ваш почтовый ящик.

Отказ от ответственности: это отзывы пользователей.Результаты могут отличаться от человека к человеку.

Расширьте свой Raspberry Pi с помощью портов Arduino

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

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

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

Мы также хотим показать все взаимодействия между портами, оборудованием и датчиками в приятном пользовательском интерфейсе (UI), например:

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

1. Начало работы

Первый шаг — расширить порты Raspberry Pi, чтобы также использовать порты Arduino. Это возможно с помощью встроенной в Linux реализации последовательной связи ARM, которая позволяет вам использовать порты Arduino цифровой, аналоговой и широтно-импульсной модуляции (PWM) для запуска приложения на Raspberry Pi.

В этом проекте используется TotalCross, комплект разработки программного обеспечения с открытым исходным кодом для создания пользовательского интерфейса для встроенных устройств, для выполнения внешних приложений через терминал и использования встроенной последовательной связи.Для этого можно использовать два класса: Runtime.exec и PortConnector. Они представляют собой разные способы выполнения этих действий, поэтому в этом руководстве мы покажем, как использовать оба, и вы сможете решить, какой из них лучше всего подходит для вас.

Для запуска этого проекта вам необходимо:

  • 1 Raspberry Pi 3
  • 1 Arduino Uno
  • 3 светодиода
  • 2 резистора от 1 кОм до 2,2 кОм
  • 1 кнопка
  • 1 потенциометр между 1 кОм и 50 кОм
  • 1 макетная плата
  • Джемперы

2.Установите Arduino

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

2.1 Определите формат сообщения

Каждое полученное сообщение будет иметь следующий формат:

  • Индикация вызываемой функции
  • Используемый порт
  • Разделитель символов, при необходимости
  • Значение для отправки, если необходимо
  • Индикация окончания сообщения

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

Персонажи Функция Пример Описание примера
* Конец инструкции
, Сепаратор
# Установить режим # 8,0 * Контакт 8, режим ввода
< Установить цифровое значение <1,0 * Установить нижний штифт 1
> Получить цифровое значение> 13 * Вывод значения 13
+ Получить значение ШИМ + 6250 * Установить значение пина 6 250
Получить аналоговое значение-14 * Получить значение, вывод A0

2.2 Исходный код

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

 void setup () {
Serial.begin (9600);
Serial.println («Подключено»);
Serial.println («Ожидание команды ...»);
}

void loop () {
String text = "";
символьный символ;
Строка булавки = "";
Строковое значение = «0»;
разделитель символов = '.';
char inst = '.';

а (серийный.available ()) {// проверяем, что RX получает данные
delay (10);
символ = Serial.read ();
if (character == '*') {
действие (inst, pin, value);
перерыв;
}
else {
text.concat (character);}

if (character == ',') {
separator = character;

if (inst == '.') {
inst = character;}
else if (separator! = ',' && character! = Inst) {
pin.concat (character);}
else if (character! = разделитель && символ! = inst) {значение
.concat (character);}
}
}

void action (char инструкция, String pin, String value) {
if (command == '#') {// pinMode
pinMode (pin.toInt (), value. toInt ());
}

if (struction == '<') {// digitalWrite
digitalWrite (pin.toInt (), value.toInt ());
}

if (command == '>') {// digitalRead
String aux = pin + ':' + String (digitalRead (pin.toInt ()));
Serial.println (доп.);
}

if (command == '+') {// analogWrite = PWM
analogWrite (pin.toInt (), значение.toInt ());
}

if (command == '-') {// analogRead
String aux = pin + ':' + String (analogRead (pin.toInt ()));
Serial.println (доп.);
}
}

2.3 Сборка электроники

Определите, что вам нужно протестировать, чтобы проверить связь с Arduino и убедиться, что входы и выходы работают должным образом:

  • Светодиоды подключены с положительной логикой. Подключитесь к контакту GND через резистор и активируйте его с помощью цифрового порта I / O 2 и PWM 3.
  • Кнопка имеет понижающий резистор, подключенный к цифровому порту I / O 4, который отправляет сигнал 0, если не нажат, и 1, если нажата.
  • Потенциометр соединен центральным контактом с аналоговым входом A0, причем один из боковых контактов находится на плюсе, а другой — на минусе.

2.4 Тестовая связь

Отправьте код из раздела 2.2 в Arduino. Откройте монитор последовательного порта и проверьте протокол связи, отправив следующие команды:

 

# 2,1 * <2,1 *> 2 *
# 3,1 * + 3,10 *
# 4,0 *> 4 *
# 14,0 * -14 *

Это должно быть результатом последовательного монитора:

Один светодиод на устройстве должен гореть с максимальной яркостью, а другой с меньшей яркостью.

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


 

Должны появиться две строки:

3. Настройте Raspberry Pi

Используйте Raspberry Pi для доступа к последовательному порту через терминал, используя команду cat для чтения записей и команду echo для отправки сообщения.

3.1 Проведите серийный тест

Подключите Arduino к одному из USB-портов Raspberry Pi, откройте терминал и выполните эту команду:

  cat / dev / ttyUSB0 9600  

Это инициирует соединение с Arduino и отобразит то, что возвращается в серийный номер.

Чтобы проверить отправку команд, откройте новое окно терминала (не закрывая предыдущее) и отправьте эту команду:

  echo "команда"> / dev / ttyUSB0 9600  

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

Вы должны увидеть обратную связь в первом терминале вместе с тем же результатом, что и в разделе 2.4:

4. Создайте графический интерфейс пользователя

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

В этой первой части используются два компонента пользовательского интерфейса: Listbox и Edit.Они устанавливают соединение между Raspberry Pi и Arduino и проверяют, что все работает должным образом.

Смоделируйте терминал, куда вы вводите команды и ждете ответов:

  • Edit используется для отправки сообщений. Поместите его внизу с такой шириной FILL, которая расширяет компонент на всю ширину экрана.
  • Listbox используется для отображения результатов, например, в терминале. Добавьте его в ВЕРХНЮЮ позицию, начиная с ЛЕВОЙ стороны, с шириной, равной Edit, и высотой FIT, чтобы вертикально занять все пространство, не заполненное Edit.
 пакет com.totalcross.sample.serial; 

импорт totalcross.sys.Settings;
import totalcross.ui.Edit;
импорт totalcross.ui.ListBox;
импорт totalcross.ui.MainWindow;
import totalcross.ui.gfx.Color;

открытый класс SerialSample расширяет MainWindow {
ListBox Output;
Редактировать ввод;
общедоступный SerialSample () {
setUIStyle (Settings.MATERIAL_UI);
}

@Override
public void initUI () {
Input = new Edit ();
добавить (Ввод, СЛЕВА, ВНИЗ, ЗАПОЛНЕНИЕ, ПРЕДПОЧТИТЕЛЬНЫЙ);
Выход = новый ListBox ();
Выход.setBackForeColors (Color.BLACK, Color.WHITE);
добавить (Выход, ВЛЕВО, ВЕРХ, ЗАПОЛНИТЬ, УСТАНОВИТЬ);
}
}

Должно получиться так:

5. Настроить последовательную связь

Как указано выше, есть два способа установить последовательную связь: Runtime.exec и PortConnector.

5.1 Вариант 1. Используйте Runtime.exec

Класс java.lang.Runtime позволяет приложению создавать интерфейс соединения со средой, в которой оно выполняется.Это позволяет программе использовать встроенную последовательную связь Raspberry Pi.

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

Прочитать серийник

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

Следующий код создает новый процесс в этом потоке, который выполняет команду cat , проверяет серийный номер и запускает бесконечный цикл, чтобы проверить, получено ли что-то новое.Если что-то получено, значение добавляется в следующую строку компонента Listbox. Этот процесс будет продолжаться, пока работает приложение:

 новая резьба () {
@Override
public void run () {
попробуйте {
Процесс Runexec2 = Runtime.getRuntime (). Exec ("cat / dev / ttyUSB0 9600 \ n");
LineReader lineReader = новый LineReader (Stream.asStream (Runexec2.getInputStream ()));
Строковый ввод;

в то время как (правда) {
если ((input = lineReader.readLine ())! = ноль) {
Output.add (ввод);
Output.selectLast ();
Output.repaintNow ();
}
}
} catch (IOException ioe) {
ioe.printStackTrace ();
}
}
}.Начало();
}
Отправить команды

Отправка команд — более простой процесс. Это происходит всякий раз, когда вы нажимаете Введите в компоненте «Правка».

Чтобы перенаправить команды на устройство, как показано в разделе 3.1, вы должны создать экземпляр нового терминала. Для этого класс Runtime должен выполнить команду sh в Linux:

 попробовать {
Runexec = Runtime.getRuntime (). Exec ("sh"). GetOutputStream ()} catch (IOException ioe) {
ioe.printStackTrace ();
}

После того, как пользователь записывает команду в Edit и нажимает Enter , приложение запускает событие, которое выполняет команду echo со значением, указанным в Edit:

 Ввод.addKeyListener (новый KeyListener () {

@Override
public void specialkeyPressed (KeyEvent e) {
if (e.key == SpecialKeys.ENTER) {
String s = Input.getText ();
Input.clear ();
попробуйте {
Runexec.write (("echo \" "+ s +" \ "> / dev / ttyUSB0 9600 \ n"). getBytes ());
} catch (IOException ioe) {
ioe.printStackTrace ();
}
}
}

@Override
public void keyPressed (KeyEvent e) {} // автоматически сгенерировать код
@Override
public void actionkeyPressed (KeyEvent e) {} // автоматически сгенерировать код
});

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

Исходный код Runtime.exec

Ниже приведен исходный код со всеми объяснениями. Он включает поток, который будет читать серийный номер в строке 31 и KeyListener , который будет отправлять команды в строке 55:

 пакет com.totalcross.sample.serial; 
импорт totalcross.ui.MainWindow;
import totalcross.ui.event.KeyEvent;
import totalcross.ui.event.KeyListener;
import totalcross.ui.gfx.Color;
импорт всегокросс.ui.Edit;
импорт totalcross.ui.ListBox;
import java.io.IOException;
импорт java.io.OutputStream;
импорт totalcross.io.LineReader;
импорт totalcross.io.Stream;
импорт totalcross.sys.Settings;
импорт totalcross.sys.SpecialKeys;

открытый класс SerialSample расширяет MainWindow {
OutputStream Runexec;
ListBox Output;

общедоступный SerialSample () {
setUIStyle (Settings.MATERIAL_UI);
}

@Override
public void initUI () {
Edit Input = new Edit ();
добавить (Ввод, СЛЕВА, ВНИЗ, ЗАПОЛНЕНИЕ, ПРЕДПОЧТИТЕЛЬНЫЙ);
Выход = новый ListBox ();
Выход.setBackForeColors (Color.BLACK, Color.WHITE);
добавить (Выход, ВЛЕВО, ВЕРХ, ЗАПОЛНИТЬ, УСТАНОВИТЬ);
new Thread () {
@Override
public void run () {
try {
Process Runexec2 = Runtime.getRuntime (). Exec ("cat / dev / ttyUSB0 9600 \ n");
LineReader lineReader = новый
LineReader (Stream.asStream (Runexec2.getInputStream ()));
Строковый ввод;

while (true) {
if ((input = lineReader.readLine ())! = null) {
Output.add (ввод);
Output.selectLast ();
Output.repaintNow ();
}
}

} catch (IOException ioe) {
ioe.printStackTrace ();
}
}
} .start ();

попробуйте {
Runexec = Runtime.getRuntime (). Exec ("sh"). GetOutputStream ();
} catch (IOException ioe) {
ioe.printStackTrace ();
}

Input.addKeyListener (new KeyListener () {
@Override
public void specialkeyPressed (KeyEvent e) {
if (e.key == SpecialKeys.ENTER) {
String s = Input.getText ();
Input .clear ();
попробуйте {
Runexec.write (("echo \" "+ s +" \ "> / dev / ttyUSB0 9600 \ n"). getBytes ());
} catch (IOException ioe) {
ioe.printStackTrace ();
}
}
}

@Override
public void keyPressed (KeyEvent e) {
}
@Override
public void actionkeyPressed (KeyEvent e) {
}
});
}
}

5.2 Вариант 2: Используйте PortConnector

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

Измените исходный код для работы с PortConnector:

 пакет com.totalcross.sample.serial; 
импорт totalcross.io.LineReader;
import totalcross.io.device.PortConnector;
импорт totalcross.sys.Settings;
импорт totalcross.sys.SpecialKeys;
import totalcross.ui.Edit;
импорт totalcross.ui.ListBox;
импорт totalcross.ui.MainWindow;
import totalcross.ui.event.KeyEvent;
import totalcross.ui.event.KeyListener;
импорт всегокросс.ui.gfx.Color;

открытый класс SerialSample расширяет MainWindow {
PortConnector pc;
ListBox Output;

общедоступный SerialSample () {
setUIStyle (Settings.MATERIAL_UI);
}

@Override
public void initUI () {
Edit Input = new Edit ();
добавить (Ввод, СЛЕВА, ВНИЗ, ЗАПОЛНЕНИЕ, ПРЕДПОЧТИТЕЛЬНЫЙ);
Выход = новый ListBox ();
Output.setBackForeColors (Color.BLACK, Color.WHITE);
добавить (Выход, ВЛЕВО, ВЕРХ, ЗАПОЛНИТЬ, УСТАНОВИТЬ);
new Thread () {
@Override
public void run () {
try {
pc = new PortConnector (PortConnector.USB, 9600);
LineReader lineReader = новый LineReader (pc);
Строковый ввод;
while (true) {
if ((input = lineReader.readLine ())! = Null) {
Output.add (вход);
Output.selectLast ();
Output.repaintNow ();
}
}
} catch (totalcross.io.IOException ioe) {
ioe.printStackTrace ();
}
}
} .start ();
Input.addKeyListener (новый KeyListener () {
@Override
public void specialkeyPressed (KeyEvent e) {
if (e.key == SpecialKeys.ENTER) {
String s = Input.getText ();
Input.clear ( );
попробуйте {
pc.writeBytes (s);
} catch (totalcross.io.IOException ioe) {
ioe.printStackTrace ();
}
}
}

@Override
public void keyPressed (KeyEvent e) {
}

@Override
public void actionkeyPressed (KeyEvent e) {
}
});
}
}

Вы можете найти весь код в репозитории проекта.

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

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

В будущей статье будет использоваться реализация PortConnector (поскольку она ориентирована на последовательное соединение) для завершения связи со всеми датчиками. Он также добавит цифровой ввод и завершит UI.

Вот несколько ссылок для дополнительного чтения:

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

Arduino Dock 2 | Onion Omega2 Документация

Док-станция Arduino 2

Arduino Dock 2 — это наша версия платы Arduino Uno R3 с наддувом. Эти две платы используют один и тот же микроконтроллер, микроконтроллер ATmel ATmega328P (MCU), и имеют идентичное расположение выводов. Это позволяет вам использовать любые щиты Arduino, которые вы использовали с Arduino Uno R3, с док-станцией Arduino и Omega.

Omega может программировать микроконтроллер при подключении к плате. Это означает, что вы можете подключиться к Omega по беспроводной сети, а затем запрограммировать MCU для работы с Arduino без проводов!

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

Док-станция Arduino включает в себя заголовок внутрисхемного последовательного программирования (ICSP) для вывода контактов SPI, которые можно использовать для программирования микроконтроллера док-станции Arduino с помощью внешнего программатора. Кроме того, есть порт USB-хоста, который подключается к Omega, который может использоваться для любого типа приложений USB.

Док-станцию ​​можно подключить через разъем microUSB или через разъем DC Barrel.

Подключение Omega

Чтобы подключить Omega к док-станции Arduino, совместите края Omega с фиолетовыми линиями на док-станции Arduino, как показано ниже:

Убедитесь, что ваш Omega опущен до упора, как показано на рисунке ниже:

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

Порт MicroUSB

Порт MicroUSB используется для подачи питания на док-станцию ​​Arduino, которая, в свою очередь, подает питание на Omega и микросхему ATmega328P.

Порт MicroUSB получает питание 5 В и использует его напрямую для питания микросхемы ATmega328P. Док-станция оснащена регулятором напряжения для понижения напряжения до 3,3 В, необходимых для Omega.

Нет USB-to-Serial

На док-станции нет микросхемы USB-to-Serial. Это означает, что , а не , не сможет подключиться к Omega последовательно через порт Micro-USB.

Вы по-прежнему можете подключиться к терминалу Omega с помощью SSH, вы можете узнать, как это сделать, в этом руководстве по подключению к Omega.

Домкрат для цилиндров постоянного тока

Цилиндрический разъем постоянного тока может также использоваться для подачи питания на Omega с помощью адаптера постоянного тока. Мы рекомендуем любой источник питания постоянного тока, обеспечивающий 5 В и не менее 0,5 А. Безопасно использовать блоки питания, обеспечивающие более 0,5 А при напряжении 5 В.

Обратите внимание, что цилиндрический разъем постоянного тока док-станции Arduino следует использовать только с источниками питания 5 В постоянного тока.Если используется более высокое напряжение, ваши док-станции Omega и Arduino могут быть повреждены!

Кнопка сброса

Кнопка сброса на док-станции подключена напрямую к GPIO сброса Omega. Нажатие этой кнопки выполняет одно из двух действий: перезагрузка или восстановление заводских настроек.

Перезагрузка

Кратковременное нажатие и отпускание кнопки сброса приведет к перезагрузке Omega OS.

Заводское восстановление

Нажатие и удерживание кнопки сброса 10 секунд, а затем отпускание вызовет восстановление заводских настроек.

Предупреждение: это сбросит вашу Omega на файловую систему по умолчанию из последнего обновления прошивки, это приведет к удалению ВСЕХ ваших данных!

Кнопка сброса микроконтроллера

Помимо кнопки сброса Omega, док-станция Arduino Dock 2 оснащена кнопкой сброса микроконтроллера. Эту кнопку можно использовать для сброса микросхемы ATmega в любое время. Это приведет к сбросу Omega НЕ .

USB-порт Omega

USB-порт Omega можно использовать для подключения к любым устройствам, а именно к USB-накопителю, чтобы увеличить объем памяти Omega.Порт USB поддерживает USB 2.0 и представляет собой разъем типа A.

Подключение Omega к микроконтроллеру ATmega

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

Поскольку микроконтроллер работает от 5 В, а Omega работает от 3,3 В, док-станция Arduino оснащена преобразователем логического уровня из 3,3 В в 5 В для всех соединений между микроконтроллером и Omega.Это позволяет каждому устройству работать при собственном напряжении, но при этом дает им возможность понимать друг друга.

В таблице ниже показаны соединения между Omega и микроконтроллером ATmega:

UART1 Последовательные контакты
I2C I2C
GPIO 15 SPI SCK
GPIO 16 SPI MOSI
GPIO 17 SPI MISO
GPIO 19 Сброс

Назначение этих подключений описано в подразделах ниже.

Соединение UART

Соединение UART используется для обеспечения двусторонней связи между Omega и ATmega MCU. Последовательный порт ATmega подключен к последовательному порту UART1 Omega.

См. Статью о взаимодействии с последовательными устройствами для получения дополнительной информации.

I2C

Соединение I2C обеспечивает соединение I2C между Omega и ATmega. В большинстве случаев Omega настроен как ведущий, а ATmega как ведомый.

Это полезно при использовании устройств I2C на 5 В. Подключите их к контактам I2C ATmega, и Omega сможет их прочитать благодаря встроенному логическому переключателю уровня.

См. Статью о взаимодействии с устройствами I2C для получения дополнительной информации.

SPI и соединение сброса

Четыре соединения SPI используются для загрузки в ATmega эскизов с помощью Omega. См. Статью о перепрошивке микроконтроллера док-станции Arduino для получения дополнительной информации.

Соединение сброса используется для сброса микросхемы ATmega.Это можно сделать с помощью кнопки сброса или с помощью GPIO 19.

на Omega.

Чертежи механики

Мы предоставили подробную схему размеров и геометрии Arduino Dock 2.

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

Док-станция Arduino Dock 2 оснащена функциями, которые позволяют с легкостью использовать Omega с микросхемой ATmega. Вы можете запрограммировать или сбросить микроконтроллер с помощью GPIO Omega и даже подключиться к последовательному порту ATmega с помощью UART Omega.

Программирование микроконтроллера Arduino

Выполните действия, описанные в разделе «Перепрограммирование микроконтроллера», чтобы узнать, как загружать скетчи (программы) в микроконтроллер Arduino на док-станции Arduino.

Обмен данными через UART

Самый простой способ установить связь между MCU док-станции Arduino и Omega — через последовательный порт. Нет никаких причудливых протоколов, просто данные пересылаются туда и обратно. Важно помнить, что последовательный порт ATmega подключен к UART1 на Omega.

Взгляните на нашу статью «Связь с последовательными устройствами», чтобы узнать, как заставить Omega взаимодействовать с микроконтроллером док-станции Arduino!

Связь с I2C

Arduino Dock 2 соединяет линии I2C микроконтроллера с линиями Omega, эффективно добавляя микроконтроллер в качестве подчиненного устройства к шине I2C Omega.

Взгляните на нашу статью «Связь с устройствами I2C», чтобы получить дополнительную информацию о I2C и о том, как Omega может взаимодействовать с устройствами I2C.На стороне микроконтроллера Wire Library может использоваться для облегчения связи I2C.

Подключение нескольких датчиков к одному последовательному порту Arduino Uno

В этом руководстве мы расширим один последовательный порт Arduino Uno UART (Rx / Tx), чтобы можно было подключить несколько датчиков Atlas. Расширение осуществляется с помощью платы расширения последовательного порта 8: 1. Порт Arduino связан с расширителем, после чего сигнал направляется на восемь портов, к которым подключены периферийные устройства.Для простоты мы будем использовать три порта, но, выполнив еще несколько шагов, вы можете сделать расширение для использования всех восьми.

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

Преимущества

  • Расширение одного последовательного порта UART (Rx / Tx) на восемь дополнительных портов.
  • Легко отслеживайте, какой канал открыт, с помощью встроенных светодиодов на модуле расширения.
  • Работает со следующими датчиками Atlas EZO: pH, соленость, растворенный кислород (DO), температура, окислительно-восстановительный потенциал (ОВП), диоксид углерода (CO2), перистальтический насос.
  • Выходные данные датчика и взаимодействие с пользователем в реальном времени.

Шаг 1. Сборка оборудования

Соберите оборудование, как показано на схеме выше.

Убедитесь, что датчики находятся в режиме UART, прежде чем подключать их к расширителю.Для получения информации о том, как переключаться между протоколами, см. Следующую ССЫЛКУ.

Чувствительность датчиков — это то, что придает им высокую точность. Но это также означает, что они подвержены помехам от другой электроники, и поэтому необходима электрическая изоляция. Изоляторы напряжения используются для изоляции датчиков растворенного кислорода и pH от датчика солености. Без изоляторов показания ошибочны. Для получения дополнительной информации об изоляции см. Следующую ССЫЛКУ.

Datasheets : 8: 1 расширитель последовательного порта, EZO DO, EZO EC, EZO pH, изолятор напряжения

Шаг 2: Загрузка программы в Arduino

Код этого руководства использует настроенную библиотеку и файл заголовка для Цепи EZO в режиме UART. Вам нужно будет добавить их в вашу Arduino IDE, чтобы использовать код. Приведенные ниже шаги включают процесс добавления в среду IDE.

a) Загрузите Ezo_uart_lib, zip-папку с GitHub на свой компьютер.

b) На вашем компьютере откройте IDE Arduino (вы можете загрузить IDE ЗДЕСЬ, если у вас ее нет).

c) В среде IDE перейдите к Sketch -> Включить библиотеку -> Добавить библиотеку ZIP -> Выберите папку Ezo_uart_lib, которую вы только что загрузили . Соответствующие файлы теперь включены.

d) Скопируйте код из Serial_port_expander_example на рабочую панель IDE. Вы также можете получить к нему доступ из загруженной выше папки Ezo_uart_lib.

e) Скомпилируйте и загрузите код Serial_port_expander_example в ваш Arduino Uno.

f) Последовательный монитор используется как канал связи. Чтобы открыть последовательный монитор, перейдите к Tools -> Serial Monito r или нажмите Ctrl + Shift + M на клавиатуре. Установите скорость передачи 9600 и выберите «Возврат каретки». Теперь показания датчика должны отображаться постоянно, и пользователь сможет взаимодействовать с отдельными датчиками.

Демонстрация

Чтобы открыть канал, обозначенный P1-P8 на плате Expander, отправьте номер канала, за которым следует двоеточие и команда (если есть). Завершите строку символом возврата каретки (клавиша ENTER на клавиатуре). Например, 3: i откроет третий канал и запросит информацию об устройстве.

Чтобы открыть канал и не отправлять команду, просто введите номер канала с двоеточием. Завершите строку символом возврата каретки (клавиша ENTER на клавиатуре). Например, 2: откроет второй канал.Теперь вы можете отправлять любые команды, относящиеся к этому датчику, например, cal,? , который будет сообщать информацию о калибровке. Список команд см. В технических паспортах датчиков.

Развитие этого проекта

Как показано, мы использовали только три из восьми портов. Чтобы использовать больше портов, следуйте схеме подключения, показанной на шаге 1, и расширьте список до портов 4, 5 и т. Д. При необходимости установите изоляторы. Пример кода Serial_port_expander_example также потребует некоторой модификации.См. Комментарии в коде для руководства.

Расширитель портов Arduino

Расширитель портов Arduino

В принципе, такие рюкзаки строятся вокруг PCF8574 (от NXP), который представляет собой двунаправленный 8-разрядный расширитель портов ввода / вывода общего назначения, использующий протокол I2C. PCF8574 представляет собой кремниевую КМОП-схему, обеспечивающую расширение удаленного ввода-вывода общего назначения (8-битное квазидвунаправленное) для большинства семейств микроконтроллеров через двухполюсную двунаправленную шину (I2C …

pinBase — любое число выше 64, которое не соответствует не конфликтует с любым другим модулем расширения wiringPi, spiPort равен 0 или 1 для одного из двух портов SPI на Pi, а devId — это идентификатор этого MCP23x08 или MCP23s17 на порту SPI.Здесь не нужно указывать количество контактов, так как MCP23s08 имеет 8 контактов, а MCP23s17 — 16 контактов.

Описание Добавьте еще 16 контактов к микроконтроллеру с помощью расширителя портов MCP23017. MCP23017 использует два контакта i2c (они могут использоваться совместно с другими устройствами i2c), а взамен дает вам 16 контактов общего назначения. Вы можете настроить каждый из 16 контактов на вход, выход или вход с подтяжкой.

20 июля 2015 г. · Поскольку эти клавиатуры используют 7 или 8 контактов io, в некоторых проектах может быть лучше использовать их вместе с расширителем портов IIC.Вы можете найти некоторые модули на aliexpress (и, вероятно, на ebay тоже) с 8 цифровыми портами на базе чипа 8574 по цене менее 5 долларов.

10 августа 2016 г. — ЖК-модуль для работы с MPCNC. Вставлена ​​SD-карта, поэтому для работы ПК не требуется.

Слева мы видим Arduino UNO с двумя проводами i 2 c, идущими от контактов A4 — SDA и A5 — SCL, два резистора 4,7 кОм используются для подтяжки, расширители портов соединены гирляндой по этой шине с использованием контактов 12 — SCL и 13 — SDA. Посмотрите, как установлены адреса на контактах 15, 16 и 17, и обратите внимание на резистор 1 кОм на контакте сброса (18…

Arduino IDE; LUA; Raspberry Pi; МАГАЗИН; Категория: Расширитель портов. ESPBasic ESP Basic — PCA9685-16Channel 12-bit PWM I²C-bus LED controller Driver — Part 1.

— Fri Jul 01, 2016 9:14 am # 50025 Пошаговое руководство по программированию нового ESP8266 PCF8575 — 16 бит Плата расширения порта ввода / вывода. Часть 1: Инициализация и запись данных в 16-битный порт ввода-вывода.

Обновление прошивки роутера Askey

Я предпочитаю использовать обычные расширители портов вместо регистров сдвига.i2c упрощает жизнь, и вы можете решать только группу из 8 или 16 задач за раз, и вам не нужно «перекладывать» на всех. I2C ограничен 400 кГц, в то время как SPI поддерживает частоту до 50 МГц, I2C требует адресации и, в конечном счете, дороже, чем регистры сдвига. Все расширители портов Arduino pcf8574 i2c от Blick. Анализируйте расширитель портов Arduino pcf8574 i2c. Um zu wissen, dass ein Arduino pcf8574 i2c port expander die gewünschten Ergebnisse liefert, sollten Sie sich die Resultate und Meinungen zufriedener Nutzer im Web ansehen.Studien können fast nie zurate gezogen werden, da sie ausgesprochen teuer sind und im …

Seiki tv screen black

PCF8574 — это 8-битный расширитель порта ввода / вывода, который использует протокол I2C. Этот протокол обменивается данными с использованием 2-проводного последовательного интерфейса, где один провод является последовательным тактовым сигналом (SCL), а другой — для последовательных данных (SDA). С этой ИС вы можете использовать только 2 порта вашей платы Arduino для управления до 8 цифровых портов ввода / вывода.

IO Expansion Shield для Arduino Nano специально разработан для облегчения простого соединения между Expansion Shield For Arduino Nano и многими другими устройствами.По сути, он расширяется до контроллера Arduino Nano, чтобы связать эти устройства простым и безотказным образом.

22 августа 2016 г. · MCP23008 8-контактный расширитель портов с интерфейсом I2C IC с Arduino. Это позволяет иметь больше цифровых GPIO на Arduino или любом другом uc. Пример драйвера MPDMv7.5 Arduino IDE Для более подробного описания, пожалуйста, взгляните на Часть 1: MPDMv7.5 AC Dimmer devboard Обзор MPDMv7.5 AC Dimmer devboard также доступен в магазине Tindie. Очень простой пример драйвера MPDMv7.5 Arduino IDE : const int vcntPin = Подробнее…

Моя первая поездка на автобусе 200 слов

Эта плата расширения увеличивает в четыре раза ваш модуль GPIO.Каждую булавку теперь можно использовать четыре раза. Один определенный контакт может использоваться на всех четырех портах GPIO. Благодаря очень компактной конструкции плата не занимает много места.

PCF8574 — это 8-битный расширитель портов ввода / вывода, использующий протокол I2C. Используя эту ИС, вы можете использовать только выводы SDA и SCL вашей платы Arduino для управления до 8 портами цифрового ввода / вывода. A0, A1, A2 — это адреса…

Arduino — PCF8574 και LCD (расширитель портов. Θα ήθελα μια διευκρίνιση. Μου τελειωνουν τα контакты στον arduino uno.και … Arduino ESP32 использует последовательный порт для прошивки программного обеспечения и печати информации на Терминале. ESP32 поддерживает 3 последовательных порта, поэтому вам не нужно использовать SoftwareSerial, как в общем случае Arduino. В этом руководстве мы заботимся только об использовании нескольких последовательных портов на Arduino ESP32 для вывода отладочной информации в Терминал.

Обзор Moto x pure edition

Это расширитель на 16 портов с интерфейсами I2C или SPI. Если версия SPI может мирно жить с интерфейсом MMC, тогда я выберу это — она ​​может работать быстрее, чем версия I2C.Будут времена, когда я буду читать из MMC и одновременно управлять адресными строками через расширитель.

Exar Corporation представляет семейства продуктов расширителей XRA120x I²C / SMBus GPIO и XRA140x SPI GPIO — всего 12 предложений устройств.

16-разрядный расширитель портов ввода / вывода MCP23S17 (SPI) MCP23S17 обеспечивает 16-разрядное расширение параллельного ввода / вывода общего назначения для приложений SPI. 16-битный порт ввода-вывода функционально состоит из двух 8-битных портов (PORTA и PORTB). MCP23S17 можно настроить для работы в 8-битном или 16-битном режиме.У нас также есть версия этого чипа I2C здесь MCP23017. Особенности Amazon.com: Расширитель портов i2c. … Comimark 3Pcs PCF8574 PCF8574T I2C 8-битный модуль расширения ввода-вывода GPIO для Arduino и Raspberry Pi. 5.0 из 5 звезд 3. $ 6.59 $ 6. 59.

WordPress bypass admin login

Arduino — PCF8574 και LCD (расширитель портов.

Клавиатура Arduino, разъемы для клавиатуры PS2, ИК-приемник Arduino, связь с ИК-передатчиком, MIDI-интерфейс Arduino, несколько кнопок с использованием 1 аналогового входа.Цифровой датчик температуры (DS18B20), простой датчик дождя с Arduino, вход переменного тока, расширитель портов (PCF8574xx), Shift (74HC595), привод двигателя (L298), шаговый привод (L293)

Arduino Uno R3, Arduino Due, загрузка XMC 1100 Комплект и XMC 4700 / XMC 4800 Relax Kits PROFET +2 12V Arduino Shield BTS7002-1EPP — CLEO-SPK1 2579512 RoHS. Модуль CleO-Speaker … Adafruit Arduino Camera Communications Dallas DS18B20 I2C Keyboard LCD ModMyPi Motor PCF8574AN Port Expander Remote Access Servo SMS Stepper Motor Temperature Xrdp Категории Arduino (3)

Rm2652 Охлаждающий блок

Характеристики: 16-бит расширитель порта ввода / вывода с выводом прерывания; Возможность каскадирования до 8 устройств на одной шине; Возможность приемника / источника 25 мА на ввод / вывод; Поддерживает 100 кГц, 400 кГц и 1.7 МГц, совместимые с I 2 C ™ режимы

Расширитель ввода / вывода последовательного порта В этой статье показано, как использовать микроконтроллер PIC16F84 с PicBasic для разработки быстрого и эффективного расширителя ввода / вывода с последовательным управлением. Использование PicBasic делает разработку таких удобных одночиповых устройств чрезвычайно простой.

… «Arduino-I2C-Port-Expander», который был разработан кем-то другим (не в нашей команде), который вы можете увидеть на [вход для просмотра URL-адреса], и мне нужен правильный кодировщик, чтобы изменить библиотеку, чтобы что он может отправить…PCF8574AN — Схема 8-битного расширителя портов I2C. Ссылка: CI-PCF8574AN. … Учебное пособие: расширитель портов ввода-вывода Arduino PCF8574 с расширением. Скачать. Даташит PCF8574AN; Клиенты Avis.

Бесплатные приложения для загрузки музыки для ноутбука

Wir haben im großen Arduino Port Expander Vergleich uns jene empfehlenswertesten Artikel verglichen und die wichtigsten Merkmale gegeneinander. Das Team vergleicht viele Faktoren und Verleihen dem Kandidat zum Schluss entscheidene Testnote. Узнайте больше о тестировании расширителя портов Arduino с помощью Sieger durchsetzen.

Расширение порта. Вскоре у меня закончились контакты GPIO с этим PIC, поэтому мне пришлось добавить расширитель портов I2C (MCP23008), чтобы получить еще 8 контактов ввода / вывода. Я также добавил переключатель I2C PCA9546 для переключения между разными уровнями напряжения. Вероятно, это не самое элегантное решение, и в будущей версии эти 3 микросхемы могут быть заменены на PIC с большим количеством выводов.

Мы подключим Arduino к плате расширения GPIO PCA9555 и посчитаем в двоичном формате по восьми светодиодам. Поставляется готовым к употреблению. Регистры команд: 0 Входной порт 0 1 Входной порт 1 2 Выходной порт 0 3 Выходной порт 1… Вот модуль arduino ky-039 heart beat. Вы л. Его волшебные огни с модулем arduino ky-027.

Стандартное отклонение thinkorswim

Код Arduino для отправки байта в сдвигающий регистр не такой сложный, поскольку метод shiftOut () является стандартной частью набора команд Arduino IDE. Предлагаемое чтение — это исходный код функции ShiftOut () на игровой площадке Arduino. Итак, чтобы отправить восемь битов в регистр сдвига, код аналогичен приведенному ниже примеру:

Вы можете посмотреть на A6281, он спроектирован как цепочка I2C, 3-канальная система ШИМ постоянного тока (диммирования), есть один или два продукта Arduino на основе этого чипа, и это довольно дешево (когда вы можете его получить).Об альтернативных расширителях портов вы можете посмотреть: -PCF8575; PCA9671; MCP23016 — Я много использовал его в своих проектах ».

Плата расширения портов Arduino — Лучшая защита портов расширения Arduino в Überblick! Wie sehen die Amazon.de Rezensionen aus? Obwohl die Meinungen dort immer wieder Manpuliert werden können, serveen sie im Gesamtpaket einen guten Gesamteindruck

Linksys lrt214 vpn client to gateway

9226 9226 9227 9226 9226 9226 9226 9226 9226 9226 9226 9226 9226 9226 9226 9226 9226 9226 9226 9226 9226 9227 и косвенные объектные местоимения испанский рабочий лист

Winchester sxp тактический обзор

подложка Mazatapec

Nokia прогноз акций 2021

Subaru Каталитический преобразователь отзыва

Osrs 9226 золоченый алтарь 9227 9227 роль в брожении во время процесса выпечки хлеба обзор

Les 6 chevaux abonnes

Fallout 3 Intel HD bypass

Лучшие аксессуары для клубных автомобилей

Определите массив с 10 целыми числами без знака в сборке

9 0002

Galaxy watch active 2 WhatsApp

Практический тест Эдисона в Южной Калифорнии

Программа кормления ветеринарного персонала Royal canin

Характеристики общего стола Roll20

Свойства атомов и руководство по изучению периодической таблицы


7

BIlinli MCP23017 16-битный модуль расширения портов ввода-вывода Интерфейс I2C для промышленных электрических макетных плат и аксессуаров Arduino C51 Powderhousebend.com

BIlinli MCP23017 16-битный модуль расширения порта ввода-вывода, контактная плата, интерфейс I2C для Arduino C51: Kitchen & Home. BIlinli MCP23017 16-битный модуль расширения порта ввода-вывода, контактная плата, интерфейс I2C для Arduino C51: Kitchen & Home. ❥Преимущество: 16-битная плата расширения порта ввода / вывода MCP23017 для платы разработки Arduino C51。 ❥Преимущество: поддержка стандартного интерфейса последовательной связи IIC 100 кГц, 400 кГц, 1,7 МГц обеспечивает высокую скорость передачи данных。 ❥Преимущество: можно установить 8 различных адресов связи Позволяет вам подключаться с 8 различными модулями и максимальным портом ввода / вывода до 128 портов ввода / вывода со стандартной последовательной связью IIC。 ❥Преимущество: профессиональный поставщик электронных компонентов, сверхтонкий производственный процесс, мелкие детали и долговечность.。 ❥Пакет включает: 1 x MCP23017 16-битный расширитель портов ввода-вывода, 1 x набор заголовков контактов。 Характеристики:。 MCP23017 16-битная плата расширения порта ввода / вывода для платы разработки Arduino C51。 Поддержка стандартного интерфейса последовательной связи IIC 100 кГц, 400 кГц, 1,7 МГц частота обеспечивает высокоскоростную передачу данных。 Можно установить 8 различных адресов связи, что позволяет подключаться к 8 различным модулям и максимальным портам ввода-вывода до 128 расширения портов ввода-вывода со стандартной последовательной связью IIC。。 Технические характеристики:。 Чип: MCP23017。 Рабочее напряжение : 3-5.5 В。 Управляющий ток: 25 мА。 Частота I2C: 100 кГц, 400 кГц, 1,7 МГц。 Количество параллельных подключений: 8 (макс.)。 Размер модуля: 65×19 мм / 2,56×0,75 дюйма (ДxШ)。 Количество: 1 комплект。。 Примечание:。 Допускается погрешность в 0-3 мм из-за ручного измерения. Пожалуйста, убедитесь, что вы не возражаете перед тем, как сделать ставку。 Из-за разницы между различными мониторами изображение может не отражать фактический цвет товара. Спасибо!。。 Нет розничной упаковки 。 В комплект входит:。 1 x MCP23017 16-битный расширитель портов ввода-вывода。 1 x набор разъемов для контактов。。。。





BIlinli MCP23017 16-битный модуль расширения порта ввода-вывода, контактная плата, интерфейс I2C для Arduino C51

Sharplace 4 Pack 8 футов на 1 дюйм Привязной ремень Крепежный ремень Грузовой ремень с металлической пряжкой с кулачковым замком, STAR SUPPLIES® Прочные серые почтовые пакеты для почтовых отправлений Почтовые пакеты Поли почтовые самоуплотняющиеся все размеры дешево.Чехол для ноутбука Vosarea для 13-дюймового Macbook Mac Air Pro Retina, черный неопрен, водостойкий, обеденная, 4 x ОДНО МАГНОЛИЧЕСКИЕ 3-СЛОЙНЫЕ БУМАЖНЫЕ САЛФЕТКИ, РАЗБОРКА, КРАФТ, IWL220 Iwe280 iWL252 Move 5000, Move 3500 CS-IML220SL Аккумулятор 2200 мАч NFC iWL220 GPRS iWL250 iWL255 iWL250 GPRS iWL251 iWL250 Bluetooth. SKF 6310-2Z / C3 Радиальный шарикоподшипник, однорядный, AZ Доставка ⭐⭐⭐⭐⭐ 3 датчика температуры и влажности DHT22 AM2302 для Arduino и Raspberry Pi, включая бесплатную электронную книгу !.16 мм SWA D210-16 Матрица типа C для гидравлического инструмента, длина 145 мм Stahlwille 65642145 6564 Хром-ванадиевый самозажимной гаечный ключ. Подача алюминия экструдера MK8 для Creality Ender 3 Pro CR-10 CR-10S Модернизированная замена правого экструдера Innovateking-EU Ender 3 Набор экструдеров для 3D-принтера, карта поиска 30 мм Диаметр сверления отверстия Электрическая резиновая прокладка для защиты провода. jp13u Набор 13 ключей с удлиненной головкой ESF Facom 83SH. Прозрачная упаковочная лента для посылок, 3 рулона, 24 мм x 66 м, обеспечивает надежное, надежное и липкое уплотнение.Серо-коричневый и темно-синий черный Возраст 3–14 лет Полуэластичные школьные брюки Zeco стандартного кроя с габардиновым углем, светящейся лентой Флуоресцентная флуоресцентная лента с высокой видимостью Транспортный ролик безопасности Дорожная лента 4 рулона, сине-белая светоотражающая наклейка SENRISE 3M X 50mm Светоотражающая предупреждающая лента.


Розничная торговля

Powder House предлагает самый большой выбор лыж, досок, ботинок и креплений в Центральном Орегоне от ведущих производителей отрасли.

Прочитайте больше
Аренда

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

Прочитайте больше
Услуги

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

Прочитайте больше
Лента Facebook
.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *