ITСooky

IT-рецепты съедобные и не очень!

Обзор-тестирование Orange Pi PC в качестве Raspberry Pi

дата 16.11.2015

На Orange Pi PC можно установить образ Raspbian, есть на сайте апельсинов, но это ничего не даст — будет выглядеть один в один, но много нужного не будет работать — потому что не малинка вообще никак — да и проблема с включением модулей в ядре тоже по этой причине!

orangepipc_raspberrypi_010

Так что будем ставить образ вот от этого чувака, loboris еще раз фенкс, тем более обещает, что все нам нужное включено в ядре — GPIO, i2c (TWI), SPI enabled

Эту статью можно считать продолжением вот этой http://www.itcooky.com/?p=3925
itcooky_orangepipc_001

Качаем OrangePI-PC_Ubuntu_Vivid_Mate.img
Далее, все просто, если у вас например Ubuntu (да пусть у вас будет Ubuntu) вставляете карту памяти форматируете её в ноль например Gparted.
Далее заливаете имадж (предварительно его разархивировав конечно же).
sdd — это карта памяти, у вас может быть другая, осторожней с этим.
в папке с имаджем запускаем команду
sudo dd if=OrangePI-PC_Ubuntu_Vivid_Mate.img of=/dev/sdd bs=1M oflag=direct
После первой загрузки надо выполнить
sudo fs_resize
sudo rm /usr/local/bin/fs_resize_warning

Выбираем свой часовой пояс
sudo timedatectl set-timezone Europe/Moscow
посмотреть из чего можно выбрать
timedatectl list-timezones
И после каждого ребута ставим время(очень важно)(пока часы не прикрутили)
месяцденьчасминутагодточкасекунды
date 101219152015.33

Исправляем ошибку по которой не резолвитца хост OrangePI
прописываем в
vi /etc/hostname
текст

Opelsinka

а в
vi /etc/hosts
текст

127.0.0.1       Opelsinka
::1             Opelsinka ip6-localhost ip6-loopback
ff02::1         ip6-allnodes
ff02::2         ip6-allrouters

В файле
vi /etc/network/interfaces
оставлем только текст

allow-hotplug eth0
iface eth0 inet dhcp

Подключение жк-дисплея к Orange Pi PC
Покупал вот это Особое! Жк-дисплей модуль синий экран IIC / I2C 1602 жк-дисплей за 196.56 RUR.

orangepipc_raspberrypi_002orangepipc_raspberrypi_003

Брал две штуки — одна нормальная, вторая криво припаяна. На плате YwRobot есть синий регулятор контраста (как мне кажется) регулирует фигово буквы проявляются(именно так это выглядит) только в крайнем положение. Есть джампер для включения голубой подсветки — непонятно за чем он, потому что без подсветки на этом экране ничего не видно!!! Подсветка неровная пятнами.

Внимательно: Выбирайте положение экрана при закреплении, у него есть верх и низ. И повернуть кодом на 180 градусов его не удасться.

Подключаем как есть, одно к другому
lscd_bb

Я уже говорил что инструкции от Raspberry Pi подходят, вот берем эту инструкцию http://devram0.blogspot.ru/2014/09/raspberry-pi-ywrobot-arduino-lcm1602.html

Обновим репозиторию и установим git
sudo apt-get update && sudo apt-get install git-core
иии…
sudo apt-get make
sudo apt-get gcc
sudo apt-get vim
cd /root
sudo git clone https://github.com/wargio/liblcm1602.git
cd liblcm1602
make

Хотя make еще рано делать

Смотрим где у нас в i2c висит жк
sudo i2cdetect -y 1
пусто
sudo i2cdetect -y 0
есть
orangepipc_raspberrypi_004
открываем все файлы с расширением .c
vi example2.c
и меняем в строке

i2c_dev = open_i2c(I2C_FILE_NAME, 0x3f);

0x27 на 0x3f

самый нужный нам скрипт example2 выглядеть вот так

#include <stdio.h>
#include <string.h>
#include "i2c.h"
#include "lcd.h"

#define I2C_FILE_NAME                "/dev/i2c-0"
int main(int argc, char **argv){
    int i2c_dev, i;
    lcd lcd0;
    i2c_dev = open_i2c(I2C_FILE_NAME, 0x3f);
    if(i2c_dev <0){
       printf("Errore: %d\n", i2c_dev);
       return 1;
    }
    lcd_init(&lcd0, i2c_dev);//, 16);
    lcd_clear(&lcd0);
    for(i=1; i<3 && i<argc; ++i)
        lcd_print(&lcd0, argv[i], strlen(argv[i]), i-1);

    close_i2c(i2c_dev);
    return 0;
}

