C.H.I.P. — 9-долларовый «убийца» Raspberry Pi

от автора

image
На Geektimes’ах уже пролетала информация о том, как 9-долларовый Linux компьютер собрал больше $2 000 000 на кикстартере. Я также поддержал этот проект в момент сбора средств и на днях ко мне прилетел мой экземпляр данного девайса

Данный компьютер комплектуется процессором Allwinner R8 на архитектуре ARM с частотой 1ГГц, ОЗУ 512Мб, 4Гб встроенной flash-памяти, а также имеет встроенный Wi-Fi с поддержкой стандартов b/g/n и на борту в наличии bluetooth 4.0. В качестве интерфейсов тут содержатся один порт USB, композитный AV выход для подключения к ТВ или любого дисплея с поддержкой композитного видеовхода, micro-USB для питания и прошивки самого C.H.I.P’а, разъем для подключения внешнего аккумулятора, а также колодки с портами GPIO. Впрочем, используя последние, можно подключить дополнительные HDMI или VGA адаптеры, которые приобретаются отдельно по цене $15 и $10 соответственно
imageimage
Также существует расширение PocketC.H.I.P., позволяющее сделать мини-компьютер полностью мобильным, за счет подключения аккумулятора и клавиатуры с дисплеем.
image

Девайс прилетел упакованным в бумажный конверт, внутри которого симпотная квадратная коробочка из картона, содержащая мини-компьютер

А вот и содержимое коробочки

Мой экземпляр снабдили гламурным AV кабелем розового цвета

А сзади стоит полупрозрачный корпус, закрывающий процессор

Работает это все под модификацией Linux Debian в качестве OS, отмечу, что производительность в целом не велика. Bluetooth и Wi-Fi работают на отлично, без проблем подключились безпроводные клавиатура и мышь от iMac’а и законнектился к инету. С USB тоже никаких проблем, флешка, мышка, а также стик от безпроводного Logitech F710 геймпада определились и заработали нормально. Кстати, что касательно игр, то попробовал превратить его в миниатюрный эмулятор игровых платформ, установил эмулятор mednafen, который поддерживает множество старых игровых систем, и собрал к нему из исходников GUI mednaffe. Производительность и качество можно увидеть на этом видео.

Ну а на закуску попробуем поуправлять портами GPIO, например, помигаем светодиодом через него. Для этого подключим светодиод через резистор 100-200 Ом анодом к 5му выходу колодки U13 и катодом к 13му выходу колодки U14 как на схеме

или как сделал я

Все дальнейшие действия можно выполнять непосредственно на устройстве, а можно сделать удаленно, подключившись к девайсу по ssh. По умолчанию в системе имя пользователя и пароль chip, нужно лишь только узнать IP-адрес устройства.

ssh chip@192.168.1.109 

За управление портами ввода вывода отвечает PCF8574A контроллер. Управление им осуществляется через манипуляции с файлами /sys/class/gpio/gpio408, доступ к которым возможен только из под рута, поэтому нужно переключится на него предварительно

su 

Рассмотрим два способа управления, через консоль и с помощью программы на Си. Итак, мигаем светодиодом из консоли. Переходим в каталог /sys/class/gpio

cd /sys/class/gpio 

Активируем GPIO и включаем работу порта на выход

echo 408 > export  echo out > gpio408/direction 

Теперь можем выставлять значение в порту записывая значения в gpio408/value

echo 1 > gpio408/value   # включаем светодиод echo 0 > gpio408/value   # выключаем светодиод 

По окончании незабываем деактивировать работу с GPIO

echo in > gpio408/direction echo 408 > unexport 

А теперь все тоже самое, но на языке Си. Создадим в домашней директории каталог projects, а в нем blink.

cd ~/ mkdir projects cd projects mkdir blink cd blink 

Запустим текстовый редактор nano и создадим новый файл (ctrl+o) с именем main.c, т.о. получим сразу подсветку синтаксиса.

nano 

И, собственно, листинг программы

#include <stdio.h> #include <stdlib.h> #include <fcntl.h> #include <unistd.h>  int main() { 	int fd;  	// Активируем работу с GPIO 	fd = open("/sys/class/gpio/export", O_WRONLY); 	if (fd < 0) 	{ 		return -1; 	}  	write(fd, "408", 3); 	close(fd);  	// Включаем порт на выход 	fd = open("/sys/class/gpio/gpio408/direction", O_RDWR); 	if (fd < 0) 	{ 		return -1; 	}  	write(fd, "out", 4); 	close(fd);  	// В цикле включаем и выключаем светодиод 	fd = open("/sys/class/gpio/gpio408/value", O_RDWR); 	if (fd < 0) 	{ 		return -1; 	}  	int i; 	for (i = 0; i < 1000; ++i) 	{ 		write(fd, "1", 2); 		sleep(3); 		write(fd, "0", 2); 		sleep(3); 	}  	// Завершаем работу с GPIO 	fd = open("/sys/class/gpio/unexport", O_WRONLY); 	if (fd < 0) 	{ 		return -1; 	}  	write(fd, "408", 3); 	close(fd); 	return 0; } 

Далее компилим и запускаем под рутом

gcc main.c -o blink ./blink 

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

ссылка на оригинал статьи https://geektimes.ru/post/271502/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *