PI外挂ESP不要esp-hosted方案-全部流程


0---
https://www.raspberrypi.com/software/operating-systems/#raspberry-pi-os-32-bit
准备SD卡放好资料

1----
sudo cp sources.list /etc/apt/sources.list
sudo cp raspi.list /etc/apt/sources.list.d/raspi.list

sudo nano /etc/apt/sources.list
sudo nano /etc/apt/sources.list.d/raspi.list
 
 
 
2---- 
apt-get update
apt-get full-upgrade
 
 
3----准备GO环境

tar zxvf go1.17.1.linux-armv6l.tar.gz

sudo mv go /usr/local

export PATH=$PATH:/usr/local/go/bin

{


export GOPATH=/***/***这样设置的gopath只会在当前终端有效,一旦重启终端或者机器断电就会失效。可以直接将此命令写到终端启动脚本。
vim ~/.bashrc
在最后一行加上
export GOPATH=/***/***
执行source ~/.bashrc使设置的环境变量立马生效,这样每次打开时,gopath就是你自己设置的值了,不用每次都手动设置。
————————————————
版权声明:本文为CSDN博主「程小二」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u011939264/article/details/105146633/


我们就这样 
roy:
sudo echo 'export PATH=$PATH:/usr/local/go/bin' | cat >> .profile #add golang path
source .profile #reload bash setting
koson:
cd ~ //去到ROOT的根目录
cp .profile .profile_old //备份一下
echo "export PATH=$PATH:/usr/local/go/bin" >> .profile //追加在最后
source .profile //刷新一下

}
go version
go run test.go
 
#国内go超时
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct

4--准备BLE测试
https://github.com/tinygo-org/bluetooth

sudo apt update
sudo apt install bluez

sudo apt install git
git clone https://github.com/tinygo-org/bluetooth.git

cd bluetooth
go run ./examples/scanner
或者
root@raspberrypi:/home/pi/bluetooth/examples/advertisement# go build main.go
root@raspberrypi:/home/pi/bluetooth/examples/advertisement# ./main


5--测试我们代码


root@raspberrypi:/home/pi# cd m_izar_rpi_gw/
root@raspberrypi:/home/pi/m_izar_rpi_gw# bash build.bash

root@raspberrypi:/home/pi/m_izar_rpi_gw# ./rpi_gw
正常测试
PI需要8S连接成功