делаем
make
и пробуем
./example2 "First STR" "Second STR"
orangepipc_raspberrypi_005

Теперь будем показывать на экране время(не очень нужно) и наш локальный IP (очень нужно если использовать без монитора HDMI и получать IP по DHCP)

Делаем скрипт
vi timeip.sh
вставляем туда строки

#!/usr/local/bin/bash
t=`/bin/date +%Y"."%m"."%d"-"%H":"%M`
ip=`/sbin/ifconfig|/bin/grep inet|/usr/bin/head -1|/bin/sed 's/\:/ /'|/usr/bin/awk '{print $3}'`
/root/liblcm1602/example2 ${t} ${ip}

делаем его исполняемым
chmod +x timeip.sh
Надо помнить что длина строки на экране 16 символов, как раз хватает на IP
Ставим запускать по рассписанию
crontab -e
каждую минуту

*/1 * * * * /bin/sh /root/timeip.sh

orangepipc_raspberrypi_001

Вот так это пока выглядит внутри
orangepipc_raspberrypi_008

Моргание лампочкой
Классика — первым делом надо поморгать! Тут очень кстати появился работающий способ вот по это ссылке https://github.com/zhaolei/WiringOP

sudo git clone http://github.com/zhaolei/WiringOP.git -b h3

Если ругается на сертификат выставите правильное время


cd WiringOP
chmod +x ./build
sudo ./build

запустим и посмотрим
gpio readall
orangepipc_raspberrypi_006
Вот где IO это рабочии выводы — и они идут не по порядку (и не все работают)
и попробуем что-то запустить

подключаем по схемке
led_opp

cd examples
vi blink.c

доводим до такого вида

#include <stdio.h>
#include <wiringPi.h>

// LED Pin - wiringPi pin 0 is BCM_GPIO 17.

#define LED     1

int main (void)
{
  printf ("Raspberry Pi blink\n") ;

  wiringPiSetup () ;
  pinMode (LED, OUTPUT) ;

  for (;;)
  {
    digitalWrite (LED, HIGH) ;  // On
    delay (500) ;               // mS
    digitalWrite (LED, LOW) ;   // Off
    delay (500) ;
  }
  return 0 ;
}

главне чтобы #define LED был 1, потому что 0 не работает

делаем
make blink
и запускаем — будем моргать пока не остановим, причем лампочка останется в прерваном состоянии
./blink

orangepipc_raspberrypi_007

Подключаем часы реального времени DS3231 RTC
Это должно было быть самым простым и понятным подключением… если бы часы работали, и инструкции из интернета тоже!!!

Брал вот эти часики AT24C32 IIC модуль точность часов реального времени модуль памяти ( с нашими battary ) никаких батарей к ниему не прилагается — подходят 2032 и 2025 (другие не пробовал)

orangepipc_raspberrypi_009

В интернете встречаются инструкци где советуют пару резисторов сразу отодрать http://www.raspberrypi-spy.co.uk/2015/05/adding-a-ds3231-real-time-clock-to-the-raspberry-pi/ отдрал я один — нет — ни на что не повлияло!!!

SDA SCL оказались такими портами к которым можно подключать куча всего паралельно к одному усику. Вот схема, часы питаются от 5V:
lscd_rtc_bb

Начну сразу с конца
добавляем строки в
vi /etc/rc.local
вот эти перед exit 0

sudo echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-0/new_device
sudo hwclock -s -f /dev/rtc1

Ребутимся и все сразу работает! Теперь подробно:

Почему 0x68
потому что комманда
sudo i2cdetect -y 0
показывает что он там

sudo: unable to resolve host OrangePI
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 3f 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- 57 -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --   

Почему i2c-0
Потому же почему и предыдущий ответ

Почему sudo hwclock -s -f /dev/rtc1
А вот это интересно. На Orante Pi Pc уже есть часы реального времени sunxi-rtc, вот они виднеются
dmesg | grep rtc
вот

