Как читать аналоговые данные из GPIO, Android-штуки

Пытался прочитать аналоговые данные из gpio, но увидел только способ, который возвращает уровень сигнала как НИЗКИЙ или ВЫСОКИЙ (логическое значение). Не удалось найти решение в документации и в ссылках на код. Это вообще возможно сейчас?


person Markiyan Antonyuk    schedule 27.12.2016    source источник
comment
Можете указать, какие контакты вы используете, и вставить свой код?   -  person Jan Slominski    schedule 27.12.2016
comment
Например BCM13 (Rpi 3), но кода нет, просто не могу найти как оттуда читать с небулевым значением   -  person Markiyan Antonyuk    schedule 27.12.2016
comment
Я добавил интересное сообщение в блоге к своему первоначальному ответу, показывающее, как создать собственный модуль ADC для Android Things (автор сообщения включил библиотеку Android для его использования). Вы можете найти это полезным.   -  person Jan Slominski    schedule 03.01.2017
comment
Покрывая мою проблему: вы можете подключить Arduino, если он у вас есть, к RPI и использовать аналоговый ввод/вывод, переведенный через UART, сделал статью об этом: ссылка на статью   -  person Markiyan Antonyuk    schedule 05.01.2017
comment
Потрясающий! Завтра попробую!   -  person Jan Slominski    schedule 05.01.2017


Ответы (3)


Raspberry Pi 3 не имеет аналого-цифрового преобразователя, поэтому вы можете получать только логические значения (высокий/низкий) из его GPIO. Таким образом, для получения аналоговых данных вам необходимо использовать внешний модуль АЦП в вашем проекте.

РЕДАКТИРОВАТЬ: я нашел эту интересную запись в блоге, показывающую, как измерять аналоговый ввод на Android Things.

person Jan Slominski    schedule 27.12.2016

Для Raspberry Pi вам понадобится аналого-цифровой преобразователь, такой как ADS1115.

person diazdeteran    schedule 27.12.2016
comment
А как насчет плат, таких как Edison с разъемом Arduino, которые имеют аналоговые входные контакты? - person Paul Ruiz; 28.12.2016
comment
Intel Edison имеет 6 аналоговых входов (контакты A0-A5) и 6 аналоговых (PWM) выходов (контакты ~3,~5,~6, ~9, ~10, ~11). Чтобы прочитать датчик с аналогового входа, взгляните на это: developer. android.com/things/sdk/drivers/sensors.html. Чтобы использовать аналоговые выходы, проверьте: developer.android.com/things/sdk/ пио/pwm.html - person diazdeteran; 28.12.2016
comment
На самом деле у Edison с прорывом Arduino есть встроенный АЦП, который в настоящее время не поддерживается Android Things согласно code.google.com/p/android/issues/detail?id=230568 Итак, сейчас вы можете писать драйверы только для цифровых датчиков ввода, а не для аналоговых. - person Paul Ruiz; 29.12.2016

Если вы все еще ищете, я написал класс и образец для АЦП Adafruit MCP3008.

https://github.com/PaulTR/AndroidThingsMCP3008ADC

person Paul Ruiz    schedule 20.03.2017
comment
Привет, Пол, с TMP36, чтение канала 0 дает чтение 257, я думаю, что это неверно в соответствии с моей комнатной температурой, я только что использовал ваш код для MCP3008 с той же конфигурацией контактов. Любые предложения, что может быть не так? - person Mahendra Chhimwal; 06.08.2017
comment
@MahendraChhimwal Если это прямое чтение, вам, вероятно, нужно преобразовать его в температуру. Вы, вероятно, захотите (значение - 50) / 10, что должно дать вам 20,7 ° C, что составляет около 70 ° F. - person Paul Ruiz; 17.08.2017