Friday, March 24, 2023
Learning Code
  • Home
  • JavaScript
  • Java
  • Python
  • Swift
  • C++
  • C#
No Result
View All Result
  • Home
  • JavaScript
  • Java
  • Python
  • Swift
  • C++
  • C#
No Result
View All Result
Learning Code
No Result
View All Result
Home Swift

Getting started with SwiftIO – The.Swift.Dev.

learningcode_x1mckf by learningcode_x1mckf
September 18, 2022
in Swift
0
Getting started with SwiftIO – The.Swift.Dev.
74
SHARES
1.2k
VIEWS
Share on FacebookShare on Twitter


2020/11/12

SwiftIO is an digital circuit board that runs Swift on the naked metallic. It may possibly management sensors, shows, lights, motors and extra.

Swift

The SwiftIO board

MadMachine‘s SwiftIO board is an Arduino-like system, however it might probably run Swift code natively on the {hardware}. Swift is a good programming language for training functions, it’s a trendy language with a JavaScript-like syntax that’s straightforward to study and perceive. Swift is protected and environment friendly, this mix makes it an ideal candidate for embedded methods. The SwiftIO board permits us common Swift / iOS builders to construct IoT tasks utilizing our favourite programming language.


The board itself has a small footprint, it is nearly 1,57″ x 2,36″ (4cm x 6cm) large.


It is fairly a robust microcontroller. It’s undoubtedly probably the most inexpensive Swift language studying system. It may be supreme for STEM training functions for college students who need to see tips on how to construct digital circuits and get some fundamental Swift programming expertise on the similar time.


The Maker Kit field incorporates each a 7 section and an LCD show, a servo and a DC motor with drivers, a humiture (tempearture & humidity) sensor, a buzzer module a potentiometer and a lightweight sensor and plenty of extra different issues (breadboard, resistors, LEDs, buttons and cables, and so forth.) that you need to use to construct the starter tasks. You’ll have just about all the pieces within the field that you simply want as a newcomer to get began and have some enjoyable time utilizing SwiftIO. 📦


Sadly you will not discover a working GPS, Wifi or bluetooth module for the SwiftIO board but, however hopefully these form of equipment are only a few months away. There’s a new protect and a model new display screen module within the works. Oh by the way in which a sheild is someting which you can plug into your board and join exterior equipment utilizing “particular” colourful cables. 🌈


Shields are boards that may be plugged on prime of the Arduino PCB extending its capabilities. The completely different shields comply with the identical philosophy as the unique toolkit: they’re straightforward to mount, and low cost to provide. – ArduinoShields


The board initially went on sale in July, 2020 and many individuals introduced it from all all over the world. New plug-ins, extensions and modules are nonetheless being developed by the makers, however it is very important emphasize that the SwiftIO board {hardware} is in a steady state. 💪


Technical specs:

  • i.MX RT1052 Crossover Processor with Arm® Cortex®-M7 core @600MHz
  • Micro SD card slot, supporting customary and excessive capability SD playing cards
  • Micro USB connector for energy
  • On-board USB to UART for serial communication
  • 46 GPIO on left and proper edges
  • On-board GRB LED
  • 12x 12-bit analog to digital (ADC) converters
  • 4 UART, 2 CAN, 2 IIC, and a pair of SPI
  • 14 PWM pins
  • Many extra superior options to fulfill the wants of superior customers

Ports, communication, structure

You may join the SwiftIO board to your pc by way of a USB connector, the 2 units can talk by means of a serial port. The USB cable will present the mandatory energy help, however alternatively you need to use an adapter or an exterior battery by means of a protect.


You may wire up extra parts utilizing the Common Objective Enter/Output pins (GPIO). You may see the precise specification on the image above, however truthfully I barely perceive this diagram.

Confession time: I do not know shit about electronics (but). 💩

The board can be utilized with a protect and luckily the MakersKit arrives with a useful instruction guide for absolute freshmen. I felt fortunate, as a result of I used to be capable of strategy this little gadget with my programmer mindset and I may focus extra on Swift as a substitute of constructing working circuits.

So what’s truly below the hood? How can I construct & run functions for SwiftIO?