[    3.704954] sunxi-rtc sunxi-rtc: rtc core: registered sunxi-rtc as rtc0
[    4.494669] sunxi-rtc sunxi-rtc: setting system clock to 1970-01-01 00:00:10 UTC (10)
[   21.429859] rtc-ds1307 0-0068: rtc core: registered ds1307 as rtc1
[   21.429883] rtc-ds1307 0-0068: 56 bytes nvram

И они не работают(не считают время, сбрасывают после повер оф), и они rtc0, и hwclock как его не ковыряй тупо регаирует на них. А наши часики на rtc1

Поэтому команду установить системное время мы делаем указав у кого это время брать
sudo hwclock -s -f /dev/rtc1

Команда посмотреть время
sudo hwclock -r -f /dev/rtc1

Команда записать в часы системное время
sudo hwclock -w -f /dev/rtc1

Подключаем датчик температуры и влажности DHT22 или DHT11
Тут я понял, что все инструкции написанные для Рмалинки на python, не работают на Опельсинке! А вот на си плюс да! Хотелось бы его конечно знать, но…

Беру с этого сайта код http://www.uugear.com/portfolio/read-dht1122-temperature-humidity-sensor-from-raspberry-pi/ и вставляем его, сначала делая папку

mkdir /root/DHT
cd /root/DHT
vi dht.c

текст

/*
 *  dht.c:
 *	read temperature and humidity from DHT11 or DHT22 sensor
 */
 
#include <wiringPi.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
 
#define MAX_TIMINGS	85
#define DHT_PIN		4	/* GPIO-22 */
 
int data[5] = { 0, 0, 0, 0, 0 };
 
void read_dht_data()
{
	uint8_t laststate	= HIGH;
	uint8_t counter		= 0;
	uint8_t j			= 0, i;
 
	data[0] = data[1] = data[2] = data[3] = data[4] = 0;
 
	/* pull pin down for 18 milliseconds */
	pinMode( DHT_PIN, OUTPUT );
	digitalWrite( DHT_PIN, LOW );
	delay( 18 );
 
	/* prepare to read the pin */
	pinMode( DHT_PIN, INPUT );
 
	/* detect change and read data */
	for ( i = 0; i < MAX_TIMINGS; i++ )
	{
		counter = 0;
		while ( digitalRead( DHT_PIN ) == laststate )
		{
			counter++;
			delayMicroseconds( 1 );
			if ( counter == 255 )
			{
				break;
			}
		}
		laststate = digitalRead( DHT_PIN );
 
		if ( counter == 255 )
			break;
 
		/* ignore first 3 transitions */
		if ( (i >= 4) && (i % 2 == 0) )
		{
			/* shove each bit into the storage bytes */
			data[j / 8] <<= 1;
			if ( counter > 16 )
				data[j / 8] |= 1;
			j++;
		}
	}
 
	/*
	 * check we read 40 bits (8bit x 5 ) + verify checksum in the last byte
	 * print it out if data is good
	 */
	if ( (j >= 40) &&
	     (data[4] == ( (data[0] + data[1] + data[2] + data[3]) & 0xFF) ) )
	{
		float h = (float)((data[0] << 8) + data[1]) / 10;
		if ( h > 100 )
		{
			h = data[0];	// for DHT11
		}
		float c = (float)(((data[2] & 0x7F) << 8) + data[3]) / 10;
		if ( c > 125 )
		{
			c = data[2];	// for DHT11
		}
		if ( data[2] & 0x80 )
		{
			c = -c;
		}
		float f = c * 1.8f + 32;
		printf( "Humidity = %.1f %% Temperature = %.1f *C (%.1f *F)\n", h, c, f );
	}else  {
		printf( "Data not good, skip\n" );
	}
}
 
int main( void )
{
	printf( "Raspberry Pi DHT11/DHT22 temperature/humidity test\n" );
 
	if ( wiringPiSetup() == -1 )
		exit( 1 );
 
	while ( 1 )
	{
		read_dht_data();
		delay( 2000 ); /* wait 2 seconds before next read */
	}
 
	return(0);
}

И собираем, с командой как на сайте не соберется, а вот с этой соберется
gcc -pthread -odht dht.c -L/usr/local/lib -lwiringPi
и запускам
sudo ./dht
работает каналья

