Какой самый простой способ подключить Arduino к WB напрямую?
USB, uart как-то еще?
И как считать данные из порта arduino?
думаю проще всего через UART.
Порт, выведенный на UEXT2 - это /dev/ttyNSC0
в линуксе. Дальше - зависит от того, на чём будете писать. Гуглить по “linux serial <ваш любимый язык>”.
Подключил к uext2 rx в tx и tx в rx.
root@wirenboard:~# stty 9600 -F /dev/ttyNSC0
root@wirenboard:~# cat /dev/ttyNSC0
Тишина.
Что еще надо настроить в WB чтобы увидеть данные?
прошу прощения, в WB SH порт /dev/ttyNSC1
Все работает.
Для меня подключение датчиков через ардуино единственный выход, т.к. осилить подключение напрямую к WB не получилось, за исключением 1-wire ds1820 и oregon.
Вот простой скрипт, который выводит полученное от Arduino в Mosquitto.
#!/bin/sh
while [ true ]
do
while read line
do
var1=$(echo $line | cut -f1 -d':' )
var2=$(echo $line | cut -f2 -d':' )
if [ -n "$var2" ]
then
mosquitto_pub -h localhost -t "/arduino/$var1" -m "$var2"
fi
done < /dev/ttyNSC1
/bin/sleep 10
done
В ардуине надо посылать в порт в таком виде (разделитель в скрипте двоеточие):
Serial.println("TemperatureOut_C: " + String(TemperatureOut_C) );
Данные этого скрипта видно на веб страничке HomA:
#!/bin/sh
mosquitto_pub -h localhost -t "/devices/arduino/meta/name" -m "Arduino on ttyNSC1"
mosquitto_pub -h localhost -t "/devices/arduino/controls/temperature/meta/type" -m "temperature"
mosquitto_pub -h localhost -t "/devices/arduino/controls/pressure/meta/type" -m "pressure"
mosquitto_pub -h localhost -t "/devices/arduino/controls/humidity/meta/type" -m "rel_humidity"
mosquitto_pub -h localhost -t "/devices/arduino/controls/pressure_mm/meta/type" -m "pressure"
while [ true ]
do
while read line
do
var1=$(echo $line | cut -f1 -d':' )
var2=$(echo $line | cut -f2 -d':' )
#temp_out_c=$(echo $line | cut -f1 -d'TemperatureOut_C:' )
#hum_out=$(echo $line | cut -f1 -d'HumidityOut_%:' )
#press_mm=$(echo $line | cut -f1 -d'Pressure_Mm:' )
#press_pa=$(echo $line | cut -f1 -d'Pressure_Pa:' )
if [ "$var1" = "TemperatureOut_C" ]
then
mosquitto_pub -h localhost -t "/devices/arduino/controls/temperature" -m "$var2"
fi
if [ "$var1" = "HumidityOut_%" ]
then
mosquitto_pub -h localhost -t "/devices/arduino/controls/humidity" -m "$var2"
fi
if [ "$var1" = "Pressure_Mm" ]
then
mosquitto_pub -h localhost -t "/devices/arduino/controls/pressure_mm" -m "$var2"
fi
if [ "$var1" = "Pressure_Pa" ]
then
mosquitto_pub -h localhost -t "/devices/arduino/controls/pressure" -m "$var2"
fi
done < /dev/ttyNSC1
/bin/sleep 10
done
как перезагрузить уарт (инициализировать), что-то после обновления linux-latest через час перестает отвечать уарт.
Скиньте пожалуйста лог (dmesg) на support@contactless.ru и версию (uname -a
, dpkg -l linux-latest
). У нас велись работы по драйверу UART. С другой стороне, на испытательном стенде аптайм сейчас неделя с постоянной работой по rs-485 и там этот новый драйвер стоит. В общем надо смотреть лог.
отправил
Запуск minicom оживляет порт.
Пока решение не нашлось хочу в cron добавить инициализацию порта раз в час - подскажите строку инициализации.
посмотрите в сторону stty