STM32无人机
把我制作无人机的过程放在这里
老邵的科创世界
老邵的科创世界
软件无线电和无人机飞控的代码讲解和应用开发
展开
-
YMFC小四轴 众筹已成功 需要的朋友可联系我
近期做的ymfc-32小四轴众筹快开始了 希望大家多多支持众筹宣传页:https://www.crowdsupply.com/shaos-gadget/ymfc-flight-controller-and-mini-drone原创 2020-09-22 11:08:39 · 1213 阅读 · 0 评论 -
YMFC-32 小四轴 (二)
正式版(v1.1)的飞机做了2个改动。1.接收机供电现在直接在板子内部接到了电池上,不需要飞线接过去了,而是可以直接在原本设计的receiver的3个引脚上焊接上去。2.引出了4个pwm波的口,可以用来接大四轴电调。3.加大了电机孔,这样可以用橡皮圈固定电机,不用胶水了。接大四轴有2个要注意的。1.电源口要接ubec,不能直接用12v供电。2.pwm波输出的波形有区别,所以代码和小四轴不同。...原创 2020-07-23 13:40:52 · 749 阅读 · 0 评论 -
YMFC-32 小四轴 (一)
https://github.com/jamesshao8/ymfc-mini-drone本博客前几天送出了几个v1.0版本的ymfc小四轴。在这里我要说一下组装教程和使用方法原创 2020-07-14 13:45:44 · 2249 阅读 · 6 评论 -
基于stm32f103c8t6+mpu6050+nrf24l01的分体小四轴
今天介绍一个小玩意是一个开源小四轴。我考虑过基于之前做的stm32飞控来做一个小四轴,对于新手来说比较安全,然后就上网找一样芯片的小四轴看看能不能在不画板子情况下,把软件移植上去。后来我找到了这一款小四轴。它的主要部件stm32f103c8t6和mpu6050和我的stm32飞控是一模一样的。我的stm32飞控还多了一些传感器,但是并不是必须的,只有陀螺仪是必须的,加速度计也比较重要,这些...原创 2020-03-29 22:23:52 · 3631 阅读 · 6 评论 -
STM32 GPS悬停飞控 (二十九) 又烧了个板子 自动起飞降落调试
昨天把新设计的带双路数传的板子上的mpu6050搞坏了。可能是mpu6050离分压电阻太近?也可能是那天自动降落坠地太重?也有可能是我刷程序的时候,直接把跳线帽插到下载位上电,而不是等上电后再换跳线帽位置再reset。反正后来mpu6050检测不到,万用表测量了,mpu6050的sda scl和pcb其它部分对应引脚都是通的,但是它们之间断路了,本来应该是它们之间也有个电阻的。我后来用了我...原创 2019-09-06 11:26:55 · 668 阅读 · 0 评论 -
STM32 GPS悬停飞控 (二十五) 双向数传 路点飞行 树莓派
这两天又研究了一下,发现老外居然已经把数传改为了双向的,并且在用电脑+数传做路点自动飞行了。这样我的计划就改变了,首先我重新做了一块pcb板子,数传口改为了双向的。并且我放弃了通过stm32下载口传输数据的想法,因为老外已经在数传口实现了双向数据传输,我没必要去改这些代码了。综合考虑,我打算把原来的几个方案分为两个方案来做。1.对之前的pcb稍作修改,紧凑一些,带双向数传口,到时候...原创 2019-08-28 21:57:06 · 727 阅读 · 0 评论 -
STM32 GPS悬停飞控(三)供电 i2c速度 遥控信号测试 电调信号
今天做了几件事1.把原来那个没5v引脚的stm32板子,通过microusb接口连了一根线,并把usb线剪开,确认可以通过这根线内部的红色和黑色来给板子供5v电。2.先用示波器测试了mpu6050和stm32连接后的scl,算了一下周期确实是2.5us即400kHz,那么这样直接连接速度没问题。下图是示波器连线图下图是波形3.测试了遥控器信号(输入a),发现1234...原创 2019-02-01 23:06:59 · 1348 阅读 · 0 评论 -
STM32 GPS悬停飞控(二)软件bug mpu模块问题 串口下载器 供电问题
今天发现几个坑。1.ymfc-32项目里的Setup文件的第31行HardWire HWire(2, I2C_FAST_MODE); 其中HardWire要改为TwoWire,否则编译不通过。2.我昨天焊接的MPU6050模块接上去后,i2cscan函数能找到地址0x69,但是acc和gyro读数都是0,换了之前ymfc-al用的mpu6050模块就搞定了。3.我的下载模块是cp20...原创 2019-01-31 22:36:36 · 1505 阅读 · 2 评论 -
STM32 GPS悬停飞控 (四十四) 数传使用tkinter实现界面
昨天试飞了飞机,发现两个问题:1.有时候传输数据出错,会导致图传有问题,可能图传也要加校验。2.另外飞到70多米处断线后没法自动重连,可能是lte模块拨号的问题。https://v.youku.com/v_show/id_XNDM5NjU4ODg5Ng==.html?spm=a2h3j.8428770.3416059.1带界面的数传代码#!/usr/bin/python# ...原创 2019-10-13 23:37:33 · 526 阅读 · 0 评论 -
STM32 GPS悬停飞控 (四十二) 图传自动启动
我用了这些代码,现在树莓派和服务器都能自动启动图传相关的程序了,客户端这里打开程序就能看到图像。我下楼也测试过,信号不好时最好还是用320x240。quadcopter rc.localsudo pppd call gprs &sudo create_ap -n wlan0 pi raspberry &sleep 30sudo python /home/pi/q...原创 2019-10-03 11:13:13 · 536 阅读 · 0 评论 -
STM32 GPS悬停飞控 (四十一) 另一种图传
数传搞得差不多了,接下来搞图传。之前试过了rtmp推送,延迟比较大,而且共享服务器带宽不行,自己搭建rtmp服务器又有些麻烦。打算自己用python搞一个。本人以前做树莓派坦克也有图传,是根据下文改的:https://blog.csdn.net/huhumama0/article/details/9164873但是今天发现用不了,原因是客户端现在是16.04,apt装的opencv不带...原创 2019-10-02 22:37:17 · 946 阅读 · 0 评论 -
STM32 GPS悬停飞控 (四十)树莓派 服务器 自动启动
我申请了一个华为云免费服务器。然后这两天做了一下各种自动启动的操作,毕竟在外面试飞的时候运行命令启动比较麻烦。发现几个事情要注意。树莓派不能先建立wifi再拨号,否则拨不上去,一定要先拨号再启动wifi,另外route不要在rc.local里做,否则wifi信号就没了。但是我发现运行python代码的时候会自动配置上路由表,效果跟route一样。服务器首先要在华为的网站上开启我要用的端口...原创 2019-10-02 09:53:28 · 324 阅读 · 0 评论 -
STM32 GPS悬停飞控 (三十九)树莓派 断线重连
昨天的程序只是实现了数据通信,但是不太好用,比如服务器端必须要树莓派先连上,再等客户端连上,并且一旦断开没重连机制。我又修改了程序,服务器端可以在任何时候等待客户端和树莓派,并且它们掉线后再次连接服务器端照样能正常通信,客户端和树莓派的程序也在检测是否和服务器端断开连接,如果发现断开会自动重新连接。下面是我写得程序,我去掉了串口部分,这样测试工作只需要一台电脑就能完成。server.p...原创 2019-09-30 06:25:06 · 312 阅读 · 0 评论 -
STM32 GPS悬停飞控 (三十八)树莓派 服务器中转
由于要用树莓派和lte,所有的数据都要经过公网,但是无论是树莓派还是用户终端都没公网ip,所以要用一个服务器中转一下。socket_transfer.py就是中转服务器。serial_socket_connect.py运行在树莓派上,是socket客户端。socket_decode.py运行在用户终端,也是socket客户端。现在socket_transfer这个服务器软件能够运行,但是还...原创 2019-09-29 06:45:37 · 301 阅读 · 0 评论 -
STM32 GPS悬停飞控 (三十七)树莓派 串口 socket
这是用socket转发串口数据,然后另一头socket收到后进行解码。serial_socket.py是转发程序,注意这里串口读取是50个全部读到才发socket,否则会有问题,刷新速度很快,但是实际更新不及时。socket_decode.py是socket连接的另一端,用于接收和解码数传数据的。serial_socket.py#!/usr/bin/python# coding...原创 2019-09-29 06:30:59 · 429 阅读 · 0 评论 -
STM32 GPS悬停飞控 (三十六)树莓派 数传串口解码
我写了个串口接收程序,然后仿照c#地面站写了解码的程序,测试下来可以用。我测试时飞控只用了核心板,把飞控里好多检查的代码去掉才会有数传数据发出来。然后我把cp2102 rx接到数传口上,cp2102另一头是接在ubuntu电脑上跑的。跑下来没问题后可以放到树莓派飞控上试试看。接下来还要写一个socket转发程序。转发串口数据再解码。#!/usr/bin/python# coding...原创 2019-09-28 23:03:01 · 524 阅读 · 0 评论 -
STM32 GPS悬停飞控 (三十五)树莓派 4g视频回传
做完了路点自动飞行可以考虑树莓派+4g真的发挥作用了。首先实现远程图传,再做远程数传。我首先尝试了rtmp推流。这样几乎不用自己写什么代码也能实现任意客户端的访问。发射端直接用avconv,客户端可以用跨平台的vlc,服务器端也有好多免费测试的rtmp服务器。方法如下:sudo raspi-config启用摄像头sudo nano /etc/modules最后添加bcm...原创 2019-09-25 06:50:17 · 2242 阅读 · 0 评论 -
STM32 GPS悬停飞控 (三十四)路点飞行
https://v.youku.com/v_show/id_XNDM3MTYwMTEzMg==.html?spm=a2h3j.8428770.3416059.1这是昨天晚上拍摄的路点自动飞行的视频,上面的飞控是不带树莓派的双向数传版本。碰到几个小问题,返航自动降落时,下降速度过快。后来我飞机上的数传天线还丢了。当时在头顶上我从电脑上看到高度数据不太对还以为软件有问题,后来降下来才发现没...原创 2019-09-23 14:06:33 · 557 阅读 · 2 评论 -
STM32 GPS悬停飞控 (三十二) 把树莓派设置为wifi ap
在室外飞行时一般没有一个路由器来中转。所以最好直接把树莓派设置为wifi ap,这样电脑直接连树莓派热点,然后再ssh登录控制树莓派。我用了现成的脚本sudo apt-get install dnsmasq hostapdgit clonehttps://github.com/oblique/create_apcd create_apsudo make installsudo c...原创 2019-09-11 16:32:34 · 415 阅读 · 0 评论 -
STM32 GPS悬停飞控 (三十一)树莓派飞控室内试飞 热成像仪
我昨天在室内试飞过带树莓派的飞控了。飞行期间树莓派没有死机,我用另一台电脑远程登上去,然后minicom看了串口收到的数传数据没什么问题。今天晚上打算下楼用gps定点飞行一下。先传个昨天飞完了的照片,视频等今晚室外飞了再传。昨天家里抓了个老鼠,然后我用热成像仪观察了一下,这是没开灯时的效果,中间红点是老鼠。这是开灯的效果,我在老鼠身上也盖了个老鼠板,所以这个热量是透过老鼠板检...原创 2019-09-11 11:58:45 · 2013 阅读 · 1 评论 -
STM32 GPS悬停飞控 (三十)自动降落、电池补偿优化 原作回复
昨晚我改了自动降落代码自动降落步骤3里的判断我改为了这个。if (pid_altitude_setpoint > ground_pressure + 15)我现在是高度保持的气压地面气压比较,如果高度保持的气压目标值大于地面气压就认为是着地了。后面的offset是因为有时候气压测量值有误差,加上这个15可以确保飞机着地后才进入步骤4,它不能太大也不能太小,太大的话飞机会重复撞击地...原创 2019-09-10 09:55:58 · 557 阅读 · 1 评论 -
STM32 GPS悬停飞控 (二十六) 调参 串口
这两天为了把飞机调得更稳定,我又调了一下参数。现在主要针对垂直方向的d项,本来挺稳了,但是我调过头后飞机不听话上升装在家里房顶上,然后螺旋桨坏了,我发现换了螺旋桨后,起飞油门量会有变化,要重新找到合适的。另外就是桨平衡确实重要,螺旋桨撞坏后飞机会莫名其妙地不听话上升(不是参数问题),另外我看到gps那根支撑杆也晃动得很严重,我最后换了新的螺旋桨,并且重新做平衡后就解决了这个问题。目前用的最佳参数是...原创 2019-08-31 14:10:30 · 670 阅读 · 19 评论 -
STM32 GPS悬停飞控 (二十四) 带上树莓派和4G
stm32悬停飞控已经调试完毕了,接下来要给自己立个flag,要把电脑带上天。决定带个树莓派上天,然后加上4g模块,以后可能还会带sdr。打算分三步走:1.用独立的树莓派标准版,树莓派上接usb串口,然后串口接数传引脚,树莓派上再插一个4g hat。树莓派和飞机之间额外做一层pcb用来固定,这样的好处是不需要改单片机代码,而且树莓派串口被4g hat占用也没事,不用担心缺串口,可以把数...原创 2019-08-25 23:08:55 · 988 阅读 · 1 评论 -
STM32 GPS悬停飞控 (二十三) DIY焊接步骤
为了简化安装,我这可以只提供PCB裸板和气压计外壳,其它都是标准化零件可以淘宝购买。这里说一下PCB裸板的焊接教程。可以先把stm32和mpu6050的引脚焊接在本身的板子上,然后插入我的pcb,并且把其它零件也配好。注意stm32的micro usb口是在上面的,我在pcb板子上也留了usb字样。另外mpu6050焊接的时候最好先在另一头下面垫一些餐巾纸,这样保证mpu6050与下方pc...原创 2019-08-18 17:18:17 · 2139 阅读 · 0 评论 -
STM32 GPS悬停飞控 (二十二) PCB飞控完成
pcb飞控做好了,试飞了。本来会报7号错误,说自动检测的起飞油门量超过范围,我把范围改大后能起飞了。另外我现在定高模式还不太行,飞机还是会掉在地面附近,受地效影响才能定高。我仔细观察了一下定高为什么不太行。1.我把带外壳的气压计用手电和吹风机测试了,用自动测试程序画了曲线,发现在外壳内部时,气压计受强光手电影响不大,但是电吹风会有影响,根据气流方向不同有时候升高有时候降低,如...原创 2019-08-13 09:39:46 · 1089 阅读 · 0 评论 -
STM32 GPS悬停飞控 (十八)洞洞板飞控 脱控悬停
https://v.youku.com/v_show/id_XNDI3NzE2MzgwOA==.html?spm=a2h3j.8428770.3416059.1脱控悬停已经完全搞定了,我发现代码和参数都没什么问题,只是操作上和大疆不太一样,有步骤的。先模式1起飞,然后开到模式2,在地面附近能定高,再飞到空旷的地点开到模式3定点,最后再拉升高度,到达目标高度后,油门回中即可。注意:...原创 2019-07-17 22:22:37 · 1104 阅读 · 0 评论 -
STM32 GPS悬停飞控 (十四)数传 i2c修bug
后面要做数传了。我先做了不带数传的测试。这是测试视频(视频前半段):https://v.youku.com/v_show/id_XNDIyMzUxMTY2NA==.html?spm=a2h3j.8428770.3416059.1然后再刷了飞控,接上数传发射机。另外还用Arduino uno做了数传接收机。但是发现有问题,PC13一直狂闪,闪烁频率不是飞控里设计的跟GPS信号相关的频...原创 2019-06-11 13:05:25 · 988 阅读 · 0 评论 -
STM32 GPS悬停飞控(六)led和电池电压检测焊接
最后两部分(led和电池电压检测)做完了。先把飞控板子接上飞机和电脑,可以看到有一根蓝色线接在我的板子正面引脚上,这是从12v电池正极引出的。然后进入电池电压测试,可得电压是12.1v左右接下来是led测试,红灯和绿灯分别会亮起。至此,飞控的硬件部分都完成了,只要固定好,并且把飞控程序上传就能飞了。可惜测试做完后我想把12v引线拆下来时,杜...原创 2019-02-04 20:30:37 · 1090 阅读 · 2 评论 -
STM32 GPS悬停飞控 (四十三) 实际测试
https://v.youku.com/v_show/id_XNDM4NDg5MjA4OA==.html?spm=a2h3j.8428770.3416059.1请看上面视频,我在家里飞过了,挺稳定,飞行过程中,视频和数传数据都能实时回传。然后我下楼以后看了gps数据也能回传。但是视频有点问题,我降低到320 240才传成,实时性倒是不错。接下去要写一个上位机界面把数传数据搞得更直观些,...原创 2019-10-03 14:53:14 · 1295 阅读 · 0 评论 -
STM32 GPS悬停飞控 (三十三) ymfc-32_auto_rth和ymfc-32_Flight_Monitor代码对比
树莓派已经上天了,飞控里用的还是rth程序,能稳定定点和自动起飞,自动降落有点下降过快,另外数传只是试过接收。接下来数传双向通信我还是打算在不带树莓派的版本上测试。测完了再到树莓派飞控里用,再写一个树莓派上运行的转发程序就行。首先先看一下flight_monitor飞控和rth飞控的区别。首先在timer_setup里增加了一个timer3,然后增加了一个soft_serial_handlin...原创 2019-09-20 11:15:48 · 682 阅读 · 0 评论 -
STM32 GPS悬停飞控 (二十八) ymfc-32_auto和ymfc-32_auto_rth代码对比
我已经把双路数传板子画好了,现在可以研究路点自动飞行了,我看了视频路点自动飞行是在ymfc-32_auto_rth基础上修改而来的,但是我之前飞的一直是ymfc-32_auto,一直在那个代码里调pid,现在也总算稳定定点了。所以现在下一步就是仔细阅读ymfc-32_auto_rth的代码,并比较它与ymfc-32_auto的区别。比较代码后,我发现ymfc32 auto里的模式3,只有在切换...原创 2019-09-04 23:26:29 · 1089 阅读 · 0 评论 -
STM32 GPS悬停飞控 (二十七) stm32串口对接树莓派zero
今天把树莓派zero和stm32接起来了,先接的是面包板上的用的是下载口,然后再接了飞控上的stm32用的是数传的那个串口,测试下来都没什么问题。就是以后软件上要改一下,现在还是用minicom在通信,以后要自己用python和c++写一个了。https://v.youku.com/v_show/id_XNDM0MjM1NjE2NA==.html?spm=a2h3j.8428770.341...原创 2019-09-03 16:44:23 · 412 阅读 · 0 评论 -
STM32 GPS悬停飞控 (二十一)垂直方向优化
水平方向悬停一直没问题,垂直方向有时候可以有时候不行,我决定把我看到的现象记录下来,再优化一下。1.很多时候在地面附近能悬停,起飞后不能,会不会是地面效应的影响,或者pid不对,更适合地面附近的悬停。2.悬停比较成功的是在晚上,后来有一次白天去浦江镇就不太行,会不会是光线影响。3.前段时间在浙大,白天并且飞到一定高度时也悬停住了,但是一阵风吹过飞机还是爬升了,要考虑风吹过的影响。4...原创 2019-08-09 06:59:44 · 503 阅读 · 0 评论 -
STM32 GPS悬停飞控 (二十)PCB固定
这两天我买了铜柱,并尝试把pcb固定在机架上。我之前开孔开错了,本来是M2.5的螺丝,结果我按照M3开的,结果发现也可以用没有晃动。所以我打算保留这个尺寸的开孔,也是考虑到手工安装时不精确,导致可能有错位,如果孔太小就无法安装。我的板子还是有点大,导致gps支架无法竖直起来,否则底部的粗圆柱要碰到pcb,所以pcb边沿还要减小一些,另外最好是底部的边沿小,这样我可以把gps放在飞机后半部分...原创 2019-08-05 08:31:23 · 494 阅读 · 0 评论 -
STM32 GPS悬停飞控 (十九)PCB
接下来的工作是要使飞机更牢固,并更便于生产,因此前段时间开始琢磨设计PCB,首先先画了一块实验性的最小系统,只包含了主控stm32,姿态传感器mpu6050和一个串口引脚。另外还钻了孔,用来与机架固定。我在立创eda上绘制的原理图,然后自动生成了PCB,自己画了一下排线,并找了钻孔的位置,最后覆铜就搞定了。我买的stm32和mpu6050都有第三方设计的原理图和PCB文件,如果没有也可以自...原创 2019-07-30 07:07:09 · 629 阅读 · 0 评论 -
STM32 GPS悬停飞控 (十七)洞洞板飞控试飞
好消息,新款飞控已经试飞成功,并且实现悬停了。试飞视频如下:https://v.youku.com/v_show/id_XNDI3MjI1ODE0OA==.html?spm=a2h3j.8428770.3416059.1可明显看到切换为GPS悬停模式后,在水平方向飞机是可以保持在固定范围内的,当偏移量超过一定大小后会自动返回。垂直方向还有些问题,切换到模式2时很难保持在一个固...原创 2019-07-14 09:19:32 · 525 阅读 · 0 评论 -
STM32 GPS悬停飞控 (十六) 洞洞板
新飞控已经焊接到洞洞板上了,各种测试都跑了一下(除了电池电压读取功能),目前测试下来没问题,加载飞控程序后也能根据姿态调整电机转速。明天就带出去试飞了。下图是GPS和罗盘每根线的顺序,焊接并包起来后以后就看不清了,在这里作个记录,万一以后维修要用。...原创 2019-07-11 09:50:10 · 980 阅读 · 0 评论 -
STM32 GPS悬停飞控 (十五) LED
今天把两个LED接到面包板上了,因为比较简单,所以没在测试程序上测试,而是直接用飞控程序试了,试下来没问题,可以按照设计要求闪烁,并且和数传上显示的状态正确对应。试完了LED我还试了GPS锁定,观察了PC13这个灯以及数传上的显示,确实在锁定后会有变化。具体效果请看视频:https://v.youku.com/v_show/id_XNDIyNDc2MzI3Ng==.html?spm=a2h...原创 2019-06-12 10:59:47 · 452 阅读 · 0 评论 -
STM32 GPS悬停飞控 (十三)遥控器
接下来是遥控器。接收机ppm口从上到下是s + - 。按照这个顺序接入stm32。遥控器上要设置为ppm模式。system->RX setup->output mode里如下图设置。另外,二通道要设置反向,function->reverse里。然后前4个通道就好了,可以解锁,后两个开关还要研究下。接下来设置后两个通道。老外要求一个三档...原创 2019-06-02 19:57:44 · 1881 阅读 · 2 评论 -
STM32 GPS悬停飞控 (十二) GPS
今天实现了gps信号的获取。我这么连线,mpu必须也接上否则不会打印信息。gps黄色是rx,绿色是tx,红色黑色分别是vcc和gnd。在室内是没信号的,但是gps也有输出。为了能锁定,我改了代码给了程序更长的搜索时间。我把checkgps里的7,8,45行的1000改成了10000。我还拿到了室外。另外,我电脑自带gps模块,我把他们的输出做了对比。这个截图可以...原创 2019-06-02 16:43:21 · 1595 阅读 · 2 评论