sudo: unable to resolve host OrangePI
Raspberry Pi DHT11/DHT22 temperature/humidity test
Data not good, skip
Humidity = 33.0 % Temperature = 24.0 *C (75.2 *F)
Humidity = 33.0 % Temperature = 24.0 *C (75.2 *F)
Data not good, skip
Data not good, skip
Humidity = 33.0 % Temperature = 24.0 *C (75.2 *F)
Humidity = 33.0 % Temperature = 24.0 *C (75.2 *F)
Data not good, skip
Humidity = 33.0 % Temperature = 24.0 *C (75.2 *F)
Humidity = 33.0 % Temperature = 24.0 *C (75.2 *F)
Data not good, skip
Humidity = 33.0 % Temperature = 24.0 *C (75.2 *F)
Humidity = 33.0 % Temperature = 24.0 *C (75.2 *F)
Data not good, skip
Humidity = 33.0 % Temperature = 24.0 *C (75.2 *F)
Humidity = 33.0 % Temperature = 24.0 *C (75.2 *F)
Data not good, skip
Data not good, skip

Схема подключения: использовал 5V и 4-тый GPIO, — вот все вместе
lscd_rtc_dht_dht

Программа Fritzing — бесплатная программа для рисоваия электронных схем — конечно невероятное ГАВНО. Ни с одной заявленной функцией оно не справляется. Если с частями, которые уже есть в программе, можно что-то нарисовать, то добавить своих и сделать что-то просто невозможно. Как мне удалось эскиз Orange Pi Pc туда добавить — непонимаю!!!

Что бы уместить всё в корпус надо перерисовать всю схемку и уместить всё на двух макетках 5 на 11, но — смотри комментарий выше — да ладно без схемки и так понятно! Тут главное взять надо нано хлебныедоски (а, что? а вы их как называете?). Брал вот эти http://ru.aliexpress.com/item/7PCS-Mini-55-Tie-point-Breadboard-Solderless-Prototype-Test-Board/32382692429.html

orangepipc_raspberrypi_011

И вот так все выглядит в самодельном корпусе за 35 рублей — скромненько, практично!
orangepipc_raspberrypi_012

UPD: Чтобы обозначенная конфигурация, или даже компоновка, обрела законченный смысл сделаем так чтобы следующее работало так — на экран выводится время и IP, через 30 скунд показывает температура и влажность, при обновлении экрана мигает лампочка.

Для начала модифицируем скрипт выдаюший влажность и темпераутуру, чтобы он выдавал одной строкой цифры влажности и темпы.

Создаем скрипт
cd ./DHT
vi dht2.c

Вставляем туда, зедсь все также как на верху только лишнее убрато

/*
 *  dht.c:
 *      read temperature and humidity from DHT11 or DHT22 sensor
 */
#include <wiringPi.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>

#define MAX_TIMINGS 85  
#define DHT_PIN 4               /* GPIO-22 */

int data[5] = { 0, 0, 0, 0, 0 };

void read_dht_data()
{
        uint8_t laststate       = HIGH;
        uint8_t counter         = 0;
        uint8_t j                       = 0, i;

        data[0] = data[1] = data[2] = data[3] = data[4] = 0;

        /* pull pin down for 18 milliseconds */
        pinMode( DHT_PIN, OUTPUT );
        digitalWrite( DHT_PIN, LOW );
        delay( 18 );

        /* prepare to read the pin */
        pinMode( DHT_PIN, INPUT );

        /* detect change and read data */
        for ( i = 0; i < MAX_TIMINGS; i++ )
        {
                counter = 0;
                while ( digitalRead( DHT_PIN ) == laststate )
                {
                        counter++;
                        delayMicroseconds( 1 );
                        if ( counter == 255 )
                        {
                                break;
                        }
                }
                laststate = digitalRead( DHT_PIN );

                if ( counter == 255 )
                        break;

                /* ignore first 3 transitions */
                if ( (i >= 4) && (i % 2 == 0) )
                {
                        /* shove each bit into the storage bytes */
                        data[j / 8] <<= 1;
                        if ( counter > 16 )
                                data[j / 8] |= 1;
                        j++;
                }
        }

        /*
         * check we read 40 bits (8bit x 5 ) + verify checksum in the last byte
         * print it out if data is good
         */
        if ( (j >= 40) &&
             (data[4] == ( (data[0] + data[1] + data[2] + data[3]) & 0xFF) ) )
        {
                float h = (float)((data[0] << 8) + data[1]) / 10;
                if ( h > 100 )
                {
                        h = data[0];    // for DHT11
                }
                float c = (float)(((data[2] & 0x7F) << 8) + data[3]) / 10;
                if ( c > 125 )
                {
                        c = data[2];    // for DHT11
                }
                if ( data[2] & 0x80 )
                {
                        c = -c;
                }
//              float f = c * 1.8f + 32;
                printf( "%.1f %.1f\n", h, c);

exit(1);

        }else  {
/*              printf( "Data not good, skip\n" );
*/
        }
}

