пятница, 28 апреля 2017 г.

SmartCar

Робот машина (макет) на базе шасси 3х2 и клона arduino pro mini из китая.
Управление старым пультом (неизвестного происхождения) через инфракрасный канал.



Можно как непосредственно управлять в режиме реального времени так и задавать программу движения (программировать).
Спереди 2 концевых выключателя для остановки машины в случае столкновения с препятствием.

набросок схемы и программа тут


четверг, 28 января 2016 г.

Amlogic S812 легкий Dual Boot

Дано: андроид приставка М8 с s812 на борту, плата M8 V8_8 20150923, прошивка k200.bcm4335.2015.201510211111 (U-boot-00000-g92ff5df-dirty(m8_n200C_v1@) (Oct 21 2015 - 10:20:19)).

Задача: сделать двойную загрузку линукс/андроид с минимальными затратами.

Проект в стадии реализации прерван...

Что нужно...
  1. Берем исходники ядра и компонентов с http://openlinux.amlogic.com:8000/download/ARM/, (хотя можно попробовать с родным ядром просто изменив строку параметров ядра.). Родной конфиг и дерево устройств DTS можно легко добыть из родной прошивки или из дампа  раздела boot.
  2. Собираем ядро в формате uImage. Примерный порядок действий  http://www.cnx-software.com/2014/03/10/amlogic-gpl-source-code-release-kernel-3-10-u-boot-and-drivers-wi-fi-nand-tvin-mali-gpu/
  3. Создаем recovery.img. (например так mkbootimg --kernel uImage --ramdisk ramdisk.gz --second myboard.dtb --base 10000000 --pagesize 2048 -o recovery.img)
  4. SD карту разбиваем на два раздела, первый (20-30мб) форматируем fat32 и кидаем туда recovery.img, второй делаем ext4 и развертываем туда любимый linuxroot.
  5. Грузимся с зажатой кнопкой для восстановления - должно загрузится новое ядро.


кусок Uboot лога:
update by key...
Enter USB burn
Try connect time out 1001, 1000, 1318
 sdio_detect return 1
[mmc_init] SDIO Port B:0, if_type=7, initialized OK!
Device: SDIO Port B
Manufacturer ID: 0
OEM: 0
Name: ran Speed: 20000000
Rd Block Len: 512
SD version 2.0
High Capacity: No
Capacity: 2028994560
Boot Part Size: 0
Bus Width: 4-bit

** Unable to open "aml_sdc_burn.ini" from mmc 0:1 --- file not exist**
reading aml_autoscript

** Unable to read "aml_autoscript" from mmc 0:1 **
enter recovery
Device: SDIO Port B
Manufacturer ID: 0
OEM: 0
Name: ran Speed: 20000000
Rd Block Len: 512
SD version 2.0
High Capacity: No
Capacity: 2028994560
Boot Part Size: 0
Bus Width: 4-bit
reading recovery.img

6811731 bytes read
## ANDROID Format IMAGE
## Booting kernel from Legacy Image at 12000000 ...
   Image Name:   Linux-3.10.33
   Image Type:   ARM Linux Kernel Image (lzo compressed)
   Data Size:    6784865 Bytes = 6.5 MiB
   Load Address: 00208000
   Entry Point:  00208000
   Verifying Checksum ... OK
    Ramdisk start addr = 0x12679000, len = 0x427
    Flat device tree start addr = 0x12679800, len = 0x547a magic=0xedfe0dd0
   Uncompressing Kernel Image ... OK

простая консоль на последовательный порт для отладки (в initramfs):

/bin/sh -i </dev/ttyS0 >/dev/ttyS0 2>&1

четверг, 19 ноября 2015 г.

MK808 очередное обновление

Очередное обновление для любимого МК808 на rk3066 на базе ядра radxa stable-3.0. 

  • частота обновления экрана теперь ограничена 60фпс, поэтому во всех видео тестах показывает 60, XBMC в 1280х720 тоже дает 60фпс
  • немного подкорректировал таблицу ограничения частоты от температуры (самый верхний предел не менял),
  • убраны старые глюки с просмотром видео через XV,
  • добавлено двойное буферизирование для XV и 3D с vsync,
  • синий светодиод моргает :)

исходник тут master branch, подготовленная прошивка  

видеодрайвер: исходники, бинарные для Debian


В очередной раз убеждаюсь, что rk3066 довольно шустрая штука. Однако на высоких частотах очень сильно греется, поэтому кто хочет использовать его на полную - нужно ставить большой радиатор.

На заметку по мк808:
  • синий светодиод подключен к выходу ШИМ (PWM)
  • единственная кнопка сидит на входе АЦП (ADC) 
  • под эти фичи есть драйвера


