ICS

  • 2023-11-28
  • 回复了主题帖: 【得捷电子Follow me第3期】0. 开箱贴

    秦天qintian0303 发表于 2023-11-28 08:29 楼主这次购买的很丰富 啊  
    就买了推荐的那几样

  • 回复了主题帖: 【得捷电子Follow me第3期】1. 任务1-编译自己的 Micropython 系统

    dcexpert 发表于 2023-11-28 09:42 安装esp-idf是个很费劲的事情,github太不稳定了。
    确实,大部分时间就是在配置环境上面

  • 2023-11-27
  • 发表了主题帖: 【得捷电子Follow me第3期】1. 任务1-编译自己的 Micropython 系统

    > 任务1-编译自己的 Micropython 系统 > > - 编译安装 ESP-IDF > - 使用 ESP-IDF 编译 Micropython,其中包含自定义的固件内容(点灯) > - 烧录 Micropython 并进行验证 > > 由于在 Windows 上编译比较麻烦,我特意装了一个 Deepin/Linux 用来编译,下面就不再提及。 [TOC] 1. ### 安装 ESP-IDF    ESP-IDF是乐鑫为ESP32和ESP32-S/C系列芯片提供的软件开发框架,在Seeed Studio XIAO ESP32C3上支持最新的 Micropython 是基于 ESP-IDF 5 构建的,所以我们需要先安装 ESP-IDF 5 来为 MicroPython做准备。    首先,需要安装一些软件包,如git、wget、flex、bison、gperf、python3、python3-pip、python3-venv、cmake、ninja-build、ccache、libffi-dev、libssl-dev、dfu-util、libusb-1.0-0等,这些软件包是编译ESP-IDF所需的。    ```bash    sudo apt-get install git wget flex bison gperf python3 python3-pip python3-venv cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0    ```    然后,我们就需要从远程仓库克隆 IDF 源码和子模块    ```bash    mkdir -p ~/esp    cd ~/esp    git clone --recursive https://github.com/espressif/esp-idf.git    ```     接着,需要安装ESP-IDF所需的工具,如工具链、构建工具、Python环境等,可以运行install.sh脚本来自动安装这些工具,运行以下命令:    ```bash    cd ~/esp/esp-idf    ./install.sh esp32    ```    最后我们需要导入环境变量    ```bash    . $HOME/esp/esp-idf/export.sh    ```    为了以后每次编译更加方便,我在`~/.bashrc`添加了以下内容        以后每次想编译 Micropython,只需要运行`espenv`即可    ```bash    export IDF_PATH=/home/antonvanke/esp/esp-idf    alias espenv=". $IDF_PATH/export.sh"    ``` 2. ### 编译和烧录 Micropython    编译并安装完 ESP-IDF 后,就可以编译 Micropython 了,首先从远程仓库拉取最新的源码,    ```bash    git clone --recursive https://github.com/micropython/micropython.git    ```    然后我们就可以进行编译了,如果你还没有导入环境变量,根据上一节内容执行`espenv`即可。首先编译交叉编译器。    ```bash    cd micropython    make -C mpy-cross    ```    然后我们进入到 ESP32 的目录    ```bash    cd ports/esp32    ls    ```    可以发现有一个叫做`modules`的文件夹,这个文件夹内存放着用 MPY 编写的部分代码和驱动,我们可以编写一个简单的亮灯代码(SEEED STUDIO EXPANSION BASE XIAO扩展板[引脚示意图](https://wiki.seeedstudio.com/Seeeduino-XIAO-Expansion-Board/#pinout-diagram)),借用一个 IIC 实现,新建一个`blink.py`,代码如下:    ```python    import time    import machine    led = machine.Pin(6, machine.Pin.OUT)        while True:        time.sleep_ms(100)        led.value(not led.value())    ```        我们可以查看`esp32/boards`下面有很多的文件夹,其中,每一个文件夹都是一个板子的配置,我们可以照葫芦画瓢的修改,也可以新建一个。这里,我就以`ESP32_GENERIC_C3`来进行修改。其中,修改`mpconfigboard.h`中的`MICROPY_HW_BOARD_NAME`可以更改其名称    ```c    #define MICROPY_HW_BOARD_NAME               "Follow ME III"    #define MICROPY_HW_MCU_NAME                 "XIAO ESP32C3"    ```    使用`make`来进行编译比使用`idf.py`编译更好    ```bash    make BOARD=ESP32_GENERIC_C3    ```    编译成功后即可通过其最后的一行来进行烧录        ```bash    esptool.py -p /dev/ttyACM0 -b 460800 --before default_reset --after hard_reset --chip esp32c3 --no-stub write_flash --flash_mode dio --flash_size 4MB --flash_freq 80m 0x0 build-ESP32_GENERIC_C3/bootloader/bootloader.bin 0x8000 build-ESP32_GENERIC_C3/partition_table/partition-table.bin 0x10000 build-ESP32_GENERIC_C3/micropython.bin    ``` 3. ### 进行验证        使用`thonny`在REPL中运行`import blink`即可看到 LED 闪烁 ### Follow Me: 3 [【得捷电子Follow me第3期】0. 开箱贴](http://bbs.eeworld.com.cn/thread-1264753-1-1.html) [【得捷电子Follow me第3期】1. 任务1-编译自己的 Micropython 系统](#) (未发布)【得捷电子Follow me第3期】2. 任务2-使用扩展板上的OLED屏幕显示文字和图形 (未发布)【得捷电子Follow me第3期】3. 任务3-播放任意一首音乐 ### 得捷创意大赛 [【DigiKey“智造万物,快乐不停”创意大赛】 物料开箱](http://bbs.eeworld.com.cn/thread-1263186-1-1.html) 【DigiKey“智造万物,快乐不停”创意大赛】1. ADS1282 驱动的移植与实验 【DigiKey“智造万物,快乐不停”创意大赛】2. 系统功能的基本实现 [^1]:[GitHub - micropython/micropython](https://github.com/micropython/micropython) [^2]: [Linux 和 macOS 平台工具链的标准设置](https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/get-started/linux-macos-setup.html) [^3]: [SEEED STUDIO EXPANSION BASE XIAO扩展板 - Wiki](https://wiki.seeedstudio.com/Seeeduino-XIAO-Expansion-Board/) [^4]: [XIAO ESP32C3 MicroPython库](https://github.com/IcingTomato/micropython_xiao_esp32c3)

  • 发表了主题帖: 【得捷电子Follow me第3期】0. 开箱贴

    感谢DigiKey联合EEWORLD举办的[【Follow me 第3期!与得捷一起解锁开发板超能力】活动](http://www.eeworld.com.cn/huodong/digikey_follow_me/)提供的元器件,这次下单到到货的速度很快! #### 订购清单 | 产品                             | 订购数量 | 价格   | | -------------------------------- | -------- | ------ | | Seeed Studio XIAO ESP32C3        | 2        | 85.76  | | SEEED STUDIO EXPANSION BASE XIAO | 1        | 136.12 | | GROVE AHT20 I2C INDUSTRIAL TEMP  | 1        | 53.12  | | GROVE LIGHT SENSOR VER 1.2       | 1        | 26.56  | |                                  | 5        | 301.56 | #### 照片 发现赠送的有天线,所以当时没买天线是明智之举。 #### Follow Me: 3 1.  [【得捷电子Follow me第3期】0. 开箱贴](#) 2.  (未发布)【得捷电子Follow me第3期】1. 任务1-编译自己的 Micropython 系统 3.  (未发布)【得捷电子Follow me第3期】2. 任务2-使用扩展板上的OLED屏幕显示文字和图形 4.  (未发布)【得捷电子Follow me第3期】3. 任务3-播放任意一首音乐 ##### 得捷创意大赛 1. [【DigiKey“智造万物,快乐不停”创意大赛】 物料开箱](http://bbs.eeworld.com.cn/thread-1260793-1-1.html) 2. [【DigiKey“智造万物,快乐不停”创意大赛】1. ADS1282 驱动的移植与实验](http://bbs.eeworld.com.cn/thread-1263186-1-1.html) 3. 【DigiKey“智造万物,快乐不停”创意大赛】2. 系统功能的基本实现

  • 2023-11-15
  • 回复了主题帖: 【DigiKey“智造万物,快乐不停”创意大赛】1. ADS1282 驱动的移植与实验

    lugl4313820 发表于 2023-11-15 08:53 大佬这个领域大有前途呀,听说探石油也是用振动来实现的,楼主可以多普及一下这些知识。是不是有点象B超的 ...
    差不多可以这样理解,毕竟地震的震动也是一种波,只是介质不同罢了

  • 2023-11-14
  • 回复了主题帖: 【DigiKey“智造万物,快乐不停”创意大赛】1. ADS1282 驱动的移植与实验

    wangerxian 发表于 2023-11-14 19:28 检波器大概是个什么样子的?
    🤣刚刚还在处理一大堆的检波器,检波器和线圈式麦克风差不多,主要由线圈和磁铁构成。 微弱的震 动会引发线圈产生感应电动势,在adc上就能检测出微弱的电压。

  • 回复了主题帖: 【DigiKey“智造万物,快乐不停”创意大赛】1. ADS1282 驱动的移植与实验

    lugl4313820 发表于 2023-11-14 15:30 大佬这个检测地震的原理的原理是怎么样的呀?摆着就行了吗?
    这个地震是一个宽泛的概念,自然的板块活动会产生波形,我们平常走路、汽车的行驶、震源车的触发、爆炸都能产生地震波。 我目前在研究三维地震勘探,人为制造地震波在地壳反射,用这检波器接收微弱信号即可分析出地下结构。 你可以参考这个:三维地震勘探_百度百科 (baidu.com)

  • 回复了主题帖: 【DigiKey“智造万物,快乐不停”创意大赛】2 功能需求分析及基础功能实现

    pd加热台超过200度铝基板电阻变大升温就非常慢了,不知道你有没有好的解决办法

  • 上传了资料: 【DigiKey创意大赛】1. ADS1282 驱动的移植与实验-资料文件

  • 发表了主题帖: 【DigiKey“智造万物,快乐不停”创意大赛】1. ADS1282 驱动的移植与实验

    本帖最后由 ICS 于 2023-11-14 12:54 编辑 作品名称:基于ADS1282的三维地震勘探仪器的设计 >  ADS1282 是用于地震监测和能源勘探且具有 PGA 的超高分辨率 4kSPS 2 通道 Δ-Σ ADC,具有32位分辨率、4kHz采样率、130dB动态范围的超高精度ADC。 > >  为什么要移植`ADS1282`驱动到`Arduino`? > >  Ti 官方提供的示例代码[^1]仅提供了`MSP432`的驱动代码,为了能在本项目的主控——`ESP32-S3`上运行,采用目前流行的嵌入式框架进行移植,Arduino有丰富的软件库和社区支持,可以方便地编写和调试代码,实现对ADS1282模块的控制和通信。 [TOC] #### 硬件准备 本次实验选用得捷提供的`ESP32-S3- WROOM-1UN8R2 DEV BRD`与自制的`ADS 1282`测试板 #### 移植过程 ##### 通讯引脚及其协议 SPI 通信模式为 MODE0,且是 MSBFIRST(参见数据手册 P25)。另外,需要特别注意的是 SPI CLK 频率不能大于 2M,笔者在第一次移植时就忽略了这个问题,导致找不到错误的原因。 ![时钟要求](/data/attachment/forum/202311/14/115918pjds05as4b6zkl78.png?rand=9679.346386397001) 其中连接到ESP32-S3- WROOM-1UN8R2 DEV BRD引脚的功能如下(参见数据手册P6) | NAME  | 功能                         | 连接到 | | ----- | ---------------------------- | ------ | | SCLK  | SPI时钟输入                  | IO21   | | DOUT  | SPI数据输出                  | IO13   | | DIN   | SPI数据输入                  | IO12   | | DRDY  | 数据准备就绪输出,低电平有效 | IO14   | | DONE  |                              | IO10   | | RESET | 复位输入,低电平有效         | IO47   | 我们将针脚按照以下的方式进行连接 ##### 寄存器及指令 | 指令名  |     操作码     | 功能                                                         | | :-----: | :------------: | :----------------------------------------------------------- | |   NOP   |      0x00      | 无操作,用于产生时钟或填充字节                               | | WAKEUP  |      0x00      | 唤醒,用于退出待机模式                                       | | STANDBY |      0x03      | 待机,用于进入待机模式                                       | |  SYNC   |      0x05      | 同步,用于同步数据转换                                       | |  RESET  |      0x07      | 复位,用于复位ADS1282                                        | | RDATAC  |      0x10      | 连续读数据,用于连续读取数据                                 | | SDATAC  |      0x11      | 停止读数据,用于停止连续读取数据                             | |  RDATA  |      0x12      | 读数据,用于读取一次数据                                     | |  RREG   | 0x20 &ADDRESS  | 读寄存器,用于读取一个或多个寄存器的值,需要指定寄存器的地址和数量 | |  WREG   | 0x40 & ADDRESS | 写寄存器,用于写入一个或多个寄存器的值,需要指定寄存器的地址和数量,以及寄存器的值 | | OFSCAL  |      0x60      | 偏移校准                                                     | | GANCAL  |      0x61      | 增益校准                                                     | | 寄存器名 | 地址 | 默认值 | | :------: | :--: | :----: | |    ID    | 0x00 |  0x00  | | CONFIG0  | 0x01 |  0x52  | | CONFIG1  | 0x02 |  0x08  | |   HPF0   | 0x03 |  0x32  | |   HPF1   | 0x04 |  0x03  | |   OFC0   | 0x05 |  0x00  | |   OFC1   | 0x06 |  0x00  | |   OFC2   | 0x07 |  0x00  | |   FSC0   | 0x08 |  0x00  | |   FSC1   | 0x09 |  0x00  | |   FSC2   | 0x0A |  0x40  | 表 1 来源于数据手册 P32,表 2 来源于数据手册 P35。 为了方便起见,我们需要统一数据收发的接口 ```c++ /** * @brief 通过SPI发送和接收数据。 * * @param transmitBuffer 包含要发送数据的缓冲区。 * @param receiveBuffer 用于存储接收数据的缓冲区。 * @param byteLength 数据的字节长度。 * @return 如果操作成功,则返回true;否则返回false。 */ bool spiSendReceive(const uint8_t transmitBuffer[], uint8_t receiveBuffer[], const uint8_t byteLength) {     ADS1282_SPI->transferBytes(transmitBuffer, receiveBuffer, byteLength);     return true; } ``` 那么发送指令就是 ```c++ /** * @brief 发送命令给设备。 * * @param op_code 要发送的操作码。 */ void sendCommand(const uint8_t op_code) {     uint8_t dataTx[1] = {op_code};     uint8_t dataRx[1] = {0};     // 发送命令     spiSendReceive(dataTx, dataRx, 1); } ``` 读写寄存器的代码如下 ```c++ uint8_t readSingleRegister(const uint8_t address) {     uint8_t dataTx[3];     uint8_t dataRx[3];     // 指令     dataTx[0] = OPCODE_RREG | (address | OPCODE_REG_ADDR_MASK);     dataTx[1] = 0x00;     spiSendReceive(dataTx, dataRx, 2);     // 读数据     dataTx[2] = OPCODE_NOP;     ets_delay_us(DELAY_T_DLY); // 等待数据返回     spiSendReceive(&dataTx[2], &dataRx[2], 1);     return registerMap[address]; } /** * @brief 使用给定的地址和数据写入单个寄存器。 * @param address 要写入的寄存器的地址。 * @param data 要写入寄存器的数据。 * @note 地址必须在可用寄存器的范围内。 */ void writeSingleRegister(const uint8_t address, const uint8_t data) {     uint8_t dataTx[3];     uint8_t dataRx[3];     // Send command     dataTx[0] = OPCODE_WREG | (address & OPCODE_REG_ADDR_MASK);     dataTx[1] = 0x00;     spiSendReceive(dataTx, dataRx, 2);     dataTx[2] = data;     spiSendReceive(&dataTx[2], &dataRx[2], 1); }        ``` ##### 读取采集数据 读取采集的数据很简单,通过以下的代码就能获得采集数据,但由于ADC采集转换需要一定的时间,所以需要使用DRDY引脚来指示数据转换的完成。 ```c++ /** * @brief 读取数据。 * * @return 读取到的数据。 */ int32_t readData(void) {     uint8_t dataTx[4] = {0};                uint8_t dataRx[4] = {0};                                                        spiSendReceive(dataTx, dataRx, 4); } ``` DRDY引脚是一种数据就绪信号,用于指示ADS1282是否有新的数据可供读取。ADS1282在每次完成一次数据转换后,会将DRDY引脚从高电平拉低至低电平,持续一个时钟周期,然后恢复为高电平。(参见数据手册P27) 主机可以通过检测DRDY引脚的状态,来确定是否可以发送读取数据的命令。ADS1282支持两种读取数据的模式,分别是连续读取数据模式(RDATAC)和单次读取数据模式(RDATA)。在连续读取数据模式下,主机只需发送一次RDATAC命令,就可以持续地从ADS1282读取数据,直到发送SDATAC命令或复位ADS1282为止。在单次读取数据模式下,主机每次需要读取数据时,都要发送一次RDATA命令,然后等待DRDY引脚变为低电平,再从ADS1282读取数据。我们可以使用中断来判断DRDY引脚的下拉,然后配合读取数据函数使用。 ```c++ /** * @brief 等待指定时间内的DRDY中断。 * * @param timeout_ms 超时时间(毫秒)。 * @return 如果在超时时间内发生DRDY中断,则返回true;否则返回false。 */ bool waitForDRDYinterrupt(const uint32_t timeout_ms) {     if (!readContinuousMode)         sendCommand(OPCODE_RDATAC);     // 创建中断     attachInterrupt(digitalPinToInterrupt(ADS1282_DRDY), interruptHandler, FALLING);     // 等待中断     unsigned long startTime = millis();     do     {         // DO NOTHING     } while (millis() - startTime < timeout_ms && !ADCInterruptFlag);     // 取消中断     detachInterrupt(ADS1282_DRDY);     if (ADCInterruptFlag)     {         ADCInterruptFlag = false;         return true;     }     else     {         return false;     } } ``` ADS1282的数据格式为32位的补码,其中最高位为符号位,其余31位为数值位。ADS1282的数据范围为-2^31到2^(31-1),对应的电压范围为-2.5V到2.5V,即每个LSB(最低有效位)的电压值为2.5V/2^31。转换的公式如下: > 电压值 = 数据值 * 5V / 2^31 ```c++ /** * @brief 将原始ADC数据转换为电压值。 * * @param data 要转换的原始ADC数据。 * @return 从原始数据计算得到的电压值。 */ float convertToVoltage(int32_t data) {    return (data * 5.0) / (0x7fffffff * 1.0f); } ``` #### 测试 一个简单的测试代码如下 ```c++ // ...... #include // ADC引脚 // 时钟引脚 #define ADC_SCL 21 // DOUT 引脚 #define ADC_MISO 13 // DIN 引脚 #define ADC_MOSI 12 // CS 引脚 NOTE: 在 ads1282 上没有这个引脚 #define ADC_CS -1 // DRDY 引脚 #define ADC_DRDY 14 // RESET 引脚 #define ADC_RESET 47 // DONE 引脚 #define ADC_DONE 10 void main(){     Serial.begin(115200);     // ......     ADCStartup(ADC_SCL, ADC_MISO, ADC_MOSI, ADC_CS, ADC_DRDY, ADC_RESET);     /* ADC 采样率设置为 1000 */     writeRegisterBitsValue(CONFIG0_ADDRESS, CONFIG0_DR_MASK, CONFIG0_DR_1000SPS);     /* ADC 增益设置为 1 */     writeRegisterBitsValue(CONFIG1_ADDRESS, CONFIG1_PGA_MASK, CONFIG1_PGA_1); } void loop(){     // 等待中断     if (waitForDRDYinterrupt(10)){              // 输出数据            Serial.print(adc_data);     } } // ...... ``` 由于没有连接检波器,因此采集到的波形如下 ​        #### 更多 1. [【DigiKey“智造万物,快乐不停”创意大赛】 物料开箱 - DigiKey得捷技术专区 - 电子工程世界-论坛 (eeworld.com.cn)](http://bbs.eeworld.com.cn/thread-1260793-1-1.html) 2. 【DigiKey“智造万物,快乐不停”创意大赛】1. ADS1282 驱动的移植与实验 3. (未发布)【DigiKey“智造万物,快乐不停”创意大赛】2. 系统功能的基本实现 4. (未发布)【DigiKey“智造万物,快乐不停”创意大赛】3. 打的板子的开箱及展示 5. (未完待续) #### 源码下载 完整代码分享在:[【DigiKey创意大赛】1. ADS1282 驱动的移植与实验-资料文件](http://download.eeworld.com.cn/detail/ICS/629866)(无需下载分),顺手移植 ADS1282 到 Micropython 上,所以内含 Micropython ADS1282 驱动[^3]。 发现这里也能插入文件: #### 参考资料 [^1]: [SBAC300 支持软件 | 德州仪器 TI.com.cn](https://www.ti.com.cn/tool/cn/download/SBAC300) [^2]: [ADS1282数据手册 英文](https://www.ti.com.cn/cn/lit/ds/symlink/ads1282.pdf) [^3]: [AntonVanke/MicroPython-Drivers: MicroPython 自用驱动库 (github.com)](https://github.com/AntonVanke/MicroPython-Drivers)

  • 2023-10-27
  • 回复了主题帖: 【DigiKey“智造万物,快乐不停”创意大赛】 物料开箱

    wangerxian 发表于 2023-10-26 19:24 还是挺期待ADS1282检波器模块,它能做什么检测?
    主要用于地震信号检测 ADS1282 Datasheet

  • 2023-10-25
  • 发表了主题帖: 【DigiKey“智造万物,快乐不停”创意大赛】 物料开箱

    # 【DigiKey“智造万物,快乐不停”创意大赛】 物料开箱 > 很高兴能参加本次【DigiKey“智造万物,快乐不停”创意大赛】,本人于 2023-10-7 在得捷上下单了此次比赛所使用的物料,昨日(2023-10-25) 取得物料并于今日撰写开箱贴 ## 1. 物料合照 ![大合照](/data/attachment/forum/202310/25/180402baz34clh66t6t45f.jpg.thumb.jpg?rand=2474.0940087168538) ## 2. 物料作用 我的设想是设计一款基于ADS1282的三维地震勘探仪器,通过 ADS1282检波器模块 将采集到的地震数据发送到 ESP32S3 进行处理 1. ESP32 S3及其开发板         主控芯片,具有240MHz双核RISC-V处理器、320KB内存、43个GPIO引脚等性能,用于处理数据并通过WIFI,串口,SD卡等方式记录数据 2. REF5050         精密电压基准芯片,具有50ppm/°C温度系数、0.05%精度、5V输出电压等性能,为传感器提供精准的电压基准 3. ESP Prog         开发板调试工具,支持JTAG和UART接口,用于烧录程序和调试代码 ## 3. 总结 物料非常不错,品质优良,功能强大。再次感谢`EEWorld`和`DigiKey`提供这么好的机会来实现我的创意。我相信我的作品能够展现出基于嵌入式CPU的边缘计算架构在地震勘探领域的应用价值和创新潜力。 ## 4. 参考文档 1. [ESP32-S3 系列芯片 技术规格书](https://www.espressif.com/sites/default/files/documentation/esp32-s3_datasheet_cn.pdf "ESP32-S3 系列芯片 技术规格书") 2. [ESP-Prog](https://docs.espressif.com/projects/espressif-esp-dev-kits/zh_CN/latest/other/esp-prog/user_guide.html "ESP-Prog") 3. [REF50xx 低噪声、极低温漂、高精度电压基准](https://www.ti.com.cn/document-viewer/cn/REF5050/datasheet "REF50xx 低噪声、极低温漂、高精度电压基准")

  • 2023-07-09
  • 加入了学习《基于树莓派Pico W的简易网络天气时钟》,观看 视频演示

学过的课程

最近访客

< 1/1 >

统计信息

已有1人来访过

  • 芯积分:90
  • 好友:--
  • 主题:4
  • 回复:7
  • 课时:--
  • 资源:1

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言