Go + 硬件
此存储库是工具,软件包和教程的目录,可让您在硬件项目中介绍Go。
为什么选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.5及更高版本) @rakyll/go-1-5-cross-compilation-488092ba44ec"target="_blank">交叉编译指南
- (执行1.4及更低版本)) 交叉编译指南
- 查阅ARM技巧,已知问题和成功案例
配套
控制器
- 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 /内核/硬件系统信息。
信号处理,计算机视觉,图形,媒体
- 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。
网络,外围通讯
- 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.5或更高版本)
文档更新时间: 2020-07-20 22:55 作者:kuteng