ocrobot:alpha:8f328d-rf:main
ALPHA 8F328D-RF
ALPHA 8F328D-RF是一款低成本的无线物连控制器。
参数
MCU | LGT8F328D |
---|---|
FLASH | 32Kbytes |
SRAM | 2Kbytes |
E2PROM | 可配置为 0K/1K/2K/4K/8K(与FLASH共享) |
PWM | 6路 |
主频 | 16MHz |
ADC | 6通道12位 |
DAC | 1通道8位 |
SPI | 有 |
TWI(I2C) | 有 |
GUID(全局设备号) | 有 |
内部基准 | 1.25V/2.56V ±1% |
板卡版本需要选择0.0.12版本
参考图片
环境初始化
前往http://www.ocrobot.com/doku.php?id=zh:downloads 下载最新的测试版IDE
打开IDE界面
选择板卡管理器
在管理器中选择 LGT的支持环境,点击安装
等待安装完成,进度条消失即可
选择 LGT8F328D 板卡即可
支持库的安装与例程
支持库下载:lt8900.zip
将此压缩包解压缩到IDE根目录的libraries目录下
随后取出两块主板,分别作为发信机和接收机进行通讯测试(自行做好标记)
发信机程序如下:
/* * 发信机 * 迷你强 * chenglei1234@gmail.com Copyright (C) 2016 迷你强增补 Copyright (C) 2015 Rob van der Vee"));rob.c.veer@gmail.com> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 as published by the Free Software Foundation. */ /* Connections: OCROBOT -> LT8910 GND GND 3v3 VCC 23 PKT 21 CS 24 RST 11 MOSI 12 MISO 13 SCK */ #include <SPI.h> #include "LT8900.h" /*无线射频SPI管脚定义,请勿更改*/ const uint8_t PIN_NRF_RST = 24; const uint8_t PIN_NRF_CS = 21; const uint8_t PIN_NRF_PKT = 23; bool writer; LT8900 lt(PIN_NRF_CS, PIN_NRF_PKT, PIN_NRF_RST); void setup() { // put your setup code here, to run once: Serial.begin(9600); Serial.println(F("\n\nLT8900 module sample, v0.1.\n\n")); /*SPI 初始化*/ SPI.begin(); SPI.setBitOrder(MSBFIRST); SPI.setDataMode(SPI_MODE1); SPI.setClockDivider(SPI_CLOCK_DIV4); delay(500); /*2.4G 射频初始化*/ lt.begin(); //收发机初始化 lt.setCurrentControl(15,15); //配置发射功率(0为最大功率输出) lt.setDataRate(LT8900::LT8910_62KBPS); //配置速率(LT8910_62KBPS,LT8910_125KBPS,LT8910_250KBPS,LT8900_1MBPS),速率越高,通讯距离会越短 lt.setChannel(0x06); //配置信道(0.5Mhz为一个间隔从2402Mhz起) } void loop() { delay(2000); //发送时间间隔2秒 uint8_t data[] = { 'h','e','l','l','o' }; //创建数据包数组 lt.sendPacket(data, 5); //将数据封包 并发送 lt.whatsUp(Serial); //显示调试信息到指定接口(实际使用时请注释掉) }
接收机部分代码
/* * 收信机 * 迷你强 * chenglei1234@gmail.com Copyright (C) 2016 迷你强增补 Copyright (C) 2015 Rob van der Vee"));rob.c.veer@gmail.com> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 as published by the Free Software Foundation. */ /* Connections: OCROBOT -> LT8910 GND GND 3v3 VCC 23 PKT 21 CS 24 RST 11 MOSI 12 MISO 13 SCK */ #include <SPI.h> #include "LT8900.h" const uint8_t PIN_NRF_RST = 24; const uint8_t PIN_NRF_CS = 21; const uint8_t PIN_NRF_PKT = 23; LT8900 lt(PIN_NRF_CS, PIN_NRF_PKT, PIN_NRF_RST); void setup() { // put your setup code here, to run once: Serial.begin(9600); Serial.println(F("\n\nLT8900 module sample, v0.1.\n\n")); /*SPI 初始化*/ SPI.begin(); SPI.setBitOrder(MSBFIRST); SPI.setDataMode(SPI_MODE1); SPI.setClockDivider(SPI_CLOCK_DIV4); delay(500); /*2.4G 射频初始化*/ lt.begin(); //收发机初始化 lt.setCurrentControl(15,15); //配置发射功率(0为最大功率输出) lt.setDataRate(LT8900::LT8910_62KBPS); //配置速率(LT8910_62KBPS,LT8910_125KBPS,LT8910_250KBPS,LT8900_1MBPS),速率越高,通讯距离会越短 lt.setChannel(0x06); //配置信道(500khz为一个间隔从2402Mhz起) } void loop() { if (lt.available()) //判断缓冲区是否有数据 { uint8_t buf[32]; //创建收信缓冲区(32字节) int packetSize = lt.read(buf, 32); //获取取信息长度,并且将数据存入缓冲区 if (packetSize > 0) //判断数据包是否正常,如果-1则CRC校验出错建议抛弃数据包 { Serial.println(F("Packet read OK")); for(int i = 0; i < packetSize; i++) //循环输出数组数据 { Serial.print((char)buf[i]); } Serial.println(); } else { Serial.println(F("CRC is ERROR")); } lt.startListening(); //切换到接收模式 } }
如上,此时,接收机应该能够正常接受并显示发信机发送的字符串hello,如果数据包在传输过程中受损,自动CRC校验功能会发现并且提示CRC错误
下载
原理图:
ocrobot/alpha/8f328d-rf/main.txt · 最后更改: 2023/06/07 04:23 由 127.0.0.1