Мобильная версия Форум Arduino Документация Гарантийные условия 0 0
UA RU
График работы магазина:
Пн-Пт: 8.00 - 19.00
Сб: 10.00 - 17.00
Вс: выходной
Каталог
Напиши статью и получи скидку!

Портативный анализатор спектра на Pololu Wixel c OLED SPI дисплеем

2016-07-05

Все статьи →

Vladimir Sokolov

В предыдущей статье рассматривался вариант анализатора спектра ISM диапазона (ссылка на статью). Для сбора данных использовался модуль Pololu Wixel, но собирались данные в операционной системе ведущего устройства. Для визуализации данных можно использовать OLED дисплеи малого размера. В данной случае выбраны дисплеи 128 на 64 писк. Но такой размер вдвое меньше максимального количества точек, получаемого от устройства. Потому производится усреднение по двум соседним точкам.

Подсоедините экраны, как показано на рисунке.

Для корректной работы дисплея установите библиотеку adafruit (ссылка на https://github.com/adafruit/Adafruit_Python_SSD1306) и добавьте обработчик (полностью код на Python см. в файле spectrum_spi_i2c.py):

result = re.findall(r'-\d{2,3}',response)

j = 0

result_odd = []

for rssi in result:

result[j] = 105 + int(rssi)

if result[j] > 64:

result[j] = 64

if j % 2 == 1:

result_odd.insert(j // 2, (result[j] + result[j-1]) // 2)

j += 1

width = dispSPI.width

height = dispSPI.height

image = Image.new('1', (width, height))

draw = ImageDraw.Draw(image)

draw.rectangle((0,0,width,height), outline=0, fill=0)

padding = 0

top = padding

bottom = height - padding

x = 1

while x < 128:

draw.line((x, top, x, result_odd[x]), fill=255)

x += 1

dispI2C.image(image)

dispSPI.image(image)

dispI2C.display()

dispSPI.display()

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

Но для отображения спектра на экране не обязательно использовать RPi, так как Wixel имеет на борту два UART (ссылка на https://pololu.github.io/wixel-sdk/spi0__master_8h.html#a2be23377a8be742444a8fd2b9644b9e5), которые успешно работают с SPI устройствами (ограничение лишь по максимальной частоте в 3 МГц). [Также реализован программный I2C интерфейс, потому потенциально можно подключить и I2C дисплей.]

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

checkRadioChannels();

j = 0;

for(block=0; block<8; block++)

{

for(channel=128; channel>0; --channel)

{

if (rssiHalfValue[channel] > 8) {

txData[j] = 0xFF;

rssiHalfValue[channel] -= 8;

j++;

}

else

{

txData[j] = power(2,(rssiHalfValue[channel])) - 1;

rssiHalfValue[channel] = 0;

j++;

}

}

}

DChigh;

CSlow;

LED_YELLOW(1);

spi0MasterTransfer(txData,rxData,1024);

delayMs(15);

CShigh;

DClow;

Схема подключения SPI дисплея к модулю Wixel показана на рисунке. Устройство может быть запитано от внешнего источника или от аккумуляторной батареи с напряжением от 2,7 до 6,5 В (ссылка на https://www.pololu.com/docs/0J46/all#5.a), но в данному случае опускать напряжение ниже 3,6 В не рекомендуется, так как экран начинает работать нестабильно. Использован четырех жильный тип подключения (4-wire), хотя реально используется пять жил (также сброс RES), для которого отдельно программируется выход, так как выход с напряжением 3,3 В лишь один. Также используется дополнительная кнопка паузы, при нажатии которой процесс измерений останавливается, а на экране отображается последнее измерение. Дополнительно используется светодиодная индикация (зеленый, оранжевый и красный).

Отображение на экран реализовано напрямую, без использования дополнительных графических библиотек. С методами адресации и прочими настройками можно подробно ознакомиться в официальном даташите (ссылка на https://cdn-shop.adafruit.com/datasheets/SSD1306.pdf). На рисунках показан вид спереди и сзади установки на макетной плате (прибор слева — анализатор логики).

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

Ваша оценка статьи:

Отлично
Хорошо
Удовлетворительно
Плохо
Очень плохо

Благодарим Вас за обращение! Ваш отзыв появится после модерации администратором.
Пока нет отзывов на эту статью.
оплата картами Visa и MasterCard