×

MakerDiary NRF52840上的CircuitPython

消耗积分:0 | 格式:zip | 大小:0.13 MB | 2022-12-22

分享资料个

描述

虽然我真的很喜欢 ESP32 芯片,但我想玩 NRF52840,这是一个非常漂亮的芯片!

所以我买了 MakerDiary NRF52840 Usb Dongle,价格不贵(12.99 美元)

poYBAGOhZSGALREnAACnWcRnmvk231.png
 

这里有一些特点:

  • 低功耗蓝牙
  • 省电
  • 真的很小
  • NFC标签
  • RGB LED
  • 最重要的是与 CircuitPython 兼容(感谢gpshead
pYYBAGOhZSqAUtYQAABIQuFqHsQ879.png
Nordic Semi 产品简介文件

让我们看看如何安装 CircuitPython ,然后我们用一个小例子来测试它,以使用 BLE 控制 RGB Led

文档

安装 NRF Connect

首先我们需要NRF Connect ,我们将使用此软件将 CircuitPython 上传到我们的板上。

单击在程序员上安装

poYBAGOiiemADBApAAAcSveGaF0801.png
 

将威廉希尔官方网站 板置于引导加载程序模式

插入威廉希尔官方网站 板时按下RESET 按钮,您应该会看到红色LED 灯闪烁

pYYBAGOiie2AbCUpAADsTqupJLQ462.png
 

现在,您可以将威廉希尔官方网站 板连接到 NRF Connect Programmer

pYYBAGOiie-AXpkAAABr2EkDS9Q497.png
 

下载 Adafruit NRF52 Bootloader 和 CircuitPython

我们需要2 个十六进制文件来安装 CircuitPython

  • 引导加载程序,它将使我们的威廉希尔官方网站 板作为 USB 驱动器可见
  • CircuitPython 来解释我们的 python 代码

在此处下载mdk_nrf52840_dongle_bootloader-XXX_sXXX_X.XXhex https ://github.com/adafruit/Adafruit_nRF52_Bootloader/releases

BLE 支持仅适用于 CircuitPython 5.0.0!不要安装当前的稳定版本 (4.1.2)。
poYBAGOiifOAKPWxAAAkGWccKjY254.png
 

上传十六进制文件

在 Programmer 中,添加2 个 Hex 文件,它应该如下所示:

poYBAGOiifWAc0gZAACvOS6wlNo257.png
您需要一个 SoftDevice 来上传您的程序,但它包含在 Adafruit NRF52 引导加载程序中
 

拔下并重新插入您的开发板,您应该会看到一个 USB 驱动器

pYYBAGOiifqAcp9-AAAhr49ejSs156.png
赢家赢家鸡肉晚餐!
 

恭喜您现在可以使用 CircuitPython 编写代码了!

您现在将无法使用 NRF Connect 访问您的开发板,如果您需要上传新程序,只需按重置即可。

测试 BLE 通信

使用 CircuitPython 的一件很酷的事情是我们只需拖放文件即可使其工作

所以让我们试试看,下载这个程序并将其复制到你的板子

poYBAGOiif2AQT3AAAB0Xb3SgcU222.png
 

控制 RGB LED

您还应该能够使用手机控制 LED。

  • 在您的应用商店下载Adafruit Bluefruit LE Con​​nect
pYYBAGOiigGAecYJAAA4vd-eNVU192.png
 
  • 连接到CIRCUITPY****
  • 转到控制器/颜色选择器并尝试更改颜色!
poYBAGOiigiALJyFAABQKx_LFwg401.png
 

编写自己的程序

您现在可以按照 Adafruit 教程进行操作,为 Adafruit NRF52840 编写的代码应该可以正常工作!

  • CircuitPython 教程:
  • 蓝牙 LE 教程:
  • 库:

您可以使用任何软件进行编码,但建议使用https://codewith.mu/

每次保存code.py时,代码都会重新启动,检查串口是否有错误和调试信息。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !

'+ '

'+ '

'+ ''+ '
'+ ''+ ''+ '
'+ ''+ '' ); $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code ==5){ $(pop_this).attr('href',"/login/index.html"); return false } if(data.code == 2){ //跳转到VIP升级页面 window.location.href="//m.obk20.com/vip/index?aid=" + webid return false } //是会员 if (data.code > 0) { $('body').append(htmlSetNormalDownload); var getWidth=$("#poplayer").width(); $("#poplayer").css("margin-left","-"+getWidth/2+"px"); $('#tips').html(data.msg) $('.download_confirm').click(function(){ $('#dialog').remove(); }) } else { var down_url = $('#vipdownload').attr('data-url'); isBindAnalysisForm(pop_this, down_url, 1) } }); }); //是否开通VIP $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code == 2 || data.code ==5){ //跳转到VIP升级页面 $('#vipdownload>span').text("开通VIP 免费下载") return false }else{ // 待续费 if(data.code == 3) { vipExpiredInfo.ifVipExpired = true vipExpiredInfo.vipExpiredDate = data.data.endoftime } $('#vipdownload .icon-vip-tips').remove() $('#vipdownload>span').text("VIP免积分下载") } }); }).on("click",".download_cancel",function(){ $('#dialog').remove(); }) var setWeixinShare={};//定义默认的微信分享信息,页面如果要自定义分享,直接更改此变量即可 if(window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == 'micromessenger'){ var d={ title:'MakerDiary NRF52840上的CircuitPython',//标题 desc:$('[name=description]').attr("content"), //描述 imgUrl:'https://'+location.host+'/static/images/ele-logo.png',// 分享图标,默认是logo link:'',//链接 type:'',// 分享类型,music、video或link,不填默认为link dataUrl:'',//如果type是music或video,则要提供数据链接,默认为空 success:'', // 用户确认分享后执行的回调函数 cancel:''// 用户取消分享后执行的回调函数 } setWeixinShare=$.extend(d,setWeixinShare); $.ajax({ url:"//www.obk20.com/app/wechat/index.php?s=Home/ShareConfig/index", data:"share_url="+encodeURIComponent(location.href)+"&format=jsonp&domain=m", type:'get', dataType:'jsonp', success:function(res){ if(res.status!="successed"){ return false; } $.getScript('https://res.wx.qq.com/open/js/jweixin-1.0.0.js',function(result,status){ if(status!="success"){ return false; } var getWxCfg=res.data; wx.config({ //debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId:getWxCfg.appId, // 必填,公众号的唯一标识 timestamp:getWxCfg.timestamp, // 必填,生成签名的时间戳 nonceStr:getWxCfg.nonceStr, // 必填,生成签名的随机串 signature:getWxCfg.signature,// 必填,签名,见附录1 jsApiList:['onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); wx.ready(function(){ //获取“分享到朋友圈”按钮点击状态及自定义分享内容接口 wx.onMenuShareTimeline({ title: setWeixinShare.title, // 分享标题 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享给朋友”按钮点击状态及自定义分享内容接口 wx.onMenuShareAppMessage({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 type: setWeixinShare.type, // 分享类型,music、video或link,不填默认为link dataUrl: setWeixinShare.dataUrl, // 如果type是music或video,则要提供数据链接,默认为空 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ”按钮点击状态及自定义分享内容接口 wx.onMenuShareQQ({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口 wx.onMenuShareWeibo({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ空间”按钮点击状态及自定义分享内容接口 wx.onMenuShareQZone({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); }); }); } }); } function openX_ad(posterid, htmlid, width, height) { if ($(htmlid).length > 0) { var randomnumber = Math.random(); var now_url = encodeURIComponent(window.location.href); var ga = document.createElement('iframe'); ga.src = 'https://www1.elecfans.com/www/delivery/myafr.php?target=_blank&cb=' + randomnumber + '&zoneid=' + posterid+'&prefer='+now_url; ga.width = width; ga.height = height; ga.frameBorder = 0; ga.scrolling = 'no'; var s = $(htmlid).append(ga); } } openX_ad(828, '#berry-300', 300, 250);