5--准备挂接
注意C3和PI是3根线连接的 同时C3需要白色供电!!!!!!!!!!!!必须供电!!!!!!
C3固件是
--PINs: TxD 4, RxD 5, RTS -1, CTS -1
--Baudrate: 115200[0m

dtoverlay=uart2
dtoverlay=uart3
dtoverlay=disable-bt
只是增加 复位 一切原来的
ls -l /dev

crw-rw---- 1 root dialout 204,  64 Oct 21 04:01 ttyAMA0 --本来就有的
crw-rw---- 1 root dialout 204,  65 Oct 21 04:01 ttyAMA1 --增加dtoverlay=uart2
crw-rw---- 1 root dialout 204,  66 Oct 21 04:01 ttyAMA2 --增加dtoverlay=uart3


pi@raspberrypi:~ $ ls -l /dev | grep serial
lrwxrwxrwx  1 root root           7 Oct 21 03:27 serial1 -> ttyAMA0


sudo btattach -N -B /dev/ttyAMA1 -S 115200

挂起来PI的正常使用  但是不知道怎么切换

在加一句话   可以看到PI自己的没有了 只有我们C3的!!!!


准备S3
#define GPIO_UART_TXD_OUT  (4)
#define GPIO_UART_RXD_IN   (5)
#define GPIO_UART_RTS_OUT  (-1)
#define GPIO_UART_CTS_IN   (-1)
一样的 替换c3  发现S3不行

准备ESP32: 
D:\A-ESP-IDF\examples\bluetooth\hci\controller_hci_uart_esp32\main\controller_hci_uart_demo.c
U1--921600  --- uart_set_pin(CONFIG_BTDM_CTRL_HCI_UART_NO, 5, 18, -1, -1);
测试不行 把上面的代码替换我CSDN的 可以了https://blog.csdn.net/weixin_42381351/article/details/120828806?spm=1001.2014.3001.5501
sudo btattach -N -B /dev/ttyAMA1 -S 115200
此时是U2连接的ESP32

也就是硬件3+3
增加3句话
添加2句话可以的

现在试试不要BT

测试U3 dtoverlay=uart3 已经增加了 
杜邦线连接好了3个
USB供电好了
再次 sudo btattach -N -B /dev/ttyAMA2 -S 115200
好了 现在出现2个HCI了!!!!

测试
dtoverlay=uart2
dtoverlay=uart3
#dtoverlay=disable-bt
sudo btattach -N -B /dev/ttyAMA1 -S 115200
sudo btattach -N -B /dev/ttyAMA2 -S 115200
可以出现3个HCI

继续S3接线3个下面这个不行
sudo btattach -N -B /dev/ttyAMA3 -S 115200

准备脚本方式
cd /home/pi/esp-hosted/host/linux/host_control
./rpi_init.sh btuart

有问题
sudo apt-get update && sudo apt-get install --reinstall raspberrypi-bootloader raspberrypi-kernel
sudo apt-get install raspberrypi-kernel-headers
reboot


记录当前的样子:
#dtoverlay=vc4-fkms-v3d
dtoverlay=uart2
dtoverlay=uart3
dtoverlay=uart4
#dtoverlay=disable-bt

就是U4没有起来!

继续S3
1---
bt_init()
{
    sudo raspi-gpio set 1 a0 pu
    sudo raspi-gpio set 0 a0 pu
    sudo raspi-gpio set 16 a3 pu
    sudo raspi-gpio set 17 a3 pu
}

测试--

sudo hciattach -s 115200 /dev/ttyAMA1 any 115200 noflow nosleep
使用U2不要硬件

不行

enable_uart=1
加一句话


bt_init()
{
    sudo raspi-gpio set 1 a0 pu
    sudo raspi-gpio set 0 a0 pu
    sudo raspi-gpio set 2 a3 pu
    sudo raspi-gpio set 3 a3 pu
}

https://forums.raspberrypi.com/viewtopic.php?t=309763
dtoverlay=uart2,ctsrts


sudo systemctl disable hciuart

++放弃了+++全部还原 前面已经执行了的sudo systemctl disable hciuart

bt_init()
{
    sudo raspi-gpio set 15 a0 pu
    sudo raspi-gpio set 14 a0 pu
    sudo raspi-gpio set 16 a3 pu
    sudo raspi-gpio set 17 a3 pu
}

接线


 $ nano /lib/systemd/system/hciuart.service
[Unit]
Description=Configure Bluetooth Modems connected by UART
ConditionFileNotEmpty=/proc/device-tree/soc/gpio@7e200000/bt_pins/brcm,pins
After=dev-serial1.device

[Service]
Type=forking
ExecStart=/usr/bin/btuart

[Install]
WantedBy=multi-user.target
pi@raspberrypi:~/m_izar_rpi_gw/bluetooth_mcube/examples/advertisement $

pi@raspberrypi:~/m_izar_rpi_gw/bluetooth_mcube/examples/advertisement $ ./main
panic: failed to enable BLE stack:
 AdapterExists: Rejected send message, 2 matched rules; 
 type="method_call", sender=":1.15" (uid=1000 pid=650 comm="./main ") 
 interface="org.freedesktop.DBus.ObjectManager"
 member="GetManagedObjects" error name="(unset)" 
 requested_reply="0" destination="org.bluez" (uid=0 pid=613 comm="/usr/lib/bluetooth/bluetoothd ")

1. 停止bluetoothd

rfkill block bluetooth
sudo service bluetooth stop 
rfkill unblock bluetooth
sudo service bluetooth start 
sudo service bluetooth restart   已经down的板载蓝牙再吃Up
好了
2. 启动自己编译的bluetoot

上一篇:Android Bluetooth蓝牙scan过程


下一篇:蓝牙核心技术概述(一)蓝牙概述