Мобильная версия
Вход в магазин
Регистрация
Напомнить пароль
Список желаний
(098) 067-12-26   Киевстар
(066) 142-24-48   МТС
(063) 642-36-59   Лайф

График работы магазина:

Пн-Пт: 10.00 - 19.00

Сб-Вс: выходные

Киев, пр-кт Голосеевский, 97-А
р-н метро "Выставочный центр"

Каталог

Знакомство с Digispark

Не так давно познакомился в Интернете с интересной разработкой от Digistump. Учитывая довольно скромные технические характеристики Attiny85, или как его иногда называют – "Тинька", (8-битный процессор от AVR – до 20 МГц, 8 Кб флеш памяти для программ,

Обслуживание блока энергонезависимой памяти EEPROM

Хотелось бы поделиться своими изысканиями в дебрях программирования для Ардуино. Для сохранения некоторых данных при вероятности отключения питания необходимо задействовать энергонезависимую перепрограммируемую память, в английской аббревиатуре EEPROM. В

"Велокомпьютер на Arduino"

Всем привет! Сегодня расскажу о своем велокомпьюетере на ардуино. До этого у меня был еще один велокомпьютер, но на Attiny 2313, однако он меня не устраивал функциональностью, и возможностью быстро дописать необходимый функционал. Мною было решено

Индикатор загруженности Wi-Fi каналов на ESP8266 и OLED SSD1306

Индикатор позволяет получить наглядную картинку загруженности Wi-Fi каналов.

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

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

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

2016-07-05

Все статьи →

Vladimir Sokolov

В предыдущей статье рассматривался вариант анализатора спектра ISM диапазона (ссылка на https://arduino-ua.com/art44-analizator-spektra-2-4-ggc-na-pololu-wixel). Для сбора данных использовался модуль 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