Go programming on a Raspberry Pi
Simple Go Web App
The web_static.go
web application in Listing 2 shows the static web page in Listing 3. The web app uses the net/http library to define a default handler (line 9), that calls the static page (line 10). The app then listens and serves up data on port 8081 (line 14).
Listing 2
web_static.go
Listing 3
web_static.html
To compile and test web_static.go
, enter:
$ go build web_static.go $ ./web_static Default Web Page
When you use a web browser to call the Rasp Pi address at port 8081 (Figure 2), you should see the message This is a static test page from the Go application every time the page is called.
GPIO Web App
The final step is to pull everything together so that a web page can pass parameters to a Go app that shells out to the gpio
command-line utility. To begin, you create new web page (go_buttons.html
) with two buttons (Listing 4). HTML anchor tags pass the /on
and /off
parameters to the web app.
Listing 4
web_buttons.html
A CACHE-CONTROL
meta tag set to NO-STORE
ensures that the web page always refreshes. If you don't include this meta tag, the web page might only update once.
The Go GPIO web app go_buttons.go
(Listing 5) now includes two additional http.HandleFunc
handler functions: one for the /on
parameter (line 30) and one for the /off
parameter (line 37). These handler functions pass the required pin state to a function called gpio
.
Listing 5
go_buttons.go
The newly created gpio
function acts very much like the earlier writepin7.go
code (Listing 1), in that it shells out twice to the gpio
command-line utility: the first time to write a value and the second time to read the value back. Web page requests, GPIO pin results, and errors are shown in the terminal.
The syntax to compile and run the go_buttons.go
code with some sample web requests is:
$ go build go_buttons.go $ ./go_buttons Default Web Page Web Page sent : ON GPIO Pin 4 value : 1 Default Web Page Web Page sent : OFF GPIO Pin 4 value : 0
Figure 3 shows the web output and the test setup.
Summary
Go offers a robust platform for web applications. From the basic web page example in this article, I created more advanced Rasp Pi projects, such as the rover shown in Figure 4 that required writing to multiple GPIO pins.
For a polished application, I would rather use a native Go library for GPIO calls, but for prototyping and troubleshooting, I found the gpio
command-line utility was very useful.
The next step for my Rasp Pi projects will be to add JavaScript and Ajax to show dynamic values.
Infos
- Go programming language: https://golang.org/
« Previous 1 2
Buy this article as PDF
(incl. VAT)
Buy Linux Magazine
Direct Download
Read full article as PDF:
Price $2.95
News
-
KaOS 2022.06 Now Available With KDE Plasma 5.25
The newest iteration of KaOS Linux not only adds the latest KDE Plasma desktop but sets LibreOffice as the default.
-
Manjaro 21.3.0 Is Now Available
Manjaro “Ruah” has been released and includes the latest Calamares installer, GNOME 42, and much more.
-
SpiralLinux is a New Linux Distribution Focused on Simplicity
A new Linux distribution, from the creator of GeckoLinux, is a Debian-based operating system with a focus on simplicity and ease of use.
-
HP Dev One Linux Laptop is Now Available for Pre-Order
The System76/HP collaboration Dev One laptop, geared toward developers, is now available for pre-order.
-
NixOS 22.5 Is Now Available
The latest release of NixOS with a much-improved package manager and a user-friendly graphical installer.
-
System76 Teams up with HP to Create the Dev One Laptop
HP and System76 have come together to develop a new laptop, powered by Pop!_OS and aimed toward developers.
-
Titan Linux is a New KDE Linux Based on Debian Stable
Titan Linux is a new Debian-based Linux distribution that features the KDE Plasma desktop with a focus on usability and performance.
-
Danielle Foré Has an Update for elementary OS 7
Now that Ubuntu 22.04 has been released, the team behind elementary OS is preparing for the upcoming 7.0 release.
-
Linux New Media Launches Open Source JobHub
New job website focuses on connecting technical and non-technical professionals with organizations in open source.
-
Ubuntu Cinnamon 22.04 Now Available
Ubuntu Cinnamon 22.04 has been released with all the additions from upstream as well as other features and improvements.