- 前景
- 开发环境
- Go 基础
- 流程控制
- 函数
- 方法
- 面向对象
- 网络编程
- 并发编程
- 数据操作
- 常用标准库
- beego 框架
- gin 框架
- 微服务
- 插件库
- 项目
- 开源仓库
- go 学习线路图
- 音频和音乐
- 身份验证和 OAuth
- 机器人相关
- 标准 CLI
- 构建用户界面库
- 配置
- 持续集成
- CSS 预处理器
- 数据结构
- 数据库
- 数据库驱动
- 日期和时间
- 分布式系统
- 电子邮件
- 嵌入式脚本语言
- 错误处理
- 文件
- 金融
- Forms
- 功能性
- 游戏开发
- 生成与泛型
- 地理位置
- 编译器
- Goroutines
- 图形界面
- 图片
- 物联网
- 工作计划
- JSON格式
- Logging
- 机器学习
- 实现消息传递
- 微软办公软件
- 依赖注入
- 项目布局
- Strings
- 其他
- 自然语言处理
- 网络
- HTTP 客户端
- OpenGL
- ORM
- 包管理
- 性能
- 查询语言
- 资源嵌入
- 科学与数据分析
- 安全
- 序列化
- 服务器应用
- 流处理
- 模板引擎
- 测试
- 文字处理
- 第三方 API
- 实用工具
- UUID
- 验证方式
- 版本控制
- 视频
- Web 框架
- 中间件
- 路由器
- 视窗
- XML 格式
- 代码分析
- 编辑器插件
- 硬件
- go 生成工具
- go 工具
- DevOps 工具
- 其他
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
硬件
此存储库是工具,软件包和教程的目录,可让您在硬件项目中介绍Go。
1.1. 为什么选go?
Go可以针对主要在非实时嵌入式操作系统范围内的平台和体系结构。
- 对Linux的ARMv5,ARMv6,ARMv7和ARMv8支持
- ARMv7,ARMv8,x86对Android的支持
- 实验性OpenWRT
开箱即用的交叉编译故事。
- 例如,运行GOOS=linux GOARCH=arm go build以从Mac或Windows机器为ARM / linux板构建二进制文件。不需要其他配置。
Go中内置的并发原语使得编写并发程序变得更加容易。
- 在实施硬件控制器方面的强大优势。
- 在实施网络设备方面的强大优势。
Go是垃圾收集语言,但是自Go 1.4起,垃圾收集器的占用空间已得到显着改善。即使对于大堆,暂停时间也被定为10ms或更短,并且在非实时操作系统上并不是一个明显的缺点-OS调度程序的抢占性质比暂停时间更是一个主要问题。
Go的网络堆栈质量高且维护良好。网络是物联网的核心组件。
Go提供了现成的HTTP,HTTPS和HTTP / 2客户端/服务器实现。
- 标准库可能缺少P2P协议的更高级别的实现,但是社区正在努力弥补这一空白。
- 社区还投入时间来实施更新的以物联网为目标的网络协议,例如COAP。
与其他高级编程语言(如Python和Java)不同,使用Go语言在Go中编写C绑定非常简单。从Go上下文中依赖现有的C / C ++库要容易得多。
- 例如,portmidi绑定。请参阅源代码,以了解如何在同一个Go文件中混合和匹配Go和C代码。
类似于C的语法使现有的IoT /嵌入式编程人员(大多熟练使用C语言)可以在无需过多了解该语言的情况下读写Go。
Go程序可编译为静态二进制文件,并且不需要主机(例如VM)上的运行时。部署是复制/粘贴二进制文件。
Go拥有强大的社区人物,从早期开始就从事硬件方面的工作。
- Gobot在第一届GopherCon上首次亮相。
- 社区已经提供了许多围绕硬件和机器人技术的库和框架。可以在go硬件上找到列表。
Go高效,快速且内存占用少。
服务器和客户端(连接的设备或移动设备)之间的代码重用。
- 例如,gRPC Go在服务器,Android,iOS和嵌入式Linux上开箱即用。
1.2. 讲解
- (版本1.5及更高版本) 交叉编译指南
- (执行1.4及更低版本)) 交叉编译指南
- 查阅ARM技巧,已知问题和成功案例
1.3. 配套
1.3.1. 控制器
- devices - Go的高级设备/传感器软件包的存储库。
- gobot - 具有各种平台API的高级Go软件包,可与流行的驱动程序进行通信,例如Arduino和Raspberry Pi上的GPIO,Leap Motion或Pebble。
- go-gpio - Go的GPIO,不需要cgo。
- embd - Go的嵌入式编程框架。
- fadecandy - 基于OPC的抖动LED控制器
- godrone - 用Go编写的高级Parrot AR Drone 2.0框架。
- launchpad - Novation Launchpad的高级控制器库。
- littlebits - 用于Go的littleBits控制器。它需要USB I/O 模块。
- piCamera - 在GoLang中为Raspberry Pi相机捕获图像流
- hwio - 松散地基于Arduino的ARM板的硬件库,例如Raspberry Pi和BeagleBone。
- go-lepton - 将通过连接到Raspberry Pi SPI端口的FLIR Lepton上拍摄的图像通过WebSockets通过嵌入式HTTP服务器进行流式传输。
- go-embedded - 对I2C,SPI,PWM,GPIO,ADC的嵌入式Linux支持
- go-beaglebone - BeagleBone开源硬件的Go包
- go-mavlink - Go的MAVLink协议实现(MAVLink用于控制无人机)
- joystick - 一种轮询的API,用于读取连接的操纵杆的状态。
- emgo - 一种用于对嵌入式系统(例如STM32 MCU)进行编程的类语言。
- go-rpi-rgb-led-matrix - matrix-使用Raspberry Pi GPIO控制多达三个链的32x32或16x32 RGB LED显示
- go-rpi-ws281x - 用于WS281X LED的Raspberry Pi PWM库的绑定
- ghw - Golang硬件发现/检查库
- sysinfo - 一个纯的Go库,提供Linux OS /内核/硬件系统信息。
1.3.2. 信号处理,计算机视觉,图形,媒体
- go-gl - Go的OpenGL绑定。
- go-opc - Go的开放像素控件绑定。
- go-opencv - Go的OpenCV绑定。
- go-sox - Go的SoX绑定。
- portaudio - Go的PortAudio绑定。
- portmidi - Go的PortMidi绑定。
- go-osc - 为Go打开声音控制(OSC)绑定。
- openvg - 包装OpenVG API的2D图形库
- lirc - Linux红外遥控器的Go Client。允许发送和接收IR命令。
- gocv - Go的OpenCV 3+绑定。还支持OpenVINO。
1.3.3. 网络,外围通讯
- mdns - Go中的mDNS服务器和客户端实现。组播DNS可用于在本地网络上发现服务和消息,而无需使用权威DNS服务器。
- gatt - 提供蓝牙低功耗GATT实施。
- go.hid - 提供与USB人机接口设备的通信。
- goble - Go的蓝牙低功耗(HM10)模块
- serial - Go的串行端口通讯程序包
- firmata - Go的Firmata客户
- periph - 外设I / O在Go
- go-ckb - Go中的Corsair ckb-daemon通信
- ble - 适用于Linux / macOS的低功耗蓝牙通信包装器。
1.3.4. 移动版(1.5或更高版本)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论