The grey space is the {hardware} itself, on prime of that within the pink-ish/purple containers there’s this Zephyr layer which I’ve by no means heard earlier than. I am simply scratching the floor right here, however that is nice, since as a Swift developer we solely care concerning the orange stuff. Lengthy story quick, there’s a customized constructed Swift toolchain for this system that permits us to construct and run Swift functions on the board. 😅

If there’s a toolchain, then we are able to run Swift binaries, however how will we talk with the ports and stuff like that? Fortuitously the SwiftIO framework is right here for us. It gives an quick access to speak with exterior {hardware} equipment. You may learn or write digital and analog indicators utilizing the communication protocol. Are you prepared for some Swift code?




The SwiftIO setting

Though the {hardware} is steady, the software program shouldn’t be completed but. There are two choices obtainable, however in case you are on a Home windows machine, you must seize the official MadMachine IDE and use that. The reason being that the Swift Bundle Supervisor shouldn’t be prepared for that platform but, so you will not be capable to work with the instruments that I will present you subsequent. Sorry Home windows, no offense. 😅

So possibility A, is to go together with the IDE, it is very easy to make use of and gives an incredible DX. Possibility B, study a bit extra concerning the underlying toolkit and comply with my information, it’s kind of extra difficult, however you may know extra concerning the technical infrastructure in the event you select this path. 🤔


Putting in the MadMachine SDK & CLI

As a macOS or Linux consumer you must know which you can set up the unofficial MadMachine SDK alongside a command line software known as mm. As you possibly can see this MadMachine SDK is written in Swift, however you must know that I ported a python script from the unique mm-sdk project with the assistance of Marcus Kida. First, he made an Xcode template by invoking the unique script contained in the official MadMachine IDE, then I believed, it might be cool to eliminate the IDE for good, and now, right here we go, we have now a standalone Swift model of the mandatory construct instruments. You may set up it like this:


git clone https://github.com/EmbeddedSwift/MadMachine.git
cd MadMachine
make set up

Now you have to be prepared to make use of the mm cli app, you possibly can examine the obtainable instructions contained in the README file on GitHub. I’ve not examined this on Linux but, so in the event you discover any points, please do not hesitate to report or submit a PR. That is an experimental undertaking, so hold this in thoughts. 😅



The MadMachine toolchain

With a view to use the MadMachine SDK you have to a working toolchain put in in your pc. You may seize the most recent one by operating the next command:

mm toolchain --upgrade

This may seize the most recent launch from the unofficial MadMachine toolchain repository, and place it below your private home folder contained in the .MadMachine listing. There may be one extra factor that now you must do earlier than you can begin constructing SwiftIO apps. At the moment there’s one further python script that was not ported but, as a result of will probably be utterly eradicated sooner or later. For now you continue to must obtain the official MadMachine SDK from the GitHub releases web page and place the complete contents of the mm-sdk/tools_[platform]/scripts/dist/gen_isr_tables folder into the ~/.MadMachine/legacy listing. You may need to create a legacy folder. 🙈



The SwiftIO framework

The SwiftIO framework goes to be linked with the appliance binary, we have now to put in it (with the assistance of the mm-cli software) as a system library first. There’s an unofficial repo with a makefile for this:

git clone https://github.com/EmbeddedSwift/SwiftIO
cd SwiftIO
make set up


You could find the library reference for the SwiftIO framework, however we’ll see you can also make it work, in only a few moments. Earlier than we go additional you must observe that the customized MadMachine toolchain is a modified model of the Swift 5.1 toolchain. This implies which you can’t use Swift 5.3 on the board but, however hopefully the creators of SwiftIO will launch new software program parts actual quickly. 🤞




Utilizing Xcode

The SwiftIO framework could be compiled in your native machine with the native Swift toolchain (utilizing Xcode), so it’s doable to construct functions with out focusing on the board, and in a while you possibly can re-compile the supply information with the mm-cli command, signal the ultimate binary and deploy it to the SwiftIO board after you’ve got pressed the obtain button. That is the present workflow in a nutshell.

There may be an present Xcode template created by @kidmar that you need to use as a place to begin.



Utilizing SPM

