схема подключения:
—> 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 иду в настройки > конфигурация и отмечаю пункт Встроенный редактор.
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 и есть температура в градусах Целсия
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