зы: с rockchip поигрались, будем ставить Linux десктоп на Amlogic S802.

четверг, 15 октября 2015 г.

Логический анализатор из arduino

Сделал по необходимости на скорую руку из того что было под этой самой рукой.

[Image]
Характеристики:
  • 6 каналов
  • Экран 127 точек 
  • Цена деления от 200микро секунд (20мкрС на точку) до 10 секунд (1 сек на точку)
  • 4 режима работы
  • Буфер на 8 экранов (127х8 измерений х 6 каналов)
  • Управление 4 кнопки
Аппаратная часть:
  • atmega328 (arduino)
  • дисплей 128х64 на st7565
  • 4 кнопки
  • резисторы
Режимы работы.
  1. R - циклический (пишет в буфер и тут-же выводит на экран) 
  2. S - как 1 но запускается при изменении сигнала (не доделано)
  3. O - запускается при изменении входного сигнала и отрабатывает до заполнения буфера, после чего переходит в стоп режим.
  4. +B% Стоп режим - просмотр буфера.

[Image]

Довольно простая конструкция. Папка проекта с схемой и прошивкой тут

PS: можно сделать запись буфера на SD карту или вообще передачу на компьютер через последовательный порт (нужно писать GUI).

среда, 4 февраля 2015 г.

Инкубатор

Несложный инкубатор с цифровым индикатором.
характеристики:
  • Работает в 2х режимах: собственно инкубатор и термостат.
  • Питание 12в, нагрузка около 100вт - лампы накаливания.
  • Система автоматического "яйцеворота".
  • Несколько неизменяемых предустановок для разной птицы и 5 пользовательских изменяемых.
  • Цифро-буквенный индикатор работы (8х2). 
  • Датчик температуры 18b20.
  • AtMega8a
  • в качестве резервной батареи - старая литиевая АКБ от сотового.


схема тут. Вариант прошивки тут(проект Эклипс).

нужен отдельный блок питания на 12в

Очередной велосипед

Решил придумать очередной велосипед в виде универсального  программатора AVR PIC.
За основу взял AVR-Doper, добавил параллельное высоковольтное для AVR и последовательное  высоковольтное для PIC.

вот схема, вот прошивка(проект Эклипс)

фичи итого:
  • ISP последовательное для AVR
  • HVSP последовательное высоковольтное для AVR
  • HVPP параллельное высоковольтное для AVR
  • ICSP последовательное высоковольтное дляPIC
  • Последовательный Debug интерфейс 
  • USB интерфейс
  • Режимы USB HID и  CDC
  • на основе ATMega8a

[Image]


Работоспособность не гарантирую, проверял только ISP и ICSP для HID.

Для программирования AVR использовать Avrdude согласно инструкции на AVR-Doper (ну + HVPP режим).

HVPP:
avrdude -c stk500pp -P avrdoper -p m8 -U hfuse:r:hfuse.txt:h -U lfuse:r:lfuse.txt:h -Uflash:w:file.hex:a

HVSP:
avrdude -c stk500hvsp -P avrdoper -p m8 -U hfuse:r:hfuse.txt:h -U lfuse:r:lfuse.txt:h -Uflash:w:file.hex:a

ISP:
avrdude -c stk500v2 -P avrdoper -p m8 -U hfuse:r:hfuse.txt:h -U lfuse:r:lfuse.txt:h -Uflash:w:file.hex:a

Для PIC использовал модифицированную программу picprog.

picprog --erase --burn --input file.hex


Все разработки и тестирование проводились в Linux.

Обновление от 16.10.2015.

воскресенье, 23 ноября 2014 г.

Полу-умный дом, часть 1.

 Контроллер для некоторой автоматизации главным образом печи (обычной дровяной).

Входные параметры:

  • температура на выходе теплообменника печи,
  • температура и влажность в помещении,
  • концентрация СО в помещении,
  • датчик давления воды в водопроводе (побочная функция).

 Основываясь на входных параметрах, хитрым образом управляются следующие штуки:

  • насос отопления,
  • приточный вентилятор (проветривание),
  • вытяжной вентилятор,
  • водяной насос в колодце (побочная функция).

 На 4-х строчном индикаторе показываются все измеренные (входные) параметры.
 Предусмотрен контроль некоторых параметров с сигнализацией выхода за рамки (СО, температура).
 Также предусмотрена связь с вторым контроллером (вторая часть полу умного дома - пока не реализован ) по rs482 для передачи параметров и внешнего управления.

 Выбор железа связан с нахождением в закромах готового блока хрен знает от чего, но с дисплеем и микроконтроллером на борту.

Схема тут.

PS: Устройство отработало уже год и себя вполне оправдало.