В прошлом посту я сделал обзор покупки и обещал, что будет продолжение.
Если тебе интересно, чем я тут занимаюсь - ты можешь помочь проекту. Все, чем ты поделишься пойдет на покупку новых запчастей с подробным описанием тут, в блоге всех экспериментов
Сегодня у нас в компании состоялся сходнячок на тему Raspberry Pi. Каждый показал свои наработки. Через часик ребята собрались и разбежались. Остались двое я и Артем. У Артема опыта с Raspberry Pi поболее будет, а потому он мне помог собрать все. Конечно же мой комп показывал свои какие-то приколы, но за 3 часа мы его убедили, что светодиодом моргать надо так, как хотим мы! Кто тут главный, а?!
Если тебе интересно, чем я тут занимаюсь - ты можешь помочь проекту. Все, чем ты поделишься пойдет на покупку новых запчастей с подробным описанием тут, в блоге всех экспериментов
Теперь все по-порядку. Хотелось бы, чтобы читатель хотел и мог это сделать за пол часа и сэкономил себе время. Потрачу еще час своего времени, начну с чистой флешки, чтобы все подробно-пре-подробно описать. Надеюсь пригодится.
Итак у нас есть пустая флешка. Нам понадобится программа Win32DiskImager и образ Raspbian (взято тут).
Запускать программу стоит из под Администратора, иначе ошибки будут.
Флешку берем чистую, закатаем на нее образ.
После стоит подождать, пока не закончится запись... Это продлится минут 5 не больше.
Дальше у нас есть несколько вариантов. Если у нас есть монитор, то мы можем подключиться к нему через HDMI и включить Raspberry Pi и увидеть на экране, как разворачивается Linux.
Но представим, что у нас нет никакого HDMI кабеля и монитора (мы пользовались проектором, который потом перестал показывать картинку {наверное из за битого провода}).
Подключаем к usb, вставляем флешку, включаем питание (через microUSB) RaspberryPi (красная лампочка должна гореть).
На компе (Windows) нужно установить драйвер от Prolific. После его установки он появится в диспетчере устройств. Тут надо обратить внимание под видом какого порта он появился.
Потом понадобится нам Putty чтобы подключиться. Выбираем Serial, указываем порт COMn, где n - номер из диспетчера устройств, скорость - 115200.
После подключения мы должны увидеть консоль. Но это не мой путь, поскольку Windows8 не скушала драйвер от Prolific, и я не смог подключиться через него. Печалька. Надеюсь у тебя получится.
Я сделал то же на компе с Windows7 - все установилось без проблем и в консоли увидел вот что.
Uncompressing Linux... done, booting the kernel. [ 0.000000] Booting Linux on physical CPU 0x0 [ 0.000000] Initializing cgroup subsys cpu [ 0.000000] Initializing cgroup subsys cpuacct [ 0.000000] Linux version 3.10.25+ (dc4@dc4-arm-01) (gcc version 4.7.2 20120731 (prerelease) (crosstool-NG linaro-1.13.1+bzr2458 - Linaro GCC 2012.08) ) #622 PREEMPT Fri Jan 3 18:41:00 GMT 2014 [ 0.000000] CPU: ARMv6-compatible processor [410fb767] revision 7 (ARMv7), cr=00c5387d [ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT nonaliasing instruction cache [ 0.000000] Machine: BCM2708 [ 0.000000] cma: CMA: reserved 16 MiB at 1b000000 [ 0.000000] Memory policy: ECC disabled, Data cache writeback [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 113792 [ 0.000000] Kernel command line: dma.dmachans=0x7f35 bcm2708_fb.fbwidth=656 bcm2708_fb.fbheight=416 bcm2708.boardrev=0xe bcm2708.serial=0xe27dc0f5 smsc95xx.macaddr=B8:27:EB:7D:C0:F5 sdhci-bcm2708.emmc_clock_freq=250000000 vc_mem.mem_base=0x1ec00000 vc_mem.mem_size=0x20000000 dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait [ 0.000000] PID hash table entries: 2048 (order: 1, 8192 bytes) [ 0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes) [ 0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes) [ 0.000000] Memory: 448MB = 448MB total [ 0.000000] Memory: 431652k/431652k available, 27100k reserved, 0K highmem [ 0.000000] Virtual kernel memory layout: [ 0.000000] vector : 0xffff0000 - 0xffff1000 ( 4 kB) [ 0.000000] fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB) [ 0.000000] vmalloc : 0xdc800000 - 0xff000000 ( 552 MB) [ 0.000000] lowmem : 0xc0000000 - 0xdc000000 ( 448 MB) [ 0.000000] modules : 0xbf000000 - 0xc0000000 ( 16 MB) [ 0.000000] .text : 0xc0008000 - 0xc05727b4 (5546 kB) [ 0.000000] .init : 0xc0573000 - 0xc0597424 ( 146 kB) [ 0.000000] .data : 0xc0598000 - 0xc05d0870 ( 227 kB) [ 0.000000] .bss : 0xc05d0870 - 0xc067c3e0 ( 687 kB) [ 0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 [ 0.000000] Preemptible hierarchical RCU implementation. [ 0.000000] NR_IRQS:330 [ 0.000000] sched_clock: 32 bits at 1000kHz, resolution 1000ns, wraps every 4294967ms [ 0.000000] Switching to timer-based delay loop [ 0.000000] Console: colour dummy device 80x30 [ 0.000000] console [tty1] enabled [ 0.001183] Calibrating delay loop (skipped), value calculated using timer frequency.. 2.00 BogoMIPS (lpj=10000) [ 0.001250] pid_max: default: 32768 minimum: 301 [ 0.001722] Mount-cache hash table entries: 512 [ 0.002538] Initializing cgroup subsys memory [ 0.002647] Initializing cgroup subsys devices [ 0.002689] Initializing cgroup subsys freezer [ 0.002725] Initializing cgroup subsys blkio [ 0.002886] CPU: Testing write buffer coherency: ok [ 0.003366] Setting up static identity map for 0xc0406048 - 0xc04060a4 [ 0.005199] devtmpfs: initialized [ 0.019623] NET: Registered protocol family 16 [ 0.025603] DMA: preallocated 4096 KiB pool for atomic coherent allocations [ 0.026724] bcm2708.uart_clock = 0 [ 0.028455] hw-breakpoint: found 6 breakpoint and 1 watchpoint registers. [ 0.028511] hw-breakpoint: maximum watchpoint size is 4 bytes. [ 0.028551] mailbox: Broadcom VideoCore Mailbox driver [ 0.028650] bcm2708_vcio: mailbox at f200b880 [ 0.028756] bcm_power: Broadcom power driver [ 0.028797] bcm_power_open() -> 0 [ 0.028826] bcm_power_request(0, 8) [ 0.529548] bcm_mailbox_read -> 00000080, 0 [ 0.529592] bcm_power_request -> 0 [ 0.529818] Serial: AMBA PL011 UART driver [ 0.529983] dev:f1: ttyAMA0 at MMIO 0x20201000 (irq = 83) is a PL011 rev3 [ 0.872118] console [ttyAMA0] enabled [ 0.898069] bio: create slabat 0 [ 0.903403] SCSI subsystem initialized [ 0.907381] usbcore: registered new interface driver usbfs [ 0.913102] usbcore: registered new interface driver hub [ 0.918680] usbcore: registered new device driver usb [ 0.925274] Switching to clocksource stc [ 0.929621] FS-Cache: Loaded [ 0.932793] CacheFiles: Loaded [ 0.948598] NET: Registered protocol family 2 [ 0.954022] TCP established hash table entries: 4096 (order: 3, 32768 bytes) [ 0.961293] TCP bind hash table entries: 4096 (order: 2, 16384 bytes) [ 0.967819] TCP: Hash tables configured (established 4096 bind 4096) [ 0.974292] TCP: reno registered [ 0.977552] UDP hash table entries: 256 (order: 0, 4096 bytes) [ 0.983462] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes) [ 0.990204] NET: Registered protocol family 1 [ 0.995140] RPC: Registered named UNIX socket transport module. [ 1.001206] RPC: Registered udp transport module. [ 1.005932] RPC: Registered tcp transport module. [ 1.010682] RPC: Registered tcp NFSv4.1 backchannel transport module. [ 1.018034] bcm2708_dma: DMA manager at f2007000 [ 1.022856] bcm2708_gpio: bcm2708_gpio_probe c05a5e50 [ 1.028312] vc-mem: phys_addr:0x00000000 mem_base=0x1ec00000 mem_size:0x20000000(512 MiB) [ 1.037698] audit: initializing netlink socket (disabled) [ 1.043376] type=2000 audit(0.890:1): initialize[ 1.205646] VFS: Disk quotas dquot_6.5.2 [ 1.210045] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes) [ 1.218891] FS-Cache: Netfs 'nfs' registered for caching [ 1.225629] NFS: Registering the id_resolver key type [ 1.230933] Key type id_resolver registered [ 1.235146] Key type id_legacy registered [ 1.239950] msgmni has been set to 875 [ 1.245824] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 252) [ 1.253679] io scheduler noop registered [ 1.257642] io scheduler deadline registered (default) [ 1.263238] io scheduler cfq registered [ 1.267382] bcm2708_fb_debugfs_init: could not create debugfs entry [ 1.274966] BCM2708FB: allocated DMA memory 5b400000 [ 1.280124] BCM2708FB: allocated DMA channel 0 @ f2007000 [ 1.291686] Console: switching to colour frame buffer device 82x26 [ 1.301884] uart-pl011 dev:f1: no DMA platform data [ 1.308225] kgdb: Registered I/O driver kgdboc. [ 1.314879] vc-cma: Videocore CMA driver [ 1.320248] vc-cma: vc_cma_base = 0x00000000 [ 1.326259] vc-cma: vc_cma_size = 0x00000000 (0 MiB) [ 1.333023] vc-cma: vc_cma_initial = 0x00000000 (0 MiB) [ 1.348942] brd: module loaded [ 1.358592] loop: module loaded [ 1.363377] vchiq: vchiq_init_state: slot_zero = 0xdb000000, is_master = 0 [ 1.372525] Loading iSCSI transport class v2.0-870. [ 1.379986] usbcore: registered new interface driver smsc95xx [ 1.387574] dwc_otg: version 3.00a 10-AUG-2012 (platform bus) [ 1.594889] Core Release: 2.80a [ 1.599394] Setting default values for core params [ 1.605442] Finished setting default values for core params [ 1.812346] Using Buffer DMA mode [ 1.816942] Periodic Transfer Interrupt Enhancement - disabled [ 1.824071] Multiprocessor Interrupt Enhancement - disabled [ 1.830930] OTG VER PARAM: 0, OTG VER FLAG: 0 [ 1.836563] Dedicated Tx FIFOs mode [ 1.842120] dwc_otg bcm2708_usb: DWC OTG Controller [ 1.848348] dwc_otg bcm2708_usb: new USB bus registered, assigned bus number 1 [ 1.856973] dwc_otg bcm2708_usb: irq 32, io mem 0x00000000 [ 1.863801] Init: Port Power? op_state=1 [ 1.869000] Init: Power Port (0) [ 1.873652] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002 [ 1.881937] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1 [ 1.890589] usb usb1: Product: DWC OTG Controller [ 1.896672] usb usb1: Manufacturer: Linux 3.10.25+ dwc_otg_hcd [ 1.903902] usb usb1: SerialNumber: bcm2708_usb [ 1.910587] hub 1-0:1.0: USB hub found [ 1.915727] hub 1-0:1.0: 1 port detected [ 1.921854] usbcore: registered new interface driver usb-storage [ 1.929673] mousedev: PS/2 mouse device common for all mice [ 1.937208] bcm2835-cpufreq: min=700000 max=700000 cur=700000 [ 1.944519] bcm2835-cpufreq: switching to governor powersave [ 1.951579] bcm2835-cpufreq: switching to governor powersave [ 1.958497] cpuidle: using governor ladder [ 1.963844] cpuidle: using governor menu [ 1.969013] sdhci: Secure Digital Host Controller Interface driver [ 1.976473] sdhci: Copyright(c) Pierre Ossman [ 1.982151] sdhci: Enable low-latency mode [ 2.029306] mmc0: SDHCI controller on BCM2708_Arasan [platform] using platform's DMA [ 2.039794] mmc0: BCM2708 SDHC host at 0x20300000 DMA 2 IRQ 77 [ 2.047028] sdhci-pltfm: SDHCI platform and OF driver helper [ 2.054171] ledtrig-cpu: registered to indicate activity on CPUs [ 2.063758] hidraw: raw HID events driver (C) Jiri Kosina [ 2.078060] usbcore: registered new interface driver usbhid [ 2.085157] usbhid: USB HID core driver [ 2.095003] TCP: cubic registered [ 2.101764] Initializing XFRM netlink socket [ 2.109488] NET: Registered protocol family 17 [ 2.115469] Key type dns_resolver registered [ 2.124430] Indeed it is in host mode hprt0 = 00021501 [ 2.131412] VFP support v0.3: implementor 41 architecture 1 part 20 variant b rev 5 [ 2.160089] registered taskstats version 1 [ 2.169691] drivers/rtc/hctosys.c: unable to open rtc device (rtc0) [ 2.189668] Waiting for root device /dev/mmcblk0p2... [ 2.271484] mmc0: read SD Status register (SSR) after 6 attempts [ 2.283986] mmc0: new high speed SDHC card at address b368 [ 2.291625] mmcblk0: mmc0:b368 NCard 14.8 GiB [ 2.299705] mmcblk0: p1 p2 [ 2.379334] usb 1-1: new high-speed USB device number 2 using dwc_otg [ 2.387425] Indeed it is in host mode hprt0 = 00001101 [ 2.590113] usb 1-1: New USB device found, idVendor=0424, idProduct=9514 [ 2.598383] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0 [ 2.607916] hub 1-1:1.0: USB hub found [ 2.613493] hub 1-1:1.0: 5 ports detected [ 2.899484] usb 1-1.1: new high-speed USB device number 3 using dwc_otg [ 3.020030] usb 1-1.1: New USB device found, idVendor=0424, idProduct=ec00 [ 3.028431] usb 1-1.1: New USB device strings: Mfr=0, Product=0, SerialNumber=0 [ 3.040281] smsc95xx v1.0.4 [ 3.107861] smsc95xx 1-1.1:1.0 eth0: register 'smsc95xx' at usb-bcm2708_usb-1.1, smsc95xx USB 2.0 Ethernet, b8:27:eb:7d:c0:f5 [ 6.593574] EXT4-fs (mmcblk0p2): recovery complete [ 6.703930] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null) [ 6.715143] VFS: Mounted root (ext4 filesystem) on device 179:2. [ 6.724829] devtmpfs: mounted [ 6.729895] Freeing unused kernel memory: 144K (c0573000 - c0597000) [ 8.404766] udevd[156]: starting version 175 [ 10.551303] bcm2708-i2s bcm2708-i2s.0: Failed to create debugfs directory [ 16.829010] EXT4-fs (mmcblk0p2): re-mounted. Opts: (null) [ 17.336842] EXT4-fs (mmcblk0p2): re-mounted. Opts: (null) [ 23.153129] FAT-fs (mmcblk0p1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck. Raspbian GNU/Linux 7 raspberrypi ttyAMA0 raspberrypi login:
Но я ничего не смог набрать с клавиатуры - консоль зависала. В попытке решить этот вопрос я случайно поломал USB-кабель для TTL-консоли он как-то очень сильно оттопырено торчал из ноута, а я был очень неаккуратным. Так что будь внимательнее с торчащими из ноута дивайсами...
Что делать? HDMI провода нет. Но у Raspberry Pi есть еще один видеовыход - простой желтенький тюльпанчик. За него-то я и подключился к проектору.
Поклеил на шкаф детским пластелином ватман и получил картинку! Более приятную, чем в консоли Putty - с малинкой
После минутки распаковки я увидел установочное меню.
Если ты вдруг не увидел такого меню, а у меня загрузилась GUI - не переживай. Ты можешь найти эти свойства в настройках PaspberryPi в меню "Пуск" либо выполнив в консоли sudo raspi-config
Итак в программе настройки стоит выбрать первый пункт меню 1. Expand filesystem - я так понимаю, чтобы вся моя флешка была использована под раздел.
Итак в программе настройки стоит выбрать первый пункт меню 1. Expand filesystem - я так понимаю, чтобы вся моя флешка была использована под раздел.
Ах да! Клавиатура нужна тоже :) Ее можно воткнуть в любой USB порт.
Клава тут же заработала. И я выбрал все таки первый пункт меню.
Говорит после перегрузки все сделает, оки, верю!
Идем дальше по меню - зайдем в Advanced
Так, как я поломал USB-кабель для TTL-консоли, то надобно включать другой способ доступа к Raspberry Pi - а именно по сетке через SSH. Включим его тут.
Так же включим SPI - понадобится позже.
Можно так же подглядеть и другие пункты меню, например способ загрузки Linux.
Вообще эта конфигурационная тула может быть запущена из консоли в любое время с помощью команды sudo raspi-config
Для выключение Paspberry Pi достаточно выполнить команду sudo halt и подождать завершения. Выключать питание при включенной Linux не стоит (хотя можно на свой страх и риск) - говорят от этого порой флешка страдает так, что ее нельзя потом использовать для этих целей - только как попсовую флешку.
Так, после остановки системы можно выключить питание и включить обратно. Так бы хотелось иметь на платке кнопку ресет, а то уже предвкушаю отломанный microUSB и чтобы этого не случилось, лучше отключать USB провод от блока питания а не от Raspberry Pi.
Итак мы включились. Вышли из меню. Видим командную строку. Сейчас нам надо настроить сетку. Для этого в консоли пишем команду sudo nano /etc/network/interfaces
Мы увидим содержимое конфиг файла
auto eth0 iface eth0 inet static address 192.168.1.111 netmask 255.255.255.0 gateway 192.168.1.1 # network 192.168.1.0 # broadcast 192.168.1.255
Далее жмакаем Ctrl-X , Y, Enter - файл сохранится
Далее выполняем команду sudo service networking restart
После этого можно проверить командой ifconfig изменения
Теперь можно подключать Ethernet провод к рабочему компу. После подключения в настройках сетевых устройств
В свойствах Ethernet контроллера
Прописываем в Ipv4
192.168.1.100
255.255.255.0
При этом у меня начались глюки с инетом, и я его от греха подальше вообще отключил, а Ethernet включил
Raspberry Pi сразу зажег свой желтый светодиод....
Супер! Осталось совсем не много! :)
Кстати, если немного отвлечься, и выделить в настройках сетевых адаптеров wireless (через который у тебя инет ловится) и ethernet (что кабелем к малинке подключен) и настроить мост, то на малинке появится инет
После удаления моста все вернется восвояси.
И опля! Мы в консоли!
Теперь нам понадобится чудная программка. MobaXTerm, с ее помощью можно так же работать с консолькой, только еще и файлы заливать на Raspberry Pi.
Создадим тут (/home/pi/) папочку java и на время переключимся на написание проектика
Создадим пустой java maven проект и исправим его pom.xml
Так же добавим класс
Билдим проект командой mvn package
А потом файлик jpio.jar в папке target переписываем на Raspberry Pi
Запустить на выполнение можем командой sudo java -jar java/jpio.jar
Тут для удобства я красненьким нарисовал как в монтажке внутри проходят проводники, а желтым показал нашу цепь. Синий - GND (Земля), Красный - #18 нога. С нумерацией ног тут туго, она не совсем соответсвует нумерации ног в коде, так что надо быть осторожным и перед тем как что-то к чему-то подключать сперва попробовать мультиметром.
Шлейф уходит к плану Rospberry Pi - там тоже важно не ошибиться с ключем.
Если все будет ок, то светодиод заморгает ...---... и напишет в консоли Hello world!!!
Но если в консоли написало ощибку
Unable to determine hardware version. I see: Hardware : BCM2835 - expecting BCM2708 or BCM2709.
Я нашел пост с решениями, но реально помогло после таких действий/
1) обновление операционки (я не уверен что оно надо было, но все же накатил)
sudo apt-get update
sudo apt-get dist-upgrade
2) обновление в pom.xml версии pi4j-core до 1.2-SNAPSHOT с последующей пересборкой mvn clean package и заливкой на сервер в ~/java
Пока все.
Если тебе понравился этот пост. Ты можешь помочь проекту. Все, Чем ты поделишься пойдет на покупку новых запчастей с подробным описанием тут, в блоге хода экспериментов.
Спасибо за твой интерес!
Продолжение как всегда следует....
Далее выполняем команду sudo service networking restart
После этого можно проверить командой ifconfig изменения
Теперь можно подключать Ethernet провод к рабочему компу. После подключения в настройках сетевых устройств
В свойствах Ethernet контроллера
Прописываем в Ipv4
192.168.1.100
255.255.255.0
При этом у меня начались глюки с инетом, и я его от греха подальше вообще отключил, а Ethernet включил
Raspberry Pi сразу зажег свой желтый светодиод....
Супер! Осталось совсем не много! :)
Кстати, если немного отвлечься, и выделить в настройках сетевых адаптеров wireless (через который у тебя инет ловится) и ethernet (что кабелем к малинке подключен) и настроить мост, то на малинке появится инет
После удаления моста все вернется восвояси.
Но нам надо подключиться к Raspberry Pi через SSH. Для этого нам поможет либо уже привычная Putty. Подключаемся через SSH (22 порт) к 192.168.1.111 (если что не получается - отключаем/включаем Ethernet). Логин/пароль - pi/raspberry
И опля! Мы в консоли!
Теперь надобно установить java. Делаем это командой sudo apt-get install oracle-java7-jdk устанавливаем java. После можно попробовать командой java -version получить версию java.
Создадим тут (/home/pi/) папочку java и на время переключимся на написание проектика
Создадим пустой java maven проект и исправим его pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>jpio</groupId> <artifactId>jpio</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <dependency> <groupId>com.pi4j</groupId> <artifactId>pi4j-core</artifactId> <version>1.2-SNAPSHOT</version> <exclusions> <exclusion> <groupId>com.pi4j</groupId> <artifactId>pi4j-native</artifactId> </exclusion> </exclusions> </dependency> </dependencies> <repositories> <repository> <id>oss-snapshots-repo</id> <name>Sonatype OSS Maven Repository</name> <url>https://oss.sonatype.org/content/groups/public</url> <snapshots> <enabled>true</enabled> <updatePolicy>always</updatePolicy> </snapshots> </repository> </repositories> <build> <sourceDirectory>src/main/java</sourceDirectory> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin> <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <archive> <manifest> <mainClass>com.apofig.raspberry.demo.Main</mainClass> </manifest> </archive> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> <finalName>jpio</finalName> <appendAssemblyId>false</appendAssemblyId> </configuration> <executions> <execution> <id>make-assembly</id> <!-- this is used for inheritance merges --> <phase>package</phase> <!-- bind to the packaging phase --> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project>
Так же добавим класс
package com.apofig.raspberry.demo; import com.pi4j.io.gpio.GpioController; import com.pi4j.io.gpio.GpioFactory; import com.pi4j.io.gpio.GpioPinDigitalOutput; import com.pi4j.io.gpio.PinState; import com.pi4j.io.gpio.RaspiPin; public class Main { public static final int LONG = 800; public static final int SHORT = 300; public static void main(String[] args) throws InterruptedException { System.out.println("Hello world !!!"); GpioController gpio = GpioFactory.getInstance(); GpioPinDigitalOutput pin = gpio.provisionDigitalOutputPin(RaspiPin.GPIO_01, "MyLED", PinState.HIGH); pin.high(); Thread.sleep(SHORT); pin.low(); Thread.sleep(SHORT); pin.high(); Thread.sleep(SHORT); pin.low(); Thread.sleep(SHORT); pin.high(); Thread.sleep(SHORT); pin.low(); Thread.sleep(LONG); pin.high(); Thread.sleep(LONG); pin.low(); Thread.sleep(LONG); pin.high(); Thread.sleep(LONG); pin.low(); Thread.sleep(LONG); pin.high(); Thread.sleep(LONG); pin.low(); Thread.sleep(LONG); pin.high(); Thread.sleep(SHORT); pin.low(); Thread.sleep(SHORT); pin.high(); Thread.sleep(SHORT); pin.low(); Thread.sleep(SHORT); pin.high(); Thread.sleep(SHORT); pin.low(); Thread.sleep(SHORT); gpio.shutdown(); } }
Билдим проект командой mvn package
А потом файлик jpio.jar в папке target переписываем на Raspberry Pi
Запустить на выполнение можем командой sudo java -jar java/jpio.jar
При этом светодиод замаргает, если мы его подключим. Как? Вот как, обязательно последовательно через сопротивление (резистор)
Тут для удобства я красненьким нарисовал как в монтажке внутри проходят проводники, а желтым показал нашу цепь. Синий - GND (Земля), Красный - #18 нога. С нумерацией ног тут туго, она не совсем соответсвует нумерации ног в коде, так что надо быть осторожным и перед тем как что-то к чему-то подключать сперва попробовать мультиметром.
Шлейф уходит к плану Rospberry Pi - там тоже важно не ошибиться с ключем.
Если все будет ок, то светодиод заморгает ...---... и напишет в консоли Hello world!!!
Но если в консоли написало ощибку
Unable to determine hardware version. I see: Hardware : BCM2835 - expecting BCM2708 or BCM2709.
Я нашел пост с решениями, но реально помогло после таких действий/
1) обновление операционки (я не уверен что оно надо было, но все же накатил)
sudo apt-get update
sudo apt-get dist-upgrade
2) обновление в pom.xml версии pi4j-core до 1.2-SNAPSHOT с последующей пересборкой mvn clean package и заливкой на сервер в ~/java
Пока все.
Если тебе понравился этот пост. Ты можешь помочь проекту. Все, Чем ты поделишься пойдет на покупку новых запчастей с подробным описанием тут, в блоге хода экспериментов.
Продолжение как всегда следует....
Интересная штука, большие возможности =)
ОтветитьУдалитьБлагодарю за публикацию!
Спасибо за комментарий!
УдалитьИ спасибо за ваш блог!
Такое понятие как "под катом" Вам не знакомо? Плюс ко всему 1000+ постов, а постраничной навигации приделать видимо тоже времени нет?
ОтветитьУдалитьСпасибо. Фичей "под катом" пользовался. Видимо стоит вернуть. Чем-то она не понравилась.
УдалитьА что такое "постраничная навигация"? Гляну есть ли она в блогспоте.
Прошу, воспринимайте этот блог как свалку, где можно найти что-нибудь полезное. Куда более важен ваш опыт!
Какие еще идеи по улучшению вы предлагаете?
Спасибо!