These days I desire to create a Swift bundle for nearly all the pieces. You should use SPM with a Makefile and your favourite editor to create SwiftIO apps. You simply must initialize a brand new executable bundle with the mandatory dependencies, for instance:


import PackageDescription

let bundle = Bundle(
    title: "myProject",
    merchandise: [
        .executable(name: "myProject", targets: ["myProject"]),
    ],
    dependencies: [
        .package(url: "https://github.com/EmbeddedSwift/SwiftIO", .branch("main")),
        .package(url: "https://github.com/EmbeddedSwift/SHT3x", .branch("main")),
        .package(url: "https://github.com/EmbeddedSwift/LCD1602", .branch("main")),
    ],
    targets: [
        .target(name: "myProject", dependencies: [
            .product(name: "SwiftIO", package: "SwiftIO"),
            .product(name: "SHT3x", package: "SHT3x"),
            .product(name: "LCD1602", package: "LCD1602"),
        ]),
    ]
)

Contained in the fundamental.swift file now you possibly can write a easy Humiture sensor app that shows the present humidity & temperature on a 16×2 LCD show like this:

import SwiftIO
import SHT3x
import LCD1602


extension Float 
    func format(_ f: Int) -> Float 
        guard f > 0 else return self
        var mul = 10
        for _ in 1..<f 
            mul *= 10
        
        let information = Int(self * Float(mul))
        return Float(information) / Float(mul)
    



let i2c = I2C(Id.I2C0)
let liquid crystal display = LCD1602(i2c)
let sht = SHT3x(i2c)

whereas true
    
    let temp = sht.readTemperature()
    liquid crystal display.write(x: 0, y: 0, "Temperature:")
    liquid crystal display.write(x: 0, y: 1, String(temp.format(1)))
    liquid crystal display.write(x: 4, y: 1, " ")
    liquid crystal display.write(x: 5, y: 1, "C")
    sleep(ms: 1000)


Now in the event you open the Bundle.swift file utilizing Xcode you possibly can even construct the undertaking regionally utilizing the CMD+B shortcut, however do not attempt to run it, since your Mac shouldn’t be a SwiftIO board… 😅

If you wish to construct and run this undertaking you must goal the SwiftIO board. The mm-cli cannot resolve bundle dependencies (but) so you must set up the mandatory dependencies (SHT3x, LCD1602) the identical approach as we did with the SwiftIO library. You must clone each repositories and use the makefile to put in them as native MadMachine system libraries. This may transfer the required information below the ~/.MadMachine/libraries folder, all of the obtainable libraries “stay” there. 🔨

After you’ve got put in the libraries, you need to use the next Makefile for the precise binary builds:

construct:
    mm construct --name myProject --binary-type executable --input . --output ./myProject

run: construct
    mm board --run ./myProject/swiftio.bin

clear:
    rm -r ./myProject

The mm construct command invokes the swiftc compiler from the SwiftIO toolchain with the correct search paths and library search paths. The mm board --run [binary] command will merely copy the mandatory information to the MadMachine board whether it is in obtain mode. You must press the obtain button on the board earlier than you run this command. Urgent the obtain button will mount the SD card so we are able to deploy the signed binary to the system, then eject the storage, which is able to restart the board and the brand new software shall be loaded & executed instantly. 🚀


The MadMachine IDE

When you do not prefer to play with command line utilities, you possibly can at all times use the MadMachine IDE to construct and ship your tasks. It makes use of a mmp file to explain dependencies, so it might probably resolve them on the fly, however I do not like the truth that I’ve to make use of a brand new bundle supervisor and editor to work with Swift. I am in a love and hate relationship with Xcode (plus I am an old-school Elegant Textual content fan). ❤️


Anyway, you’ll find actually great examples with a devoted GitHub repository and plenty of video tutorials on the official YouTube channel. You may entry all of the MakerKit pattern codes, they’re each on GitHub and you may clone a template with a click on utilizing the MadMachine IDE.




Conclusion

You might also like

Encoding and decoding data using the Hummingbird framework

Hummingbird routing and requests – The.Swift.Dev.

Building a Scrollable Custom Tab Bar in SwiftUI

