记录第一次制作ESP8266-12E(F)最小烧录系统拓展板

3807D5843AB2715A3079619B93993D88.jpg

F0D0F2EC4A1AED38C27C482E8E0F0047.jpg

1.优势:

  • 基本不需要额外的元器件
  • 全部io口引出
  • 支持5.0V和3.3V电源
  • 多GND接口,支持直接使用
  • 尺寸小(26mm*30mm)
  • 4个3mm口,方便固定安装。(位置太小了,其实不适合直接上螺丝)。

2.存在问题:

  1. 由于减少元器件,不支持直接烧录,需要外部烧录器(CH340)。
  2. 下载时候需要手动下拉GPIO0。
  3. 无法自动下载(理论应该可以,暂时没有找到原因),解决方法:外部接按钮重启。

3.验证时遇到的问题

1.使用arduino烧写模块遇到的无法烧录问题,时钟无法烧录遇到如下提示

esptool.FatalError: Failed to connect to ESP8266: Timed out waiting for package header

0H[_EJFL6E$U45(8HEI5}7G.png

解决办法:如2.2一样,手动下拉GPIO0,实际操作:用线连接GPIO0-----GND。

2.上传成功后,提示:

Hard resetting via RTS pin...

解决办法:如2.3,外部接按钮重启。

1.png

4.总结

总得来说,还是可以(又不是不能用)。起码能用。体积满足需求。

1.打开无反应无报错

答:不要使用Release版本,具体原因不详。

解决方法:使用Debug版本。

2.缺乏dll

答:一般会缺乏三个dll。vcruntime140d.dll,ucrtbased.dll,msvcp140.dll

注意问题:一般需要选择选择32位,或者64位具体看编译打包的MSVC。

解决方法:下载所缺的dll.下载地址https://www.dll-files.com/。然后把dll放到exe同目录。

3.关于0xc000007b的问题

答:一般来说,打开显示0xc000007b的问题都是dll安装时候,选择错位的位数。

解决方法:删除错位的dll,然后步骤通问题2。

4.关于“ ASSERT failure in QVector<T>::at: "index out of range“

答:这里我遇到的问题是,我代码里写着默认使用COM,即串口,但是部分电脑没有安装COM驱动,或者arduino,于是报错。其他问题相信也是如此。

解决方法:

1.安装arduino直接安装COM的相关驱动。

2.在代码里写明,当检测到电脑没有相关驱动时候,提醒安装相关驱动,而不是直接报错。(推荐)

1.简介原理

1.1 ID卡

全称:身份识别卡(Identification Card),是一种不可写入的感应卡,含有固定的编号。

工作原理:阅读器(reader)---->发送载波信号(125KHZ,THRC12)(供能)---->ID卡芯片----->(吸能)---->返回数据----->阅读器(reader)----->计算机(单片机或电脑)。

载波信号:

  • THRC12 : 125KHz
  • THRC13 :13.56MHz

数据存储格式:EEPROM

大小:64位

应用:门禁。

1.2 IC卡

全称:集成电路卡(Integrated Circuit Card),是将一个微电子芯片嵌入符合ISO 7816标准的卡基中,做成卡片形式。

工作原理:IC卡是集成电路卡,IC卡芯片具有写入数据和存储数据的能力,可对IC卡存储器中的内容进行判定。在卡上封装有符合ISO标准的芯片,有6~8个触点和外部设备进行通信,在IC卡上可以有彩色图案和说明性文字按ISO标准,IC卡的部分触点及其定义为:VCC:IC卡工作电源;GND:接地;VPP:存储器编程电源;CLK:有关信号的定时与同步;I/O:卡中串行数据的输入与输出;RST:复位信号。当IC卡插入IC卡读卡器后,各接点对应接通,IC卡上的超大规模集成电路就开始工作 。

应用:充值卡,银行卡。

1.3 RFID

全称:射频识别技术(Radio Frequency Identification)其原理为阅读器与标签之间进行非接触式的数据通信,达到识别目标的目的。(不是卡,是一种技术,或通讯)

工作原理:标签进入阅读器后,接收阅读器发出的射频信号,凭借感应电流所获得的能量发送出存储在芯片中的产品信息(Passive Tag,无源标签或被动标签),或者由标签主动发送某一频率的信号(Active Tag,有源标签或主动标签),阅读器读取信息并解码后,送至中央信息系统进行有关数据处理。

通讯及能量感应的区别:

  • 感应耦合 : 低频
  • 散射耦合 :高频

应用:RFID 的应用非常广泛,典型应用有动物晶片、汽车晶片防盗器、门禁管制、停车场管制、生产线自动化、物料管理。

1.4 NFC

全称:近场通讯(Near Field Communication)是由非接触式射频识别(RFID)及互连互通技术整合演变而来的,通过在单一芯片上集成感应式读卡器、感应式卡片和点对点通信的功能,利用移动终端实现移动支付、电子票务、门禁、移动身份识别、防伪等应用。(不是卡,是一种技术,或通讯)

工作原理:NFC是一种短距高频的无线电技术,NFCIP-1标准规定NFC的通信距离为10厘米以内,运行频率13.56MHz,传输速度有106Kbit/s、212Kbit/s或者424Kbit/s三种。NFCIP-1标准详细规定NFC设备的传输速度、编解码方法、调制方案以及射频接口的帧格式,此标准中还定义了NFC的传输协议,其中包括启动协议和数据交换方法等。

工作方式:

  • 被动式:不产生射频场,所以不需要供电设备,利用主设备产生的射频场转换为电能,为从设备的电路供电,接收主设备发送的数据,并且利用负载调制(load modulation)技术,以相同的速度将从设备数据传回主设备。
  • 主动式 :主动产生射频场,需要供电。信模式是对等网络通信的标准模式,可以获得非常快速的连接速率。

应用:移动支付、电子票务、门禁、移动身份识别、防伪等应用。

特征:

  • 用于近距离(10cm以内)安全通信的无线通信技术。
  • 射频频率:13.56MHz。
  • 射频兼容:ISO 14443,ISO 15693,Felica标准。
  • 数据传输速度:106kbit/s,212 kbit/s,424kbit/s。

2.区别

id卡ic卡RFIDNFC
类型(线圈)卡集成电路卡技术技术/卡
擦写不可可以重复擦写/可以
安全性/
存储容量极小大量/
供电不需要不需要/不需要/需要
接触类型非接触类型可/非/非接触类型
频率低频低频低频/高频高频
具体频率125KHZ(THRC12)13.56M不定13.56MHz(THRC13)
应用门禁各类卡etc移动支付

[FFMPEG-Android利用ndk(r21)编译最新版本ffmpeg4.3.1]()

前言

​ 需要用手机播放rtsp流媒体的直播源,俗话说的好,只要是音视频相关的,都离不开FFmpeg,但是FFmpeg是由C/C++编写的,Android的语言是Java,所以需要Java调动C++,而且打包成apk需要.so的文件,所以需要先将FFmpeg源码编译Java可以识别的.so。

配置环境

​ 系统:win10

​ 软件:VMware

​ 环境:ubuntu-18.04.4

1.准备工作

1.1创建新文件ijk

cd /usr
sudo mkdir ijk

1.2下载FFmpeg源码

cd ijk
sudo wget https://ffmpeg.org/releases/ffmpeg-4.3.1.tar.xz

1.3下载最新ndk

sudo wget https://dl.google.com/android/repository/android-ndk-r21b-linux-x86_64.zip

1.4解压安装包

sudo tar -xvf ffmpeg-4.3.1.tar.xz
sudo unzip android-ndk-r21b-linux-x86_64.zip

2.开始编译

2.1 下载vim (如果有可以忽略)

sudo apt install vim

2.2编写脚本b.sh

cd ffmpeg-4.3.1
vim b.sh
#b.sh脚本内容
#!/bin/bash
#改为自己的NDK路径
NDK=/usr/ijk/android-ndk-r21b
TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/linux-x86_64
#尽量不要太高
API=23

function build_android
{
echo "Compiling FFmpeg for $CPU"
./configure \
    --prefix=$PREFIX \
    --disable-neon \
    --disable-hwaccels \
    --disable-gpl \
    --disable-postproc \
    --enable-shared \
    --enable-jni \
    --disable-mediacodec \
    --disable-decoder=h264_mediacodec \
    --disable-static \
    --disable-doc \
    --disable-ffmpeg \
    --disable-ffplay \
    --disable-ffprobe \
    --disable-avdevice \
    --disable-doc \
    --disable-symver \
    --cross-prefix=$CROSS_PREFIX \
    --target-os=android \
    --arch=$ARCH \
    --cpu=$CPU \
    --cc=$CC
    --cxx=$CXX
    --enable-cross-compile \
    --sysroot=$SYSROOT \
    --extra-cflags="-Os -fpic $OPTIMIZE_CFLAGS" \
    --extra-ldflags="$ADDI_LDFLAGS" \
    $ADDITIONAL_CONFIGURE_FLAG
make clean
make
make install
echo "The Compilation of FFmpeg for $CPU is completed"
}

#armv8-a
ARCH=arm64
CPU=armv8-a
CC=$TOOLCHAIN/bin/aarch64-linux-android$API-clang
CXX=$TOOLCHAIN/bin/aarch64-linux-android$API-clang++
SYSROOT=$NDK/toolchains/llvm/prebuilt/linux-x86_64/sysroot
CROSS_PREFIX=$TOOLCHAIN/bin/aarch64-linux-android-
PREFIX=$(pwd)/android/$CPU
OPTIMIZE_CFLAGS="-march=$CPU"
build_android

2.3执行脚本

./b.sh

2.4成功

image-20200827140556187

3.报错解决。

3.1make: command not found

​ 解析:系统没有安装make。

​ 解决办法:下载make。

sudo apt-get update