Управление светодиодной платой подключенной через I2C с помощью AT команд.

skubriev
Offline
Зарегистрирован: 22.01.2016

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

Programming and Running Test Code

Following Test Codes can be programmed in Arduino Due board to test Lower LED board:

● TLC59116_Debug

● TLC59116_Test

There are two registers associated with Lower LED Board Control:

1. DUTY_CYCLE_2 Register (Address 16)

2. LOWER_LED_ON Register for Lower LED Board (Address 28)

The DUTY_CYCLE_2 register sets Brightness level for the all 16 LEDs. The possible values are 0 to 255.

The LOWER_LED_ON register sets on of control of individual 16 LEDs.

Example AT Commands

AT+WR 16 127 // sets 50% duty cycle

AT+WR 28 1 // only turns on LED0 at 50% duty cycle

AT+WR 16 64 // sets duty cycle to 25%

AT+WR 28 65535 // turns on all LEDs at 25% duty cycle

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

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

Вопросы

1. Как надо подключать Arduino к PC, чтобы увиделся COM порт.

2. Чем лучше открыать COM порт ?

3. Есть ли какой либо мануал (ссылка с примерами как это делать)

4. Может быть я вообще не прав (и все обстоит совсем иначе)?

Спасибо большое.

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

При подключении последовательного порта - появится соотвествующеее устройство.

последовательные устройства перечисленны в каталоге /sys/class/tty/

Доступ к ним идет через файлы устройств в каталоге /dev/

Например если есть /sys/class/tty/ttyUSB0

то файл устройства будет /dev/ttyUSB0

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

echo "AT+WR 16 127" >> /dev/ttyUSB0

принимать данные можно командой cat /dev/ttyUSB0

принять одну строку можно командой head -n1 /dev/ttyUSB0

tty - это последовательные устройства

ttyUSB0, ttyUSB1, ... - подключенные по USB( USB-RS232 переходники такие как FT232, CH340)

ttyA0, ttyA1 -  обычно ком порты на материнской плате

ttyAC0, ttyAC1 - часто бывают GSM модемы

Но принципиальной разницы в их работе нет.

скорость работы устройств по умолчанию 115200 или 9600

настроить можно командой stty

skubriev
Offline
Зарегистрирован: 22.01.2016

Спасибо. Я попробовал, но результат отрицательный.


echo "AT+WR 16 127" >> /dev/ttyACM1
echo "AT+WR 16 64" >> /dev/ttyACM1
echo "AT+WR 28 1" >> /dev/ttyACM1
echo "AT+WR 28 65535" >> /dev/ttyACM1

That is what happens (kernel detect arduino, and gets errors when i tried to send data via echo):

[Fri Jan 22 13:46:42 2016] usb 1-1.4.4: new full-speed USB device number 27 using ehci-pci
[Fri Jan 22 13:46:42 2016] usb 1-1.4.4: New USB device found, idVendor=2a03, idProduct=003d
[Fri Jan 22 13:46:42 2016] usb 1-1.4.4: New USB device strings: Mfr=1, Product=2, SerialNumber=220
[Fri Jan 22 13:46:42 2016] usb 1-1.4.4: Product: Arduino Due Prog. Port
[Fri Jan 22 13:46:42 2016] usb 1-1.4.4: Manufacturer: Arduino (www.arduino.org)
[Fri Jan 22 13:46:42 2016] usb 1-1.4.4: SerialNumber: XXXXXXXXXXXXXXXXXXXXX
[Fri Jan 22 13:46:42 2016] cdc_acm 1-1.4.4:1.0: ttyACM1: USB ACM device
[Fri Jan 22 13:46:59 2016] cdc_acm 1-1.4.4:1.0: failed to set dtr/rts
[Fri Jan 22 13:47:54 2016] cdc_acm 1-1.4.4:1.0: failed to set dtr/rts
[Fri Jan 22 13:48:24 2016] cdc_acm 1-1.4.4:1.0: failed to set dtr/rts
[Fri Jan 22 13:48:42 2016] cdc_acm 1-1.4.4:1.0: failed to set dtr/rts
[Fri Jan 22 13:49:01 2016] cdc_acm 1-1.4.4:1.0: failed to set dtr/rts

То есть запись команд напрямую в порт ttyACM1 - ошибка kernel'а "failed to set dtr/rts"

Я пробовал подключать как usb, так и через prog. port - результат одинаковый. 

Еще я залил в arduino пустую программу ( setup и loop - пустые). Возможно дело в инициализации. Т.е. нужно в программе сначала проинициализировать все как надо. А после ни чего не включать. Далее уже пробовать AT командами управлять яркостью. В этих вопросах я пока новичок. Поэтому действую возможно не правильно.