树莓派
1.1树莓派的介绍、版本、结构、操作系统
2012年第一款树莓派、已经过去11年,迭代4次
第一代成员:raspberry pi model b
GPIO接头:连接传感器
二代
三代:四核处理器+蓝牙+无线模块
四代:内存大小可选择
a版本、zero版本
官方推荐:
官方没推荐:Ubuntu
1.2树莓派的应用
超级计算机(64台树莓派)
智能机器人、无人机……
win10网络发现已关闭计算机和设备不可见怎么办-百度经验 (baidu.com)
WLAN或者NET连接
有wlan就用waln共享、没有就用net8共享
在window上查看到了树莓派的ip
(我的电脑拓展坞只有第一个插口能识别)
cmd:输入arp -a
找到137网段
全部外设
4B、显示屏……
首次开机:
关机:1.终端sudo shutdown -h(关机,-r:重启) now /sudo poweroff、2.桌面
ssh连接前提:sd卡中增加ssh文件
putty:pi、raspberry
无线热点连接方式
远程桌面(window自带)
先下载: sudo apt-get install xrdp
VNC连接and配置静态ip
文件传输VNC
什么是VNC
部署步骤
sudo raspi-config
Yes->确认
window VNC 查看器下载: www.realvnc.com
树莓派:$vncserver以启动VNC server
将最后的ip端口复制进VNC Viewer
树莓派自动开启vnc:
$sudo nano /etc/init.d/vncserver
#!/bin/sh
export USER='pi'
eval cd ~$USER
case "$1" in
start)
# 启动命令行。此处自定义分辨率、控制台号码或其它参数。
su $USER -c '/usr/bin/vncserver -depth 24 -geometry 1920x1080 :1'
echo "Starting VNCServer for $USER"
;;
stop)
su $USER -c '/usr/bin/vncserver -kill :1'
echo "VNCServer stopped"
;;
*)
echo "Usage: /etc/init.d/vncserver {start/stop}"
exit 1
;;
esac
exit 0
^s保存 ^x退出
设置文件权限
$sudo chmod 755 /etc/init.d/vncserver
设置开机自启
$sudo update-rc.d vncserver defaults
重启
$sudo reboot
文件传输
电脑传输给树莓派:
文件传输给window:
FTP协议传输文件
常用的终端窗口
nano文件编辑器
vi
vi键盘的命令:
备份和还原
删除系统:
备份
GPIO:(通用输入/输出)引脚
什么是GPIO
老版本26针脚、新版本都是40针脚
引脚的三种编码方式:板载编码、BCM编码、WirinPi编码
板载编码$pinout
按照树莓派主板上的引脚编号:使用的程序并不是很多
查看所有编码$gpio readall
BCM编码方式:python程序中常见的编码方式
WiringPi编码方式:C语言控制时的引脚编号
控制LED小灯
step1:查看7号引脚的BCM编码
串口通信
ARDUINO
arduino入门教程-系列篇一:初识arduino - 知乎 (zhihu.com)
下载arduino ide
设置开发板\端口连接
文件保存:_sketch
结构
//int a = 0;
//LOW
//HIGH
//int b; // 默认给0
// 当你给开发板通电或者按下复位按钮后,setup函数执行一次
void setup() {
// 执行一次:准备put your setup code here, to run once:
// 初始化LED_BUIL
pinMode(LED_BUILTIN, OUTPUT);
}
// 反复运行
void loop() {
// 反复执行:营业 put your main code here, to run repeatedly:
digitalWrite(LED_BUILTIN, HIGH);
delay(1000);
digitalWrite(LED_BUILTIN, LOW);
delay(1000);
}
//int a = 0;
//LOW
//HIGH
//int b; // 默认给0
int Delay_ = 100; // 注意作用域:全局和局部
// 当你给开发板通电或者按下复位按钮后,setup函数执行一次
void setup() {
// 执行一次:准备put your setup code here, to run once:
// 初始化LED_BUIL
pinMode(LED_BUILTIN, OUTPUT); //LED_BUILTIN:13
pinMode(5, OUTPUT); //5号引脚
Delay_ = 100;
}
// 反复运行
void loop() {
// 反复执行:营业 put your main code here, to run repeatedly:
Delay_ = Delay_ + 100;
digitalWrite(LED_BUILTIN, HIGH); //设置为output状态 LED_BUILTIN:13 设置为高电平
delay(Delay_);
digitalWrite(LED_BUILTIN, LOW);
delay(Delay_);
// printf("%d",Delay_);
}
太极创客:零基础入门学用 Arduino 教程 – 基础知识篇 – 太极创客 (taichi-maker.com)
函数学习:开发->编程Arduino编程语句参考 – 太极创客 (taichi-maker.com)
面包板
全局替换:编辑查找
小开关:同侧不相连
还有下拉电阻
监视串口:
int pushButtom = 2 ;
void setup() {
//串口通讯初始化,每秒9600位
Serial.begin(9600);
pinMode(pushButtom, INPUT); //输入
}
void loop() {
int buttonState = digitalRead(pushButtom); //引脚状态返回给变量:HIGH LOW
Serial.println(buttonState);
delay(2);
}
串口悬空会出现随机的数:拍一下显示1,不拍显示0
以下的实例可以证明:将串口2与LED关联
int pushButtom = 2 ;
void setup() {
//串口通讯初始化,每秒9600位
Serial.begin(9600);
pinMode(pushButtom, INPUT); //输入
pinMode(13, OUTPUT);
}
void loop() {
int buttonState = digitalRead(pushButtom); //引脚状态返回给变量:HIGH LOW
Serial.println(buttonState);
delay(2);
if(buttonState == HIGH){
digitalWrite(13, HIGH);
}else{
digitalWrite(13, LOW);
}
}
函数整理
pinMode(pushButtom, INPUT/OUTPUT/INPUT_PULLUP); //输入、输出、输入上拉模式
var = digitalRead(2); //读取串口状态
digitalWrite(13, HIGH); //改变串口状态
analogWrite(ledPin, brightness); //将模拟参数写入Arduino引脚,可以改变led的亮度,每执行一次都会给该引脚一个固定频率的PWM信号,约490Hz,只支持~3,~5,~6,~9,~10,~11,调用前,无需使用pinMode函数设置该引脚
analogRead(A0); //读取模拟输入
delay(2); //延时
Serial.begin(9600); //串口通讯初始化,每秒9600位
Serial.println(buttonState);
Serial.print(buttonState);
随机数
randomSeed(analogRead(A0));
getRandomNumber(0,10); //产生随机0-9数字
初始化
Serial.begin(speed)
其中参数speed指串口通信波特率,如300、600、1200、2400、4800、9600、14400、19200、28800、38400、57600、115200。
发送信息
Serial.print (val); 其中参数val是要输出的数据。
Serial.println (val); 在输出完指定数据后,再输出一组回车换行符。
接收信息
Serial.available();函数检测是否有信息
Serial.read(); 函数读取信息
Serial.readBytes(); 函数以字节形式读取信息
Serial.write()用于发送字节数组
unsigned char testcode[6]={0x7E,0x42,0xC1,0x00,0x00,0x7E};
Serial.write(testcode,6);
模拟输出输入
~9:可以调节
小灯的亮度可以无极调节
Analog Output模拟输出
analogWrite(ledPin, brightness);
将模拟参数写入Arduino引脚,可以改变led的亮度,每执行一次都会给该引脚一个固定频率的PWM信号,约490Hz,只支持~3,~5,~6,~9,~10,~11,调用前,无需使用pinMode函数设置该引脚
PWM
快速开关是看不到闪烁的
191=75%
电位器:
1-3之间恒定为1000Ω
应用
一、分压
0~1023(10位 ) <-> 0~5V
analogRead() :需要消耗100微秒的时间
注意:在模拟输入引脚没有任何连接的情况下,用analogread()指令读取该引脚,这时获得的返回值为不固定的数值。这个数值可能受到多种因素影响,如手靠近
randomSeed():
电位器控制LED的亮度
arduino的模拟输入是电压,模拟输出是PWM
MeArm
MiniArm
python控制
史上最详细的Arduino 入门教程第17课-Arduino+Python实现物体运动检测并发送邮件 - 知乎 (zhihu.com)
Jetson Nano
Nano最大的特色就是包含了一块128核Maxwell架构的GPU
B01版本
机器狗 小米铁蛋
16GB eMMC闪存/TF卡
ARM架构
ESP32-S
1 在线安装(见指南)
首选项\设置
2 解压esp压缩包至arduino的硬件目录
ModeESP
CP2102驱动(WIn10自带)USB驱动
实例
wifclient
TCP调试助手
管理员运行
光敏芯片TSL2561
1 接口介绍
2 python环境搭建
树莓派安装python环境 - 知乎 (zhihu.com)
3 连接方式
jetson nano
opencv
cap = cv2.VideoCapture(0) #打开默认摄像头采集图像
width = 640 #定义摄像头获取图像宽度
height = 480 #定义摄像头获取图像长度
cap.set(cv2.CAP_PROP_FRAME_WIDTH, width) #设置宽度
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, height) #设置长度
wifi模组ESP32-S
ESP32 Wi-Fi & 蓝牙模组 | 乐鑫科技 (espressif.com.cn)
作为路由器
#include <WiFi.h>
IPAddress local_IP(192,168,4,22);
IPAddress gateway(192,168,4,22);
IPAddress subnet(255,255,255,0);
const char *ssid = "别连劳资!";
const char *password = "12345678";
void setup()
{
Serial.begin(115200);
Serial.println();
WiFi.mode(WIFI_AP); //设置工作在AP模式
WiFi.softAPConfig(local_IP, gateway, subnet); //设置AP地址
while(!WiFi.softAP(ssid, password)){}; //启动AP
Serial.println("AP启动成功");
Serial.print("IP address: ");
Serial.println(WiFi.softAPIP()); // 打印IP地址 IP address: 192.168.4.22
WiFi.softAPsetHostname("myHostName"); //设置主机名
Serial.print("HostName: ");
Serial.println(WiFi.softAPgetHostname()); //打印主机名 HostName: myHostName
Serial.print("mac Address: ");
Serial.println(WiFi.softAPmacAddress()); //打印mac地址 mac Address: 8C:CE:4E:A7:EE:09
}
void loop()
{
delay(1000);
Serial.println(WiFi.softAPgetStationNum()); //打印客户端连接数
}