Содержание

Banana Pi/Banana Pi M1 plus и DS18B20

схема подключения:
—> VCC - контакт 3,3 вольта (1-я ножка) на CON3
—> GND - контакт GND (6-я ножка) на CON3
—> DQ - контакт GPIO18 (12-я ножка) на CON3 если Banana Pi
—> DQ - контакт GPIO4 (12-я ножка) на CON3 если Banana Pi M1 plus

root@bananapi ~ # bananian-update
root@bananapi ~ # apt-get update
root@bananapi ~ # apt-get upgrade
root@bananapi ~ # reboot
root@bananapi ~ # apt-get install mc
root@bananapi ~ # rehash
root@bananapi ~ # mc

После запуска mc иду в настройки > конфигурация и отмечаю пункт Встроенный редактор.

Banana Pi

root@bananapi /usr/local/src # apt-get install libusb-1.0

НОВЫЕ пакеты, которые будут установлены:
libc-dev-bin libc6-dev libusb-1.0-0-dev linux-libc-dev

root@bananapi /usr/local/src # apt-get install build-essential
root@bananapi /usr/local/src # rehash
root@bananapi /usr/local/src # apt-get install git
root@bananapi /usr/local/src # git clone https://github.com/linux-sunxi/sunxi-tools.git
root@bananapi /usr/local/src # cd /usr/local/src/sunxi-tools 
root@bananapi /usr/local/src/sunxi-tools (git)-[master] # make
gcc -g -O0 -Wall -Wextra -std=c99 -D_POSIX_C_SOURCE=200112L -Iinclude/  -o fexc fexc.c script.c   script_uboot.c script_bin.c script_fex.c
ln -s fexc bin2fex
ln -s fexc fex2bin
gcc -g -O0 -Wall -Wextra -std=c99 -D_POSIX_C_SOURCE=200112L -Iinclude/  -o bootinfo bootinfo.c
bootinfo.c: In function ‘print_script’:
bootinfo.c:274:25: warning: unused parameter ‘script’ [-Wunused-parameter]
gcc -g -O0 -Wall -Wextra -std=c99 -D_POSIX_C_SOURCE=200112L -Iinclude/ `pkg-config --cflags libusb-1.0`  -o   fel fel.c  `pkg-config --libs libusb-1.0`
/bin/sh: 1: pkg-config: not found
/bin/sh: 1: pkg-config: not found
fel.c:22:20: fatal error: libusb.h: Нет такого файла или каталога
compilation terminated.
make: *** [fel] Ошибка 1

Дописал в makefile строку:

CFLAGS += -I/usr/include/libusb-1.0  -lusb-1.0

После этого программа собралась.
Редактирую файл конфигурации. Для этого монтирую /dev/mmcblk0p1 в /mnt и создаю файл bananapi.fex

root@bananapi /usr/local/src/sunxi-tools (git)-[master] # mount /dev/mmcblk0p1 /mnt
root@bananapi /usr/local/src/sunxi-tools (git)-[master] # cd /mnt
root@bananapi /mnt # /usr/local/src/sunxi-tools/bin2fex script.bin bananapi.fex

В полученный файл bananapi.fex вношу следующие изменения:

[w1_para]
gpio = 18  

gpio 18 соответствует 12 контакту на разъёме CON3

Из bananapi.fex создаю новый файл конфигурации script.bin

root@bananapi /mnt # /usr/local/src/sunxi-tools/fex2bin bananapi.fex script.bin
root@bananapi /mnt #reboot

После перезагрузки пишу

root@bananapi ~ # modprobe wire
root@bananapi ~ # modprobe w1-gpio
root@bananapi ~ # modprobe w1-therm
root@bananapi ~ # ls /sys/bus/w1/devices
28-00044e42dfff@  w1_bus_master1@
root@bananapi ~ # cat /sys/bus/w1/devices/28-00044e42dfff/w1_slave
a6 01 55 00 7f ff 0c 10 61 : crc=61 YES
a6 01 55 00 7f ff 0c 10 61 t=26375

t=26375/1000 и есть температура в градусах Целсия

Banana Pi M1 plus

root@bananapi /usr/local/src # apt-get install libusb-1.0
root@bananapi /usr/local/src # apt-get install build-essential
root@bananapi /usr/local/src # rehash
root@bananapi /usr/local/src # apt-get install git
root@bananapi /usr/local/src # git clone https://github.com/linux-sunxi/sunxi-tools.git
root@bananapi /usr/local/src # cd /usr/local/src/sunxi-tools 