int main( void )
{
/*      printf( "Raspberry Pi DHT11/DHT22 temperature/humidity test\n" );
*/
        if ( wiringPiSetup() == -1 )
                exit( 1 );

        while ( 1 )
        {
                read_dht_data();
                delay( 20 ); /* wait 2 seconds before next read */
        }

        return(0);
}

компилируем
gcc -pthread -odht dht.c -L/usr/local/lib -lwiringPi
проверяем
./dht2
нормуль

21.0 33.0

Теперь снимаем данные и пишим в лог файл
cd /root
vi htmon.sh

вставляем код

#!/usr/local/bin/bash
d=`/root/DHT/dht2`
t=`/bin/date +%Y"."%m"."%d"-"%H":"%M" "`
/bin/echo ${t}${d} >> /var/log/mon.log

делаем
chmod +x htmon.sh
будем запускать раз в минуту
crontab -e
вставляем

*/1 * * * * /root/htmon.sh

также меняем скрипт моргания
cd /root/WiringOP/examples
vi blink.c

доводим до вида

#include <stdio.h>
#include <wiringPi.h>

// LED Pin - wiringPi pin 0 is BCM_GPIO 17.

#define LED 1   

int main (void)
{
//  printf ("Raspberry Pi blink\n") ;

  wiringPiSetup () ;
  pinMode (LED, OUTPUT) ;

//  for (;;)
//  {
    digitalWrite (LED, HIGH) ;  // On
    delay (200) ;               // mS
    digitalWrite (LED, LOW) ;   // Off
//    delay (500) ;
//  }
 return 0 ;
}

собираем
make blink
Радактируем основной скрипт который уже запускает раз в минуту
vi /root/timeip.sh
и доводим его до вида

#!/usr/local/bin/bash
t=`/bin/date +%Y"."%m"."%d"-"%H":"%M`
ip=`/sbin/ifconfig|/bin/grep inet|/usr/bin/head -1|/bin/sed 's/\:/ /'|/usr/bin/awk '{print $3}'`
/root/WiringOP/examples/blink
/root/liblcm1602/example2 ${t} ${ip}
sleep 30
h=`/root/DHT/dht2 | /usr/bin/awk '{print $1}'`
th=`/root/DHT/dht2 | /usr/bin/awk '{print $2}'`
/root/WiringOP/examples/blink
/root/liblcm1602/example2 "${t}" "H:${h}% T:${th}C"

всё

UPD: Подключаем Wi-Fi USB
Кто-то сказал что RTL 8188EUS работает — сразу прикупил вот этот Мини USB адаптер wi-fi RTL 8188EUS Comfast CF-WU810N-1 adaptador беспроводная точка доступа wi-fi USB WiFi ключ adaptador WiFi USB вроде как у производителя… Дошло быстро в конверте, обычно такие коныверты даже не приходится додоставлять от «Почты России» до дома — сразу кидают в почтовый ящик (но мне пришлось сходить!)
orangepipc_raspberrypi_013
Подключается простым вставлениям в USB
orangepipc_raspberrypi_014

Посмотреть подклюбчился ли он можно командой
lsusb
вот он под нумером 3

Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 003: ID 0bda:8179 Realtek Semiconductor Corp. 
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Как мне показалось в этом образе есть все нужное уже

Комманда показать модули
lsmod
должна показать

Module                  Size  Used by
8188eu                901509  0

устанавливаем нудные утилиты
sudo apt-get install wireless-tools
работают команды
iwconfig
и показать окрестные сети
iwlist wlan1 scan
но этой утилиты мало для подключения к WEP2 — то есть она только может к WEP
вот так
sudo iwconfig wlan1 essid Nameseti key s:parolbukwami

Ставим если не стоит вот это
sudo apt-get install wpasupplicant

Записываем пароль и имя к сети к которой собираем подключаться особым образом
wpa_passphrase MYWIFINAME mypassword > /etc/wpa2.conf

в файле получаем такой текст

network={
            ssid="ssid_name"
#psk="password"
            psk=39fg94hg943hg94h5g9h34gh43hg429hgerhg
}

