Adding WiFi to the Raspberry Pi Pico turns this low-cost, small form factor device into a true IoT device. The extra capabilities added to the Pico W open up loads of opportunities, but only if you are prepared to do battle with the two libraries that provide networking and security - lwIP and mbedtls respectively. The problem with these large libraries of code is that they are poorly documented and don't refer directly to the Pico W and its SDK. This book sets out to remedy this by providing a guide to these libraries along with examples of what you can do with them.
Having introduced the Pico WiFi Stack and basic network connections, we look at how to use TCP to create the all-important Protocol Control Block and then tackle implementing an HTTP client. As well as covering the basic mechanics of using lwIP, we also concentrate on how to organize the use of an asynchronous library based on callbacks.
The problem of IoT security is unique because IoT devices can be physically accessed by an attacker and hence any secrets embedded in their code have to be considered almost as public knowledge. Even so it is worth implementing encryption and this is achieved using mbedtls to create an HTTPS client. If you can ensure the physical security of the IoT device, then running it as a server is possible and this is covered in both HTTP and HTTPS modes, complete with certificates. We cover the basics of cryptography, including the problem of generating random numbers, what an encryption suite is and the various modes of AES encryption.
The later chapters are devoted to specific protocols, making use of both lwIP and mbedtls. We look at UDP; SNTP to set the Pico W's real time clock; SMTP to allow email notifications and MQTT. Harry Fairhead
is also the author of Programming The Raspberry Pi Pico/W In C
; Raspberry Pi IoT in C
, Raspberry Pi IoT In C Using Linux Drivers
, Applying C For The IoT With Linux
, Fundamental C: Getting Closer To The Machine
and Micro: bit IoT in C
. Mike James
is the author of Programming the Raspberry Pi Pico/W in MicroPython
; Raspberry Pi IoT In Python Using GPIO Zero
; and the Programmer's Python: Something Completely Different
series of books and several other programming and computer science titles in the I Programmer Library.