For me, the SwiftIO board was a pleasing shock. I at all times wished to play with embedded methods, know slightly extra about hardwares and low stage stuff, however the Raspberry PI and the Arduino felt like alien planet. As soon as I’ve tried to construct an app for a Raspberry PI at a hackaton, nevertheless it was a whole catastrophe, I used to be upset, as a result of the instruments and the developer expertise was actually dangerous.


The promise of MadMachine is which you can simply use Swift on such a tool and I imagine that Andy Liu created one thing that may have a brilliant future on the long run. I felt in love with SwiftIO proper after I’ve assembled my first circuit and deployed my very first Swift supply. It was a seamless (ache free) expertise and I imagine that is a very necessary issue for builders who by no means used such units earlier than. This may be the start and the way forward for Swift on embedded methods. 😍



You may construct some actually enjoyable stuff with SwiftIO, it is an ideal software for studying how electrical circuits work. I can not wait to see increasingly more sensors and libraries obtainable for MadMachine. You probably have an thought or a query be happy to affix the official discord server.



You can even preorder the following spherical of SwiftIO boards from the MadMachine Store. Andy simply informed me that in the event you order now, they’ll ship your bundle in 1-3 days as soon as they get a brand new order. This may change quick, however you possibly can at all times examine the order particulars on the MadMachine web site. 🤖








Source link

Share30Tweet19
learningcode_x1mckf

learningcode_x1mckf

Recommended For You

Encoding and decoding data using the Hummingbird framework

by learningcode_x1mckf
March 22, 2023
0
Encoding and decoding data using the Hummingbird framework

HTTP is all about sending and receiving information over the community. Initially it was solely utilized to switch HTML paperwork, however these days we use HTTP to switch...

Read more

Hummingbird routing and requests – The.Swift.Dev.

by learningcode_x1mckf
March 17, 2023
0
Hummingbird routing and requests – The.Swift.Dev.

Routing on the server facet means the server goes to ship a response primarily based on the URL path that the consumer referred to as when firing up...

Read more

Building a Scrollable Custom Tab Bar in SwiftUI

by learningcode_x1mckf
March 10, 2023
0
Building a Scrollable Custom Tab Bar in SwiftUI

Whether or not you’re making a social media app or a productiveness device, the tab bar interface can improve the consumer expertise by making it extra intuitive and...

Read more

Beginner’s guide to server-side Swift using the Hummingbird framework

by learningcode_x1mckf
March 8, 2023
0
Beginner’s guide to server-side Swift using the Hummingbird framework

Swift on the Server in 2023 Three years in the past I began to focus on Vapor, the preferred web-framework written in Swift, which served me very...

Read more

What’s new in Swift 5.8 – Hacking with Swift

by learningcode_x1mckf
March 8, 2023
0
What’s new in Swift 5.8 – Hacking with Swift

Though many main Swift modifications are at present percolating by way of Swift Evolution, Swift 5.8 itself is extra of a clear up launch: there are additions, sure,...

Read more
Next Post
The 7 Most Useful Array Methods in JavaScript

The 7 Most Useful Array Methods in JavaScript

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Related News

Governor commits to eradicating extreme poverty in East Java

Governor commits to eradicating extreme poverty in East Java

September 30, 2022
Get access to training courses on Python, Ruby, and C++ for only $40

Get access to training courses on Python, Ruby, and C++ for only $40

November 7, 2022
Google expands open source bounties, will soon support Javascript fuzzing too – ZDNet

C vs. C++: 12 Key Differences and Similarities – Spiceworks News and Insights

March 21, 2023

Browse by Category

  • C#
  • C++
  • Java
  • JavaScript
  • Python
  • Swift

RECENT POSTS

  • Java Developer Survey Reveals Increased Need for Java … – PR Newswire
  • What You Should Definitely Pay Attention to When Hiring Java Developers – Modern Diplomacy
  • Java Web Frameworks Software Market Research Report 2023 … – Los Alamos Monitor

CATEGORIES

  • C#
  • C++
  • Java
  • JavaScript
  • Python
  • Swift

© 2022 Copyright Learning Code

No Result
View All Result
  • Home
  • JavaScript
  • Java
  • Python
  • Swift
  • C++
  • C#

© 2022 Copyright Learning Code

Are you sure want to unlock this post?
Unlock left : 0
Are you sure want to cancel subscription?