Дописал в makefile строку:

CFLAGS += -I/usr/include/libusb-1.0  -lusb-1.0
root@bananapi /usr/local/src/sunxi-tools (git)-[master] # make
root@bananapi /usr/local/src/sunxi-tools (git)-[master] # mount /dev/mmcblk0p1 /mnt
root@bananapi /usr/local/src/sunxi-tools (git)-[master] # cd /mnt
root@bananapi /mnt # /usr/local/src/sunxi-tools/bin2fex script.bin bananapi.fex

В соответствии со спецификацией 40-ка контактного разъёма

GPIO specification		
Banana Pi has a 40-pin GPIO header that matches that of the Model B+ Raspberry Pi. Following is the Banana Pi GPIO Pinout:		
Pin on Board	Pin Definition	IO on A20
CON3-P01	VCC-3V3	
CON3-P02	VCC-DC	
CON3-P03	TWI2-SDA	PB21 
CON3-P04	VCC-DC	
CON3-P05	TWI2-SCK	PB20 
CON3-P06	GND	
CON3-P07	PWM1		PI3 
CON3-P08  	UART3_TX	PH0 
CON3-P09	GND	
CON3-P10	UART3_RX	PH1
CON3-P11	UART2_RX	PI19
CON3-P12	PH2		PH2
CON3-P13	UART2_TX	PI18 
CON3-P14	GND	
CON3-P15	UART2_CTS	PI17 
CON3-P16	CAN_TX		PH20
CON3-P17	VCC-3V3	
CON3-P18	CAN_RX		PH21
CON3-P19	SPI0_MOSI	PI12
CON3-P20	GND	
CON3-P21	SPI0_MISO	PI13
CON3-P22	UART2_RTS	PI16
CON3-P23	SPI0_CLK	PI11
CON3-P24	SPI0_CS0	PI10
CON3-P25	GND	
CON3-P26	SPI0_CS1	PI14
CON3-P27	TWI3-SDA	PI1
CON3-P28	TWI3-SCK	PI0
CON3-P29	I2S_MCLK	PB5
CON3-P30	GND	
CON3-P31	I2S_BCLK	PB6
CON3-P32	I2S_DI		PB12
CON3-P33	I2S_LRCK	PB7 
CON3-P34	GND	
CON3-P35	I2S_DO0		PB8
CON3-P36	UART7_RX	PI21 
CON3-P37	IR0_TX		PB3
CON3-P38	UART7_TX	PI20 
CON3-P39	GND	
CON3-P40	SPDIF_DO	PB13
	
CON4 is the UART interface		
CON4 Pin Name	|Default Function|	GPIO
CON4 PO3	|UART0-TXD	|	PB22
CON4 PO2	|UART0-RXD	|	PB23
CON4 PO1	|GND		|

В полученный файл bananapi.fex вношу следующие изменения:

[gpio_para]
gpio_used = 1
gpio_num = 86
gpio_pin_1 = port:PI00<1><default><default><default>
...
gpio_pin_4 = port:PH02<1><default><default><default>
...

[w1_para]
gpio = 4  

gpio 4 соответствует 12 контакту на разъёме CON3

root@bananapi /mnt # /usr/local/src/sunxi-tools/fex2bin bananapi.fex script.bin
root@bananapi /mnt #reboot

После перезагрузки пишу

root@bananapi ~ # modprobe wire
root@bananapi ~ # modprobe w1-gpio
root@bananapi ~ # modprobe w1-therm
root@bananapi ~ # ls /sys/bus/w1/devices
28-00044e42dfff@  w1_bus_master1@
root@bananapi ~ # cat /sys/bus/w1/devices/28-00044e42dfff/w1_slave
a6 01 55 00 7f ff 0c 10 61 : crc=61 YES
a6 01 55 00 7f ff 0c 10 61 t=26375

t=26375/1000 и есть температура в градусах Целсия

Ссылки:
http://www.bananapi.org.pl/2014/11/banana-pi-pomiar-temperatury-za-pomoca-ds18b20-1-wire/
http://forum-bananapi.de/Thread-Banana-PRO-DS18B20-GPIO4-OneWire-Raspbian
http://sunxi.org/1-Wire