редактируем чтобы текст был таким

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
            ssid="ssid_name"
#psk="password"
            psk=39fg94hg943hg94h5g9h34gh43hg429hgerh
proto=RSN
key_mgmt=WPA-PSK
pairwise=CCMP
group=CCMP
auth_alg=OPEN
}

RSN — потому что WEP2 у меня сеть
CCMP — потому что AES у меня шифрование сети

Чтобы подключалось автоматом добавляю в файл
vi /etc/network/interfaces
текст

allow-hotplug wlan1
iface wlan1 inet dhcp
wpa-conf /etc/wpa2.conf
iface default inet dhcp

Перегружаемся и все рабоатет

Теоретически можно подключаться с консоли (я на это убил часа 3 — а надо было всего лишь перегрузиться)
коммандой которая уйдет в фоновый режим
sudo wpa_supplicant -Dwired -B -iwlan1 -c/etc/wpa2.conf
или с полным дебагом
sudo wpa_supplicant -Dwired -dd -iwlan1 -c/etc/wpa2.conf
да тут надо еще угать с драйевром в -D


25 комментариев to “Обзор-тестирование Orange Pi PC в качестве Raspberry Pi”

  1. Stas:

    Шикарная статья! Где ты раньше был?!

    • AlexandrBu:

      Сам удивляюсь, как я этого GIPO раньше не замеча!л

      • Buivarenko Anatolii:

        Уважаемый Александр, делаю все по вашему уроку, после подключения lcd к пинам по команде i2cdetect -y 1 или i2cdetect -y 0 ничего не находит! Помогите пожалуйста!

  2. Саня:

    Пробовал подключить дисплей. Возникла беда. Все скомпилилось, но без sudo не запускается. Так же не всегда выводит на экранчик все. В чем может быть проблемма?

  3. Vlad Rudenko:

    Не совсем понятно зачем дисплей. Речь идет о локальном ip. Так-что скорее всего есть доступ к админке роутера а значит и к списку подключенных к нему устройств.

    • AlexandrBu:

      Экран удобно показывает какой IP сейчас, особенно в гостевой сети если

  4. kdm1980:

    Здравствуйте подскажите как правильно прописать текст в
    «vi /etc/rc.local
    вот эти перед exit 0

    sudo echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-0/new_device
    sudo hwclock -s -f /dev/rtc1»

    для часов? не получается захожу в файл редактирую, начинаю сохранять не получается, что может быть не так? Спасибо

    • AlexandrBu:

      Надо это делать под пользоватпелем root (пароль тоже orangepi). Я все настраивал по ssh под root

  5. Мишка:

    Доброго дня! подскажите, пожалуйста, почему такие ошибки?

    root@orangepi:~# make blink
    cc blink.c -o blink
    /tmp/ccaq9V7x.o: In function `main’:
    blink.c:(.text+0x10): undefined reference to `wiringPiSetup’
    blink.c:(.text+0x1c): undefined reference to `pinMode’
    blink.c:(.text+0x28): undefined reference to `digitalWrite’
    blink.c:(.text+0x30): undefined reference to `delay’
    blink.c:(.text+0x3c): undefined reference to `digitalWrite’
    blink.c:(.text+0x44): undefined reference to `delay’
    collect2: ld returned 1 exit status
    make: *** [blink] Error 1

    я посмотрел в инете это какой-то линковщик не настроен что-ли…
    я так понимаю он не находит методов, а они в библиотеках есть, значит библиотеки не подключаются?

    • AlexandrBu:

      Но WiringOP установлен? Попробуйте положить все его файлы в директорию с blink.c и заменить строку

      #include
      на

      #include «wiringPi.h»

      • Мишка:

        вчера заходил товарищ, который очень редко заходит и подсказал как решить проблему. 🙂
        оказалось что компилировать нужно в моём случае так:

        cc -lwiringPi blink.c -o blink

        этот параметр (-lwiringPi) указывается в «note» после «установки» github.

  6. Vladimir Belyaev:

    Решил собрать на апельсинке роутер. Очень многое уже смог сделать, наткнулся на эту статью. Купил дисплей, описанный в статье, припаялся. Командой i2cdetect -y 0 получаю адрес UU. Вписываю его в example2.c, конец строки приобретает вид 0xUU. Делаю make и получаю ошибку:
    example2.c: In function ‘main’:
    example2.c:10:39: error: invalid suffix «xUU» on integer constant
    i2c_dev = open_i2c(I2C_FILE_NAME, 0xUU);
    Собственно и всё. Не хочет что-то взлетать.
    Возможно, статья ещё не потерялась в тоннах интересностей и кто-нибудь мне поможет =)

  7. Vladimir Belyaev:

    В общем. У вас там на картинке SDA и SCL местами перепутаны и дисплей лучше на 5V посадить, тогда и регулятор будет работать нормально контраста.
    А чтоб не светило дико в глаз подсветкой — можно припаять вместо перемычки подсветки на 4-5 кОМ резистор. Всё видно и не напрягает.

  8. Vladimir Belyaev:

    А, вот еще. В скрипте первая строчка в большинстве случаев глючит. Если в нее послать hi и поставить sleep 1, то остальное начинает работать на ура.
    В результате танцев с бубном получился невероятно информативный дисплей, который в сумме с gnokii smsd дает мощный инструмент управления без подключения внешнего дисплея. Ну и мониторинг состояния сервера.
    Надо бы поправить саму статью, а то не все по коментам шастают.

  9. Agat:

    Возможно не актуально.
    На картинке SCL и SCA нужно поменять местами
    TWI0-SDA 3я нога GPIO
    TWI0-SCK 5z нога GPIO
    VCC перенести с 1й ноги GPIO (3.3v) на 2ю или 4ю (VCC 5v) 16X2 завелся только после этого.

    http://www.cnx-software.com/wp-content/uploads/2015/09/Orange_Pi_2_GPIO_Pinout.png

    Непонятный косяк с отображением символов на экране. Бывает ничего не выводит бывает выводит крокозябры. Не уверен что виновата библиотека liblcm1602. Возможно нужно принудительно как то перевести в 4х битный режим т.е. использовать только 4 контакта из 8 D0-D7. Либо у меня убитый i2c модуль. Плохо разбираюсь в C/C++. Подтяжки к питанию по i2c шине вроде в порядке, 3.7v в режиме покоя. Осциллографом не смотрел до скольки просадка Подскажите кто сталкивался и как решили?

    • agat:

      Извините, прочитал комментарии после написания сообщения. Если не у одного меня такие глюки то тут надо либо писать разрабу, либо переписывать/исправлять библиотеку самому, либо искать ей замену.
      Спасибо.

    • agat:

      В общем победил кривизну библиотеки i2c. переходом на python
      вот тут описано как http://www.recantha.co.uk/blog/?p=4849 тут так же используется i2c шина.
      Единственная неприятность с питоном это при обновлении информации гаснут все символы и печатаются строки вновь. Но это уже терпимо.

  10. Митя:

    Здравствуйте.
    Появляются такого рода ошибки.
    cc -Wall -o dht dht.c -lwiringPi
    ……
    dht.c:46:1: error: stray ‘302’ in program
    dht.c:46:1: error: stray ‘240’ in program
    dht.c:47:1: error: stray ‘302’ in program
    /* shove each bit into the storage bytes */
    …..
    В чем может быть проблема?

  11. Joshua Sturmvogel:

    Доброго времени суток. проблема такого рода: дисплей 20*4
    подключил, показывает, но периодически при обновлении или нет изо или иероглифы.
    при работе на плате ардуино — таких проблем нет. это исправить можно?

    • AlexandrBu:

      Видимо несовместим. Судя по этому видео все такие дисплеии работают просто надо только послыать правильно биты https://www.youtube.com/watch?v=hZRL8luuPb8

      • Joshua Sturmvogel:

        на 4pda пишут что и на 1602 тоже такие траблы проявляются.
        попробовал запустить на orangepi Zero — ситуация не изменилась. раз через раз есть изо, потом пустой потом крякозябры и пустой и снова изо.. систематики в этом нет никакой. рекомендовали играться с параметром usleep(3) пробовал.. но как-то безрезультатно. попробую на днях библиотеку на питоне, может через нее что-то получится

      • Joshua Sturmvogel:

        провел эксперимент с дисплеем.
        перешел на Armbian
        если в ручном режиме выполняю:
        ./example2 «First STR» «Second STR»

        все работает как часы
        но только запускаю bash скрипт, все равно с какими значениями — начинаются либо крякозябры либо пустой экран.
        беру отдельно строчку из скрипта с выводом инфо и стартую из консоли — пашет
        пути пробовал прописать и полный и короткий
        я в недоумении

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

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